diff --git a/.gitignore b/.gitignore index e55eb64..c652c40 100644 --- a/.gitignore +++ b/.gitignore @@ -73,3 +73,5 @@ functions/mock screenshot .firebase sessionStore +/CLAUDE.md +/nul diff --git a/base-server/pom.xml b/base-server/pom.xml index f82352d..b2c88ee 100644 --- a/base-server/pom.xml +++ b/base-server/pom.xml @@ -40,11 +40,6 @@ zt-module-erp-server ${revision} - - com.zt.plat - zt-module-unit-management-server - ${revision} - com.zt.plat diff --git a/pom.xml b/pom.xml index 6301cb8..e5a5726 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,6 @@ zt-module-contract-order zt-module-erp base-server - zt-module-unit-management ${project.artifactId} @@ -148,8 +147,13 @@ 中铜 ZStack 私服 http://172.16.46.63:30708/repository/test/ - true + always + warn + + true + always + diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ErrorCodeConstants.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ErrorCodeConstants.java index c36bd6e..a15b0ee 100644 --- a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ErrorCodeConstants.java +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ErrorCodeConstants.java @@ -29,4 +29,32 @@ public interface ErrorCodeConstants { ErrorCode BUSINESS_DICTIONARY_TYPE_NOT_EXISTS = new ErrorCode(1_027_200_003, "业务字典类型不存在"); ErrorCode BUSINESS_DEPARTMENT_INDICATOR_NOT_EXISTS = new ErrorCode(1_027_200_004, "部门持有指标不存在"); + // ========== 模板文档管理系统 1-006-xxx-xxx ========== + // 模板分类 1-006-001-xxx + ErrorCode TEMPLATE_CATEGORY_NOT_EXISTS = new ErrorCode(1_006_001_001, "模板分类不存在"); + + // 标签库 1-006-002-xxx + ErrorCode TEMPLATE_TAG_NOT_EXISTS = new ErrorCode(1_006_002_001, "标签不存在"); + ErrorCode TEMPLATE_TAG_CODE_DUPLICATE = new ErrorCode(1_006_002_002, "标签编码已存在"); + + // 模板 1-006-003-xxx + ErrorCode TEMPLATE_NOT_EXISTS = new ErrorCode(1_006_003_001, "模板不存在"); + ErrorCode TEMPLATE_CODE_DUPLICATE = new ErrorCode(1_006_003_002, "模板编码已存在"); + + // 模板实例 1-006-004-xxx + ErrorCode TEMPLATE_INSTANCE_NOT_EXISTS = new ErrorCode(1_006_004_001, "模板实例不存在"); + ErrorCode TEMPLATE_INSTANCE_CODE_DUPLICATE = new ErrorCode(1_006_004_002, "实例编码已存在"); + + // ========== 物料属性 ========== + ErrorCode MATERIAL_PROPERTIES_NOT_EXISTS = new ErrorCode(1_027_101_001, "物料属性不存在"); + ErrorCode MATERIAL_HAS_PROPERTIES_NOT_EXISTS = new ErrorCode(1_027_101_002, "物料持有属性不存在"); + ErrorCode MATERIAL_CLASSES_NOT_EXISTS = new ErrorCode(1_027_101_003, "物料分类不存在"); + ErrorCode DEPARTMENT_MATERIAL_NOT_EXISTS = new ErrorCode(1_027_101_004, "组织物料不存在"); + ErrorCode MATERIAL_HAS_CLASSES_NOT_EXISTS = new ErrorCode(1_027_101_004, "物料持有属性不存在"); + + // ========== 工艺信息属性 ========== + ErrorCode PROCESSING_INFOMATION_NOT_EXISTS = new ErrorCode(1_027_101_005, "工艺信息不存在"); + ErrorCode PROCESSING_INFOMATION_OPERATION_NOT_EXISTS = new ErrorCode(1_027_101_006, "工艺工序不存在"); + ErrorCode PROCESSING_OPERATION_NOT_EXISTS = new ErrorCode(1_027_101_007, "工序不存在"); + ErrorCode PROCESSING_OPERATION_MATERIAL_NOT_EXISTS = new ErrorCode(1_027_101_008, "工艺工序物料不存在"); } diff --git a/zt-module-unit-management/zt-module-unit-management-api/src/main/java/com/zt/plat/module/unitmanagement/enums/UnitErrorCodeConstants.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/unitmanagement/enums/UnitErrorCodeConstants.java similarity index 59% rename from zt-module-unit-management/zt-module-unit-management-api/src/main/java/com/zt/plat/module/unitmanagement/enums/UnitErrorCodeConstants.java rename to zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/unitmanagement/enums/UnitErrorCodeConstants.java index 696c09b..f9a92bf 100644 --- a/zt-module-unit-management/zt-module-unit-management-api/src/main/java/com/zt/plat/module/unitmanagement/enums/UnitErrorCodeConstants.java +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/unitmanagement/enums/UnitErrorCodeConstants.java @@ -19,4 +19,13 @@ public interface UnitErrorCodeConstants { ErrorCode UNT_INFO_NOT_EXISTS = new ErrorCode(1_010_000_004, "单位信息记录不存在"); + ErrorCode UNIT_NOT_FOUND = + new ErrorCode(1_010_000_005, "找不到单位: %s"); + + ErrorCode UNIT_CONVERSION_PATH_NOT_FOUND = + new ErrorCode(1_010_000_006, "无法找到从单位 [%s] 到单位 [%s] 的转换路径,请检查单位是否属于同一量纲或配置转换规则"); + + ErrorCode UNIT_DIFFERENT_QUANTITY = + new ErrorCode(1_010_000_007, "单位 [%s] 和单位 [%s] 不属于同一量纲,无法转换"); + } diff --git a/zt-module-base/zt-module-base-server/pom.xml b/zt-module-base/zt-module-base-server/pom.xml index acd97ea..431837b 100644 --- a/zt-module-base/zt-module-base-server/pom.xml +++ b/zt-module-base/zt-module-base-server/pom.xml @@ -122,6 +122,13 @@ zt-spring-boot-starter-excel + + + org.apache.velocity + velocity-engine-core + 2.3 + + com.zt.plat diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/ElementPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/ElementPageReqVO.java index 73d4caf..459d019 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/ElementPageReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/ElementPageReqVO.java @@ -28,6 +28,9 @@ public class ElementPageReqVO extends PageParam { @Schema(description = "小数位数") private Long decimalValue; + @Schema(description = "是否启用") + private String isEnable; + @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/ElementRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/ElementRespVO.java index f58b14e..549daf7 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/ElementRespVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/ElementRespVO.java @@ -36,6 +36,10 @@ public class ElementRespVO { @ExcelProperty("品位单位") private String gradeUnit; + @Schema(description = "是否启用") + @ExcelProperty("是否启用") + private String isEnable; + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") private LocalDateTime createTime; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/ElementSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/ElementSaveReqVO.java index 6c93229..5d5c8e7 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/ElementSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/ElementSaveReqVO.java @@ -1,7 +1,7 @@ package com.zt.plat.module.base.controller.admin.base.vo; -import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotEmpty; import lombok.Data; @@ -21,13 +21,15 @@ public class ElementSaveReqVO { private String name; @Schema(description = "金属元素编码", requiredMode = Schema.RequiredMode.REQUIRED) -// @NotEmpty(message = "金属元素编码不能为空") private String coding; @Schema(description = "小数位数") - @NotEmpty(message = "小数位数不能为空") + @Min(value = 1, message = "数值必须大于0") private Long decimalValue; + @Schema(description = "是否启用") + private String isEnable; + @Schema(description = "品位单位", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "品位单位不能为空") private String gradeUnit; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialInfomationPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialInfomationPageReqVO.java index 5e1fe2b..d81d1ca 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialInfomationPageReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialInfomationPageReqVO.java @@ -19,6 +19,9 @@ public class MaterialInfomationPageReqVO extends PageParam { @Schema(description = "物料名称", example = "张三") private String name; + @Schema(description = "分类ID", example = "1024") + private Long classesId; + @Schema(description = "备注") private String remark; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialInfomationRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialInfomationRespVO.java index 47237be..7fc8b56 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialInfomationRespVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialInfomationRespVO.java @@ -24,6 +24,10 @@ public class MaterialInfomationRespVO { @ExcelProperty("物料名称") private String name; + @Schema(description = "分类ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @ExcelProperty("分类ID") + private Long classesId; + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("备注") private String remark; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialInfomationSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialInfomationSaveReqVO.java index 80d5cbe..687c587 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialInfomationSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialInfomationSaveReqVO.java @@ -2,6 +2,7 @@ package com.zt.plat.module.base.controller.admin.base.vo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; @Schema(description = "管理后台 - 物料信息新增/修改 Request VO") @@ -19,6 +20,10 @@ public class MaterialInfomationSaveReqVO { @NotEmpty(message = "物料名称不能为空") private String name; + @Schema(description = "分类ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @NotNull(message = "所属分类不能为空") + private Long classesId; + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "备注不能为空") private String remark; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherSaveReqVO.java index 938f5ea..50265f4 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherSaveReqVO.java @@ -1,6 +1,7 @@ package com.zt.plat.module.base.controller.admin.base.vo; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Min; import lombok.Data; @Schema(description = "管理后台 - 物料拓展数据新增/修改 Request VO") @@ -38,6 +39,7 @@ public class MaterialOtherSaveReqVO { private String gradeUnit; @Schema(description = "小数位数") + @Min(value = 1, message = "数值必须大于0") private Long decimalValue; @Schema(description = "是否启用") diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/departmentmaterial/DepartmentMaterialController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/departmentmaterial/DepartmentMaterialController.java new file mode 100644 index 0000000..bbde845 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/departmentmaterial/DepartmentMaterialController.java @@ -0,0 +1,107 @@ +package com.zt.plat.module.base.controller.admin.departmentmaterial; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.departmentmaterial.vo.*; +import com.zt.plat.module.base.dal.dataobject.departmentmaterial.DepartmentMaterialDO; +import com.zt.plat.module.base.service.departmentmaterial.DepartmentMaterialService; + +@Tag(name = "管理后台 - 组织架构物料") +@RestController +@RequestMapping("/base/department-material") +@Validated +public class DepartmentMaterialController { + + + @Resource + private DepartmentMaterialService departmentMaterialService; + + @PostMapping("/create") + @Operation(summary = "创建组织架构物料") + @PreAuthorize("@ss.hasPermission('base:department-material:create')") + public CommonResult createDepartmentMaterial(@Valid @RequestBody DepartmentMaterialSaveReqVO createReqVO) { + return success(departmentMaterialService.createDepartmentMaterial(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新组织架构物料") + @PreAuthorize("@ss.hasPermission('base:department-material:update')") + public CommonResult updateDepartmentMaterial(@Valid @RequestBody DepartmentMaterialSaveReqVO updateReqVO) { + departmentMaterialService.updateDepartmentMaterial(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除组织架构物料") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:department-material:delete')") + public CommonResult deleteDepartmentMaterial(@RequestParam("id") Long id) { + departmentMaterialService.deleteDepartmentMaterial(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除组织架构物料") + @PreAuthorize("@ss.hasPermission('base:department-material:delete')") + public CommonResult deleteDepartmentMaterialList(@RequestBody BatchDeleteReqVO req) { + departmentMaterialService.deleteDepartmentMaterialListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得组织架构物料") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:department-material:query')") + public CommonResult getDepartmentMaterial(@RequestParam("id") Long id) { + DepartmentMaterialDO departmentMaterial = departmentMaterialService.getDepartmentMaterial(id); + return success(BeanUtils.toBean(departmentMaterial, DepartmentMaterialRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得组织架构物料分页") + @PreAuthorize("@ss.hasPermission('base:department-material:query')") + public CommonResult> getDepartmentMaterialPage(@Valid DepartmentMaterialPageReqVO pageReqVO) { + PageResult pageResult = departmentMaterialService.getDepartmentMaterialPage(pageReqVO); + return success(pageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出组织架构物料 Excel") + @PreAuthorize("@ss.hasPermission('base:department-material:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportDepartmentMaterialExcel(@Valid DepartmentMaterialPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = departmentMaterialService.getDepartmentMaterialPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "组织架构物料.xls", "数据", DepartmentMaterialRespVO.class, + list); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/departmentmaterial/vo/DepartmentMaterialPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/departmentmaterial/vo/DepartmentMaterialPageReqVO.java new file mode 100644 index 0000000..0ae288f --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/departmentmaterial/vo/DepartmentMaterialPageReqVO.java @@ -0,0 +1,47 @@ +package com.zt.plat.module.base.controller.admin.departmentmaterial.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 组织架构物料分页 Request VO") +@Data +public class DepartmentMaterialPageReqVO extends PageParam { + + @Schema(description = "物料信息ID", example = "3923") + private Long infomationId; + + @Schema(description = "物料信息ID集合(内部使用)") + private List infomationIds; + + @Schema(description = "物料分类ID", example = "30114") + private Long classesId; + + @Schema(description = "部门ID", example = "1001") + private Long deptId; + + @Schema(description = "字典数据值-物料类型") + private String dictionaryDataValue; + + @Schema(description = "状态编码", example = "1") + private String isEnable; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "物料名称") + private String materialName; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/departmentmaterial/vo/DepartmentMaterialRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/departmentmaterial/vo/DepartmentMaterialRespVO.java new file mode 100644 index 0000000..4d694bd --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/departmentmaterial/vo/DepartmentMaterialRespVO.java @@ -0,0 +1,83 @@ +package com.zt.plat.module.base.controller.admin.departmentmaterial.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 组织架构物料 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DepartmentMaterialRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5674") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "物料信息ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3923") + @ExcelProperty("物料信息ID") + private Long infomationId; + + @Schema(description = "物料分类ID", example = "30114") + @ExcelProperty("物料分类ID") + private Long classesId; + + @Schema(description = "字典数据值-物料类型", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("字典数据值-物料类型") + private String dictionaryDataValue; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "部门ID") + @ExcelIgnore + private Long deptId; + + @Schema(description = "部门名称") + @ExcelProperty("部门名称") + private String deptName; + + @Schema(description = "物料编码") + @ExcelProperty("物料编码") + private String materialNumber; + + @Schema(description = "物料名称") + @ExcelProperty("物料名称") + private String materialName; + + @Schema(description = "物料大类名称") + @ExcelProperty("物料大类") + private String categoryLargeName; + + @Schema(description = "物料中类名称") + @ExcelProperty("物料中类") + private String categoryMediumName; + + @Schema(description = "物料小类名称") + @ExcelProperty("物料小类") + private String categorySmallName; + + @Schema(description = "物料分类路径") + @ExcelProperty("物料分类路径") + private String categoryPath; + + @Schema(description = "组织物料类型名称") + @ExcelProperty("组织物料类型") + private String dictionaryDataLabel; + + @Schema(description = "状态编码") + @ExcelProperty("状态编码") + private String isEnable; + + @Schema(description = "状态名称") + @ExcelProperty("状态") + private String statusLabel; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/departmentmaterial/vo/DepartmentMaterialSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/departmentmaterial/vo/DepartmentMaterialSaveReqVO.java new file mode 100644 index 0000000..375428a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/departmentmaterial/vo/DepartmentMaterialSaveReqVO.java @@ -0,0 +1,30 @@ +package com.zt.plat.module.base.controller.admin.departmentmaterial.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 组织架构物料新增/修改 Request VO") +@Data +public class DepartmentMaterialSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5674") + private Long id; + + @Schema(description = "物料信息ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3923") + @NotNull(message = "物料信息ID不能为空") + private Long infomationId; + + @Schema(description = "物料分类ID", example = "30114") + private Long classesId; + + @Schema(description = "字典数据值-物料类型", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "字典数据值-物料类型不能为空") + private String dictionaryDataValue; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "备注不能为空") + private String remark; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/DocTemplateCategoryController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/DocTemplateCategoryController.java new file mode 100644 index 0000000..d673d01 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/DocTemplateCategoryController.java @@ -0,0 +1,89 @@ +package com.zt.plat.module.base.controller.admin.doctemplate; + +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateCategoryPageReqVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateCategoryRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateCategorySaveReqVO; +import com.zt.plat.module.base.service.doctemplate.DocTemplateCategoryService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import java.util.List; + +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +/** + * 模板分类 Controller + * + * @author 系统生成 + */ +@Tag(name = "管理后台 - 模板分类") +@RestController +@RequestMapping("/base/doc-template-category") +@Validated +public class DocTemplateCategoryController { + + @Resource + private DocTemplateCategoryService templateCategoryService; + + @PostMapping("/create") + @Operation(summary = "创建模板分类") + @PreAuthorize("@ss.hasPermission('base:template-category:create')") + public CommonResult createTemplateCategory(@Valid @RequestBody DocTemplateCategorySaveReqVO createReqVO) { + return success(templateCategoryService.createTemplateCategory(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新模板分类") + @PreAuthorize("@ss.hasPermission('base:template-category:update')") + public CommonResult updateTemplateCategory(@Valid @RequestBody DocTemplateCategorySaveReqVO updateReqVO) { + templateCategoryService.updateTemplateCategory(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除模板分类") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:template-category:delete')") + public CommonResult deleteTemplateCategory(@RequestParam("id") Long id) { + templateCategoryService.deleteTemplateCategory(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得模板分类") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:template-category:query')") + public CommonResult getTemplateCategory(@RequestParam("id") Long id) { + return success(templateCategoryService.getTemplateCategory(id)); + } + + @GetMapping("/page") + @Operation(summary = "获得模板分类分页") + @PreAuthorize("@ss.hasPermission('base:template-category:query')") + public CommonResult> getTemplateCategoryPage(@Valid DocTemplateCategoryPageReqVO pageReqVO) { + return success(templateCategoryService.getTemplateCategoryPage(pageReqVO)); + } + + @GetMapping("/list") + @Operation(summary = "获得模板分类列表") + @PreAuthorize("@ss.hasPermission('base:template-category:query')") + public CommonResult> getTemplateCategoryList() { + return success(templateCategoryService.getTemplateCategoryList()); + } + + @GetMapping("/tree") + @Operation(summary = "获得模板分类树形结构") + @PreAuthorize("@ss.hasPermission('base:template-category:query')") + public CommonResult> getTemplateCategoryTree() { + return success(templateCategoryService.buildTree()); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/DocTemplateController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/DocTemplateController.java new file mode 100644 index 0000000..0b23670 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/DocTemplateController.java @@ -0,0 +1,82 @@ +package com.zt.plat.module.base.controller.admin.doctemplate; + +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplatePageReqVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateSaveReqVO; +import com.zt.plat.module.base.service.doctemplate.DocTemplateService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import java.util.List; + +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +/** + * 模板 Controller + * + * @author 系统生成 + */ +@Tag(name = "管理后台 - 模板") +@RestController +@RequestMapping("/base/doc-template") +@Validated +public class DocTemplateController { + + @Resource + private DocTemplateService templateService; + + @PostMapping("/create") + @Operation(summary = "创建模板") + @PreAuthorize("@ss.hasPermission('base:template:create')") + public CommonResult createTemplate(@Valid @RequestBody DocTemplateSaveReqVO createReqVO) { + return success(templateService.createTemplate(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新模板") + @PreAuthorize("@ss.hasPermission('base:template:update')") + public CommonResult updateTemplate(@Valid @RequestBody DocTemplateSaveReqVO updateReqVO) { + templateService.updateTemplate(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除模板") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:template:delete')") + public CommonResult deleteTemplate(@RequestParam("id") Long id) { + templateService.deleteTemplate(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得模板") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:template:query')") + public CommonResult getTemplate(@RequestParam("id") Long id) { + return success(templateService.getTemplate(id)); + } + + @GetMapping("/page") + @Operation(summary = "获得模板分页") + @PreAuthorize("@ss.hasPermission('base:template:query')") + public CommonResult> getTemplatePage(@Valid DocTemplatePageReqVO pageReqVO) { + return success(templateService.getTemplatePage(pageReqVO)); + } + + @GetMapping("/list") + @Operation(summary = "获得模板列表") + @PreAuthorize("@ss.hasPermission('base:template:query')") + public CommonResult> getTemplateList() { + return success(templateService.getTemplateList()); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/DocTemplateInstanceController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/DocTemplateInstanceController.java new file mode 100644 index 0000000..4b3b513 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/DocTemplateInstanceController.java @@ -0,0 +1,107 @@ +package com.zt.plat.module.base.controller.admin.doctemplate; + +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateInstancePageReqVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateInstanceRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateInstanceSaveReqVO; +import com.zt.plat.module.base.service.doctemplate.DocTemplateInstanceService; +import com.zt.plat.module.base.service.doctemplate.DocTemplateRenderService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import java.util.List; +import java.util.Map; + +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +/** + * 模板实例 Controller + * + * @author 系统生成 + */ +@Tag(name = "管理后台 - 模板实例") +@RestController +@RequestMapping("/base/doc-template-instance") +@Validated +public class DocTemplateInstanceController { + + @Resource + private DocTemplateInstanceService templateInstanceService; + + @Resource + private DocTemplateRenderService renderService; + + @PostMapping("/create") + @Operation(summary = "创建模板实例") + @PreAuthorize("@ss.hasPermission('base:template-instance:create')") + public CommonResult createTemplateInstance(@Valid @RequestBody DocTemplateInstanceSaveReqVO createReqVO) { + return success(templateInstanceService.createTemplateInstance(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新模板实例") + @PreAuthorize("@ss.hasPermission('base:template-instance:update')") + public CommonResult updateTemplateInstance(@Valid @RequestBody DocTemplateInstanceSaveReqVO updateReqVO) { + templateInstanceService.updateTemplateInstance(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除模板实例") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:template-instance:delete')") + public CommonResult deleteTemplateInstance(@RequestParam("id") Long id) { + templateInstanceService.deleteTemplateInstance(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得模板实例") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:template-instance:query')") + public CommonResult getTemplateInstance(@RequestParam("id") Long id) { + return success(templateInstanceService.getTemplateInstance(id)); + } + + @GetMapping("/page") + @Operation(summary = "获得模板实例分页") + @PreAuthorize("@ss.hasPermission('base:template-instance:query')") + public CommonResult> getTemplateInstancePage(@Valid DocTemplateInstancePageReqVO pageReqVO) { + return success(templateInstanceService.getTemplateInstancePage(pageReqVO)); + } + + @GetMapping("/list") + @Operation(summary = "获得模板实例列表") + @PreAuthorize("@ss.hasPermission('base:template-instance:query')") + public CommonResult> getTemplateInstanceList() { + return success(templateInstanceService.getTemplateInstanceList()); + } + + @PostMapping("/render") + @Operation(summary = "渲染模板实例") + @PreAuthorize("@ss.hasPermission('base:template-instance:query')") + public CommonResult renderTemplateInstance( + @Parameter(name = "instanceId", description = "实例ID", required = true) @RequestParam("instanceId") Long instanceId, + @Parameter(name = "dataMap", description = "数据Map") @RequestBody(required = false) Map dataMap) { + String renderedContent = renderService.render(null, instanceId, null, dataMap); + return success(renderedContent); + } + + @PostMapping("/render-and-save") + @Operation(summary = "渲染并保存模板实例") + @PreAuthorize("@ss.hasPermission('base:template-instance:update')") + public CommonResult renderAndSaveTemplateInstance( + @Parameter(name = "instanceId", description = "实例ID", required = true) @RequestParam("instanceId") Long instanceId, + @Parameter(name = "dataMap", description = "数据Map", required = true) @RequestBody Map dataMap) { + renderService.renderAndSave(instanceId, dataMap); + return success(true); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/DocTemplateTagController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/DocTemplateTagController.java new file mode 100644 index 0000000..25e2ecf --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/DocTemplateTagController.java @@ -0,0 +1,82 @@ +package com.zt.plat.module.base.controller.admin.doctemplate; + +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateTagPageReqVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateTagRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateTagSaveReqVO; +import com.zt.plat.module.base.service.doctemplate.DocTemplateTagService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import java.util.List; + +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +/** + * 标签库 Controller + * + * @author 系统生成 + */ +@Tag(name = "管理后台 - 标签库") +@RestController +@RequestMapping("/base/doc-template-tag") +@Validated +public class DocTemplateTagController { + + @Resource + private DocTemplateTagService templateTagService; + + @PostMapping("/create") + @Operation(summary = "创建标签") + @PreAuthorize("@ss.hasPermission('base:template-tag:create')") + public CommonResult createTemplateTag(@Valid @RequestBody DocTemplateTagSaveReqVO createReqVO) { + return success(templateTagService.createTemplateTag(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新标签") + @PreAuthorize("@ss.hasPermission('base:template-tag:update')") + public CommonResult updateTemplateTag(@Valid @RequestBody DocTemplateTagSaveReqVO updateReqVO) { + templateTagService.updateTemplateTag(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除标签") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:template-tag:delete')") + public CommonResult deleteTemplateTag(@RequestParam("id") Long id) { + templateTagService.deleteTemplateTag(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得标签") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:template-tag:query')") + public CommonResult getTemplateTag(@RequestParam("id") Long id) { + return success(templateTagService.getTemplateTag(id)); + } + + @GetMapping("/page") + @Operation(summary = "获得标签分页") + @PreAuthorize("@ss.hasPermission('base:template-tag:query')") + public CommonResult> getTemplateTagPage(@Valid DocTemplateTagPageReqVO pageReqVO) { + return success(templateTagService.getTemplateTagPage(pageReqVO)); + } + + @GetMapping("/list") + @Operation(summary = "获得标签列表") + @PreAuthorize("@ss.hasPermission('base:template-tag:query')") + public CommonResult> getTemplateTagList() { + return success(templateTagService.getTemplateTagList()); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateCategoryPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateCategoryPageReqVO.java new file mode 100644 index 0000000..da89763 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateCategoryPageReqVO.java @@ -0,0 +1,27 @@ +package com.zt.plat.module.base.controller.admin.doctemplate.vo; + +import com.zt.plat.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - 模板分类分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class DocTemplateCategoryPageReqVO extends PageParam { + + @Schema(description = "分类名称", example = "采购类") + private String categoryName; + + @Schema(description = "分类编码", example = "PURCHASE") + private String categoryCode; + + @Schema(description = "父分类ID", example = "1") + private Long parentId; + + @Schema(description = "层级(1=大类,2=小类)", example = "1") + private Integer level; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateCategoryRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateCategoryRespVO.java new file mode 100644 index 0000000..fe74244 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateCategoryRespVO.java @@ -0,0 +1,43 @@ +package com.zt.plat.module.base.controller.admin.doctemplate.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 模板分类 Response VO") +@Data +public class DocTemplateCategoryRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long id; + + @Schema(description = "分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "采购类") + private String categoryName; + + @Schema(description = "分类编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "PURCHASE") + private String categoryCode; + + @Schema(description = "父分类ID", example = "1") + private Long parentId; + + @Schema(description = "层级(1=大类,2=小类)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Integer level; + + @Schema(description = "排序号", example = "1") + private Integer sort; + + @Schema(description = "备注", example = "采购业务相关文档分类") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + + @Schema(description = "创建人", example = "admin") + private String creator; + + @Schema(description = "子分类列表") + private List children; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateCategorySaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateCategorySaveReqVO.java new file mode 100644 index 0000000..21217ac --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateCategorySaveReqVO.java @@ -0,0 +1,37 @@ +package com.zt.plat.module.base.controller.admin.doctemplate.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 模板分类新增/修改 Request VO") +@Data +public class DocTemplateCategorySaveReqVO { + + @Schema(description = "主键", example = "1024") + private Long id; + + @Schema(description = "分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "采购类") + @NotBlank(message = "分类名称不能为空") + private String categoryName; + + @Schema(description = "分类编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "PURCHASE") + @NotBlank(message = "分类编码不能为空") + private String categoryCode; + + @Schema(description = "父分类ID", example = "1") + private Long parentId; + + @Schema(description = "层级(1=大类,2=小类)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "层级不能为空") + private Integer level; + + @Schema(description = "排序号", example = "1") + private Integer sort; + + @Schema(description = "备注", example = "采购业务相关文档分类") + private String remark; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateInstancePageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateInstancePageReqVO.java new file mode 100644 index 0000000..ab6f3cb --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateInstancePageReqVO.java @@ -0,0 +1,36 @@ +package com.zt.plat.module.base.controller.admin.doctemplate.vo; + +import com.zt.plat.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 模板实例分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class DocTemplateInstancePageReqVO extends PageParam { + + @Schema(description = "实例名称", example = "采购合同") + private String instanceName; + + @Schema(description = "模板ID", example = "1") + private Long templateId; + + @Schema(description = "业务关联类型", example = "contract") + private String businessType; + + @Schema(description = "状态", example = "draft") + private String status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateInstanceRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateInstanceRespVO.java new file mode 100644 index 0000000..b27bab0 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateInstanceRespVO.java @@ -0,0 +1,51 @@ +package com.zt.plat.module.base.controller.admin.doctemplate.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 模板实例 Response VO") +@Data +public class DocTemplateInstanceRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long id; + + @Schema(description = "实例名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "2025年上海XX供应商采购合同") + private String instanceName; + + @Schema(description = "实例编码", example = "DOC-20250127-001") + private String instanceCode; + + @Schema(description = "引用的模板ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long templateId; + + @Schema(description = "业务关联类型", example = "contract") + private String businessType; + + @Schema(description = "业务关联ID", example = "100") + private Long businessId; + + @Schema(description = "业务关联标签", example = "PC-2025-001") + private String businessLabel; + + @Schema(description = "用户编辑后的内容") + private String editedContent; + + @Schema(description = "渲染后的最终内容") + private String renderedContent; + + @Schema(description = "备注", example = "采购合同文档") + private String remark; + + @Schema(description = "状态", example = "draft") + private String status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + + @Schema(description = "创建人", example = "admin") + private String creator; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateInstanceSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateInstanceSaveReqVO.java new file mode 100644 index 0000000..49e0a13 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateInstanceSaveReqVO.java @@ -0,0 +1,49 @@ +package com.zt.plat.module.base.controller.admin.doctemplate.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 模板实例新增/修改 Request VO") +@Data +public class DocTemplateInstanceSaveReqVO { + + @Schema(description = "主键", example = "1024") + private Long id; + + @Schema(description = "实例名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "2025年上海XX供应商采购合同") + @NotBlank(message = "实例名称不能为空") + private String instanceName; + + @Schema(description = "实例编码", example = "DOC-20250127-001") + private String instanceCode; + + @Schema(description = "引用的模板ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "模板ID不能为空") + private Long templateId; + + @Schema(description = "业务关联类型", example = "contract") + private String businessType; + + @Schema(description = "业务关联ID", example = "100") + private Long businessId; + + @Schema(description = "业务关联标签", example = "PC-2025-001") + private String businessLabel; + + @Schema(description = "用户编辑后的内容", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "内容不能为空") + private String editedContent; + + @Schema(description = "渲染后的最终内容") + private String renderedContent; + + @Schema(description = "备注", example = "采购合同文档") + private String remark; + + @Schema(description = "状态", example = "draft") + private String status; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplatePageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplatePageReqVO.java new file mode 100644 index 0000000..ee8f37c --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplatePageReqVO.java @@ -0,0 +1,39 @@ +package com.zt.plat.module.base.controller.admin.doctemplate.vo; + +import com.zt.plat.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 模板分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class DocTemplatePageReqVO extends PageParam { + + @Schema(description = "模板名称", example = "采购合同模板") + private String tmplName; + + @Schema(description = "模板编码", example = "PO_CONTRACT_001") + private String tmplCode; + + @Schema(description = "所属大类", example = "1") + private Long bigCategoryId; + + @Schema(description = "所属小类", example = "11") + private Long smallCategoryId; + + @Schema(description = "状态(1=启用,0=停用,2=草稿)", example = "1") + private String enabled; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateRespVO.java new file mode 100644 index 0000000..3a86c8e --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateRespVO.java @@ -0,0 +1,57 @@ +package com.zt.plat.module.base.controller.admin.doctemplate.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 模板 Response VO") +@Data +public class DocTemplateRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long id; + + @Schema(description = "模板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "采购合同模板") + private String tmplName; + + @Schema(description = "模板编码(唯一)", requiredMode = Schema.RequiredMode.REQUIRED, example = "PO_CONTRACT_001") + private String tmplCode; + + @Schema(description = "模板图标", example = "📄") + private String icon; + + @Schema(description = "所属大类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long bigCategoryId; + + @Schema(description = "所属小类", example = "11") + private Long smallCategoryId; + + @Schema(description = "版本号", example = "v1.2") + private String version; + + @Schema(description = "模板描述", example = "标准采购合同范本") + private String description; + + @Schema(description = "模板内容(HTML,含占位符)", requiredMode = Schema.RequiredMode.REQUIRED) + private String content; + + @Schema(description = "SQL配置(JSON格式,可选)") + private String sqlConfig; + + @Schema(description = "数据源标识", example = "default") + private String dataSource; + + @Schema(description = "使用次数", example = "10") + private Integer useCount; + + @Schema(description = "状态(1=启用,0=停用,2=草稿)", example = "1") + private String enabled; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + + @Schema(description = "创建人", example = "admin") + private String creator; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateSaveReqVO.java new file mode 100644 index 0000000..19003af --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateSaveReqVO.java @@ -0,0 +1,53 @@ +package com.zt.plat.module.base.controller.admin.doctemplate.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 模板新增/修改 Request VO") +@Data +public class DocTemplateSaveReqVO { + + @Schema(description = "主键", example = "1024") + private Long id; + + @Schema(description = "模板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "采购合同模板") + @NotBlank(message = "模板名称不能为空") + private String tmplName; + + @Schema(description = "模板编码(唯一)", requiredMode = Schema.RequiredMode.REQUIRED, example = "PO_CONTRACT_001") + @NotBlank(message = "模板编码不能为空") + private String tmplCode; + + @Schema(description = "模板图标", example = "📄") + private String icon; + + @Schema(description = "所属大类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "所属大类不能为空") + private Long bigCategoryId; + + @Schema(description = "所属小类", example = "11") + private Long smallCategoryId; + + @Schema(description = "版本号", example = "v1.2") + private String version; + + @Schema(description = "模板描述", example = "标准采购合同范本") + private String description; + + @Schema(description = "模板内容(HTML,含占位符)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "模板内容不能为空") + private String content; + + @Schema(description = "SQL配置(JSON格式,可选)") + private String sqlConfig; + + @Schema(description = "数据源标识", example = "default") + private String dataSource; + + @Schema(description = "状态(1=启用,0=停用,2=草稿)", example = "2") + private String enabled; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateTagPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateTagPageReqVO.java new file mode 100644 index 0000000..8d7f922 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateTagPageReqVO.java @@ -0,0 +1,27 @@ +package com.zt.plat.module.base.controller.admin.doctemplate.vo; + +import com.zt.plat.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - 标签库分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class DocTemplateTagPageReqVO extends PageParam { + + @Schema(description = "标签名称", example = "合同编号") + private String tagName; + + @Schema(description = "标签编码", example = "contractNo") + private String tagCode; + + @Schema(description = "所属分类ID", example = "1") + private Long categoryId; + + @Schema(description = "是否启用(1=启用,0=停用)", example = "1") + private String enabled; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateTagRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateTagRespVO.java new file mode 100644 index 0000000..9c03138 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateTagRespVO.java @@ -0,0 +1,63 @@ +package com.zt.plat.module.base.controller.admin.doctemplate.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 标签库 Response VO") +@Data +public class DocTemplateTagRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long id; + + @Schema(description = "标签名称(中文)", requiredMode = Schema.RequiredMode.REQUIRED, example = "合同编号") + private String tagName; + + @Schema(description = "标签编码(Velocity变量名)", requiredMode = Schema.RequiredMode.REQUIRED, example = "contractNo") + private String tagCode; + + @Schema(description = "所属分类ID", example = "1") + private Long categoryId; + + @Schema(description = "所属分类名称", example = "合同管理") + private String categoryName; + + @Schema(description = "数据类型", example = "String") + private String dataType; + + @Schema(description = "默认值", example = "") + private String defaultValue; + + @Schema(description = "SQL脚本(可选,仅保存参考)", example = "SELECT contract_no FROM contract_main WHERE id = #{businessId}") + private String sqlScript; + + @Schema(description = "描述", example = "合同主表的合同编号字段") + private String description; + + @Schema(description = "排序号", example = "1") + private Integer sort; + + @Schema(description = "是否启用(1=启用,0=停用)", example = "1") + private String enabled; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + + @Schema(description = "创建人ID", example = "1") + private String creator; + + @Schema(description = "创建人名称", example = "管理员") + private String creatorName; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; + + @Schema(description = "更新人ID", example = "1") + private String updater; + + @Schema(description = "更新人名称", example = "管理员") + private String updaterName; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateTagSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateTagSaveReqVO.java new file mode 100644 index 0000000..4e06601 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/doctemplate/vo/DocTemplateTagSaveReqVO.java @@ -0,0 +1,44 @@ +package com.zt.plat.module.base.controller.admin.doctemplate.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import jakarta.validation.constraints.NotBlank; + +@Schema(description = "管理后台 - 标签库新增/修改 Request VO") +@Data +public class DocTemplateTagSaveReqVO { + + @Schema(description = "主键", example = "1024") + private Long id; + + @Schema(description = "标签名称(中文)", requiredMode = Schema.RequiredMode.REQUIRED, example = "合同编号") + @NotBlank(message = "标签名称不能为空") + private String tagName; + + @Schema(description = "标签编码(Velocity变量名)", requiredMode = Schema.RequiredMode.REQUIRED, example = "contractNo") + @NotBlank(message = "标签编码不能为空") + private String tagCode; + + @Schema(description = "所属分类ID", example = "1") + private Long categoryId; + + @Schema(description = "数据类型", example = "String") + private String dataType; + + @Schema(description = "默认值", example = "") + private String defaultValue; + + @Schema(description = "SQL脚本(可选,仅保存参考)", example = "SELECT contract_no FROM contract_main WHERE id = #{businessId}") + private String sqlScript; + + @Schema(description = "描述", example = "合同主表的合同编号字段") + private String description; + + @Schema(description = "排序号", example = "1") + private Integer sort; + + @Schema(description = "是否启用(1=启用,0=停用)", example = "1") + private String enabled; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/MaterialClassesController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/MaterialClassesController.java new file mode 100644 index 0000000..acb855e --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/MaterialClassesController.java @@ -0,0 +1,138 @@ +package com.zt.plat.module.base.controller.admin.materialclasses; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.materialclasses.vo.*; +import com.zt.plat.module.base.dal.dataobject.materialclasses.MaterialClassesDO; +import com.zt.plat.module.base.service.materialclasses.MaterialClassesService; + +@Tag(name = "管理后台 - 物料分类") +@RestController +@RequestMapping("/base/material-classes") +@Validated +public class MaterialClassesController { + + + @Resource + private MaterialClassesService materialClassesService; + + @PostMapping("/create") + @Operation(summary = "创建物料分类") + @PreAuthorize("@ss.hasPermission('base:material-classes:create')") + public CommonResult createMaterialClasses(@Valid @RequestBody MaterialClassesSaveReqVO createReqVO) { + return success(materialClassesService.createMaterialClasses(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新物料分类") + @PreAuthorize("@ss.hasPermission('base:material-classes:update')") + public CommonResult updateMaterialClasses(@Valid @RequestBody MaterialClassesSaveReqVO updateReqVO) { + materialClassesService.updateMaterialClasses(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除物料分类") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:material-classes:delete')") + public CommonResult deleteMaterialClasses(@RequestParam("id") Long id) { + materialClassesService.deleteMaterialClasses(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除物料分类") + @PreAuthorize("@ss.hasPermission('base:material-classes:delete')") + public CommonResult deleteMaterialClassesList(@RequestBody BatchDeleteReqVO req) { + materialClassesService.deleteMaterialClassesListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得物料分类") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:material-classes:query')") + public CommonResult getMaterialClasses(@RequestParam("id") Long id) { + MaterialClassesDO materialClasses = materialClassesService.getMaterialClasses(id); + return success(BeanUtils.toBean(materialClasses, MaterialClassesRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得物料分类分页") + @PreAuthorize("@ss.hasPermission('base:material-classes:query')") + public CommonResult> getMaterialClassesPage(@Valid MaterialClassesPageReqVO pageReqVO) { + PageResult pageResult = materialClassesService.getMaterialClassesPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialClassesRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出物料分类 Excel") + @PreAuthorize("@ss.hasPermission('base:material-classes:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMaterialClassesExcel(@Valid MaterialClassesPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialClassesService.getMaterialClassesPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "物料分类.xls", "数据", MaterialClassesRespVO.class, + BeanUtils.toBean(list, MaterialClassesRespVO.class)); + } + + @GetMapping("/tree") + @Operation(summary = "获得物料分类树") + @PreAuthorize("@ss.hasPermission('base:material-classes:query')") + public CommonResult> getMaterialClassesTree() { + List list = materialClassesService.getMaterialClassesList(); + return success(buildTree(list)); + } + + private List buildTree(List list) { + if (list == null || list.isEmpty()) { + return Collections.emptyList(); + } + Map nodeMap = new LinkedHashMap<>(); + list.stream() + .sorted(Comparator.comparing(MaterialClassesDO::getId)) + .forEach(item -> { + MaterialClassesTreeRespVO node = BeanUtils.toBean(item, MaterialClassesTreeRespVO.class); + nodeMap.put(node.getId(), node); + }); + List roots = new ArrayList<>(); + nodeMap.values().forEach(node -> { + Long parentId = node.getParentId(); + if (parentId == null || parentId == 0 || !nodeMap.containsKey(parentId)) { + roots.add(node); + } else { + nodeMap.get(parentId).getChildren().add(node); + } + }); + return roots; + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/vo/MaterialClassesPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/vo/MaterialClassesPageReqVO.java new file mode 100644 index 0000000..6068302 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/vo/MaterialClassesPageReqVO.java @@ -0,0 +1,35 @@ +package com.zt.plat.module.base.controller.admin.materialclasses.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 物料分类分页 Request VO") +@Data +public class MaterialClassesPageReqVO extends PageParam { + + @Schema(description = "父级ID", example = "20706") + private Long parentId; + + @Schema(description = "分类编码") + private String code; + + @Schema(description = "分类名称", example = "赵六") + private String name; + + @Schema(description = "分类级别-用于类别层级(大/中/小类)") + private Long level; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/vo/MaterialClassesRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/vo/MaterialClassesRespVO.java new file mode 100644 index 0000000..a4825a7 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/vo/MaterialClassesRespVO.java @@ -0,0 +1,43 @@ +package com.zt.plat.module.base.controller.admin.materialclasses.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 物料分类 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MaterialClassesRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4051") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "父级ID", example = "20706") + @ExcelProperty("父级ID") + private Long parentId; + + @Schema(description = "分类编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("分类编码") + private String code; + + @Schema(description = "分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("分类名称") + private String name; + + @Schema(description = "分类级别-用于类别层级(大/中/小类)") + @ExcelProperty("分类级别-用于类别层级(大/中/小类)") + private Long level; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/vo/MaterialClassesSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/vo/MaterialClassesSaveReqVO.java new file mode 100644 index 0000000..92ffea0 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/vo/MaterialClassesSaveReqVO.java @@ -0,0 +1,33 @@ +package com.zt.plat.module.base.controller.admin.materialclasses.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 物料分类新增/修改 Request VO") +@Data +public class MaterialClassesSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4051") + private Long id; + + @Schema(description = "父级ID", example = "20706") + private Long parentId; + + @Schema(description = "分类编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "分类编码不能为空") + private String code; + + @Schema(description = "分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "分类名称不能为空") + private String name; + + @Schema(description = "分类级别-用于类别层级(大/中/小类)") + private Long level; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "备注不能为空") + private String remark; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/vo/MaterialClassesTreeRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/vo/MaterialClassesTreeRespVO.java new file mode 100644 index 0000000..f47d215 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialclasses/vo/MaterialClassesTreeRespVO.java @@ -0,0 +1,33 @@ +package com.zt.plat.module.base.controller.admin.materialclasses.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Schema(description = "管理后台 - 物料分类树节点 Response VO") +@Data +public class MaterialClassesTreeRespVO { + + @Schema(description = "主键ID", example = "1001") + private Long id; + + @Schema(description = "父级ID", example = "0") + private Long parentId; + + @Schema(description = "分类编码", example = "CL-001") + private String code; + + @Schema(description = "分类名称", example = "原材料") + private String name; + + @Schema(description = "分类级别") + private Long level; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "子节点") + private List children = new ArrayList<>(); +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasclasses/MaterialHasClassesController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasclasses/MaterialHasClassesController.java new file mode 100644 index 0000000..2dcc841 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasclasses/MaterialHasClassesController.java @@ -0,0 +1,107 @@ +package com.zt.plat.module.base.controller.admin.materialhasclasses; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.materialhasclasses.vo.*; +import com.zt.plat.module.base.dal.dataobject.materialhasclasses.MaterialHasClassesDO; +import com.zt.plat.module.base.service.materialhasclasses.MaterialHasClassesService; + +@Tag(name = "管理后台 - 物料持有分类") +@RestController +@RequestMapping("/base/material-has-classes") +@Validated +public class MaterialHasClassesController { + + + @Resource + private MaterialHasClassesService materialHasClassesService; + + @PostMapping("/create") + @Operation(summary = "创建物料持有分类") + @PreAuthorize("@ss.hasPermission('base:material-has-classes:create')") + public CommonResult createMaterialHasClasses(@Valid @RequestBody MaterialHasClassesSaveReqVO createReqVO) { + return success(materialHasClassesService.createMaterialHasClasses(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新物料持有分类") + @PreAuthorize("@ss.hasPermission('base:material-has-classes:update')") + public CommonResult updateMaterialHasClasses(@Valid @RequestBody MaterialHasClassesSaveReqVO updateReqVO) { + materialHasClassesService.updateMaterialHasClasses(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除物料持有分类") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:material-has-classes:delete')") + public CommonResult deleteMaterialHasClasses(@RequestParam("id") Long id) { + materialHasClassesService.deleteMaterialHasClasses(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除物料持有分类") + @PreAuthorize("@ss.hasPermission('base:material-has-classes:delete')") + public CommonResult deleteMaterialHasClassesList(@RequestBody BatchDeleteReqVO req) { + materialHasClassesService.deleteMaterialHasClassesListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得物料持有分类") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:material-has-classes:query')") + public CommonResult getMaterialHasClasses(@RequestParam("id") Long id) { + MaterialHasClassesDO materialHasClasses = materialHasClassesService.getMaterialHasClasses(id); + return success(BeanUtils.toBean(materialHasClasses, MaterialHasClassesRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得物料持有分类分页") + @PreAuthorize("@ss.hasPermission('base:material-has-classes:query')") + public CommonResult> getMaterialHasClassesPage(@Valid MaterialHasClassesPageReqVO pageReqVO) { + PageResult pageResult = materialHasClassesService.getMaterialHasClassesPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialHasClassesRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出物料持有分类 Excel") + @PreAuthorize("@ss.hasPermission('base:material-has-classes:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMaterialHasClassesExcel(@Valid MaterialHasClassesPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialHasClassesService.getMaterialHasClassesPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "物料持有分类.xls", "数据", MaterialHasClassesRespVO.class, + BeanUtils.toBean(list, MaterialHasClassesRespVO.class)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasclasses/vo/MaterialHasClassesPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasclasses/vo/MaterialHasClassesPageReqVO.java new file mode 100644 index 0000000..3f5efd1 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasclasses/vo/MaterialHasClassesPageReqVO.java @@ -0,0 +1,26 @@ +package com.zt.plat.module.base.controller.admin.materialhasclasses.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 物料持有分类分页 Request VO") +@Data +public class MaterialHasClassesPageReqVO extends PageParam { + + @Schema(description = "物料信息ID", example = "31031") + private Long infomationId; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "分类ID", example = "5914") + private Long classesId; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasclasses/vo/MaterialHasClassesRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasclasses/vo/MaterialHasClassesRespVO.java new file mode 100644 index 0000000..b5d6bdc --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasclasses/vo/MaterialHasClassesRespVO.java @@ -0,0 +1,31 @@ +package com.zt.plat.module.base.controller.admin.materialhasclasses.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 物料持有分类 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MaterialHasClassesRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16228") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "物料信息ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31031") + @ExcelProperty("物料信息ID") + private Long infomationId; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "分类ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5914") + @ExcelProperty("分类ID") + private Long classesId; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasclasses/vo/MaterialHasClassesSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasclasses/vo/MaterialHasClassesSaveReqVO.java new file mode 100644 index 0000000..1c0dbbc --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasclasses/vo/MaterialHasClassesSaveReqVO.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.base.controller.admin.materialhasclasses.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 物料持有分类新增/修改 Request VO") +@Data +public class MaterialHasClassesSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16228") + private Long id; + + @Schema(description = "物料信息ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31031") + @NotNull(message = "物料信息ID不能为空") + private Long infomationId; + + @Schema(description = "分类ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5914") + @NotNull(message = "分类ID不能为空") + private Long classesId; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasproperties/MaterialHasPropertiesController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasproperties/MaterialHasPropertiesController.java new file mode 100644 index 0000000..74cd336 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasproperties/MaterialHasPropertiesController.java @@ -0,0 +1,107 @@ +package com.zt.plat.module.base.controller.admin.materialhasproperties; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.materialhasproperties.vo.*; +import com.zt.plat.module.base.dal.dataobject.materialhasproperties.MaterialHasPropertiesDO; +import com.zt.plat.module.base.service.materialhasproperties.MaterialHasPropertiesService; + +@Tag(name = "管理后台 - 物料持有属性") +@RestController +@RequestMapping("/base/material-has-properties") +@Validated +public class MaterialHasPropertiesController { + + + @Resource + private MaterialHasPropertiesService materialHasPropertiesService; + + @PostMapping("/create") + @Operation(summary = "创建物料持有属性") + @PreAuthorize("@ss.hasPermission('base:material-has-properties:create')") + public CommonResult createMaterialHasProperties(@Valid @RequestBody MaterialHasPropertiesSaveReqVO createReqVO) { + return success(materialHasPropertiesService.createMaterialHasProperties(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新物料持有属性") + @PreAuthorize("@ss.hasPermission('base:material-has-properties:update')") + public CommonResult updateMaterialHasProperties(@Valid @RequestBody MaterialHasPropertiesSaveReqVO updateReqVO) { + materialHasPropertiesService.updateMaterialHasProperties(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除物料持有属性") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:material-has-properties:delete')") + public CommonResult deleteMaterialHasProperties(@RequestParam("id") Long id) { + materialHasPropertiesService.deleteMaterialHasProperties(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除物料持有属性") + @PreAuthorize("@ss.hasPermission('base:material-has-properties:delete')") + public CommonResult deleteMaterialHasPropertiesList(@RequestBody BatchDeleteReqVO req) { + materialHasPropertiesService.deleteMaterialHasPropertiesListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得物料持有属性") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:material-has-properties:query')") + public CommonResult getMaterialHasProperties(@RequestParam("id") Long id) { + MaterialHasPropertiesDO materialHasProperties = materialHasPropertiesService.getMaterialHasProperties(id); + return success(BeanUtils.toBean(materialHasProperties, MaterialHasPropertiesRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得物料持有属性分页") + @PreAuthorize("@ss.hasPermission('base:material-has-properties:query')") + public CommonResult> getMaterialHasPropertiesPage(@Valid MaterialHasPropertiesPageReqVO pageReqVO) { + PageResult pageResult = materialHasPropertiesService.getMaterialHasPropertiesPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialHasPropertiesRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出物料持有属性 Excel") + @PreAuthorize("@ss.hasPermission('base:material-has-properties:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMaterialHasPropertiesExcel(@Valid MaterialHasPropertiesPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialHasPropertiesService.getMaterialHasPropertiesPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "物料持有属性.xls", "数据", MaterialHasPropertiesRespVO.class, + BeanUtils.toBean(list, MaterialHasPropertiesRespVO.class)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasproperties/vo/MaterialHasPropertiesPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasproperties/vo/MaterialHasPropertiesPageReqVO.java new file mode 100644 index 0000000..f1a3349 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasproperties/vo/MaterialHasPropertiesPageReqVO.java @@ -0,0 +1,41 @@ +package com.zt.plat.module.base.controller.admin.materialhasproperties.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 物料持有属性分页 Request VO") +@Data +public class MaterialHasPropertiesPageReqVO extends PageParam { + + @Schema(description = "物料信息ID", example = "2614") + private Long infomationId; + + @Schema(description = "属性ID", example = "8607") + private Long propertiesId; + + @Schema(description = "计量单位ID-默认计量单位", example = "23731") + private Long unitId; + + @Schema(description = "属性值") + private String value; + + @Schema(description = "是否关键属性-关键属性表示物料唯一性") + private Integer isKey; + + @Schema(description = "是否计量定价") + private Integer isMetering; + + @Schema(description = "排序号") + private Long sort; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasproperties/vo/MaterialHasPropertiesRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasproperties/vo/MaterialHasPropertiesRespVO.java new file mode 100644 index 0000000..79cdc7a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasproperties/vo/MaterialHasPropertiesRespVO.java @@ -0,0 +1,51 @@ +package com.zt.plat.module.base.controller.admin.materialhasproperties.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 物料持有属性 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MaterialHasPropertiesRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6800") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "物料信息ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2614") + @ExcelProperty("物料信息ID") + private Long infomationId; + + @Schema(description = "属性ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8607") + @ExcelProperty("属性ID") + private Long propertiesId; + + @Schema(description = "计量单位ID-默认计量单位", example = "23731") + @ExcelProperty("计量单位ID-默认计量单位") + private Long unitId; + + @Schema(description = "属性值", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("属性值") + private String value; + + @Schema(description = "是否关键属性-关键属性表示物料唯一性") + @ExcelProperty("是否关键属性-关键属性表示物料唯一性") + private Integer isKey; + + @Schema(description = "是否计量定价") + @ExcelProperty("是否计量定价") + private Integer isMetering; + + @Schema(description = "排序号") + @ExcelProperty("排序号") + private Long sort; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasproperties/vo/MaterialHasPropertiesSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasproperties/vo/MaterialHasPropertiesSaveReqVO.java new file mode 100644 index 0000000..e3092ab --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialhasproperties/vo/MaterialHasPropertiesSaveReqVO.java @@ -0,0 +1,39 @@ +package com.zt.plat.module.base.controller.admin.materialhasproperties.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 物料持有属性新增/修改 Request VO") +@Data +public class MaterialHasPropertiesSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6800") + private Long id; + + @Schema(description = "物料信息ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2614") + @NotNull(message = "物料信息ID不能为空") + private Long infomationId; + + @Schema(description = "属性ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8607") + @NotNull(message = "属性ID不能为空") + private Long propertiesId; + + @Schema(description = "计量单位ID-默认计量单位", example = "23731") + private Long unitId; + + @Schema(description = "属性值", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "属性值不能为空") + private String value; + + @Schema(description = "是否关键属性-关键属性表示物料唯一性") + private Integer isKey; + + @Schema(description = "是否计量定价") + private Integer isMetering; + + @Schema(description = "排序号") + private Long sort; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialproperties/MaterialPropertiesController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialproperties/MaterialPropertiesController.java new file mode 100644 index 0000000..0929073 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialproperties/MaterialPropertiesController.java @@ -0,0 +1,107 @@ +package com.zt.plat.module.base.controller.admin.materialproperties; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.materialproperties.vo.*; +import com.zt.plat.module.base.dal.dataobject.materialproperties.MaterialPropertiesDO; +import com.zt.plat.module.base.service.materialproperties.MaterialPropertiesService; + +@Tag(name = "管理后台 - 物料属性") +@RestController +@RequestMapping("/base/material-properties") +@Validated +public class MaterialPropertiesController { + + + @Resource + private MaterialPropertiesService materialPropertiesService; + + @PostMapping("/create") + @Operation(summary = "创建物料属性") + @PreAuthorize("@ss.hasPermission('base:material-properties:create')") + public CommonResult createMaterialProperties(@Valid @RequestBody MaterialPropertiesSaveReqVO createReqVO) { + return success(materialPropertiesService.createMaterialProperties(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新物料属性") + @PreAuthorize("@ss.hasPermission('base:material-properties:update')") + public CommonResult updateMaterialProperties(@Valid @RequestBody MaterialPropertiesSaveReqVO updateReqVO) { + materialPropertiesService.updateMaterialProperties(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除物料属性") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:material-properties:delete')") + public CommonResult deleteMaterialProperties(@RequestParam("id") Long id) { + materialPropertiesService.deleteMaterialProperties(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除物料属性") + @PreAuthorize("@ss.hasPermission('base:material-properties:delete')") + public CommonResult deleteMaterialPropertiesList(@RequestBody BatchDeleteReqVO req) { + materialPropertiesService.deleteMaterialPropertiesListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得物料属性") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:material-properties:query')") + public CommonResult getMaterialProperties(@RequestParam("id") Long id) { + MaterialPropertiesDO materialProperties = materialPropertiesService.getMaterialProperties(id); + return success(BeanUtils.toBean(materialProperties, MaterialPropertiesRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得物料属性分页") + @PreAuthorize("@ss.hasPermission('base:material-properties:query')") + public CommonResult> getMaterialPropertiesPage(@Valid MaterialPropertiesPageReqVO pageReqVO) { + PageResult pageResult = materialPropertiesService.getMaterialPropertiesPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialPropertiesRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出物料属性 Excel") + @PreAuthorize("@ss.hasPermission('base:material-properties:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMaterialPropertiesExcel(@Valid MaterialPropertiesPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialPropertiesService.getMaterialPropertiesPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "物料属性.xls", "数据", MaterialPropertiesRespVO.class, + BeanUtils.toBean(list, MaterialPropertiesRespVO.class)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialproperties/vo/MaterialPropertiesPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialproperties/vo/MaterialPropertiesPageReqVO.java new file mode 100644 index 0000000..6621b95 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialproperties/vo/MaterialPropertiesPageReqVO.java @@ -0,0 +1,38 @@ +package com.zt.plat.module.base.controller.admin.materialproperties.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 物料属性分页 Request VO") +@Data +public class MaterialPropertiesPageReqVO extends PageParam { + + @Schema(description = "属性编码") + private String code; + + @Schema(description = "属性名称", example = "芋艿") + private String name; + + @Schema(description = "计量单位量ID", example = "30468") + private Long unitQuantityId; + + @Schema(description = "业务字典数据值") + private String dictionaryDataValue; + + @Schema(description = "数据类型", example = "1") + private String dataType; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialproperties/vo/MaterialPropertiesRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialproperties/vo/MaterialPropertiesRespVO.java new file mode 100644 index 0000000..c2ac468 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialproperties/vo/MaterialPropertiesRespVO.java @@ -0,0 +1,47 @@ +package com.zt.plat.module.base.controller.admin.materialproperties.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 物料属性 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MaterialPropertiesRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10591") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "属性编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("属性编码") + private String code; + + @Schema(description = "属性名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("属性名称") + private String name; + + @Schema(description = "计量单位量ID", example = "30468") + @ExcelProperty("计量单位量ID") + private Long unitQuantityId; + + @Schema(description = "业务字典数据值", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("业务字典数据值") + private String dictionaryDataValue; + + @Schema(description = "数据类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("数据类型") + private String dataType; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialproperties/vo/MaterialPropertiesSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialproperties/vo/MaterialPropertiesSaveReqVO.java new file mode 100644 index 0000000..e296bbe --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/materialproperties/vo/MaterialPropertiesSaveReqVO.java @@ -0,0 +1,38 @@ +package com.zt.plat.module.base.controller.admin.materialproperties.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 物料属性新增/修改 Request VO") +@Data +public class MaterialPropertiesSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10591") + private Long id; + + @Schema(description = "属性编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "属性编码不能为空") + private String code; + + @Schema(description = "属性名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "属性名称不能为空") + private String name; + + @Schema(description = "计量单位量ID", example = "30468") + private Long unitQuantityId; + + @Schema(description = "业务字典数据值", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "业务字典数据值不能为空") + private String dictionaryDataValue; + + @Schema(description = "数据类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "数据类型不能为空") + private String dataType; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "备注不能为空") + private String remark; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/ProcessingInfomationController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/ProcessingInfomationController.java new file mode 100644 index 0000000..2cb57b5 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/ProcessingInfomationController.java @@ -0,0 +1,138 @@ +package com.zt.plat.module.base.controller.admin.processinginfomation; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.processinginfomation.vo.*; +import com.zt.plat.module.base.dal.dataobject.processinginfomation.ProcessingInfomationDO; +import com.zt.plat.module.base.service.processinginfomation.ProcessingInfomationService; + +@Tag(name = "管理后台 - 工艺信息") +@RestController +@RequestMapping("/base/processing-infomation") +@Validated +public class ProcessingInfomationController { + + + @Resource + private ProcessingInfomationService processingInfomationService; + + @PostMapping("/create") + @Operation(summary = "创建工艺信息") + @PreAuthorize("@ss.hasPermission('base:processing-infomation:create')") + public CommonResult createProcessingInfomation(@Valid @RequestBody ProcessingInfomationSaveReqVO createReqVO) { + return success(processingInfomationService.createProcessingInfomation(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工艺信息") + @PreAuthorize("@ss.hasPermission('base:processing-infomation:update')") + public CommonResult updateProcessingInfomation(@Valid @RequestBody ProcessingInfomationSaveReqVO updateReqVO) { + processingInfomationService.updateProcessingInfomation(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工艺信息") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:processing-infomation:delete')") + public CommonResult deleteProcessingInfomation(@RequestParam("id") Long id) { + processingInfomationService.deleteProcessingInfomation(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除工艺信息") + @PreAuthorize("@ss.hasPermission('base:processing-infomation:delete')") + public CommonResult deleteProcessingInfomationList(@RequestBody BatchDeleteReqVO req) { + processingInfomationService.deleteProcessingInfomationListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工艺信息") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:processing-infomation:query')") + public CommonResult getProcessingInfomation(@RequestParam("id") Long id) { + ProcessingInfomationDO processingInfomation = processingInfomationService.getProcessingInfomation(id); + return success(BeanUtils.toBean(processingInfomation, ProcessingInfomationRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工艺信息分页") + @PreAuthorize("@ss.hasPermission('base:processing-infomation:query')") + public CommonResult> getProcessingInfomationPage(@Valid ProcessingInfomationPageReqVO pageReqVO) { + PageResult pageResult = processingInfomationService.getProcessingInfomationPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProcessingInfomationRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工艺信息 Excel") + @PreAuthorize("@ss.hasPermission('base:processing-infomation:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportProcessingInfomationExcel(@Valid ProcessingInfomationPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = processingInfomationService.getProcessingInfomationPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "工艺信息.xls", "数据", ProcessingInfomationRespVO.class, + BeanUtils.toBean(list, ProcessingInfomationRespVO.class)); + } + + @GetMapping("/tree") + @Operation(summary = "获得工艺信息树") + @PreAuthorize("@ss.hasPermission('base:processing-infomation:query')") + public CommonResult> getProcessingInfomationTree() { + List list = processingInfomationService.getProcessingInfomationList(); + return success(buildTree(list)); + } + + private List buildTree(List list) { + if (list == null || list.isEmpty()) { + return Collections.emptyList(); + } + Map nodeMap = new LinkedHashMap<>(); + list.stream() + .sorted(Comparator.comparing(ProcessingInfomationDO::getId)) + .forEach(item -> { + ProcessingInfomationTreeRespVO node = BeanUtils.toBean(item, ProcessingInfomationTreeRespVO.class); + nodeMap.put(node.getId(), node); + }); + List roots = new ArrayList<>(); + nodeMap.values().forEach(node -> { + Long parentId = node.getParentId(); + if (parentId == null || parentId == 0 || !nodeMap.containsKey(parentId)) { + roots.add(node); + } else { + nodeMap.get(parentId).getChildren().add(node); + } + }); + return roots; + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/vo/ProcessingInfomationPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/vo/ProcessingInfomationPageReqVO.java new file mode 100644 index 0000000..35efbf8 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/vo/ProcessingInfomationPageReqVO.java @@ -0,0 +1,42 @@ +package com.zt.plat.module.base.controller.admin.processinginfomation.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 工艺信息分页 Request VO") +@Data +public class ProcessingInfomationPageReqVO extends PageParam { + + @Schema(description = "父级ID", example = "16823") + private Long parentId; + + @Schema(description = "工艺编码-唯一业务键") + private String code; + + @Schema(description = "工艺名称", example = "赵六") + private String name; + + @Schema(description = "工艺类型值") + private Long typeValue; + + @Schema(description = "状态值-工艺状态") + private String statusValue; + + @Schema(description = "工艺描述") + private String description; + + @Schema(description = "生效日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] effectiveDate; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/vo/ProcessingInfomationRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/vo/ProcessingInfomationRespVO.java new file mode 100644 index 0000000..c22e4e9 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/vo/ProcessingInfomationRespVO.java @@ -0,0 +1,51 @@ +package com.zt.plat.module.base.controller.admin.processinginfomation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 工艺信息 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProcessingInfomationRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16240") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "父级ID", example = "16823") + @ExcelProperty("父级ID") + private Long parentId; + + @Schema(description = "工艺编码-唯一业务键", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺编码-唯一业务键") + private String code; + + @Schema(description = "工艺名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("工艺名称") + private String name; + + @Schema(description = "工艺类型值") + @ExcelProperty("工艺类型值") + private Long typeValue; + + @Schema(description = "状态值-工艺状态", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("状态值-工艺状态") + private String statusValue; + + @Schema(description = "工艺描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺描述") + private String description; + + @Schema(description = "生效日期") + @ExcelProperty("生效日期") + private LocalDateTime effectiveDate; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/vo/ProcessingInfomationSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/vo/ProcessingInfomationSaveReqVO.java new file mode 100644 index 0000000..bcf17ca --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/vo/ProcessingInfomationSaveReqVO.java @@ -0,0 +1,42 @@ +package com.zt.plat.module.base.controller.admin.processinginfomation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 工艺信息新增/修改 Request VO") +@Data +public class ProcessingInfomationSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16240") + private Long id; + + @Schema(description = "父级ID", example = "16823") + private Long parentId; + + @Schema(description = "工艺编码-唯一业务键", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺编码-唯一业务键不能为空") + private String code; + + @Schema(description = "工艺名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "工艺名称不能为空") + private String name; + + @Schema(description = "工艺类型值") + private Long typeValue; + + @Schema(description = "状态值-工艺状态", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "状态值-工艺状态不能为空") + private String statusValue; + + @Schema(description = "工艺描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺描述不能为空") + private String description; + + @Schema(description = "生效日期") + private LocalDateTime effectiveDate; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/vo/ProcessingInfomationTreeRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/vo/ProcessingInfomationTreeRespVO.java new file mode 100644 index 0000000..87b276a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomation/vo/ProcessingInfomationTreeRespVO.java @@ -0,0 +1,34 @@ +package com.zt.plat.module.base.controller.admin.processinginfomation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Schema(description = "管理后台 - 工艺信息树节点 Response VO") +@Data +public class ProcessingInfomationTreeRespVO { + + @Schema(description = "主键ID", example = "1001") + private Long id; + + @Schema(description = "父级ID", example = "0") + private Long parentId; + + @Schema(description = "工艺编码", example = "PRC-001") + private String code; + + @Schema(description = "工艺名称", example = "熔铸") + private String name; + + @Schema(description = "工艺类型值") + private Long typeValue; + + @Schema(description = "状态值-工艺状态") + private String statusValue; + + @Schema(description = "子节点") + private List children = new ArrayList<>(); + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomationoperation/ProcessingInfomationOperationController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomationoperation/ProcessingInfomationOperationController.java new file mode 100644 index 0000000..16b2509 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomationoperation/ProcessingInfomationOperationController.java @@ -0,0 +1,107 @@ +package com.zt.plat.module.base.controller.admin.processinginfomationoperation; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.processinginfomationoperation.vo.*; +import com.zt.plat.module.base.dal.dataobject.processinginfomationoperation.ProcessingInfomationOperationDO; +import com.zt.plat.module.base.service.processinginfomationoperation.ProcessingInfomationOperationService; + +@Tag(name = "管理后台 - 工艺工序") +@RestController +@RequestMapping("/base/processing-infomation-operation") +@Validated +public class ProcessingInfomationOperationController { + + + @Resource + private ProcessingInfomationOperationService processingInfomationOperationService; + + @PostMapping("/create") + @Operation(summary = "创建工艺工序") + @PreAuthorize("@ss.hasPermission('base:processing-infomation-operation:create')") + public CommonResult createProcessingInfomationOperation(@Valid @RequestBody ProcessingInfomationOperationSaveReqVO createReqVO) { + return success(processingInfomationOperationService.createProcessingInfomationOperation(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工艺工序") + @PreAuthorize("@ss.hasPermission('base:processing-infomation-operation:update')") + public CommonResult updateProcessingInfomationOperation(@Valid @RequestBody ProcessingInfomationOperationSaveReqVO updateReqVO) { + processingInfomationOperationService.updateProcessingInfomationOperation(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工艺工序") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:processing-infomation-operation:delete')") + public CommonResult deleteProcessingInfomationOperation(@RequestParam("id") Long id) { + processingInfomationOperationService.deleteProcessingInfomationOperation(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除工艺工序") + @PreAuthorize("@ss.hasPermission('base:processing-infomation-operation:delete')") + public CommonResult deleteProcessingInfomationOperationList(@RequestBody BatchDeleteReqVO req) { + processingInfomationOperationService.deleteProcessingInfomationOperationListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工艺工序") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:processing-infomation-operation:query')") + public CommonResult getProcessingInfomationOperation(@RequestParam("id") Long id) { + ProcessingInfomationOperationDO processingInfomationOperation = processingInfomationOperationService.getProcessingInfomationOperation(id); + return success(BeanUtils.toBean(processingInfomationOperation, ProcessingInfomationOperationRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工艺工序分页") + @PreAuthorize("@ss.hasPermission('base:processing-infomation-operation:query')") + public CommonResult> getProcessingInfomationOperationPage(@Valid ProcessingInfomationOperationPageReqVO pageReqVO) { + PageResult pageResult = processingInfomationOperationService.getProcessingInfomationOperationDetailPage(pageReqVO); + return success(pageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工艺工序 Excel") + @PreAuthorize("@ss.hasPermission('base:processing-infomation-operation:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportProcessingInfomationOperationExcel(@Valid ProcessingInfomationOperationPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = processingInfomationOperationService.getProcessingInfomationOperationDetailList(pageReqVO); + // 导出 Excel + ExcelUtils.write(response, "工艺工序.xls", "数据", ProcessingInfomationOperationRespVO.class, + list); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomationoperation/vo/ProcessingInfomationOperationPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomationoperation/vo/ProcessingInfomationOperationPageReqVO.java new file mode 100644 index 0000000..96590e1 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomationoperation/vo/ProcessingInfomationOperationPageReqVO.java @@ -0,0 +1,41 @@ +package com.zt.plat.module.base.controller.admin.processinginfomationoperation.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 工艺工序分页 Request VO") +@Data +public class ProcessingInfomationOperationPageReqVO extends PageParam { + + @Schema(description = "前序工序ID", example = "14658") + private Long previousOperationId; + + @Schema(description = "后续工序ID", example = "22110") + private Long nextOperationId; + + @Schema(description = "工艺ID", example = "5773") + private Long processingId; + + @Schema(description = "是否关键工序") + private Integer isKey; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "后续工序编码") + private String nextOperationCode; + + @Schema(description = "后续工序名称") + private String nextOperationName; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomationoperation/vo/ProcessingInfomationOperationRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomationoperation/vo/ProcessingInfomationOperationRespVO.java new file mode 100644 index 0000000..78b09db --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomationoperation/vo/ProcessingInfomationOperationRespVO.java @@ -0,0 +1,59 @@ +package com.zt.plat.module.base.controller.admin.processinginfomationoperation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 工艺工序 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProcessingInfomationOperationRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "29694") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "前序工序ID", example = "14658") + @ExcelProperty("前序工序ID") + private Long previousOperationId; + + @Schema(description = "前序工序编码") + @ExcelProperty("前序工序编码") + private String previousOperationCode; + + @Schema(description = "前序工序名称") + @ExcelProperty("前序工序名称") + private String previousOperationName; + + @Schema(description = "后续工序ID", example = "22110") + @ExcelProperty("后续工序ID") + private Long nextOperationId; + + @Schema(description = "后续工序编码") + @ExcelProperty("后续工序编码") + private String nextOperationCode; + + @Schema(description = "后续工序名称") + @ExcelProperty("后续工序名称") + private String nextOperationName; + + @Schema(description = "工艺ID", example = "5773") + @ExcelProperty("工艺ID") + private Long processingId; + + @Schema(description = "是否关键工序") + @ExcelProperty("是否关键工序") + private Integer isKey; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomationoperation/vo/ProcessingInfomationOperationSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomationoperation/vo/ProcessingInfomationOperationSaveReqVO.java new file mode 100644 index 0000000..eb396ca --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processinginfomationoperation/vo/ProcessingInfomationOperationSaveReqVO.java @@ -0,0 +1,31 @@ +package com.zt.plat.module.base.controller.admin.processinginfomationoperation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 工艺工序新增/修改 Request VO") +@Data +public class ProcessingInfomationOperationSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "29694") + private Long id; + + @Schema(description = "前序工序ID", example = "14658") + private Long previousOperationId; + + @Schema(description = "后续工序ID", example = "22110") + private Long nextOperationId; + + @Schema(description = "工艺ID", example = "5773") + private Long processingId; + + @Schema(description = "是否关键工序") + private Integer isKey; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "备注不能为空") + private String remark; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/ProcessingOperationController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/ProcessingOperationController.java new file mode 100644 index 0000000..4dd1339 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/ProcessingOperationController.java @@ -0,0 +1,115 @@ +package com.zt.plat.module.base.controller.admin.processingoperation; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.processingoperation.vo.*; +import com.zt.plat.module.base.dal.dataobject.processingoperation.ProcessingOperationDO; +import com.zt.plat.module.base.service.processingoperation.ProcessingOperationService; + +@Tag(name = "管理后台 - 工序") +@RestController +@RequestMapping("/base/processing-operation") +@Validated +public class ProcessingOperationController { + + + @Resource + private ProcessingOperationService processingOperationService; + + @PostMapping("/create") + @Operation(summary = "创建工序") + @PreAuthorize("@ss.hasPermission('base:processing-operation:create')") + public CommonResult createProcessingOperation(@Valid @RequestBody ProcessingOperationSaveReqVO createReqVO) { + return success(processingOperationService.createProcessingOperation(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工序") + @PreAuthorize("@ss.hasPermission('base:processing-operation:update')") + public CommonResult updateProcessingOperation(@Valid @RequestBody ProcessingOperationSaveReqVO updateReqVO) { + processingOperationService.updateProcessingOperation(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工序") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:processing-operation:delete')") + public CommonResult deleteProcessingOperation(@RequestParam("id") Long id) { + processingOperationService.deleteProcessingOperation(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除工序") + @PreAuthorize("@ss.hasPermission('base:processing-operation:delete')") + public CommonResult deleteProcessingOperationList(@RequestBody BatchDeleteReqVO req) { + processingOperationService.deleteProcessingOperationListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工序") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:processing-operation:query')") + public CommonResult getProcessingOperation(@RequestParam("id") Long id) { + ProcessingOperationDO processingOperation = processingOperationService.getProcessingOperation(id); + return success(BeanUtils.toBean(processingOperation, ProcessingOperationRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工序分页") + @PreAuthorize("@ss.hasPermission('base:processing-operation:query')") + public CommonResult> getProcessingOperationPage(@Valid ProcessingOperationPageReqVO pageReqVO) { + PageResult pageResult = processingOperationService.getProcessingOperationPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProcessingOperationRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工序 Excel") + @PreAuthorize("@ss.hasPermission('base:processing-operation:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportProcessingOperationExcel(@Valid ProcessingOperationPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = processingOperationService.getProcessingOperationPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "工序.xls", "数据", ProcessingOperationRespVO.class, + BeanUtils.toBean(list, ProcessingOperationRespVO.class)); + } + + @GetMapping("/simple-list") + @Operation(summary = "获得工序简单列表") + @PreAuthorize("@ss.hasPermission('base:processing-operation:query')") + public CommonResult> getProcessingOperationSimpleList() { + List list = processingOperationService.getProcessingOperationList(); + return success(BeanUtils.toBean(list, ProcessingOperationSimpleRespVO.class)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/vo/ProcessingOperationPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/vo/ProcessingOperationPageReqVO.java new file mode 100644 index 0000000..30eb3b9 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/vo/ProcessingOperationPageReqVO.java @@ -0,0 +1,35 @@ +package com.zt.plat.module.base.controller.admin.processingoperation.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 工序分页 Request VO") +@Data +public class ProcessingOperationPageReqVO extends PageParam { + + @Schema(description = "工序编码") + private String code; + + @Schema(description = "工序名称", example = "王五") + private String name; + + @Schema(description = "排序号") + private Long sort; + + @Schema(description = "类型值-工序类型") + private String typeValue; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/vo/ProcessingOperationRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/vo/ProcessingOperationRespVO.java new file mode 100644 index 0000000..a011073 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/vo/ProcessingOperationRespVO.java @@ -0,0 +1,43 @@ +package com.zt.plat.module.base.controller.admin.processingoperation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 工序 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProcessingOperationRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14097") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "工序编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工序编码") + private String code; + + @Schema(description = "工序名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("工序名称") + private String name; + + @Schema(description = "排序号") + @ExcelProperty("排序号") + private Long sort; + + @Schema(description = "类型值-工序类型", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("类型值-工序类型") + private String typeValue; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/vo/ProcessingOperationSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/vo/ProcessingOperationSaveReqVO.java new file mode 100644 index 0000000..33ef116 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/vo/ProcessingOperationSaveReqVO.java @@ -0,0 +1,34 @@ +package com.zt.plat.module.base.controller.admin.processingoperation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 工序新增/修改 Request VO") +@Data +public class ProcessingOperationSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14097") + private Long id; + + @Schema(description = "工序编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工序编码不能为空") + private String code; + + @Schema(description = "工序名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "工序名称不能为空") + private String name; + + @Schema(description = "排序号") + private Long sort; + + @Schema(description = "类型值-工序类型", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "类型值-工序类型不能为空") + private String typeValue; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "备注不能为空") + private String remark; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/vo/ProcessingOperationSimpleRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/vo/ProcessingOperationSimpleRespVO.java new file mode 100644 index 0000000..7580848 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperation/vo/ProcessingOperationSimpleRespVO.java @@ -0,0 +1,19 @@ +package com.zt.plat.module.base.controller.admin.processingoperation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 工序简单信息 Response VO") +@Data +public class ProcessingOperationSimpleRespVO { + + @Schema(description = "工序ID", example = "1001") + private Long id; + + @Schema(description = "工序编码", example = "OP-001") + private String code; + + @Schema(description = "工序名称", example = "熔铸") + private String name; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperationmaterial/ProcessingOperationMaterialController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperationmaterial/ProcessingOperationMaterialController.java new file mode 100644 index 0000000..dfa6bcb --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperationmaterial/ProcessingOperationMaterialController.java @@ -0,0 +1,107 @@ +package com.zt.plat.module.base.controller.admin.processingoperationmaterial; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.processingoperationmaterial.vo.*; +import com.zt.plat.module.base.dal.dataobject.processingoperationmaterial.ProcessingOperationMaterialDO; +import com.zt.plat.module.base.service.processingoperationmaterial.ProcessingOperationMaterialService; + +@Tag(name = "管理后台 - 工艺工序物料") +@RestController +@RequestMapping("/base/processing-operation-material") +@Validated +public class ProcessingOperationMaterialController { + + + @Resource + private ProcessingOperationMaterialService processingOperationMaterialService; + + @PostMapping("/create") + @Operation(summary = "创建工艺工序物料") + @PreAuthorize("@ss.hasPermission('base:processing-operation-material:create')") + public CommonResult createProcessingOperationMaterial(@Valid @RequestBody ProcessingOperationMaterialSaveReqVO createReqVO) { + return success(processingOperationMaterialService.createProcessingOperationMaterial(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工艺工序物料") + @PreAuthorize("@ss.hasPermission('base:processing-operation-material:update')") + public CommonResult updateProcessingOperationMaterial(@Valid @RequestBody ProcessingOperationMaterialSaveReqVO updateReqVO) { + processingOperationMaterialService.updateProcessingOperationMaterial(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工艺工序物料") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:processing-operation-material:delete')") + public CommonResult deleteProcessingOperationMaterial(@RequestParam("id") Long id) { + processingOperationMaterialService.deleteProcessingOperationMaterial(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除工艺工序物料") + @PreAuthorize("@ss.hasPermission('base:processing-operation-material:delete')") + public CommonResult deleteProcessingOperationMaterialList(@RequestBody BatchDeleteReqVO req) { + processingOperationMaterialService.deleteProcessingOperationMaterialListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工艺工序物料") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:processing-operation-material:query')") + public CommonResult getProcessingOperationMaterial(@RequestParam("id") Long id) { + ProcessingOperationMaterialDO processingOperationMaterial = processingOperationMaterialService.getProcessingOperationMaterial(id); + return success(BeanUtils.toBean(processingOperationMaterial, ProcessingOperationMaterialRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工艺工序物料分页") + @PreAuthorize("@ss.hasPermission('base:processing-operation-material:query')") + public CommonResult> getProcessingOperationMaterialPage(@Valid ProcessingOperationMaterialPageReqVO pageReqVO) { + PageResult pageResult = processingOperationMaterialService.getProcessingOperationMaterialPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProcessingOperationMaterialRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工艺工序物料 Excel") + @PreAuthorize("@ss.hasPermission('base:processing-operation-material:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportProcessingOperationMaterialExcel(@Valid ProcessingOperationMaterialPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = processingOperationMaterialService.getProcessingOperationMaterialPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "工艺工序物料.xls", "数据", ProcessingOperationMaterialRespVO.class, + BeanUtils.toBean(list, ProcessingOperationMaterialRespVO.class)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperationmaterial/vo/ProcessingOperationMaterialPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperationmaterial/vo/ProcessingOperationMaterialPageReqVO.java new file mode 100644 index 0000000..8e8853c --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperationmaterial/vo/ProcessingOperationMaterialPageReqVO.java @@ -0,0 +1,29 @@ +package com.zt.plat.module.base.controller.admin.processingoperationmaterial.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 工艺工序物料分页 Request VO") +@Data +public class ProcessingOperationMaterialPageReqVO extends PageParam { + + @Schema(description = "类型值-物料类型(产出/投入)") + private String typeValue; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "组织机构") + private String departmentIds; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperationmaterial/vo/ProcessingOperationMaterialRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperationmaterial/vo/ProcessingOperationMaterialRespVO.java new file mode 100644 index 0000000..a0e3b0a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperationmaterial/vo/ProcessingOperationMaterialRespVO.java @@ -0,0 +1,43 @@ +package com.zt.plat.module.base.controller.admin.processingoperationmaterial.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 工艺工序物料 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProcessingOperationMaterialRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27200") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "工艺工序ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18575") + @ExcelProperty("工艺工序ID") + private Long processingOperationId; + + @Schema(description = "物料ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15117") + @ExcelProperty("物料ID") + private Long materialId; + + @Schema(description = "类型值-物料类型(产出/投入)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("类型值-物料类型(产出/投入)") + private String typeValue; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "组织机构") + @ExcelProperty("组织机构") + private String departmentIds; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperationmaterial/vo/ProcessingOperationMaterialSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperationmaterial/vo/ProcessingOperationMaterialSaveReqVO.java new file mode 100644 index 0000000..18bd082 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/processingoperationmaterial/vo/ProcessingOperationMaterialSaveReqVO.java @@ -0,0 +1,32 @@ +package com.zt.plat.module.base.controller.admin.processingoperationmaterial.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 工艺工序物料新增/修改 Request VO") +@Data +public class ProcessingOperationMaterialSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27200") + private Long id; + + @Schema(description = "工艺工序ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18575") + private Long processingOperationId; + + @Schema(description = "物料ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15117") + private Long materialId; + + @Schema(description = "类型值-物料类型(产出/投入)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "类型值-物料类型(产出/投入)不能为空") + private String typeValue; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "备注不能为空") + private String remark; + + @Schema(description = "组织机构") + private String departmentIds; + +} \ No newline at end of file diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/QuantityUnitRelationController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/QuantityUnitRelationController.java similarity index 82% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/QuantityUnitRelationController.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/QuantityUnitRelationController.java index 6a48f14..e526ea8 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/QuantityUnitRelationController.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/QuantityUnitRelationController.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.QuantityUnitRelation; +package com.zt.plat.module.base.controller.admin.quantityUnitRelation; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; @@ -10,7 +10,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; -import jakarta.validation.constraints.*; import jakarta.validation.*; import jakarta.servlet.http.*; import java.util.*; @@ -28,9 +27,9 @@ import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; -import com.zt.plat.module.unitmanagement.controller.admin.QuantityUnitRelation.vo.*; -import com.zt.plat.module.unitmanagement.dal.dataobject.QuantityUnitRelation.QuantityUnitRelationDO; -import com.zt.plat.module.unitmanagement.service.QuantityUnitRelation.QuantityUnitRelationService; +import com.zt.plat.module.base.controller.admin.quantityUnitRelation.vo.*; +import com.zt.plat.module.base.dal.dataobject.quantityUnitRelation.QuantityUnitRelationDO; +import com.zt.plat.module.base.service.quantityUnitRelation.QuantityUnitRelationService; @Tag(name = "管理后台 - 计量单位量与单位关联") @RestController @@ -113,4 +112,19 @@ public class QuantityUnitRelationController implements BusinessControllerMarker return success(true); } + @PostMapping("/create-unit-with-relation") + @Operation(summary = "创建单位并关联到量纲(组合接口)") + @PreAuthorize("@ss.hasPermission('unitmanagement:quantity-unit-relation:create')") + public CommonResult createUnitWithRelation(@Valid @RequestBody CreateUnitWithRelationReqVO createReqVO) { + return success(quantityUnitRelationService.createUnitWithRelation(createReqVO)); + } + + @PostMapping("/delete-unit-with-relation") + @Operation(summary = "删除单位及关联关系(组合接口)") + @PreAuthorize("@ss.hasPermission('unitmanagement:quantity-unit-relation:delete')") + public CommonResult deleteUnitWithRelation(@Valid @RequestBody DeleteUnitWithRelationReqVO deleteReqVO) { + quantityUnitRelationService.deleteUnitWithRelation(deleteReqVO); + return success(true); + } + } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/CreateUnitWithRelationReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/CreateUnitWithRelationReqVO.java new file mode 100644 index 0000000..77a0260 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/CreateUnitWithRelationReqVO.java @@ -0,0 +1,27 @@ +package com.zt.plat.module.base.controller.admin.quantityUnitRelation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 创建单位并关联到量纲 Request VO") +@Data +public class CreateUnitWithRelationReqVO { + + @Schema(description = "量纲ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "量纲ID不能为空") + private Long untQtyId; + + @Schema(description = "单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "米") + @NotEmpty(message = "单位名称不能为空") + private String name; + + @Schema(description = "单位符号", requiredMode = Schema.RequiredMode.REQUIRED, example = "m") + @NotEmpty(message = "单位符号不能为空") + private String smb; + + @Schema(description = "是否基准单位:0=否,1=是", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "是否基准单位不能为空") + private Integer isBse; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/DeleteUnitWithRelationReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/DeleteUnitWithRelationReqVO.java new file mode 100644 index 0000000..6a5c0f9 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/DeleteUnitWithRelationReqVO.java @@ -0,0 +1,19 @@ +package com.zt.plat.module.base.controller.admin.quantityUnitRelation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 删除单位及关联关系 Request VO") +@Data +public class DeleteUnitWithRelationReqVO { + + @Schema(description = "关联关系ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "关联关系ID不能为空") + private Long relationId; + + @Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "单位ID不能为空") + private Long untId; + +} diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/vo/QuantityUnitRelationBatchSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/QuantityUnitRelationBatchSaveReqVO.java similarity index 93% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/vo/QuantityUnitRelationBatchSaveReqVO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/QuantityUnitRelationBatchSaveReqVO.java index d308cfe..3dd7fbf 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/vo/QuantityUnitRelationBatchSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/QuantityUnitRelationBatchSaveReqVO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.QuantityUnitRelation.vo; +package com.zt.plat.module.base.controller.admin.quantityUnitRelation.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/vo/QuantityUnitRelationPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/QuantityUnitRelationPageReqVO.java similarity index 88% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/vo/QuantityUnitRelationPageReqVO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/QuantityUnitRelationPageReqVO.java index 69c8aab..50c0542 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/vo/QuantityUnitRelationPageReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/QuantityUnitRelationPageReqVO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.QuantityUnitRelation.vo; +package com.zt.plat.module.base.controller.admin.quantityUnitRelation.vo; import lombok.*; import java.util.*; diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/vo/QuantityUnitRelationRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/QuantityUnitRelationRespVO.java similarity index 93% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/vo/QuantityUnitRelationRespVO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/QuantityUnitRelationRespVO.java index f79d47b..ae4b459 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/vo/QuantityUnitRelationRespVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/QuantityUnitRelationRespVO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.QuantityUnitRelation.vo; +package com.zt.plat.module.base.controller.admin.quantityUnitRelation.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/vo/QuantityUnitRelationSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/QuantityUnitRelationSaveReqVO.java similarity index 90% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/vo/QuantityUnitRelationSaveReqVO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/QuantityUnitRelationSaveReqVO.java index 8f40f60..ab411be 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/QuantityUnitRelation/vo/QuantityUnitRelationSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/quantityUnitRelation/vo/QuantityUnitRelationSaveReqVO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.QuantityUnitRelation.vo; +package com.zt.plat.module.base.controller.admin.quantityUnitRelation.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java index 2d1a589..6efb512 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java @@ -1,9 +1,8 @@ package com.zt.plat.module.base.controller.admin.templtp.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import jakarta.validation.constraints.*; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; @Schema(description = "管理后台 - 实例字段值新增/修改 Request VO") @Data @@ -22,6 +21,6 @@ public class TemplateInstanceDataSaveReqVO { @Schema(description = "用户填写的值", requiredMode = Schema.RequiredMode.REQUIRED) // @NotEmpty(message = "用户填写的值不能为空") - private String fldVal; + private Object fldVal; } diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/UnitConversion/UnitConversionController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/UnitConversionController.java similarity index 61% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/UnitConversion/UnitConversionController.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/UnitConversionController.java index c3ddbfe..22ca105 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/UnitConversion/UnitConversionController.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/UnitConversionController.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.UnitConversion; +package com.zt.plat.module.base.controller.admin.unitConversion; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; @@ -10,7 +10,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; -import jakarta.validation.constraints.*; import jakarta.validation.*; import jakarta.servlet.http.*; import java.util.*; @@ -28,9 +27,9 @@ import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; -import com.zt.plat.module.unitmanagement.controller.admin.UnitConversion.vo.*; -import com.zt.plat.module.unitmanagement.dal.dataobject.UnitConversion.UnitConversionDO; -import com.zt.plat.module.unitmanagement.service.UnitConversion.UnitConversionService; +import com.zt.plat.module.base.controller.admin.unitConversion.vo.*; +import com.zt.plat.module.base.dal.dataobject.unitConversion.UnitConversionDO; +import com.zt.plat.module.base.service.unitConversion.UnitConversionService; @Tag(name = "管理后台 - 单位转换") @RestController @@ -38,7 +37,6 @@ import com.zt.plat.module.unitmanagement.service.UnitConversion.UnitConversionSe @Validated public class UnitConversionController implements BusinessControllerMarker { - @Resource private UnitConversionService unitConversionService; @@ -105,4 +103,54 @@ public class UnitConversionController implements BusinessControllerMarker { BeanUtils.toBean(list, UnitConversionRespVO.class)); } + @PostMapping("/convert") + @Operation(summary = "单位转换") + @PreAuthorize("@ss.hasPermission('unitmanagement:unit-conversion:query')") + public CommonResult convert(@Valid @RequestBody UnitConvertReqVO convertReqVO) { + return success(unitConversionService.convert(convertReqVO)); + } + + @PostMapping("/batch-convert") + @Operation(summary = "批量单位转换") + @PreAuthorize("@ss.hasPermission('unitmanagement:unit-conversion:query')") + public CommonResult batchConvert(@Valid @RequestBody BatchUnitConvertReqVO batchReqVO) { + return success(unitConversionService.batchConvert(batchReqVO)); + } + + @PostMapping("/convert-by-symbol") + @Operation(summary = "按单位符号转换") + @PreAuthorize("@ss.hasPermission('unitmanagement:unit-conversion:query')") + public CommonResult convertBySymbol(@Valid @RequestBody UnitConvertBySymbolReqVO reqVO) { + return success(unitConversionService.convertBySymbol(reqVO)); + } + + @PostMapping("/convert-by-name") + @Operation(summary = "按单位名称转换") + @PreAuthorize("@ss.hasPermission('unitmanagement:unit-conversion:query')") + public CommonResult convertByName(@Valid @RequestBody UnitConvertByNameReqVO reqVO) { + return success(unitConversionService.convertByName(reqVO)); + } + + @PostMapping("/batch-convert-by-symbol") + @Operation(summary = "批量按单位符号转换") + @PreAuthorize("@ss.hasPermission('unitmanagement:unit-conversion:query')") + public CommonResult batchConvertBySymbol(@Valid @RequestBody BatchUnitConvertBySymbolReqVO reqVO) { + return success(unitConversionService.batchConvertBySymbol(reqVO)); + } + + @PostMapping("/batch-convert-by-name") + @Operation(summary = "批量按单位名称转换") + @PreAuthorize("@ss.hasPermission('unitmanagement:unit-conversion:query')") + public CommonResult batchConvertByName(@Valid @RequestBody BatchUnitConvertByNameReqVO reqVO) { + return success(unitConversionService.batchConvertByName(reqVO)); + } + + @GetMapping("/validate-paths") + @Operation(summary = "校验量纲的转换路径") + @Parameter(name = "quantityId", description = "量纲ID", required = true, example = "1") + @PreAuthorize("@ss.hasPermission('unitmanagement:unit-conversion:query')") + public CommonResult validateConversionPaths(@RequestParam("quantityId") Long quantityId) { + return success(unitConversionService.validateConversionPaths(quantityId)); + } + } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/BatchUnitConvertByNameReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/BatchUnitConvertByNameReqVO.java new file mode 100644 index 0000000..b88a07e --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/BatchUnitConvertByNameReqVO.java @@ -0,0 +1,33 @@ +package com.zt.plat.module.base.controller.admin.unitConversion.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; + +import java.math.BigDecimal; +import java.util.List; + +@Schema(description = "管理后台 - 批量按名称单位转换 Request VO") +@Data +public class BatchUnitConvertByNameReqVO { + + @Schema(description = "源单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "千克") + @NotBlank(message = "源单位名称不能为空") + private String srcUnitName; + + @Schema(description = "目标单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "吨") + @NotBlank(message = "目标单位名称不能为空") + private String tgtUnitName; + + @Schema(description = "待转换的值列表", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "待转换的值列表不能为空") + private List values; + + @Schema(description = "精度(小数位数)", example = "6") + private Integer precision = 6; + + @Schema(description = "是否忽略错误(true:遇到错误继续执行, false:遇到错误立即停止)", example = "false") + private Boolean ignoreErrors = false; +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/BatchUnitConvertBySymbolReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/BatchUnitConvertBySymbolReqVO.java new file mode 100644 index 0000000..5447982 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/BatchUnitConvertBySymbolReqVO.java @@ -0,0 +1,33 @@ +package com.zt.plat.module.base.controller.admin.unitConversion.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; + +import java.math.BigDecimal; +import java.util.List; + +@Schema(description = "管理后台 - 批量按符号单位转换 Request VO") +@Data +public class BatchUnitConvertBySymbolReqVO { + + @Schema(description = "源单位符号", requiredMode = Schema.RequiredMode.REQUIRED, example = "m") + @NotBlank(message = "源单位符号不能为空") + private String srcUnitSymbol; + + @Schema(description = "目标单位符号", requiredMode = Schema.RequiredMode.REQUIRED, example = "km") + @NotBlank(message = "目标单位符号不能为空") + private String tgtUnitSymbol; + + @Schema(description = "待转换的值列表", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "待转换的值列表不能为空") + private List values; + + @Schema(description = "精度(小数位数)", example = "6") + private Integer precision = 6; + + @Schema(description = "是否忽略错误(true:遇到错误继续执行, false:遇到错误立即停止)", example = "false") + private Boolean ignoreErrors = false; +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/BatchUnitConvertReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/BatchUnitConvertReqVO.java new file mode 100644 index 0000000..c786679 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/BatchUnitConvertReqVO.java @@ -0,0 +1,19 @@ +package com.zt.plat.module.base.controller.admin.unitConversion.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.NotEmpty; +import java.util.List; + +@Schema(description = "管理后台 - 批量单位转换 Request VO") +@Data +public class BatchUnitConvertReqVO { + + @Schema(description = "转换项列表", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "转换项列表不能为空") + private List items; + + @Schema(description = "是否忽略错误(true:遇到错误继续执行, false:遇到错误立即停止)", example = "false") + private Boolean ignoreErrors = false; +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/BatchUnitConvertRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/BatchUnitConvertRespVO.java new file mode 100644 index 0000000..8af4fc0 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/BatchUnitConvertRespVO.java @@ -0,0 +1,42 @@ +package com.zt.plat.module.base.controller.admin.unitConversion.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.Builder; +import java.util.List; + +@Schema(description = "管理后台 - 批量单位转换 Response VO") +@Data +@Builder +public class BatchUnitConvertRespVO { + + @Schema(description = "转换结果列表") + private List results; + + @Schema(description = "成功数量", example = "10") + private Integer successCount; + + @Schema(description = "失败数量", example = "0") + private Integer failureCount; + + @Schema(description = "总数量", example = "10") + private Integer totalCount; + + @Schema(description = "转换结果项") + @Data + @Builder + public static class UnitConvertResultItem { + + @Schema(description = "是否成功", example = "true") + private Boolean success; + + @Schema(description = "转换结果(成功时返回)") + private UnitConvertRespVO data; + + @Schema(description = "错误信息(失败时返回)", example = "找不到转换规则") + private String errorMessage; + + @Schema(description = "原始请求") + private UnitConvertReqVO request; + } +} diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/UnitConversion/vo/UnitConversionPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConversionPageReqVO.java similarity index 85% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/UnitConversion/vo/UnitConversionPageReqVO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConversionPageReqVO.java index 77fb339..acbe0f7 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/UnitConversion/vo/UnitConversionPageReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConversionPageReqVO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.UnitConversion.vo; +package com.zt.plat.module.base.controller.admin.unitConversion.vo; import lombok.*; import java.util.*; @@ -14,6 +14,9 @@ import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH @Data public class UnitConversionPageReqVO extends PageParam { + @Schema(description = "计量单位量ID(量纲ID)", example = "1") + private Long untQtyId; + @Schema(description = "源单位ID", example = "26239") private Long srcUntId; diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/UnitConversion/vo/UnitConversionRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConversionRespVO.java similarity index 94% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/UnitConversion/vo/UnitConversionRespVO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConversionRespVO.java index 7c59938..078069f 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/UnitConversion/vo/UnitConversionRespVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConversionRespVO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.UnitConversion.vo; +package com.zt.plat.module.base.controller.admin.unitConversion.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/UnitConversion/vo/UnitConversionSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConversionSaveReqVO.java similarity index 78% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/UnitConversion/vo/UnitConversionSaveReqVO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConversionSaveReqVO.java index b8da368..0e470b1 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/UnitConversion/vo/UnitConversionSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConversionSaveReqVO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.UnitConversion.vo; +package com.zt.plat.module.base.controller.admin.unitConversion.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -13,6 +13,10 @@ public class UnitConversionSaveReqVO { @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "339") private Long id; + @Schema(description = "计量单位量ID(量纲ID)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "量纲ID不能为空") + private Long untQtyId; + @Schema(description = "源单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "26239") @NotNull(message = "源单位ID不能为空") private Long srcUntId; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConversionValidationRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConversionValidationRespVO.java new file mode 100644 index 0000000..fc7b093 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConversionValidationRespVO.java @@ -0,0 +1,110 @@ +package com.zt.plat.module.base.controller.admin.unitConversion.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Schema(description = "管理后台 - 单位转换路径校验响应 VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class UnitConversionValidationRespVO { + + @Schema(description = "量纲ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long quantityId; + + @Schema(description = "量纲名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "长度") + private String quantityName; + + @Schema(description = "量纲符号", example = "L") + private String quantitySymbol; + + @Schema(description = "总单位数", requiredMode = Schema.RequiredMode.REQUIRED, example = "8") + private Integer totalUnits; + + @Schema(description = "可转换单位数", requiredMode = Schema.RequiredMode.REQUIRED, example = "8") + private Integer convertibleUnits; + + @Schema(description = "不可转换单位数", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") + private Integer unconvertibleUnits; + + @Schema(description = "是否全部可转换", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") + private Boolean allConvertible; + + @Schema(description = "基准单位信息") + private BaseUnitInfo baseUnit; + + @Schema(description = "不可转换的单位列表") + private List unconvertibleUnitList; + + @Schema(description = "转换路径详情") + private List conversionPaths; + + @Schema(description = "基准单位信息") + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class BaseUnitInfo { + @Schema(description = "单位ID", example = "1") + private Long unitId; + + @Schema(description = "单位名称", example = "米") + private String unitName; + + @Schema(description = "单位符号", example = "m") + private String unitSymbol; + } + + @Schema(description = "不可转换单位信息") + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class UnconvertibleUnitInfo { + @Schema(description = "单位ID", example = "1") + private Long unitId; + + @Schema(description = "单位名称", example = "光年") + private String unitName; + + @Schema(description = "单位符号", example = "ly") + private String unitSymbol; + + @Schema(description = "原因", example = "缺少到基准单位的转换规则") + private String reason; + } + + @Schema(description = "转换路径信息") + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class ConversionPathInfo { + @Schema(description = "源单位ID", example = "1") + private Long srcUnitId; + + @Schema(description = "源单位名称", example = "千米") + private String srcUnitName; + + @Schema(description = "目标单位ID", example = "2") + private Long tgtUnitId; + + @Schema(description = "目标单位名称", example = "米") + private String tgtUnitName; + + @Schema(description = "是否有直接转换", example = "true") + private Boolean hasDirect; + + @Schema(description = "是否可通过基准单位转换", example = "true") + private Boolean hasViaBase; + + @Schema(description = "转换路径描述", example = "千米 → 米 (直接转换)") + private String pathDescription; + } +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConvertByNameReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConvertByNameReqVO.java new file mode 100644 index 0000000..4f1b0ff --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConvertByNameReqVO.java @@ -0,0 +1,28 @@ +package com.zt.plat.module.base.controller.admin.unitConversion.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.NotBlank; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 按名称单位转换 Request VO") +@Data +public class UnitConvertByNameReqVO { + + @Schema(description = "源单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "千克") + @NotBlank(message = "源单位名称不能为空") + private String srcUnitName; + + @Schema(description = "目标单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "吨") + @NotBlank(message = "目标单位名称不能为空") + private String tgtUnitName; + + @Schema(description = "待转换的值", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000") + @NotNull(message = "待转换的值不能为空") + private BigDecimal value; + + @Schema(description = "精度(小数位数)", example = "6") + private Integer precision = 6; +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConvertBySymbolReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConvertBySymbolReqVO.java new file mode 100644 index 0000000..3bc792c --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConvertBySymbolReqVO.java @@ -0,0 +1,28 @@ +package com.zt.plat.module.base.controller.admin.unitConversion.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.NotBlank; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 按符号单位转换 Request VO") +@Data +public class UnitConvertBySymbolReqVO { + + @Schema(description = "源单位符号", requiredMode = Schema.RequiredMode.REQUIRED, example = "kg") + @NotBlank(message = "源单位符号不能为空") + private String srcUnitSymbol; + + @Schema(description = "目标单位符号", requiredMode = Schema.RequiredMode.REQUIRED, example = "t") + @NotBlank(message = "目标单位符号不能为空") + private String tgtUnitSymbol; + + @Schema(description = "待转换的值", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000") + @NotNull(message = "待转换的值不能为空") + private BigDecimal value; + + @Schema(description = "精度(小数位数)", example = "6") + private Integer precision = 6; +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConvertReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConvertReqVO.java new file mode 100644 index 0000000..bd33987 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConvertReqVO.java @@ -0,0 +1,26 @@ +package com.zt.plat.module.base.controller.admin.unitConversion.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import jakarta.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 单位转换 Request VO") +@Data +public class UnitConvertReqVO { + + @Schema(description = "源单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "源单位ID不能为空") + private Long srcUntId; + + @Schema(description = "目标单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "目标单位ID不能为空") + private Long tgtUntId; + + @Schema(description = "待转换的值", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") + @NotNull(message = "待转换的值不能为空") + private BigDecimal value; + + @Schema(description = "精度(小数位数)", example = "6") + private Integer precision = 6; +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConvertRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConvertRespVO.java new file mode 100644 index 0000000..83c12f0 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitConversion/vo/UnitConvertRespVO.java @@ -0,0 +1,45 @@ +package com.zt.plat.module.base.controller.admin.unitConversion.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.Builder; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 单位转换 Response VO") +@Data +@Builder +public class UnitConvertRespVO { + + @Schema(description = "源单位ID", example = "1") + private Long srcUntId; + + @Schema(description = "源单位名称", example = "米") + private String srcUntName; + + @Schema(description = "源单位符号", example = "m") + private String srcUntSmb; + + @Schema(description = "目标单位ID", example = "2") + private Long tgtUntId; + + @Schema(description = "目标单位名称", example = "千米") + private String tgtUntName; + + @Schema(description = "目标单位符号", example = "km") + private String tgtUntSmb; + + @Schema(description = "原始值", example = "1000") + private BigDecimal originalValue; + + @Schema(description = "转换后的值", example = "1") + private BigDecimal convertedValue; + + @Schema(description = "转换因子", example = "0.001") + private BigDecimal factor; + + @Schema(description = "转换公式", example = "1000m = 1km") + private String formula; + + @Schema(description = "转换策略", example = "DIRECT") + private String strategy; +} diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/unitQuantity/UnitQuantityController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/UnitQuantityController.java similarity index 88% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/unitQuantity/UnitQuantityController.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/UnitQuantityController.java index b9de3d6..8dcf203 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/unitQuantity/UnitQuantityController.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/UnitQuantityController.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.UnitQuantity; +package com.zt.plat.module.base.controller.admin.unitQuantity; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; @@ -10,7 +10,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; -import jakarta.validation.constraints.*; import jakarta.validation.*; import jakarta.servlet.http.*; import java.util.*; @@ -28,9 +27,9 @@ import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; -import com.zt.plat.module.unitmanagement.controller.admin.UnitQuantity.vo.*; -import com.zt.plat.module.unitmanagement.dal.dataobject.UnitQuantity.UnitQuantityDO; -import com.zt.plat.module.unitmanagement.service.UnitQuantity.UnitQuantityService; +import com.zt.plat.module.base.controller.admin.unitQuantity.vo.*; +import com.zt.plat.module.base.dal.dataobject.unitQuantity.UnitQuantityDO; +import com.zt.plat.module.base.service.unitQuantity.UnitQuantityService; @Tag(name = "管理后台 - 计量单位量") @RestController @@ -105,4 +104,11 @@ public class UnitQuantityController implements BusinessControllerMarker { BeanUtils.toBean(list, UnitQuantityRespVO.class)); } + @GetMapping("/tree") + @Operation(summary = "获取量纲及单位树") + @PreAuthorize("@ss.hasPermission('unitmanagement:unit-quantity:query')") + public CommonResult> getUnitQuantityTree() { + return success(unitQuantityService.getUnitQuantityTree()); + } + } \ No newline at end of file diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/unitQuantity/vo/UnitQuantityPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/vo/UnitQuantityPageReqVO.java similarity index 91% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/unitQuantity/vo/UnitQuantityPageReqVO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/vo/UnitQuantityPageReqVO.java index 3ddd337..cca6088 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/unitQuantity/vo/UnitQuantityPageReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/vo/UnitQuantityPageReqVO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.UnitQuantity.vo; +package com.zt.plat.module.base.controller.admin.unitQuantity.vo; import lombok.*; import java.util.*; diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/unitQuantity/vo/UnitQuantityRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/vo/UnitQuantityRespVO.java similarity index 93% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/unitQuantity/vo/UnitQuantityRespVO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/vo/UnitQuantityRespVO.java index ad653e3..42e36b6 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/unitQuantity/vo/UnitQuantityRespVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/vo/UnitQuantityRespVO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.UnitQuantity.vo; +package com.zt.plat.module.base.controller.admin.unitQuantity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/unitQuantity/vo/UnitQuantitySaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/vo/UnitQuantitySaveReqVO.java similarity index 92% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/unitQuantity/vo/UnitQuantitySaveReqVO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/vo/UnitQuantitySaveReqVO.java index 086ef77..c673791 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/unitQuantity/vo/UnitQuantitySaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/vo/UnitQuantitySaveReqVO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.UnitQuantity.vo; +package com.zt.plat.module.base.controller.admin.unitQuantity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/vo/UnitQuantityTreeRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/vo/UnitQuantityTreeRespVO.java new file mode 100644 index 0000000..bacbbc7 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/unitQuantity/vo/UnitQuantityTreeRespVO.java @@ -0,0 +1,45 @@ +package com.zt.plat.module.base.controller.admin.unitQuantity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import java.util.List; + +@Schema(description = "管理后台 - 量纲及单位树 Response VO") +@Data +public class UnitQuantityTreeRespVO { + + @Schema(description = "量纲ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long id; + + @Schema(description = "量纲名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "长度") + private String name; + + @Schema(description = "量纲符号", requiredMode = Schema.RequiredMode.REQUIRED, example = "L") + private String symbol; + + @Schema(description = "量纲描述", example = "用于测量物体长短、距离的物理量") + private String dsp; + + @Schema(description = "下属单位列表") + private List units; + + @Schema(description = "单位项") + @Data + public static class UnitItemVO { + + @Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long id; + + @Schema(description = "单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "米") + private String name; + + @Schema(description = "单位符号", requiredMode = Schema.RequiredMode.REQUIRED, example = "m") + private String smb; + + @Schema(description = "是否基准单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Integer isBse; + + @Schema(description = "关联关系ID", example = "1") + private Long relationId; + } +} diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/untinfo/UntInfoController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/untInfo/UntInfoController.java similarity index 92% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/untinfo/UntInfoController.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/untInfo/UntInfoController.java index 6935276..3fca177 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/untinfo/UntInfoController.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/untInfo/UntInfoController.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.UntInfo; +package com.zt.plat.module.base.controller.admin.untInfo; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; @@ -10,7 +10,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; -import jakarta.validation.constraints.*; import jakarta.validation.*; import jakarta.servlet.http.*; import java.util.*; @@ -28,9 +27,9 @@ import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; -import com.zt.plat.module.unitmanagement.controller.admin.UntInfo.vo.*; -import com.zt.plat.module.unitmanagement.dal.dataobject.UntInfo.UntInfoDO; -import com.zt.plat.module.unitmanagement.service.UntInfo.UntInfoService; +import com.zt.plat.module.base.controller.admin.untInfo.vo.*; +import com.zt.plat.module.base.dal.dataobject.untInfo.UntInfoDO; +import com.zt.plat.module.base.service.untInfo.UntInfoService; @Tag(name = "管理后台 - 计量单位") @RestController diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/untinfo/vo/UntInfoPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/untInfo/vo/UntInfoPageReqVO.java similarity index 91% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/untinfo/vo/UntInfoPageReqVO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/untInfo/vo/UntInfoPageReqVO.java index b2582c3..fb9ccbd 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/untinfo/vo/UntInfoPageReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/untInfo/vo/UntInfoPageReqVO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.UntInfo.vo; +package com.zt.plat.module.base.controller.admin.untInfo.vo; import lombok.*; import java.util.*; diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/untinfo/vo/UntInfoRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/untInfo/vo/UntInfoRespVO.java similarity index 93% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/untinfo/vo/UntInfoRespVO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/untInfo/vo/UntInfoRespVO.java index 1ca397a..3c33bbf 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/untinfo/vo/UntInfoRespVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/untInfo/vo/UntInfoRespVO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.UntInfo.vo; +package com.zt.plat.module.base.controller.admin.untInfo.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/untinfo/vo/UntInfoSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/untInfo/vo/UntInfoSaveReqVO.java similarity index 91% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/untinfo/vo/UntInfoSaveReqVO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/untInfo/vo/UntInfoSaveReqVO.java index 32aabe3..cf86bfb 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/controller/admin/untinfo/vo/UntInfoSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/untInfo/vo/UntInfoSaveReqVO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.controller.admin.UntInfo.vo; +package com.zt.plat.module.base.controller.admin.untInfo.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/convert/doctemplate/DocTemplateCategoryConvert.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/convert/doctemplate/DocTemplateCategoryConvert.java new file mode 100644 index 0000000..2ec2402 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/convert/doctemplate/DocTemplateCategoryConvert.java @@ -0,0 +1,30 @@ +package com.zt.plat.module.base.convert.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateCategoryRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateCategorySaveReqVO; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateCategoryDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 模板分类 Convert + * + * @author 系统生成 + */ +@Mapper +public interface DocTemplateCategoryConvert { + + DocTemplateCategoryConvert INSTANCE = Mappers.getMapper(DocTemplateCategoryConvert.class); + + DocTemplateCategoryDO convert(DocTemplateCategorySaveReqVO bean); + + DocTemplateCategoryRespVO convert(DocTemplateCategoryDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/convert/doctemplate/DocTemplateConvert.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/convert/doctemplate/DocTemplateConvert.java new file mode 100644 index 0000000..9559053 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/convert/doctemplate/DocTemplateConvert.java @@ -0,0 +1,30 @@ +package com.zt.plat.module.base.convert.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateSaveReqVO; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 模板 Convert + * + * @author 系统生成 + */ +@Mapper +public interface DocTemplateConvert { + + DocTemplateConvert INSTANCE = Mappers.getMapper(DocTemplateConvert.class); + + DocTemplateDO convert(DocTemplateSaveReqVO bean); + + DocTemplateRespVO convert(DocTemplateDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/convert/doctemplate/DocTemplateInstanceConvert.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/convert/doctemplate/DocTemplateInstanceConvert.java new file mode 100644 index 0000000..716cedc --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/convert/doctemplate/DocTemplateInstanceConvert.java @@ -0,0 +1,30 @@ +package com.zt.plat.module.base.convert.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateInstanceRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateInstanceSaveReqVO; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateInstanceDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 模板实例 Convert + * + * @author 系统生成 + */ +@Mapper +public interface DocTemplateInstanceConvert { + + DocTemplateInstanceConvert INSTANCE = Mappers.getMapper(DocTemplateInstanceConvert.class); + + DocTemplateInstanceDO convert(DocTemplateInstanceSaveReqVO bean); + + DocTemplateInstanceRespVO convert(DocTemplateInstanceDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/convert/doctemplate/DocTemplateTagConvert.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/convert/doctemplate/DocTemplateTagConvert.java new file mode 100644 index 0000000..1ef73be --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/convert/doctemplate/DocTemplateTagConvert.java @@ -0,0 +1,30 @@ +package com.zt.plat.module.base.convert.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateTagRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateTagSaveReqVO; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateTagDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 标签库 Convert + * + * @author 系统生成 + */ +@Mapper +public interface DocTemplateTagConvert { + + DocTemplateTagConvert INSTANCE = Mappers.getMapper(DocTemplateTagConvert.class); + + DocTemplateTagDO convert(DocTemplateTagSaveReqVO bean); + + DocTemplateTagRespVO convert(DocTemplateTagDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/departmentmaterial/DepartmentMaterialMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/departmentmaterial/DepartmentMaterialMapper.java new file mode 100644 index 0000000..d7dbd2d --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/departmentmaterial/DepartmentMaterialMapper.java @@ -0,0 +1,32 @@ +package com.zt.plat.module.base.dal.dao.departmentmaterial; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.departmentmaterial.DepartmentMaterialDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.departmentmaterial.vo.*; + +/** + * 组织架构物料 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface DepartmentMaterialMapper extends BaseMapperX { + + default PageResult selectPage(DepartmentMaterialPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DepartmentMaterialDO::getInfomationId, reqVO.getInfomationId()) + .inIfPresent(DepartmentMaterialDO::getInfomationId, reqVO.getInfomationIds()) + .eqIfPresent(DepartmentMaterialDO::getClassesId, reqVO.getClassesId()) + .eqIfPresent(DepartmentMaterialDO::getDeptId, reqVO.getDeptId()) + .eqIfPresent(DepartmentMaterialDO::getDictionaryDataValue, reqVO.getDictionaryDataValue()) + .eqIfPresent(DepartmentMaterialDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(DepartmentMaterialDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DepartmentMaterialDO::getId)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/doctemplate/DocTemplateCategoryMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/doctemplate/DocTemplateCategoryMapper.java new file mode 100644 index 0000000..b6310e0 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/doctemplate/DocTemplateCategoryMapper.java @@ -0,0 +1,28 @@ +package com.zt.plat.module.base.dal.dao.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateCategoryPageReqVO; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateCategoryDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 模板分类 Mapper + * + * @author 系统生成 + */ +@Mapper +public interface DocTemplateCategoryMapper extends BaseMapperX { + + default PageResult selectPage(DocTemplateCategoryPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(DocTemplateCategoryDO::getCategoryName, reqVO.getCategoryName()) + .eqIfPresent(DocTemplateCategoryDO::getCategoryCode, reqVO.getCategoryCode()) + .eqIfPresent(DocTemplateCategoryDO::getParentId, reqVO.getParentId()) + .eqIfPresent(DocTemplateCategoryDO::getLevel, reqVO.getLevel()) + .orderByAsc(DocTemplateCategoryDO::getSort) + .orderByDesc(DocTemplateCategoryDO::getId)); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/doctemplate/DocTemplateInstanceMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/doctemplate/DocTemplateInstanceMapper.java new file mode 100644 index 0000000..8063083 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/doctemplate/DocTemplateInstanceMapper.java @@ -0,0 +1,28 @@ +package com.zt.plat.module.base.dal.dao.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateInstancePageReqVO; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateInstanceDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 模板实例 Mapper + * + * @author 系统生成 + */ +@Mapper +public interface DocTemplateInstanceMapper extends BaseMapperX { + + default PageResult selectPage(DocTemplateInstancePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(DocTemplateInstanceDO::getInstanceName, reqVO.getInstanceName()) + .eqIfPresent(DocTemplateInstanceDO::getTemplateId, reqVO.getTemplateId()) + .eqIfPresent(DocTemplateInstanceDO::getBusinessType, reqVO.getBusinessType()) + .eqIfPresent(DocTemplateInstanceDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(DocTemplateInstanceDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DocTemplateInstanceDO::getId)); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/doctemplate/DocTemplateMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/doctemplate/DocTemplateMapper.java new file mode 100644 index 0000000..8de6f6b --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/doctemplate/DocTemplateMapper.java @@ -0,0 +1,29 @@ +package com.zt.plat.module.base.dal.dao.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplatePageReqVO; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 模板 Mapper + * + * @author 系统生成 + */ +@Mapper +public interface DocTemplateMapper extends BaseMapperX { + + default PageResult selectPage(DocTemplatePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(DocTemplateDO::getTmplName, reqVO.getTmplName()) + .likeIfPresent(DocTemplateDO::getTmplCode, reqVO.getTmplCode()) + .eqIfPresent(DocTemplateDO::getBigCategoryId, reqVO.getBigCategoryId()) + .eqIfPresent(DocTemplateDO::getSmallCategoryId, reqVO.getSmallCategoryId()) + .eqIfPresent(DocTemplateDO::getEnabled, reqVO.getEnabled()) + .betweenIfPresent(DocTemplateDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DocTemplateDO::getId)); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/doctemplate/DocTemplateTagMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/doctemplate/DocTemplateTagMapper.java new file mode 100644 index 0000000..d791d60 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/doctemplate/DocTemplateTagMapper.java @@ -0,0 +1,28 @@ +package com.zt.plat.module.base.dal.dao.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateTagPageReqVO; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateTagDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 标签库 Mapper + * + * @author 系统生成 + */ +@Mapper +public interface DocTemplateTagMapper extends BaseMapperX { + + default PageResult selectPage(DocTemplateTagPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(DocTemplateTagDO::getTagName, reqVO.getTagName()) + .likeIfPresent(DocTemplateTagDO::getTagCode, reqVO.getTagCode()) + .eqIfPresent(DocTemplateTagDO::getCategoryId, reqVO.getCategoryId()) + .eqIfPresent(DocTemplateTagDO::getEnabled, reqVO.getEnabled()) + .orderByAsc(DocTemplateTagDO::getSort) + .orderByDesc(DocTemplateTagDO::getId)); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/materialclasses/MaterialClassesMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/materialclasses/MaterialClassesMapper.java new file mode 100644 index 0000000..c486195 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/materialclasses/MaterialClassesMapper.java @@ -0,0 +1,31 @@ +package com.zt.plat.module.base.dal.dao.materialclasses; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.materialclasses.MaterialClassesDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.materialclasses.vo.*; + +/** + * 物料分类 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface MaterialClassesMapper extends BaseMapperX { + + default PageResult selectPage(MaterialClassesPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MaterialClassesDO::getParentId, reqVO.getParentId()) + .eqIfPresent(MaterialClassesDO::getCode, reqVO.getCode()) + .likeIfPresent(MaterialClassesDO::getName, reqVO.getName()) + .eqIfPresent(MaterialClassesDO::getLevel, reqVO.getLevel()) + .eqIfPresent(MaterialClassesDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(MaterialClassesDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MaterialClassesDO::getId)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/materialhasclasses/MaterialHasClassesMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/materialhasclasses/MaterialHasClassesMapper.java new file mode 100644 index 0000000..8bbde0f --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/materialhasclasses/MaterialHasClassesMapper.java @@ -0,0 +1,28 @@ +package com.zt.plat.module.base.dal.dao.materialhasclasses; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.materialhasclasses.MaterialHasClassesDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.materialhasclasses.vo.*; + +/** + * 物料持有分类 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface MaterialHasClassesMapper extends BaseMapperX { + + default PageResult selectPage(MaterialHasClassesPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MaterialHasClassesDO::getInfomationId, reqVO.getInfomationId()) + .betweenIfPresent(MaterialHasClassesDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(MaterialHasClassesDO::getClassesId, reqVO.getClassesId()) + .orderByDesc(MaterialHasClassesDO::getId)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/materialhasproperties/MaterialHasPropertiesMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/materialhasproperties/MaterialHasPropertiesMapper.java new file mode 100644 index 0000000..824da81 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/materialhasproperties/MaterialHasPropertiesMapper.java @@ -0,0 +1,33 @@ +package com.zt.plat.module.base.dal.dao.materialhasproperties; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.materialhasproperties.MaterialHasPropertiesDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.materialhasproperties.vo.*; + +/** + * 物料持有属性 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface MaterialHasPropertiesMapper extends BaseMapperX { + + default PageResult selectPage(MaterialHasPropertiesPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MaterialHasPropertiesDO::getInfomationId, reqVO.getInfomationId()) + .eqIfPresent(MaterialHasPropertiesDO::getPropertiesId, reqVO.getPropertiesId()) + .eqIfPresent(MaterialHasPropertiesDO::getUnitId, reqVO.getUnitId()) + .eqIfPresent(MaterialHasPropertiesDO::getValue, reqVO.getValue()) + .eqIfPresent(MaterialHasPropertiesDO::getIsKey, reqVO.getIsKey()) + .eqIfPresent(MaterialHasPropertiesDO::getIsMetering, reqVO.getIsMetering()) + .eqIfPresent(MaterialHasPropertiesDO::getSort, reqVO.getSort()) + .betweenIfPresent(MaterialHasPropertiesDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MaterialHasPropertiesDO::getId)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/materialproperties/MaterialPropertiesMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/materialproperties/MaterialPropertiesMapper.java new file mode 100644 index 0000000..9bb4334 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/materialproperties/MaterialPropertiesMapper.java @@ -0,0 +1,32 @@ +package com.zt.plat.module.base.dal.dao.materialproperties; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.materialproperties.MaterialPropertiesDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.materialproperties.vo.*; + +/** + * 物料属性 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface MaterialPropertiesMapper extends BaseMapperX { + + default PageResult selectPage(MaterialPropertiesPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MaterialPropertiesDO::getCode, reqVO.getCode()) + .likeIfPresent(MaterialPropertiesDO::getName, reqVO.getName()) + .eqIfPresent(MaterialPropertiesDO::getUnitQuantityId, reqVO.getUnitQuantityId()) + .eqIfPresent(MaterialPropertiesDO::getDictionaryDataValue, reqVO.getDictionaryDataValue()) + .eqIfPresent(MaterialPropertiesDO::getDataType, reqVO.getDataType()) + .eqIfPresent(MaterialPropertiesDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(MaterialPropertiesDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MaterialPropertiesDO::getId)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/processinginfomation/ProcessingInfomationMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/processinginfomation/ProcessingInfomationMapper.java new file mode 100644 index 0000000..4468ec8 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/processinginfomation/ProcessingInfomationMapper.java @@ -0,0 +1,33 @@ +package com.zt.plat.module.base.dal.dao.processinginfomation; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.processinginfomation.ProcessingInfomationDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.processinginfomation.vo.*; + +/** + * 工艺信息 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface ProcessingInfomationMapper extends BaseMapperX { + + default PageResult selectPage(ProcessingInfomationPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProcessingInfomationDO::getParentId, reqVO.getParentId()) + .eqIfPresent(ProcessingInfomationDO::getCode, reqVO.getCode()) + .likeIfPresent(ProcessingInfomationDO::getName, reqVO.getName()) + .eqIfPresent(ProcessingInfomationDO::getTypeValue, reqVO.getTypeValue()) + .eqIfPresent(ProcessingInfomationDO::getStatusValue, reqVO.getStatusValue()) + .eqIfPresent(ProcessingInfomationDO::getDescription, reqVO.getDescription()) + .betweenIfPresent(ProcessingInfomationDO::getEffectiveDate, reqVO.getEffectiveDate()) + .betweenIfPresent(ProcessingInfomationDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProcessingInfomationDO::getId)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/processinginfomationoperation/ProcessingInfomationOperationMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/processinginfomationoperation/ProcessingInfomationOperationMapper.java new file mode 100644 index 0000000..e8748cc --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/processinginfomationoperation/ProcessingInfomationOperationMapper.java @@ -0,0 +1,42 @@ +package com.zt.plat.module.base.dal.dao.processinginfomationoperation; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.processinginfomationoperation.ProcessingInfomationOperationDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.processinginfomationoperation.vo.*; + +/** + * 工艺工序 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface ProcessingInfomationOperationMapper extends BaseMapperX { + + default PageResult selectPage(ProcessingInfomationOperationPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProcessingInfomationOperationDO::getPreviousOperationId, reqVO.getPreviousOperationId()) + .eqIfPresent(ProcessingInfomationOperationDO::getNextOperationId, reqVO.getNextOperationId()) + .eqIfPresent(ProcessingInfomationOperationDO::getProcessingId, reqVO.getProcessingId()) + .eqIfPresent(ProcessingInfomationOperationDO::getIsKey, reqVO.getIsKey()) + .eqIfPresent(ProcessingInfomationOperationDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(ProcessingInfomationOperationDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProcessingInfomationOperationDO::getId)); + } + + default List selectList(ProcessingInfomationOperationPageReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ProcessingInfomationOperationDO::getPreviousOperationId, reqVO.getPreviousOperationId()) + .eqIfPresent(ProcessingInfomationOperationDO::getNextOperationId, reqVO.getNextOperationId()) + .eqIfPresent(ProcessingInfomationOperationDO::getProcessingId, reqVO.getProcessingId()) + .eqIfPresent(ProcessingInfomationOperationDO::getIsKey, reqVO.getIsKey()) + .eqIfPresent(ProcessingInfomationOperationDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(ProcessingInfomationOperationDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProcessingInfomationOperationDO::getId)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/processingoperation/ProcessingOperationMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/processingoperation/ProcessingOperationMapper.java new file mode 100644 index 0000000..b611f7a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/processingoperation/ProcessingOperationMapper.java @@ -0,0 +1,31 @@ +package com.zt.plat.module.base.dal.dao.processingoperation; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.processingoperation.ProcessingOperationDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.processingoperation.vo.*; + +/** + * 工序 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface ProcessingOperationMapper extends BaseMapperX { + + default PageResult selectPage(ProcessingOperationPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProcessingOperationDO::getCode, reqVO.getCode()) + .likeIfPresent(ProcessingOperationDO::getName, reqVO.getName()) + .eqIfPresent(ProcessingOperationDO::getSort, reqVO.getSort()) + .eqIfPresent(ProcessingOperationDO::getTypeValue, reqVO.getTypeValue()) + .eqIfPresent(ProcessingOperationDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(ProcessingOperationDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProcessingOperationDO::getId)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/processingoperationmaterial/ProcessingOperationMaterialMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/processingoperationmaterial/ProcessingOperationMaterialMapper.java new file mode 100644 index 0000000..81a4b50 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/processingoperationmaterial/ProcessingOperationMaterialMapper.java @@ -0,0 +1,29 @@ +package com.zt.plat.module.base.dal.dao.processingoperationmaterial; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.processingoperationmaterial.ProcessingOperationMaterialDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.processingoperationmaterial.vo.*; + +/** + * 工艺工序物料 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface ProcessingOperationMaterialMapper extends BaseMapperX { + + default PageResult selectPage(ProcessingOperationMaterialPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProcessingOperationMaterialDO::getTypeValue, reqVO.getTypeValue()) + .eqIfPresent(ProcessingOperationMaterialDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(ProcessingOperationMaterialDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(ProcessingOperationMaterialDO::getDepartmentIds, reqVO.getDepartmentIds()) + .orderByDesc(ProcessingOperationMaterialDO::getId)); + } + +} \ No newline at end of file diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dao/QuantityUnitRelation/QuantityUnitRelationMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/quantityUnitRelation/QuantityUnitRelationMapper.java similarity index 82% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dao/QuantityUnitRelation/QuantityUnitRelationMapper.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/quantityUnitRelation/QuantityUnitRelationMapper.java index 60ca4a0..81eba42 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dao/QuantityUnitRelation/QuantityUnitRelationMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/quantityUnitRelation/QuantityUnitRelationMapper.java @@ -1,13 +1,13 @@ -package com.zt.plat.module.unitmanagement.dal.dao.QuantityUnitRelation; +package com.zt.plat.module.base.dal.dao.quantityUnitRelation; import java.util.*; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; -import com.zt.plat.module.unitmanagement.dal.dataobject.QuantityUnitRelation.QuantityUnitRelationDO; +import com.zt.plat.module.base.dal.dataobject.quantityUnitRelation.QuantityUnitRelationDO; import org.apache.ibatis.annotations.Mapper; -import com.zt.plat.module.unitmanagement.controller.admin.QuantityUnitRelation.vo.*; +import com.zt.plat.module.base.controller.admin.quantityUnitRelation.vo.*; /** * 计量单位量与单位关联 Mapper diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dao/UnitConversion/UnitConversionMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/unitConversion/UnitConversionMapper.java similarity index 77% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dao/UnitConversion/UnitConversionMapper.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/unitConversion/UnitConversionMapper.java index a667ad7..4717e73 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dao/UnitConversion/UnitConversionMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/unitConversion/UnitConversionMapper.java @@ -1,13 +1,11 @@ -package com.zt.plat.module.unitmanagement.dal.dao.UnitConversion; - -import java.util.*; +package com.zt.plat.module.base.dal.dao.unitConversion; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; -import com.zt.plat.module.unitmanagement.dal.dataobject.UnitConversion.UnitConversionDO; +import com.zt.plat.module.base.dal.dataobject.unitConversion.UnitConversionDO; import org.apache.ibatis.annotations.Mapper; -import com.zt.plat.module.unitmanagement.controller.admin.UnitConversion.vo.*; +import com.zt.plat.module.base.controller.admin.unitConversion.vo.*; /** * 单位转换 Mapper @@ -19,6 +17,7 @@ public interface UnitConversionMapper extends BaseMapperX { default PageResult selectPage(UnitConversionPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(UnitConversionDO::getUntQtyId, reqVO.getUntQtyId()) .eqIfPresent(UnitConversionDO::getSrcUntId, reqVO.getSrcUntId()) .eqIfPresent(UnitConversionDO::getTgtUntId, reqVO.getTgtUntId()) .eqIfPresent(UnitConversionDO::getFctr, reqVO.getFctr()) diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dao/unitQuantity/UnitQuantityMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/unitQuantity/UnitQuantityMapper.java similarity index 78% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dao/unitQuantity/UnitQuantityMapper.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/unitQuantity/UnitQuantityMapper.java index 56292e0..31ef092 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dao/unitQuantity/UnitQuantityMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/unitQuantity/UnitQuantityMapper.java @@ -1,13 +1,11 @@ -package com.zt.plat.module.unitmanagement.dal.dao.UnitQuantity; - -import java.util.*; +package com.zt.plat.module.base.dal.dao.unitQuantity; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; -import com.zt.plat.module.unitmanagement.dal.dataobject.UnitQuantity.UnitQuantityDO; +import com.zt.plat.module.base.dal.dataobject.unitQuantity.UnitQuantityDO; import org.apache.ibatis.annotations.Mapper; -import com.zt.plat.module.unitmanagement.controller.admin.UnitQuantity.vo.*; +import com.zt.plat.module.base.controller.admin.unitQuantity.vo.*; /** * 计量单位量 Mapper diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dao/untinfo/UntInfoMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/untInfo/UntInfoMapper.java similarity index 77% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dao/untinfo/UntInfoMapper.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/untInfo/UntInfoMapper.java index 16640fb..b4c415f 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dao/untinfo/UntInfoMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/untInfo/UntInfoMapper.java @@ -1,13 +1,11 @@ -package com.zt.plat.module.unitmanagement.dal.dao.UntInfo; - -import java.util.*; +package com.zt.plat.module.base.dal.dao.untInfo; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; -import com.zt.plat.module.unitmanagement.dal.dataobject.UntInfo.UntInfoDO; +import com.zt.plat.module.base.dal.dataobject.untInfo.UntInfoDO; import org.apache.ibatis.annotations.Mapper; -import com.zt.plat.module.unitmanagement.controller.admin.UntInfo.vo.*; +import com.zt.plat.module.base.controller.admin.untInfo.vo.*; /** * 计量单位 Mapper diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/ElementDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/ElementDO.java index ba2870d..32ed81b 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/ElementDO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/ElementDO.java @@ -48,6 +48,11 @@ public class ElementDO extends BusinessBaseDO { */ @TableField("DEC") private Long decimalValue; + /** + * 是否启用 + */ + @TableField("IS_ENB") + private String isEnable; /** * 品位单位 */ diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/MaterialInfomationDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/MaterialInfomationDO.java index 1515714..8b5f73e 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/MaterialInfomationDO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/MaterialInfomationDO.java @@ -39,6 +39,11 @@ public class MaterialInfomationDO extends BaseDO { @TableField("NAME") private String name; /** + * 分类ID(中间表关联) + */ + @TableField(exist = false) + private Long classesId; + /** * 备注 */ @TableField("RMK") diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/departmentmaterial/DepartmentMaterialDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/departmentmaterial/DepartmentMaterialDO.java new file mode 100644 index 0000000..a759e7b --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/departmentmaterial/DepartmentMaterialDO.java @@ -0,0 +1,60 @@ +package com.zt.plat.module.base.dal.dataobject.departmentmaterial; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +/** +* 组织架构物料 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_dept_mtrl") +@KeySequence("bse_dept_mtrl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class DepartmentMaterialDO extends BaseDO { + + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 部门ID + */ + @TableField("DEPT_ID") + private Long deptId; + /** + * 物料信息ID + */ + @TableField("INF_ID") + private Long infomationId; + /** + * 物料分类ID + */ + @TableField("CLS_ID") + private Long classesId; + /** + * 字典数据值-物料类型 + */ + @TableField("DIC_DAT_VAL") + private String dictionaryDataValue; + /** + * 备注 + */ + @TableField("RMK") + private String remark; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/doctemplate/DocTemplateCategoryDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/doctemplate/DocTemplateCategoryDO.java new file mode 100644 index 0000000..390706f --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/doctemplate/DocTemplateCategoryDO.java @@ -0,0 +1,63 @@ +package com.zt.plat.module.base.dal.dataobject.doctemplate; + +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +import lombok.*; + +/** + * 模板分类 DO + * + * @author 系统生成 + */ +@TableName(value = "bse_doc_category") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DocTemplateCategoryDO extends BusinessBaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 分类名称 + */ + @TableField("category_name") + private String categoryName; + + /** + * 分类编码 + */ + @TableField("category_code") + private String categoryCode; + + /** + * 父分类ID(NULL=大类) + */ + @TableField("parent_id") + private Long parentId; + + /** + * 层级(1=大类,2=小类) + */ + @TableField("level") + private Integer level; + + /** + * 排序号 + */ + @TableField("sort") + private Integer sort; + + /** + * 备注 + */ + @TableField("remark") + private String remark; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/doctemplate/DocTemplateDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/doctemplate/DocTemplateDO.java new file mode 100644 index 0000000..344835a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/doctemplate/DocTemplateDO.java @@ -0,0 +1,99 @@ +package com.zt.plat.module.base.dal.dataobject.doctemplate; + +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +import lombok.*; + +/** + * 模板 DO + * + * @author 系统生成 + */ +@TableName(value = "bse_doc_tmpl") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DocTemplateDO extends BusinessBaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 模板名称 + */ + @TableField("tmpl_name") + private String tmplName; + + /** + * 模板编码(唯一) + */ + @TableField("tmpl_code") + private String tmplCode; + + /** + * 模板图标 + */ + @TableField("icon") + private String icon; + + /** + * 所属大类 + */ + @TableField("big_category_id") + private Long bigCategoryId; + + /** + * 所属小类 + */ + @TableField("small_category_id") + private Long smallCategoryId; + + /** + * 版本号 + */ + @TableField("version") + private String version; + + /** + * 模板描述 + */ + @TableField("description") + private String description; + + /** + * 模板内容(HTML,含占位符) + */ + @TableField("content") + private String content; + + /** + * SQL配置(JSON格式,可选) + */ + @TableField("sql_config") + private String sqlConfig; + + /** + * 数据源标识 + */ + @TableField("data_source") + private String dataSource; + + /** + * 使用次数(引用创建实例的次数) + */ + @TableField("use_count") + private Integer useCount; + + /** + * 状态(1=启用,0=停用,2=草稿) + */ + @TableField("enabled") + private String enabled; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/doctemplate/DocTemplateInstanceDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/doctemplate/DocTemplateInstanceDO.java new file mode 100644 index 0000000..88621fd --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/doctemplate/DocTemplateInstanceDO.java @@ -0,0 +1,87 @@ +package com.zt.plat.module.base.dal.dataobject.doctemplate; + +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +import lombok.*; + +/** + * 模板实例 DO + * + * @author 系统生成 + */ +@TableName(value = "bse_doc_instance") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DocTemplateInstanceDO extends BusinessBaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 实例名称 + */ + @TableField("instance_name") + private String instanceName; + + /** + * 实例编码(唯一) + */ + @TableField("instance_code") + private String instanceCode; + + /** + * 引用的模板ID + */ + @TableField("template_id") + private Long templateId; + + /** + * 业务关联类型 + */ + @TableField("business_type") + private String businessType; + + /** + * 业务关联ID + */ + @TableField("business_id") + private Long businessId; + + /** + * 业务关联标签(如 PC-2025-001) + */ + @TableField("business_label") + private String businessLabel; + + /** + * 用户编辑后的内容(含占位符) + */ + @TableField("edited_content") + private String editedContent; + + /** + * 渲染后的最终内容(占位符已替换) + */ + @TableField("rendered_content") + private String renderedContent; + + /** + * 备注 + */ + @TableField("remark") + private String remark; + + /** + * 状态(draft=草稿,published=已发布) + */ + @TableField("status") + private String status; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/doctemplate/DocTemplateTagDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/doctemplate/DocTemplateTagDO.java new file mode 100644 index 0000000..564561f --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/doctemplate/DocTemplateTagDO.java @@ -0,0 +1,81 @@ +package com.zt.plat.module.base.dal.dataobject.doctemplate; + +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +import lombok.*; + +/** + * 标签库 DO + * + * @author 系统生成 + */ +@TableName(value = "bse_doc_tag") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DocTemplateTagDO extends BusinessBaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 标签名称(中文) + */ + @TableField("tag_name") + private String tagName; + + /** + * 标签编码(Velocity变量名) + */ + @TableField("tag_code") + private String tagCode; + + /** + * 所属分类ID + */ + @TableField("category_id") + private Long categoryId; + + /** + * 数据类型(String/Number/Date/Boolean) + */ + @TableField("data_type") + private String dataType; + + /** + * 默认值 + */ + @TableField("default_value") + private String defaultValue; + + /** + * SQL脚本(可选,仅保存参考) + */ + @TableField("sql_script") + private String sqlScript; + + /** + * 描述 + */ + @TableField("description") + private String description; + + /** + * 排序号 + */ + @TableField("sort") + private Integer sort; + + /** + * 是否启用(1=启用,0=停用) + */ + @TableField("enabled") + private String enabled; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/materialclasses/MaterialClassesDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/materialclasses/MaterialClassesDO.java new file mode 100644 index 0000000..fbf13b7 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/materialclasses/MaterialClassesDO.java @@ -0,0 +1,60 @@ +package com.zt.plat.module.base.dal.dataobject.materialclasses; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +/** +* 物料分类 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_mtrl_cls") +@KeySequence("bse_mtrl_cls_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class MaterialClassesDO extends BaseDO { + + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 父级ID + */ + @TableField("PRN_ID") + private Long parentId; + /** + * 分类编码 + */ + @TableField("CD") + private String code; + /** + * 分类名称 + */ + @TableField("NAME") + private String name; + /** + * 分类级别-用于类别层级(大/中/小类) + */ + @TableField("LVL") + private Long level; + /** + * 备注 + */ + @TableField("RMK") + private String remark; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/materialhasclasses/MaterialHasClassesDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/materialhasclasses/MaterialHasClassesDO.java new file mode 100644 index 0000000..8bd7cee --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/materialhasclasses/MaterialHasClassesDO.java @@ -0,0 +1,45 @@ +package com.zt.plat.module.base.dal.dataobject.materialhasclasses; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +/** +* 物料持有分类 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_mtrl_hs_cls") +@KeySequence("bse_mtrl_hs_cls_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class MaterialHasClassesDO extends BaseDO { + + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 物料信息ID + */ + @TableField("INF_ID") + private Long infomationId; + /** + * 分类ID + */ + @TableField("CLS_ID") + private Long classesId; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/materialhasproperties/MaterialHasPropertiesDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/materialhasproperties/MaterialHasPropertiesDO.java new file mode 100644 index 0000000..8eccb9a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/materialhasproperties/MaterialHasPropertiesDO.java @@ -0,0 +1,70 @@ +package com.zt.plat.module.base.dal.dataobject.materialhasproperties; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +/** +* 物料持有属性 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_mtrl_hs_prps") +@KeySequence("bse_mtrl_hs_prps_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class MaterialHasPropertiesDO extends BaseDO { + + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 物料信息ID + */ + @TableField("INF_ID") + private Long infomationId; + /** + * 属性ID + */ + @TableField("PRPS_ID") + private Long propertiesId; + /** + * 计量单位ID-默认计量单位 + */ + @TableField("UNT_ID") + private Long unitId; + /** + * 属性值 + */ + @TableField("VAL") + private String value; + /** + * 是否关键属性-关键属性表示物料唯一性 + */ + @TableField("IS_KY") + private Integer isKey; + /** + * 是否计量定价 + */ + @TableField("IS_MTNG") + private Integer isMetering; + /** + * 排序号 + */ + @TableField("SRT") + private Long sort; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/materialproperties/MaterialPropertiesDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/materialproperties/MaterialPropertiesDO.java new file mode 100644 index 0000000..a075eeb --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/materialproperties/MaterialPropertiesDO.java @@ -0,0 +1,65 @@ +package com.zt.plat.module.base.dal.dataobject.materialproperties; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +/** +* 物料属性 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_mtrl_prps") +@KeySequence("bse_mtrl_prps_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class MaterialPropertiesDO extends BaseDO { + + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 属性编码 + */ + @TableField("CD") + private String code; + /** + * 属性名称 + */ + @TableField("NAME") + private String name; + /** + * 计量单位量ID + */ + @TableField("UNT_QTY_ID") + private Long unitQuantityId; + /** + * 业务字典数据值 + */ + @TableField("DIC_DAT_VAL") + private String dictionaryDataValue; + /** + * 数据类型 + */ + @TableField("DAT_TP") + private String dataType; + /** + * 备注 + */ + @TableField("RMK") + private String remark; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/processinginfomation/ProcessingInfomationDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/processinginfomation/ProcessingInfomationDO.java new file mode 100644 index 0000000..45c196a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/processinginfomation/ProcessingInfomationDO.java @@ -0,0 +1,76 @@ +package com.zt.plat.module.base.dal.dataobject.processinginfomation; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +/** +* 工艺信息 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_proc_inf") +@KeySequence("bse_proc_inf_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ProcessingInfomationDO extends BaseDO { + + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 父级ID + */ + @TableField("PRN_ID") + private Long parentId; + /** + * 工艺编码-唯一业务键 + */ + @TableField("CD") + private String code; + /** + * 工艺名称 + */ + @TableField("NAME") + private String name; + /** + * 工艺类型值 + */ + @TableField("TP_VAL") + private Long typeValue; + /** + * 状态值-工艺状态 + */ + @TableField("STS_VAL") + private String statusValue; + /** + * 工艺描述 + */ + @TableField("DSP") + private String description; + /** + * 部门ID + */ + @TableField("DEPT_ID") + private Long deptId; + /** + * 生效日期 + */ + @TableField("EFCT_DT") + private LocalDateTime effectiveDate; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/processinginfomationoperation/ProcessingInfomationOperationDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/processinginfomationoperation/ProcessingInfomationOperationDO.java new file mode 100644 index 0000000..1710df1 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/processinginfomationoperation/ProcessingInfomationOperationDO.java @@ -0,0 +1,60 @@ +package com.zt.plat.module.base.dal.dataobject.processinginfomationoperation; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +/** +* 工艺工序 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_proc_inf_optn") +@KeySequence("bse_proc_inf_optn_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ProcessingInfomationOperationDO extends BaseDO { + + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 前序工序ID + */ + @TableField("PRE_OPTN_ID") + private Long previousOperationId; + /** + * 后续工序ID + */ + @TableField("NXT_OPTN_ID") + private Long nextOperationId; + /** + * 工艺ID + */ + @TableField("PROC_ID") + private Long processingId; + /** + * 是否关键工序 + */ + @TableField("IS_KY") + private Integer isKey; + /** + * 备注 + */ + @TableField("RMK") + private String remark; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/processingoperation/ProcessingOperationDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/processingoperation/ProcessingOperationDO.java new file mode 100644 index 0000000..be78b17 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/processingoperation/ProcessingOperationDO.java @@ -0,0 +1,60 @@ +package com.zt.plat.module.base.dal.dataobject.processingoperation; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +/** +* 工序 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_proc_optn") +@KeySequence("bse_proc_optn_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ProcessingOperationDO extends BaseDO { + + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工序编码 + */ + @TableField("CD") + private String code; + /** + * 工序名称 + */ + @TableField("NAME") + private String name; + /** + * 排序号 + */ + @TableField("SRT") + private Long sort; + /** + * 类型值-工序类型 + */ + @TableField("TP_VAL") + private String typeValue; + /** + * 备注 + */ + @TableField("RMK") + private String remark; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/processingoperationmaterial/ProcessingOperationMaterialDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/processingoperationmaterial/ProcessingOperationMaterialDO.java new file mode 100644 index 0000000..e1447cd --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/processingoperationmaterial/ProcessingOperationMaterialDO.java @@ -0,0 +1,58 @@ +package com.zt.plat.module.base.dal.dataobject.processingoperationmaterial; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +/** +* 工艺工序物料 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_proc_optn_mtrl") +@KeySequence("bse_proc_optn_mtrl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ProcessingOperationMaterialDO extends BaseDO { + + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工艺工序ID + */ + private Long processingOperationId; + /** + * 物料ID + */ + private Long materialId; + /** + * 类型值-物料类型(产出/投入) + */ + @TableField("TP_VAL") + private String typeValue; + /** + * 备注 + */ + @TableField("RMK") + private String remark; + /** + * 组织机构 + */ + @TableField("DEPT_IDS") + private String departmentIds; + +} \ No newline at end of file diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dataobject/QuantityUnitRelation/QuantityUnitRelationDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/quantityUnitRelation/QuantityUnitRelationDO.java similarity index 93% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dataobject/QuantityUnitRelation/QuantityUnitRelationDO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/quantityUnitRelation/QuantityUnitRelationDO.java index b8cf877..c4c6a1a 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dataobject/QuantityUnitRelation/QuantityUnitRelationDO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/quantityUnitRelation/QuantityUnitRelationDO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.dal.dataobject.QuantityUnitRelation; +package com.zt.plat.module.base.dal.dataobject.quantityUnitRelation; import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; import lombok.*; diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dataobject/UnitConversion/UnitConversionDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/unitConversion/UnitConversionDO.java similarity index 87% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dataobject/UnitConversion/UnitConversionDO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/unitConversion/UnitConversionDO.java index 05431d2..520d80b 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dataobject/UnitConversion/UnitConversionDO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/unitConversion/UnitConversionDO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.dal.dataobject.UnitConversion; +package com.zt.plat.module.base.dal.dataobject.unitConversion; import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; import lombok.*; @@ -33,6 +33,11 @@ public class UnitConversionDO extends BaseDO { @TableId(type = IdType.ASSIGN_ID) private Long id; /** + * 计量单位量ID(量纲ID) + */ + @TableField("UNT_QTY_ID") + private Long untQtyId; + /** * 源单位ID */ @TableField("SRC_UNT_ID") diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dataobject/unitQuantity/UnitQuantityDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/unitQuantity/UnitQuantityDO.java similarity index 93% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dataobject/unitQuantity/UnitQuantityDO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/unitQuantity/UnitQuantityDO.java index a2cd8e2..a1f4dff 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dataobject/unitQuantity/UnitQuantityDO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/unitQuantity/UnitQuantityDO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.dal.dataobject.UnitQuantity; +package com.zt.plat.module.base.dal.dataobject.unitQuantity; import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; import lombok.*; diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dataobject/untinfo/UntInfoDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/untInfo/UntInfoDO.java similarity index 93% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dataobject/untinfo/UntInfoDO.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/untInfo/UntInfoDO.java index 1474f19..5d42a2a 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/dal/dataobject/untinfo/UntInfoDO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/untInfo/UntInfoDO.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.dal.dataobject.UntInfo; +package com.zt.plat.module.base.dal.dataobject.untInfo; import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; import lombok.*; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/AccountMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/AccountMapper.java index ec0d30b..fa89ea4 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/AccountMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/AccountMapper.java @@ -25,8 +25,8 @@ public interface AccountMapper extends BaseMapperX { .likeIfPresent(AccountDO::getAddress, reqVO.getAddress()) .likeIfPresent(AccountDO::getPhone, reqVO.getPhone()) .eqIfPresent(AccountDO::getBankAccount, reqVO.getBankAccount()) - .eqIfPresent(AccountDO::getCustomerName, reqVO.getCustomerName()) - .eqIfPresent(AccountDO::getCustomerNumber, reqVO.getCustomerNumber()) + .likeIfPresent(AccountDO::getCustomerName, reqVO.getCustomerName()) + .likeIfPresent(AccountDO::getCustomerNumber, reqVO.getCustomerNumber()) .eqIfPresent(AccountDO::getIsEnable, reqVO.getIsEnable()) .eqIfPresent(AccountDO::getAccountNumber, reqVO.getAccountNumber()) .eqIfPresent(AccountDO::getTaxNumber, reqVO.getTaxNumber()) diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/ContactMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/ContactMapper.java index a1e4dca..9f6557a 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/ContactMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/ContactMapper.java @@ -18,9 +18,9 @@ public interface ContactMapper extends BaseMapperX { default PageResult selectPage(ContactPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(ContactDO::getType, reqVO.getType()) - .eqIfPresent(ContactDO::getContact, reqVO.getContact()) - .eqIfPresent(ContactDO::getTel, reqVO.getTel()) - .eqIfPresent(ContactDO::getCustomerName, reqVO.getCustomerName()) + .likeIfPresent(ContactDO::getContact, reqVO.getContact()) + .likeIfPresent(ContactDO::getTel, reqVO.getTel()) + .likeIfPresent(ContactDO::getCustomerName, reqVO.getCustomerName()) .eqIfPresent(ContactDO::getCustomerNumber, reqVO.getCustomerNumber()) .eqIfPresent(ContactDO::getIsEnable, reqVO.getIsEnable()) .eqIfPresent(ContactDO::getEmail, reqVO.getEmail()) diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/ElementMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/ElementMapper.java index 8e91114..83b90bb 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/ElementMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/ElementMapper.java @@ -20,10 +20,10 @@ public interface ElementMapper extends BaseMapperX { default PageResult selectPage(ElementPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(ElementDO::getAbbreviation, reqVO.getAbbreviation()) + .likeIfPresent(ElementDO::getAbbreviation, reqVO.getAbbreviation()) .likeIfPresent(ElementDO::getName, reqVO.getName()) .eqIfPresent(ElementDO::getDecimalValue, reqVO.getDecimalValue()) - .eqIfPresent(ElementDO::getCoding, reqVO.getCoding()) + .likeIfPresent(ElementDO::getCoding, reqVO.getCoding()) .eqIfPresent(ElementDO::getGradeUnit, reqVO.getGradeUnit()) .betweenIfPresent(ElementDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(ElementDO::getId)); diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialDestroyMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialDestroyMapper.java index 3ae3887..121a4be 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialDestroyMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialDestroyMapper.java @@ -17,12 +17,14 @@ public interface MaterialDestroyMapper extends BaseMapperX { default PageResult selectPage(MaterialDestroyPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(MaterialDestroyDO::getUpNumber, reqVO.getUpNumber()) - .eqIfPresent(MaterialDestroyDO::getDownNumber, reqVO.getDownNumber()) + .likeIfPresent(MaterialDestroyDO::getUpNumber, reqVO.getUpNumber()) + .likeIfPresent(MaterialDestroyDO::getUpName, reqVO.getUpName()) + .likeIfPresent(MaterialDestroyDO::getDownNumber, reqVO.getDownNumber()) + .likeIfPresent(MaterialDestroyDO::getDownName, reqVO.getDownName()) .eqIfPresent(MaterialDestroyDO::getRatio, reqVO.getRatio()) .eqIfPresent(MaterialDestroyDO::getOperation, reqVO.getOperation()) .betweenIfPresent(MaterialDestroyDO::getCreateTime, reqVO.getCreateTime()) - .eqIfPresent(MaterialDestroyDO::getSupplierNumber, reqVO.getSupplierNumber()) + .likeIfPresent(MaterialDestroyDO::getSupplierNumber, reqVO.getSupplierNumber()) .likeIfPresent(MaterialDestroyDO::getSupplierName, reqVO.getSupplierName()) .eqIfPresent(MaterialDestroyDO::getIsEnable, reqVO.getIsEnable()) .orderByDesc(MaterialDestroyDO::getId)); diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialInfomationMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialInfomationMapper.java index 2e353cb..e0c41fd 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialInfomationMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialInfomationMapper.java @@ -7,6 +7,8 @@ import com.zt.plat.module.base.controller.admin.base.vo.MaterialInfomationPageRe import com.zt.plat.module.base.dal.dataobject.base.MaterialInfomationDO; import org.apache.ibatis.annotations.Mapper; +import java.util.Collection; + /** * 物料信息 Mapper * @@ -16,11 +18,16 @@ import org.apache.ibatis.annotations.Mapper; public interface MaterialInfomationMapper extends BaseMapperX { default PageResult selectPage(MaterialInfomationPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() + return selectPage(reqVO, (Collection) null); + } + + default PageResult selectPage(MaterialInfomationPageReqVO reqVO, Collection infomationIds) { + return BaseMapperX.super.selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(MaterialInfomationDO::getCode, reqVO.getCode()) .likeIfPresent(MaterialInfomationDO::getName, reqVO.getName()) .eqIfPresent(MaterialInfomationDO::getRemark, reqVO.getRemark()) .betweenIfPresent(MaterialInfomationDO::getCreateTime, reqVO.getCreateTime()) + .inIfPresent(MaterialInfomationDO::getId, infomationIds) .orderByDesc(MaterialInfomationDO::getId)); } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java index f3ff895..af4a139 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java @@ -20,7 +20,7 @@ public interface MaterialOtherMapper extends BaseMapperX { default PageResult selectPage(MaterialOtherPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(MaterialOtherDO::getMaterialNumber, reqVO.getMaterialNumber()) + .likeIfPresent(MaterialOtherDO::getMaterialNumber, reqVO.getMaterialNumber()) .likeIfPresent(MaterialOtherDO::getMaterialName, reqVO.getMaterialName()) .eqIfPresent(MaterialOtherDO::getErpMaterialNumber, reqVO.getErpMaterialNumber()) .likeIfPresent(MaterialOtherDO::getErpMaterialName, reqVO.getErpMaterialName()) diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialInfomationServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialInfomationServiceImpl.java index eec1acc..2333fc2 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialInfomationServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialInfomationServiceImpl.java @@ -1,21 +1,29 @@ package com.zt.plat.module.base.service.base; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.module.base.controller.admin.base.vo.MaterialInfomationPageReqVO; import com.zt.plat.module.base.controller.admin.base.vo.MaterialInfomationRespVO; import com.zt.plat.module.base.controller.admin.base.vo.MaterialInfomationSaveReqVO; +import com.zt.plat.module.base.dal.dao.materialhasclasses.MaterialHasClassesMapper; import com.zt.plat.module.base.dal.dataobject.base.MaterialInfomationDO; +import com.zt.plat.module.base.dal.dataobject.materialhasclasses.MaterialHasClassesDO; import com.zt.plat.module.base.dal.mysql.base.MaterialInfomationMapper; import com.zt.plat.module.erp.api.ErpExternalApi; import com.zt.plat.module.erp.api.dto.ErpProductiveVersionReqDTO; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.module.base.enums.ErrorCodeConstants.MATERIAL_INFOMATION_NOT_EXISTS; @@ -35,23 +43,46 @@ public class MaterialInfomationServiceImpl implements MaterialInfomationService @Resource private ErpExternalApi erpExternalApi; + @Resource + private MaterialHasClassesMapper materialHasClassesMapper; @Override + @Transactional(rollbackFor = Exception.class) public MaterialInfomationRespVO createMaterialInfomation(MaterialInfomationSaveReqVO createReqVO) { // 插入 MaterialInfomationDO materialInfomation = BeanUtils.toBean(createReqVO, MaterialInfomationDO.class); materialInfomationMapper.insert(materialInfomation); + // 维护分类关联 + if (createReqVO.getClassesId() != null) { + MaterialHasClassesDO relation = MaterialHasClassesDO.builder() + .classesId(createReqVO.getClassesId()) + .infomationId(materialInfomation.getId()) + .build(); + materialHasClassesMapper.insert(relation); + materialInfomation.setClassesId(createReqVO.getClassesId()); + } // 返回 return BeanUtils.toBean(materialInfomation, MaterialInfomationRespVO.class); } @Override + @Transactional(rollbackFor = Exception.class) public void updateMaterialInfomation(MaterialInfomationSaveReqVO updateReqVO) { // 校验存在 validateMaterialInfomationExists(updateReqVO.getId()); // 更新 MaterialInfomationDO updateObj = BeanUtils.toBean(updateReqVO, MaterialInfomationDO.class); materialInfomationMapper.updateById(updateObj); + // 更新分类关联 + materialHasClassesMapper.delete(new LambdaUpdateWrapper() + .eq(MaterialHasClassesDO::getInfomationId, updateReqVO.getId())); + if (updateReqVO.getClassesId() != null) { + MaterialHasClassesDO relation = MaterialHasClassesDO.builder() + .classesId(updateReqVO.getClassesId()) + .infomationId(updateReqVO.getId()) + .build(); + materialHasClassesMapper.insert(relation); + } } @Override @@ -60,6 +91,8 @@ public class MaterialInfomationServiceImpl implements MaterialInfomationService validateMaterialInfomationExists(id); // 删除 materialInfomationMapper.deleteById(id); + materialHasClassesMapper.delete(new LambdaUpdateWrapper() + .eq(MaterialHasClassesDO::getInfomationId, id)); } @Override @@ -85,12 +118,52 @@ public class MaterialInfomationServiceImpl implements MaterialInfomationService @Override public MaterialInfomationDO getMaterialInfomation(Long id) { - return materialInfomationMapper.selectById(id); + MaterialInfomationDO info = materialInfomationMapper.selectById(id); + if (info == null) { + return null; + } + MaterialHasClassesDO relation = materialHasClassesMapper.selectFirstOne(MaterialHasClassesDO::getInfomationId, id); + if (relation != null) { + info.setClassesId(relation.getClassesId()); + } + return info; } @Override public PageResult getMaterialInfomationPage(MaterialInfomationPageReqVO pageReqVO) { - return materialInfomationMapper.selectPage(pageReqVO); + List infomationIds = null; + List relationList = Collections.emptyList(); + if (pageReqVO.getClassesId() != null) { + relationList = materialHasClassesMapper.selectList(MaterialHasClassesDO::getClassesId, pageReqVO.getClassesId()); + if (CollUtil.isEmpty(relationList)) { + return PageResult.empty(); + } + infomationIds = relationList.stream() + .map(MaterialHasClassesDO::getInfomationId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + } + + PageResult pageResult = materialInfomationMapper.selectPage(pageReqVO, infomationIds); + if (CollUtil.isEmpty(pageResult.getList())) { + return pageResult; + } + + List currentInfoIds = pageResult.getList().stream() + .map(MaterialInfomationDO::getId) + .collect(Collectors.toList()); + + if (pageReqVO.getClassesId() == null) { + relationList = materialHasClassesMapper.selectList(MaterialHasClassesDO::getInfomationId, currentInfoIds); + } + + Map infoClassMap = relationList.stream() + .filter(item -> item.getInfomationId() != null) + .collect(Collectors.toMap(MaterialHasClassesDO::getInfomationId, MaterialHasClassesDO::getClassesId, (existing, replacement) -> existing)); + + pageResult.getList().forEach(item -> item.setClassesId(infoClassMap.get(item.getId()))); + return pageResult; } @Override diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/departmentmaterial/DepartmentMaterialService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/departmentmaterial/DepartmentMaterialService.java new file mode 100644 index 0000000..0641958 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/departmentmaterial/DepartmentMaterialService.java @@ -0,0 +1,62 @@ +package com.zt.plat.module.base.service.departmentmaterial; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.departmentmaterial.vo.*; +import com.zt.plat.module.base.dal.dataobject.departmentmaterial.DepartmentMaterialDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; + +/** + * 组织架构物料 Service 接口 + * + * @author 后台管理-1 + */ +public interface DepartmentMaterialService { + + /** + * 创建组织架构物料 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + DepartmentMaterialRespVO createDepartmentMaterial(@Valid DepartmentMaterialSaveReqVO createReqVO); + + /** + * 更新组织架构物料 + * + * @param updateReqVO 更新信息 + */ + void updateDepartmentMaterial(@Valid DepartmentMaterialSaveReqVO updateReqVO); + + /** + * 删除组织架构物料 + * + * @param id 编号 + */ + void deleteDepartmentMaterial(Long id); + + /** + * 批量删除组织架构物料 + * + * @param ids 编号 + */ + void deleteDepartmentMaterialListByIds(List ids); + + /** + * 获得组织架构物料 + * + * @param id 编号 + * @return 组织架构物料 + */ + DepartmentMaterialDO getDepartmentMaterial(Long id); + + /** + * 获得组织架构物料分页 + * + * @param pageReqVO 分页查询 + * @return 组织架构物料分页 + */ + PageResult getDepartmentMaterialPage(DepartmentMaterialPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/departmentmaterial/DepartmentMaterialServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/departmentmaterial/DepartmentMaterialServiceImpl.java new file mode 100644 index 0000000..72c3f05 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/departmentmaterial/DepartmentMaterialServiceImpl.java @@ -0,0 +1,246 @@ +package com.zt.plat.module.base.service.departmentmaterial; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.util.collection.CollectionUtils; +import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.base.controller.admin.departmentmaterial.vo.*; +import com.zt.plat.module.base.dal.dao.departmentmaterial.DepartmentMaterialMapper; +import com.zt.plat.module.base.dal.dao.materialclasses.MaterialClassesMapper; +import com.zt.plat.module.base.dal.dataobject.base.MaterialInfomationDO; +import com.zt.plat.module.base.dal.dataobject.departmentmaterial.DepartmentMaterialDO; +import com.zt.plat.module.base.dal.dataobject.materialclasses.MaterialClassesDO; +import com.zt.plat.module.base.dal.mysql.base.MaterialInfomationMapper; +import com.zt.plat.module.system.api.dept.DeptApi; +import com.zt.plat.module.system.api.dept.dto.DeptRespDTO; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 组织架构物料 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class DepartmentMaterialServiceImpl implements DepartmentMaterialService { + + @Resource + private DepartmentMaterialMapper departmentMaterialMapper; + + @Resource + private MaterialInfomationMapper materialInfomationMapper; + + @Resource + private MaterialClassesMapper materialClassesMapper; + + @Resource + private DeptApi deptApi; + + @Override + public DepartmentMaterialRespVO createDepartmentMaterial(DepartmentMaterialSaveReqVO createReqVO) { + // 插入 + DepartmentMaterialDO departmentMaterial = BeanUtils.toBean(createReqVO, DepartmentMaterialDO.class); + departmentMaterialMapper.insert(departmentMaterial); + // 返回 + return BeanUtils.toBean(departmentMaterial, DepartmentMaterialRespVO.class); + } + + @Override + public void updateDepartmentMaterial(DepartmentMaterialSaveReqVO updateReqVO) { + // 校验存在 + validateDepartmentMaterialExists(updateReqVO.getId()); + // 更新 + DepartmentMaterialDO updateObj = BeanUtils.toBean(updateReqVO, DepartmentMaterialDO.class); + departmentMaterialMapper.updateById(updateObj); + } + + @Override + public void deleteDepartmentMaterial(Long id) { + // 校验存在 + validateDepartmentMaterialExists(id); + // 删除 + departmentMaterialMapper.deleteById(id); + } + + @Override + public void deleteDepartmentMaterialListByIds(List ids) { + // 校验存在 + validateDepartmentMaterialExists(ids); + // 删除 + departmentMaterialMapper.deleteByIds(ids); + } + + private void validateDepartmentMaterialExists(List ids) { + List list = departmentMaterialMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(DEPARTMENT_MATERIAL_NOT_EXISTS); + } + } + + private void validateDepartmentMaterialExists(Long id) { + if (departmentMaterialMapper.selectById(id) == null) { + throw exception(DEPARTMENT_MATERIAL_NOT_EXISTS); + } + } + + @Override + public DepartmentMaterialDO getDepartmentMaterial(Long id) { + return departmentMaterialMapper.selectById(id); + } + + @Override + public PageResult getDepartmentMaterialPage(DepartmentMaterialPageReqVO pageReqVO) { + // 预处理物料名称/编码查询条件 + List matchedInfoIds = null; + if (StrUtil.isNotBlank(pageReqVO.getMaterialName()) || StrUtil.isNotBlank(pageReqVO.getMaterialNumber())) { + LambdaQueryWrapperX infoWrapper = new LambdaQueryWrapperX<>(); + infoWrapper.likeIfPresent(MaterialInfomationDO::getName, pageReqVO.getMaterialName()) + .likeIfPresent(MaterialInfomationDO::getCode, pageReqVO.getMaterialNumber()); + List infoCandidates = materialInfomationMapper.selectList(infoWrapper); + if (CollUtil.isEmpty(infoCandidates)) { + return PageResult.empty(); + } + matchedInfoIds = infoCandidates.stream().map(MaterialInfomationDO::getId).toList(); + pageReqVO.setInfomationIds(matchedInfoIds); + } + + PageResult pageResult = departmentMaterialMapper.selectPage(pageReqVO); + // 重置,避免后续使用该入参出现意外的 in 条件 + pageReqVO.setInfomationIds(null); + + if (CollUtil.isEmpty(pageResult.getList())) { + return PageResult.empty(pageResult.getTotal()); + } + + // 关联数据准备 + Set infoIds = pageResult.getList().stream() + .map(DepartmentMaterialDO::getInfomationId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + Map infoMap = infoIds.isEmpty() + ? Collections.emptyMap() + : materialInfomationMapper.selectBatchIds(infoIds).stream() + .filter(Objects::nonNull) + .collect(Collectors.toMap(MaterialInfomationDO::getId, Function.identity())); + + Set classIds = new HashSet<>(); + pageResult.getList().forEach(item -> { + if (item.getClassesId() != null) { + classIds.add(item.getClassesId()); + } + MaterialInfomationDO info = infoMap.get(item.getInfomationId()); + if (info != null && info.getClassesId() != null) { + classIds.add(info.getClassesId()); + } + }); + + Map classCache = loadClassHierarchy(classIds); + + Set deptIds = pageResult.getList().stream() + .map(DepartmentMaterialDO::getDeptId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + Map deptMap = Collections.emptyMap(); + if (!deptIds.isEmpty()) { + try { + deptMap = CollectionUtils.convertMap(deptApi.getDeptList(deptIds).getCheckedData(), DeptRespDTO::getId); + } catch (Exception ignore) { + deptMap = Collections.emptyMap(); + } + } + + List respList = new ArrayList<>(pageResult.getList().size()); + for (DepartmentMaterialDO item : pageResult.getList()) { + DepartmentMaterialRespVO respVO = BeanUtils.toBean(item, DepartmentMaterialRespVO.class); + + MaterialInfomationDO info = infoMap.get(item.getInfomationId()); + if (info != null) { + respVO.setMaterialNumber(info.getCode()); + respVO.setMaterialName(info.getName()); + } + + Long targetClassId = item.getClassesId(); + if (targetClassId == null && info != null) { + targetClassId = info.getClassesId(); + } + if (targetClassId != null) { + List classPath = buildClassPath(targetClassId, classCache); + if (!classPath.isEmpty()) { + respVO.setCategoryLargeName(classPath.get(0)); + if (classPath.size() > 1) { + respVO.setCategoryMediumName(classPath.get(1)); + } + if (classPath.size() > 2) { + respVO.setCategorySmallName(classPath.get(classPath.size() - 1)); + } + respVO.setCategoryPath(String.join("/", classPath)); + } + } + + DeptRespDTO deptRespDTO = deptMap.get(item.getDeptId()); + if (deptRespDTO != null) { + respVO.setDeptName(deptRespDTO.getName()); + } + + respVO.setStatusLabel(StrUtil.isNotBlank(respVO.getStatusLabel()) ? respVO.getStatusLabel() : "未配置"); + + respVO.setDictionaryDataLabel(respVO.getDictionaryDataValue()); + respList.add(respVO); + } + + return new PageResult<>(respList, pageResult.getTotal()); + } + + private Map loadClassHierarchy(Set initialIds) { + if (CollUtil.isEmpty(initialIds)) { + return Collections.emptyMap(); + } + Map cache = new HashMap<>(); + Set pending = new HashSet<>(initialIds); + while (!pending.isEmpty()) { + List fetched = materialClassesMapper.selectBatchIds(pending); + pending = new HashSet<>(); + for (MaterialClassesDO cls : fetched) { + if (cls == null || cache.containsKey(cls.getId())) { + continue; + } + cache.put(cls.getId(), cls); + Long parentId = cls.getParentId(); + if (parentId != null && parentId > 0 && !cache.containsKey(parentId)) { + pending.add(parentId); + } + } + } + return cache; + } + + private List buildClassPath(Long classId, Map cache) { + List path = new ArrayList<>(); + MaterialClassesDO current = cache.get(classId); + int guard = 0; + while (current != null && guard++ < 10) { + path.add(current.getName()); + Long parentId = current.getParentId(); + if (parentId == null || parentId == 0) { + break; + } + current = cache.get(parentId); + } + Collections.reverse(path); + return path; + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateCategoryService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateCategoryService.java new file mode 100644 index 0000000..6b1d7eb --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateCategoryService.java @@ -0,0 +1,78 @@ +package com.zt.plat.module.base.service.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateCategoryPageReqVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateCategoryRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateCategorySaveReqVO; + +import jakarta.validation.Valid; +import java.util.List; + +/** + * 模板分类 Service 接口 + * + * @author 系统生成 + */ +public interface DocTemplateCategoryService { + + /** + * 创建模板分类 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createTemplateCategory(@Valid DocTemplateCategorySaveReqVO createReqVO); + + /** + * 更新模板分类 + * + * @param updateReqVO 更新信息 + */ + void updateTemplateCategory(@Valid DocTemplateCategorySaveReqVO updateReqVO); + + /** + * 删除模板分类 + * + * @param id 编号 + */ + void deleteTemplateCategory(Long id); + + /** + * 获得模板分类 + * + * @param id 编号 + * @return 模板分类 + */ + DocTemplateCategoryRespVO getTemplateCategory(Long id); + + /** + * 获得模板分类分页 + * + * @param pageReqVO 分页查询 + * @return 模板分类分页 + */ + PageResult getTemplateCategoryPage(DocTemplateCategoryPageReqVO pageReqVO); + + /** + * 获得模板分类列表 + * + * @return 模板分类列表 + */ + List getTemplateCategoryList(); + + /** + * 获得模板分类树形结构 + * + * @return 模板分类树 + */ + List buildTree(); + + /** + * 获得分类完整路径(包含所有父级) + * + * @param categoryId 分类ID + * @return 分类路径,用"/"分隔,如"合同管理/销售合同" + */ + String getCategoryFullPath(Long categoryId); + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateCategoryServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateCategoryServiceImpl.java new file mode 100644 index 0000000..326d8a2 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateCategoryServiceImpl.java @@ -0,0 +1,158 @@ +package com.zt.plat.module.base.service.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateCategoryPageReqVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateCategoryRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateCategorySaveReqVO; +import com.zt.plat.module.base.convert.doctemplate.DocTemplateCategoryConvert; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateCategoryDO; +import com.zt.plat.module.base.dal.dao.doctemplate.DocTemplateCategoryMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import jakarta.annotation.Resource; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.TEMPLATE_CATEGORY_NOT_EXISTS; + +/** + * 模板分类 Service 实现类 + * + * @author 系统生成 + */ +@Service +@Validated +public class DocTemplateCategoryServiceImpl implements DocTemplateCategoryService { + + @Resource + private DocTemplateCategoryMapper templateCategoryMapper; + + @Override + public Long createTemplateCategory(DocTemplateCategorySaveReqVO createReqVO) { + // 插入 + DocTemplateCategoryDO templateCategory = DocTemplateCategoryConvert.INSTANCE.convert(createReqVO); + // 设置默认值 + if (templateCategory.getSort() == null) { + templateCategory.setSort(0); + } + templateCategoryMapper.insert(templateCategory); + // 返回 + return templateCategory.getId(); + } + + @Override + public void updateTemplateCategory(DocTemplateCategorySaveReqVO updateReqVO) { + // 校验存在 + validateTemplateCategoryExists(updateReqVO.getId()); + // 更新 + DocTemplateCategoryDO updateObj = DocTemplateCategoryConvert.INSTANCE.convert(updateReqVO); + templateCategoryMapper.updateById(updateObj); + } + + @Override + public void deleteTemplateCategory(Long id) { + // 校验存在 + validateTemplateCategoryExists(id); + // 删除 + templateCategoryMapper.deleteById(id); + } + + private void validateTemplateCategoryExists(Long id) { + if (templateCategoryMapper.selectById(id) == null) { + throw exception(TEMPLATE_CATEGORY_NOT_EXISTS); + } + } + + @Override + public DocTemplateCategoryRespVO getTemplateCategory(Long id) { + DocTemplateCategoryDO templateCategory = templateCategoryMapper.selectById(id); + return DocTemplateCategoryConvert.INSTANCE.convert(templateCategory); + } + + @Override + public PageResult getTemplateCategoryPage(DocTemplateCategoryPageReqVO pageReqVO) { + PageResult pageResult = templateCategoryMapper.selectPage(pageReqVO); + return DocTemplateCategoryConvert.INSTANCE.convertPage(pageResult); + } + + @Override + public List getTemplateCategoryList() { + List list = templateCategoryMapper.selectList(); + return DocTemplateCategoryConvert.INSTANCE.convertList(list); + } + + @Override + public List buildTree() { + // 1. 查询所有分类数据 + List allCategories = templateCategoryMapper.selectList(); + + // 2. 转换为 VO + List categoryVOs = DocTemplateCategoryConvert.INSTANCE.convertList(allCategories); + + // 3. 构建树形结构 + return buildTreeStructure(categoryVOs); + } + + /** + * 构建树形结构 + */ + private List buildTreeStructure(List categories) { + // 1. 按 parentId 分组 + Map> groupByParentId = categories.stream() + .collect(Collectors.groupingBy(node -> + node.getParentId() != null ? node.getParentId().toString() : "null")); + + // 2. 设置子节点并排序 + categories.forEach(node -> { + List children = groupByParentId.get(node.getId().toString()); + if (children != null && !children.isEmpty()) { + // 按排序号升序排列 + children.sort(Comparator.comparing(DocTemplateCategoryRespVO::getSort, + Comparator.nullsLast(Comparator.naturalOrder()))); + node.setChildren(children); + } + }); + + // 3. 返回根节点(parentId 为 null 的节点) + List rootNodes = groupByParentId.get("null"); + if (rootNodes != null) { + // 根节点也要排序 + rootNodes.sort(Comparator.comparing(DocTemplateCategoryRespVO::getSort, + Comparator.nullsLast(Comparator.naturalOrder()))); + return rootNodes; + } + return List.of(); + } + + @Override + public String getCategoryFullPath(Long categoryId) { + if (categoryId == null) { + return ""; + } + + // 构建分类路径 + List pathNames = new ArrayList<>(); + Long currentId = categoryId; + + // 递归查找父级分类 + while (currentId != null) { + DocTemplateCategoryDO category = templateCategoryMapper.selectById(currentId); + if (category == null) { + break; + } + // 将当前分类名称添加到列表开头 + pathNames.add(0, category.getCategoryName()); + // 继续查找父级 + currentId = category.getParentId(); + } + + // 用"/"拼接分类路径 + return String.join("/", pathNames); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateInstanceService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateInstanceService.java new file mode 100644 index 0000000..4c9acf2 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateInstanceService.java @@ -0,0 +1,63 @@ +package com.zt.plat.module.base.service.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateInstancePageReqVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateInstanceRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateInstanceSaveReqVO; + +import jakarta.validation.Valid; +import java.util.List; + +/** + * 模板实例 Service 接口 + * + * @author 系统生成 + */ +public interface DocTemplateInstanceService { + + /** + * 创建模板实例 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createTemplateInstance(@Valid DocTemplateInstanceSaveReqVO createReqVO); + + /** + * 更新模板实例 + * + * @param updateReqVO 更新信息 + */ + void updateTemplateInstance(@Valid DocTemplateInstanceSaveReqVO updateReqVO); + + /** + * 删除模板实例 + * + * @param id 编号 + */ + void deleteTemplateInstance(Long id); + + /** + * 获得模板实例 + * + * @param id 编号 + * @return 模板实例 + */ + DocTemplateInstanceRespVO getTemplateInstance(Long id); + + /** + * 获得模板实例分页 + * + * @param pageReqVO 分页查询 + * @return 模板实例分页 + */ + PageResult getTemplateInstancePage(DocTemplateInstancePageReqVO pageReqVO); + + /** + * 获得模板实例列表 + * + * @return 模板实例列表 + */ + List getTemplateInstanceList(); + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateInstanceServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateInstanceServiceImpl.java new file mode 100644 index 0000000..17100c4 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateInstanceServiceImpl.java @@ -0,0 +1,136 @@ +package com.zt.plat.module.base.service.doctemplate; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateInstancePageReqVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateInstanceRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateInstanceSaveReqVO; +import com.zt.plat.module.base.convert.doctemplate.DocTemplateInstanceConvert; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateInstanceDO; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateDO; +import com.zt.plat.module.base.dal.dao.doctemplate.DocTemplateInstanceMapper; +import com.zt.plat.module.base.dal.dao.doctemplate.DocTemplateMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import jakarta.annotation.Resource; +import java.util.List; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 模板实例 Service 实现类 + * + * @author 系统生成 + */ +@Service +@Validated +public class DocTemplateInstanceServiceImpl implements DocTemplateInstanceService { + + @Resource + private DocTemplateInstanceMapper docTemplateInstanceMapper; + + @Resource + private DocTemplateMapper docTemplateMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createTemplateInstance(DocTemplateInstanceSaveReqVO createReqVO) { + // 校验模板存在 + DocTemplateDO template = docTemplateMapper.selectById(createReqVO.getTemplateId()); + if (template == null) { + throw exception(TEMPLATE_NOT_EXISTS); + } + // 校验实例编码唯一性 + validateInstanceCodeUnique(null, createReqVO.getInstanceCode()); + + // 插入实例 + DocTemplateInstanceDO templateInstance = DocTemplateInstanceConvert.INSTANCE.convert(createReqVO); + docTemplateInstanceMapper.insert(templateInstance); + + // 更新模板使用次数 + incrementTemplateUseCount(createReqVO.getTemplateId()); + + // 返回 + return templateInstance.getId(); + } + + @Override + public void updateTemplateInstance(DocTemplateInstanceSaveReqVO updateReqVO) { + // 校验存在 + validateTemplateInstanceExists(updateReqVO.getId()); + // 校验实例编码唯一性 + validateInstanceCodeUnique(updateReqVO.getId(), updateReqVO.getInstanceCode()); + // 更新 + DocTemplateInstanceDO updateObj = DocTemplateInstanceConvert.INSTANCE.convert(updateReqVO); + docTemplateInstanceMapper.updateById(updateObj); + } + + @Override + public void deleteTemplateInstance(Long id) { + // 校验存在 + validateTemplateInstanceExists(id); + // 删除 + docTemplateInstanceMapper.deleteById(id); + } + + private void validateTemplateInstanceExists(Long id) { + if (docTemplateInstanceMapper.selectById(id) == null) { + throw exception(TEMPLATE_INSTANCE_NOT_EXISTS); + } + } + + /** + * 校验实例编码唯一性 + */ + private void validateInstanceCodeUnique(Long id, String instanceCode) { + if (StrUtil.isBlank(instanceCode)) { + return; + } + DocTemplateInstanceDO instance = docTemplateInstanceMapper.selectOne(new LambdaQueryWrapper() + .eq(DocTemplateInstanceDO::getInstanceCode, instanceCode)); + if (instance == null) { + return; + } + // 如果是更新操作,排除自己 + if (id != null && id.equals(instance.getId())) { + return; + } + throw exception(TEMPLATE_INSTANCE_CODE_DUPLICATE); + } + + /** + * 增加模板使用次数 + */ + private void incrementTemplateUseCount(Long templateId) { + DocTemplateDO template = docTemplateMapper.selectById(templateId); + if (template != null) { + DocTemplateDO updateObj = new DocTemplateDO(); + updateObj.setId(templateId); + updateObj.setUseCount(template.getUseCount() == null ? 1 : template.getUseCount() + 1); + docTemplateMapper.updateById(updateObj); + } + } + + @Override + public DocTemplateInstanceRespVO getTemplateInstance(Long id) { + DocTemplateInstanceDO templateInstance = docTemplateInstanceMapper.selectById(id); + return DocTemplateInstanceConvert.INSTANCE.convert(templateInstance); + } + + @Override + public PageResult getTemplateInstancePage(DocTemplateInstancePageReqVO pageReqVO) { + PageResult pageResult = docTemplateInstanceMapper.selectPage(pageReqVO); + return DocTemplateInstanceConvert.INSTANCE.convertPage(pageResult); + } + + @Override + public List getTemplateInstanceList() { + List list = docTemplateInstanceMapper.selectList(); + return DocTemplateInstanceConvert.INSTANCE.convertList(list); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateRenderService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateRenderService.java new file mode 100644 index 0000000..277d3e0 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateRenderService.java @@ -0,0 +1,31 @@ +package com.zt.plat.module.base.service.doctemplate; + +import java.util.Map; + +/** + * 文档模板渲染 Service 接口 + * + * @author 系统生成 + */ +public interface DocTemplateRenderService { + + /** + * 渲染模板内容 + * + * @param templateId 模板ID(可选,与instanceId二选一) + * @param instanceId 实例ID(可选,与templateId二选一) + * @param content 直接传入内容(可选,优先级最高) + * @param dataMap 数据Map(必填) + * @return 渲染后的内容 + */ + String render(Long templateId, Long instanceId, String content, Map dataMap); + + /** + * 渲染模板并保存到实例 + * + * @param instanceId 实例ID + * @param dataMap 数据Map + */ + void renderAndSave(Long instanceId, Map dataMap); + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateRenderServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateRenderServiceImpl.java new file mode 100644 index 0000000..18374ae --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateRenderServiceImpl.java @@ -0,0 +1,144 @@ +package com.zt.plat.module.base.service.doctemplate; + +import cn.hutool.core.util.StrUtil; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateDO; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateInstanceDO; +import com.zt.plat.module.base.dal.dao.doctemplate.DocTemplateMapper; +import com.zt.plat.module.base.dal.dao.doctemplate.DocTemplateInstanceMapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.Velocity; +import org.springframework.stereotype.Service; + +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import java.io.StringWriter; +import java.util.Map; +import java.util.Properties; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 文档模板渲染 Service 实现类 + * 使用 Apache Velocity 模板引擎进行渲染 + * + * @author 系统生成 + */ +@Service +@Slf4j +public class DocTemplateRenderServiceImpl implements DocTemplateRenderService { + + @Resource + private DocTemplateMapper templateMapper; + + @Resource + private DocTemplateInstanceMapper instanceMapper; + + /** + * 初始化 Velocity 引擎 + */ + @PostConstruct + public void initVelocity() { + try { + Properties props = new Properties(); + // 设置编码 + props.setProperty("input.encoding", "UTF-8"); + props.setProperty("output.encoding", "UTF-8"); + // 设置资源加载器为字符串 + props.setProperty("resource.loader", "string"); + props.setProperty("string.resource.loader.class", + "org.apache.velocity.runtime.resource.loader.StringResourceLoader"); + // 关闭日志(可选) + props.setProperty("runtime.log.logsystem.class", + "org.apache.velocity.runtime.log.NullLogChute"); + + Velocity.init(props); + log.info("Velocity 模板引擎初始化成功"); + } catch (Exception e) { + log.error("Velocity 模板引擎初始化失败", e); + throw new RuntimeException("Velocity 模板引擎初始化失败", e); + } + } + + @Override + public String render(Long templateId, Long instanceId, String content, Map dataMap) { + // 1. 获取模板内容 + String templateContent = getTemplateContent(templateId, instanceId, content); + + if (StrUtil.isBlank(templateContent)) { + throw exception(TEMPLATE_NOT_EXISTS); + } + + // 2. 创建 Velocity 上下文 + VelocityContext context = new VelocityContext(); + if (dataMap != null && !dataMap.isEmpty()) { + dataMap.forEach(context::put); + } + + // 3. 渲染模板 + try { + StringWriter writer = new StringWriter(); + Velocity.evaluate(context, writer, "DocTemplateRender", templateContent); + String result = writer.toString(); + + log.debug("模板渲染成功,数据量: {}, 内容长度: {}", + dataMap != null ? dataMap.size() : 0, result.length()); + + return result; + } catch (Exception e) { + log.error("模板渲染失败,templateId: {}, instanceId: {}", templateId, instanceId, e); + throw new RuntimeException("模板渲染失败: " + e.getMessage(), e); + } + } + + @Override + public void renderAndSave(Long instanceId, Map dataMap) { + // 1. 校验实例存在 + DocTemplateInstanceDO instance = instanceMapper.selectById(instanceId); + if (instance == null) { + throw exception(TEMPLATE_INSTANCE_NOT_EXISTS); + } + + // 2. 渲染内容 + String renderedContent = render(null, instanceId, null, dataMap); + + // 3. 更新实例的渲染内容 + DocTemplateInstanceDO updateObj = new DocTemplateInstanceDO(); + updateObj.setId(instanceId); + updateObj.setRenderedContent(renderedContent); + instanceMapper.updateById(updateObj); + + log.info("模板实例渲染并保存成功,instanceId: {}", instanceId); + } + + /** + * 获取模板内容 + * 优先级:content > instanceId > templateId + */ + private String getTemplateContent(Long templateId, Long instanceId, String content) { + // 优先使用直接传入的内容 + if (StrUtil.isNotBlank(content)) { + return content; + } + + // 其次使用实例的编辑内容 + if (instanceId != null) { + DocTemplateInstanceDO instance = instanceMapper.selectById(instanceId); + if (instance != null && StrUtil.isNotBlank(instance.getEditedContent())) { + return instance.getEditedContent(); + } + } + + // 最后使用模板内容 + if (templateId != null) { + DocTemplateDO template = templateMapper.selectById(templateId); + if (template != null && StrUtil.isNotBlank(template.getContent())) { + return template.getContent(); + } + } + + return null; + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateService.java new file mode 100644 index 0000000..4bc15f7 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateService.java @@ -0,0 +1,63 @@ +package com.zt.plat.module.base.service.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplatePageReqVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateSaveReqVO; + +import jakarta.validation.Valid; +import java.util.List; + +/** + * 模板 Service 接口 + * + * @author 系统生成 + */ +public interface DocTemplateService { + + /** + * 创建模板 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createTemplate(@Valid DocTemplateSaveReqVO createReqVO); + + /** + * 更新模板 + * + * @param updateReqVO 更新信息 + */ + void updateTemplate(@Valid DocTemplateSaveReqVO updateReqVO); + + /** + * 删除模板 + * + * @param id 编号 + */ + void deleteTemplate(Long id); + + /** + * 获得模板 + * + * @param id 编号 + * @return 模板 + */ + DocTemplateRespVO getTemplate(Long id); + + /** + * 获得模板分页 + * + * @param pageReqVO 分页查询 + * @return 模板分页 + */ + PageResult getTemplatePage(DocTemplatePageReqVO pageReqVO); + + /** + * 获得模板列表 + * + * @return 模板列表 + */ + List getTemplateList(); + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateServiceImpl.java new file mode 100644 index 0000000..b5e353b --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateServiceImpl.java @@ -0,0 +1,115 @@ +package com.zt.plat.module.base.service.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplatePageReqVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateSaveReqVO; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zt.plat.module.base.convert.doctemplate.DocTemplateConvert; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateDO; +import com.zt.plat.module.base.dal.dao.doctemplate.DocTemplateMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import jakarta.annotation.Resource; +import java.util.List; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 模板 Service 实现类 + * + * @author 系统生成 + */ +@Service +@Validated +public class DocTemplateServiceImpl implements DocTemplateService { + + @Resource + private DocTemplateMapper templateMapper; + + @Override + public Long createTemplate(DocTemplateSaveReqVO createReqVO) { + // 校验模板编码唯一性 + validateTemplateCodeUnique(null, createReqVO.getTmplCode()); + + // 插入 + DocTemplateDO template = DocTemplateConvert.INSTANCE.convert(createReqVO); + // 设置默认值 + if (template.getUseCount() == null) { + template.setUseCount(0); + } + if (template.getEnabled() == null) { + template.setEnabled("2"); // 默认为草稿状态 + } + templateMapper.insert(template); + // 返回 + return template.getId(); + } + + @Override + public void updateTemplate(DocTemplateSaveReqVO updateReqVO) { + // 校验存在 + validateTemplateExists(updateReqVO.getId()); + // 校验模板编码唯一性 + validateTemplateCodeUnique(updateReqVO.getId(), updateReqVO.getTmplCode()); + + // 更新 + DocTemplateDO updateObj = DocTemplateConvert.INSTANCE.convert(updateReqVO); + templateMapper.updateById(updateObj); + } + + @Override + public void deleteTemplate(Long id) { + // 校验存在 + validateTemplateExists(id); + // 删除 + templateMapper.deleteById(id); + } + + private void validateTemplateExists(Long id) { + if (templateMapper.selectById(id) == null) { + throw exception(TEMPLATE_NOT_EXISTS); + } + } + + /** + * 校验模板编码唯一性 + */ + private void validateTemplateCodeUnique(Long id, String tmplCode) { + if (StrUtil.isBlank(tmplCode)) { + return; + } + DocTemplateDO template = templateMapper.selectOne(new LambdaQueryWrapper() + .eq(DocTemplateDO::getTmplCode, tmplCode)); + if (template == null) { + return; + } + // 如果是更新操作,排除自己 + if (id != null && id.equals(template.getId())) { + return; + } + throw exception(TEMPLATE_CODE_DUPLICATE); + } + + @Override + public DocTemplateRespVO getTemplate(Long id) { + DocTemplateDO template = templateMapper.selectById(id); + return DocTemplateConvert.INSTANCE.convert(template); + } + + @Override + public PageResult getTemplatePage(DocTemplatePageReqVO pageReqVO) { + PageResult pageResult = templateMapper.selectPage(pageReqVO); + return DocTemplateConvert.INSTANCE.convertPage(pageResult); + } + + @Override + public List getTemplateList() { + List list = templateMapper.selectList(); + return DocTemplateConvert.INSTANCE.convertList(list); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateTagService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateTagService.java new file mode 100644 index 0000000..15954ed --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateTagService.java @@ -0,0 +1,63 @@ +package com.zt.plat.module.base.service.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateTagPageReqVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateTagRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateTagSaveReqVO; + +import jakarta.validation.Valid; +import java.util.List; + +/** + * 标签库 Service 接口 + * + * @author 系统生成 + */ +public interface DocTemplateTagService { + + /** + * 创建标签 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createTemplateTag(@Valid DocTemplateTagSaveReqVO createReqVO); + + /** + * 更新标签 + * + * @param updateReqVO 更新信息 + */ + void updateTemplateTag(@Valid DocTemplateTagSaveReqVO updateReqVO); + + /** + * 删除标签 + * + * @param id 编号 + */ + void deleteTemplateTag(Long id); + + /** + * 获得标签 + * + * @param id 编号 + * @return 标签 + */ + DocTemplateTagRespVO getTemplateTag(Long id); + + /** + * 获得标签分页 + * + * @param pageReqVO 分页查询 + * @return 标签分页 + */ + PageResult getTemplateTagPage(DocTemplateTagPageReqVO pageReqVO); + + /** + * 获得标签列表 + * + * @return 标签列表 + */ + List getTemplateTagList(); + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateTagServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateTagServiceImpl.java new file mode 100644 index 0000000..194c6e9 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/DocTemplateTagServiceImpl.java @@ -0,0 +1,115 @@ +package com.zt.plat.module.base.service.doctemplate; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateTagPageReqVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateTagRespVO; +import com.zt.plat.module.base.controller.admin.doctemplate.vo.DocTemplateTagSaveReqVO; +import com.zt.plat.module.base.convert.doctemplate.DocTemplateTagConvert; +import com.zt.plat.module.base.dal.dataobject.doctemplate.DocTemplateTagDO; +import com.zt.plat.module.base.dal.dao.doctemplate.DocTemplateTagMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import jakarta.annotation.Resource; +import java.util.List; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.TEMPLATE_TAG_NOT_EXISTS; + +/** + * 标签库 Service 实现类 + * + * @author 系统生成 + */ +@Service +@Validated +public class DocTemplateTagServiceImpl implements DocTemplateTagService { + + @Resource + private DocTemplateTagMapper templateTagMapper; + + @Resource + private DocTemplateCategoryService templateCategoryService; + + @Override + public Long createTemplateTag(DocTemplateTagSaveReqVO createReqVO) { + // 插入 + DocTemplateTagDO templateTag = DocTemplateTagConvert.INSTANCE.convert(createReqVO); + // 设置默认值 + if (templateTag.getSort() == null) { + templateTag.setSort(0); + } + if (templateTag.getEnabled() == null) { + templateTag.setEnabled("1"); + } + templateTagMapper.insert(templateTag); + // 返回 + return templateTag.getId(); + } + + @Override + public void updateTemplateTag(DocTemplateTagSaveReqVO updateReqVO) { + // 校验存在 + validateTemplateTagExists(updateReqVO.getId()); + // 更新 + DocTemplateTagDO updateObj = DocTemplateTagConvert.INSTANCE.convert(updateReqVO); + templateTagMapper.updateById(updateObj); + } + + @Override + public void deleteTemplateTag(Long id) { + // 校验存在 + validateTemplateTagExists(id); + // 删除 + templateTagMapper.deleteById(id); + } + + private void validateTemplateTagExists(Long id) { + if (templateTagMapper.selectById(id) == null) { + throw exception(TEMPLATE_TAG_NOT_EXISTS); + } + } + + @Override + public DocTemplateTagRespVO getTemplateTag(Long id) { + DocTemplateTagDO templateTag = templateTagMapper.selectById(id); + DocTemplateTagRespVO respVO = DocTemplateTagConvert.INSTANCE.convert(templateTag); + // 填充分类名称 + fillCategoryName(respVO); + return respVO; + } + + @Override + public PageResult getTemplateTagPage(DocTemplateTagPageReqVO pageReqVO) { + PageResult pageResult = templateTagMapper.selectPage(pageReqVO); + PageResult result = DocTemplateTagConvert.INSTANCE.convertPage(pageResult); + // 填充分类名称 + result.getList().forEach(this::fillCategoryName); + return result; + } + + @Override + public List getTemplateTagList() { + List list = templateTagMapper.selectList(); + List result = DocTemplateTagConvert.INSTANCE.convertList(list); + // 填充分类名称 + result.forEach(this::fillCategoryName); + return result; + } + + /** + * 填充分类名称(包含父级路径) + * + * @param respVO 标签响应VO + */ + private void fillCategoryName(DocTemplateTagRespVO respVO) { + if (respVO == null || respVO.getCategoryId() == null) { + return; + } + + // 调用分类Service获取完整路径 + String categoryPath = templateCategoryService.getCategoryFullPath(respVO.getCategoryId()); + respVO.setCategoryName(categoryPath); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialclasses/MaterialClassesService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialclasses/MaterialClassesService.java new file mode 100644 index 0000000..d24a3de --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialclasses/MaterialClassesService.java @@ -0,0 +1,69 @@ +package com.zt.plat.module.base.service.materialclasses; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.materialclasses.vo.*; +import com.zt.plat.module.base.dal.dataobject.materialclasses.MaterialClassesDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; + +/** + * 物料分类 Service 接口 + * + * @author 后台管理-1 + */ +public interface MaterialClassesService { + + /** + * 创建物料分类 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + MaterialClassesRespVO createMaterialClasses(@Valid MaterialClassesSaveReqVO createReqVO); + + /** + * 更新物料分类 + * + * @param updateReqVO 更新信息 + */ + void updateMaterialClasses(@Valid MaterialClassesSaveReqVO updateReqVO); + + /** + * 删除物料分类 + * + * @param id 编号 + */ + void deleteMaterialClasses(Long id); + + /** + * 批量删除物料分类 + * + * @param ids 编号 + */ + void deleteMaterialClassesListByIds(List ids); + + /** + * 获得物料分类 + * + * @param id 编号 + * @return 物料分类 + */ + MaterialClassesDO getMaterialClasses(Long id); + + /** + * 获得物料分类分页 + * + * @param pageReqVO 分页查询 + * @return 物料分类分页 + */ + PageResult getMaterialClassesPage(MaterialClassesPageReqVO pageReqVO); + + /** + * 获得全部物料分类 + * + * @return 分类列表 + */ + List getMaterialClassesList(); + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialclasses/MaterialClassesServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialclasses/MaterialClassesServiceImpl.java new file mode 100644 index 0000000..e7b216d --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialclasses/MaterialClassesServiceImpl.java @@ -0,0 +1,97 @@ +package com.zt.plat.module.base.service.materialclasses; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.materialclasses.vo.*; +import com.zt.plat.module.base.dal.dataobject.materialclasses.MaterialClassesDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.materialclasses.MaterialClassesMapper; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 物料分类 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class MaterialClassesServiceImpl implements MaterialClassesService { + + @Resource + private MaterialClassesMapper materialClassesMapper; + + @Override + public MaterialClassesRespVO createMaterialClasses(MaterialClassesSaveReqVO createReqVO) { + // 插入 + MaterialClassesDO materialClasses = BeanUtils.toBean(createReqVO, MaterialClassesDO.class); + materialClassesMapper.insert(materialClasses); + // 返回 + return BeanUtils.toBean(materialClasses, MaterialClassesRespVO.class); + } + + @Override + public void updateMaterialClasses(MaterialClassesSaveReqVO updateReqVO) { + // 校验存在 + validateMaterialClassesExists(updateReqVO.getId()); + // 更新 + MaterialClassesDO updateObj = BeanUtils.toBean(updateReqVO, MaterialClassesDO.class); + materialClassesMapper.updateById(updateObj); + } + + @Override + public void deleteMaterialClasses(Long id) { + // 校验存在 + validateMaterialClassesExists(id); + // 删除 + materialClassesMapper.deleteById(id); + } + + @Override + public void deleteMaterialClassesListByIds(List ids) { + // 校验存在 + validateMaterialClassesExists(ids); + // 删除 + materialClassesMapper.deleteByIds(ids); + } + + private void validateMaterialClassesExists(List ids) { + List list = materialClassesMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(MATERIAL_CLASSES_NOT_EXISTS); + } + } + + private void validateMaterialClassesExists(Long id) { + if (materialClassesMapper.selectById(id) == null) { + throw exception(MATERIAL_CLASSES_NOT_EXISTS); + } + } + + @Override + public MaterialClassesDO getMaterialClasses(Long id) { + return materialClassesMapper.selectById(id); + } + + @Override + public PageResult getMaterialClassesPage(MaterialClassesPageReqVO pageReqVO) { + return materialClassesMapper.selectPage(pageReqVO); + } + + @Override + public List getMaterialClassesList() { + return materialClassesMapper.selectList(); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialhasclasses/MaterialHasClassesService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialhasclasses/MaterialHasClassesService.java new file mode 100644 index 0000000..596ed2b --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialhasclasses/MaterialHasClassesService.java @@ -0,0 +1,62 @@ +package com.zt.plat.module.base.service.materialhasclasses; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.materialhasclasses.vo.*; +import com.zt.plat.module.base.dal.dataobject.materialhasclasses.MaterialHasClassesDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; + +/** + * 物料持有分类 Service 接口 + * + * @author 后台管理-1 + */ +public interface MaterialHasClassesService { + + /** + * 创建物料持有分类 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + MaterialHasClassesRespVO createMaterialHasClasses(@Valid MaterialHasClassesSaveReqVO createReqVO); + + /** + * 更新物料持有分类 + * + * @param updateReqVO 更新信息 + */ + void updateMaterialHasClasses(@Valid MaterialHasClassesSaveReqVO updateReqVO); + + /** + * 删除物料持有分类 + * + * @param id 编号 + */ + void deleteMaterialHasClasses(Long id); + + /** + * 批量删除物料持有分类 + * + * @param ids 编号 + */ + void deleteMaterialHasClassesListByIds(List ids); + + /** + * 获得物料持有分类 + * + * @param id 编号 + * @return 物料持有分类 + */ + MaterialHasClassesDO getMaterialHasClasses(Long id); + + /** + * 获得物料持有分类分页 + * + * @param pageReqVO 分页查询 + * @return 物料持有分类分页 + */ + PageResult getMaterialHasClassesPage(MaterialHasClassesPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialhasclasses/MaterialHasClassesServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialhasclasses/MaterialHasClassesServiceImpl.java new file mode 100644 index 0000000..5831496 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialhasclasses/MaterialHasClassesServiceImpl.java @@ -0,0 +1,92 @@ +package com.zt.plat.module.base.service.materialhasclasses; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.materialhasclasses.vo.*; +import com.zt.plat.module.base.dal.dataobject.materialhasclasses.MaterialHasClassesDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.materialhasclasses.MaterialHasClassesMapper; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 物料持有分类 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class MaterialHasClassesServiceImpl implements MaterialHasClassesService { + + @Resource + private MaterialHasClassesMapper materialHasClassesMapper; + + @Override + public MaterialHasClassesRespVO createMaterialHasClasses(MaterialHasClassesSaveReqVO createReqVO) { + // 插入 + MaterialHasClassesDO materialHasClasses = BeanUtils.toBean(createReqVO, MaterialHasClassesDO.class); + materialHasClassesMapper.insert(materialHasClasses); + // 返回 + return BeanUtils.toBean(materialHasClasses, MaterialHasClassesRespVO.class); + } + + @Override + public void updateMaterialHasClasses(MaterialHasClassesSaveReqVO updateReqVO) { + // 校验存在 + validateMaterialHasClassesExists(updateReqVO.getId()); + // 更新 + MaterialHasClassesDO updateObj = BeanUtils.toBean(updateReqVO, MaterialHasClassesDO.class); + materialHasClassesMapper.updateById(updateObj); + } + + @Override + public void deleteMaterialHasClasses(Long id) { + // 校验存在 + validateMaterialHasClassesExists(id); + // 删除 + materialHasClassesMapper.deleteById(id); + } + + @Override + public void deleteMaterialHasClassesListByIds(List ids) { + // 校验存在 + validateMaterialHasClassesExists(ids); + // 删除 + materialHasClassesMapper.deleteByIds(ids); + } + + private void validateMaterialHasClassesExists(List ids) { + List list = materialHasClassesMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(MATERIAL_HAS_CLASSES_NOT_EXISTS); + } + } + + private void validateMaterialHasClassesExists(Long id) { + if (materialHasClassesMapper.selectById(id) == null) { + throw exception(MATERIAL_HAS_CLASSES_NOT_EXISTS); + } + } + + @Override + public MaterialHasClassesDO getMaterialHasClasses(Long id) { + return materialHasClassesMapper.selectById(id); + } + + @Override + public PageResult getMaterialHasClassesPage(MaterialHasClassesPageReqVO pageReqVO) { + return materialHasClassesMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialhasproperties/MaterialHasPropertiesService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialhasproperties/MaterialHasPropertiesService.java new file mode 100644 index 0000000..3e3d848 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialhasproperties/MaterialHasPropertiesService.java @@ -0,0 +1,62 @@ +package com.zt.plat.module.base.service.materialhasproperties; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.materialhasproperties.vo.*; +import com.zt.plat.module.base.dal.dataobject.materialhasproperties.MaterialHasPropertiesDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; + +/** + * 物料持有属性 Service 接口 + * + * @author 后台管理-1 + */ +public interface MaterialHasPropertiesService { + + /** + * 创建物料持有属性 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + MaterialHasPropertiesRespVO createMaterialHasProperties(@Valid MaterialHasPropertiesSaveReqVO createReqVO); + + /** + * 更新物料持有属性 + * + * @param updateReqVO 更新信息 + */ + void updateMaterialHasProperties(@Valid MaterialHasPropertiesSaveReqVO updateReqVO); + + /** + * 删除物料持有属性 + * + * @param id 编号 + */ + void deleteMaterialHasProperties(Long id); + + /** + * 批量删除物料持有属性 + * + * @param ids 编号 + */ + void deleteMaterialHasPropertiesListByIds(List ids); + + /** + * 获得物料持有属性 + * + * @param id 编号 + * @return 物料持有属性 + */ + MaterialHasPropertiesDO getMaterialHasProperties(Long id); + + /** + * 获得物料持有属性分页 + * + * @param pageReqVO 分页查询 + * @return 物料持有属性分页 + */ + PageResult getMaterialHasPropertiesPage(MaterialHasPropertiesPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialhasproperties/MaterialHasPropertiesServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialhasproperties/MaterialHasPropertiesServiceImpl.java new file mode 100644 index 0000000..2559c26 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialhasproperties/MaterialHasPropertiesServiceImpl.java @@ -0,0 +1,92 @@ +package com.zt.plat.module.base.service.materialhasproperties; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.materialhasproperties.vo.*; +import com.zt.plat.module.base.dal.dataobject.materialhasproperties.MaterialHasPropertiesDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.materialhasproperties.MaterialHasPropertiesMapper; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 物料持有属性 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class MaterialHasPropertiesServiceImpl implements MaterialHasPropertiesService { + + @Resource + private MaterialHasPropertiesMapper materialHasPropertiesMapper; + + @Override + public MaterialHasPropertiesRespVO createMaterialHasProperties(MaterialHasPropertiesSaveReqVO createReqVO) { + // 插入 + MaterialHasPropertiesDO materialHasProperties = BeanUtils.toBean(createReqVO, MaterialHasPropertiesDO.class); + materialHasPropertiesMapper.insert(materialHasProperties); + // 返回 + return BeanUtils.toBean(materialHasProperties, MaterialHasPropertiesRespVO.class); + } + + @Override + public void updateMaterialHasProperties(MaterialHasPropertiesSaveReqVO updateReqVO) { + // 校验存在 + validateMaterialHasPropertiesExists(updateReqVO.getId()); + // 更新 + MaterialHasPropertiesDO updateObj = BeanUtils.toBean(updateReqVO, MaterialHasPropertiesDO.class); + materialHasPropertiesMapper.updateById(updateObj); + } + + @Override + public void deleteMaterialHasProperties(Long id) { + // 校验存在 + validateMaterialHasPropertiesExists(id); + // 删除 + materialHasPropertiesMapper.deleteById(id); + } + + @Override + public void deleteMaterialHasPropertiesListByIds(List ids) { + // 校验存在 + validateMaterialHasPropertiesExists(ids); + // 删除 + materialHasPropertiesMapper.deleteByIds(ids); + } + + private void validateMaterialHasPropertiesExists(List ids) { + List list = materialHasPropertiesMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(MATERIAL_HAS_PROPERTIES_NOT_EXISTS); + } + } + + private void validateMaterialHasPropertiesExists(Long id) { + if (materialHasPropertiesMapper.selectById(id) == null) { + throw exception(MATERIAL_HAS_PROPERTIES_NOT_EXISTS); + } + } + + @Override + public MaterialHasPropertiesDO getMaterialHasProperties(Long id) { + return materialHasPropertiesMapper.selectById(id); + } + + @Override + public PageResult getMaterialHasPropertiesPage(MaterialHasPropertiesPageReqVO pageReqVO) { + return materialHasPropertiesMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialproperties/MaterialPropertiesService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialproperties/MaterialPropertiesService.java new file mode 100644 index 0000000..a7acd93 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialproperties/MaterialPropertiesService.java @@ -0,0 +1,62 @@ +package com.zt.plat.module.base.service.materialproperties; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.materialproperties.vo.*; +import com.zt.plat.module.base.dal.dataobject.materialproperties.MaterialPropertiesDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; + +/** + * 物料属性 Service 接口 + * + * @author 后台管理-1 + */ +public interface MaterialPropertiesService { + + /** + * 创建物料属性 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + MaterialPropertiesRespVO createMaterialProperties(@Valid MaterialPropertiesSaveReqVO createReqVO); + + /** + * 更新物料属性 + * + * @param updateReqVO 更新信息 + */ + void updateMaterialProperties(@Valid MaterialPropertiesSaveReqVO updateReqVO); + + /** + * 删除物料属性 + * + * @param id 编号 + */ + void deleteMaterialProperties(Long id); + + /** + * 批量删除物料属性 + * + * @param ids 编号 + */ + void deleteMaterialPropertiesListByIds(List ids); + + /** + * 获得物料属性 + * + * @param id 编号 + * @return 物料属性 + */ + MaterialPropertiesDO getMaterialProperties(Long id); + + /** + * 获得物料属性分页 + * + * @param pageReqVO 分页查询 + * @return 物料属性分页 + */ + PageResult getMaterialPropertiesPage(MaterialPropertiesPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialproperties/MaterialPropertiesServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialproperties/MaterialPropertiesServiceImpl.java new file mode 100644 index 0000000..e1cde70 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/materialproperties/MaterialPropertiesServiceImpl.java @@ -0,0 +1,92 @@ +package com.zt.plat.module.base.service.materialproperties; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.materialproperties.vo.*; +import com.zt.plat.module.base.dal.dataobject.materialproperties.MaterialPropertiesDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.materialproperties.MaterialPropertiesMapper; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 物料属性 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class MaterialPropertiesServiceImpl implements MaterialPropertiesService { + + @Resource + private MaterialPropertiesMapper materialPropertiesMapper; + + @Override + public MaterialPropertiesRespVO createMaterialProperties(MaterialPropertiesSaveReqVO createReqVO) { + // 插入 + MaterialPropertiesDO materialProperties = BeanUtils.toBean(createReqVO, MaterialPropertiesDO.class); + materialPropertiesMapper.insert(materialProperties); + // 返回 + return BeanUtils.toBean(materialProperties, MaterialPropertiesRespVO.class); + } + + @Override + public void updateMaterialProperties(MaterialPropertiesSaveReqVO updateReqVO) { + // 校验存在 + validateMaterialPropertiesExists(updateReqVO.getId()); + // 更新 + MaterialPropertiesDO updateObj = BeanUtils.toBean(updateReqVO, MaterialPropertiesDO.class); + materialPropertiesMapper.updateById(updateObj); + } + + @Override + public void deleteMaterialProperties(Long id) { + // 校验存在 + validateMaterialPropertiesExists(id); + // 删除 + materialPropertiesMapper.deleteById(id); + } + + @Override + public void deleteMaterialPropertiesListByIds(List ids) { + // 校验存在 + validateMaterialPropertiesExists(ids); + // 删除 + materialPropertiesMapper.deleteByIds(ids); + } + + private void validateMaterialPropertiesExists(List ids) { + List list = materialPropertiesMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(MATERIAL_PROPERTIES_NOT_EXISTS); + } + } + + private void validateMaterialPropertiesExists(Long id) { + if (materialPropertiesMapper.selectById(id) == null) { + throw exception(MATERIAL_PROPERTIES_NOT_EXISTS); + } + } + + @Override + public MaterialPropertiesDO getMaterialProperties(Long id) { + return materialPropertiesMapper.selectById(id); + } + + @Override + public PageResult getMaterialPropertiesPage(MaterialPropertiesPageReqVO pageReqVO) { + return materialPropertiesMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processinginfomation/ProcessingInfomationService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processinginfomation/ProcessingInfomationService.java new file mode 100644 index 0000000..c55db41 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processinginfomation/ProcessingInfomationService.java @@ -0,0 +1,69 @@ +package com.zt.plat.module.base.service.processinginfomation; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.processinginfomation.vo.*; +import com.zt.plat.module.base.dal.dataobject.processinginfomation.ProcessingInfomationDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; + +/** + * 工艺信息 Service 接口 + * + * @author 后台管理-1 + */ +public interface ProcessingInfomationService { + + /** + * 创建工艺信息 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ProcessingInfomationRespVO createProcessingInfomation(@Valid ProcessingInfomationSaveReqVO createReqVO); + + /** + * 更新工艺信息 + * + * @param updateReqVO 更新信息 + */ + void updateProcessingInfomation(@Valid ProcessingInfomationSaveReqVO updateReqVO); + + /** + * 删除工艺信息 + * + * @param id 编号 + */ + void deleteProcessingInfomation(Long id); + + /** + * 批量删除工艺信息 + * + * @param ids 编号 + */ + void deleteProcessingInfomationListByIds(List ids); + + /** + * 获得工艺信息 + * + * @param id 编号 + * @return 工艺信息 + */ + ProcessingInfomationDO getProcessingInfomation(Long id); + + /** + * 获得工艺信息分页 + * + * @param pageReqVO 分页查询 + * @return 工艺信息分页 + */ + PageResult getProcessingInfomationPage(ProcessingInfomationPageReqVO pageReqVO); + + /** + * 获得全部工艺信息 + * + * @return 工艺信息列表 + */ + List getProcessingInfomationList(); + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processinginfomation/ProcessingInfomationServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processinginfomation/ProcessingInfomationServiceImpl.java new file mode 100644 index 0000000..68d4575 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processinginfomation/ProcessingInfomationServiceImpl.java @@ -0,0 +1,97 @@ +package com.zt.plat.module.base.service.processinginfomation; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.processinginfomation.vo.*; +import com.zt.plat.module.base.dal.dataobject.processinginfomation.ProcessingInfomationDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.processinginfomation.ProcessingInfomationMapper; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 工艺信息 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class ProcessingInfomationServiceImpl implements ProcessingInfomationService { + + @Resource + private ProcessingInfomationMapper processingInfomationMapper; + + @Override + public ProcessingInfomationRespVO createProcessingInfomation(ProcessingInfomationSaveReqVO createReqVO) { + // 插入 + ProcessingInfomationDO processingInfomation = BeanUtils.toBean(createReqVO, ProcessingInfomationDO.class); + processingInfomationMapper.insert(processingInfomation); + // 返回 + return BeanUtils.toBean(processingInfomation, ProcessingInfomationRespVO.class); + } + + @Override + public void updateProcessingInfomation(ProcessingInfomationSaveReqVO updateReqVO) { + // 校验存在 + validateProcessingInfomationExists(updateReqVO.getId()); + // 更新 + ProcessingInfomationDO updateObj = BeanUtils.toBean(updateReqVO, ProcessingInfomationDO.class); + processingInfomationMapper.updateById(updateObj); + } + + @Override + public void deleteProcessingInfomation(Long id) { + // 校验存在 + validateProcessingInfomationExists(id); + // 删除 + processingInfomationMapper.deleteById(id); + } + + @Override + public void deleteProcessingInfomationListByIds(List ids) { + // 校验存在 + validateProcessingInfomationExists(ids); + // 删除 + processingInfomationMapper.deleteByIds(ids); + } + + private void validateProcessingInfomationExists(List ids) { + List list = processingInfomationMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(PROCESSING_INFOMATION_NOT_EXISTS); + } + } + + private void validateProcessingInfomationExists(Long id) { + if (processingInfomationMapper.selectById(id) == null) { + throw exception(PROCESSING_INFOMATION_NOT_EXISTS); + } + } + + @Override + public ProcessingInfomationDO getProcessingInfomation(Long id) { + return processingInfomationMapper.selectById(id); + } + + @Override + public PageResult getProcessingInfomationPage(ProcessingInfomationPageReqVO pageReqVO) { + return processingInfomationMapper.selectPage(pageReqVO); + } + + @Override + public List getProcessingInfomationList() { + return processingInfomationMapper.selectList(); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processinginfomationoperation/ProcessingInfomationOperationService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processinginfomationoperation/ProcessingInfomationOperationService.java new file mode 100644 index 0000000..75fa2a7 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processinginfomationoperation/ProcessingInfomationOperationService.java @@ -0,0 +1,78 @@ +package com.zt.plat.module.base.service.processinginfomationoperation; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.processinginfomationoperation.vo.*; +import com.zt.plat.module.base.dal.dataobject.processinginfomationoperation.ProcessingInfomationOperationDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; + +/** + * 工艺工序 Service 接口 + * + * @author 后台管理-1 + */ +public interface ProcessingInfomationOperationService { + + /** + * 创建工艺工序 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ProcessingInfomationOperationRespVO createProcessingInfomationOperation(@Valid ProcessingInfomationOperationSaveReqVO createReqVO); + + /** + * 更新工艺工序 + * + * @param updateReqVO 更新信息 + */ + void updateProcessingInfomationOperation(@Valid ProcessingInfomationOperationSaveReqVO updateReqVO); + + /** + * 删除工艺工序 + * + * @param id 编号 + */ + void deleteProcessingInfomationOperation(Long id); + + /** + * 批量删除工艺工序 + * + * @param ids 编号 + */ + void deleteProcessingInfomationOperationListByIds(List ids); + + /** + * 获得工艺工序 + * + * @param id 编号 + * @return 工艺工序 + */ + ProcessingInfomationOperationDO getProcessingInfomationOperation(Long id); + + /** + * 获得工艺工序分页 + * + * @param pageReqVO 分页查询 + * @return 工艺工序分页 + */ + PageResult getProcessingInfomationOperationPage(ProcessingInfomationOperationPageReqVO pageReqVO); + + /** + * 获得工艺工序明细分页 + * + * @param pageReqVO 分页查询 + * @return 工艺工序分页数据(携带工序信息) + */ + PageResult getProcessingInfomationOperationDetailPage(ProcessingInfomationOperationPageReqVO pageReqVO); + + /** + * 获得工艺工序明细列表 + * + * @param pageReqVO 查询条件 + * @return 工艺工序列表(携带工序信息) + */ + List getProcessingInfomationOperationDetailList(ProcessingInfomationOperationPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processinginfomationoperation/ProcessingInfomationOperationServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processinginfomationoperation/ProcessingInfomationOperationServiceImpl.java new file mode 100644 index 0000000..1beddb6 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processinginfomationoperation/ProcessingInfomationOperationServiceImpl.java @@ -0,0 +1,182 @@ +package com.zt.plat.module.base.service.processinginfomationoperation; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import com.zt.plat.module.base.controller.admin.processinginfomationoperation.vo.*; +import com.zt.plat.module.base.dal.dataobject.processinginfomationoperation.ProcessingInfomationOperationDO; +import com.zt.plat.module.base.dal.dao.processingoperation.ProcessingOperationMapper; +import com.zt.plat.module.base.dal.dataobject.processingoperation.ProcessingOperationDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.processinginfomationoperation.ProcessingInfomationOperationMapper; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 工艺工序 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class ProcessingInfomationOperationServiceImpl implements ProcessingInfomationOperationService { + + @Resource + private ProcessingInfomationOperationMapper processingInfomationOperationMapper; + @Resource + private ProcessingOperationMapper processingOperationMapper; + + @Override + public ProcessingInfomationOperationRespVO createProcessingInfomationOperation(ProcessingInfomationOperationSaveReqVO createReqVO) { + // 插入 + ProcessingInfomationOperationDO processingInfomationOperation = BeanUtils.toBean(createReqVO, ProcessingInfomationOperationDO.class); + processingInfomationOperationMapper.insert(processingInfomationOperation); + // 返回 + return BeanUtils.toBean(processingInfomationOperation, ProcessingInfomationOperationRespVO.class); + } + + @Override + public void updateProcessingInfomationOperation(ProcessingInfomationOperationSaveReqVO updateReqVO) { + // 校验存在 + validateProcessingInfomationOperationExists(updateReqVO.getId()); + // 更新 + ProcessingInfomationOperationDO updateObj = BeanUtils.toBean(updateReqVO, ProcessingInfomationOperationDO.class); + processingInfomationOperationMapper.updateById(updateObj); + } + + @Override + public void deleteProcessingInfomationOperation(Long id) { + // 校验存在 + validateProcessingInfomationOperationExists(id); + // 删除 + processingInfomationOperationMapper.deleteById(id); + } + + @Override + public void deleteProcessingInfomationOperationListByIds(List ids) { + // 校验存在 + validateProcessingInfomationOperationExists(ids); + // 删除 + processingInfomationOperationMapper.deleteByIds(ids); + } + + private void validateProcessingInfomationOperationExists(List ids) { + List list = processingInfomationOperationMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(PROCESSING_INFOMATION_OPERATION_NOT_EXISTS); + } + } + + private void validateProcessingInfomationOperationExists(Long id) { + if (processingInfomationOperationMapper.selectById(id) == null) { + throw exception(PROCESSING_INFOMATION_OPERATION_NOT_EXISTS); + } + } + + @Override + public ProcessingInfomationOperationDO getProcessingInfomationOperation(Long id) { + return processingInfomationOperationMapper.selectById(id); + } + + @Override + public PageResult getProcessingInfomationOperationPage(ProcessingInfomationOperationPageReqVO pageReqVO) { + return processingInfomationOperationMapper.selectPage(pageReqVO); + } + + @Override + public PageResult getProcessingInfomationOperationDetailPage(ProcessingInfomationOperationPageReqVO pageReqVO) { + List detailList = buildDetailList(pageReqVO); + int total = detailList.size(); + if (total == 0) { + return new PageResult<>(Collections.emptyList(), 0L); + } + Integer pageSize = pageReqVO.getPageSize(); + if (pageSize != null && pageSize <= 0) { + return new PageResult<>(detailList, (long) total); + } + int pageNo = pageReqVO.getPageNo() == null ? 1 : pageReqVO.getPageNo(); + int size = (pageSize == null || pageSize <= 0) ? total : pageSize; + int fromIndex = Math.max((pageNo - 1) * size, 0); + if (fromIndex >= total) { + return new PageResult<>(Collections.emptyList(), (long) total); + } + int toIndex = Math.min(fromIndex + size, total); + return new PageResult<>(detailList.subList(fromIndex, toIndex), (long) total); + } + + @Override + public List getProcessingInfomationOperationDetailList(ProcessingInfomationOperationPageReqVO pageReqVO) { + return buildDetailList(pageReqVO); + } + + private List buildDetailList(ProcessingInfomationOperationPageReqVO pageReqVO) { + List relations = processingInfomationOperationMapper.selectList(pageReqVO); + if (CollUtil.isEmpty(relations)) { + return Collections.emptyList(); + } + Set operationIds = relations.stream() + .flatMap(item -> Stream.of(item.getPreviousOperationId(), item.getNextOperationId())) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + Map operationMap; + if (operationIds.isEmpty()) { + operationMap = Collections.emptyMap(); + } else { + List operations = processingOperationMapper.selectBatchIds(operationIds); + if (CollUtil.isEmpty(operations)) { + operationMap = Collections.emptyMap(); + } else { + operationMap = operations.stream() + .filter(Objects::nonNull) + .collect(Collectors.toMap(ProcessingOperationDO::getId, Function.identity(), (v1, v2) -> v1)); + } + } + List detailList = relations.stream() + .map(item -> convertToResp(item, operationMap)) + .collect(Collectors.toList()); + String nextCode = pageReqVO.getNextOperationCode(); + if (StrUtil.isNotBlank(nextCode)) { + detailList = detailList.stream() + .filter(item -> StrUtil.containsIgnoreCase(item.getNextOperationCode(), nextCode)) + .collect(Collectors.toList()); + } + String nextName = pageReqVO.getNextOperationName(); + if (StrUtil.isNotBlank(nextName)) { + detailList = detailList.stream() + .filter(item -> StrUtil.containsIgnoreCase(item.getNextOperationName(), nextName)) + .collect(Collectors.toList()); + } + return detailList; + } + + private ProcessingInfomationOperationRespVO convertToResp(ProcessingInfomationOperationDO relation, + Map operationMap) { + ProcessingInfomationOperationRespVO resp = BeanUtils.toBean(relation, ProcessingInfomationOperationRespVO.class); + ProcessingOperationDO previous = operationMap.get(relation.getPreviousOperationId()); + if (previous != null) { + resp.setPreviousOperationCode(previous.getCode()); + resp.setPreviousOperationName(previous.getName()); + } + ProcessingOperationDO next = operationMap.get(relation.getNextOperationId()); + if (next != null) { + resp.setNextOperationCode(next.getCode()); + resp.setNextOperationName(next.getName()); + } + return resp; + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processingoperation/ProcessingOperationService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processingoperation/ProcessingOperationService.java new file mode 100644 index 0000000..401bc35 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processingoperation/ProcessingOperationService.java @@ -0,0 +1,69 @@ +package com.zt.plat.module.base.service.processingoperation; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.processingoperation.vo.*; +import com.zt.plat.module.base.dal.dataobject.processingoperation.ProcessingOperationDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; + +/** + * 工序 Service 接口 + * + * @author 后台管理-1 + */ +public interface ProcessingOperationService { + + /** + * 创建工序 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ProcessingOperationRespVO createProcessingOperation(@Valid ProcessingOperationSaveReqVO createReqVO); + + /** + * 更新工序 + * + * @param updateReqVO 更新信息 + */ + void updateProcessingOperation(@Valid ProcessingOperationSaveReqVO updateReqVO); + + /** + * 删除工序 + * + * @param id 编号 + */ + void deleteProcessingOperation(Long id); + + /** + * 批量删除工序 + * + * @param ids 编号 + */ + void deleteProcessingOperationListByIds(List ids); + + /** + * 获得工序 + * + * @param id 编号 + * @return 工序 + */ + ProcessingOperationDO getProcessingOperation(Long id); + + /** + * 获得工序分页 + * + * @param pageReqVO 分页查询 + * @return 工序分页 + */ + PageResult getProcessingOperationPage(ProcessingOperationPageReqVO pageReqVO); + + /** + * 获得全部工序 + * + * @return 工序列表 + */ + List getProcessingOperationList(); + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processingoperation/ProcessingOperationServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processingoperation/ProcessingOperationServiceImpl.java new file mode 100644 index 0000000..536da7b --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processingoperation/ProcessingOperationServiceImpl.java @@ -0,0 +1,97 @@ +package com.zt.plat.module.base.service.processingoperation; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.processingoperation.vo.*; +import com.zt.plat.module.base.dal.dataobject.processingoperation.ProcessingOperationDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.processingoperation.ProcessingOperationMapper; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 工序 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class ProcessingOperationServiceImpl implements ProcessingOperationService { + + @Resource + private ProcessingOperationMapper processingOperationMapper; + + @Override + public ProcessingOperationRespVO createProcessingOperation(ProcessingOperationSaveReqVO createReqVO) { + // 插入 + ProcessingOperationDO processingOperation = BeanUtils.toBean(createReqVO, ProcessingOperationDO.class); + processingOperationMapper.insert(processingOperation); + // 返回 + return BeanUtils.toBean(processingOperation, ProcessingOperationRespVO.class); + } + + @Override + public void updateProcessingOperation(ProcessingOperationSaveReqVO updateReqVO) { + // 校验存在 + validateProcessingOperationExists(updateReqVO.getId()); + // 更新 + ProcessingOperationDO updateObj = BeanUtils.toBean(updateReqVO, ProcessingOperationDO.class); + processingOperationMapper.updateById(updateObj); + } + + @Override + public void deleteProcessingOperation(Long id) { + // 校验存在 + validateProcessingOperationExists(id); + // 删除 + processingOperationMapper.deleteById(id); + } + + @Override + public void deleteProcessingOperationListByIds(List ids) { + // 校验存在 + validateProcessingOperationExists(ids); + // 删除 + processingOperationMapper.deleteByIds(ids); + } + + private void validateProcessingOperationExists(List ids) { + List list = processingOperationMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(PROCESSING_OPERATION_NOT_EXISTS); + } + } + + private void validateProcessingOperationExists(Long id) { + if (processingOperationMapper.selectById(id) == null) { + throw exception(PROCESSING_OPERATION_NOT_EXISTS); + } + } + + @Override + public ProcessingOperationDO getProcessingOperation(Long id) { + return processingOperationMapper.selectById(id); + } + + @Override + public PageResult getProcessingOperationPage(ProcessingOperationPageReqVO pageReqVO) { + return processingOperationMapper.selectPage(pageReqVO); + } + + @Override + public List getProcessingOperationList() { + return processingOperationMapper.selectList(); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processingoperationmaterial/ProcessingOperationMaterialService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processingoperationmaterial/ProcessingOperationMaterialService.java new file mode 100644 index 0000000..6f7aae4 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processingoperationmaterial/ProcessingOperationMaterialService.java @@ -0,0 +1,62 @@ +package com.zt.plat.module.base.service.processingoperationmaterial; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.processingoperationmaterial.vo.*; +import com.zt.plat.module.base.dal.dataobject.processingoperationmaterial.ProcessingOperationMaterialDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; + +/** + * 工艺工序物料 Service 接口 + * + * @author 后台管理-1 + */ +public interface ProcessingOperationMaterialService { + + /** + * 创建工艺工序物料 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ProcessingOperationMaterialRespVO createProcessingOperationMaterial(@Valid ProcessingOperationMaterialSaveReqVO createReqVO); + + /** + * 更新工艺工序物料 + * + * @param updateReqVO 更新信息 + */ + void updateProcessingOperationMaterial(@Valid ProcessingOperationMaterialSaveReqVO updateReqVO); + + /** + * 删除工艺工序物料 + * + * @param id 编号 + */ + void deleteProcessingOperationMaterial(Long id); + + /** + * 批量删除工艺工序物料 + * + * @param ids 编号 + */ + void deleteProcessingOperationMaterialListByIds(List ids); + + /** + * 获得工艺工序物料 + * + * @param id 编号 + * @return 工艺工序物料 + */ + ProcessingOperationMaterialDO getProcessingOperationMaterial(Long id); + + /** + * 获得工艺工序物料分页 + * + * @param pageReqVO 分页查询 + * @return 工艺工序物料分页 + */ + PageResult getProcessingOperationMaterialPage(ProcessingOperationMaterialPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processingoperationmaterial/ProcessingOperationMaterialServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processingoperationmaterial/ProcessingOperationMaterialServiceImpl.java new file mode 100644 index 0000000..17960ea --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/processingoperationmaterial/ProcessingOperationMaterialServiceImpl.java @@ -0,0 +1,92 @@ +package com.zt.plat.module.base.service.processingoperationmaterial; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.processingoperationmaterial.vo.*; +import com.zt.plat.module.base.dal.dataobject.processingoperationmaterial.ProcessingOperationMaterialDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.processingoperationmaterial.ProcessingOperationMaterialMapper; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 工艺工序物料 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class ProcessingOperationMaterialServiceImpl implements ProcessingOperationMaterialService { + + @Resource + private ProcessingOperationMaterialMapper processingOperationMaterialMapper; + + @Override + public ProcessingOperationMaterialRespVO createProcessingOperationMaterial(ProcessingOperationMaterialSaveReqVO createReqVO) { + // 插入 + ProcessingOperationMaterialDO processingOperationMaterial = BeanUtils.toBean(createReqVO, ProcessingOperationMaterialDO.class); + processingOperationMaterialMapper.insert(processingOperationMaterial); + // 返回 + return BeanUtils.toBean(processingOperationMaterial, ProcessingOperationMaterialRespVO.class); + } + + @Override + public void updateProcessingOperationMaterial(ProcessingOperationMaterialSaveReqVO updateReqVO) { + // 校验存在 + validateProcessingOperationMaterialExists(updateReqVO.getId()); + // 更新 + ProcessingOperationMaterialDO updateObj = BeanUtils.toBean(updateReqVO, ProcessingOperationMaterialDO.class); + processingOperationMaterialMapper.updateById(updateObj); + } + + @Override + public void deleteProcessingOperationMaterial(Long id) { + // 校验存在 + validateProcessingOperationMaterialExists(id); + // 删除 + processingOperationMaterialMapper.deleteById(id); + } + + @Override + public void deleteProcessingOperationMaterialListByIds(List ids) { + // 校验存在 + validateProcessingOperationMaterialExists(ids); + // 删除 + processingOperationMaterialMapper.deleteByIds(ids); + } + + private void validateProcessingOperationMaterialExists(List ids) { + List list = processingOperationMaterialMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(PROCESSING_OPERATION_MATERIAL_NOT_EXISTS); + } + } + + private void validateProcessingOperationMaterialExists(Long id) { + if (processingOperationMaterialMapper.selectById(id) == null) { + throw exception(PROCESSING_OPERATION_MATERIAL_NOT_EXISTS); + } + } + + @Override + public ProcessingOperationMaterialDO getProcessingOperationMaterial(Long id) { + return processingOperationMaterialMapper.selectById(id); + } + + @Override + public PageResult getProcessingOperationMaterialPage(ProcessingOperationMaterialPageReqVO pageReqVO) { + return processingOperationMaterialMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/QuantityUnitRelation/QuantityUnitRelationService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/quantityUnitRelation/QuantityUnitRelationService.java similarity index 67% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/QuantityUnitRelation/QuantityUnitRelationService.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/quantityUnitRelation/QuantityUnitRelationService.java index cd2e715..d4d0332 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/QuantityUnitRelation/QuantityUnitRelationService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/quantityUnitRelation/QuantityUnitRelationService.java @@ -1,11 +1,10 @@ -package com.zt.plat.module.unitmanagement.service.QuantityUnitRelation; +package com.zt.plat.module.base.service.quantityUnitRelation; import java.util.*; import jakarta.validation.*; -import com.zt.plat.module.unitmanagement.controller.admin.QuantityUnitRelation.vo.*; -import com.zt.plat.module.unitmanagement.dal.dataobject.QuantityUnitRelation.QuantityUnitRelationDO; +import com.zt.plat.module.base.controller.admin.quantityUnitRelation.vo.*; +import com.zt.plat.module.base.dal.dataobject.quantityUnitRelation.QuantityUnitRelationDO; import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.framework.common.pojo.PageParam; /** * 计量单位量与单位关联 Service 接口 @@ -67,4 +66,23 @@ public interface QuantityUnitRelationService { */ void batchSaveQuantityUnitRelations(@Valid QuantityUnitRelationBatchSaveReqVO batchSaveReqVO); + /** + * 创建单位并关联到量纲(组合接口) + * 1. 创建计量单位 + * 2. 创建量纲-单位关联关系 + * + * @param createReqVO 创建信息 + * @return 关联关系响应VO + */ + QuantityUnitRelationRespVO createUnitWithRelation(@Valid CreateUnitWithRelationReqVO createReqVO); + + /** + * 删除单位及关联关系(组合接口) + * 1. 删除量纲-单位关联关系 + * 2. 删除计量单位 + * + * @param deleteReqVO 删除信息 + */ + void deleteUnitWithRelation(@Valid DeleteUnitWithRelationReqVO deleteReqVO); + } \ No newline at end of file diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/QuantityUnitRelation/QuantityUnitRelationServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/quantityUnitRelation/QuantityUnitRelationServiceImpl.java similarity index 73% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/QuantityUnitRelation/QuantityUnitRelationServiceImpl.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/quantityUnitRelation/QuantityUnitRelationServiceImpl.java index 3848e1c..824224d 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/QuantityUnitRelation/QuantityUnitRelationServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/quantityUnitRelation/QuantityUnitRelationServiceImpl.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.unitmanagement.service.QuantityUnitRelation; +package com.zt.plat.module.base.service.quantityUnitRelation; import cn.hutool.core.collection.CollUtil; import org.springframework.stereotype.Service; @@ -7,17 +7,18 @@ import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.util.*; -import com.zt.plat.module.unitmanagement.controller.admin.QuantityUnitRelation.vo.*; -import com.zt.plat.module.unitmanagement.dal.dataobject.QuantityUnitRelation.QuantityUnitRelationDO; +import com.zt.plat.module.base.controller.admin.quantityUnitRelation.vo.*; +import com.zt.plat.module.base.dal.dataobject.quantityUnitRelation.QuantityUnitRelationDO; import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.framework.common.pojo.PageParam; import com.zt.plat.framework.common.util.object.BeanUtils; -import com.zt.plat.module.unitmanagement.dal.dao.QuantityUnitRelation.QuantityUnitRelationMapper; +import com.zt.plat.module.base.dal.dao.quantityUnitRelation.QuantityUnitRelationMapper; +import com.zt.plat.module.base.service.untInfo.UntInfoService; +import com.zt.plat.module.base.controller.admin.untInfo.vo.UntInfoSaveReqVO; +import com.zt.plat.module.base.controller.admin.untInfo.vo.UntInfoRespVO; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; -import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; import static com.zt.plat.module.unitmanagement.enums.UnitErrorCodeConstants.*; /** @@ -32,6 +33,9 @@ public class QuantityUnitRelationServiceImpl implements QuantityUnitRelationServ @Resource private QuantityUnitRelationMapper quantityUnitRelationMapper; + @Resource + private UntInfoService untInfoService; + @Override public QuantityUnitRelationRespVO createQuantityUnitRelation(QuantityUnitRelationSaveReqVO createReqVO) { // 插入 @@ -138,4 +142,32 @@ public class QuantityUnitRelationServiceImpl implements QuantityUnitRelationServ } } + @Override + @Transactional(rollbackFor = Exception.class) + public QuantityUnitRelationRespVO createUnitWithRelation(CreateUnitWithRelationReqVO createReqVO) { + // 1. 创建计量单位 + UntInfoSaveReqVO untInfoReqVO = new UntInfoSaveReqVO(); + untInfoReqVO.setName(createReqVO.getName()); + untInfoReqVO.setSmb(createReqVO.getSmb()); + UntInfoRespVO untInfoResp = untInfoService.createUntInfo(untInfoReqVO); + + // 2. 创建量纲-单位关联关系 + QuantityUnitRelationSaveReqVO relationReqVO = new QuantityUnitRelationSaveReqVO(); + relationReqVO.setUntQtyId(createReqVO.getUntQtyId()); + relationReqVO.setUntId(untInfoResp.getId()); + relationReqVO.setIsBse(createReqVO.getIsBse()); + + return createQuantityUnitRelation(relationReqVO); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteUnitWithRelation(DeleteUnitWithRelationReqVO deleteReqVO) { + // 1. 先删除关联关系(外键约束,必须先删除) + deleteQuantityUnitRelation(deleteReqVO.getRelationId()); + + // 2. 再删除计量单位 + untInfoService.deleteUntInfo(deleteReqVO.getUntId()); + } + } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitConversion/UnitConversionHelperService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitConversion/UnitConversionHelperService.java new file mode 100644 index 0000000..ec766d2 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitConversion/UnitConversionHelperService.java @@ -0,0 +1,239 @@ +package com.zt.plat.module.base.service.unitConversion; + +import com.zt.plat.module.base.dal.dao.unitConversion.UnitConversionMapper; +import com.zt.plat.module.base.dal.dao.quantityUnitRelation.QuantityUnitRelationMapper; +import com.zt.plat.module.base.dal.dao.untInfo.UntInfoMapper; +import com.zt.plat.module.base.dal.dataobject.unitConversion.UnitConversionDO; +import com.zt.plat.module.base.dal.dataobject.quantityUnitRelation.QuantityUnitRelationDO; +import com.zt.plat.module.base.dal.dataobject.untInfo.UntInfoDO; +import com.zt.plat.module.base.util.UnitConversionUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import jakarta.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; + +/** + * 单位转换辅助服务 + * + * 为其他模块提供简单易用的单位转换方法 + * 支持按单位符号和单位名称进行转换 + * + * @author 系统 + */ +@Service +@Slf4j +public class UnitConversionHelperService { + + @Resource + private UnitConversionMapper unitConversionMapper; + + @Resource + private QuantityUnitRelationMapper quantityUnitRelationMapper; + + @Resource + private UntInfoMapper untInfoMapper; + + /** + * 按单位符号转换(推荐使用) + * + * @param value 待转换的值 + * @param srcSymbol 源单位符号(如: "kg", "m", "km") + * @param tgtSymbol 目标单位符号 + * @return 转换后的值 + */ + public BigDecimal convertBySymbol(BigDecimal value, String srcSymbol, String tgtSymbol) { + return convertBySymbol(value, srcSymbol, tgtSymbol, 6); + } + + /** + * 按单位符号转换(推荐使用) + * + * @param value 待转换的值 + * @param srcSymbol 源单位符号(如: "kg", "m", "km") + * @param tgtSymbol 目标单位符号 + * @param precision 精度(小数位数) + * @return 转换后的值 + */ + public BigDecimal convertBySymbol(BigDecimal value, String srcSymbol, String tgtSymbol, int precision) { + log.debug("按符号转换: {} {} → {}", value, srcSymbol, tgtSymbol); + + // 加载数据 + List conversions = unitConversionMapper.selectList(); + List relations = quantityUnitRelationMapper.selectList(); + List units = untInfoMapper.selectList(); + + // 调用工具类 + UnitConversionUtil.ConversionResult result = UnitConversionUtil.convertBySymbol( + value, srcSymbol, tgtSymbol, conversions, relations, units, precision + ); + + log.debug("转换结果: {} (策略: {})", result.getValue(), result.getStrategy()); + return result.getValue(); + } + + /** + * 按单位名称转换 + * + * @param value 待转换的值 + * @param srcName 源单位名称(如: "千克", "米", "千米") + * @param tgtName 目标单位名称 + * @return 转换后的值 + */ + public BigDecimal convertByName(BigDecimal value, String srcName, String tgtName) { + return convertByName(value, srcName, tgtName, 6); + } + + /** + * 按单位名称转换 + * + * @param value 待转换的值 + * @param srcName 源单位名称(如: "千克", "米", "千米") + * @param tgtName 目标单位名称 + * @param precision 精度(小数位数) + * @return 转换后的值 + */ + public BigDecimal convertByName(BigDecimal value, String srcName, String tgtName, int precision) { + log.debug("按名称转换: {} {} → {}", value, srcName, tgtName); + + // 加载数据 + List conversions = unitConversionMapper.selectList(); + List relations = quantityUnitRelationMapper.selectList(); + List units = untInfoMapper.selectList(); + + // 调用工具类 + UnitConversionUtil.ConversionResult result = UnitConversionUtil.convertByName( + value, srcName, tgtName, conversions, relations, units, precision + ); + + log.debug("转换结果: {} (策略: {})", result.getValue(), result.getStrategy()); + return result.getValue(); + } + + /** + * 按单位符号批量转换 + * + * @param values 待转换的值列表 + * @param srcSymbol 源单位符号 + * @param tgtSymbol 目标单位符号 + * @return 转换后的值列表 + */ + public List batchConvertBySymbol(List values, String srcSymbol, String tgtSymbol) { + return batchConvertBySymbol(values, srcSymbol, tgtSymbol, 6); + } + + /** + * 按单位符号批量转换 + * + * @param values 待转换的值列表 + * @param srcSymbol 源单位符号 + * @param tgtSymbol 目标单位符号 + * @param precision 精度(小数位数) + * @return 转换后的值列表 + */ + public List batchConvertBySymbol(List values, String srcSymbol, String tgtSymbol, int precision) { + log.debug("批量按符号转换: {} 个值, {} → {}", values.size(), srcSymbol, tgtSymbol); + + // 加载数据 + List conversions = unitConversionMapper.selectList(); + List relations = quantityUnitRelationMapper.selectList(); + List units = untInfoMapper.selectList(); + + // 调用工具类 + List results = UnitConversionUtil.batchConvertBySymbol( + values, srcSymbol, tgtSymbol, conversions, relations, units, precision + ); + + // 提取转换后的值 + return results.stream() + .map(UnitConversionUtil.ConversionResult::getValue) + .toList(); + } + + /** + * 按单位名称批量转换 + * + * @param values 待转换的值列表 + * @param srcName 源单位名称 + * @param tgtName 目标单位名称 + * @return 转换后的值列表 + */ + public List batchConvertByName(List values, String srcName, String tgtName) { + return batchConvertByName(values, srcName, tgtName, 6); + } + + /** + * 按单位名称批量转换 + * + * @param values 待转换的值列表 + * @param srcName 源单位名称 + * @param tgtName 目标单位名称 + * @param precision 精度(小数位数) + * @return 转换后的值列表 + */ + public List batchConvertByName(List values, String srcName, String tgtName, int precision) { + log.debug("批量按名称转换: {} 个值, {} → {}", values.size(), srcName, tgtName); + + // 加载数据 + List conversions = unitConversionMapper.selectList(); + List relations = quantityUnitRelationMapper.selectList(); + List units = untInfoMapper.selectList(); + + // 调用工具类 + List results = UnitConversionUtil.batchConvertByName( + values, srcName, tgtName, conversions, relations, units, precision + ); + + // 提取转换后的值 + return results.stream() + .map(UnitConversionUtil.ConversionResult::getValue) + .toList(); + } + + /** + * 按单位符号转换(返回完整结果) + * + * @param value 待转换的值 + * @param srcSymbol 源单位符号 + * @param tgtSymbol 目标单位符号 + * @param precision 精度(小数位数) + * @return 转换结果(包含值、因子、策略等) + */ + public UnitConversionUtil.ConversionResult convertBySymbolWithDetails( + BigDecimal value, String srcSymbol, String tgtSymbol, int precision) { + + // 加载数据 + List conversions = unitConversionMapper.selectList(); + List relations = quantityUnitRelationMapper.selectList(); + List units = untInfoMapper.selectList(); + + // 调用工具类 + return UnitConversionUtil.convertBySymbol( + value, srcSymbol, tgtSymbol, conversions, relations, units, precision + ); + } + + /** + * 按单位名称转换(返回完整结果) + * + * @param value 待转换的值 + * @param srcName 源单位名称 + * @param tgtName 目标单位名称 + * @param precision 精度(小数位数) + * @return 转换结果(包含值、因子、策略等) + */ + public UnitConversionUtil.ConversionResult convertByNameWithDetails( + BigDecimal value, String srcName, String tgtName, int precision) { + + // 加载数据 + List conversions = unitConversionMapper.selectList(); + List relations = quantityUnitRelationMapper.selectList(); + List units = untInfoMapper.selectList(); + + // 调用工具类 + return UnitConversionUtil.convertByName( + value, srcName, tgtName, conversions, relations, units, precision + ); + } +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitConversion/UnitConversionService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitConversion/UnitConversionService.java new file mode 100644 index 0000000..7c1d837 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitConversion/UnitConversionService.java @@ -0,0 +1,117 @@ +package com.zt.plat.module.base.service.unitConversion; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.unitConversion.vo.*; +import com.zt.plat.module.base.dal.dataobject.unitConversion.UnitConversionDO; +import com.zt.plat.framework.common.pojo.PageResult; + +/** + * 单位转换 Service 接口 + * + * @author 后台管理-1 + */ +public interface UnitConversionService { + + /** + * 创建单位转换 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + UnitConversionRespVO createUnitConversion(@Valid UnitConversionSaveReqVO createReqVO); + + /** + * 更新单位转换 + * + * @param updateReqVO 更新信息 + */ + void updateUnitConversion(@Valid UnitConversionSaveReqVO updateReqVO); + + /** + * 删除单位转换 + * + * @param id 编号 + */ + void deleteUnitConversion(Long id); + + /** + * 批量删除单位转换 + * + * @param ids 编号 + */ + void deleteUnitConversionListByIds(List ids); + + /** + * 获得单位转换 + * + * @param id 编号 + * @return 单位转换 + */ + UnitConversionDO getUnitConversion(Long id); + + /** + * 获得单位转换分页 + * + * @param pageReqVO 分页查询 + * @return 单位转换分页 + */ + PageResult getUnitConversionPage(UnitConversionPageReqVO pageReqVO); + + /** + * 单位转换 + * + * @param convertReqVO 转换请求 + * @return 转换结果 + */ + UnitConvertRespVO convert(@Valid UnitConvertReqVO convertReqVO); + + /** + * 批量单位转换 + * + * @param batchReqVO 批量转换请求 + * @return 批量转换结果 + */ + BatchUnitConvertRespVO batchConvert(@Valid BatchUnitConvertReqVO batchReqVO); + + /** + * 按单位符号转换 + * + * @param reqVO 转换请求 + * @return 转换结果 + */ + UnitConvertRespVO convertBySymbol(@Valid UnitConvertBySymbolReqVO reqVO); + + /** + * 按单位名称转换 + * + * @param reqVO 转换请求 + * @return 转换结果 + */ + UnitConvertRespVO convertByName(@Valid UnitConvertByNameReqVO reqVO); + + /** + * 批量按单位符号转换 + * + * @param reqVO 批量转换请求 + * @return 批量转换结果 + */ + BatchUnitConvertRespVO batchConvertBySymbol(@Valid BatchUnitConvertBySymbolReqVO reqVO); + + /** + * 批量按单位名称转换 + * + * @param reqVO 批量转换请求 + * @return 批量转换结果 + */ + BatchUnitConvertRespVO batchConvertByName(@Valid BatchUnitConvertByNameReqVO reqVO); + + /** + * 校验量纲内所有单位的转换路径 + * + * @param quantityId 量纲ID + * @return 校验结果 + */ + UnitConversionValidationRespVO validateConversionPaths(Long quantityId); + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitConversion/UnitConversionServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitConversion/UnitConversionServiceImpl.java new file mode 100644 index 0000000..c0ba4e4 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitConversion/UnitConversionServiceImpl.java @@ -0,0 +1,615 @@ +package com.zt.plat.module.base.service.unitConversion; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.unitConversion.vo.*; +import com.zt.plat.module.base.dal.dataobject.unitConversion.UnitConversionDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.unitConversion.UnitConversionMapper; +import com.zt.plat.module.base.dal.dao.quantityUnitRelation.QuantityUnitRelationMapper; +import com.zt.plat.module.base.dal.dao.untInfo.UntInfoMapper; +import com.zt.plat.module.base.dal.dataobject.quantityUnitRelation.QuantityUnitRelationDO; +import com.zt.plat.module.base.dal.dataobject.untInfo.UntInfoDO; +import com.zt.plat.module.base.dal.dataobject.unitQuantity.UnitQuantityDO; +import com.zt.plat.module.base.service.unitQuantity.UnitQuantityService; +import com.zt.plat.module.base.util.UnitConversionUtil; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import lombok.extern.slf4j.Slf4j; + +import java.math.BigDecimal; +import java.util.stream.Collectors; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.module.unitmanagement.enums.UnitErrorCodeConstants.*; + +/** + * 单位转换 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +@Slf4j +public class UnitConversionServiceImpl implements UnitConversionService { + + @Resource + private UnitConversionMapper unitConversionMapper; + + @Resource + private QuantityUnitRelationMapper quantityUnitRelationMapper; + + @Resource + private UntInfoMapper untInfoMapper; + + @Resource + private UnitQuantityService unitQuantityService; + + @Override + public UnitConversionRespVO createUnitConversion(UnitConversionSaveReqVO createReqVO) { + // 插入 + UnitConversionDO unitConversion = BeanUtils.toBean(createReqVO, UnitConversionDO.class); + unitConversionMapper.insert(unitConversion); + // 返回 + return BeanUtils.toBean(unitConversion, UnitConversionRespVO.class); + } + + @Override + public void updateUnitConversion(UnitConversionSaveReqVO updateReqVO) { + // 校验存在 + validateUnitConversionExists(updateReqVO.getId()); + // 更新 + UnitConversionDO updateObj = BeanUtils.toBean(updateReqVO, UnitConversionDO.class); + unitConversionMapper.updateById(updateObj); + } + + @Override + public void deleteUnitConversion(Long id) { + // 校验存在 + validateUnitConversionExists(id); + // 删除 + unitConversionMapper.deleteById(id); + } + + @Override + public void deleteUnitConversionListByIds(List ids) { + // 校验存在 + validateUnitConversionExists(ids); + // 删除 + unitConversionMapper.deleteByIds(ids); + } + + private void validateUnitConversionExists(List ids) { + List list = unitConversionMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(UNIT_CONVERSION_NOT_EXISTS); + } + } + + private void validateUnitConversionExists(Long id) { + if (unitConversionMapper.selectById(id) == null) { + throw exception(UNIT_CONVERSION_NOT_EXISTS); + } + } + + @Override + public UnitConversionDO getUnitConversion(Long id) { + return unitConversionMapper.selectById(id); + } + + @Override + public PageResult getUnitConversionPage(UnitConversionPageReqVO pageReqVO) { + return unitConversionMapper.selectPage(pageReqVO); + } + + @Override + public UnitConvertRespVO convert(UnitConvertReqVO convertReqVO) { + log.info("开始单位转换: 源单位ID={}, 目标单位ID={}, 值={}", + convertReqVO.getSrcUntId(), convertReqVO.getTgtUntId(), convertReqVO.getValue()); + + // 1. 查询所有转换规则和关联关系 + List conversions = unitConversionMapper.selectList(); + List relations = quantityUnitRelationMapper.selectList(); + + // 2. 使用工具类进行转换 + UnitConversionUtil.ConversionResult result = UnitConversionUtil.convert( + convertReqVO.getValue(), + convertReqVO.getSrcUntId(), + convertReqVO.getTgtUntId(), + conversions, + relations, + convertReqVO.getPrecision() != null ? convertReqVO.getPrecision() : 6 + ); + + // 3. 查询单位信息 + UntInfoDO srcUnit = untInfoMapper.selectById(convertReqVO.getSrcUntId()); + UntInfoDO tgtUnit = untInfoMapper.selectById(convertReqVO.getTgtUntId()); + + // 4. 构建响应 + return UnitConvertRespVO.builder() + .srcUntId(convertReqVO.getSrcUntId()) + .srcUntName(srcUnit != null ? srcUnit.getName() : null) + .srcUntSmb(srcUnit != null ? srcUnit.getSmb() : null) + .tgtUntId(convertReqVO.getTgtUntId()) + .tgtUntName(tgtUnit != null ? tgtUnit.getName() : null) + .tgtUntSmb(tgtUnit != null ? tgtUnit.getSmb() : null) + .originalValue(convertReqVO.getValue()) + .convertedValue(result.getValue()) + .factor(result.getFactor()) + .formula(result.getFormula()) + .strategy(result.getStrategy().name()) + .build(); + } + + @Override + public BatchUnitConvertRespVO batchConvert(BatchUnitConvertReqVO batchReqVO) { + log.info("开始批量单位转换: 转换项数量={}, 忽略错误={}", + batchReqVO.getItems().size(), batchReqVO.getIgnoreErrors()); + + List results = new ArrayList<>(); + int successCount = 0; + int failureCount = 0; + + for (UnitConvertReqVO item : batchReqVO.getItems()) { + try { + // 执行转换 + UnitConvertRespVO convertResult = convert(item); + + // 构建成功结果 + results.add(BatchUnitConvertRespVO.UnitConvertResultItem.builder() + .success(true) + .data(convertResult) + .request(item) + .build()); + + successCount++; + } catch (Exception e) { + log.warn("单位转换失败: 源单位ID={}, 目标单位ID={}, 错误={}", + item.getSrcUntId(), item.getTgtUntId(), e.getMessage()); + + // 构建失败结果 + results.add(BatchUnitConvertRespVO.UnitConvertResultItem.builder() + .success(false) + .errorMessage(e.getMessage()) + .request(item) + .build()); + + failureCount++; + + // 如果不忽略错误,直接抛出异常 + if (!Boolean.TRUE.equals(batchReqVO.getIgnoreErrors())) { + throw e; + } + } + } + + return BatchUnitConvertRespVO.builder() + .results(results) + .successCount(successCount) + .failureCount(failureCount) + .totalCount(batchReqVO.getItems().size()) + .build(); + } + + @Override + public UnitConvertRespVO convertBySymbol(UnitConvertBySymbolReqVO reqVO) { + log.info("开始按符号转换: 源单位符号={}, 目标单位符号={}, 值={}", + reqVO.getSrcUnitSymbol(), reqVO.getTgtUnitSymbol(), reqVO.getValue()); + + // 1. 查询所有转换规则、关联关系和单位信息 + List conversions = unitConversionMapper.selectList(); + List relations = quantityUnitRelationMapper.selectList(); + List units = untInfoMapper.selectList(); + + // 2. 使用工具类进行转换 + UnitConversionUtil.ConversionResult result = UnitConversionUtil.convertBySymbol( + reqVO.getValue(), + reqVO.getSrcUnitSymbol(), + reqVO.getTgtUnitSymbol(), + conversions, + relations, + units, + reqVO.getPrecision() != null ? reqVO.getPrecision() : 6 + ); + + // 3. 构建响应 + return UnitConvertRespVO.builder() + .srcUntName(reqVO.getSrcUnitSymbol()) + .srcUntSmb(reqVO.getSrcUnitSymbol()) + .tgtUntName(reqVO.getTgtUnitSymbol()) + .tgtUntSmb(reqVO.getTgtUnitSymbol()) + .originalValue(reqVO.getValue()) + .convertedValue(result.getValue()) + .factor(result.getFactor()) + .formula(result.getFormula()) + .strategy(result.getStrategy().name()) + .build(); + } + + @Override + public UnitConvertRespVO convertByName(UnitConvertByNameReqVO reqVO) { + log.info("开始按名称转换: 源单位名称={}, 目标单位名称={}, 值={}", + reqVO.getSrcUnitName(), reqVO.getTgtUnitName(), reqVO.getValue()); + + // 1. 查询所有转换规则、关联关系和单位信息 + List conversions = unitConversionMapper.selectList(); + List relations = quantityUnitRelationMapper.selectList(); + List units = untInfoMapper.selectList(); + + // 2. 使用工具类进行转换 + UnitConversionUtil.ConversionResult result = UnitConversionUtil.convertByName( + reqVO.getValue(), + reqVO.getSrcUnitName(), + reqVO.getTgtUnitName(), + conversions, + relations, + units, + reqVO.getPrecision() != null ? reqVO.getPrecision() : 6 + ); + + // 3. 构建响应 + return UnitConvertRespVO.builder() + .srcUntName(reqVO.getSrcUnitName()) + .tgtUntName(reqVO.getTgtUnitName()) + .originalValue(reqVO.getValue()) + .convertedValue(result.getValue()) + .factor(result.getFactor()) + .formula(result.getFormula()) + .strategy(result.getStrategy().name()) + .build(); + } + + @Override + public BatchUnitConvertRespVO batchConvertBySymbol(BatchUnitConvertBySymbolReqVO reqVO) { + log.info("开始批量按符号转换: 源单位符号={}, 目标单位符号={}, 值数量={}", + reqVO.getSrcUnitSymbol(), reqVO.getTgtUnitSymbol(), reqVO.getValues().size()); + + List results = new ArrayList<>(); + int successCount = 0; + int failureCount = 0; + + // 1. 查询所有转换规则、关联关系和单位信息(只查询一次) + List conversions = unitConversionMapper.selectList(); + List relations = quantityUnitRelationMapper.selectList(); + List units = untInfoMapper.selectList(); + + for (BigDecimal value : reqVO.getValues()) { + try { + // 2. 使用工具类进行转换 + UnitConversionUtil.ConversionResult result = UnitConversionUtil.convertBySymbol( + value, + reqVO.getSrcUnitSymbol(), + reqVO.getTgtUnitSymbol(), + conversions, + relations, + units, + reqVO.getPrecision() != null ? reqVO.getPrecision() : 6 + ); + + // 3. 构建成功结果 + results.add(BatchUnitConvertRespVO.UnitConvertResultItem.builder() + .success(true) + .data(UnitConvertRespVO.builder() + .srcUntSmb(reqVO.getSrcUnitSymbol()) + .tgtUntSmb(reqVO.getTgtUnitSymbol()) + .originalValue(value) + .convertedValue(result.getValue()) + .factor(result.getFactor()) + .strategy(result.getStrategy().name()) + .build()) + .build()); + successCount++; + } catch (Exception e) { + log.warn("按符号转换失败: 源单位符号={}, 目标单位符号={}, 值={}, 错误={}", + reqVO.getSrcUnitSymbol(), reqVO.getTgtUnitSymbol(), value, e.getMessage()); + + // 4. 构建失败结果 + results.add(BatchUnitConvertRespVO.UnitConvertResultItem.builder() + .success(false) + .errorMessage(e.getMessage()) + .build()); + failureCount++; + + // 5. 如果不忽略错误,直接抛出异常 + if (!Boolean.TRUE.equals(reqVO.getIgnoreErrors())) { + throw e; + } + } + } + + return BatchUnitConvertRespVO.builder() + .results(results) + .successCount(successCount) + .failureCount(failureCount) + .totalCount(reqVO.getValues().size()) + .build(); + } + + @Override + public BatchUnitConvertRespVO batchConvertByName(BatchUnitConvertByNameReqVO reqVO) { + log.info("开始批量按名称转换: 源单位名称={}, 目标单位名称={}, 值数量={}", + reqVO.getSrcUnitName(), reqVO.getTgtUnitName(), reqVO.getValues().size()); + + List results = new ArrayList<>(); + int successCount = 0; + int failureCount = 0; + + // 1. 查询所有转换规则、关联关系和单位信息(只查询一次) + List conversions = unitConversionMapper.selectList(); + List relations = quantityUnitRelationMapper.selectList(); + List units = untInfoMapper.selectList(); + + for (BigDecimal value : reqVO.getValues()) { + try { + // 2. 使用工具类进行转换 + UnitConversionUtil.ConversionResult result = UnitConversionUtil.convertByName( + value, + reqVO.getSrcUnitName(), + reqVO.getTgtUnitName(), + conversions, + relations, + units, + reqVO.getPrecision() != null ? reqVO.getPrecision() : 6 + ); + + // 3. 构建成功结果 + results.add(BatchUnitConvertRespVO.UnitConvertResultItem.builder() + .success(true) + .data(UnitConvertRespVO.builder() + .srcUntName(reqVO.getSrcUnitName()) + .tgtUntName(reqVO.getTgtUnitName()) + .originalValue(value) + .convertedValue(result.getValue()) + .factor(result.getFactor()) + .strategy(result.getStrategy().name()) + .build()) + .build()); + successCount++; + } catch (Exception e) { + log.warn("按名称转换失败: 源单位名称={}, 目标单位名称={}, 值={}, 错误={}", + reqVO.getSrcUnitName(), reqVO.getTgtUnitName(), value, e.getMessage()); + + // 4. 构建失败结果 + results.add(BatchUnitConvertRespVO.UnitConvertResultItem.builder() + .success(false) + .errorMessage(e.getMessage()) + .build()); + failureCount++; + + // 5. 如果不忽略错误,直接抛出异常 + if (!Boolean.TRUE.equals(reqVO.getIgnoreErrors())) { + throw e; + } + } + } + + return BatchUnitConvertRespVO.builder() + .results(results) + .successCount(successCount) + .failureCount(failureCount) + .totalCount(reqVO.getValues().size()) + .build(); + } + + @Override + public UnitConversionValidationRespVO validateConversionPaths(Long quantityId) { + log.info("开始校验量纲 {} 的转换路径", quantityId); + + // 1. 查询量纲信息 + UnitQuantityDO quantity = unitQuantityService.getUnitQuantity(quantityId); + if (quantity == null) { + throw exception(UNIT_QUANTITY_NOT_EXISTS); + } + + // 2. 查询该量纲下的所有单位 + List relations = quantityUnitRelationMapper.selectList( + new LambdaQueryWrapperX() + .eq(QuantityUnitRelationDO::getUntQtyId, quantityId) + ); + + if (CollUtil.isEmpty(relations)) { + return buildEmptyValidationResult(quantityId, quantity); + } + + // 3. 获取单位详细信息 + List unitIds = relations.stream() + .map(QuantityUnitRelationDO::getUntId) + .collect(Collectors.toList()); + List units = untInfoMapper.selectByIds(unitIds); + Map unitMap = units.stream() + .collect(Collectors.toMap(UntInfoDO::getId, u -> u)); + + // 4. 找到基准单位 + QuantityUnitRelationDO baseRelation = relations.stream() + .filter(r -> r.getIsBse() == 1) + .findFirst() + .orElse(null); + + UnitConversionValidationRespVO.BaseUnitInfo baseUnitInfo = null; + Long baseUnitId = null; + if (baseRelation != null) { + UntInfoDO baseUnit = unitMap.get(baseRelation.getUntId()); + baseUnitId = baseRelation.getUntId(); + if (baseUnit != null) { + baseUnitInfo = UnitConversionValidationRespVO.BaseUnitInfo.builder() + .unitId(baseUnit.getId()) + .unitName(baseUnit.getName()) + .unitSymbol(baseUnit.getSmb()) + .build(); + } + } + + // 5. 查询该量纲下的所有转换规则 + List conversions = unitConversionMapper.selectList( + new LambdaQueryWrapperX() + .eq(UnitConversionDO::getUntQtyId, quantityId) + ); + + // 6. 检查所有单位对之间的转换路径(两两互相转换) + List unconvertibleUnits = new ArrayList<>(); + List conversionPaths = new ArrayList<>(); + + // 统计:能够互相转换的单位数量 + Set fullyConvertibleUnits = new HashSet<>(); + + // 遍历所有单位对 + for (int i = 0; i < units.size(); i++) { + UntInfoDO srcUnit = units.get(i); + boolean canConvertToAll = true; + + for (int j = 0; j < units.size(); j++) { + if (i == j) continue; // 跳过自己 + + UntInfoDO tgtUnit = units.get(j); + + // 尝试转换(使用工具类) + boolean canConvert = canConvert(srcUnit.getId(), tgtUnit.getId(), conversions, relations, baseUnitId); + + if (!canConvert) { + canConvertToAll = false; + // 只记录第一个方向的失败(避免重复:A→B 和 B→A) + if (i < j) { + unconvertibleUnits.add(UnitConversionValidationRespVO.UnconvertibleUnitInfo.builder() + .unitId(srcUnit.getId()) + .unitName(srcUnit.getName()) + .unitSymbol(srcUnit.getSmb()) + .reason(String.format("无法转换到 %s", tgtUnit.getName())) + .build()); + } + } else { + // 记录转换路径(只记录到基准单位的路径,避免太多) + if (baseUnitId != null && tgtUnit.getId().equals(baseUnitId)) { + String strategy = getConversionStrategy(srcUnit.getId(), tgtUnit.getId(), conversions, baseUnitId); + conversionPaths.add(UnitConversionValidationRespVO.ConversionPathInfo.builder() + .srcUnitId(srcUnit.getId()) + .srcUnitName(srcUnit.getName()) + .tgtUnitId(tgtUnit.getId()) + .tgtUnitName(tgtUnit.getName()) + .hasDirect(strategy.equals("DIRECT")) + .hasViaBase(strategy.equals("VIA_BASE_UNIT")) + .pathDescription(srcUnit.getName() + " → " + tgtUnit.getName() + + (strategy.equals("DIRECT") ? " (直接转换)" : " (通过基准单位)")) + .build()); + } + } + } + + if (canConvertToAll) { + fullyConvertibleUnits.add(srcUnit.getId()); + } + } + + // 7. 构建响应 + return UnitConversionValidationRespVO.builder() + .quantityId(quantityId) + .quantityName(quantity.getName()) + .quantitySymbol(quantity.getSymbol()) + .totalUnits(units.size()) + .convertibleUnits(fullyConvertibleUnits.size()) + .unconvertibleUnits(units.size() - fullyConvertibleUnits.size()) + .allConvertible(fullyConvertibleUnits.size() == units.size()) + .baseUnit(baseUnitInfo) + .unconvertibleUnitList(unconvertibleUnits) + .conversionPaths(conversionPaths) + .build(); + } + + /** + * 检查两个单位是否能够转换(考虑反向推导) + */ + private boolean canConvert(Long srcUnitId, Long tgtUnitId, + List conversions, + List relations, + Long baseUnitId) { + // 1. 检查直接转换(正向) + boolean hasDirectForward = conversions.stream() + .anyMatch(c -> c.getSrcUntId().equals(srcUnitId) && c.getTgtUntId().equals(tgtUnitId)); + if (hasDirectForward) { + return true; + } + + // 2. 检查直接转换(反向,可以推导) + boolean hasDirectReverse = conversions.stream() + .anyMatch(c -> c.getSrcUntId().equals(tgtUnitId) && c.getTgtUntId().equals(srcUnitId)); + if (hasDirectReverse) { + return true; + } + + // 3. 检查通过基准单位的间接转换 + if (baseUnitId == null) { + return false; + } + + // 如果源单位是基准单位 + if (srcUnitId.equals(baseUnitId)) { + // 检查是否有 基准 → 目标 的转换规则(正向或反向) + boolean hasBaseToTgt = conversions.stream() + .anyMatch(c -> c.getSrcUntId().equals(baseUnitId) && c.getTgtUntId().equals(tgtUnitId)); + boolean hasTgtToBase = conversions.stream() + .anyMatch(c -> c.getSrcUntId().equals(tgtUnitId) && c.getTgtUntId().equals(baseUnitId)); + return hasBaseToTgt || hasTgtToBase; + } + + // 如果目标单位是基准单位 + if (tgtUnitId.equals(baseUnitId)) { + // 检查是否有 源 → 基准 的转换规则(正向或反向) + boolean hasSrcToBase = conversions.stream() + .anyMatch(c -> c.getSrcUntId().equals(srcUnitId) && c.getTgtUntId().equals(baseUnitId)); + boolean hasBaseToSrc = conversions.stream() + .anyMatch(c -> c.getSrcUntId().equals(baseUnitId) && c.getTgtUntId().equals(srcUnitId)); + return hasSrcToBase || hasBaseToSrc; + } + + // 两者都不是基准单位,需要两步转换:源 → 基准 → 目标 + // 检查 源 → 基准(正向或反向) + boolean srcToBase = conversions.stream() + .anyMatch(c -> c.getSrcUntId().equals(srcUnitId) && c.getTgtUntId().equals(baseUnitId)); + boolean baseToSrc = conversions.stream() + .anyMatch(c -> c.getSrcUntId().equals(baseUnitId) && c.getTgtUntId().equals(srcUnitId)); + + // 检查 基准 → 目标(正向或反向) + boolean baseToTgt = conversions.stream() + .anyMatch(c -> c.getSrcUntId().equals(baseUnitId) && c.getTgtUntId().equals(tgtUnitId)); + boolean tgtToBase = conversions.stream() + .anyMatch(c -> c.getSrcUntId().equals(tgtUnitId) && c.getTgtUntId().equals(baseUnitId)); + + return (srcToBase || baseToSrc) && (baseToTgt || tgtToBase); + } + + /** + * 获取转换策略 + */ + private String getConversionStrategy(Long srcUnitId, Long tgtUnitId, + List conversions, + Long baseUnitId) { + // 检查直接转换 + boolean hasDirect = conversions.stream() + .anyMatch(c -> c.getSrcUntId().equals(srcUnitId) && c.getTgtUntId().equals(tgtUnitId)); + if (hasDirect) { + return "DIRECT"; + } + return "VIA_BASE_UNIT"; + } + + private UnitConversionValidationRespVO buildEmptyValidationResult(Long quantityId, UnitQuantityDO quantity) { + return UnitConversionValidationRespVO.builder() + .quantityId(quantityId) + .quantityName(quantity.getName()) + .quantitySymbol(quantity.getSymbol()) + .totalUnits(0) + .convertibleUnits(0) + .unconvertibleUnits(0) + .allConvertible(true) + .baseUnit(null) + .unconvertibleUnitList(new ArrayList<>()) + .conversionPaths(new ArrayList<>()) + .build(); + } + +} \ No newline at end of file diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/unitQuantity/UnitQuantityService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitQuantity/UnitQuantityService.java similarity index 77% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/unitQuantity/UnitQuantityService.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitQuantity/UnitQuantityService.java index 3000f82..34ce202 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/unitQuantity/UnitQuantityService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitQuantity/UnitQuantityService.java @@ -1,11 +1,10 @@ -package com.zt.plat.module.unitmanagement.service.UnitQuantity; +package com.zt.plat.module.base.service.unitQuantity; import java.util.*; import jakarta.validation.*; -import com.zt.plat.module.unitmanagement.controller.admin.UnitQuantity.vo.*; -import com.zt.plat.module.unitmanagement.dal.dataobject.UnitQuantity.UnitQuantityDO; +import com.zt.plat.module.base.controller.admin.unitQuantity.vo.*; +import com.zt.plat.module.base.dal.dataobject.unitQuantity.UnitQuantityDO; import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.framework.common.pojo.PageParam; /** * 计量单位量 Service 接口 @@ -59,4 +58,11 @@ public interface UnitQuantityService { */ PageResult getUnitQuantityPage(UnitQuantityPageReqVO pageReqVO); + /** + * 获取量纲及单位树 + * + * @return 量纲及单位树列表 + */ + List getUnitQuantityTree(); + } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitQuantity/UnitQuantityServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitQuantity/UnitQuantityServiceImpl.java new file mode 100644 index 0000000..c8566cc --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/unitQuantity/UnitQuantityServiceImpl.java @@ -0,0 +1,146 @@ +package com.zt.plat.module.base.service.unitQuantity; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.unitQuantity.vo.*; +import com.zt.plat.module.base.dal.dataobject.unitQuantity.UnitQuantityDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.unitQuantity.UnitQuantityMapper; +import com.zt.plat.module.base.dal.dao.quantityUnitRelation.QuantityUnitRelationMapper; +import com.zt.plat.module.base.dal.dao.untInfo.UntInfoMapper; +import com.zt.plat.module.base.dal.dataobject.quantityUnitRelation.QuantityUnitRelationDO; +import com.zt.plat.module.base.dal.dataobject.untInfo.UntInfoDO; +import java.util.stream.Collectors; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.module.unitmanagement.enums.UnitErrorCodeConstants.*; + +/** + * 计量单位量 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class UnitQuantityServiceImpl implements UnitQuantityService { + + @Resource + private UnitQuantityMapper unitQuantityMapper; + + @Resource + private QuantityUnitRelationMapper quantityUnitRelationMapper; + + @Resource + private UntInfoMapper untInfoMapper; + + @Override + public UnitQuantityRespVO createUnitQuantity(UnitQuantitySaveReqVO createReqVO) { + // 插入 + UnitQuantityDO unitQuantity = BeanUtils.toBean(createReqVO, UnitQuantityDO.class); + unitQuantityMapper.insert(unitQuantity); + // 返回 + return BeanUtils.toBean(unitQuantity, UnitQuantityRespVO.class); + } + + @Override + public void updateUnitQuantity(UnitQuantitySaveReqVO updateReqVO) { + // 校验存在 + validateUnitQuantityExists(updateReqVO.getId()); + // 更新 + UnitQuantityDO updateObj = BeanUtils.toBean(updateReqVO, UnitQuantityDO.class); + unitQuantityMapper.updateById(updateObj); + } + + @Override + public void deleteUnitQuantity(Long id) { + // 校验存在 + validateUnitQuantityExists(id); + // 删除 + unitQuantityMapper.deleteById(id); + } + + @Override + public void deleteUnitQuantityListByIds(List ids) { + // 校验存在 + validateUnitQuantityExists(ids); + // 删除 + unitQuantityMapper.deleteByIds(ids); + } + + private void validateUnitQuantityExists(List ids) { + List list = unitQuantityMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(UNIT_QUANTITY_NOT_EXISTS); + } + } + + private void validateUnitQuantityExists(Long id) { + if (unitQuantityMapper.selectById(id) == null) { + throw exception(UNIT_QUANTITY_NOT_EXISTS); + } + } + + @Override + public UnitQuantityDO getUnitQuantity(Long id) { + return unitQuantityMapper.selectById(id); + } + + @Override + public PageResult getUnitQuantityPage(UnitQuantityPageReqVO pageReqVO) { + return unitQuantityMapper.selectPage(pageReqVO); + } + + @Override + public List getUnitQuantityTree() { + // 1. 查询所有量纲 + List quantities = unitQuantityMapper.selectList(); + + // 2. 查询所有关联关系 + List relations = quantityUnitRelationMapper.selectList(); + + // 3. 查询所有单位 + List units = untInfoMapper.selectList(); + Map unitMap = units.stream() + .collect(Collectors.toMap(UntInfoDO::getId, u -> u)); + + // 4. 组装树形结构 + return quantities.stream().map(quantity -> { + UnitQuantityTreeRespVO treeVO = new UnitQuantityTreeRespVO(); + treeVO.setId(quantity.getId()); + treeVO.setName(quantity.getName()); + treeVO.setSymbol(quantity.getSymbol()); + treeVO.setDsp(quantity.getDsp()); + + // 获取该量纲下的所有单位 + List unitItems = relations.stream() + .filter(r -> r.getUntQtyId().equals(quantity.getId())) + .map(r -> { + UnitQuantityTreeRespVO.UnitItemVO unitItem = new UnitQuantityTreeRespVO.UnitItemVO(); + unitItem.setRelationId(r.getId()); + unitItem.setId(r.getUntId()); + unitItem.setIsBse(r.getIsBse()); + + // 填充单位信息 + UntInfoDO unit = unitMap.get(r.getUntId()); + if (unit != null) { + unitItem.setName(unit.getName()); + unitItem.setSmb(unit.getSmb()); + } + + return unitItem; + }) + .collect(Collectors.toList()); + + treeVO.setUnits(unitItems); + return treeVO; + }).collect(Collectors.toList()); + } + +} \ No newline at end of file diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/untinfo/UntInfoService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/untInfo/UntInfoService.java similarity index 81% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/untinfo/UntInfoService.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/untInfo/UntInfoService.java index 37a8967..2bd0a88 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/untinfo/UntInfoService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/untInfo/UntInfoService.java @@ -1,11 +1,10 @@ -package com.zt.plat.module.unitmanagement.service.UntInfo; +package com.zt.plat.module.base.service.untInfo; import java.util.*; import jakarta.validation.*; -import com.zt.plat.module.unitmanagement.controller.admin.UntInfo.vo.*; -import com.zt.plat.module.unitmanagement.dal.dataobject.UntInfo.UntInfoDO; +import com.zt.plat.module.base.controller.admin.untInfo.vo.*; +import com.zt.plat.module.base.dal.dataobject.untInfo.UntInfoDO; import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.framework.common.pojo.PageParam; /** * 计量单位 Service 接口 diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/untinfo/UntInfoServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/untInfo/UntInfoServiceImpl.java similarity index 83% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/untinfo/UntInfoServiceImpl.java rename to zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/untInfo/UntInfoServiceImpl.java index ea38763..0516cca 100644 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/untinfo/UntInfoServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/untInfo/UntInfoServiceImpl.java @@ -1,23 +1,20 @@ -package com.zt.plat.module.unitmanagement.service.UntInfo; +package com.zt.plat.module.base.service.untInfo; import cn.hutool.core.collection.CollUtil; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; import java.util.*; -import com.zt.plat.module.unitmanagement.controller.admin.UntInfo.vo.*; -import com.zt.plat.module.unitmanagement.dal.dataobject.UntInfo.UntInfoDO; +import com.zt.plat.module.base.controller.admin.untInfo.vo.*; +import com.zt.plat.module.base.dal.dataobject.untInfo.UntInfoDO; import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.framework.common.pojo.PageParam; import com.zt.plat.framework.common.util.object.BeanUtils; -import com.zt.plat.module.unitmanagement.dal.dao.UntInfo.UntInfoMapper; +import com.zt.plat.module.base.dal.dao.untInfo.UntInfoMapper; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; -import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; import static com.zt.plat.module.unitmanagement.enums.UnitErrorCodeConstants.*; /** diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/util/UnitConversionUtil.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/util/UnitConversionUtil.java new file mode 100644 index 0000000..2298332 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/util/UnitConversionUtil.java @@ -0,0 +1,406 @@ +package com.zt.plat.module.base.util; + +import com.zt.plat.module.base.dal.dataobject.unitConversion.UnitConversionDO; +import com.zt.plat.module.base.dal.dataobject.quantityUnitRelation.QuantityUnitRelationDO; +import com.zt.plat.module.base.dal.dataobject.untInfo.UntInfoDO; +import lombok.extern.slf4j.Slf4j; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.List; +import java.util.stream.Collectors; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.unitmanagement.enums.UnitErrorCodeConstants.*; + +/** + * 单位转换工具类 + * + *

支持三种转换策略: + *

    + *
  • 直接转换:使用预定义的转换规则
  • + *
  • 基准单位转换:通过基准单位进行中转
  • + *
  • 公式转换:使用自定义转换公式
  • + *
+ * + * @author 系统 + */ +@Slf4j +public class UnitConversionUtil { + + /** + * 转换策略枚举 + */ + public enum ConversionStrategy { + /** 直接转换 */ + DIRECT, + /** 基准单位转换 */ + VIA_BASE_UNIT, + /** 公式转换 */ + FORMULA, + /** 无法转换 */ + NONE + } + + /** + * 转换结果 + */ + public static class ConversionResult { + private final BigDecimal value; + private final BigDecimal factor; + private final ConversionStrategy strategy; + private final String formula; + + public ConversionResult(BigDecimal value, BigDecimal factor, ConversionStrategy strategy, String formula) { + this.value = value; + this.factor = factor; + this.strategy = strategy; + this.formula = formula; + } + + public BigDecimal getValue() { + return value; + } + + public BigDecimal getFactor() { + return factor; + } + + public ConversionStrategy getStrategy() { + return strategy; + } + + public String getFormula() { + return formula; + } + } + + /** + * 单位转换 + * + * @param value 待转换的值 + * @param srcUntId 源单位ID + * @param tgtUntId 目标单位ID + * @param conversions 转换规则列表 + * @param relations 量纲-单位关联关系列表 + * @param precision 精度(小数位数) + * @return 转换结果 + */ + public static ConversionResult convert( + BigDecimal value, + Long srcUntId, + Long tgtUntId, + List conversions, + List relations, + int precision) { + + // 1. 如果源单位和目标单位相同,直接返回 + if (srcUntId.equals(tgtUntId)) { + return new ConversionResult(value, BigDecimal.ONE, ConversionStrategy.DIRECT, "相同单位,无需转换"); + } + + // 2. 尝试直接转换 + ConversionResult directResult = tryDirectConversion(value, srcUntId, tgtUntId, conversions, precision); + if (directResult != null) { + return directResult; + } + + // 3. 尝试通过基准单位转换 + ConversionResult viaBaseResult = tryViaBaseUnitConversion(value, srcUntId, tgtUntId, conversions, relations, precision); + if (viaBaseResult != null) { + return viaBaseResult; + } + + // 4. 无法转换 - 抛出业务异常 + log.warn("无法找到从单位 {} 到单位 {} 的转换路径", srcUntId, tgtUntId); + throw exception(UNIT_CONVERSION_PATH_NOT_FOUND, + "ID:" + srcUntId, "ID:" + tgtUntId); + } + + /** + * 尝试直接转换(支持自动反向推导) + */ + private static ConversionResult tryDirectConversion( + BigDecimal value, + Long srcUntId, + Long tgtUntId, + List conversions, + int precision) { + + // 1. 查找正向转换规则:源 → 目标 + UnitConversionDO forwardConversion = conversions.stream() + .filter(c -> c.getSrcUntId().equals(srcUntId) && c.getTgtUntId().equals(tgtUntId)) + .findFirst() + .orElse(null); + + if (forwardConversion != null) { + BigDecimal factor = forwardConversion.getFctr(); + BigDecimal result = value.multiply(factor).setScale(precision, RoundingMode.HALF_UP); + String formula = forwardConversion.getFmu() != null ? forwardConversion.getFmu() : + String.format("value * %s", factor); + + log.debug("直接转换(正向): {} (单位{}) * {} = {} (单位{})", value, srcUntId, factor, result, tgtUntId); + return new ConversionResult(result, factor, ConversionStrategy.DIRECT, formula); + } + + // 2. 查找反向转换规则:目标 → 源,然后取倒数 + UnitConversionDO reverseConversion = conversions.stream() + .filter(c -> c.getSrcUntId().equals(tgtUntId) && c.getTgtUntId().equals(srcUntId)) + .findFirst() + .orElse(null); + + if (reverseConversion != null) { + // 反向系数:如果 目标→源 的系数是 f,则 源→目标 的系数是 1/f + BigDecimal reverseFactor = reverseConversion.getFctr(); + BigDecimal factor = BigDecimal.ONE.divide(reverseFactor, Math.max(precision + 10, 20), RoundingMode.HALF_UP); + BigDecimal result = value.multiply(factor).setScale(precision, RoundingMode.HALF_UP); + String formula = String.format("value / %s (反向推导)", reverseFactor); + + log.debug("直接转换(反向推导): {} (单位{}) / {} = {} (单位{})", value, srcUntId, reverseFactor, result, tgtUntId); + return new ConversionResult(result, factor, ConversionStrategy.DIRECT, formula); + } + + return null; + } + + /** + * 尝试通过基准单位转换 + */ + private static ConversionResult tryViaBaseUnitConversion( + BigDecimal value, + Long srcUntId, + Long tgtUntId, + List conversions, + List relations, + int precision) { + + // 1. 找到源单位和目标单位的量纲 + QuantityUnitRelationDO srcRelation = relations.stream() + .filter(r -> r.getUntId().equals(srcUntId)) + .findFirst() + .orElse(null); + + QuantityUnitRelationDO tgtRelation = relations.stream() + .filter(r -> r.getUntId().equals(tgtUntId)) + .findFirst() + .orElse(null); + + if (srcRelation == null || tgtRelation == null) { + log.warn("找不到单位 {} 或 {} 的量纲关联关系", srcUntId, tgtUntId); + return null; + } + + // 2. 检查是否属于同一量纲 + if (!srcRelation.getUntQtyId().equals(tgtRelation.getUntQtyId())) { + log.warn("单位 {} 和 {} 不属于同一量纲", srcUntId, tgtUntId); + return null; + } + + // 3. 找到基准单位 + Long quantityId = srcRelation.getUntQtyId(); + QuantityUnitRelationDO baseRelation = relations.stream() + .filter(r -> r.getUntQtyId().equals(quantityId) && r.getIsBse() == 1) + .findFirst() + .orElse(null); + + if (baseRelation == null) { + log.warn("量纲 {} 没有设置基准单位", quantityId); + return null; + } + + Long baseUnitId = baseRelation.getUntId(); + + // 4. 源单位 → 基准单位 + BigDecimal toBaseValue; + BigDecimal toBaseFactor; + if (srcUntId.equals(baseUnitId)) { + toBaseValue = value; + toBaseFactor = BigDecimal.ONE; + } else { + ConversionResult toBaseResult = tryDirectConversion(value, srcUntId, baseUnitId, conversions, precision); + if (toBaseResult == null) { + log.warn("无法从源单位 {} 转换到基准单位 {}", srcUntId, baseUnitId); + return null; + } + toBaseValue = toBaseResult.getValue(); + toBaseFactor = toBaseResult.getFactor(); + } + + // 5. 基准单位 → 目标单位 + BigDecimal finalValue; + BigDecimal fromBaseFactor; + if (tgtUntId.equals(baseUnitId)) { + finalValue = toBaseValue; + fromBaseFactor = BigDecimal.ONE; + } else { + ConversionResult fromBaseResult = tryDirectConversion(toBaseValue, baseUnitId, tgtUntId, conversions, precision); + if (fromBaseResult == null) { + log.warn("无法从基准单位 {} 转换到目标单位 {}", baseUnitId, tgtUntId); + return null; + } + finalValue = fromBaseResult.getValue(); + fromBaseFactor = fromBaseResult.getFactor(); + } + + // 6. 计算总转换因子 + BigDecimal totalFactor = toBaseFactor.multiply(fromBaseFactor); + String formula = String.format("通过基准单位(ID:%d): value * %s * %s", baseUnitId, toBaseFactor, fromBaseFactor); + + log.debug("基准单位转换: {} (单位{}) → {} (基准{}) → {} (单位{})", + value, srcUntId, toBaseValue, baseUnitId, finalValue, tgtUntId); + + return new ConversionResult(finalValue, totalFactor, ConversionStrategy.VIA_BASE_UNIT, formula); + } + + /** + * 批量转换 + * + * @param values 待转换的值列表 + * @param srcUntId 源单位ID + * @param tgtUntId 目标单位ID + * @param conversions 转换规则列表 + * @param relations 量纲-单位关联关系列表 + * @param precision 精度(小数位数) + * @return 转换结果列表 + */ + public static List batchConvert( + List values, + Long srcUntId, + Long tgtUntId, + List conversions, + List relations, + int precision) { + + return values.stream() + .map(value -> convert(value, srcUntId, tgtUntId, conversions, relations, precision)) + .collect(Collectors.toList()); + } + + /** + * 按单位符号转换(推荐使用) + * + * @param value 待转换的值 + * @param srcUnitSymbol 源单位符号(如: "kg", "m", "km") + * @param tgtUnitSymbol 目标单位符号 + * @param conversions 转换规则列表 + * @param relations 量纲-单位关联关系列表 + * @param units 单位信息列表 + * @param precision 精度(小数位数) + * @return 转换结果 + */ + public static ConversionResult convertBySymbol( + BigDecimal value, + String srcUnitSymbol, + String tgtUnitSymbol, + List conversions, + List relations, + List units, + int precision) { + + // 1. 根据符号查找单位 + UntInfoDO srcUnit = units.stream() + .filter(u -> u.getSmb() != null && u.getSmb().equals(srcUnitSymbol)) + .findFirst() + .orElseThrow(() -> exception(UNIT_NOT_FOUND, "符号:" + srcUnitSymbol)); + + UntInfoDO tgtUnit = units.stream() + .filter(u -> u.getSmb() != null && u.getSmb().equals(tgtUnitSymbol)) + .findFirst() + .orElseThrow(() -> exception(UNIT_NOT_FOUND, "符号:" + tgtUnitSymbol)); + + log.debug("按符号转换: {} ({}) → {} ({})", srcUnitSymbol, srcUnit.getId(), tgtUnitSymbol, tgtUnit.getId()); + + // 2. 调用原有方法 + return convert(value, srcUnit.getId(), tgtUnit.getId(), conversions, relations, precision); + } + + /** + * 按单位名称转换 + * + * @param value 待转换的值 + * @param srcUnitName 源单位名称(如: "千克", "米", "千米") + * @param tgtUnitName 目标单位名称 + * @param conversions 转换规则列表 + * @param relations 量纲-单位关联关系列表 + * @param units 单位信息列表 + * @param precision 精度(小数位数) + * @return 转换结果 + */ + public static ConversionResult convertByName( + BigDecimal value, + String srcUnitName, + String tgtUnitName, + List conversions, + List relations, + List units, + int precision) { + + // 1. 根据名称查找单位 + UntInfoDO srcUnit = units.stream() + .filter(u -> u.getName() != null && u.getName().equals(srcUnitName)) + .findFirst() + .orElseThrow(() -> exception(UNIT_NOT_FOUND, "名称:" + srcUnitName)); + + UntInfoDO tgtUnit = units.stream() + .filter(u -> u.getName() != null && u.getName().equals(tgtUnitName)) + .findFirst() + .orElseThrow(() -> exception(UNIT_NOT_FOUND, "名称:" + tgtUnitName)); + + log.debug("按名称转换: {} ({}) → {} ({})", srcUnitName, srcUnit.getId(), tgtUnitName, tgtUnit.getId()); + + // 2. 调用原有方法 + return convert(value, srcUnit.getId(), tgtUnit.getId(), conversions, relations, precision); + } + + /** + * 按单位符号批量转换 + * + * @param values 待转换的值列表 + * @param srcUnitSymbol 源单位符号 + * @param tgtUnitSymbol 目标单位符号 + * @param conversions 转换规则列表 + * @param relations 量纲-单位关联关系列表 + * @param units 单位信息列表 + * @param precision 精度(小数位数) + * @return 转换结果列表 + */ + public static List batchConvertBySymbol( + List values, + String srcUnitSymbol, + String tgtUnitSymbol, + List conversions, + List relations, + List units, + int precision) { + + return values.stream() + .map(value -> convertBySymbol(value, srcUnitSymbol, tgtUnitSymbol, conversions, relations, units, precision)) + .collect(Collectors.toList()); + } + + /** + * 按单位名称批量转换 + * + * @param values 待转换的值列表 + * @param srcUnitName 源单位名称 + * @param tgtUnitName 目标单位名称 + * @param conversions 转换规则列表 + * @param relations 量纲-单位关联关系列表 + * @param units 单位信息列表 + * @param precision 精度(小数位数) + * @return 转换结果列表 + */ + public static List batchConvertByName( + List values, + String srcUnitName, + String tgtUnitName, + List conversions, + List relations, + List units, + int precision) { + + return values.stream() + .map(value -> convertByName(value, srcUnitName, tgtUnitName, conversions, relations, units, precision)) + .collect(Collectors.toList()); + } +} diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/departmentmaterial/DepartmentMaterialMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/departmentmaterial/DepartmentMaterialMapper.xml new file mode 100644 index 0000000..cd7e17f --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/departmentmaterial/DepartmentMaterialMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/materialclasses/MaterialClassesMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/materialclasses/MaterialClassesMapper.xml new file mode 100644 index 0000000..1567f9a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/materialclasses/MaterialClassesMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/materialhasclasses/MaterialHasClassesMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/materialhasclasses/MaterialHasClassesMapper.xml new file mode 100644 index 0000000..dc7f466 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/materialhasclasses/MaterialHasClassesMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/materialhasproperties/MaterialHasPropertiesMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/materialhasproperties/MaterialHasPropertiesMapper.xml new file mode 100644 index 0000000..34df4f1 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/materialhasproperties/MaterialHasPropertiesMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/materialproperties/MaterialPropertiesMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/materialproperties/MaterialPropertiesMapper.xml new file mode 100644 index 0000000..0c323f5 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/materialproperties/MaterialPropertiesMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/processinginfomation/ProcessingInfomationMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/processinginfomation/ProcessingInfomationMapper.xml new file mode 100644 index 0000000..bc6a4f1 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/processinginfomation/ProcessingInfomationMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/processinginfomationoperation/ProcessingInfomationOperationMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/processinginfomationoperation/ProcessingInfomationOperationMapper.xml new file mode 100644 index 0000000..be450c0 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/processinginfomationoperation/ProcessingInfomationOperationMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/processingoperation/ProcessingOperationMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/processingoperation/ProcessingOperationMapper.xml new file mode 100644 index 0000000..9b54843 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/processingoperation/ProcessingOperationMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/processingoperationmaterial/ProcessingOperationMaterialMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/processingoperationmaterial/ProcessingOperationMaterialMapper.xml new file mode 100644 index 0000000..d365047 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/processingoperationmaterial/ProcessingOperationMaterialMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/resources/mapper/QuantityUnitRelation/QuantityUnitRelationMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/unitmanagement/QuantityUnitRelation/QuantityUnitRelationMapper.xml similarity index 100% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/resources/mapper/QuantityUnitRelation/QuantityUnitRelationMapper.xml rename to zt-module-base/zt-module-base-server/src/main/resources/mapper/unitmanagement/QuantityUnitRelation/QuantityUnitRelationMapper.xml diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/resources/mapper/UnitConversion/UnitConversionMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/unitmanagement/UnitConversion/UnitConversionMapper.xml similarity index 100% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/resources/mapper/UnitConversion/UnitConversionMapper.xml rename to zt-module-base/zt-module-base-server/src/main/resources/mapper/unitmanagement/UnitConversion/UnitConversionMapper.xml diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/resources/mapper/unitQuantity/UnitQuantityMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/unitmanagement/unitQuantity/UnitQuantityMapper.xml similarity index 100% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/resources/mapper/unitQuantity/UnitQuantityMapper.xml rename to zt-module-base/zt-module-base-server/src/main/resources/mapper/unitmanagement/unitQuantity/UnitQuantityMapper.xml diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/resources/mapper/untinfo/UntInfoMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/unitmanagement/untinfo/UntInfoMapper.xml similarity index 100% rename from zt-module-unit-management/zt-module-unit-management-server/src/main/resources/mapper/untinfo/UntInfoMapper.xml rename to zt-module-base/zt-module-base-server/src/main/resources/mapper/unitmanagement/untinfo/UntInfoMapper.xml diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java index 66a3d5f..cbb52ad 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java @@ -2,9 +2,11 @@ package com.zt.plat.module.contractorder.api; import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.api.dto.order.PurchaseOrderWithDetailsDTO; -import com.zt.plat.module.contractorder.api.vo.contract.international.ContractRequest; +import com.zt.plat.module.contractorder.api.vo.contract.international.IntContract; +import com.zt.plat.module.contractorder.api.vo.contract.international.IntContractPageReq; import com.zt.plat.module.contractorder.enums.ApiConstants; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -39,6 +41,10 @@ public interface ContractApi { CommonResult> getOrderByOrderIds(@RequestBody List ids); @PostMapping(PREFIX + "/push") - @Operation(summary = "国贸2.0系统创建合同调用") - CommonResult push(@Valid @RequestBody ContractRequest reqVO) throws Exception; + @Operation(summary = "国贸2.0系统推送合同") + CommonResult push(@Valid @RequestBody IntContract reqVO) throws Exception; + + @GetMapping(PREFIX + "/logistics/list/page") + @Operation(summary = "国贸2.0系统合同分页查询") + CommonResult> logisticsListPage(IntContractPageReq pageReq); } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java index 3e10aa4..4def12c 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java @@ -233,6 +233,9 @@ public class ContractRespDTO { @Schema(description = "合同分类(字典:SPLY_BSN_TP)") private String businessType; + @Schema(description = "代理方名称") + private String agentName; + // 物料信息 private List detail; diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractRespVO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractRespVO.java index cf1c8cc..1c1bbc1 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractRespVO.java @@ -233,9 +233,15 @@ public class ContractRespVO { @Schema(description = "ERP乙方公司名称") private String erpSalesCompanyName; + @Schema(description = "是否内部企业(字典:ERP_CTRT_YN)") + private String isInternal; + @Schema(description = "合同分类(字典:SPLY_BSN_TP)") private String businessType; + @Schema(description = "代理方名称") + private String agentName; + // 物料信息 private List detail; diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractSaveReqVO.java index eeb6bc9..6b0bd4c 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractSaveReqVO.java @@ -208,6 +208,9 @@ public class ContractSaveReqVO { @Schema(description = "合同分类(字典:SPLY_BSN_TP)") private String businessType; + @Schema(description = "代理方名称") + private String agentName; + // 物料信息 private List detail; diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ContractRequest.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/IntContract.java similarity index 99% rename from zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ContractRequest.java rename to zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/IntContract.java index b6b4507..238351c 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ContractRequest.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/IntContract.java @@ -10,7 +10,7 @@ import java.util.List; * 合同请求主实体 */ @Data -public class ContractRequest { +public class IntContract { // 基础信息 @Schema(description = "操作标志") diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/IntContractPageReq.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/IntContractPageReq.java new file mode 100644 index 0000000..abddeca --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/IntContractPageReq.java @@ -0,0 +1,13 @@ +package com.zt.plat.module.contractorder.api.vo.contract.international; + +import com.zt.plat.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class IntContractPageReq extends PageParam { + @Schema(description = "合同编号") + private String contractCode; + @Schema(description = "合同名称") + private String contractName; +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java index 8df642d..4bf0faf 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java @@ -8,6 +8,15 @@ import lombok.Getter; @Getter public enum DictEnum { + /** 供应链业务大类 */ + SPLY_BSN_TP_03BX("货物保险","03BX",null), + SPLY_BSN_TP_11CC("货物保管仓储","11CC",null), + SPLY_BSN_TP_10YS("货物运输","10YS",null), + SPLY_BSN_TP_13HD("货运代理","13HD",null), + SPLY_BSN_TP_ENTED("来料加工","ENTED",null), + SPLY_BSN_TP_ENT("委托加工","ENT",null), + SPLY_BSN_TP_PUR("采购","PUR",null), + SPLY_BSN_TP_SALE("销售","SALE",null), /** 业务类型 */ BSN_TP_3("物流合同","3",null), /** ERP合同类型编码 */ diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java index 5395f2d..95bbc35 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java @@ -1,9 +1,12 @@ package com.zt.plat.module.contractorder.api; import cn.hutool.extra.spring.SpringUtil; +import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.api.dto.order.PrchOrdDtlDTO; import com.zt.plat.module.contractorder.api.dto.order.PurchaseOrderWithDetailsDTO; @@ -39,6 +42,7 @@ import java.lang.reflect.Field; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -147,7 +151,7 @@ public class ContractApiImpl implements ContractApi { @Transactional @Override - public CommonResult push(@RequestBody ContractRequest reqVO) throws Exception { + public CommonResult push(@RequestBody IntContract reqVO) throws Exception { // 合同主信息表映射 ContractMainDO contractMainDO = getcontractMainDO(reqVO); @@ -339,6 +343,128 @@ public class ContractApiImpl implements ContractApi { return success(true); } + @Override + public CommonResult> logisticsListPage(IntContractPageReq pageReq) { + + // 查询条件 + LambdaQueryWrapperX queryWrapperX = new LambdaQueryWrapperX<>(); + // 合同类型 + queryWrapperX.in( + ContractMainDO::getBusinessType, + Arrays.asList( + DictEnum.SPLY_BSN_TP_13HD.getCode(), + DictEnum.SPLY_BSN_TP_10YS.getCode(), + DictEnum.SPLY_BSN_TP_11CC.getCode(), + DictEnum.SPLY_BSN_TP_03BX.getCode() + ) + ); + // 合同编号 + queryWrapperX.likeIfPresent(ContractMainDO::getContractPaperNumber, pageReq.getContractCode()); + // 合同名称 + queryWrapperX.likeIfPresent(ContractMainDO::getContractName, pageReq.getContractName()); + + // 查询 + PageResult pageResult = contractMainMapper.selectPage(pageReq, queryWrapperX); + + // 返回数据 + PageResult result = new PageResult<>(); + List resultList = new ArrayList<>(); + // 设置返回数据 + result.setTotal(pageResult.getTotal()); + result.setList(resultList); + + // 遍历查询结果,设置返回数据列表 + if (pageResult.getTotal() > 0) { + pageResult.getList().forEach(contractMainDO -> { + + // 合同ID + Long mainDOId = contractMainDO.getId(); + + // 合同主信息 + List mainFields = contractOtherFieldMapper.selectList( + new LambdaQueryWrapperX() + .eq(ContractOtherFieldDO::getContractMainId, mainDOId) + .isNull(ContractOtherFieldDO::getRelativityId) + ); + JSONObject resultJson = new JSONObject(); + mainFields.forEach(field + -> resultJson.putOnce(field.getFieldNumber(), field.getFieldValue())); + + // 附件清单列表 + List attachForms = contractOtherFormMapper.selectList( + new LambdaQueryWrapperX() + .eq(ContractOtherFormDO::getContractMainId, mainDOId) + .eq(ContractOtherFormDO::getFormNumber, "attachList") + ); + if (attachForms != null && !attachForms.isEmpty()) { + JSONArray jsonArray = new JSONArray(); + attachForms.forEach(form -> { + ContractOtherFieldDO fieldDO = contractOtherFieldMapper.selectOne( + new LambdaQueryWrapperX() + .eq(ContractOtherFieldDO::getContractMainId, mainDOId) + .eq(ContractOtherFieldDO::getRelativityId, form.getId()) + ); + if (fieldDO != null) { + jsonArray.add(fieldDO.getFieldValue()); + } + }); + if (!jsonArray.isEmpty()) { + resultJson.putOnce("attachList", jsonArray); + } + } + + // 客商信息 + resultJson.putOnce("partnerList", getQueryFieldJsonArray(mainDOId, "partnerList")); + // 收发港/站点 + resultJson.putOnce("goodsSiteList", getQueryFieldJsonArray(mainDOId, "goodsSiteList")); + // 货物装卸要求 + resultJson.putOnce("loadingRequirementsList", getQueryFieldJsonArray(mainDOId, "loadingRequirementsList")); + // 收付款账号 + resultJson.putOnce("accountList", getQueryFieldJsonArray(mainDOId, "accountList")); + // 费用明细 + resultJson.putOnce("freightList", getQueryFieldJsonArray(mainDOId, "freightList")); + // 服务费用项目 + resultJson.putOnce("serviceFeeList", getQueryFieldJsonArray(mainDOId, "serviceFeeList")); + // 仓库明细 + resultJson.putOnce("storgeList", getQueryFieldJsonArray(mainDOId, "storgeList")); + // 接货地址 + resultJson.putOnce("receivingAddrList", getQueryFieldJsonArray(mainDOId, "receivingAddrList")); + + // 添加到结果集 + resultList.add(resultJson.toBean(IntContract.class)); + }); + } + + return success(result); + } + + private JSONArray getQueryFieldJsonArray(Long mainDOId, String fieldName) { + + JSONArray jsonArray = new JSONArray(); + List forms = contractOtherFormMapper.selectList( + new LambdaQueryWrapperX() + .eq(ContractOtherFormDO::getContractMainId, mainDOId) + .eq(ContractOtherFormDO::getFormNumber, fieldName) + ); + if (forms != null && !forms.isEmpty()) { + forms.forEach(form -> { + List fieldDOs = contractOtherFieldMapper.selectList( + new LambdaQueryWrapperX() + .eq(ContractOtherFieldDO::getContractMainId, mainDOId) + .eq(ContractOtherFieldDO::getRelativityId, form.getId()) + ); + if (fieldDOs != null && !fieldDOs.isEmpty()) { + JSONObject jsonObject = new JSONObject(); + fieldDOs.forEach(field + -> jsonObject.putOnce(field.getFieldNumber(), field.getFieldValue())); + jsonArray.add(jsonObject); + } + }); + } + + return jsonArray.isEmpty() ? null : jsonArray; + } + @Override public CommonResult> getOrderByOrderIds(List ids) { if (ids == null || ids.isEmpty()) { @@ -370,7 +496,7 @@ public class ContractApiImpl implements ContractApi { return CommonResult.success(purchaseOrderDetails); } - private ContractMainDO getcontractMainDO(ContractRequest reqVO) { + private ContractMainDO getcontractMainDO(IntContract reqVO) { // 合同主信息表映射 ContractMainDO contractMainDO = new ContractMainDO(); @@ -430,8 +556,8 @@ public class ContractApiImpl implements ContractApi { // 本币履约保证金 默认值:NULL // 交易方式 默认值:先款后货 contractMainDO.setHasPayable(DictEnum.HS_PYBL_TP_PRE_PAY.getCode()); - // 合同类型 默认值:物流合同 - contractMainDO.setContractType(DictEnum.BSN_TP_3.getCode()); + // 合同类型 + contractMainDO.setBusinessType(reqVO.getContractType()); // 签署地 -> 签约地 (40-签约必填) contractMainDO.setSignPlace(reqVO.getSignSite()); // 甲方公司编号(采购方) -> 账套代码 diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java index ea05762..f5d9681 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java @@ -394,4 +394,9 @@ public class ContractMainDO extends BusinessBaseDO { */ @TableField("BSN_TP") private String businessType; + /** + * 代理方名称 + */ + @TableField("AGT_NAME") + private String agentName; } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractMainMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractMainMapper.java index 6819ec4..85bfebd 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractMainMapper.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractMainMapper.java @@ -17,10 +17,11 @@ public interface ContractMainMapper extends BaseMapperX { default PageResult selectContractPage(ContractPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(ContractMainDO::getContractName, reqVO.getContractName()) - .eqIfPresent(ContractMainDO::getContractPaperNumber, reqVO.getContractPaperNumber()) + .likeIfPresent(ContractMainDO::getContractPaperNumber, reqVO.getContractPaperNumber()) .eqIfPresent(ContractMainDO::getDirection, reqVO.getDirection()) .betweenIfPresent(ContractMainDO::getSignDate, reqVO.getSignDate()) .likeIfPresent(ContractMainDO::getPurchaseCompanyName, reqVO.getPurchaseCompanyName()) + .likeIfPresent(ContractMainDO::getSalesCompanyName, reqVO.getSalesCompanyName()) .eqIfPresent(ContractMainDO::getBasicAmount, reqVO.getBasicAmount()) .eqIfPresent(ContractMainDO::getStatus, reqVO.getStatus()) .eqIfPresent(ContractMainDO::getBusinessType, reqVO.getBusinessType()) diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java index 5267701..df082ac 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java @@ -2,6 +2,7 @@ package com.zt.plat.module.erp.controller.admin.erp.vo; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -82,6 +83,7 @@ public class ErpMaterialSaveReqVO { private String gradeUnit; @Schema(description = "小数位数") + @Min(value = 1, message = "数值必须大于0") private Long decimalValue; } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpMaterialMapper.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpMaterialMapper.java index ded32ed..d1a9559 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpMaterialMapper.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpMaterialMapper.java @@ -20,7 +20,7 @@ public interface ErpMaterialMapper extends BaseMapperX { default PageResult selectPage(ErpMaterialPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(ErpMaterialDO::getDownCenterNumber, reqVO.getDownCenterNumber()) + .likeIfPresent(ErpMaterialDO::getDownCenterNumber, reqVO.getDownCenterNumber()) .eqIfPresent(ErpMaterialDO::getCenterNumber, reqVO.getCenterNumber()) .betweenIfPresent(ErpMaterialDO::getCreateDate, reqVO.getCreateDate()) .eqIfPresent(ErpMaterialDO::getMaterialType, reqVO.getMaterialType()) diff --git a/zt-module-unit-management/pom.xml b/zt-module-unit-management/pom.xml deleted file mode 100644 index d23f6df..0000000 --- a/zt-module-unit-management/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - dsc-base - com.zt.plat - ${revision} - - - zt-module-unit-management-api - zt-module-unit-management-server - - 4.0.0 - - zt-module-unit-management - pom - - ${project.artifactId} - - 计量单位 模块。 - - - diff --git a/zt-module-unit-management/zt-module-unit-management-api/pom.xml b/zt-module-unit-management/zt-module-unit-management-api/pom.xml deleted file mode 100644 index a3915ed..0000000 --- a/zt-module-unit-management/zt-module-unit-management-api/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - zt-module-unit-management - com.zt.plat - ${revision} - - 4.0.0 - zt-module-unit-management-api - jar - - ${project.artifactId} - - 暴露给其它模块调用 - - - - - com.zt.plat - zt-common - - - - org.springdoc - springdoc-openapi-starter-webmvc-api - provided - - - - - org.springframework.boot - spring-boot-starter-validation - true - - - - - org.springframework.cloud - spring-cloud-starter-openfeign - true - - - - diff --git a/zt-module-unit-management/zt-module-unit-management-server/pom.xml b/zt-module-unit-management/zt-module-unit-management-server/pom.xml deleted file mode 100644 index d746339..0000000 --- a/zt-module-unit-management/zt-module-unit-management-server/pom.xml +++ /dev/null @@ -1,151 +0,0 @@ - - - - zt-module-unit-management - com.zt.plat - ${revision} - - 4.0.0 - jar - - zt-module-unit-management-server - - ${project.artifactId} - - 计量单位管理 模块。 - - - - - - com.zt.plat - zt-spring-boot-starter-env - - - - - com.zt.plat - zt-module-system-api - ${revision} - - - com.zt.plat - zt-module-infra-api - ${revision} - - - - com.zt.plat - zt-module-unit-management-api - ${revision} - - - - - com.zt.plat - zt-spring-boot-starter-biz-data-permission - - - com.zt.plat - zt-spring-boot-starter-biz-tenant - - - - - com.zt.plat - zt-spring-boot-starter-web - - - - com.zt.plat - zt-spring-boot-starter-security - - - - - com.zt.plat - zt-spring-boot-starter-mybatis - - - - com.zt.plat - zt-spring-boot-starter-redis - - - - - com.zt.plat - zt-spring-boot-starter-rpc - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-discovery - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-config - - - - - com.zt.plat - zt-spring-boot-starter-job - - - - - com.zt.plat - zt-spring-boot-starter-mq - - - - - com.zt.plat - zt-spring-boot-starter-test - - - - - com.zt.plat - zt-spring-boot-starter-excel - - - - - com.zt.plat - zt-spring-boot-starter-monitor - - - com.zt.plat - zt-spring-boot-starter-biz-business - ${revision} - - - - - - ${project.artifactId} - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/UnitConversion/UnitConversionService.java b/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/UnitConversion/UnitConversionService.java deleted file mode 100644 index c5edb6d..0000000 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/UnitConversion/UnitConversionService.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.zt.plat.module.unitmanagement.service.UnitConversion; - -import java.util.*; -import jakarta.validation.*; -import com.zt.plat.module.unitmanagement.controller.admin.UnitConversion.vo.*; -import com.zt.plat.module.unitmanagement.dal.dataobject.UnitConversion.UnitConversionDO; -import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.framework.common.pojo.PageParam; - -/** - * 单位转换 Service 接口 - * - * @author 后台管理-1 - */ -public interface UnitConversionService { - - /** - * 创建单位转换 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - UnitConversionRespVO createUnitConversion(@Valid UnitConversionSaveReqVO createReqVO); - - /** - * 更新单位转换 - * - * @param updateReqVO 更新信息 - */ - void updateUnitConversion(@Valid UnitConversionSaveReqVO updateReqVO); - - /** - * 删除单位转换 - * - * @param id 编号 - */ - void deleteUnitConversion(Long id); - - /** - * 批量删除单位转换 - * - * @param ids 编号 - */ - void deleteUnitConversionListByIds(List ids); - - /** - * 获得单位转换 - * - * @param id 编号 - * @return 单位转换 - */ - UnitConversionDO getUnitConversion(Long id); - - /** - * 获得单位转换分页 - * - * @param pageReqVO 分页查询 - * @return 单位转换分页 - */ - PageResult getUnitConversionPage(UnitConversionPageReqVO pageReqVO); - -} \ No newline at end of file diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/UnitConversion/UnitConversionServiceImpl.java b/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/UnitConversion/UnitConversionServiceImpl.java deleted file mode 100644 index 23adef1..0000000 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/UnitConversion/UnitConversionServiceImpl.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.zt.plat.module.unitmanagement.service.UnitConversion; - -import cn.hutool.core.collection.CollUtil; -import org.springframework.stereotype.Service; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import com.zt.plat.module.unitmanagement.controller.admin.UnitConversion.vo.*; -import com.zt.plat.module.unitmanagement.dal.dataobject.UnitConversion.UnitConversionDO; -import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.framework.common.pojo.PageParam; -import com.zt.plat.framework.common.util.object.BeanUtils; - -import com.zt.plat.module.unitmanagement.dal.dao.UnitConversion.UnitConversionMapper; - -import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; -import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; -import static com.zt.plat.module.unitmanagement.enums.UnitErrorCodeConstants.*; - -/** - * 单位转换 Service 实现类 - * - * @author 后台管理-1 - */ -@Service -@Validated -public class UnitConversionServiceImpl implements UnitConversionService { - - @Resource - private UnitConversionMapper unitConversionMapper; - - @Override - public UnitConversionRespVO createUnitConversion(UnitConversionSaveReqVO createReqVO) { - // 插入 - UnitConversionDO unitConversion = BeanUtils.toBean(createReqVO, UnitConversionDO.class); - unitConversionMapper.insert(unitConversion); - // 返回 - return BeanUtils.toBean(unitConversion, UnitConversionRespVO.class); - } - - @Override - public void updateUnitConversion(UnitConversionSaveReqVO updateReqVO) { - // 校验存在 - validateUnitConversionExists(updateReqVO.getId()); - // 更新 - UnitConversionDO updateObj = BeanUtils.toBean(updateReqVO, UnitConversionDO.class); - unitConversionMapper.updateById(updateObj); - } - - @Override - public void deleteUnitConversion(Long id) { - // 校验存在 - validateUnitConversionExists(id); - // 删除 - unitConversionMapper.deleteById(id); - } - - @Override - public void deleteUnitConversionListByIds(List ids) { - // 校验存在 - validateUnitConversionExists(ids); - // 删除 - unitConversionMapper.deleteByIds(ids); - } - - private void validateUnitConversionExists(List ids) { - List list = unitConversionMapper.selectByIds(ids); - if (CollUtil.isEmpty(list) || list.size() != ids.size()) { - throw exception(UNIT_CONVERSION_NOT_EXISTS); - } - } - - private void validateUnitConversionExists(Long id) { - if (unitConversionMapper.selectById(id) == null) { - throw exception(UNIT_CONVERSION_NOT_EXISTS); - } - } - - @Override - public UnitConversionDO getUnitConversion(Long id) { - return unitConversionMapper.selectById(id); - } - - @Override - public PageResult getUnitConversionPage(UnitConversionPageReqVO pageReqVO) { - return unitConversionMapper.selectPage(pageReqVO); - } - -} \ No newline at end of file diff --git a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/unitQuantity/UnitQuantityServiceImpl.java b/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/unitQuantity/UnitQuantityServiceImpl.java deleted file mode 100644 index ff72621..0000000 --- a/zt-module-unit-management/zt-module-unit-management-server/src/main/java/com/zt/plat/module/unitmanagement/service/unitQuantity/UnitQuantityServiceImpl.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.zt.plat.module.unitmanagement.service.UnitQuantity; - -import cn.hutool.core.collection.CollUtil; -import org.springframework.stereotype.Service; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import com.zt.plat.module.unitmanagement.controller.admin.UnitQuantity.vo.*; -import com.zt.plat.module.unitmanagement.dal.dataobject.UnitQuantity.UnitQuantityDO; -import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.framework.common.pojo.PageParam; -import com.zt.plat.framework.common.util.object.BeanUtils; - -import com.zt.plat.module.unitmanagement.dal.dao.UnitQuantity.UnitQuantityMapper; - -import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; -import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; -import static com.zt.plat.module.unitmanagement.enums.UnitErrorCodeConstants.*; - -/** - * 计量单位量 Service 实现类 - * - * @author 后台管理-1 - */ -@Service -@Validated -public class UnitQuantityServiceImpl implements UnitQuantityService { - - @Resource - private UnitQuantityMapper unitQuantityMapper; - - @Override - public UnitQuantityRespVO createUnitQuantity(UnitQuantitySaveReqVO createReqVO) { - // 插入 - UnitQuantityDO unitQuantity = BeanUtils.toBean(createReqVO, UnitQuantityDO.class); - unitQuantityMapper.insert(unitQuantity); - // 返回 - return BeanUtils.toBean(unitQuantity, UnitQuantityRespVO.class); - } - - @Override - public void updateUnitQuantity(UnitQuantitySaveReqVO updateReqVO) { - // 校验存在 - validateUnitQuantityExists(updateReqVO.getId()); - // 更新 - UnitQuantityDO updateObj = BeanUtils.toBean(updateReqVO, UnitQuantityDO.class); - unitQuantityMapper.updateById(updateObj); - } - - @Override - public void deleteUnitQuantity(Long id) { - // 校验存在 - validateUnitQuantityExists(id); - // 删除 - unitQuantityMapper.deleteById(id); - } - - @Override - public void deleteUnitQuantityListByIds(List ids) { - // 校验存在 - validateUnitQuantityExists(ids); - // 删除 - unitQuantityMapper.deleteByIds(ids); - } - - private void validateUnitQuantityExists(List ids) { - List list = unitQuantityMapper.selectByIds(ids); - if (CollUtil.isEmpty(list) || list.size() != ids.size()) { - throw exception(UNIT_QUANTITY_NOT_EXISTS); - } - } - - private void validateUnitQuantityExists(Long id) { - if (unitQuantityMapper.selectById(id) == null) { - throw exception(UNIT_QUANTITY_NOT_EXISTS); - } - } - - @Override - public UnitQuantityDO getUnitQuantity(Long id) { - return unitQuantityMapper.selectById(id); - } - - @Override - public PageResult getUnitQuantityPage(UnitQuantityPageReqVO pageReqVO) { - return unitQuantityMapper.selectPage(pageReqVO); - } - -} \ No newline at end of file