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