Merge branch 'refs/heads/master' into dev-qinyulong

develop-QA
qinyulong 6 months ago
commit d18b98f069
  1. 406
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 1
      blade-ops/blade-job/src/main/resources/application-dev.yml
  3. 3
      blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/AttachClient.java
  4. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldPlan.java
  5. 8
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/enums/YieldOrderEnum.java
  6. 18
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/enums/YieldPlanEnum.java
  7. 4
      blade-service/blade-desk/pom.xml
  8. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BAModuleConst.java
  9. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BaseCol.java
  10. 41
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/pojo/vo/BaseEntityVO.java
  11. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/util/IdUtil.java
  12. 58
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java
  13. 24
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldPlanController.java
  14. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/AssayContentMapper.xml
  15. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/MoldPlanMapper.xml
  16. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.xml
  17. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsRecordMapper.xml
  18. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderCraftMapper.xml
  19. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java
  20. 42
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml
  21. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldPlanMapper.java
  22. 18
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldPlanMapper.xml
  23. 18
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
  24. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java
  25. 66
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  26. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java
  27. 23
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/constant/ProReTemplateConst.java
  28. 344
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateController.java
  29. 240
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateDetailController.java
  30. 240
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateTankController.java
  31. 89
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateDetailExcel.java
  32. 64
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateTankExcel.java
  33. 39
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.java
  34. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.xml
  35. 39
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.java
  36. 21
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.xml
  37. 23
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateDetailDTO.java
  38. 23
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateTankDTO.java
  39. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplate.java
  40. 112
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateDetail.java
  41. 75
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateTank.java
  42. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/AuditFileVO.java
  43. 23
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateDetailVO.java
  44. 28
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateTankVO.java
  45. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateVO.java
  46. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestItemService2.java
  47. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestStandardService2.java
  48. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IAuditFileService.java
  49. 47
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateDetailService.java
  50. 46
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java
  51. 47
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateTankService.java
  52. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService222.java
  53. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskSetVoService.java
  54. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/AuditFileServiceImpl.java
  55. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankServiceImpl.java
  56. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankTaskServiceImpl.java
  57. 72
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateDetailServiceImpl.java
  58. 169
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java
  59. 72
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateTankServiceImpl.java
  60. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/StandardServiceImpl.java
  61. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/BaseEntityUtil.java
  62. 35
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateDetailWrapper.java
  63. 35
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateTankWrapper.java
  64. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml
  65. 34
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.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;
};
}
}

@ -3,6 +3,7 @@ server:
port: 7770
#job服务配置
#PowerJob外部应用启动类 tech.powerjob.server.PowerJobServerApplication
powerjob:
worker:
app-name: ${spring.application.name}

@ -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 {

@ -160,7 +160,7 @@ public class YieldPlan extends BaseEntity {
private Long priority;
/**
*
* 计划类型
*/
@TableField(value = "PLAN_TYPE")
private Long planType;

@ -28,8 +28,8 @@ public enum YieldOrderEnum {
STATUS_PROCESS_WAITING("待生产", 10004),
STATUS_PROCESSING("加工中", 10005),
STATUS_PROCESS_ERROR("排产异常", 10006),
STATUS_COMPLETED("已完工", 100015),
STATUS_CLOSED("已关闭", 100021),
STATUS_COMPLETED("已完工", 10015),
STATUS_CLOSED("已关闭", 10021),
/**
* 生产订单接收状态
@ -83,7 +83,7 @@ public enum YieldOrderEnum {
VALIDATION_RESULT_PASS("验证完成", 16006),
;
final String name;
final int category;
final int code;
/**
* 匹配枚举值
@ -107,7 +107,7 @@ public enum YieldOrderEnum {
*/
public static String getName(int category) {
YieldOrderEnum item = Arrays.stream(YieldOrderEnum.values())
.filter(enumItem -> enumItem.getCategory() == category)
.filter(enumItem -> enumItem.getCode() == category)
.findFirst()
.orElse(null);
return ObjectUtil.isEmpty(item) ? StringPool.EMPTY : item.getName();

@ -26,11 +26,21 @@ public enum YieldPlanEnum {
STATUS_NO_CRAFT("无工艺", 10003),
STATUS_DISPATCHED("已派工", 10004),
STATUS_PROCESSING("加工中", 10005),
STATUS_COMPLETED("已完工", 100015),
STATUS_CLOSED("已关闭", 100021),
STATUS_COMPLETED("已完工", 10015),
STATUS_CLOSED("已关闭", 10021),
/**
* 生产订单订单类型
*/
PLAN_TYPE_1("热表订单", 12001),
PLAN_TYPE_2("烧结订单", 12002),
PLAN_TYPE_3("玻璃饼", 12003),
PLAN_TYPE_4("壳体", 12004),
PLAN_TYPE_5("插针", 12005),
PLAN_TYPE_6("石墨模", 12006),
;
final String name;
final int category;
final int code;
/**
* 匹配枚举值
@ -54,7 +64,7 @@ public enum YieldPlanEnum {
*/
public static String getName(int category) {
YieldPlanEnum item = Arrays.stream(YieldPlanEnum.values())
.filter(enumItem -> enumItem.getCategory() == category)
.filter(enumItem -> enumItem.getCode() == category)
.findFirst()
.orElse(null);
return ObjectUtil.isEmpty(item) ? StringPool.EMPTY : item.getName();

@ -82,6 +82,10 @@
<groupId>org.springblade</groupId>
<artifactId>blade-resource-api</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-system-api</artifactId>
</dependency>
</dependencies>

@ -0,0 +1,11 @@
package org.springblade.desk.basic.constant;
public interface BAModuleConst {
/**
* 模块前缀
*/
String PREFIX = "BA";
String CONTROLLER_PREFIX = "/BA";
}

@ -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";
}

@ -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";
}

@ -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) {

@ -44,22 +44,42 @@ public class YieldOrderController extends BladeController {
private final IYieldOrderCraftService yieldOrderCraftService;
/**
* 分页查询列表
* 分页查询列表-电镀
*/
@GetMapping("/page")
@GetMapping("/pageElectroplate")
@Parameters({
@Parameter(name = "yoCode", description = "计划单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "yoCode", description = "生产单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "partCode", description = "零件号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "batchNo", description = "批次号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "cardNo", description = "流程卡号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "roamNo", description = "流转编号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "reworkCode", description = "返工单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "status", description = "状态", in = ParameterIn.QUERY, schema = @Schema(type = "int"))
@Parameter(name = "ypCode", description = "计划单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "yoCode", description = "生产单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "partCode", description = "零件号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "batchNo", description = "批次号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "cardNo", description = "流程卡号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "roamNo", description = "流转编号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "reworkCode", description = "返工单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "status", description = "状态", in = ParameterIn.QUERY, schema = @Schema(type = "int"))
})
@Operation(summary = "分页", description = "")
public R<IPage<YieldOrderVo>> page(@Parameter(hidden = true) YieldOrder entity, Query query) {
IPage<YieldOrder> page = yieldOrderService.selectPage(Condition.getPage(query), entity);
@Operation(summary = "分页查询列表-电镀", description = "")
public R<IPage<YieldOrderVo>> pageElectroplate(@Parameter(hidden = true) YieldOrder entity, Query query) {
IPage<YieldOrder> page = yieldOrderService.selectPageElectroplate(Condition.getPage(query), entity);
return R.data(YieldOrderWrapper.build().pageVO(page));
}
/**
* 分页查询列表-烧结
*/
@GetMapping("/pageSintering")
@Parameters({
@Parameter(name = "yoCode", description = "计划单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "yoCode", description = "生产单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "partCode", description = "零件号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "batchNo", description = "批次号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "cardNo", description = "流程卡号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "roamNo", description = "流转编号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "reworkCode", description = "返工单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "status", description = "状态", in = ParameterIn.QUERY, schema = @Schema(type = "int"))
})
@Operation(summary = "分页查询列表-烧结", description = "")
public R<IPage<YieldOrderVo>> pageSintering(@Parameter(hidden = true) YieldOrder entity, Query query) {
IPage<YieldOrder> page = yieldOrderService.selectPageSintering(Condition.getPage(query), entity);
return R.data(YieldOrderWrapper.build().pageVO(page));
}
@ -68,10 +88,10 @@ public class YieldOrderController extends BladeController {
*/
@GetMapping("/pageException")
@Parameters({
@Parameter(name = "yoCode", description = "生产单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "partCode", description = "零件号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "validationResult", description = "校验结果, 16002:数据缺失, 16003:工艺缺失, 16004:资源缺失, 16005:交期冲突",
in = ParameterIn.QUERY, schema = @Schema(type = "string"))
@Parameter(name = "yoCode", description = "生产单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "partCode", description = "零件号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "validationResult", description = "校验结果, 16002:数据缺失, 16003:工艺缺失, 16004:资源缺失, 16005:交期冲突",
in = ParameterIn.QUERY, schema = @Schema(type = "string"))
})
@Operation(summary = "分页-异常订单", description = "")
public R<IPage<YieldOrderVo>> pageException(@Parameter(hidden = true) YieldOrder entity, Query query) {
@ -79,7 +99,7 @@ public class YieldOrderController extends BladeController {
page.setRecords(new ArrayList<>());
if (ObjectUtil.isNotEmpty(entity.getValidationResult())) {
page = yieldOrderService.selectPage(Condition.getPage(query), entity);
page = yieldOrderService.selectPageSintering(Condition.getPage(query), entity);
}
return R.data(YieldOrderWrapper.build().pageVO(page));
@ -131,7 +151,7 @@ public class YieldOrderController extends BladeController {
@PostMapping("/closeBatch")
@Operation(summary = "批量关闭", description = "传入ids")
public R closeBatch(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
Boolean result = yieldOrderService.changeStatus(Func.toLongList(ids), YieldOrderEnum.STATUS_CLOSED.getCategory());
Boolean result = yieldOrderService.changeStatus(Func.toLongList(ids), YieldOrderEnum.STATUS_CLOSED.getCode());
return R.status(result);
}

@ -49,19 +49,33 @@ public class YieldPlanController extends BladeController {
return erpDataSearchClient;
}
/**
* 分页查询列表-电镀
*/
@GetMapping("/pageElectroplate")
@Parameters({
@Parameter(name = "ypCode", description = "计划单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "partCode", description = "零件号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "status", description = "状态", in = ParameterIn.QUERY, schema = @Schema(type = "int"))
})
@Operation(summary = "分页", description = "")
public R<IPage<YieldPlanVo>> pageElectroplate(@Parameter(hidden = true) YieldPlan entity, Query query) {
IPage<YieldPlan> page = yieldPlanService.selectPageElectroplate(Condition.getPage(query), entity);
return R.data(YieldPlanWrapper.build().pageVO(page));
}
/**
* 分页查询列表
* 分页查询列表-烧结
*/
@GetMapping("/page")
@GetMapping("/pageSintering")
@Parameters({
@Parameter(name = "ypCode", description = "计划单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "partCode", description = "零件号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "status", description = "状态", in = ParameterIn.QUERY, schema = @Schema(type = "int"))
})
@Operation(summary = "分页", description = "")
public R<IPage<YieldPlanVo>> page(@Parameter(hidden = true) YieldPlan entity, Query query) {
IPage<YieldPlan> page = yieldPlanService.selectPage(Condition.getPage(query), entity);
public R<IPage<YieldPlanVo>> pageSintering(@Parameter(hidden = true) YieldPlan entity, Query query) {
IPage<YieldPlan> page = yieldPlanService.selectPageSintering(Condition.getPage(query), entity);
return R.data(YieldPlanWrapper.build().pageVO(page));
}
@ -137,7 +151,7 @@ public class YieldPlanController extends BladeController {
@PostMapping("/closeBatch")
@Operation(summary = "批量关闭", description = "传入ids")
public R closeBatch(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
Boolean result = yieldPlanService.changeStatus(Func.toLongList(ids), YieldPlanEnum.STATUS_CLOSED.getCategory());
Boolean result = yieldPlanService.changeStatus(Func.toLongList(ids), YieldPlanEnum.STATUS_CLOSED.getCode());
return R.status(result);
}

@ -7,11 +7,11 @@
SELECT ID, TENANT_ID, CREATE_USER, CREATE_DEPT, CREATE_TIME, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED,
WC_ID, ASSAY_MAN, ASSAY_TIME, APPLY_STATUS, GOLD_POTASSIUM, SILVER_POTASSIUM, SILVER_PLATE
FROM MES_ASSAY_CONTENT
<if test = "wcId != null and wcId != ''">
AND WC_ID = #{wcId}
<if test = "entity.wcId != null and entity.wcId != ''">
AND WC_ID = #{entity.wcId}
</if>
<if test = "status != null and status != ''">
AND status = #{status}
<if test = "entity.status != null and entity.status != ''">
AND status = #{entity.status}
</if>
</select>
</mapper>

@ -8,11 +8,11 @@
MO_CODE, MO_NAME, QUANTITY, ERP_ID, YP_ID, ERP_WO_CODE, MAF_STATUS, PLAN_TYPE, NEED_DATE, KEEPER, RELEASER, QUA_LEVEL,
PLAN_TYPE_NAME, PART_CODE, PART_NAME, MEMO, MAF_TYPE, URGENT_TYPE
FROM MES_MOLD_PLAN
<if test = "moCode != null and moCode != ''">
AND MO_CODE LIKE CONCAT('%', #{moCode}, '%')
<if test = "entity.moCode != null and entity.moCode != ''">
AND MO_CODE LIKE CONCAT('%', CONCAT(#{entity.moCode}, '%'))
</if>
<if test = "partCode != null and partCode != ''">
AND PART_CODE LIKE CONCAT('%', #{partCode}, '%')
<if test = "entity.partCode != null and entity.partCode != ''">
AND PART_CODE LIKE CONCAT('%', CONCAT(#{entity.partCode}, '%'))
</if>
</select>
</mapper>

@ -8,14 +8,14 @@
GOODS_CODE, GOODS_DEMAND, APPROVAL_STATUS, BO_ID, BR_ID, AC_ID, PGR_ID, WC_ID, INVOLVE_CODE, CODE_NUM, APPROVAL_MAN,
APPROVAL_TIME, APPROVAL_MEMO
FROM MES_PLATE_GOODS_APPLY
<if test = "demandCode != null and demandCode != ''">
AND DEMAND_CODE LIKE CONCAT('%', #{demandCode}, '%')
<if test = "entity.demandCode != null and entity.demandCode != ''">
AND DEMAND_CODE LIKE CONCAT('%', CONCAT(#{entity.demandCode}, '%'))
</if>
<if test = "wcId != null and wcId != ''">
AND WC_ID = #{wcId}
<if test = "entity.wcId != null and entity.wcId != ''">
AND WC_ID = #{entity.wcId}
</if>
<if test = "status != null and status != ''">
AND status = #{status}
<if test = "entity.status != null and entity.status != ''">
AND status = #{entity.status}
</if>
</select>
</mapper>

@ -9,14 +9,14 @@
APPROVAL_STATUS, APPROVAL_MEMO, DECLARED_QUOTA, DECLARED_SILVER, DECLARED_STATUS, GOODS_BO_ID, COEFFICIENT_BO_ID,
PGR_CODE, SURPLUS, SILVER_POTASSIUM_RESIDUE
FROM MES_PLATE_GOODS_RECORD
<if test = "demandCode != null and demandCode != ''">
AND DEMAND_CODE LIKE CONCAT('%', #{demandCode}, '%')
<if test = "entity.demandCode != null and entity.demandCode != ''">
AND DEMAND_CODE LIKE CONCAT('%', CONCAT(#{entity.demandCode}, '%'))
</if>
<if test = "wcId != null and wcId != ''">
AND WC_ID = #{wcId}
<if test = "entity.wcId != null and entity.wcId != ''">
AND WC_ID = #{entity.wcId}
</if>
<if test = "status != null and status != ''">
AND status = #{status}
<if test = "entity.status != null and entity.status != ''">
AND status = #{entity.status}
</if>
</select>
</mapper>

@ -9,6 +9,5 @@
CA_ID, RP_ID, WORK_CENTER_ID
FROM MES_YIELD_ORDER_CRAFT
WHERE IS_DELETED = 0
</select>
</mapper>

@ -3,6 +3,7 @@ package org.springblade.desk.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import java.util.List;
@ -19,7 +20,8 @@ public interface YieldOrderMapper extends BaseMapper<YieldOrder> {
*
* @param page
* @param entity
* @param yieldTypeList
* @return
*/
List<YieldOrder> selectPage(IPage page, YieldOrder entity);
List<YieldOrder> selectPage(IPage page, YieldOrder entity, List<YieldOrderEnum> yieldTypeList);
}

@ -15,32 +15,38 @@
ERROR_INFO, RECEIVE_USER, RECEIVE_TIME
FROM MES_YIELD_ORDER
WHERE IS_DELETED = 0
<if test = "ypCode != null and ypCode != ''">
AND YP_CODE LIKE CONCAT('%', #{ypCode}, '%')
<if test = "yieldTypeList != null and yieldTypeList.size() > 0">
AND YIELD_TYPE IN
<foreach collection = "yieldTypeList" item = "yieldType" open = "(" separator = "," close = ")">
#{yieldType.code}
</foreach>
</if>
<if test = "yoCode != null and yoCode != ''">
AND YO_CODE LIKE CONCAT('%', #{yoCode}, '%')
<if test = "entity.ypCode != null and entity.ypCode != ''">
AND YP_CODE LIKE CONCAT('%', CONCAT(#{entity.ypCode}, '%'))
</if>
<if test = "partCode != null and partCode != ''">
AND PART_CODE LIKE CONCAT('%', #{partCode}, '%')
<if test = "entity.yoCode != null and entity.yoCode != ''">
AND YO_CODE LIKE CONCAT('%', CONCAT(#{entity.yoCode}, '%'))
</if>
<if test = "batchNo != null and batchNo != ''">
AND BATCH_NO LIKE CONCAT('%', #{batchNo}, '%')
<if test = "entity.partCode != null and entity.partCode != ''">
AND PART_CODE LIKE CONCAT('%', CONCAT(#{entity.partCode}, '%'))
</if>
<if test = "cardNo != null and cardNo != ''">
AND CARD_NO LIKE CONCAT('%', #{cardNo}, '%')
<if test = "entity.batchNo != null and entity.batchNo != ''">
AND BATCH_NO LIKE CONCAT('%', CONCAT(#{entity.batchNo}, '%'))
</if>
<if test = "roamNo != null and roamNo != ''">
AND ROAM_NO LIKE CONCAT('%', #{roamNo}, '%')
<if test = "entity.cardNo != null and entity.cardNo != ''">
AND CARD_NO LIKE CONCAT('%', CONCAT(#{entity.cardNo}, '%'))
</if>
<if test = "reworkCode != null and reworkCode != ''">
AND REWORK_CODE LIKE CONCAT('%', #{reworkCode}, '%')
<if test = "entity.roamNo != null and entity.roamNo != ''">
AND ROAM_NO LIKE CONCAT('%', CONCAT(#{entity.roamNo}, '%'))
</if>
<if test = "validationResult != null and validationResult != ''">
AND VALIDATION_RESULT = #{validationResult}
<if test = "entity.reworkCode != null and entity.reworkCode != ''">
AND REWORK_CODE LIKE CONCAT('%', CONCAT(#{entity.reworkCode}, '%'))
</if>
<if test = "status != null and status != ''">
AND status = #{status}
<if test = "entity.validationResult != null and entity.validationResult != ''">
AND VALIDATION_RESULT = #{entity.validationResult}
</if>
<if test = "entity.status != null and entity.status != ''">
AND status = #{entity.status}
</if>
</select>

@ -3,6 +3,7 @@ package org.springblade.desk.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.order.pojo.entity.YieldPlan;
import org.springblade.desk.order.pojo.enums.YieldPlanEnum;
import java.util.List;
@ -19,8 +20,10 @@ public interface YieldPlanMapper extends BaseMapper<YieldPlan> {
*
* @param page
* @param entity
* @param planTypeList
* @return
*/
List<YieldPlan> selectPage(IPage page, YieldPlan entity);
List<YieldPlan> selectPage(IPage page, YieldPlan entity, List<YieldPlanEnum> planTypeList);
}

@ -11,14 +11,20 @@
ROUTE_NO, CUSTODIAN, BPS_ID, PRIORITY, PLAN_TYPE, SURE_TYPE, CLOSE_MAN, CLOSE_TIME, PRODUCT_LINE
FROM MES_YIELD_PLAN
WHERE IS_DELETED = 0
<if test = "ypCode != null and ypCode != ''">
AND YP_CODE LIKE CONCAT('%', #{ypCode}, '%')
<if test = "planTypeList != null and planTypeList.size() > 0">
AND PLAN_TYPE IN
<foreach collection = "planTypeList" item = "planType" open = "(" separator = "," close = ")">
#{planType.code}
</foreach>
</if>
<if test = "partCode != null and partCode != ''">
AND PART_CODE LIKE CONCAT('%', #{partCode}, '%')
<if test = "entity.ypCode != null and entity.ypCode != ''">
AND YP_CODE LIKE CONCAT('%', CONCAT(#{entity.ypCode}, '%'))
</if>
<if test = "status != null and status != ''">
AND status = #{status}
<if test = "entity.partCode != null and entity.partCode != ''">
AND PART_CODE LIKE CONCAT('%', CONCAT(#{entity.partCode}, '%'))
</if>
<if test = "entity.status != null and entity.status != ''">
AND status = #{entity.status}
</if>
</select>
</mapper>

@ -25,6 +25,24 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
*/
IPage<YieldOrder> selectPage(IPage<YieldOrder> page, YieldOrder entity);
/**
* 自定义分页
*
* @param page
* @param entity
* @return
*/
IPage<YieldOrder> selectPageElectroplate(IPage<YieldOrder> page, YieldOrder entity);
/**
* 自定义分页
*
* @param page
* @param entity
* @return
*/
IPage<YieldOrder> selectPageSintering(IPage<YieldOrder> page, YieldOrder entity);
/**
* 批量确认
*

@ -21,7 +21,16 @@ public interface IYieldPlanService extends BaseService<YieldPlan> {
* @param entity
* @return
*/
IPage<YieldPlan> selectPage(IPage<YieldPlan> page, YieldPlan entity);
IPage<YieldPlan> selectPageElectroplate(IPage<YieldPlan> page, YieldPlan entity);
/**
* 自定义分页
*
* @param page
* @param entity
* @return
*/
IPage<YieldPlan> selectPageSintering(IPage<YieldPlan> page, YieldPlan entity);
/**
* 根据生产计划ID获取二级工艺

@ -66,7 +66,27 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
@Override
public IPage<YieldOrder> selectPage(IPage<YieldOrder> page, YieldOrder entity) {
List<YieldOrder> dataList = baseMapper.selectPage(page, entity);
List<YieldOrder> dataList = baseMapper.selectPage(page, entity, null);
return page.setRecords(dataList);
}
@Override
public IPage<YieldOrder> selectPageElectroplate(IPage<YieldOrder> page, YieldOrder entity) {
List<YieldOrderEnum> yieldTypeList = new ArrayList<>();
yieldTypeList.add(YieldOrderEnum.YIELD_TYPE_1);
List<YieldOrder> dataList = baseMapper.selectPage(page, entity, yieldTypeList);
return page.setRecords(dataList);
}
@Override
public IPage<YieldOrder> selectPageSintering(IPage<YieldOrder> page, YieldOrder entity) {
List<YieldOrderEnum> yieldTypeList = new ArrayList<>();
yieldTypeList.add(YieldOrderEnum.YIELD_TYPE_2);
yieldTypeList.add(YieldOrderEnum.YIELD_TYPE_3);
yieldTypeList.add(YieldOrderEnum.YIELD_TYPE_4);
yieldTypeList.add(YieldOrderEnum.YIELD_TYPE_5);
yieldTypeList.add(YieldOrderEnum.YIELD_TYPE_6);
List<YieldOrder> dataList = baseMapper.selectPage(page, entity, yieldTypeList);
return page.setRecords(dataList);
}
@ -77,7 +97,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
ids.forEach(id -> {
YieldOrder yieldOrder = new YieldOrder();
yieldOrder.setId(id);
yieldOrder.setReceiveStatus(YieldOrderEnum.RECEIVE_STATUS_YES.getCategory());
yieldOrder.setReceiveStatus(YieldOrderEnum.RECEIVE_STATUS_YES.getCode());
yieldOrderList.add(yieldOrder);
});
@ -115,7 +135,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
.ne(YieldOrder::getId, yieldOrder.getId());
YieldOrder yieldOrderCheck = baseMapper.selectOne(wrapper);
if (ObjectUtil.isNotEmpty(yieldOrderCheck)) {
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCategory());
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode());
yieldOrder.setValidationTime(DateUtil.now());
yieldOrder.setValidationMomo("已存在该流程卡号的数据");
this.updateById(yieldOrder);
@ -125,7 +145,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
// 2. 当生产订单类型为:表处理,壳体,插针订单,当镀种为空或面积为0时,不得自动分派并提示
if (YieldOrderEnum.YIELD_TYPE_1.equals(yieldOrder.getYieldType()) || YieldOrderEnum.YIELD_TYPE_4.equals(yieldOrder.getYieldType()) || YieldOrderEnum.YIELD_TYPE_5.equals(yieldOrder.getYieldType())) {
if (StringUtils.isBlank(yieldOrder.getPlate()) || yieldOrder.getYpArea() == 0) {
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCategory());
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode());
yieldOrder.setValidationTime(DateUtil.now());
yieldOrder.setValidationMomo("生产订单中镀种或面积为空,请维护基础数据");
this.updateById(yieldOrder);
@ -135,7 +155,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
// 3. 玻璃饼订单工艺路线包含外购不再自动分派,直接关闭订单
if (YieldOrderEnum.YIELD_TYPE_3.equals(yieldOrder.getYieldType()) && yieldOrder.getPrimaryCraft().contains(YieldOrderConst.PRIMARY_CRAFT_WG)) {
yieldOrder.setStatus(YieldOrderEnum.STATUS_CLOSED.getCategory());
yieldOrder.setStatus(YieldOrderEnum.STATUS_CLOSED.getCode());
yieldOrder.setValidationTime(DateUtil.now());
yieldOrder.setValidationMomo("玻璃饼订单工艺路线包含外购,关闭订单无需自动分派");
this.updateById(yieldOrder);
@ -146,7 +166,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
if (YieldOrderEnum.YIELD_TYPE_2.equals(yieldOrder.getYieldType()) && StringUtils.isBlank(yieldOrder.getReworkCode())) {
//验证订单是否存在当前B号,如果不存在则不能下发
if (StringUtils.isBlank(yieldOrder.getRoamNo())) {
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCategory());
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode());
yieldOrder.setValidationTime(DateUtil.now());
yieldOrder.setValidationMomo("订单不存在B号,请手动匹配B号!");
this.updateById(yieldOrder);
@ -155,7 +175,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
String roamNoText = dsPartService.findNameByRoamNo(yieldOrder.getPartCode(), yieldOrder.getRoamNo());
if (StringUtils.isBlank(roamNoText)) {
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCategory());
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode());
yieldOrder.setValidationTime(DateUtil.now());
yieldOrder.setValidationMomo("未找到ERP一级B号路线,请核查!");
this.updateById(yieldOrder);
@ -165,7 +185,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
try {
this.saveSubYieldOrder(yieldOrder, Boolean.FALSE, yieldOrder.getReceiveUser());
} catch (BusinessException e) {
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCategory());
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode());
yieldOrder.setValidationTime(DateUtil.now());
yieldOrder.setValidationMomo(e.getErrorMessage());
this.updateById(yieldOrder);
@ -212,7 +232,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
if (ObjectUtil.isEmpty(craft)) {
String errMsg = StringUtils.isNotBlank(roamNo) ? "订单流转单号匹配失败,请联系工艺员!" : "未找到B号工艺,请核实订单是否存在B号!";
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCategory());
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode());
yieldOrder.setValidationTime(DateUtil.now());
yieldOrder.setValidationMomo(errMsg);
this.updateById(yieldOrder);
@ -222,7 +242,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
DsPartEntity part = dsPartService.getById(craft.getPartId());
//验证零件是否已经被删除
if (CommonConstant.DELETE_TRUE.equals(part.getIsDeleted())) {
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCategory());
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode());
yieldOrder.setValidationTime(DateUtil.now());
yieldOrder.setValidationMomo("零件信息已删除,工艺匹配失败,请联系工艺员!");
this.updateById(yieldOrder);
@ -233,7 +253,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
if (!YieldOrderEnum.YIELD_TYPE_2.equals(yieldOrder.getYieldType())
&& !YieldOrderEnum.YIELD_TYPE_6.equals(yieldOrder.getYieldType())
&& ObjectUtil.isEmpty(part.getArea())) {
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCategory());
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode());
yieldOrder.setValidationTime(DateUtil.now());
yieldOrder.setValidationMomo("零件面积为空,工艺匹配失败,请联系工艺员!");
this.updateById(yieldOrder);
@ -356,16 +376,16 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
yieldOrder.setRoamNoNext(yieldJson.getString("nextRoam"));
yieldOrder.setPriorityErp(yieldJson.getInteger("priority"));
if (YieldOrderEnum.PRIORITY_ERP_NORMAL.equals(yieldOrder.getPriorityErp())) {
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_NORMAL.getCategory());
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_NORMAL.getCode());
} else {
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_LOW.getCategory());
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_LOW.getCode());
}
yieldOrder.setNewLevFlag(yieldJson.getString("newlevFlag"));
yieldOrder.setUseDeptCode(yieldJson.getString("useDeptcode"));
yieldOrder.setReceiveStatus(YieldOrderEnum.RECEIVE_STATUS_YES.getCategory());
yieldOrder.setReceiveStatus(YieldOrderEnum.RECEIVE_STATUS_YES.getCode());
yieldOrder.setReceiveUser(yieldJson.getLong("failureMan"));
yieldOrder.setReceiveTime(yieldJson.getDate("failureTime"));
yieldOrder.setStatus(YieldOrderEnum.STATUS_APS.getCategory());
yieldOrder.setStatus(YieldOrderEnum.STATUS_APS.getCode());
// 先根据流程卡号验证订单是否重复,如果重复则不保存
List<YieldOrder> orderList = baseMapper.selectList(Wrappers.lambdaQuery(YieldOrder.class).eq(YieldOrder::getCardNo, yieldOrder.getCardNo()));
@ -447,16 +467,16 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
yieldOrder.setRoamNoNext(yieldJson.getString("nextRoam"));
yieldOrder.setPriorityErp(yieldJson.getInteger("priority"));
if (YieldOrderEnum.PRIORITY_ERP_NORMAL.equals(yieldOrder.getPriorityErp())) {
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_NORMAL.getCategory());
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_NORMAL.getCode());
} else {
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_LOW.getCategory());
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_LOW.getCode());
}
yieldOrder.setNewLevFlag(yieldJson.getString("newlevFlag"));
yieldOrder.setUseDeptCode(yieldJson.getString("useDeptcode"));
yieldOrder.setReceiveStatus(YieldOrderEnum.RECEIVE_STATUS_YES.getCategory());
yieldOrder.setReceiveStatus(YieldOrderEnum.RECEIVE_STATUS_YES.getCode());
yieldOrder.setReceiveUser(yieldJson.getLong("failureMan"));
yieldOrder.setReceiveTime(yieldJson.getDate("failureTime"));
yieldOrder.setStatus(YieldOrderEnum.STATUS_APS.getCategory());
yieldOrder.setStatus(YieldOrderEnum.STATUS_APS.getCode());
// 若任务下达时间为空, 取从erp同步的时间
if (ObjectUtil.isEmpty(yieldOrder.getReleaseDate())) {
yieldOrder.setReleaseDate(yieldJson.getDate("syncTime"));
@ -555,11 +575,11 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
String errMsg = MessageFormat.format("子件{0}未编制!", dsPartSub.getPartCode());
throw new BusinessException(errMsg);
}
Integer yieldType = YieldOrderEnum.YIELD_TYPE_6.getCategory();
Integer yieldType = YieldOrderEnum.YIELD_TYPE_6.getCode();
if (DsPartConst.SIN_TER_TYPE_KT.equals(dsPartSub.getSinTerType())) {
yieldType = YieldOrderEnum.YIELD_TYPE_4.getCategory();
yieldType = YieldOrderEnum.YIELD_TYPE_4.getCode();
} else if (DsPartConst.SIN_TER_TYPE_CZ.equals(dsPartSub.getSinTerType())) {
yieldType = YieldOrderEnum.YIELD_TYPE_5.getCategory();
yieldType = YieldOrderEnum.YIELD_TYPE_5.getCode();
}
//非石墨模子件,面积不允许为空
if (!yieldType.equals(YieldOrderEnum.YIELD_TYPE_6) && dsPart.getArea() == null) {
@ -599,7 +619,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
subYield.setYpQty(yieldOrder.getYpQty() * dsPartSub.getQuota().intValue());
subYield.setPrimaryCraft(dsPart.getCraftWay());
subYield.setRoamNo(roamNo);
subYield.setStatus(YieldOrderEnum.STATUS_NORMAL.getCategory());
subYield.setStatus(YieldOrderEnum.STATUS_NORMAL.getCode());
subYield.setYieldType(yieldType);
subYield.setEntrustDept("热表分厂");
subYield.setBusinessType(-1);

@ -10,6 +10,7 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.desk.order.pojo.entity.YieldPlan;
import org.springblade.desk.order.mapper.YieldPlanMapper;
import org.springblade.desk.order.pojo.enums.YieldPlanEnum;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.order.service.IYieldPlanService;
import org.springframework.stereotype.Service;
@ -29,8 +30,22 @@ public class YieldPlanServiceImpl extends BaseServiceImpl<YieldPlanMapper, Yield
private final IYieldOrderService yieldOrderService;
@Override
public IPage<YieldPlan> selectPage(IPage<YieldPlan> page, YieldPlan entity) {
List<YieldPlan> dataList = baseMapper.selectPage(page, entity);
public IPage<YieldPlan> selectPageElectroplate(IPage<YieldPlan> page, YieldPlan entity) {
List<YieldPlanEnum> planTypeList = new ArrayList<>();
planTypeList.add(YieldPlanEnum.PLAN_TYPE_1);
List<YieldPlan> dataList = baseMapper.selectPage(page, entity, planTypeList);
return page.setRecords(dataList);
}
@Override
public IPage<YieldPlan> selectPageSintering(IPage<YieldPlan> page, YieldPlan entity) {
List<YieldPlanEnum> planTypeList = new ArrayList<>();
planTypeList.add(YieldPlanEnum.PLAN_TYPE_2);
planTypeList.add(YieldPlanEnum.PLAN_TYPE_3);
planTypeList.add(YieldPlanEnum.PLAN_TYPE_4);
planTypeList.add(YieldPlanEnum.PLAN_TYPE_5);
planTypeList.add(YieldPlanEnum.PLAN_TYPE_6);
List<YieldPlan> dataList = baseMapper.selectPage(page, entity, planTypeList);
return page.setRecords(dataList);
}

@ -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";
}

@ -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<ProReTemplateVO> detail(ProReTemplate proReTemplate) {
QueryWrapper<ProReTemplate> 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<IPage<ProReTemplateVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> proReTemplate,
Query query) {
private IProReTemplateService service;
/**
* [过程记录模板] 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 10)
@Operation(summary = "详情", description = "传入ProReTemplate Obj")
public R<ProReTemplateVO> detail(ProReTemplate proReTemplate) {
QueryWrapper<ProReTemplate> 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<IPage<ProReTemplateVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> proReTemplate,
Query query) {
QueryWrapper<ProReTemplate> qw = Condition.getQueryWrapper(proReTemplate, ProReTemplate.class);
IPage<ProReTemplate> pages = service.page(Condition.getPage(query), qw);
IPage<ProReTemplateVO> 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<IPage<ProReTemplateVO>> page(ProReTemplateVO proReTemplate, Query query) {
IPage<ProReTemplateVO> pagesVO = service.selectProReTemplatePage(
Condition.getPage(query), proReTemplate
);
return R.data(pagesVO);
}
/**
IPage<ProReTemplate> pages = service.page(Condition.getPage(query), qw);
IPage<ProReTemplateVO> 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<IPage<ProReTemplateVO>> page(ProReTemplateVO proReTemplate, Query query) {
IPage<ProReTemplateVO> 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<List<ProReTemplateVO>> listForSelect() {
List<ProReTemplate> list = service.list();
List<ProReTemplateVO> 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<ProReTemplate> list = service.list();
List<ProReTemplateVO> 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<ProReTemplate> 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<ProReTemplate> 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<ProReTemplate> 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<ProReTemplate> 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<String, Object> proReTemplate,
BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<ProReTemplate> 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<ProReTemplateExcel> 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<ProReTemplate> 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<String, Object> proReTemplate,
BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<ProReTemplate> 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<ProReTemplateExcel> list = service.exportProReTemplate(qw);
ExcelUtil.export(response, "[过程记录模板]数据" + DateUtil.time(),
"[过程记录模板]数据表", list, ProReTemplateExcel.class);
}
/**
* [过程记录模板] 下载Excel模板
*/
@GetMapping("/downloadExcelTemplate")
@ApiOperationSupport(order = 71)
@Operation(summary = "下载Excel模板", description = "")
public ResponseEntity<org.springframework.core.io.Resource> 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<ProReTemplate> 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<org.springframework.core.io.Resource> 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<ProReTemplate> 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);
}
}

@ -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<ProReTemplateDetailVO> detail(ProReTemplateDetail proReTemplateDetail) {
QueryWrapper<ProReTemplateDetail> 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<IPage<ProReTemplateDetailVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> proReTemplateDetail,
Query query) {
QueryWrapper<ProReTemplateDetail> qw = Condition.getQueryWrapper(proReTemplateDetail, ProReTemplateDetail.class);
IPage<ProReTemplateDetail> pages = service.page(Condition.getPage(query), qw);
IPage<ProReTemplateDetailVO> 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<IPage<ProReTemplateDetailVO>> page(ProReTemplateDetailVO proReTemplateDetail, Query query) {
IPage<ProReTemplateDetailVO> pagesVO = service.selectProReTemplateDetailPage(
Condition.getPage(query), proReTemplateDetail
);
return R.data(pagesVO);
}
/**
* [过程记录模板-明细] list下拉选择
*/
@GetMapping("/listForSelect")
@ApiOperationSupport(order = 22)
@Operation(summary = "list下拉选择", description = "")
public R<List<ProReTemplateDetailVO>> listForSelect() {
List<ProReTemplateDetail> list = service.list();
List<ProReTemplateDetailVO> 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<ProReTemplateDetail> 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<ProReTemplateDetail> 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<ProReTemplateDetail> 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<String, Object> proReTemplateDetail,
BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<ProReTemplateDetail> 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<ProReTemplateDetailExcel> 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<org.springframework.core.io.Resource> 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<ProReTemplateDetail> importList = ExcelUtil.read(
file, 0, 1, ProReTemplateDetail.class
);
return R.status(service.saveBatch(importList));
}
}

@ -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<ProReTemplateTankVO> detail(ProReTemplateTank proReTemplateTank) {
QueryWrapper<ProReTemplateTank> 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<IPage<ProReTemplateTankVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> proReTemplateTank,
Query query) {
QueryWrapper<ProReTemplateTank> qw = Condition.getQueryWrapper(proReTemplateTank, ProReTemplateTank.class);
IPage<ProReTemplateTank> pages = service.page(Condition.getPage(query), qw);
IPage<ProReTemplateTankVO> 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<IPage<ProReTemplateTankVO>> page(ProReTemplateTankVO proReTemplateTank, Query query) {
IPage<ProReTemplateTankVO> pagesVO = service.selectProReTemplateTankPage(
Condition.getPage(query), proReTemplateTank
);
return R.data(pagesVO);
}
/**
* [过程记录模板--明细] list下拉选择
*/
@GetMapping("/listForSelect")
@ApiOperationSupport(order = 22)
@Operation(summary = "list下拉选择", description = "")
public R<List<ProReTemplateTankVO>> listForSelect() {
List<ProReTemplateTank> list = service.list();
List<ProReTemplateTankVO> 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<ProReTemplateTank> 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<ProReTemplateTank> 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<ProReTemplateTank> 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<String, Object> proReTemplateTank,
BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<ProReTemplateTank> 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<ProReTemplateTankExcel> 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<org.springframework.core.io.Resource> 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<ProReTemplateTank> importList = ExcelUtil.read(
file, 0, 1, ProReTemplateTank.class
);
return R.status(service.saveBatch(importList));
}
}

@ -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;
}

@ -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;
}

@ -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<ProReTemplateDetail> {
/**
* 自定义分页
*
* @param page 分页参数
* @param proReTemplateDetail 查询参数
* @return List<ProReTemplateDetailVO>
*/
List<ProReTemplateDetailVO> selectProReTemplateDetailPage(IPage page, ProReTemplateDetailVO proReTemplateDetail);
/**
* 获取导出数据
*
* @param queryWrapper 查询条件
* @return List<ProReTemplateDetailExcel>
*/
List<ProReTemplateDetailExcel> exportProReTemplateDetail(@Param("ew") Wrapper<ProReTemplateDetail> queryWrapper);
}

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.quality.mapper.ProReTemplateDetailMapper">
<!-- 通用查询映射结果 -->
<resultMap id="proReTemplateDetailResultMap" type="org.springblade.desk.quality.pojo.entity.ProReTemplateDetail">
<result column="DETAIL_NAME" property="detailName"/>
<result column="ASK" property="ask"/>
<result column="QUALIFIED" property="qualified"/>
<result column="TEMPLATE_TANK_ID" property="templateTankId"/>
<result column="DETAIL_INDEX" property="detailIndex"/>
<result column="RFPD_TIME" property="rfpdTime"/>
<result column="PARAM_NAME" property="paramName"/>
<result column="PARAM_VALUE" property="paramValue"/>
<result column="REMARK" property="remark"/>
</resultMap>
<select id="selectProReTemplateDetailPage" resultMap="proReTemplateDetailResultMap">
SELECT * FROM QA_PRO_RE_TEMPLATE_DETAIL WHERE is_deleted = 0
</select>
<select id="exportProReTemplateDetail" resultType="org.springblade.desk.quality.excel.ProReTemplateDetailExcel">
SELECT * FROM QA_PRO_RE_TEMPLATE_DETAIL ${ew.customSqlSegment}
</select>
</mapper>

@ -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<ProReTemplateTank> {
/**
* 自定义分页
*
* @param page 分页参数
* @param proReTemplateTank 查询参数
* @return List<ProReTemplateTankVO>
*/
List<ProReTemplateTankVO> selectProReTemplateTankPage(IPage page, ProReTemplateTankVO proReTemplateTank);
/**
* 获取导出数据
*
* @param queryWrapper 查询条件
* @return List<ProReTemplateTankExcel>
*/
List<ProReTemplateTankExcel> exportProReTemplateTank(@Param("ew") Wrapper<ProReTemplateTank> queryWrapper);
}

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.quality.mapper.ProReTemplateTankMapper">
<!-- 通用查询映射结果 -->
<resultMap id="proReTemplateTankResultMap" type="org.springblade.desk.quality.pojo.entity.ProReTemplateTank">
<result column="TEMPLATE_ID" property="templateId"/>
<result column="SLOT_NAME" property="slotName"/>
<result column="INSERT_INDEX" property="insertIndex"/>
<result column="RFPS_TYPE" property="rfpsType"/>
<result column="SLOT_INDEX" property="slotIndex"/>
</resultMap>
<select id="selectProReTemplateTankPage" resultMap="proReTemplateTankResultMap">
SELECT * FROM QA_PRO_RE_TEMPLATE_TANK WHERE is_deleted = 0
</select>
<select id="exportProReTemplateTank" resultType="org.springblade.desk.quality.excel.ProReTemplateTankExcel">
SELECT * FROM QA_PRO_RE_TEMPLATE_TANK ${ew.customSqlSegment}
</select>
</mapper>

@ -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;
}

@ -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;
}

@ -79,7 +79,7 @@ public class ProReTemplate extends BaseEntity {
* 审批状态
*/
@Schema(description = "审批状态")
private Short approvalStatus;
private Integer approvalStatus;
/**
* 线上/-[0]:线上;[1]:线下;
*/

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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<ProReTemplateDetailVO> childrenList;
}

@ -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<ProReTemplateTankVO> preserveSlotList;
}

@ -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;

@ -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;

@ -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<AuditFile> {
* @param vo
*/
void setVOValue(AuditFileVO vo);
R upgradeVer(Long id);
}

@ -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<ProReTemplateDetail> {
/**
* 自定义分页
*
* @param page 分页参数
* @param proReTemplateDetail 查询参数
* @return IPage<ProReTemplateDetailVO>
*/
IPage<ProReTemplateDetailVO> selectProReTemplateDetailPage(IPage<ProReTemplateDetailVO> page, ProReTemplateDetailVO proReTemplateDetail);
/**
* 导出数据
*
* @param queryWrapper 查询条件
* @return List<ProReTemplateDetailExcel>
*/
List<ProReTemplateDetailExcel> exportProReTemplateDetail(Wrapper<ProReTemplateDetail> queryWrapper);
/**
* VO
*
* @param vo
*/
void setVOValue(ProReTemplateDetailVO vo);
List<ProReTemplateDetailVO> getListByTemplateTankId(Long templateTankId);
}

@ -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<ProReTemplate> {
/**
* 自定义分页
*
* @param page 分页参数
* @param proReTemplate 查询参数
* @return IPage<ProReTemplateVO>
*/
IPage<ProReTemplateVO> selectProReTemplatePage(IPage<ProReTemplateVO> page, ProReTemplateVO proReTemplate);
/**
* 导出数据
*
* @param queryWrapper 查询条件
* @return List<ProReTemplateExcel>
*/
List<ProReTemplateExcel> exportProReTemplate(Wrapper<ProReTemplate> queryWrapper);
/**
* 自定义分页
*
* @param page 分页参数
* @param proReTemplate 查询参数
* @return IPage<ProReTemplateVO>
*/
IPage<ProReTemplateVO> selectProReTemplatePage(IPage<ProReTemplateVO> page, ProReTemplateVO proReTemplate);
/**
* 导出数据
*
* @param queryWrapper 查询条件
* @return List<ProReTemplateExcel>
*/
List<ProReTemplateExcel> exportProReTemplate(Wrapper<ProReTemplate> 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);
}

@ -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<ProReTemplateTank> {
/**
* 自定义分页
*
* @param page 分页参数
* @param proReTemplateTank 查询参数
* @return IPage<ProReTemplateTankVO>
*/
IPage<ProReTemplateTankVO> selectProReTemplateTankPage(IPage<ProReTemplateTankVO> page, ProReTemplateTankVO proReTemplateTank);
/**
* 导出数据
*
* @param queryWrapper 查询条件
* @return List<ProReTemplateTankExcel>
*/
List<ProReTemplateTankExcel> exportProReTemplateTank(Wrapper<ProReTemplateTank> queryWrapper);
/**
* VO
*
* @param vo
*/
void setVOValue(ProReTemplateTankVO vo);
List<ProReTemplateTankVO> getListByTemplateId(Long templateId);
}

@ -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;

@ -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;

@ -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<AuditFileMapper, Audit
public void setVOValue(AuditFileVO vo) {
}
@Override
public R upgradeVer(Long id) {
return null;
}
}

@ -26,7 +26,7 @@ import org.springblade.desk.quality.mapper.LiquidTankMapper;
import org.springblade.desk.quality.pojo.entity.LiquidTank;
import org.springblade.desk.quality.pojo.vo.LiquidTankVO;
import org.springblade.desk.quality.service.ILiquidTankService;
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;

@ -30,7 +30,7 @@ import org.springblade.desk.quality.pojo.entity.LiquidTankTask;
import org.springblade.desk.quality.pojo.entity.LiquidTankTaskHi;
import org.springblade.desk.quality.pojo.vo.LiquidTankTaskVO;
import org.springblade.desk.quality.service.*;
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.springframework.stereotype.Service;

@ -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.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.ProReTemplateDetailExcel;
import org.springblade.desk.quality.mapper.ProReTemplateDetailMapper;
import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail;
import org.springblade.desk.quality.pojo.entity.ProReTemplateTank;
import org.springblade.desk.quality.pojo.vo.ProReTemplateDetailVO;
import org.springblade.desk.quality.service.IProReTemplateDetailService;
import org.springblade.desk.quality.wrapper.ProReTemplateDetailWrapper;
import org.springblade.desk.quality.wrapper.ProReTemplateTankWrapper;
import org.springblade.system.feign.IUserClient;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* [过程记录模板-明细] 服务实现类
*
* @author Tom Shuo
* @since 2025-12-30
*/
@Service
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Slf4j
public class ProReTemplateDetailServiceImpl extends BaseServiceImpl<ProReTemplateDetailMapper, ProReTemplateDetail>
implements IProReTemplateDetailService {
@Resource
private IUserClient userClient;
@Override
public IPage<ProReTemplateDetailVO> selectProReTemplateDetailPage(IPage<ProReTemplateDetailVO> page, ProReTemplateDetailVO proReTemplateDetail) {
return page.setRecords(baseMapper.selectProReTemplateDetailPage(page, proReTemplateDetail));
}
@Override
public List<ProReTemplateDetailExcel> exportProReTemplateDetail(Wrapper<ProReTemplateDetail> queryWrapper) {
List<ProReTemplateDetailExcel> 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<ProReTemplateDetailVO> getListByTemplateTankId(Long templateTankId) {
LambdaQueryWrapper<ProReTemplateDetail> qw = Wrappers.lambdaQuery(ProReTemplateDetail.class);
qw.eq(ProReTemplateDetail::getTemplateTankId, templateTankId);
List<ProReTemplateDetail> list = list(qw);
return ProReTemplateDetailWrapper.build().listVO(list);
}
}

@ -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<ProReTemplateMapper, ProReTemplate>
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<ProReTemplateVO> selectProReTemplatePage(IPage<ProReTemplateVO> page, ProReTemplateVO proReTemplate) {
return page.setRecords(baseMapper.selectProReTemplatePage(page, proReTemplate));
}
@Override
public List<ProReTemplateExcel> exportProReTemplate(Wrapper<ProReTemplate> queryWrapper) {
List<ProReTemplateExcel> 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<ProReTemplateTankVO> 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<ProReTemplateDetailVO> 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<UserInfo> rUICR = null;
R<UserInfo> rUIUP = null;
R<Dept> 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<String> rStatusDic = dictClient.getValue(statusCode, "" + be.getStatus());
if (rStatusDic != null && rStatusDic.isSuccess() && rStatusDic.getData() != null) {
bv.setStatusName(rStatusDic.getData());
}
}
return bv;
}
@Override
public IPage<ProReTemplateVO> selectProReTemplatePage(IPage<ProReTemplateVO> 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<ProReTemplateExcel> exportProReTemplate(Wrapper<ProReTemplate> queryWrapper) {
List<ProReTemplateExcel> 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));
}
}

@ -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<ProReTemplateTankMapper, ProReTemplateTank>
implements IProReTemplateTankService {
@Resource
private IUserClient userClient;
@Override
public IPage<ProReTemplateTankVO> selectProReTemplateTankPage(IPage<ProReTemplateTankVO> page, ProReTemplateTankVO proReTemplateTank) {
return page.setRecords(baseMapper.selectProReTemplateTankPage(page, proReTemplateTank));
}
@Override
public List<ProReTemplateTankExcel> exportProReTemplateTank(Wrapper<ProReTemplateTank> queryWrapper) {
List<ProReTemplateTankExcel> 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<ProReTemplateTankVO> getListByTemplateId(Long templateId) {
LambdaQueryWrapper<ProReTemplateTank> qw = Wrappers.lambdaQuery(ProReTemplateTank.class);
qw.eq(ProReTemplateTank::getTemplateId, templateId);
List<ProReTemplateTank> list = list(qw);
return ProReTemplateTankWrapper.build().listVO(list);
}
}

@ -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;

@ -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 {
/**

@ -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<ProReTemplateDetail, ProReTemplateDetailVO> {
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;
}
}

@ -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<ProReTemplateTank, ProReTemplateTankVO> {
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;
}
}

@ -169,9 +169,9 @@
b.WC_NAME AS "workCenterName",
a.WORK_CENTER_ID AS "workCenterId",
-- 统计待排产的数量
COUNT(CASE WHEN a.STATUS >= 3 THEN a.WORK_CENTER_ID END) AS "totalCount",
COUNT(CASE WHEN a.STATUS >= 10003 THEN a.WORK_CENTER_ID END) AS "totalCount",
-- 统计已排产的数量
COUNT(CASE WHEN a.STATUS not in (3,6) THEN a.WORK_CENTER_ID END) AS "schedulingCount"
COUNT(CASE WHEN a.STATUS not in (10003,10006) THEN a.WORK_CENTER_ID END) AS "schedulingCount"
FROM MES_YIELD_ORDER a
LEFT JOIN BS_WORK_CENTER b ON a.WORK_CENTER_ID = b.ID
<where>

@ -119,12 +119,12 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
public void scheduling() {
//查询待排产订单,状态是3
List<YieldOrderEntity> list =
yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCategory(),YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory()).isNotNull(YieldOrderEntity::getWorkCenterId).isNotNull(YieldOrderEntity::getReleaseDate).isNotNull(YieldOrderEntity::getDemandDate));
yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCode(),YieldOrderEnum.STATUS_PROCESS_ERROR.getCode()).isNotNull(YieldOrderEntity::getWorkCenterId).isNotNull(YieldOrderEntity::getReleaseDate).isNotNull(YieldOrderEntity::getDemandDate));
log.info("待排产订单数量为:" + list.size());
if (CollectionUtils.isNotEmpty(list)) {
//校验已排产订单
checkSchedulingOrder(list);
list = yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCategory(),YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory()).isNotNull(YieldOrderEntity::getWorkCenterId).isNotNull(YieldOrderEntity::getReleaseDate).isNotNull(YieldOrderEntity::getDemandDate));
list = yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCode(),YieldOrderEnum.STATUS_PROCESS_ERROR.getCode()).isNotNull(YieldOrderEntity::getWorkCenterId).isNotNull(YieldOrderEntity::getReleaseDate).isNotNull(YieldOrderEntity::getDemandDate));
//初始化人员能力
List<PersonAbilityEntity> personAbilityEntityList = personAbilityService.list(Wrappers.<PersonAbilityEntity>lambdaQuery().isNotNull(PersonAbilityEntity::getWorkCenterId).isNotNull(PersonAbilityEntity::getProcessId).isNotNull(PersonAbilityEntity::getCraftId));
Map<String, PersonAbilityEntity> personAbilityMap = new HashMap<>();
@ -347,7 +347,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
List<Long> workCenterList = craftList1.stream().filter(item -> item.getWorkCenterId() != null).map(YieldOrderCraftEntity::getWorkCenterId).collect(Collectors.toList());
if (workCenterList.size() != craftList1.size()) {
order.setErrorInfo("工序信息不完整,含有未匹配作业中心的工序");
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory());
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode());
yieldOrderService.updateById(order);
continue;
}
@ -428,6 +428,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
if(maxMatchList != null){
glassCodeStr = maxMatchList.stream().collect(Collectors.joining(","));
log.info("订单:"+order.getYoCode()+",温度曲线是:"+glassCodeStr);
//if(sameFurnaceMap.containsKey(glassCodeStr))
}
}
@ -489,7 +490,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
List<EquipAbilityEntity> equipAbilityList = equipAbilityService.list(Wrappers.<EquipAbilityEntity>lambdaQuery().in(EquipAbilityEntity::getWorkCenterId, craft.getWorkCenterId()).eq(EquipAbilityEntity::getCraftId, craft.getCaId()));
if (CollectionUtils.isEmpty(equipAbilityList)) {
order.setErrorInfo("工序:"+processMap.get(craft.getPpsId()) +"设备未匹配到对应的设备能力");
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory());
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode());
yieldOrderService.updateById(order);
isSchecuding = false;
break;
@ -503,7 +504,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
//根据时间点获取所有设备资源
List<EquipResourceEntity> equipResourceList = equipResourceService.list(Wrappers.<EquipResourceEntity>lambdaQuery().eq(EquipResourceEntity::getCraftId, craft.getCaId()).eq(EquipResourceEntity::getWorkCenterId, craft.getWorkCenterId()).ge(EquipResourceEntity::getStartTime, dateTime).eq(EquipResourceEntity::getIsUsed, 0).in(EquipResourceEntity::getEquipOrder, entry.getKey()));
if (CollectionUtils.isEmpty(equipResourceList)) {
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory());
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode());
order.setErrorInfo("工序:" + processMap.get(craft.getPpsId()) + "未匹配到对应的设备资源");
yieldOrderService.updateById(order);
isSchecuding = false;
@ -571,10 +572,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
if(order.getYieldType() == 2 || order.getYieldType() == 3){
equipResource.setGlassCode(glassCodeStr);
}
//如果剩余产能占总产能不足20%,则修改为已占用
// if(equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(),2,RoundingMode.HALF_UP).compareTo(BigDecimal.valueOf(0.2)) < 0){
//
// }
//同一个设备可能有多个工艺能力,同一时间只能做一个工艺能力的零件,所以需要把当前设备所有工艺能力的剩余产能都更新调
LambdaUpdateWrapper<EquipResourceEntity> equipWrapper = new LambdaUpdateWrapper<>();
equipWrapper.eq(EquipResourceEntity::getEquipCode, equipResource.getEquipCode());
@ -612,19 +610,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
} else if ("人".equals(mainProducerMap.get(craft.getPpsId()))) {
//匹配人资源
/* String personAbility = craft.getWorkCenterId() + "-" + craft.getPpsId() + "-" + craft.getCaId();
if (personAbilityMap.containsKey(craft.getWorkCenterId() + "-" + craft.getPpsId() + "-" + craft.getCaId())) {
} else {
order.setStatus(6);
order.setErrorInfo("工序:"+personAbility+"未匹配到对应的人员能力");
yieldOrderService.updateById(order);
isSchecuding = false;
break;
}*/
WorkPlanEntity workPlan = new WorkPlanEntity();
BigDecimal totalTime = new BigDecimal(0);
PersonAbilityEntity ability = personAbilityMap.get(craft.getWorkCenterId() + "-" + craft.getPpsId() + "-" + craft.getCaId());
log.info("人员能力是:"+ craft.getWorkCenterId() + "-" + craft.getPpsId() + "-" + craft.getCaId());
//镀后检验和镀后接收先按半小时计算
if (ability != null) {
if ("镀后检验".equals(ability.getProcessName()) || "镀后接收".equals(ability.getProcessName())) {
@ -743,8 +732,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
} else {
//未匹配到设备和人力资源,将工序状态改为6,标识为未排产
craft.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory());
craft.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode());
yieldOrderCraftService.updateById(craft);
log.info("未匹配到设备和人力资源的工序是:"+craft.getPpsId());
}
}
@ -802,7 +792,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workOrder.setWpId(workPlanList.get(0).getId());
this.updateById(workOrder);
//更新订单状态为已排产
order.setStatus(YieldOrderEnum.STATUS_PROCESS_WAITING.getCategory());
order.setStatus(YieldOrderEnum.STATUS_PROCESS_WAITING.getCode());
order.setErrorInfo(null);
yieldOrderService.updateById(order);
workOrderList.add(workOrder);
@ -1057,7 +1047,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
this.deleteLogic(Arrays.asList(workOrder.getId()));
}
yieldOrder.setStatus(YieldOrderEnum.STATUS_APS.getCategory());
yieldOrder.setStatus(YieldOrderEnum.STATUS_APS.getCode());
yieldOrderService.updateById(yieldOrder);
}

Loading…
Cancel
Save