diff --git a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
index 79c69ebb..25e59f6e 100644
--- a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
+++ b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
@@ -9,209 +9,209 @@ import org.springblade.core.launch.constant.AppConstant;
*/
public interface LauncherConstant {
- /**
- * nacos 命名空间
- */
+ /**
+ * nacos 命名空间
+ */
// String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e";
- // 生产环境
- String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401";
- // 测试环境
- // String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8";
-
- /**
- * nacos 用户名
- */
- String NACOS_USERNAME = "nacos";
-
- /**
- * nacos 密码
- */
- String NACOS_PASSWORD = "nacos";
-
- /**
- * nacos dev 地址
- */
- String NACOS_DEV_ADDR = "127.0.0.1:8848";
-
- /**
- * nacos prod 地址
- */
- String NACOS_PROD_ADDR = "172.30.0.48:8848";
-
- /**
- * nacos test 地址
- */
- String NACOS_TEST_ADDR = "172.30.0.48:8848";
-
- /**
- * sentinel dev 地址
- */
- String SENTINEL_DEV_ADDR = "127.0.0.1:8858";
-
- /**
- * sentinel prod 地址
- */
- String SENTINEL_PROD_ADDR = "172.30.0.58:8858";
-
- /**
- * sentinel test 地址
- */
- String SENTINEL_TEST_ADDR = "172.30.0.58:8858";
-
- /**
- * seata dev 地址
- */
- String SEATA_DEV_ADDR = "127.0.0.1:8091";
-
- /**
- * seata prod 地址
- */
- String SEATA_PROD_ADDR = "172.30.0.68:8091";
-
- /**
- * seata test 地址
- */
- String SEATA_TEST_ADDR = "172.30.0.68:8091";
-
- /**
- * zipkin dev 地址
- */
- String ZIPKIN_DEV_ADDR = "http://127.0.0.1:9411";
-
- /**
- * zipkin prod 地址
- */
- String ZIPKIN_PROD_ADDR = "http://172.30.0.71:9411";
-
- /**
- * zipkin test 地址
- */
- String ZIPKIN_TEST_ADDR = "http://172.30.0.71:9411";
-
- /**
- * elk dev 地址
- */
- String ELK_DEV_ADDR = "127.0.0.1:9000";
-
- /**
- * elk prod 地址
- */
- String ELK_PROD_ADDR = "172.30.0.72:9000";
-
- /**
- * elk test 地址
- */
- String ELK_TEST_ADDR = "172.30.0.72:9000";
-
- /**
- * seata file模式
- */
- String FILE_MODE = "file";
-
- /**
- * seata nacos模式
- */
- String NACOS_MODE = "nacos";
-
- /**
- * seata default模式
- */
- String DEFAULT_MODE = "default";
-
- /**
- * seata group后缀
- */
- String GROUP_NAME = "-group";
-
-
- /**
- * 排产系统
- */
- String APPLICATION_SCHEDULING_NAME = "blade-scheduling";
-
- /**
- * 生产监控
- */
- String APPLICATION_MONITOR_NAME = "blade-monitor";
-
- /**
- * seata 服务组格式
- *
- * @param appName 服务名
- * @return group
- */
- static String seataServiceGroup(String appName) {
- return appName.concat(GROUP_NAME);
- }
-
- /**
- * 动态获取nacos地址
- *
- * @param profile 环境变量
- * @return addr
- */
- static String nacosAddr(String profile) {
- return switch (profile) {
- case (AppConstant.PROD_CODE) -> NACOS_PROD_ADDR;
- case (AppConstant.TEST_CODE) -> NACOS_TEST_ADDR;
- default -> NACOS_DEV_ADDR;
- };
- }
-
- /**
- * 动态获取sentinel地址
- *
- * @param profile 环境变量
- * @return addr
- */
- static String sentinelAddr(String profile) {
- return switch (profile) {
- case (AppConstant.PROD_CODE) -> SENTINEL_PROD_ADDR;
- case (AppConstant.TEST_CODE) -> SENTINEL_TEST_ADDR;
- default -> SENTINEL_DEV_ADDR;
- };
- }
-
- /**
- * 动态获取seata地址
- *
- * @param profile 环境变量
- * @return addr
- */
- static String seataAddr(String profile) {
- return switch (profile) {
- case (AppConstant.PROD_CODE) -> SEATA_PROD_ADDR;
- case (AppConstant.TEST_CODE) -> SEATA_TEST_ADDR;
- default -> SEATA_DEV_ADDR;
- };
- }
-
- /**
- * 动态获取zipkin地址
- *
- * @param profile 环境变量
- * @return addr
- */
- static String zipkinAddr(String profile) {
- return switch (profile) {
- case (AppConstant.PROD_CODE) -> ZIPKIN_PROD_ADDR;
- case (AppConstant.TEST_CODE) -> ZIPKIN_TEST_ADDR;
- default -> ZIPKIN_DEV_ADDR;
- };
- }
-
- /**
- * 动态获取elk地址
- *
- * @param profile 环境变量
- * @return addr
- */
- static String elkAddr(String profile) {
- return switch (profile) {
- case (AppConstant.PROD_CODE) -> ELK_PROD_ADDR;
- case (AppConstant.TEST_CODE) -> ELK_TEST_ADDR;
- default -> ELK_DEV_ADDR;
- };
- }
+ // 生产环境
+ String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401";
+ // 测试环境
+ // String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8";
+
+ /**
+ * nacos 用户名
+ */
+ String NACOS_USERNAME = "nacos";
+
+ /**
+ * nacos 密码
+ */
+ String NACOS_PASSWORD = "nacos";
+
+ /**
+ * nacos dev 地址
+ */
+ String NACOS_DEV_ADDR = "127.0.0.1:8848";
+
+ /**
+ * nacos prod 地址
+ */
+ String NACOS_PROD_ADDR = "172.30.0.48:8848";
+
+ /**
+ * nacos test 地址
+ */
+ String NACOS_TEST_ADDR = "172.30.0.48:8848";
+
+ /**
+ * sentinel dev 地址
+ */
+ String SENTINEL_DEV_ADDR = "127.0.0.1:8858";
+
+ /**
+ * sentinel prod 地址
+ */
+ String SENTINEL_PROD_ADDR = "172.30.0.58:8858";
+
+ /**
+ * sentinel test 地址
+ */
+ String SENTINEL_TEST_ADDR = "172.30.0.58:8858";
+
+ /**
+ * seata dev 地址
+ */
+ String SEATA_DEV_ADDR = "127.0.0.1:8091";
+
+ /**
+ * seata prod 地址
+ */
+ String SEATA_PROD_ADDR = "172.30.0.68:8091";
+
+ /**
+ * seata test 地址
+ */
+ String SEATA_TEST_ADDR = "172.30.0.68:8091";
+
+ /**
+ * zipkin dev 地址
+ */
+ String ZIPKIN_DEV_ADDR = "http://127.0.0.1:9411";
+
+ /**
+ * zipkin prod 地址
+ */
+ String ZIPKIN_PROD_ADDR = "http://172.30.0.71:9411";
+
+ /**
+ * zipkin test 地址
+ */
+ String ZIPKIN_TEST_ADDR = "http://172.30.0.71:9411";
+
+ /**
+ * elk dev 地址
+ */
+ String ELK_DEV_ADDR = "127.0.0.1:9000";
+
+ /**
+ * elk prod 地址
+ */
+ String ELK_PROD_ADDR = "172.30.0.72:9000";
+
+ /**
+ * elk test 地址
+ */
+ String ELK_TEST_ADDR = "172.30.0.72:9000";
+
+ /**
+ * seata file模式
+ */
+ String FILE_MODE = "file";
+
+ /**
+ * seata nacos模式
+ */
+ String NACOS_MODE = "nacos";
+
+ /**
+ * seata default模式
+ */
+ String DEFAULT_MODE = "default";
+
+ /**
+ * seata group后缀
+ */
+ String GROUP_NAME = "-group";
+
+
+ /**
+ * 排产系统
+ */
+ String APPLICATION_SCHEDULING_NAME = "blade-scheduling";
+
+ /**
+ * 生产监控
+ */
+ String APPLICATION_MONITOR_NAME = "blade-monitor";
+
+ /**
+ * seata 服务组格式
+ *
+ * @param appName 服务名
+ * @return group
+ */
+ static String seataServiceGroup(String appName) {
+ return appName.concat(GROUP_NAME);
+ }
+
+ /**
+ * 动态获取nacos地址
+ *
+ * @param profile 环境变量
+ * @return addr
+ */
+ static String nacosAddr(String profile) {
+ return switch (profile) {
+ case (AppConstant.PROD_CODE) -> NACOS_PROD_ADDR;
+ case (AppConstant.TEST_CODE) -> NACOS_TEST_ADDR;
+ default -> NACOS_DEV_ADDR;
+ };
+ }
+
+ /**
+ * 动态获取sentinel地址
+ *
+ * @param profile 环境变量
+ * @return addr
+ */
+ static String sentinelAddr(String profile) {
+ return switch (profile) {
+ case (AppConstant.PROD_CODE) -> SENTINEL_PROD_ADDR;
+ case (AppConstant.TEST_CODE) -> SENTINEL_TEST_ADDR;
+ default -> SENTINEL_DEV_ADDR;
+ };
+ }
+
+ /**
+ * 动态获取seata地址
+ *
+ * @param profile 环境变量
+ * @return addr
+ */
+ static String seataAddr(String profile) {
+ return switch (profile) {
+ case (AppConstant.PROD_CODE) -> SEATA_PROD_ADDR;
+ case (AppConstant.TEST_CODE) -> SEATA_TEST_ADDR;
+ default -> SEATA_DEV_ADDR;
+ };
+ }
+
+ /**
+ * 动态获取zipkin地址
+ *
+ * @param profile 环境变量
+ * @return addr
+ */
+ static String zipkinAddr(String profile) {
+ return switch (profile) {
+ case (AppConstant.PROD_CODE) -> ZIPKIN_PROD_ADDR;
+ case (AppConstant.TEST_CODE) -> ZIPKIN_TEST_ADDR;
+ default -> ZIPKIN_DEV_ADDR;
+ };
+ }
+
+ /**
+ * 动态获取elk地址
+ *
+ * @param profile 环境变量
+ * @return addr
+ */
+ static String elkAddr(String profile) {
+ return switch (profile) {
+ case (AppConstant.PROD_CODE) -> ELK_PROD_ADDR;
+ case (AppConstant.TEST_CODE) -> ELK_TEST_ADDR;
+ default -> ELK_DEV_ADDR;
+ };
+ }
}
diff --git a/blade-ops/blade-job/src/main/resources/application-dev.yml b/blade-ops/blade-job/src/main/resources/application-dev.yml
index adb34200..8ab5f1b4 100644
--- a/blade-ops/blade-job/src/main/resources/application-dev.yml
+++ b/blade-ops/blade-job/src/main/resources/application-dev.yml
@@ -3,6 +3,7 @@ server:
port: 7770
#job服务配置
+#PowerJob外部应用启动类 tech.powerjob.server.PowerJobServerApplication
powerjob:
worker:
app-name: ${spring.application.name}
diff --git a/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/AttachClient.java b/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/AttachClient.java
index 460ef125..2fdb059c 100644
--- a/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/AttachClient.java
+++ b/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/AttachClient.java
@@ -9,6 +9,9 @@ import org.springblade.resource.service.IAttachService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
+/**
+ * todo:有temp桶,成功以后移动到具体业务桶中.
+ */
@RestController
@Data
public class AttachClient implements IAttachClient {
diff --git a/blade-service/blade-desk/pom.xml b/blade-service/blade-desk/pom.xml
index e99c548c..fa110c87 100644
--- a/blade-service/blade-desk/pom.xml
+++ b/blade-service/blade-desk/pom.xml
@@ -82,6 +82,10 @@
org.springblade
blade-resource-api
+
+ org.springblade
+ blade-system-api
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BAModuleConst.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BAModuleConst.java
new file mode 100644
index 00000000..a52982fc
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BAModuleConst.java
@@ -0,0 +1,11 @@
+package org.springblade.desk.basic.constant;
+
+public interface BAModuleConst {
+
+ /**
+ * 模块前缀
+ */
+ String PREFIX = "BA";
+
+ String CONTROLLER_PREFIX = "/BA";
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BaseCol.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BaseCol.java
index 57bbb04f..31b41584 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BaseCol.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BaseCol.java
@@ -1,7 +1,7 @@
package org.springblade.desk.basic.constant;
/**
- * 通用字段字段名
+ * BaseEntity 通用字段字段名
*/
public interface BaseCol {
@@ -19,9 +19,9 @@ public interface BaseCol {
String STATUS = "STATUS";
+ String IS_DELETED = "IS_DELETED";
+
String SORT = "SORT";
String TENANT_ID = "TENANT_ID";
-
- String IS_DELETED = "IS_DELETED";
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/pojo/vo/BaseEntityVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/pojo/vo/BaseEntityVO.java
new file mode 100644
index 00000000..e05c23a4
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/pojo/vo/BaseEntityVO.java
@@ -0,0 +1,41 @@
+package org.springblade.desk.basic.pojo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * todo:
+ */
+@Data
+@EqualsAndHashCode()
+public class BaseEntityVO {
+
+ /**
+ * 创建[用户]-真名
+ */
+ @Schema(description = "创建[用户]-真名")
+ private String createUserRealName = "创建[用户]-真名";
+ /**
+ * 创建[部门]-部门名
+ */
+ @Schema(description = "创建[部门]-部门名")
+ private String createDeptName = "";
+ /**
+ * 更新[用户]-真名
+ */
+ @Schema(description = "更新用户-真名")
+ private String updateUserRealName = "更新用户-真名";
+ /**
+ * 维护[用户]id
+ */
+ @Schema(description = "维护[用户]id")
+ private Long keepUser = 0L;
+ /**
+ *
+ */
+ @Schema(description = "维护[用户]-真名")
+ private String keepUserRealName = "维护[用户]-真名";
+ @Schema(description = "业务状态 名称")
+ private String statusName = "statusName";
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/IdUtil.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/util/IdUtil.java
similarity index 92%
rename from blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/IdUtil.java
rename to blade-service/blade-desk/src/main/java/org/springblade/desk/basic/util/IdUtil.java
index 7b01ecd3..4fe156d0 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/IdUtil.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/util/IdUtil.java
@@ -1,4 +1,4 @@
-package org.springblade.desk.quality.util;
+package org.springblade.desk.basic.util;
/**
* 雪花 long id工具类。
@@ -32,7 +32,7 @@ public class IdUtil {
public static Boolean isInvalid(Long id) {
if (id == null || id <= 0L) {
return Boolean.TRUE;
- // todo:兼容老MES数据
+ // todo:兼容老MES数据 不进行19位校验
// } else if (id < MIN_19_ID) {
// return Boolean.TRUE;
} else if (id == Long.MAX_VALUE) {
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/constant/ProReTemplateConst.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/constant/ProReTemplateConst.java
new file mode 100644
index 00000000..baf3f7cb
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/constant/ProReTemplateConst.java
@@ -0,0 +1,23 @@
+package org.springblade.desk.quality.constant;
+
+public interface ProReTemplateConst {
+ /**
+ * 新建
+ */
+ Integer STATUS_NEW = 1;
+ /**
+ * 正常使用
+ */
+ Integer STATUS_OK = 2;
+ /**
+ * 废弃
+ */
+ Integer STATUS_NO = 3;
+
+
+ Integer ONLINE = 1;
+
+ Integer OFFLINE = 0;
+
+ String DIC = "ProReTemplate-Status";
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateController.java
index e72d29a4..ba275361 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateController.java
@@ -25,6 +25,7 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.util.ExcelExtUtil;
+import org.springblade.desk.quality.constant.ProReTemplateConst;
import org.springblade.desk.quality.excel.ProReTemplateExcel;
import org.springblade.desk.quality.pojo.entity.ProReTemplate;
import org.springblade.desk.quality.pojo.vo.ProReTemplateVO;
@@ -54,184 +55,213 @@ import java.util.stream.Collectors;
public class ProReTemplateController extends BladeController {
@Resource
- private IProReTemplateService service;
-
- /**
- * [过程记录模板] 详情
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 10)
- @Operation(summary = "详情", description = "传入ProReTemplate Obj")
- public R detail(ProReTemplate proReTemplate) {
- QueryWrapper qw = Condition.getQueryWrapper(proReTemplate);
- ProReTemplate detail = service.getOne(qw);
- ProReTemplateVO detailVO = ProReTemplateWrapper.build().entityVO(detail);
- service.setVOValue(detailVO);
- return R.data(detailVO);
- }
-
- /**
- * [过程记录模板] list分页
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 20)
- @Operation(summary = "list分页", description = "传入ProReTemplate Obj")
- public R> list(@Parameter(hidden = true) @RequestParam Map proReTemplate,
- Query query) {
+ private IProReTemplateService service;
+
+ /**
+ * [过程记录模板] 详情
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 10)
+ @Operation(summary = "详情", description = "传入ProReTemplate Obj")
+ public R detail(ProReTemplate proReTemplate) {
+ QueryWrapper qw = Condition.getQueryWrapper(proReTemplate);
+ ProReTemplate detail = service.getOne(qw);
+ ProReTemplateVO detailVO = ProReTemplateWrapper.build().entityVO(detail);
+ service.setVOValue(detailVO);
+ return R.data(detailVO);
+ }
+
+ /**
+ * [过程记录模板] list分页
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 20)
+ @Operation(summary = "list分页", description = "传入ProReTemplate Obj")
+ public R> list(@Parameter(hidden = true) @RequestParam Map proReTemplate,
+ Query query) {
QueryWrapper qw = Condition.getQueryWrapper(proReTemplate, ProReTemplate.class);
- IPage pages = service.page(Condition.getPage(query), qw);
- IPage pagesVO = ProReTemplateWrapper.build().pageVO(pages);
- pagesVO.getRecords()
- .stream()
- .peek(service::setVOValue)
- .collect(Collectors.toList());
- return R.data(pagesVO);
- }
-
-
- /**
- * [过程记录模板] page分页
- */
- @GetMapping("/page")
- @ApiOperationSupport(order = 21)
- @Operation(summary = "page分页", description = "传入ProReTemplate Obj")
- public R> page(ProReTemplateVO proReTemplate, Query query) {
- IPage pagesVO = service.selectProReTemplatePage(
- Condition.getPage(query), proReTemplate
- );
- return R.data(pagesVO);
- }
-
- /**
+ IPage pages = service.page(Condition.getPage(query), qw);
+ IPage pagesVO = ProReTemplateWrapper.build().pageVO(pages);
+ pagesVO.getRecords()
+ .stream()
+ .peek(service::setVOValue)
+ .collect(Collectors.toList());
+ return R.data(pagesVO);
+ }
+
+
+ /**
+ * [过程记录模板] page分页
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 21)
+ @Operation(summary = "page分页", description = "传入ProReTemplate Obj")
+ public R> page(ProReTemplateVO proReTemplate, Query query) {
+ IPage pagesVO = service.selectProReTemplatePage(
+ Condition.getPage(query), proReTemplate
+ );
+ return R.data(pagesVO);
+ }
+
+ /**
* [过程记录模板] list下拉选择
*/
@GetMapping("/listForSelect")
@ApiOperationSupport(order = 22)
- @Operation(summary = "list下拉选择", description = "")
+ @Operation(summary = "list下拉选择", description = "")
public R> listForSelect() {
- List list = service.list();
- List listVO = ProReTemplateWrapper.build().listVO(list);
- return R.data(listVO);
- }
-
- /**
- * [过程记录模板] 新增一条
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 30)
- @Operation(summary = "新增一条", description = "传入ProReTemplate Obj")
- public R save(@Valid @RequestBody ProReTemplate addOne) {
- addOne.setId(null);
- return R.status(service.save(addOne));
- }
-
- /**
+ List list = service.list();
+ List listVO = ProReTemplateWrapper.build().listVO(list);
+ return R.data(listVO);
+ }
+
+ /**
+ * [过程记录模板] 新增一条
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 30)
+ @Operation(summary = "新增一条", description = "传入ProReTemplate Obj")
+ public R save(@Valid @RequestBody ProReTemplate addOne) {
+ addOne.setId(null);
+ addOne.setStatus(ProReTemplateConst.STATUS_NEW);
+ addOne.setApprovalStatus(1);
+ return R.status(service.save(addOne));
+ }
+
+ /**
* [过程记录模板] 新增批量
*/
- @PostMapping("/saveBat")
- @ApiOperationSupport(order = 31)
- @Operation(summary = "新增批量", description = "传入ProReTemplate List")
- public R saveBat(@Valid @RequestBody List addList) {
- addList.forEach(one -> {
- one.setId(null);
- });
- return R.status(service.saveBatch(addList));
- }
-
- /**
- * [过程记录模板] 修改一条
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 40)
- @Operation(summary = "修改一条", description = "传入ProReTemplate Obj")
- public R update(@Valid @RequestBody ProReTemplate updateOne) {
- return R.status(service.updateById(updateOne));
- }
+ @PostMapping("/saveBat")
+ @ApiOperationSupport(order = 31)
+ @Operation(summary = "新增批量", description = "传入ProReTemplate List")
+ public R saveBat(@Valid @RequestBody List addList) {
+ addList.forEach(one -> {
+ one.setId(null);
+ });
+ return R.status(service.saveBatch(addList));
+ }
+
+ /**
+ * [过程记录模板] 修改一条
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 40)
+ @Operation(summary = "修改一条", description = "传入ProReTemplate Obj")
+ public R update(@Valid @RequestBody ProReTemplate updateOne) {
+ return R.status(service.updateById(updateOne));
+ }
+
+ /**
+ * [过程记录模板] 修改一条
+ */
+ @PostMapping("/updateDetail")
+ @ApiOperationSupport(order = 42)
+ @Operation(summary = "修改一条明细", description = "传入ProReTemplate Obj")
+ public R updateDetail(@Valid @RequestBody ProReTemplateVO updateDetail) {
+ return service.updateDetail(updateDetail);
+ }
/**
* [过程记录模板] 修改批量
*/
@PostMapping("/updateBat")
@ApiOperationSupport(order = 41)
- @Operation(summary = "修改批量", description = "传入ProReTemplate List")
+ @Operation(summary = "修改批量", description = "传入ProReTemplate List")
public R updateBat(@Valid @RequestBody List updateList) {
return R.status(service.updateBatchById(updateList));
}
- /**
- * [过程记录模板] 新增或修改一条
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 50)
- @Operation(summary = "新增或修改一条", description = "传入ProReTemplate Obj")
- public R submit(@Valid @RequestBody ProReTemplate mergeOne) {
- return R.status(service.saveOrUpdate(mergeOne));
- }
+ /**
+ * [过程记录模板] 新增或修改一条
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 50)
+ @Operation(summary = "新增或修改一条", description = "传入ProReTemplate Obj")
+ public R submit(@Valid @RequestBody ProReTemplate mergeOne) {
+ return R.status(service.saveOrUpdate(mergeOne));
+ }
- /**
+ /**
* [过程记录模板] 新增或修改批量
*/
- @PostMapping("/submitBat")
- @ApiOperationSupport(order = 51)
- @Operation(summary = "新增或修改批量", description = "传入ProReTemplate List")
- public R submitBat(@Valid @RequestBody List mergeList) {
- return R.status(service.saveOrUpdateBatch(mergeList));
- }
-
- /**
- * [过程记录模板] 逻辑删除
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 61)
- @Operation(summary = "逻辑删除", description = "传入ids")
- public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
- return R.status(service.deleteLogic(Func.toLongList(ids)));
- }
-
- /**
- * [过程记录模板] 导出Excel
- */
- @GetMapping("/exportExcel")
- @ApiOperationSupport(order = 70)
- @Operation(summary = "导出Excel", description = "传入ProReTemplate")
- public void exportExcel(@Parameter(hidden = true) @RequestParam Map proReTemplate,
- BladeUser bladeUser, HttpServletResponse response) {
- QueryWrapper qw = Condition.getQueryWrapper(proReTemplate, ProReTemplate.class);
- //if (!AuthUtil.isAdministrator()) {
- // queryWrapper.lambda().eq(ProReTemplate::getTenantId, bladeUser.getTenantId());
- //}
- //queryWrapper.lambda().eq(ProReTemplateEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
- List list = service.exportProReTemplate(qw);
- ExcelUtil.export(response, "[过程记录模板]数据" + DateUtil.time(),
- "[过程记录模板]数据表", list, ProReTemplateExcel.class);
- }
-
- /**
+ @PostMapping("/submitBat")
+ @ApiOperationSupport(order = 51)
+ @Operation(summary = "新增或修改批量", description = "传入ProReTemplate List")
+ public R submitBat(@Valid @RequestBody List mergeList) {
+ return R.status(service.saveOrUpdateBatch(mergeList));
+ }
+
+ /**
+ * [过程记录模板] 逻辑删除
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 61)
+ @Operation(summary = "逻辑删除", description = "传入ids")
+ public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
+ return R.status(service.deleteLogic(Func.toLongList(ids)));
+ }
+
+ @GetMapping("/removeFromDetail")
+ @ApiOperationSupport(order = 61)
+ @Operation(summary = "逻辑删除FromDetail", description = "传入ids")
+ public R removeFromDetail(@Parameter(description = "", required = true) @RequestParam Long tankId) {
+ return service.removeFromDetail(tankId);
+ }
+
+ /**
+ * [过程记录模板] 导出Excel
+ */
+ @GetMapping("/exportExcel")
+ @ApiOperationSupport(order = 70)
+ @Operation(summary = "导出Excel", description = "传入ProReTemplate")
+ public void exportExcel(@Parameter(hidden = true) @RequestParam Map proReTemplate,
+ BladeUser bladeUser, HttpServletResponse response) {
+ QueryWrapper qw = Condition.getQueryWrapper(proReTemplate, ProReTemplate.class);
+ //if (!AuthUtil.isAdministrator()) {
+ // queryWrapper.lambda().eq(ProReTemplate::getTenantId, bladeUser.getTenantId());
+ //}
+ //queryWrapper.lambda().eq(ProReTemplateEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
+ List list = service.exportProReTemplate(qw);
+ ExcelUtil.export(response, "[过程记录模板]数据" + DateUtil.time(),
+ "[过程记录模板]数据表", list, ProReTemplateExcel.class);
+ }
+
+ /**
* [过程记录模板] 下载Excel模板
*/
- @GetMapping("/downloadExcelTemplate")
- @ApiOperationSupport(order = 71)
- @Operation(summary = "下载Excel模板", description = "")
- public ResponseEntity downloadExcelTemplate() {
- return ExcelExtUtil.downloadXlsTemplate(
- "Excel/QA/ImportTemplate-CycleTestItem.xls",
- "导入模版-周期试验项目.xls");
- }
-
- /**
- * [过程记录模板] 导入Excel
- */
- @PostMapping("/importExcel")
- @ApiOperationSupport(order = 72)
- @Operation(summary = "导入Excel", description = "MultipartFile")
- public R importExcel(@RequestParam("file") MultipartFile file) {
- R checkR = ExcelExtUtil.importExcelCheck(file);
- if (checkR != null) {
- return checkR;
- }
- List importList = ExcelUtil.read(
- file, 0, 1, ProReTemplate.class
- );
- return R.status(service.saveBatch(importList));
- }
+ @GetMapping("/downloadExcelTemplate")
+ @ApiOperationSupport(order = 71)
+ @Operation(summary = "下载Excel模板", description = "")
+ public ResponseEntity downloadExcelTemplate() {
+ return ExcelExtUtil.downloadXlsTemplate(
+ "Excel/QA/ImportTemplate-CycleTestItem.xls",
+ "导入模版-周期试验项目.xls");
+ }
+
+ /**
+ * [过程记录模板] 导入Excel
+ */
+ @PostMapping("/importExcel")
+ @ApiOperationSupport(order = 72)
+ @Operation(summary = "导入Excel", description = "MultipartFile")
+ public R importExcel(@RequestParam("file") MultipartFile file) {
+ R checkR = ExcelExtUtil.importExcelCheck(file);
+ if (checkR != null) {
+ return checkR;
+ }
+ List importList = ExcelUtil.read(
+ file, 0, 1, ProReTemplate.class
+ );
+ return R.status(service.saveBatch(importList));
+ }
+
+ /**
+ * [过程记录模板] 逻辑删除
+ */
+ @GetMapping("/copy")
+ @ApiOperationSupport(order = 80)
+ @Operation(summary = "copy", description = "传入id")
+ public R copy(@Parameter(description = "主键", required = true) @RequestParam Long id) {
+ return service.copy(id);
+ }
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateDetailController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateDetailController.java
new file mode 100644
index 00000000..fa86dc18
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateDetailController.java
@@ -0,0 +1,240 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.controller;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.annotation.IsAdmin;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.desk.basic.util.ExcelExtUtil;
+import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail;
+import org.springblade.desk.quality.pojo.vo.ProReTemplateDetailVO;
+import org.springblade.desk.quality.excel.ProReTemplateDetailExcel;
+import org.springblade.desk.quality.wrapper.ProReTemplateDetailWrapper;
+import org.springblade.desk.quality.service.IProReTemplateDetailService;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.tool.constant.BladeConstant;
+import java.util.Map;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import jakarta.servlet.http.HttpServletResponse;
+
+/**
+ * [过程记录模板-明细] 控制器
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+@RestController
+@RequestMapping("/ProReTemplateDetail")
+@Data
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Slf4j
+@Tag(name = "[过程记录模板-明细]", description = "[过程记录模板-明细]接口")
+public class ProReTemplateDetailController extends BladeController {
+
+ @Resource
+ private IProReTemplateDetailService service;
+
+ /**
+ * [过程记录模板-明细] 详情
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 10)
+ @Operation(summary = "详情", description = "传入ProReTemplateDetail Obj")
+ public R detail(ProReTemplateDetail proReTemplateDetail) {
+ QueryWrapper qw = Condition.getQueryWrapper(proReTemplateDetail);
+ ProReTemplateDetail detail = service.getOne(qw);
+ ProReTemplateDetailVO detailVO = ProReTemplateDetailWrapper.build().entityVO(detail);
+ service.setVOValue(detailVO);
+ return R.data(detailVO);
+ }
+
+ /**
+ * [过程记录模板-明细] list分页
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 20)
+ @Operation(summary = "list分页", description = "传入ProReTemplateDetail Obj")
+ public R> list(@Parameter(hidden = true) @RequestParam Map proReTemplateDetail,
+ Query query) {
+ QueryWrapper qw = Condition.getQueryWrapper(proReTemplateDetail, ProReTemplateDetail.class);
+ IPage pages = service.page(Condition.getPage(query), qw);
+ IPage pagesVO = ProReTemplateDetailWrapper.build().pageVO(pages);
+ pagesVO.getRecords()
+ .stream()
+ .peek(service::setVOValue)
+ .collect(Collectors.toList());
+ return R.data(pagesVO);
+ }
+
+
+ /**
+ * [过程记录模板-明细] page分页
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 21)
+ @Operation(summary = "page分页", description = "传入ProReTemplateDetail Obj")
+ public R> page(ProReTemplateDetailVO proReTemplateDetail, Query query) {
+ IPage pagesVO = service.selectProReTemplateDetailPage(
+ Condition.getPage(query), proReTemplateDetail
+ );
+ return R.data(pagesVO);
+ }
+
+ /**
+ * [过程记录模板-明细] list下拉选择
+ */
+ @GetMapping("/listForSelect")
+ @ApiOperationSupport(order = 22)
+ @Operation(summary = "list下拉选择", description = "")
+ public R> listForSelect() {
+ List list = service.list();
+ List listVO = ProReTemplateDetailWrapper.build().listVO(list);
+ return R.data(listVO);
+ }
+
+ /**
+ * [过程记录模板-明细] 新增一条
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 30)
+ @Operation(summary = "新增一条", description = "传入ProReTemplateDetail Obj")
+ public R save(@Valid @RequestBody ProReTemplateDetail addOne) {
+ addOne.setId(null);
+ return R.status(service.save(addOne));
+ }
+
+ /**
+ * [过程记录模板-明细] 新增批量
+ */
+ @PostMapping("/saveBat")
+ @ApiOperationSupport(order = 31)
+ @Operation(summary = "新增批量", description = "传入ProReTemplateDetail List")
+ public R saveBat(@Valid @RequestBody List addList) {
+ addList.forEach(one -> {
+ one.setId(null);
+ });
+ return R.status(service.saveBatch(addList));
+ }
+
+ /**
+ * [过程记录模板-明细] 修改一条
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 40)
+ @Operation(summary = "修改一条", description = "传入ProReTemplateDetail Obj")
+ public R update(@Valid @RequestBody ProReTemplateDetail updateOne) {
+ return R.status(service.updateById(updateOne));
+ }
+
+ /**
+ * [过程记录模板-明细] 修改批量
+ */
+ @PostMapping("/updateBat")
+ @ApiOperationSupport(order = 41)
+ @Operation(summary = "修改批量", description = "传入ProReTemplateDetail List")
+ public R updateBat(@Valid @RequestBody List updateList) {
+ return R.status(service.updateBatchById(updateList));
+ }
+
+ /**
+ * [过程记录模板-明细] 新增或修改一条
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 50)
+ @Operation(summary = "新增或修改一条", description = "传入ProReTemplateDetail Obj")
+ public R submit(@Valid @RequestBody ProReTemplateDetail mergeOne) {
+ return R.status(service.saveOrUpdate(mergeOne));
+ }
+
+ /**
+ * [过程记录模板-明细] 新增或修改批量
+ */
+ @PostMapping("/submitBat")
+ @ApiOperationSupport(order = 51)
+ @Operation(summary = "新增或修改批量", description = "传入ProReTemplateDetail List")
+ public R submitBat(@Valid @RequestBody List mergeList) {
+ return R.status(service.saveOrUpdateBatch(mergeList));
+ }
+
+ /**
+ * [过程记录模板-明细] 逻辑删除
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 61)
+ @Operation(summary = "逻辑删除", description = "传入ids")
+ public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
+ return R.status(service.deleteLogic(Func.toLongList(ids)));
+ }
+
+ /**
+ * [过程记录模板-明细] 导出Excel
+ */
+ @GetMapping("/exportExcel")
+ @ApiOperationSupport(order = 70)
+ @Operation(summary = "导出Excel", description = "传入ProReTemplateDetail")
+ public void exportExcel(@Parameter(hidden = true) @RequestParam Map proReTemplateDetail,
+ BladeUser bladeUser, HttpServletResponse response) {
+ QueryWrapper qw = Condition.getQueryWrapper(proReTemplateDetail, ProReTemplateDetail.class);
+ //if (!AuthUtil.isAdministrator()) {
+ // queryWrapper.lambda().eq(ProReTemplateDetail::getTenantId, bladeUser.getTenantId());
+ //}
+ //queryWrapper.lambda().eq(ProReTemplateDetailEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
+ List list = service.exportProReTemplateDetail(qw);
+ ExcelUtil.export(response, "[过程记录模板-明细]数据" + org.springblade.core.tool.utils.DateUtil.time(),
+ "[过程记录模板-明细]数据表", list, ProReTemplateDetailExcel.class);
+ }
+
+ /**
+ * [过程记录模板-明细] 下载Excel模板
+ */
+ @GetMapping("/downloadExcelTemplate")
+ @ApiOperationSupport(order = 71)
+ @Operation(summary = "下载Excel模板", description = "")
+ public ResponseEntity downloadExcelTemplate() {
+ return ExcelExtUtil.downloadXlsTemplate(
+ "Excel/QA/ImportTemplate-CycleTestItem.xls",
+ "导入模版-周期试验项目.xls");
+ }
+
+ /**
+ * [过程记录模板-明细] 导入Excel
+ */
+ @PostMapping("/importExcel")
+ @ApiOperationSupport(order = 72)
+ @Operation(summary = "导入Excel", description = "MultipartFile")
+ public R importExcel(@RequestParam("file") MultipartFile file) {
+ R checkR = ExcelExtUtil.importExcelCheck(file);
+ if (checkR != null) {
+ return checkR;
+ }
+ List importList = ExcelUtil.read(
+ file, 0, 1, ProReTemplateDetail.class
+ );
+ return R.status(service.saveBatch(importList));
+ }
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateTankController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateTankController.java
new file mode 100644
index 00000000..905fa26d
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateTankController.java
@@ -0,0 +1,240 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.controller;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.annotation.IsAdmin;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.desk.basic.util.ExcelExtUtil;
+import org.springblade.desk.quality.pojo.entity.ProReTemplateTank;
+import org.springblade.desk.quality.pojo.vo.ProReTemplateTankVO;
+import org.springblade.desk.quality.excel.ProReTemplateTankExcel;
+import org.springblade.desk.quality.wrapper.ProReTemplateTankWrapper;
+import org.springblade.desk.quality.service.IProReTemplateTankService;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.tool.constant.BladeConstant;
+import java.util.Map;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import jakarta.servlet.http.HttpServletResponse;
+
+/**
+ * [过程记录模板-槽-明细] 控制器
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+@RestController
+@RequestMapping("/ProReTemplateTank")
+@Data
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Slf4j
+@Tag(name = "[过程记录模板-槽-明细]", description = "[过程记录模板-槽-明细]接口")
+public class ProReTemplateTankController extends BladeController {
+
+ @Resource
+ private IProReTemplateTankService service;
+
+ /**
+ * [过程记录模板-槽-明细] 详情
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 10)
+ @Operation(summary = "详情", description = "传入ProReTemplateTank Obj")
+ public R detail(ProReTemplateTank proReTemplateTank) {
+ QueryWrapper qw = Condition.getQueryWrapper(proReTemplateTank);
+ ProReTemplateTank detail = service.getOne(qw);
+ ProReTemplateTankVO detailVO = ProReTemplateTankWrapper.build().entityVO(detail);
+ service.setVOValue(detailVO);
+ return R.data(detailVO);
+ }
+
+ /**
+ * [过程记录模板-槽-明细] list分页
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 20)
+ @Operation(summary = "list分页", description = "传入ProReTemplateTank Obj")
+ public R> list(@Parameter(hidden = true) @RequestParam Map proReTemplateTank,
+ Query query) {
+ QueryWrapper qw = Condition.getQueryWrapper(proReTemplateTank, ProReTemplateTank.class);
+ IPage pages = service.page(Condition.getPage(query), qw);
+ IPage pagesVO = ProReTemplateTankWrapper.build().pageVO(pages);
+ pagesVO.getRecords()
+ .stream()
+ .peek(service::setVOValue)
+ .collect(Collectors.toList());
+ return R.data(pagesVO);
+ }
+
+
+ /**
+ * [过程记录模板-槽-明细] page分页
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 21)
+ @Operation(summary = "page分页", description = "传入ProReTemplateTank Obj")
+ public R> page(ProReTemplateTankVO proReTemplateTank, Query query) {
+ IPage pagesVO = service.selectProReTemplateTankPage(
+ Condition.getPage(query), proReTemplateTank
+ );
+ return R.data(pagesVO);
+ }
+
+ /**
+ * [过程记录模板-槽-明细] list下拉选择
+ */
+ @GetMapping("/listForSelect")
+ @ApiOperationSupport(order = 22)
+ @Operation(summary = "list下拉选择", description = "")
+ public R> listForSelect() {
+ List list = service.list();
+ List listVO = ProReTemplateTankWrapper.build().listVO(list);
+ return R.data(listVO);
+ }
+
+ /**
+ * [过程记录模板-槽-明细] 新增一条
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 30)
+ @Operation(summary = "新增一条", description = "传入ProReTemplateTank Obj")
+ public R save(@Valid @RequestBody ProReTemplateTank addOne) {
+ addOne.setId(null);
+ return R.status(service.save(addOne));
+ }
+
+ /**
+ * [过程记录模板-槽-明细] 新增批量
+ */
+ @PostMapping("/saveBat")
+ @ApiOperationSupport(order = 31)
+ @Operation(summary = "新增批量", description = "传入ProReTemplateTank List")
+ public R saveBat(@Valid @RequestBody List addList) {
+ addList.forEach(one -> {
+ one.setId(null);
+ });
+ return R.status(service.saveBatch(addList));
+ }
+
+ /**
+ * [过程记录模板-槽-明细] 修改一条
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 40)
+ @Operation(summary = "修改一条", description = "传入ProReTemplateTank Obj")
+ public R update(@Valid @RequestBody ProReTemplateTank updateOne) {
+ return R.status(service.updateById(updateOne));
+ }
+
+ /**
+ * [过程记录模板-槽-明细] 修改批量
+ */
+ @PostMapping("/updateBat")
+ @ApiOperationSupport(order = 41)
+ @Operation(summary = "修改批量", description = "传入ProReTemplateTank List")
+ public R updateBat(@Valid @RequestBody List updateList) {
+ return R.status(service.updateBatchById(updateList));
+ }
+
+ /**
+ * [过程记录模板-槽-明细] 新增或修改一条
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 50)
+ @Operation(summary = "新增或修改一条", description = "传入ProReTemplateTank Obj")
+ public R submit(@Valid @RequestBody ProReTemplateTank mergeOne) {
+ return R.status(service.saveOrUpdate(mergeOne));
+ }
+
+ /**
+ * [过程记录模板-槽-明细] 新增或修改批量
+ */
+ @PostMapping("/submitBat")
+ @ApiOperationSupport(order = 51)
+ @Operation(summary = "新增或修改批量", description = "传入ProReTemplateTank List")
+ public R submitBat(@Valid @RequestBody List mergeList) {
+ return R.status(service.saveOrUpdateBatch(mergeList));
+ }
+
+ /**
+ * [过程记录模板-槽-明细] 逻辑删除
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 61)
+ @Operation(summary = "逻辑删除", description = "传入ids")
+ public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
+ return R.status(service.deleteLogic(Func.toLongList(ids)));
+ }
+
+ /**
+ * [过程记录模板-槽-明细] 导出Excel
+ */
+ @GetMapping("/exportExcel")
+ @ApiOperationSupport(order = 70)
+ @Operation(summary = "导出Excel", description = "传入ProReTemplateTank")
+ public void exportExcel(@Parameter(hidden = true) @RequestParam Map proReTemplateTank,
+ BladeUser bladeUser, HttpServletResponse response) {
+ QueryWrapper qw = Condition.getQueryWrapper(proReTemplateTank, ProReTemplateTank.class);
+ //if (!AuthUtil.isAdministrator()) {
+ // queryWrapper.lambda().eq(ProReTemplateTank::getTenantId, bladeUser.getTenantId());
+ //}
+ //queryWrapper.lambda().eq(ProReTemplateTankEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
+ List list = service.exportProReTemplateTank(qw);
+ ExcelUtil.export(response, "[过程记录模板-槽-明细]数据" + org.springblade.core.tool.utils.DateUtil.time(),
+ "[过程记录模板-槽-明细]数据表", list, ProReTemplateTankExcel.class);
+ }
+
+ /**
+ * [过程记录模板-槽-明细] 下载Excel模板
+ */
+ @GetMapping("/downloadExcelTemplate")
+ @ApiOperationSupport(order = 71)
+ @Operation(summary = "下载Excel模板", description = "")
+ public ResponseEntity downloadExcelTemplate() {
+ return ExcelExtUtil.downloadXlsTemplate(
+ "Excel/QA/ImportTemplate-CycleTestItem.xls",
+ "导入模版-周期试验项目.xls");
+ }
+
+ /**
+ * [过程记录模板-槽-明细] 导入Excel
+ */
+ @PostMapping("/importExcel")
+ @ApiOperationSupport(order = 72)
+ @Operation(summary = "导入Excel", description = "MultipartFile")
+ public R importExcel(@RequestParam("file") MultipartFile file) {
+ R checkR = ExcelExtUtil.importExcelCheck(file);
+ if (checkR != null) {
+ return checkR;
+ }
+ List importList = ExcelUtil.read(
+ file, 0, 1, ProReTemplateTank.class
+ );
+ return R.status(service.saveBatch(importList));
+ }
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateDetailExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateDetailExcel.java
new file mode 100644
index 00000000..bd52cf94
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateDetailExcel.java
@@ -0,0 +1,89 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.excel;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import org.springblade.core.mp.base.BaseEntity;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import java.io.Serial;
+
+
+/**
+ * [过程记录模板-明细] Excel实体类
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class ProReTemplateDetailExcel implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 明细名称
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("明细名称")
+ private String detailName;
+ /**
+ * 工艺要求
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("工艺要求")
+ private String ask;
+ /**
+ * 是否合格
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("是否合格")
+ private Short qualified;
+ /**
+ * [过程记录模板-槽-明细]id
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("[过程记录模板-槽-明细]id")
+ private BigDecimal templateTankId;
+ /**
+ * 明细序号
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("明细序号")
+ private Short detailIndex;
+ /**
+ * 时间
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("时间")
+ private LocalDateTime rfpdTime;
+ /**
+ * 参数名称
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("参数名称")
+ private String paramName;
+ /**
+ * 参数值
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("参数值")
+ private String paramValue;
+ /**
+ * 备注
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("备注")
+ private String remark;
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateTankExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateTankExcel.java
new file mode 100644
index 00000000..6f44dc88
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateTankExcel.java
@@ -0,0 +1,64 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.excel;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import org.springblade.core.mp.base.BaseEntity;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import java.io.Serial;
+
+
+/**
+ * [过程记录模板-槽-明细] Excel实体类
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class ProReTemplateTankExcel implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * [过程记录模板]id
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("[过程记录模板]id")
+ private BigDecimal templateId;
+ /**
+ * 槽号名称
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("槽号名称")
+ private String slotName;
+ /**
+ * 插入序号
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("插入序号")
+ private Short insertIndex;
+ /**
+ * 模板类型
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("模板类型")
+ private Short rfpsType;
+ /**
+ * 槽号序号
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("槽号序号")
+ private BigDecimal slotIndex;
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.java
new file mode 100644
index 00000000..7facf62e
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.java
@@ -0,0 +1,39 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.mapper;
+
+import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail;
+import org.springblade.desk.quality.pojo.vo.ProReTemplateDetailVO;
+import org.springblade.desk.quality.excel.ProReTemplateDetailExcel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+/**
+ * [过程记录模板-明细] Mapper 接口
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+public interface ProReTemplateDetailMapper extends BaseMapper {
+
+ /**
+ * 自定义分页
+ *
+ * @param page 分页参数
+ * @param proReTemplateDetail 查询参数
+ * @return List
+ */
+ List selectProReTemplateDetailPage(IPage page, ProReTemplateDetailVO proReTemplateDetail);
+
+ /**
+ * 获取导出数据
+ *
+ * @param queryWrapper 查询条件
+ * @return List
+ */
+ List exportProReTemplateDetail(@Param("ew") Wrapper queryWrapper);
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.xml
new file mode 100644
index 00000000..86704e55
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.java
new file mode 100644
index 00000000..8a5eeb68
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.java
@@ -0,0 +1,39 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.mapper;
+
+import org.springblade.desk.quality.pojo.entity.ProReTemplateTank;
+import org.springblade.desk.quality.pojo.vo.ProReTemplateTankVO;
+import org.springblade.desk.quality.excel.ProReTemplateTankExcel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+/**
+ * [过程记录模板-槽-明细] Mapper 接口
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+public interface ProReTemplateTankMapper extends BaseMapper {
+
+ /**
+ * 自定义分页
+ *
+ * @param page 分页参数
+ * @param proReTemplateTank 查询参数
+ * @return List
+ */
+ List selectProReTemplateTankPage(IPage page, ProReTemplateTankVO proReTemplateTank);
+
+ /**
+ * 获取导出数据
+ *
+ * @param queryWrapper 查询条件
+ * @return List
+ */
+ List exportProReTemplateTank(@Param("ew") Wrapper queryWrapper);
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.xml
new file mode 100644
index 00000000..68f7091a
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateDetailDTO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateDetailDTO.java
new file mode 100644
index 00000000..523e2e79
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateDetailDTO.java
@@ -0,0 +1,23 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.pojo.dto;
+
+import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+
+/**
+ * [过程记录模板-明细] 数据传输对象实体类
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProReTemplateDetailDTO extends ProReTemplateDetail {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateTankDTO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateTankDTO.java
new file mode 100644
index 00000000..414abe42
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateTankDTO.java
@@ -0,0 +1,23 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.pojo.dto;
+
+import org.springblade.desk.quality.pojo.entity.ProReTemplateTank;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+
+/**
+ * [过程记录模板-槽-明细] 数据传输对象实体类
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProReTemplateTankDTO extends ProReTemplateTank {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplate.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplate.java
index ce6f2420..18c394f2 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplate.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplate.java
@@ -79,7 +79,7 @@ public class ProReTemplate extends BaseEntity {
* 审批状态
*/
@Schema(description = "审批状态")
- private Short approvalStatus;
+ private Integer approvalStatus;
/**
* 线上/下-[0]:线上;[1]:线下;
*/
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateDetail.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateDetail.java
new file mode 100644
index 00000000..90519170
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateDetail.java
@@ -0,0 +1,112 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.pojo.entity;
+
+import lombok.Data;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+
+/**
+ * [过程记录模板-明细] 实体类
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+@Data
+@TableName("QA_PRO_RE_TEMPLATE_DETAIL")
+@Schema(description = "ProReTemplateDetail Entity对象")
+@EqualsAndHashCode(callSuper = true)
+public class ProReTemplateDetail extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 明细名称
+ */
+ public static final String COL_DETAIL_NAME = "DETAIL_NAME";
+ /**
+ * 工艺要求
+ */
+ public static final String COL_ASK = "ASK";
+ /**
+ * 是否合格
+ */
+ public static final String COL_QUALIFIED = "QUALIFIED";
+ /**
+ * [过程记录模板-槽-明细]id
+ */
+ public static final String COL_TEMPLATE_TANK_ID = "TEMPLATE_TANK_ID";
+ /**
+ * 明细序号
+ */
+ public static final String COL_DETAIL_INDEX = "DETAIL_INDEX";
+ /**
+ * 时间
+ */
+ public static final String COL_RFPD_TIME = "RFPD_TIME";
+ /**
+ * 参数名称
+ */
+ public static final String COL_PARAM_NAME = "PARAM_NAME";
+ /**
+ * 参数值
+ */
+ public static final String COL_PARAM_VALUE = "PARAM_VALUE";
+ /**
+ * 备注
+ */
+ public static final String COL_REMARK = "REMARK";
+
+ /**
+ * 明细名称
+ */
+ @Schema(description = "明细名称")
+ private String detailName;
+ /**
+ * 工艺要求
+ */
+ @Schema(description = "工艺要求")
+ private String ask;
+ /**
+ * 是否合格
+ */
+ @Schema(description = "是否合格")
+ private Integer qualified;
+ /**
+ * [过程记录模板-槽-明细]id
+ */
+ @Schema(description = "[过程记录模板-槽-明细]id")
+ private Long templateTankId;
+ /**
+ * 明细序号
+ */
+ @Schema(description = "明细序号")
+ private Integer detailIndex;
+ /**
+ * 时间
+ */
+ @Schema(description = "时间")
+ private LocalDateTime rfpdTime;
+ /**
+ * 参数名称
+ */
+ @Schema(description = "参数名称")
+ private String paramName;
+ /**
+ * 参数值
+ */
+ @Schema(description = "参数值")
+ private String paramValue;
+ /**
+ * 备注
+ */
+ @Schema(description = "备注")
+ private String remark;
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateTank.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateTank.java
new file mode 100644
index 00000000..2b4e1daa
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateTank.java
@@ -0,0 +1,75 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.pojo.entity;
+
+import lombok.Data;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+
+/**
+ * [过程记录模板-槽-明细] 实体类
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+@Data
+@TableName("QA_PRO_RE_TEMPLATE_TANK")
+@Schema(description = "ProReTemplateTank Entity对象")
+@EqualsAndHashCode(callSuper = true)
+public class ProReTemplateTank extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * [过程记录模板]id
+ */
+ public static final String COL_TEMPLATE_ID = "TEMPLATE_ID";
+ /**
+ * 槽号名称
+ */
+ public static final String COL_SLOT_NAME = "SLOT_NAME";
+ /**
+ * 插入序号
+ */
+ public static final String COL_INSERT_INDEX = "INSERT_INDEX";
+ /**
+ * 模板类型
+ */
+ public static final String COL_RFPS_TYPE = "RFPS_TYPE";
+ /**
+ * 槽号序号
+ */
+ public static final String COL_SLOT_INDEX = "SLOT_INDEX";
+
+ /**
+ * [过程记录模板]id
+ */
+ @Schema(description = "[过程记录模板]id")
+ private Long templateId;
+ /**
+ * 槽号名称
+ */
+ @Schema(description = "槽号名称")
+ private String slotName;
+ /**
+ * 插入序号
+ */
+ @Schema(description = "插入序号")
+ private Integer insertIndex;
+ /**
+ * 模板类型
+ */
+ @Schema(description = "模板类型")
+ private Integer rfpsType;
+ /**
+ * 槽号序号
+ */
+ @Schema(description = "槽号序号")
+ private Integer slotIndex;
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/AuditFileVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/AuditFileVO.java
index 7dbc80df..178c8ec1 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/AuditFileVO.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/AuditFileVO.java
@@ -6,6 +6,8 @@ package org.springblade.desk.quality.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springblade.desk.basic.pojo.vo.BaseEntityVO;
import org.springblade.desk.quality.pojo.entity.AuditFile;
import java.io.Serial;
@@ -19,12 +21,9 @@ import java.io.Serial;
@Data
@EqualsAndHashCode(callSuper = true)
public class AuditFileVO extends AuditFile {
- @Serial
- private static final long serialVersionUID = 1L;
+ @Serial
+ private static final long serialVersionUID = 1L;
- /**
- * todo:
- */
- @Schema(description = "状态名称")
- private String statusName;
+ @Schema(description = "base")
+ private BaseEntityVO base;
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateDetailVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateDetailVO.java
new file mode 100644
index 00000000..e56f726c
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateDetailVO.java
@@ -0,0 +1,23 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.pojo.vo;
+
+import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+
+/**
+ * [过程记录模板-明细] 视图实体类
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProReTemplateDetailVO extends ProReTemplateDetail {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateTankVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateTankVO.java
new file mode 100644
index 00000000..8147817c
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateTankVO.java
@@ -0,0 +1,28 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.pojo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import org.springblade.desk.quality.pojo.entity.ProReTemplateTank;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.util.List;
+
+/**
+ * [过程记录模板-槽-明细] 视图实体类
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProReTemplateTankVO extends ProReTemplateTank {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "detail 具体明细")
+ List childrenList;
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateVO.java
index a1aa60c4..1fbc8607 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateVO.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateVO.java
@@ -6,9 +6,11 @@ package org.springblade.desk.quality.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import org.springblade.desk.basic.pojo.vo.BaseEntityVO;
import org.springblade.desk.quality.pojo.entity.ProReTemplate;
import java.io.Serial;
+import java.util.List;
/**
* [过程记录模板] 视图实体类
@@ -19,13 +21,20 @@ import java.io.Serial;
@Data
@EqualsAndHashCode(callSuper = true)
public class ProReTemplateVO extends ProReTemplate {
- @Serial
- private static final long serialVersionUID = 1L;
+ @Serial
+ private static final long serialVersionUID = 1L;
+ /**
+ * todo:
+ */
+ @Schema(description = "base信息字段")
+ private BaseEntityVO base;
- @Schema(description = "[作业中心]name")
- private String wcName;
- @Schema(description = "[工序]name")
- private String ppsName;
- @Schema(description = "维护人")
- private String updateUserRealName;
+ @Schema(description = "[作业中心]name")
+ private String wcName;
+ @Schema(description = "[工序]name")
+ private String ppsName;
+ @Schema(description = "[审批状态]name")
+ private String approvalStatusName;
+ @Schema(description = "tank 槽明细")
+ private List preserveSlotList;
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestItemService2.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestItemService2.java
index 3b57bfe1..46196390 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestItemService2.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestItemService2.java
@@ -14,7 +14,7 @@ import org.springblade.desk.quality.pojo.entity.CycleTestItem;
import org.springblade.desk.quality.pojo.entity.CycleTestStandard;
import org.springblade.desk.quality.pojo.request.CycleTestItemSubmit;
import org.springblade.desk.quality.pojo.vo.CycleTestItemVO;
-import org.springblade.desk.quality.util.IdUtil;
+import org.springblade.desk.basic.util.IdUtil;
import org.springblade.desk.quality.wrapper.CycleTestItemWrapper;
import org.springblade.resource.feign.IAttachClient;
import org.springblade.resource.pojo.entity.Attach;
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestStandardService2.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestStandardService2.java
index 1eeb7f12..699f6d85 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestStandardService2.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestStandardService2.java
@@ -10,7 +10,7 @@ import org.springblade.desk.basic.constant.BaseCol;
import org.springblade.desk.quality.mapper.CycleTestStandardMapper;
import org.springblade.desk.quality.pojo.entity.CycleTestStandard;
import org.springblade.desk.quality.pojo.vo.CycleTestStandardVO;
-import org.springblade.desk.quality.util.IdUtil;
+import org.springblade.desk.basic.util.IdUtil;
import org.springblade.resource.feign.IAttachClient;
import org.springblade.resource.pojo.entity.Attach;
import org.springframework.stereotype.Service;
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IAuditFileService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IAuditFileService.java
index 1604429d..2bf11cff 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IAuditFileService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IAuditFileService.java
@@ -6,6 +6,7 @@ package org.springblade.desk.quality.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
+import org.springblade.core.tool.api.R;
import org.springblade.desk.quality.excel.AuditFileExcel;
import org.springblade.desk.quality.pojo.entity.AuditFile;
import org.springblade.desk.quality.pojo.vo.AuditFileVO;
@@ -41,4 +42,6 @@ public interface IAuditFileService extends BaseService {
* @param vo
*/
void setVOValue(AuditFileVO vo);
+
+ R upgradeVer(Long id);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateDetailService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateDetailService.java
new file mode 100644
index 00000000..5697b9eb
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateDetailService.java
@@ -0,0 +1,47 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail;
+import org.springblade.desk.quality.pojo.vo.ProReTemplateDetailVO;
+import org.springblade.desk.quality.excel.ProReTemplateDetailExcel;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseService;
+
+import java.util.List;
+
+/**
+ * [过程记录模板-明细] 服务类
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+public interface IProReTemplateDetailService extends BaseService {
+ /**
+ * 自定义分页
+ *
+ * @param page 分页参数
+ * @param proReTemplateDetail 查询参数
+ * @return IPage
+ */
+ IPage selectProReTemplateDetailPage(IPage page, ProReTemplateDetailVO proReTemplateDetail);
+
+ /**
+ * 导出数据
+ *
+ * @param queryWrapper 查询条件
+ * @return List
+ */
+ List exportProReTemplateDetail(Wrapper queryWrapper);
+
+ /**
+ * VO
+ *
+ * @param vo
+ */
+ void setVOValue(ProReTemplateDetailVO vo);
+
+ List getListByTemplateTankId(Long templateTankId);
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java
index 60b9144a..11cfef4c 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java
@@ -5,11 +5,14 @@ package org.springblade.desk.quality.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.v3.oas.annotations.Parameter;
import org.springblade.core.mp.base.BaseService;
+import org.springblade.core.tool.api.R;
import org.springblade.desk.quality.excel.ProReTemplateExcel;
import org.springblade.desk.quality.pojo.entity.ProReTemplate;
import org.springblade.desk.quality.pojo.vo.InspectionTemplateVO;
import org.springblade.desk.quality.pojo.vo.ProReTemplateVO;
+import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -20,26 +23,35 @@ import java.util.List;
* @since 2025-12-22
*/
public interface IProReTemplateService extends BaseService {
- /**
- * 自定义分页
- *
- * @param page 分页参数
- * @param proReTemplate 查询参数
- * @return IPage
- */
- IPage selectProReTemplatePage(IPage page, ProReTemplateVO proReTemplate);
-
- /**
- * 导出数据
- *
- * @param queryWrapper 查询条件
- * @return List
- */
- List exportProReTemplate(Wrapper queryWrapper);
+ /**
+ * 自定义分页
+ *
+ * @param page 分页参数
+ * @param proReTemplate 查询参数
+ * @return IPage
+ */
+ IPage selectProReTemplatePage(IPage page, ProReTemplateVO proReTemplate);
+
+ /**
+ * 导出数据
+ *
+ * @param queryWrapper 查询条件
+ * @return List
+ */
+ List exportProReTemplate(Wrapper queryWrapper);
/**
* VO
+ *
* @param vo
*/
- void setVOValue(ProReTemplateVO vo);
+ void setVOValue(ProReTemplateVO vo);
+
+ R updateDetail(ProReTemplateVO vo);
+
+ R copy(Long id);
+
+ R upgradeVer(Long id);
+
+ R removeFromDetail(Long tankId);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateTankService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateTankService.java
new file mode 100644
index 00000000..37227404
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateTankService.java
@@ -0,0 +1,47 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import org.springblade.desk.quality.pojo.entity.ProReTemplateTank;
+import org.springblade.desk.quality.pojo.vo.ProReTemplateTankVO;
+import org.springblade.desk.quality.excel.ProReTemplateTankExcel;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseService;
+
+import java.util.List;
+
+/**
+ * [过程记录模板-槽-明细] 服务类
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+public interface IProReTemplateTankService extends BaseService {
+ /**
+ * 自定义分页
+ *
+ * @param page 分页参数
+ * @param proReTemplateTank 查询参数
+ * @return IPage
+ */
+ IPage selectProReTemplateTankPage(IPage page, ProReTemplateTankVO proReTemplateTank);
+
+ /**
+ * 导出数据
+ *
+ * @param queryWrapper 查询条件
+ * @return List
+ */
+ List exportProReTemplateTank(Wrapper queryWrapper);
+
+ /**
+ * VO
+ *
+ * @param vo
+ */
+ void setVOValue(ProReTemplateTankVO vo);
+
+ List getListByTemplateId(Long templateId);
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService222.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService222.java
index f248a733..f35d8a9f 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService222.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService222.java
@@ -13,7 +13,7 @@ import org.springblade.desk.quality.mapper.LiquidTankTaskMapper;
import org.springblade.desk.quality.pojo.entity.LiquidTank;
import org.springblade.desk.quality.pojo.entity.LiquidTankTask;
import org.springblade.desk.quality.pojo.request.*;
-import org.springblade.desk.quality.util.IdUtil;
+import org.springblade.desk.basic.util.IdUtil;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.UserInfo;
import org.springframework.stereotype.Service;
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskSetVoService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskSetVoService.java
index 541dc4c5..b233b56e 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskSetVoService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskSetVoService.java
@@ -18,7 +18,7 @@ import org.springblade.desk.quality.constant.LiquidTankTaskConst;
import org.springblade.desk.quality.pojo.entity.LiquidTank;
import org.springblade.desk.quality.pojo.vo.LiquidTankReportConfigVO;
import org.springblade.desk.quality.pojo.vo.LiquidTankTaskVO;
-import org.springblade.desk.quality.util.IdUtil;
+import org.springblade.desk.basic.util.IdUtil;
import org.springblade.system.feign.IDictClient;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.UserInfo;
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/AuditFileServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/AuditFileServiceImpl.java
index 60e5203d..a4e32882 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/AuditFileServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/AuditFileServiceImpl.java
@@ -11,6 +11,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tool.api.R;
import org.springblade.desk.quality.excel.AuditFileExcel;
import org.springblade.desk.quality.mapper.AuditFileMapper;
import org.springblade.desk.quality.pojo.entity.AuditFile;
@@ -55,4 +56,9 @@ public class AuditFileServiceImpl extends BaseServiceImpl
+ implements IProReTemplateDetailService {
+
+ @Resource
+ private IUserClient userClient;
+
+ @Override
+ public IPage selectProReTemplateDetailPage(IPage page, ProReTemplateDetailVO proReTemplateDetail) {
+ return page.setRecords(baseMapper.selectProReTemplateDetailPage(page, proReTemplateDetail));
+ }
+
+ @Override
+ public List exportProReTemplateDetail(Wrapper queryWrapper) {
+ List proReTemplateDetailList = baseMapper.exportProReTemplateDetail(queryWrapper);
+ //proReTemplateDetailList.forEach(proReTemplateDetail -> {
+ // proReTemplateDetail.setTypeName(DictCache.getValue(DictEnum.YES_NO, ProReTemplateDetail.getType()));
+ //});
+ return proReTemplateDetailList;
+ }
+
+ @Override
+ public void setVOValue(ProReTemplateDetailVO vo) {
+
+ }
+
+ @Override
+ public List getListByTemplateTankId(Long templateTankId) {
+ LambdaQueryWrapper qw = Wrappers.lambdaQuery(ProReTemplateDetail.class);
+ qw.eq(ProReTemplateDetail::getTemplateTankId, templateTankId);
+ List list = list(qw);
+ return ProReTemplateDetailWrapper.build().listVO(list);
+ }
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java
index 354ca69a..2d82f75d 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java
@@ -3,6 +3,7 @@
*/
package org.springblade.desk.quality.service.impl;
+import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource;
@@ -10,17 +11,33 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tool.api.R;
+import org.springblade.desk.basic.pojo.vo.BaseEntityVO;
+import org.springblade.desk.quality.constant.ProReTemplateConst;
import org.springblade.desk.quality.excel.ProReTemplateExcel;
import org.springblade.desk.quality.mapper.ProReTemplateMapper;
import org.springblade.desk.quality.pojo.entity.ProReTemplate;
-import org.springblade.desk.quality.pojo.vo.InspectionTemplateVO;
+import org.springblade.desk.quality.pojo.vo.ProReTemplateDetailVO;
+import org.springblade.desk.quality.pojo.vo.ProReTemplateTankVO;
import org.springblade.desk.quality.pojo.vo.ProReTemplateVO;
+import org.springblade.desk.quality.service.IProReTemplateDetailService;
import org.springblade.desk.quality.service.IProReTemplateService;
+import org.springblade.desk.quality.service.IProReTemplateTankService;
+import org.springblade.desk.basic.util.IdUtil;
+import org.springblade.system.feign.IDictClient;
+import org.springblade.system.feign.ISysClient;
import org.springblade.system.feign.IUserClient;
+import org.springblade.system.pojo.entity.Dept;
+import org.springblade.system.pojo.entity.User;
+import org.springblade.system.pojo.entity.UserInfo;
import org.springframework.stereotype.Service;
+import java.util.Comparator;
import java.util.List;
+import java.util.stream.Collectors;
/**
* [过程记录模板] 服务实现类
@@ -34,27 +51,145 @@ import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Slf4j
public class ProReTemplateServiceImpl extends BaseServiceImpl
- implements IProReTemplateService {
+ implements IProReTemplateService {
@Resource
private IUserClient userClient;
+ @Resource
+ private ISysClient sysClient;
+ @Resource
+ private IDictClient dictClient;
+ @Resource
+ private IProReTemplateTankService tankService;
+ @Resource
+ private IProReTemplateDetailService detailService;
+
+ @Override
+ public IPage selectProReTemplatePage(IPage page, ProReTemplateVO proReTemplate) {
+ return page.setRecords(baseMapper.selectProReTemplatePage(page, proReTemplate));
+ }
+
+ @Override
+ public List exportProReTemplate(Wrapper queryWrapper) {
+ List proReTemplateList = baseMapper.exportProReTemplate(queryWrapper);
+ //proReTemplateList.forEach(proReTemplate -> {
+ // proReTemplate.setTypeName(DictCache.getValue(DictEnum.YES_NO, ProReTemplate.getType()));
+ //});
+ return proReTemplateList;
+ }
+
+ @Override
+ public void setVOValue(ProReTemplateVO vo) {
+ vo.setBase(setBaseVOValue(vo, ProReTemplateConst.DIC));
+ //
+ List tankVOList = tankService.getListByTemplateId(vo.getId());
+ if (tankVOList != null && !tankVOList.isEmpty()) {
+ // 根据插入序号 getInsertIndex 排序 生成新的list
+ tankVOList = tankVOList.stream()
+ .sorted(Comparator.comparingInt(ProReTemplateTankVO::getInsertIndex))
+ .collect(Collectors.toList());
+ vo.setPreserveSlotList(tankVOList);
+ for (ProReTemplateTankVO tankVO : vo.getPreserveSlotList()) {
+ List detailVOList = detailService.getListByTemplateTankId(tankVO.getId());
+ tankVO.setChildrenList(detailVOList);
+ }
+ }
+ }
+
+ /**
+ * 构建BaseEntityVO
+ *
+ * @param be 不赋值可以传入null
+ * @param statusCode 不需要可以传null
+ * @return BaseEntityVO
+ */
+ public BaseEntityVO setBaseVOValue(BaseEntity be, String statusCode) {
+ if (be == null) {
+ return null;
+ }
+ BaseEntityVO bv = new BaseEntityVO();
+ R rUICR = null;
+ R rUIUP = null;
+ R rDept = null;
+ if (IdUtil.isValid(be.getCreateUser())) {
+ rUICR = userClient.userInfo(be.getCreateUser());
+ if (rUICR != null && rUICR.isSuccess() &&
+ rUICR.getData() != null && rUICR.getData().getUser() != null) {
+ bv.setCreateUserRealName(rUICR.getData().getUser().getRealName());
+ }
+
+ }
+ if (IdUtil.isValid(be.getUpdateUser())) {
+ rUIUP = userClient.userInfo(be.getUpdateUser());
+ if (rUIUP != null && rUIUP.isSuccess() &&
+ rUIUP.getData() != null && rUIUP.getData().getUser() != null) {
+ bv.setUpdateUserRealName(rUIUP.getData().getUser().getRealName());
+ }
+ }
+ if (IdUtil.isValid(be.getCreateDept())) {
+ rDept = sysClient.getDept(be.getCreateDept());
+ if (rDept != null && rDept.isSuccess() && rDept.getData() != null) {
+ bv.setCreateDeptName(rDept.getData().getDeptName());
+ }
+ }
+ if (be.getCreateTime() != null && be.getUpdateTime() != null) {
+ if (be.getUpdateTime().after(be.getCreateTime())) { // 更新时间更晚
+ bv.setKeepUser(be.getUpdateUser());
+ bv.setKeepUserRealName(bv.getUpdateUserRealName());
+ } else { // 等于或更早
+ bv.setKeepUser(be.getCreateUser());
+ bv.setKeepUserRealName(bv.getCreateUserRealName());
+ }
+ }
+ if (StringUtils.isNotBlank(statusCode)) {
+ R rStatusDic = dictClient.getValue(statusCode, "" + be.getStatus());
+ if (rStatusDic != null && rStatusDic.isSuccess() && rStatusDic.getData() != null) {
+ bv.setStatusName(rStatusDic.getData());
+ }
+ }
+ return bv;
+ }
- @Override
- public IPage selectProReTemplatePage(IPage page, ProReTemplateVO proReTemplate) {
- return page.setRecords(baseMapper.selectProReTemplatePage(page, proReTemplate));
- }
+ @Override
+ public R updateDetail(ProReTemplateVO vo) {
+ for (ProReTemplateTankVO tankOne : vo.getPreserveSlotList()) {
+ tankOne.setTemplateId(vo.getId());
+ if (IdUtil.isValid(tankOne.getId())) {
+ tankService.updateById(tankOne);
+ } else {
+ tankService.save(tankOne);
+ }
+ for (ProReTemplateDetailVO detailOne : tankOne.getChildrenList()) {
+ detailOne.setTemplateTankId(tankOne.getId());
+ if (IdUtil.isValid(detailOne.getId())) {
+ detailService.updateById(detailOne);
+ } else {
+ detailService.save(detailOne);
+ }
+ }
+ }
+ ProReTemplate e = new ProReTemplate();
+ BeanUtil.copyProperties(vo, e, true);
+ return R.status(updateById(e));
+ }
- @Override
- public List exportProReTemplate(Wrapper queryWrapper) {
- List proReTemplateList = baseMapper.exportProReTemplate(queryWrapper);
- //proReTemplateList.forEach(proReTemplate -> {
- // proReTemplate.setTypeName(DictCache.getValue(DictEnum.YES_NO, ProReTemplate.getType()));
- //});
- return proReTemplateList;
- }
+ @Override
+ public R copy(Long id) {
+ ProReTemplate find = getById(id);
+ ProReTemplate copy = new ProReTemplate();
+ BeanUtil.copyProperties(find, copy, true);
+ copy.setId(null);
+ copy.setStatus(ProReTemplateConst.STATUS_NEW);
+ return R.status(save(copy));
+ }
- @Override
- public void setVOValue(ProReTemplateVO vo) {
+ @Override
+ public R upgradeVer(Long id) {
+ return null;
+ }
- }
+ @Override
+ public R removeFromDetail(Long tankId) {
+ return R.status(tankService.removeById(tankId));
+ }
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateTankServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateTankServiceImpl.java
new file mode 100644
index 00000000..ab22ddac
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateTankServiceImpl.java
@@ -0,0 +1,72 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import jakarta.annotation.Resource;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.desk.quality.excel.ProReTemplateTankExcel;
+import org.springblade.desk.quality.mapper.ProReTemplateTankMapper;
+import org.springblade.desk.quality.pojo.entity.ProReTemplateTank;
+import org.springblade.desk.quality.pojo.vo.ProReTemplateTankVO;
+import org.springblade.desk.quality.service.IProReTemplateTankService;
+import org.springblade.desk.quality.wrapper.ProReTemplateTankWrapper;
+import org.springblade.system.feign.IUserClient;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * [过程记录模板-槽-明细] 服务实现类
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+@Service
+@Data
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Slf4j
+public class ProReTemplateTankServiceImpl extends BaseServiceImpl
+ implements IProReTemplateTankService {
+
+ @Resource
+ private IUserClient userClient;
+
+ @Override
+ public IPage selectProReTemplateTankPage(IPage page, ProReTemplateTankVO proReTemplateTank) {
+ return page.setRecords(baseMapper.selectProReTemplateTankPage(page, proReTemplateTank));
+ }
+
+ @Override
+ public List exportProReTemplateTank(Wrapper queryWrapper) {
+ List proReTemplateTankList = baseMapper.exportProReTemplateTank(queryWrapper);
+ //proReTemplateTankList.forEach(proReTemplateTank -> {
+ // proReTemplateTank.setTypeName(DictCache.getValue(DictEnum.YES_NO, ProReTemplateTank.getType()));
+ //});
+ return proReTemplateTankList;
+ }
+
+ @Override
+ public void setVOValue(ProReTemplateTankVO vo) {
+
+ }
+
+ @Override
+ public List getListByTemplateId(Long templateId) {
+ LambdaQueryWrapper qw = Wrappers.lambdaQuery(ProReTemplateTank.class);
+ qw.eq(ProReTemplateTank::getTemplateId, templateId);
+ List list = list(qw);
+ return ProReTemplateTankWrapper.build().listVO(list);
+ }
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/StandardServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/StandardServiceImpl.java
index 0fded3c3..caf7ecbb 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/StandardServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/StandardServiceImpl.java
@@ -16,7 +16,7 @@ import org.springblade.desk.quality.mapper.StandardMapper;
import org.springblade.desk.quality.pojo.entity.Standard;
import org.springblade.desk.quality.pojo.vo.StandardVO;
import org.springblade.desk.quality.service.IStandardService;
-import org.springblade.desk.quality.util.IdUtil;
+import org.springblade.desk.basic.util.IdUtil;
import org.springblade.resource.feign.IAttachClient;
import org.springblade.resource.pojo.entity.Attach;
import org.springblade.system.feign.IUserClient;
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/BaseEntityUtil.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/BaseEntityUtil.java
index 37facea2..6f087538 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/BaseEntityUtil.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/BaseEntityUtil.java
@@ -3,13 +3,14 @@ package org.springblade.desk.quality.util;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.secure.utils.AuthUtil;
-import org.springframework.beans.BeanWrapper;
-import org.springframework.beans.BeanWrapperImpl;
+import org.springblade.desk.basic.util.IdUtil;
-import java.beans.PropertyDescriptor;
import java.util.Date;
import java.util.Objects;
+/**
+ * todo:
+ */
public class BaseEntityUtil {
/**
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateDetailWrapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateDetailWrapper.java
new file mode 100644
index 00000000..7803c329
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateDetailWrapper.java
@@ -0,0 +1,35 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail;
+import org.springblade.desk.quality.pojo.vo.ProReTemplateDetailVO;
+import java.util.Objects;
+
+/**
+ * [过程记录模板-明细] 包装类,返回视图层所需的字段
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+public class ProReTemplateDetailWrapper extends BaseEntityWrapper {
+
+ public static ProReTemplateDetailWrapper build() {
+ return new ProReTemplateDetailWrapper();
+ }
+
+ @Override
+ public ProReTemplateDetailVO entityVO(ProReTemplateDetail proReTemplateDetail) {
+ ProReTemplateDetailVO VO = Objects.requireNonNull(BeanUtil.copyProperties(proReTemplateDetail, ProReTemplateDetailVO.class));
+
+ //User createUser = UserCache.getUser(proReTemplateDetail.getCreateUser());
+ //User updateUser = UserCache.getUser(proReTemplateDetail.getUpdateUser());
+ //proReTemplateDetailVO.setCreateUserName(createUser.getName());
+ //proReTemplateDetailVO.setUpdateUserName(updateUser.getName());
+
+ return VO;
+ }
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateTankWrapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateTankWrapper.java
new file mode 100644
index 00000000..7e7578ea
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateTankWrapper.java
@@ -0,0 +1,35 @@
+/**
+ * Author: Tom Shuo
+ */
+package org.springblade.desk.quality.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.desk.quality.pojo.entity.ProReTemplateTank;
+import org.springblade.desk.quality.pojo.vo.ProReTemplateTankVO;
+import java.util.Objects;
+
+/**
+ * [过程记录模板-槽-明细] 包装类,返回视图层所需的字段
+ *
+ * @author Tom Shuo
+ * @since 2025-12-30
+ */
+public class ProReTemplateTankWrapper extends BaseEntityWrapper {
+
+ public static ProReTemplateTankWrapper build() {
+ return new ProReTemplateTankWrapper();
+ }
+
+ @Override
+ public ProReTemplateTankVO entityVO(ProReTemplateTank proReTemplateTank) {
+ ProReTemplateTankVO VO = Objects.requireNonNull(BeanUtil.copyProperties(proReTemplateTank, ProReTemplateTankVO.class));
+
+ //User createUser = UserCache.getUser(proReTemplateTank.getCreateUser());
+ //User updateUser = UserCache.getUser(proReTemplateTank.getUpdateUser());
+ //proReTemplateTankVO.setCreateUserName(createUser.getName());
+ //proReTemplateTankVO.setUpdateUserName(updateUser.getName());
+
+ return VO;
+ }
+}