diff --git a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java index ff949667..2f1548cd 100644 --- a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java +++ b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java @@ -31,8 +31,8 @@ public interface LauncherConstant { /** * nacos dev 地址 */ +// String NACOS_DEV_ADDR = "192.168.249.27:8848"; String NACOS_DEV_ADDR = "127.0.0.1:8848"; -// String NACOS_DEV_ADDR = "127.0.0.1:8848"; /** * nacos prod 地址 diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/TaskingProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/TaskingProcessor.java new file mode 100644 index 00000000..c1050349 --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/TaskingProcessor.java @@ -0,0 +1,29 @@ +package org.springblade.job.processor.dashboard; + +import jakarta.annotation.Resource; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.dashboard.feign.IPartClient; +import org.springframework.stereotype.Component; +import tech.powerjob.worker.core.processor.ProcessResult; +import tech.powerjob.worker.core.processor.TaskContext; +import tech.powerjob.worker.core.processor.sdk.BasicProcessor; + +/** + * 工艺模块-正常任务 + * @author liweidong + */ +@Component +@Data +@Slf4j +public class TaskingProcessor implements BasicProcessor { + + @Resource + private IPartClient client; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + client.syncTasking(); + return new ProcessResult(true); + } +} diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/logistics/OrderBoxRefinement.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/logistics/OrderBoxRefinement.java index 69c4975d..a1927b71 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/logistics/OrderBoxRefinement.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/logistics/OrderBoxRefinement.java @@ -1,7 +1,10 @@ package org.springblade.job.processor.logistics; +import jakarta.annotation.Resource; import lombok.Data; import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.dashboard.feign.IOrderBoxClient; +import org.springblade.desk.dashboard.feign.IPartClient; import org.springframework.stereotype.Component; import tech.powerjob.worker.core.processor.ProcessResult; import tech.powerjob.worker.core.processor.TaskContext; @@ -14,10 +17,13 @@ import tech.powerjob.worker.core.processor.sdk.BasicProcessor; @Data @Slf4j public class OrderBoxRefinement implements BasicProcessor { + @Resource + private IOrderBoxClient client; + @Override - public ProcessResult process(TaskContext taskContext) throws Exception { - System.out.println("hello world"); - log.info("hello world"); - return new ProcessResult(true); + public ProcessResult process(TaskContext context) throws Exception { + client.monitoringStation(); + log.info("执行完成了"); + return new ProcessResult(true,"执行成功"); } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/BasicClazz.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/BasicClazz.java index 0928ef1e..be165ebe 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/BasicClazz.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/BasicClazz.java @@ -28,6 +28,74 @@ import java.util.List; @EqualsAndHashCode(callSuper = true) public class BasicClazz extends BaseEntity { + /** + * 物料标记 + */ + public static Short TYPE_FLAG = 1; + /** + * 出库原因 + */ + public static Short TYPE_OUT_STORE = 2; + /** + * 退库原因 + */ + public static Short TYPE_TK_STORE = 3; + + /** + * 简单原因 + */ + public static Short TYPE_POOR_REASON = 4; + + /** + * 镀种分类 + */ + public static Short TYPE_PLATING_ASSORT = 5; + + /** + * IOT获取挂次号接口保存 + */ + public static Short TYPE_SUSPENSION_NO = 6; + + /** + * 外协匹配规则 + */ + public static Short TYPE_RULE = 7; + + /** + * 排除部门 + */ + public static Short TYPE_EXCLUDE_DIVISION = 8; + + /** + * 异常配置 + */ + public static Short TYPE_ABNORMAL_CONFIG = 9; + + /** + * 成本类型 + */ + public static Short TYPE_COST_TYPE = 10; + + /** + * 烧结转试验计划 + */ + public static Short TYPE_TEST_TYPE = 11; + + /** + * 绩效模板 + */ + public static Short TYPE_JXMB = 12; + + /** + * 重点工作类型 + */ + public static Short TYPE_ZDGZLX = 13; + + /** + * 绩效模板 + */ + public static Short TYPE_NOTICE = 14; + @Serial private static final long serialVersionUID = 1L; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/CenterTeam.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/CenterTeam.java new file mode 100644 index 00000000..fe482fae --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/CenterTeam.java @@ -0,0 +1,48 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.basic.pojo.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.io.Serial; + +/** + * [班组用户关联] 实体类 + * + * @author Tom Shuo + * @since 2026-01-13 + */ +@Data +@TableName("BS_CENTER_TEAM") +@Schema(description = "RelTeamSetUser Entity对象") +@EqualsAndHashCode(callSuper = true) +public class CenterTeam extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 作业中心id + */ + public static final String COL_TEAM_SET_ID = "WC_ID"; + /** + *班组 + */ + public static final String COL_USER_ID = "TS_ID"; + + /** + * [班组]id + */ + @Schema(description = "[班组]id") + private Long tsId; + /** + * 作业中心id + */ + @Schema(description = "作业中心id") + private Long wcId; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java index f2b56904..42486725 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java @@ -180,5 +180,7 @@ public class TeamSet extends BaseEntity { @TableField(exist = false) private Long deptId; + @TableField(exist = false) + private String teamId; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/CenterTeamVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/CenterTeamVO.java new file mode 100644 index 00000000..bdc6c4e0 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/CenterTeamVO.java @@ -0,0 +1,26 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.basic.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.desk.basic.pojo.entity.CenterTeam; +import org.springblade.desk.basic.pojo.entity.TeamSet; + +import java.io.Serial; + +/** + * [班组] 视图实体类 + * + * @author Tom Shuo + * @since 2025-12-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class CenterTeamVO extends CenterTeam { + @Serial + private static final long serialVersionUID = 1L; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/constant/BatchConstant.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/BatchConstant.java similarity index 100% rename from blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/constant/BatchConstant.java rename to blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/BatchConstant.java diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/constant/DsCraftConstant.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/DsCraftConstant.java similarity index 100% rename from blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/constant/DsCraftConstant.java rename to blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/DsCraftConstant.java diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/constant/DsPartConst.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/DsPartConstant.java similarity index 92% rename from blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/constant/DsPartConst.java rename to blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/DsPartConstant.java index deed7ce6..b36baa61 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/constant/DsPartConst.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/DsPartConstant.java @@ -4,7 +4,7 @@ package org.springblade.desk.dashboard.constant; * @author lqk * @date 2025-12-05 16:51 */ -public interface DsPartConst { +public interface DsPartConstant { //region 烧结子件种类 /** * 插针 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/constant/TaskingConstant.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/TaskingConstant.java similarity index 100% rename from blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/constant/TaskingConstant.java rename to blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/TaskingConstant.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IOrderBoxClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IOrderBoxClient.java new file mode 100644 index 00000000..27485cd1 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IOrderBoxClient.java @@ -0,0 +1,32 @@ +package org.springblade.desk.dashboard.feign; + +import org.springblade.core.launch.constant.AppConstant; +import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; +import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * 零件服务Feign客户端 + * 修正点:所有GET请求参数添加@RequestParam注解,解决Feign多Body参数异常 + * @author liweidong + */ +@FeignClient( + value = AppConstant.APPLICATION_DESK_NAME +) +public interface IOrderBoxClient { + + String API_PREFIX = "/feign/client/order-box"; + + String MONITORING_STATION = API_PREFIX + "/monitoring-station"; + + + /** + * 零件同步 + */ + @GetMapping(MONITORING_STATION) + void monitoringStation(); +} \ No newline at end of file diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IPartClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IPartClient.java index d82be63f..30cd1bac 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IPartClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IPartClient.java @@ -25,7 +25,7 @@ public interface IPartClient { String GET_SUB_PART = API_PREFIX + "/getSubPart"; String BATCH_PARTS = API_PREFIX + "/batchParts"; String REWORK_TASK = API_PREFIX + "/reworkTask"; - String SYNC_PART = API_PREFIX + "/syncPart"; + String SYNC_TASKING = API_PREFIX + "/syncTasking"; /** * 获取零件信息 @@ -66,8 +66,8 @@ public interface IPartClient { void reworkTask(); /** - * 零件同步 + * 正常任务同步 */ - @GetMapping(SYNC_PART) - void syncPart(); + @GetMapping(SYNC_TASKING) + void syncTasking(); } \ No newline at end of file diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsCraftEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsCraftEntity.java index 76838246..b15e86a2 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsCraftEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsCraftEntity.java @@ -107,5 +107,11 @@ public class DsCraftEntity extends BaseEntity { @Schema(description = "返工单号") private String reworkOrder; + /** + * 零件号 + */ + @Schema(description = "零件号") + private String partCode; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartBasicsEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartBasicsEntity.java new file mode 100644 index 00000000..60485648 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartBasicsEntity.java @@ -0,0 +1,61 @@ +package org.springblade.desk.dashboard.pojo.entity; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; +import java.io.Serial; + +/** + * 零件基础信息实体类 + * + * @author + * @since + */ +@Data +@TableName("DS_PART_BASICS") +@Schema(description = "DsPartBasics对象") +@EqualsAndHashCode(callSuper = true) +public class DsPartBasicsEntity extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + + /** + * 零件号 + */ + @Schema(description = "零件号") + private String partCode; + + /** + * 零件名称 + */ + @Schema(description = "零件名称") + private String partName; + + /** + * 产品型号 + */ + @Schema(description = "产品型号") + private String productType; + + /** + * 是否烧结产品 + */ + @Schema(description = "是否烧结产品") + private String isSintering; + + /** + * 是否玻璃饼 + */ + @Schema(description = "是否玻璃饼") + private String isClassCake; + + /** + * 备注 + */ + @Schema(description = "备注") + private String remarks; + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java index 4d11ccc6..90662a8a 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java @@ -318,4 +318,11 @@ public class DsPartEntity extends BaseEntity { @Schema(description = "是否电镀") private String isElectroplating; + /** + * 子件类型 + * A代表组合件,M代表零件,R代表原材料,B代表外购件,P代表虚拟件,G代表产品 + */ + @Schema(description = "子件类型") + private String subType; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartSub.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartSub.java new file mode 100644 index 00000000..8bb6bf24 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartSub.java @@ -0,0 +1,121 @@ +package org.springblade.desk.dashboard.pojo.entity; + +import lombok.Data; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * @author: 没有这张表 只是查询用于接收 + * @create: 2026-03-14 + */ +@Data +public class DsPartSub { + + /** + * 插针 + */ + public static Short SIN_TER_TYPE_CZ = 1; + /** + * 壳体 + */ + public static Short SIN_TER_TYPE_KT = 2; + /** + * 自制玻璃饼 + */ + public static Short SIN_TER_TYPE_BLB = 3; + /** + * 其他 + */ + public static Short SIN_TER_TYPE_QT = 4; + /** + * 石墨模 + */ + public static Short SIN_TER_TYPE_SMM = 5; + public static Map subTypeMap = new HashMap<>(6); + public static Map sinTerTypeMap = new HashMap<>(6); + + static { + subTypeMap.put("A", "组合件"); + subTypeMap.put("M", "零件"); + subTypeMap.put("R", "原材料"); + subTypeMap.put("B", "外购件"); + subTypeMap.put("P", "虚拟件"); + subTypeMap.put("G", "产品"); + + sinTerTypeMap.put(SIN_TER_TYPE_CZ, "插针"); + sinTerTypeMap.put(SIN_TER_TYPE_KT, "壳体"); + sinTerTypeMap.put(SIN_TER_TYPE_BLB, "自制玻璃饼"); + sinTerTypeMap.put(SIN_TER_TYPE_QT, "其他"); + sinTerTypeMap.put(SIN_TER_TYPE_SMM, "石墨模"); + } + + /** + * 流水号 + */ + private Long psId; + /** + * 零件号 + */ + private String partCode; + /** + * 子件号 + */ + private String subCode; + /** + * 子件名称 + */ + private String subName; + /** + * 定额 + */ + private Double quota; + /** + * 子件类型 + * A代表组合件,M代表零件,R代表原材料,B代表外购件,P代表虚拟件,G代表产品 + */ + private String subType; + /** + * 烧结子件种类 + * 1插针,2壳体,3自制玻璃饼,4其它,5石墨模 + */ + private Integer sinTerType; + /** + * 材料 + */ + private String material; + /** + * 面积 + */ + private Double area; + /** + * 镀种 + */ + private String plate; + /** + * 产品系列 + */ + private String productType; + /** + * 镀层代号 + */ + private String plateCode; + /** + * 镀层厚度 + */ + private String plateThickness; + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 配置码 + */ + private String configNo; + /** + * 备注 + */ + private String memo; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskingEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskingEntity.java index a0789fdb..950ad9a2 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskingEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskingEntity.java @@ -160,11 +160,11 @@ public class DsTaskingEntity extends BaseEntity { @Schema(description = "工艺完成时间") private Date craftTime; - /** - * 工艺级别 - */ - @Schema(description = "工艺级别") - private String rank; +// /** +// * 工艺级别 +// */ +// @Schema(description = "工艺级别") +// private String rank; /** diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/enums/PartCraftStatusEnum.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/enums/PartCraftStatusEnum.java new file mode 100644 index 00000000..22dc754d --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/enums/PartCraftStatusEnum.java @@ -0,0 +1,32 @@ +package org.springblade.desk.dashboard.pojo.enums; + +/** + * @author: liweidong + * @create: 2026-03-18 + */ +public enum PartCraftStatusEnum { + SUCCESS("0", "查询成功"), + PART_CODE_EMPTY("-6", "partCode不能为空"), + ROAM_NO_EMPTY("-7", "roamNo不能为空"), + PART_NOT_EXIST("-1", "零件信息为空"), + PART_EXPIRED("-2", "零件超期"), + NO_CRAFT_INFO("-3", "没有工艺信息,创建维护任务"), + NO_PROCEDURE_INFO("-4", "没有工序信息"), + NO_CRAFT_RANK_INFO("-5", "没有工艺等级信息"); + + private final String code; + private final String msg; + + PartCraftStatusEnum(String code, String msg) { + this.code = code; + this.msg = msg; + } + + public String getCode() { + return code; + } + + public String getMsg() { + return msg; + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartBomVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartBomVO.java index eecf8668..fd192609 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartBomVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartBomVO.java @@ -76,4 +76,10 @@ public class DsPartBomVO { */ @Schema(description = "子件PDM图纸链接") private String zDocLink; + + /** + * 定额 + */ + @Schema(description = "定额") + private Double quota; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartTreeVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartTreeVO.java index 5349b3d3..ce6f723b 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartTreeVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsPartTreeVO.java @@ -24,6 +24,7 @@ * Author: Chill Zhuang (bladejava@qq.com) */ package org.springblade.desk.dashboard.pojo.vo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.ArrayList; import java.util.List; @@ -39,6 +40,7 @@ public class DsPartTreeVO { private String partCode; private String partName; private String docLink; + private Double quota; private List children; /** @@ -49,10 +51,11 @@ public class DsPartTreeVO { } - public DsPartTreeVO(String partCode, String partName, String docLink) { + public DsPartTreeVO(String partCode, String partName, String docLink,Double quota) { this(); this.partCode = partCode; this.partName = partName; this.docLink = docLink; + this.quota = quota; } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsTaskingVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsTaskingVO.java index 0ca4335b..235d61f8 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsTaskingVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsTaskingVO.java @@ -45,11 +45,17 @@ public class DsTaskingVO extends DsTaskingEntity { @Serial private static final long serialVersionUID = 1L; +// /** +// * 子件信息 +// */ +// @Schema(description = "子件信息") +// private List children; + /** * 子件信息 */ @Schema(description = "子件信息") - private List children; + private List children; /** * 任务状态 diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/PartCraftVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/PartCraftVO.java new file mode 100644 index 00000000..2b250d9f --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/PartCraftVO.java @@ -0,0 +1,28 @@ +package org.springblade.desk.dashboard.pojo.vo; + +import lombok.Data; +import org.springblade.desk.dashboard.pojo.entity.DsCraftEntity; + + +@Data +public class PartCraftVO { + + + private String code; + + private DsCraftEntity craft; + + + public static PartCraftVO build(String code, DsCraftEntity craft) { + PartCraftVO vo = new PartCraftVO(); + vo.setCode(code); + vo.setCraft(craft); + return vo; + } + + public static PartCraftVO build(String code) { + PartCraftVO vo = new PartCraftVO(); + vo.setCode(code); + return vo; + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/IotEquipmentTaskClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/IotEquipmentTaskClient.java index a7d2c306..ae7babe5 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/IotEquipmentTaskClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/IotEquipmentTaskClient.java @@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping; */ public interface IotEquipmentTaskClient { - String API_PREFIX = "/feign/device/iot-task"; + String API_PREFIX = "/feign/client/iot-task"; String SYNCHRONIZE_EQUIPMENT_TASK = API_PREFIX + "/synchronize-equipment-task"; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/LimsMeaToolTaskClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/LimsMeaToolTaskClient.java index 0295ea73..e83e019e 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/LimsMeaToolTaskClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/feign/LimsMeaToolTaskClient.java @@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping; */ public interface LimsMeaToolTaskClient { - String API_PREFIX = "/feign/device/lims-task"; + String API_PREFIX = "/feign/client/lims-task"; String SYNC_MEASUREMENT_RECORDS_TASK = API_PREFIX + "/sync-measurement-records-task"; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/feign/JobTransferTaskClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/feign/JobTransferTaskClient.java index 50a98c6c..375ed80f 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/feign/JobTransferTaskClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/feign/JobTransferTaskClient.java @@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping; */ public interface JobTransferTaskClient { - String API_PREFIX = "/feign/job-transfer/update-task"; + String API_PREFIX = "/feign/client/job-transfer"; //证书状态更新 String CERTIFICATE_MAINTENANCE_TASK = API_PREFIX + "/certificate-maintenance-task"; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemTaskBillVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemTaskBillVO.java index 1f386414..95a87057 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemTaskBillVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemTaskBillVO.java @@ -32,6 +32,9 @@ public class OemTaskBillVO extends OemTaskBillEntity { private String tbStatusName; public String getTbStatusName() { + if (this.getTbStatus() == null) { + return "未处理"; // 或者返回其他默认值,如 "未知" + } return this.getTbStatus() == 1 ? "已处理" : "未处理"; } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IMoldDemandClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IMoldDemandClient.java new file mode 100644 index 00000000..76937fa3 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IMoldDemandClient.java @@ -0,0 +1,32 @@ +package org.springblade.desk.order.feign; + +import org.springblade.core.launch.constant.AppConstant; +import org.springblade.desk.order.pojo.entity.MoldDemand; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +/** + * 模具计划接口声明 + * + * @author lqk + */ +@FeignClient( + value = AppConstant.APPLICATION_DESK_NAME +) +public interface IMoldDemandClient { + + String API_PREFIX = "/feign/moldDemand/"; + + String SAVE = API_PREFIX + "/save"; + + + /** + * 生成模具计划 + * + * @param moldDemand + * @return + */ + @GetMapping(SAVE) + Boolean save(MoldDemand moldDemand); + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IOrderClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IOrderClient.java new file mode 100644 index 00000000..f4bf3dc3 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IOrderClient.java @@ -0,0 +1,32 @@ +package org.springblade.desk.order.feign; + +import org.springblade.core.launch.constant.AppConstant; +import org.springblade.desk.order.pojo.entity.YieldPlan; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +/** + * 模具计划接口声明 + * + * @author lqk + */ +@FeignClient( + value = AppConstant.APPLICATION_DESK_NAME +) +public interface IOrderClient { + + String API_PREFIX = "/feign/order/"; + + String SAVE_GLASS_CAKE = API_PREFIX + "/saveGlassCake"; + + + /** + * 生成玻璃饼烧结计划并下达 + * + * @param yieldPlan + * @return + */ + @GetMapping(SAVE_GLASS_CAKE) + Boolean saveGlassCake(YieldPlan yieldPlan); + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsApply.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsApply.java index f8837d27..2fdecb93 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsApply.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsApply.java @@ -2,6 +2,8 @@ package org.springblade.desk.order.pojo.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springblade.core.mp.base.BaseEntity; @@ -21,6 +23,11 @@ public class PlateGoodsApply extends BaseEntity { @TableField(exist = false) private static final long serialVersionUID = 1L; + /** + * 申报单号 + */ + @TableField(value = "APPLY_CODE") + private String applyCode; /** * 作业中心 @@ -74,6 +81,7 @@ public class PlateGoodsApply extends BaseEntity { /** * 本次申报添加量 = 班组预添加量 */ + @JsonSerialize(nullsUsing = NullSerializer.class) @Schema(description = "本次申报添加量") @TableField(value = "GOODS_ADD_TOTAL") private BigDecimal goodsAddTotal; @@ -81,6 +89,7 @@ public class PlateGoodsApply extends BaseEntity { /** * 本次申报物料需求单总物料需求剩余量 = 可使用定额 */ + @JsonSerialize(nullsUsing = NullSerializer.class) @Schema(description = "本次申报总物料需求剩余量") @TableField(value = "GOODS_DEMAND_TOTAL") private BigDecimal goodsDemandTotal; @@ -88,6 +97,7 @@ public class PlateGoodsApply extends BaseEntity { /** * 本次申报物料需求单已申报定额总量(已添加总量) = 累计结余 */ + @JsonSerialize(nullsUsing = NullSerializer.class) @Schema(description = "已申报定额总量") @TableField(value = "DECLARED_QUOTA_TOTAL") private BigDecimal declaredQuotaTotal; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsRecord.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsRecord.java index 6d77c6fe..72f7544b 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsRecord.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsRecord.java @@ -129,10 +129,4 @@ public class PlateGoodsRecord extends BaseEntity { */ @TableField(value = "SURPLUS") private BigDecimal surplus; - - /** - * 本次关联订单数量 - */ - @TableField(value = "DETAIL_ORDER_NUM") - private Integer detailOrderNum; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrderCraft.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrderCraft.java index ab5035ea..1ffa6a3d 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrderCraft.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrderCraft.java @@ -32,15 +32,33 @@ public class YieldOrderCraft extends BaseEntity { private String craftNo; /** - * 工序排序序号 + * 工序Id(DS_PROCESS) + */ + @TableField(value = "PID") + private Long pid; + + /** + * 工序排序序号 - 工序冗余字段 */ @TableField(value = "PROCESS_NO") private String processNo; + /** + * 工序编码 - 工序冗余字段 + */ + @TableField(value = "PROCESS_CODE") + private String processCode; + + /** + * 工序名称 - 工序冗余字段 + */ + @TableField(value = "PROCESS_NAME") + private String processName; + /** * 工序设置ID, bs_procedure_set */ - @TableField(value = "PPS_ID") + @TableField(value = "BS_PROCESS_SET") private Long ppsId; /** @@ -55,11 +73,6 @@ public class YieldOrderCraft extends BaseEntity { @TableField(value = "HOUR_QUOTA") private Double hourQuota; - /** - * 工序Id - */ - @TableField(value = "PID") - private Long pid; /** * 计划开始 @@ -92,7 +105,7 @@ public class YieldOrderCraft extends BaseEntity { private Long ocId; /** - * 工艺能力 craft_ability + * 工艺能力 BS_CRAFT_ABILITY */ @TableField(value = "CA_ID") private Long caId; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldPlan.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldPlan.java index f7ddf5e8..536dddba 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldPlan.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldPlan.java @@ -7,7 +7,6 @@ import lombok.Data; import org.springblade.core.mp.base.BaseEntity; import org.springframework.format.annotation.DateTimeFormat; -import java.math.BigDecimal; import java.util.Date; /** @@ -110,13 +109,13 @@ public class YieldPlan extends BaseEntity { * 已交件数量 */ @TableField(value = "DELIVERY_QTY") - private Long deliveryQty; + private Double deliveryQty; /** * 已分批数量 */ @TableField(value = "ALREADY_BRANCH_QTY") - private Long alreadyBranchQty; + private Double alreadyBranchQty; /** * 一级工艺线路 diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/enums/YieldOrderEnum.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/enums/YieldOrderEnum.java index ffe363c9..6337edcf 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/enums/YieldOrderEnum.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/enums/YieldOrderEnum.java @@ -29,6 +29,7 @@ public enum YieldOrderEnum { STATUS_PROCESSING("加工中", 10005), STATUS_PROCESS_ERROR("排产异常", 10006), STATUS_RECOVER("数据恢复", 10007), + STATUS_OUTSOURCING_WAITING("外协后待排产", 10008), STATUS_COMPLETED("已完工", 10015), STATUS_CLOSED("已关闭", 10021), diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/DeviceBindDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/DeviceBindDTO.java new file mode 100644 index 00000000..f56affe6 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/DeviceBindDTO.java @@ -0,0 +1,50 @@ +package org.springblade.desk.produce.pojo.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 设备绑定 数据传输对象实体类 + * @author litao + */ +@Data +public class DeviceBindDTO { + + @Schema(description = "工序ID集合") + private String planListIds; + + @Schema(description = "挂具ID") + private Long rsId; + + @Schema(description = "挂具ID集合") + private String rsList; + + @Schema(description = "飞靶ID") + private Long fsId; + + @Schema(description = "飞靶ID集合") + private String fsList; + + @Schema(description = "设备ID") + private Long ecId; + + @Schema(description = "挂次号") + private String hangNum; + + @Schema(description = "挂次号id") + private Long hangNumId; + + @Schema(description = "是否解绑") + private String unFsBool; + + @Schema(description = "掺镀件面积") + private String dopedParts; + + @Schema(description = "网面积") + private String net; + + @Schema(description = "挂具面积") + private String rack; + + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbFilePreserveDetailDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbFilePreserveDetailDTO.java index e8b0f150..6492acdc 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbFilePreserveDetailDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbFilePreserveDetailDTO.java @@ -43,4 +43,6 @@ public class MesRbFilePreserveDetailDTO extends MesRbFilePreserveDetailEntity { @Serial private static final long serialVersionUID = 1L; + private Short rfpsType; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrMacTooUseSpec.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrMacTooUseSpec.java index 8cc0cc59..d40f6cfa 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrMacTooUseSpec.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrMacTooUseSpec.java @@ -16,7 +16,7 @@ public class PrMacTooUseSpec implements java.io.Serializable { /** * id */ - private String mtuId; + private Long mtuId; /** * 零件号 */ diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheck.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheck.java new file mode 100644 index 00000000..25c0e10f --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheck.java @@ -0,0 +1,157 @@ +package org.springblade.desk.produce.pojo.dto; + +import java.util.List; + +public class PrintChildCheck implements java.io.Serializable { + + /** + * @return 序号 + * @Author dxl + * @CreateTime 2022/11/7 10:24 + */ + private String testOrders; + /** + * @return 检验细项 + * @Author dxl + * @CreateTime 2022/11/8 16:22 + */ + private List cccList; + + /** + * @return 抽样数 + * @Author dxl + * @CreateTime 2022/11/7 9:25 + */ + private String checkQty; + /** + * @return 合格,不合格,NA + * @Author dxl + * @CreateTime 2022/11/7 9:25 + */ + private String checkResult; + /** + * @return 姓名 + * @Author dxl + * @CreateTime 2022/11/7 9:25 + */ + private String checkName; + /** + * @return 检验日期 + * @Author dxl + * @CreateTime 2022/11/7 9:25 + */ + private String checkDate; + + /** + * 试验数量 + */ + private String testQty; + /** + * @return 检测项目名称 + */ + private String testName; + /** + * @return 检测项目实验标准 + */ + private String trialStandard; + + /** + * @return 设备编码 + */ + private String deviceCode; + + /** + * @return 检验印章URL + */ + private String imgUrl; + public String getTestOrders() { + return testOrders; + } + + public void setTestOrders(String testOrders) { + this.testOrders = testOrders; + } + + public String getCheckQty() { + return checkQty; + } + + public void setCheckQty(String checkQty) { + this.checkQty = checkQty; + } + + public String getCheckName() { + return checkName; + } + + public void setCheckName(String checkName) { + this.checkName = checkName; + } + + public String getCheckDate() { + return checkDate; + } + + public void setCheckDate(String checkDate) { + this.checkDate = checkDate; + } + + public String getCheckResult() { + return checkResult; + } + + public void setCheckResult(String checkResult) { + this.checkResult = checkResult; + } + + public List getCccList() { + return cccList; + } + + public void setCccList(List cccList) { + this.cccList = cccList; + } + + public String getTestQty() { + return testQty; + } + + public void setTestQty(String testQty) { + this.testQty = testQty; + } + + public String getTestName() { + return testName; + } + + public void setTestName(String testName) { + this.testName = testName; + } + + public String getTrialStandard() { + return trialStandard; + } + + public void setTrialStandard(String trialStandard) { + this.trialStandard = trialStandard; + } + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public PrintChildCheck() { + } + + public String getImgUrl() { + return imgUrl; + } + + public void setImgUrl(String imgUrl) { + this.imgUrl = imgUrl; + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheckChild.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheckChild.java new file mode 100644 index 00000000..0b9e1548 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheckChild.java @@ -0,0 +1,91 @@ +package org.springblade.desk.produce.pojo.dto; + +/** + * @version V1.0 + * @Title: PrintChildCheckChild + * @Author: dxl + * @CreateTime: 2022/11/8 16:18 + */ +public class PrintChildCheckChild implements java.io.Serializable { + + /** + * @return 名称 + * @Author dxl + * @CreateTime 2022/11/7 10:24 + */ + private String testName; + /** + * @return 实验标准 + * @Author dxl + * @CreateTime 2022/11/7 10:34 + */ + private String trialStandard; + /** + * @return 检验值 + * @Author dxl + * @CreateTime 2022/11/7 10:34 + */ + private String checkValue; + /** + * @return 设备量具 + * @Author dxl + * @CreateTime 2022/11/7 10:24 + */ + private String emTools; + /** + * @return 检验项Id + * @Author dxl + * @CreateTime 2022/11/8 17:09 + */ + private Long wpiId; + + public String getTestName() { + return testName; + } + + public void setTestName(String testName) { + this.testName = testName; + } + + public String getEmTools() { + return emTools; + } + + public void setEmTools(String emTools) { + this.emTools = emTools; + } + + public String getTrialStandard() { + return trialStandard; + } + + public void setTrialStandard(String trialStandard) { + this.trialStandard = trialStandard; + } + + public String getCheckValue() { + return checkValue; + } + + public void setCheckValue(String checkValue) { + this.checkValue = checkValue; + } + + public Long getWpiId() { + return wpiId; + } + + public void setWpiId(Long wpiId) { + this.wpiId = wpiId; + } + + public PrintChildCheckChild(String testName, String trialStandard, String checkValue, Long wpiId) { + this.testName = testName; + this.trialStandard = trialStandard; + this.checkValue = checkValue; + this.wpiId = wpiId; + } + + public PrintChildCheckChild() { + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessChildCraft.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessChildCraft.java new file mode 100644 index 00000000..bbf91e73 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessChildCraft.java @@ -0,0 +1,132 @@ +package org.springblade.desk.produce.pojo.dto; + +public class PrintThicknessChildCraft implements java.io.Serializable { + /** + * @return 程式编号 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String code; + /** + * @return 名称一 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String gauge_value1; + /** + * @return 参数一 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + + private String gauge_value2; + /** + * @return 名称二 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String gauge_value3; + /** + * @return 参数二 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String gauge_value4; + /** + * @return 名称三 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String gauge_value5; + /** + * @return 参数三 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + + private String gauge_value6; + /** + * @return 名称设备编码 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String deviceName; + /** + * @return 参数检测时间 + * @Author dxl + * @CreateTime 2022/11/7 9:29 + */ + private String update_time; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getGauge_value1() { + return gauge_value1; + } + + public void setGauge_value1(String gauge_value1) { + this.gauge_value1 = gauge_value1; + } + + public String getGauge_value2() { + return gauge_value2; + } + + public void setGauge_value2(String gauge_value2) { + this.gauge_value2 = gauge_value2; + } + + public String getGauge_value3() { + return gauge_value3; + } + + public void setGauge_value3(String gauge_value3) { + this.gauge_value3 = gauge_value3; + } + + public String getGauge_value4() { + return gauge_value4; + } + + public void setGauge_value4(String gauge_value4) { + this.gauge_value4 = gauge_value4; + } + + public String getGauge_value5() { + return gauge_value5; + } + + public void setGauge_value5(String gauge_value5) { + this.gauge_value5 = gauge_value5; + } + + public String getGauge_value6() { + return gauge_value6; + } + + public void setGauge_value6(String gauge_value6) { + this.gauge_value6 = gauge_value6; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getUpdate_time() { + return update_time; + } + + public void setUpdate_time(String update_time) { + this.update_time = update_time; + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessCraftCard.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessCraftCard.java new file mode 100644 index 00000000..ea0fd657 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintThicknessCraftCard.java @@ -0,0 +1,121 @@ +package org.springblade.desk.produce.pojo.dto; + +import java.util.List; + + +public class PrintThicknessCraftCard implements java.io.Serializable { + /** + * @Description: 测厚明细 + * @Author cdl + * @CreateTime 2024/3/7 11:08 + */ + List thicknessList; + /** + * 主槽流程卡号 + */ + private String mainCardNo; + /** + * 主槽零件号 + */ + private String mainPartCode; + /** + * 主槽批次号 + */ + private String mainBatchNo; + /** + * 主槽车间订单号 + */ + private String mainWoCode; + /** + * 流程卡号 + */ + private String cardNo; + /** + * 零件号 + */ + private String partCode; + /** + * 批次号 + */ + private String batchNo; + /** + * 车间订单号 + */ + private String woCode; + + public PrintThicknessCraftCard(List thicknessList) { + this.thicknessList = thicknessList; + } + + public List getThicknessList() { + return thicknessList; + } + + public void setThicknessList(List thicknessList) { + this.thicknessList = thicknessList; + } + + public String getCardNo() { + return cardNo; + } + + public void setCardNo(String cardNo) { + this.cardNo = cardNo; + } + + public String getPartCode() { + return partCode; + } + + public void setPartCode(String partCode) { + this.partCode = partCode; + } + + public String getBatchNo() { + return batchNo; + } + + public void setBatchNo(String batchNo) { + this.batchNo = batchNo; + } + + public String getWoCode() { + return woCode; + } + + public void setWoCode(String woCode) { + this.woCode = woCode; + } + + public String getMainCardNo() { + return mainCardNo; + } + + public void setMainCardNo(String mainCardNo) { + this.mainCardNo = mainCardNo; + } + + public String getMainPartCode() { + return mainPartCode; + } + + public void setMainPartCode(String mainPartCode) { + this.mainPartCode = mainPartCode; + } + + public String getMainBatchNo() { + return mainBatchNo; + } + + public void setMainBatchNo(String mainBatchNo) { + this.mainBatchNo = mainBatchNo; + } + + public String getMainWoCode() { + return mainWoCode; + } + + public void setMainWoCode(String mainWoCode) { + this.mainWoCode = mainWoCode; + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/TaskDataDto.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/TaskDataDto.java new file mode 100644 index 00000000..7a9982e2 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/TaskDataDto.java @@ -0,0 +1,15 @@ +package org.springblade.desk.produce.pojo.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; +import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; + +import java.util.List; + +@Data +public class TaskDataDto { + private String cdjArea; + private String pdjArea; + private String gjArea; + private List slotList; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/BsAdditionalMess.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/BsAdditionalMess.java new file mode 100644 index 00000000..a8f7c1ff --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/BsAdditionalMess.java @@ -0,0 +1,79 @@ +package org.springblade.desk.produce.pojo.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.io.Serial; +import java.util.Date; + +/** + * 额外信息存储 实体类 + * @author litao + */ +@Data +@TableName("MES_BS_ADDITIONAL_MESS") +@Schema(description = "BsAdditionalMess对象") +@EqualsAndHashCode(callSuper = true) +public class BsAdditionalMess extends BaseEntity { + /** + * 同槽增加额外面积 + */ + public static Short TYPE_ONE = 1; + + /** + * 试验项目名称 + */ + public static Short TYPE_TEST_PROJECT_TYPE = 2; + + /** + * 试验项目标准 + */ + public static Short TYPE_TEST_PROJECT_STANDARD_TYPE = 3; + + /** + * 玻璃饼最低库存 + */ + public static Short TYPE_BLB_MIN_STOCK = 4; + + /** + * 模块说明 + */ + public static Short TYPE_MODULE_DETAIL = 5; + + /** + * 年度数据存储 + */ + public static Short TYPE_YEAR_DATA = 6; + + /** + * 班组准时率 + */ + public static Short TYPE_TEAM_PUNCTUALITY = 7; + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "数据1") + private String oneData; + + @Schema(description = "数据2") + private String twoData; + + @Schema(description = "数据3") + private String threeData; + + @Schema(description = "数据4") + private String fourData; + + @Schema(description = "业务类别") + private Short type; + + @Schema(description = "小数类型-数据1") + private Double douOneData = 0d; + + @Schema(description = "备注") + private String memo; + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/DsRbFilePreserve.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/DsRbFilePreserve.java new file mode 100644 index 00000000..f0f88c04 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/DsRbFilePreserve.java @@ -0,0 +1,56 @@ +package org.springblade.desk.produce.pojo.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.io.Serial; +import java.time.LocalDate; +import java.util.Date; + +/** + * + * @author litao + */ +@Data +@TableName("DS_RB_FILE_PRESERVE") +@Schema(description = "DsRbFilePreserve对象") +@EqualsAndHashCode(callSuper = true) +public class DsRbFilePreserve extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "作业中心") + private Long wcId; + + @Schema(description = "工序") + private Long ppsId; + + @Schema(description = "线上线下") + private String line; + + @Schema(description = "维护时间") + private LocalDate keepTime; + + @Schema(description = "维护人") + private Long keepMan; + + @Schema(description = "名称") + private String name; + + + @Schema(description = "审批状态") + private Short approvalStatus = -1; + + @Schema(description = "状态") + private Short rfpStatus = 1; + + @Schema(description = "升版ID") + private String versionId; + + + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/HandoverRecord.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/HandoverRecord.java new file mode 100644 index 00000000..772262ef --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/HandoverRecord.java @@ -0,0 +1,114 @@ +package org.springblade.desk.produce.pojo.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * 移交记录 实体类 + * @author BladeX + */ +@Data +@TableName("MES_HANDOVER_RECORD") +@Schema(description = "HandoverRecord对象") +@EqualsAndHashCode(callSuper = true) +public class HandoverRecord extends BaseEntity { + + /** + * 入库单 + */ + public static Short HR_TYPE_IN_WAREHOUSE = 0; + /** + * 转工单 + */ + public static Short HR_TYPE_TRANSFER = 1; + /** + * 待移交 + */ + public static Integer RUN_STATUS_WAIT = 1; + /** + * 完成 + */ + public static Integer RUN_STATUS_COMPLETE = 2; + public static Map hrTypeMap = new HashMap(2); + public static Map runStatusMap = new HashMap(2); + + static { + hrTypeMap.put(HR_TYPE_IN_WAREHOUSE, "入库单"); + hrTypeMap.put(HR_TYPE_TRANSFER, "转工单"); + } + + static { + runStatusMap.put(RUN_STATUS_WAIT, "待移交"); + runStatusMap.put(RUN_STATUS_COMPLETE, "完成"); + } + + @Schema(description = "单号") + private String hrCode; + + @Schema(description = "移交类型") + private Short hrType; + + @Schema(description = "车间Id") + private Long woId; + + @Schema(description = "车间订单号") + private String woCode; + + @Schema(description = "零件号") + private String partCode; + + @Schema(description = "路线卡号") + private String cardNo; + + @Schema(description = "生产标识") + private String prodIdent; + + @Schema(description = "批次号") + private String batchNo; + + @Schema(description = "移交部门") + private String handoverUnit; + + @Schema(description = "移交数量") + private Double handoverQty; + + @Schema(description = "一级工序(B号)") + private String roamNo; + + @Schema(description = "接收部门") + private String recDept; + + @Schema(description = "备注") + private String memo; + + @Schema(description = "打印时间") + private Date printTime; + + @Schema(description = "打印标记") + private Integer printFlag; + + @Schema(description = "外协交件单号") + private String deliverKey; + + @TableField(exist = false) + @Schema(description = "移交类型") + private String hrTypeName; + + @TableField(exist = false) + @Schema(description = "状态") + private String statusName; + + @TableField(exist = false) + @Schema(description = "移交人员") + private String createName; + + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveDetailEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveDetailEntity.java index 4c2947b0..35037868 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveDetailEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveDetailEntity.java @@ -29,7 +29,7 @@ public class MesRbFilePreserveDetailEntity extends BaseEntity { * 热表电子档案维护-槽子明细 */ @Schema(description = "热表电子档案维护-槽子明细") - private BigDecimal rfpsId; + private Long rfpsId; /** * 明细名称 */ diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java index 341edb6e..5ab2e78f 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java @@ -1,14 +1,17 @@ package org.springblade.desk.produce.pojo.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; 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.produce.pojo.dto.MesRbFilePreserveDetailDTO; import java.io.Serial; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 热表电子档案维护-槽子明细 实体类 @@ -29,7 +32,7 @@ public class MesRbFilePreserveSlotEntity extends BaseEntity { * 热表电子档案维护 */ @Schema(description = "热表电子档案维护") - private BigDecimal rfpId; + private Long rfpId; /** * 槽号名称 */ @@ -60,5 +63,8 @@ public class MesRbFilePreserveSlotEntity extends BaseEntity { */ @Schema(description = "维护人") private String keepMan; - + @TableField(exist = false) + private List childrenList; +// @TableField(exist = false) +// List childrenListNew; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java index fc12a2b6..9fba2e94 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java @@ -6,6 +6,10 @@ 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.produce.pojo.dto.PrintChildCheck; +import org.springblade.desk.produce.pojo.dto.TaskDataDto; +import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; +import org.springblade.desk.quality.pojo.entity.AuditFile; import org.springblade.desk.quality.pojo.entity.InspectionTask; import org.springblade.desk.quality.pojo.entity.WorkPlanItem; @@ -289,5 +293,52 @@ public class WorkPlan extends BaseEntity { @Schema(description = "返工工艺Id") @TableField(exist = false) public Long rpId; +// @TableField(exist = false) +// private List slotList; + @TableField(exist = false) + private List prList; + @TableField(exist = false) + private String gjCode; + @TableField(exist = false) + private String fbCode; + @TableField(exist = false) + private String deviceCode; + @TableField(exist = false) + private String createMan; + @TableField(exist = false) + private Double flagQty; + @TableField(exist = false) + private String flagColourOne; + @TableField(exist = false) + private String flagColourTwo; + @TableField(exist = false) + private String flagInk; + @TableField(exist = false) + private String flagMatter; + // 色带数据 + @TableField(exist = false) + private Double beltQty; + @TableField(exist = false) + private String beltColourOne; + @TableField(exist = false) + private String beltColourTwo; + @TableField(exist = false) + private String beltInk; + @TableField(exist = false) + private String beltMatter; + @TableField(exist = false) + private List qcProduceRunsList; + @TableField(exist = false) + private Integer totalPreserve = 0; + @TableField(exist = false) + private MesBsAdditionalMessEntity bsAdditionalMess; + @TableField(exist = false) + private List dsRbFilePreserveSlotList; + @TableField(exist = false) + private List printChildCheck; + @TableField(exist = false) + private AuditFile auditFile; + @TableField(exist = false) + private TaskDataDto taskData; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/BindModelVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/BindModelVO.java new file mode 100644 index 00000000..f1db7c83 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/BindModelVO.java @@ -0,0 +1,95 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 当前工序和挂具、飞拔、设备绑定数据模型 视图实体类 + * + * @author BladeX + * @since 2026-02-04 + */ +@Data +public class BindModelVO { + + /** + * id + */ + @Schema(description = "id") + private Long id; + /** + * 车间订单号 + */ + @Schema(description = "车间订单号") + private String woCode; + /** + * 镀种 + */ + @Schema(description = "镀种") + private String plate; + /** + * 计划员 + */ + @Schema(description = "计划员") + private String planUser; + /** + * 加工状态 + */ + @Schema(description = "加工状态") + private String runStatus; + /** + * 批次号 + */ + @Schema(description = "批次号") + private String batchNo; + /** + * 加工数量 + */ + @Schema(description = "加工数量") + private Double makeQty; + /** + * 零件号 + */ + @Schema(description = "零件号") + private String partCode; + /** + * 产品名称 + */ + @Schema(description = "产品名称") + private String partName; + /** + * 班组 + */ + @Schema(description = "班组") + private String makeTeam; + /** + * 当前工序号 + */ + @Schema(description = "当前工序号") + private String orders; + /** + * 当前工序名称 + */ + @Schema(description = "当前工序名称") + private String ppsName; + /** + * 下序工序号 + */ + @Schema(description = "下序工序号") + private String nextOrders; + /** + * 下序名称 + */ + @Schema(description = "下序名称") + private String nextPpsName; + /** + * 生产标识 + */ + @Schema(description = "生产标识") + private String prodIdent; + /** + * 面积 + */ + @Schema(description = "面积") + private Double area; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/DsRbFilePreserveVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/DsRbFilePreserveVO.java new file mode 100644 index 00000000..de4816af --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/DsRbFilePreserveVO.java @@ -0,0 +1,18 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve; + +import java.util.Date; + +/** + * 加工记录 视图实体类 + * + * @author BladeX + * @since 2026-02-04 + */ +@Data +public class DsRbFilePreserveVO extends DsRbFilePreserve { + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MacToolUseVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MacToolUseVO.java new file mode 100644 index 00000000..c2fc9e9e --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MacToolUseVO.java @@ -0,0 +1,44 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * 设备,工装使用记录 视图实体类 + * + * @author BladeX + * @since 2026-02-04 + */ +@Data +public class MacToolUseVO { + + @Schema(description = "使用记录ID") + private Long mtuId; + /** + * 零件号 + */ + @Schema(description = "零件号") + private String partCode; + /** + * 批次号 + */ + @Schema(description = "批次号") + private String batchNo; + /** + * 数量 + */ + @Schema(description = "数量") + private String quantity; + /** + * 时间 + */ + @Schema(description = "时间") + private String createTime; + /** + * 设备 + */ + @Schema(description = "设备编号") + private String deviceCode; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintWarehousingVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintWarehousingVO.java new file mode 100644 index 00000000..1bcd1654 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PrintWarehousingVO.java @@ -0,0 +1,152 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 入库单打印模型 视图实体类 + * + * @author litao + * @since 2026-2-27 + */ +@Data +public class PrintWarehousingVO { + + /** + * 入库单号 + */ + @Schema(description = "入库单号") + private String hrCode; + /** + * 工作单号 生产订单计划单号 + */ + @Schema(description = "工作单号 生产订单计划单号") + private String poCode; + /** + * 车间单号 + */ + @Schema(description = "车间单号") + private String woCode; + /** + * 计划部门 生产订单使用部门 + */ + @Schema(description = "计划部门 生产订单使用部门") + private String useDept; + /** + * 镀钟 生产订单 + */ + @Schema(description = "镀钟 生产订单") + private String plate; + /** + * 生产标识 生产订单 + */ + @Schema(description = "生产标识") + private String prodIdent; + /** + * 型别 生产订单产品型号 + */ + @Schema(description = "产品型号") + private String productTypePart; + /** + * 零件号 生产订单 + */ + @Schema(description = "零件号") + private String partCode; + /** + * 名称 生产订单 + */ + @Schema(description = "名称") + private String partName; + /** + * 产品系列 pj_bom + */ + @Schema(description = "产品系列") + private String productType; + /** + * 原编码 pj_bom + */ + @Schema(description = "原编码") + private String oldCode; + /** + * 计划数量 生产订单加工数量 + */ + @Schema(description = "计划数量") + private String makeQty; + /** + * 重量 镀前镀后 + */ + @Schema(description = "重量") + private Double weight; + /** + * 批次号 车间订单 + */ + @Schema(description = "批次号") + private String batchNo; + /** + * 提交数量 移交记录移交数量 + */ + @Schema(description = "提交数量") + private String handoverQty; + /** + * 车间提交人 移交记录移交人 + */ + @Schema(description = "车间提交人") + private String createMan; + /** + * 计划员 生产订单 + */ + @Schema(description = "计划员") + private String planUser; + /** + * 使用部门 + */ + @Schema(description = "使用部门") + private String recDept; + /** + * 制表日期 + */ + @Schema(description = "制表日期") + private String tableDate; + /** + * 备注 + */ + @Schema(description = "备注") + private String memo; + /** + * 保管员 + */ + @Schema(description = "保管员") + private String custodian; + /** + * 委托车间 + */ + @Schema(description = "委托车间") + private String entrustDept; + /** + * 废品数 + */ + @Schema(description = "废品数") + private String scrapQty = "0"; + /** + * 试验数 + */ + @Schema(description = "试验数") + private String testQty = "0"; + /** + * 消耗数 + */ + @Schema(description = "消耗数") + private String useQty = "0"; + /** + * 类型 + */ + @Schema(description = "类型") + private Short hrType; + /** + * 工艺路线 + */ + @Schema(description = "工艺路线") + private String primaryCraft; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorSlotListVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorSlotListVO.java index 4541235e..6e725a2c 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorSlotListVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorSlotListVO.java @@ -28,6 +28,7 @@ public class ProduceMonitorSlotListVO { @Schema(description = "数量") private String qua; private String poQty; + private String workQty; @Schema(description = "生产标识") private String prodIdent; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/SjEcBingCardVo.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/SjEcBingCardVo.java index 7485d88e..5c7e8acf 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/SjEcBingCardVo.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/SjEcBingCardVo.java @@ -1,25 +1,59 @@ package org.springblade.desk.produce.pojo.vo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; +/** + * @author litao + */ @Data public class SjEcBingCardVo { + + @Schema(description = "设备ID") private Long ecId; + + @Schema(description = "") private String operate; + + @Schema(description = "此次绑定数量") private String bindNum; + + @Schema(description = "此次绑定设定的温度") private String heat; + + @Schema(description = "工序名称") private String ppsName; + + @Schema(description = "工序ID集合") private List planList; + + @Schema(description = "") private String rsName; + + @Schema(description = "") private String oneData; + + @Schema(description = "") private String twoData; + + @Schema(description = "") private String threeData; + + @Schema(description = "") private String fourData; + + @Schema(description = "") private String fiveData; + + @Schema(description = "") private String sixData; + + @Schema(description = "") private String sevenData; + + @Schema(description = "") private String eightData; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingDeviceVo.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingDeviceVo.java index ca019bbe..32b788cb 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingDeviceVo.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingDeviceVo.java @@ -11,13 +11,13 @@ public class UnBingDeviceVo { private List list; - private String oneData; + private Date oneData; private String twoData; - private String threeData; - private String fourData; - private String fiveData; - private String sixData; - private String sevenData; + private Date threeData; + private Date fourData; + private Date fiveData; + private Date sixData; + private Date sevenData; private String dataFourteen; private String tempSlot; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingVo.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingVo.java index 804836ae..74e176df 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingVo.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingVo.java @@ -1,5 +1,6 @@ package org.springblade.desk.produce.pojo.vo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @@ -7,8 +8,11 @@ import java.util.List; @Data public class UnBingVo { + @Schema(description = "挂具编号") private String rsCode; + @Schema(description = "飞靶编号") private String fsCode; + @Schema(description = "设备编号") private String deviceCode; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/PpmReportDetailDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/PpmReportDetailDTO.java new file mode 100644 index 00000000..fbadff5f --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/PpmReportDetailDTO.java @@ -0,0 +1,162 @@ +package org.springblade.desk.quality.pojo.dto; + +import lombok.Data; + +/** + * @ClassName PpmReportDetailModel + * @Description: 出厂不合格率明细模型 + * @Author cdl + * @Date 2023/12/08 13:37 + * @Version 1.0 + * 注意:本内容仅限于内部传阅,禁止外泄及用于其他的商业目的 + */ +@Data +public class PpmReportDetailDTO { + /** + * 班组 + */ + private String tsName; + /** + * 审理单号 + */ + private String sheetNo; + /** + * 审理单类型 + */ + private String billmodel; + /** + * 审理单状态 + */ + private String status; + /** + * 发生单位 + */ + private String deptcode; + /** + * 物料号 + */ + private String prtno; + /** + * 物料名称 + */ + private String name; + /** + * 型号 + */ + private String type; + /** + * 质量等级 + */ + private String qstandno; + /** + * 批次号 + */ + private String lotno; + /** + * 总数量 + */ + private String cntt; + /** + * 不合格数 + */ + private String cntn; + /** + * 检验员 + */ + private String checker; + /** + * 检验日期 + */ + private String checkdate; + /** + * 归档日期 + */ + private String finishdate; + /** + * 责任部门 + */ + private String layer1; + /** + * 审理单开始时间 + */ + private String judgestart; + /** + * + */ + private String opinion; + /** + * 审理级别 + */ + private String userlevel; + /** + * 审理意见 + */ + private String dispose; + /** + * 审理人 + */ + private String usercode; + /** + * 返修数 + */ + private String p6layer3; + /** + * 返工数 + */ + private String p6layer4; + /** + * 报废数 + */ + private String p6layer5; + /** + * 订单号 + */ + private String sono; + /** + * 完工数 + */ + private String avlqty; + /** + * 完工日期 + */ + private String date1; + /** + * 责任零件 + */ + private String p5layer1; + /** + * 责任批次 + */ + private String p5layer3; + /** + * 发生工序 + */ + private String process; + /** + * 发生工序名称 + */ + private String processName; + /** + * 上级编号 + */ + private String precode; + /** + * 返修路线 + */ + private String reworkLine; + /** + * 故障描述 + */ + private String memo; + + private String code; + private String useproc; + private String useseq; + private String redodeptcode; + private String p1remark; + private String disposename; + private String p2layer1; + private String chker; + + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java index 07966acf..70b0d707 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java @@ -20,5 +20,48 @@ import java.io.Serial; public class ReviewDutyDTO extends ReviewDuty { @Serial private static final long serialVersionUID = 1L; + /** + * 审理单Id + */ + private String trialId; + /** + * 序号 + */ + private String trialSeq; + + /** + * 物料号 + */ + private String mdsItemCode; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 相关物料号 + */ + private String corrMdsItemCode; + + /** + * 相关批次号 + */ + private String corrBatchNo; + + /** + * 备注 + */ + private String note; + + /** + * 数量 + */ + private Short reqQty; + + /** + * 单位 + */ + private String unit; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java index c321096d..4529ce19 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java @@ -20,5 +20,44 @@ import java.io.Serial; public class ReviewFaultDTO extends ReviewFault { @Serial private static final long serialVersionUID = 1L; + /** + * 审理单Id + */ + private String trialId; + + /** + * 序号 + */ + private String trialSeq; + + /** + * 故障类别 + */ + private String faultType; + + /** + * 问题大类 + */ + private String questClass; + + /** + * 问题小类 + */ + private String questSubclass; + + /** + * 比例 + */ + private Double proportion; + + /** + * 数量 + */ + private Long faultQty; + + /** + * 描述 + */ + private String describe; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java index 8524efe0..d5d1860a 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java @@ -21,4 +21,97 @@ public class ReviewSheetDTO extends ReviewSheet { @Serial private static final long serialVersionUID = 1L; + /** + * 批次号 + */ + private String batchNo; + + /** + * 车间订单号/外协交件号.业务号 + */ + private String businessNo; + + /** + * 检验员编码 + */ + private String checkUserCode; + + /** + * 物料编码 + */ + private String mdsItemCode; + + /** + * 物料名称 + */ + private String mdsItemName; + + /** + * 质量等级 + */ + private String levels; + + /** + * 发现部门 + */ + private String findWorkShop; + + /** + * 是否质量问题 + */ + private Boolean qualityquestion; + + /** + * 审理单状态 + */ + private String trialStatus = "21"; + + /** + * 总数量 + */ + private Double needQty; + + /** + * 上级编号 + */ + private String preCode; + + /** + * 比例 + */ + private Double proporTion; + + /** + * 不合格数量 + */ + private Double subQty; + + /** + * 简单原因 + */ + private String easyReason; + + /** + * 处置单类型(1-零件模式/2-装配模式/5-售后模式) + */ + private String trialType; + + /** + * 工序号 + */ + private String seqNo; + /** + * 工序名称 + */ + private String seqName; + + /** + * 发现人 + */ + private String findUserCode; + /** + * 处置单类型(1-提交质保/2-提交工艺/3-提交设计) + */ + private String hearDis; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java index 2b877e52..42e51c4b 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java @@ -71,5 +71,11 @@ public class RaiseHand extends BaseEntity { @Schema(description = "免责金额") private BigDecimal amount; + /** + * raisHand文件 + */ + @Schema(description = "文件路径") + private String fileUrl; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/ReviewSheet.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/ReviewSheet.java index 66ce4176..ec66f6d3 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/ReviewSheet.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/ReviewSheet.java @@ -423,4 +423,6 @@ public class ReviewSheet extends BaseEntity { //当前工序id private Long ppsId; + + private Integer submitType; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/WorkPlanItemDetail.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/WorkPlanItemDetail.java index f692cc79..de41be20 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/WorkPlanItemDetail.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/WorkPlanItemDetail.java @@ -3,10 +3,12 @@ */ package org.springblade.desk.quality.pojo.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; +import org.apache.commons.lang3.StringUtils; import org.springblade.core.mp.base.BaseEntity; import java.io.Serial; @@ -149,4 +151,32 @@ public class WorkPlanItemDetail extends BaseEntity { */ @Schema(description = "实际[量具]id") private Long actMtId; + + + @TableField(exist = false) + private String trialItem; + @TableField(exist = false) + private String trialStandard; + @TableField(exist = false) + private Long wpiId; + + + public String getGaugeValueNotNUll() { + StringBuffer sb = new StringBuffer(); + + if(StringUtils.isNotBlank(this.gaugeValue2) && this.gaugeValue6 != "/"){ + sb.append(this.gaugeValue1+"/"+this.gaugeValue2+"/"); + + } + + if(StringUtils.isNotBlank(this.gaugeValue4) && this.gaugeValue4 != "/"){ + sb.append(this.gaugeValue3+"/"+this.gaugeValue4+"/"); + + } + if(StringUtils.isNotBlank(this.gaugeValue6) && this.gaugeValue6 != "/"){ + sb.append(this.gaugeValue5+"/"+this.gaugeValue6+"/"); + + } + return sb.toString(); + } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java index 3242f7d4..ff1795f4 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java @@ -10,6 +10,7 @@ import lombok.EqualsAndHashCode; import org.springblade.desk.quality.pojo.entity.InspectionTask; import java.io.Serial; +import java.time.LocalDate; import java.time.LocalDateTime; /** @@ -111,4 +112,17 @@ public class InspectionTaskListVO extends InspectionTask { private String partVersion; //工单id private Long yoId; + //完成时间 + private LocalDate finishDate; + + private String currentProcessCode; + + private Long ppsId; + + private String ppsCode; + + private String ppsName; + + private Integer yieldType; + } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java index a9f6865d..43c3b31c 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java @@ -9,6 +9,7 @@ import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; import java.util.Map; @@ -28,6 +29,7 @@ public interface IErpDataProduceClient { String REWORK_ORDER = API_PREFIX + "/loadReworkOrder"; String PRODUCT_APP_AREA = API_PREFIX + "/productAppArea"; String VERSION = API_PREFIX + "/version"; + String CUSTODIAN = API_PREFIX + "/getCustodian"; /** * 缺件申报-通过零件号获取批次号 @@ -52,4 +54,10 @@ public interface IErpDataProduceClient { */ @GetMapping(VERSION) R getVersionByPartCode(String partCode); + + /** + * 获取保管员 + */ + @GetMapping(CUSTODIAN) + R getCustodianByRecDept(@RequestParam("partCode") String partCode, @RequestParam("recDept") String recDept); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java index 6256a549..fb472640 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java @@ -37,4 +37,9 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient { public R getVersionByPartCode(String partCode) { return R.fail("获取数据失败"); } + + @Override + public R getCustodianByRecDept(String partCode, String recDept) { + return R.fail("获取数据失败"); + } } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClient.java new file mode 100644 index 00000000..631676a1 --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClient.java @@ -0,0 +1,52 @@ +package org.springblade.erpdata.feign; + + +import org.springblade.common.constant.LauncherConstant; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.Date; + +/** + * 外协相关erp操作Feign接口类 + * + * @author qyl + * @since 2026-02-27 + */ +@FeignClient( + value = LauncherConstant.APPLICATION_ERP_DATA_NAME, + fallback = IErpDataOemClientFallback.class +) +public interface IErpYieldOrderClient { + + String API_PREFIX = "/feign/erp/yieldOrder"; + String SAVE_GLASS_CAKE = API_PREFIX + "/saveGlassCake"; + + /** + * 生成玻璃饼订单 + * + * @param yoCode + * @param cardNo + * @param batchNo + * @param prodIdent + * @param demandDate + * @param planUser + * @param ypCode + * @param poQty + * @param partCode + * @param quota + */ + @GetMapping(SAVE_GLASS_CAKE) + void saveGlassCake(@RequestParam("yoCode") String yoCode, + @RequestParam("cardNo") String cardNo, + @RequestParam("batchNo") String batchNo, + @RequestParam("prodIdent") String prodIdent, + @RequestParam("demandDate") Date demandDate, + @RequestParam("planUser") String planUser, + @RequestParam("ypCode") String ypCode, + @RequestParam("poQty") Long poQty, + @RequestParam("partCode") String partCode, + @RequestParam("quota") Double quota); + +} diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClientFallback.java new file mode 100644 index 00000000..c20fcbb5 --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClientFallback.java @@ -0,0 +1,18 @@ +package org.springblade.erpdata.feign; + + +import java.util.Date; + +/** + * Feign接口类 + * + * @author liuqingkun + */ +public class IErpYieldOrderClientFallback implements IErpYieldOrderClient { + + + @Override + public void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate, String planUser, String ypCode, Long poQty, String partCode, Double quota) { + + } +} diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClient.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClient.java index 61a77701..5977bede 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClient.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClient.java @@ -50,8 +50,6 @@ public interface IWorkOrderClient { @GetMapping(INIT_RESOURCE) R initResource(); - @GetMapping(GLASS_CAKE_ORDER) - R> selectGlassCakeOrderPage(GlassCakeOrderPageQuery glassCakeOrderPageQuery); @PostMapping(GLASS_CAKE_QUALITY) R getById(@RequestBody Long id); diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClientFallback.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClientFallback.java index 87fac541..196dd058 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClientFallback.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/feign/IWorkOrderClientFallback.java @@ -25,12 +25,8 @@ */ package org.springblade.scheduling.feign; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.scheduling.pojo.entity.QualityGradeEntity; -import org.springblade.scheduling.pojo.vo.GlassCakeOrderPageQuery; -import org.springblade.scheduling.pojo.vo.WorkOrderVO; import org.springframework.stereotype.Component; import java.util.List; @@ -53,10 +49,6 @@ public class IWorkOrderClientFallback implements IWorkOrderClient { return R.fail("初始化资源失败"); } - @Override - public R> selectGlassCakeOrderPage(GlassCakeOrderPageQuery glassCakeOrderPageQuery) { - return R.fail("获取玻璃饼订单失败"); - } @Override public R getById(Long id) { diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/EquipAbilityEntity.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/EquipAbilityEntity.java index a293b7d8..9c1f22b2 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/EquipAbilityEntity.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/EquipAbilityEntity.java @@ -28,7 +28,6 @@ package org.springblade.scheduling.pojo.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.NullSerializer; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -99,8 +98,7 @@ public class EquipAbilityEntity extends BaseEntity { * 额定加工能力 */ @Schema(description = "额定加工能力") - @JsonSerialize(nullsUsing = NullSerializer.class) - private BigDecimal standardProcessAbility; + private String standardProcessAbility; /** * 额定工时(分钟) @@ -141,4 +139,22 @@ public class EquipAbilityEntity extends BaseEntity { @Schema(description = "备注") private String remarks; + /** + * 工序编码 + */ + @Schema(description = "工序编码") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long processId; + + /** + * 工序名称 + */ + @Schema(description = "工序名称") + private String processName; + + /** + * 零件类型 + */ + private Integer partType; + } diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/EquipResourceEntity.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/EquipResourceEntity.java index 48e23277..ff7a7a6a 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/EquipResourceEntity.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/EquipResourceEntity.java @@ -27,6 +27,8 @@ package org.springblade.scheduling.pojo.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -159,7 +161,28 @@ public class EquipResourceEntity extends BaseEntity { private Integer isDeleted; + /** + * 工序编码 + */ + @Schema(description = "工序编码") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long processId; + + /** + * 工序名称 + */ + @Schema(description = "工序名称") + private String processName; + /** + * 开始值 + */ + private Integer startNum; + + /** + * 结束值 + */ + private Integer endNum; } diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartEntity.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartEntity.java index e805892f..5f423f43 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartEntity.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartEntity.java @@ -25,15 +25,15 @@ */ package org.springblade.scheduling.pojo.entity; -import lombok.Data; -import io.swagger.v3.oas.annotations.media.Schema; import com.baomidou.mybatisplus.annotation.TableName; -import java.util.Date; -import java.math.BigDecimal; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; -import org.springblade.core.tenant.mp.TenantEntity; + import java.io.Serial; +import java.math.BigDecimal; +import java.util.Date; /** * 零件信息表 实体类 @@ -291,4 +291,14 @@ public class PartEntity extends BaseEntity { @Schema(description = "审核人") private String reviewUser; + + @Schema(name = "玻璃饼直径") + private Double blbDiameter; + + @Schema(name = "壳体最大外径") + private Double externalDiameter; + + @Schema(name = "定额") + private Double quota; + } diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartRelationEntity.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartRelationEntity.java index a82584fd..d702b844 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartRelationEntity.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PartRelationEntity.java @@ -25,14 +25,12 @@ */ package org.springblade.scheduling.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.util.Date; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; -import org.springblade.core.tenant.mp.TenantEntity; + import java.io.Serial; /** @@ -54,7 +52,7 @@ public class PartRelationEntity extends BaseEntity { * 部件ID */ @Schema(description = "部件ID") - private BigDecimal partId; + private Long partId; /** * 部件号 */ @@ -64,7 +62,7 @@ public class PartRelationEntity extends BaseEntity { * 子件ID */ @Schema(description = "子件ID") - private BigDecimal childPartId; + private Long childPartId; /** * 子件号 */ diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PersonAbilityEntity.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PersonAbilityEntity.java index d532c5bd..311efef0 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PersonAbilityEntity.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/PersonAbilityEntity.java @@ -94,7 +94,7 @@ public class PersonAbilityEntity extends BaseEntity { * 额定工时(分钟/每人每个) */ @Schema(description = "额定工时(分钟/每人每个)") - private BigDecimal standardTime; + private String standardTime; /** * 准备工时(分钟) @@ -123,4 +123,7 @@ public class PersonAbilityEntity extends BaseEntity { */ private String productIdent; + private Integer partType; + + } diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/ProcessSetEntity.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/ProcessSetEntity.java index ed5fe9bd..8d04926a 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/ProcessSetEntity.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/ProcessSetEntity.java @@ -87,7 +87,7 @@ public class ProcessSetEntity extends BaseEntity { @Schema(description = "标准周期") private BigDecimal cycle; /** - * 是否主工序 + * 是否主工序 0否 1是 */ @Schema(description = "是否主工序") private String isMain; diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/WorkPlanEntity.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/WorkPlanEntity.java index 0bd714cf..aadb1f49 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/WorkPlanEntity.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/WorkPlanEntity.java @@ -34,7 +34,6 @@ import org.springblade.core.mp.base.BaseEntity; import java.io.Serial; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.Date; /** * 车间作业计划 实体类 @@ -97,7 +96,7 @@ public class WorkPlanEntity extends BaseEntity { * 工时定额 */ @Schema(description = "工时定额") - private BigDecimal hourQuota; + private Double hourQuota; /** * 计划开始 */ diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/YieldOrderEntity.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/YieldOrderEntity.java index 9cfd44be..9a8e70d9 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/YieldOrderEntity.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/YieldOrderEntity.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.tenant.mp.TenantEntity; import org.springblade.core.tool.utils.DateUtil; import org.springframework.format.annotation.DateTimeFormat; @@ -61,6 +60,12 @@ public class YieldOrderEntity extends TenantEntity { @TableField(value = "PART_NAME") private String partName; + /** + * 零件号版本号 + */ + @TableField(value = "PART_VERSION") + private String partVersion; + /** * 镀种 */ diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/enums/WorkOrderEnum.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/enums/WorkOrderEnum.java index c8e7438c..022a2438 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/enums/WorkOrderEnum.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/enums/WorkOrderEnum.java @@ -27,10 +27,17 @@ public enum WorkOrderEnum { STATUS_COMPLETED("已完工", 4), STATUS_ADJUDICATING("审理中", 5), STATUS_SCRAP("已报废", 6), - STATUS_REWORK("已返工", 7) + STATUS_REWORK("已返工", 7), + + /** + * 烧结订单人工工时统计类型 + */ + STATUS_PART_TYPE_1("壳体最大外径", 1), + STATUS_PART_TYPE_2("玻璃饼直径", 2), + STATUS_PART_TYPE_3("芯数", 3), ; final String name; - final int category; + final int code; /** * 匹配枚举值 @@ -54,7 +61,7 @@ public enum WorkOrderEnum { */ public static String getName(int category) { WorkOrderEnum item = Arrays.stream(WorkOrderEnum.values()) - .filter(enumItem -> enumItem.getCategory() == category) + .filter(enumItem -> enumItem.getCode() == category) .findFirst() .orElse(null); return ObjectUtil.isEmpty(item) ? StringPool.EMPTY : item.getName(); diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StGlassCakeOutClient.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StGlassCakeOutClient.java index 94306d80..079bd822 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StGlassCakeOutClient.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StGlassCakeOutClient.java @@ -6,6 +6,7 @@ import org.springblade.wms.pojo.entity.StGlassCakeOut; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Map; @@ -29,9 +30,9 @@ public interface StGlassCakeOutClient { String GLASS_OUT_ORDER = API_PREFIX + "/generateOrder"; String GLASS_BATCH_OUT_ORDER = API_PREFIX + "/batchGenerateOrder"; - @PostMapping("GLASS_OUT_ORDER") + @PostMapping(GLASS_OUT_ORDER) R> callGeneratePreOutOrder(@SpringQueryMap StGlassCakeOutDTO dto); - @PostMapping("GLASS_BATCH_OUT_ORDER") - R> batchGeneratePreOutOrder(@SpringQueryMap List dtoList); + @PostMapping(GLASS_BATCH_OUT_ORDER) + R> batchGeneratePreOutOrder(@RequestBody List dtoList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BasicClazzController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BasicClazzController.java index 0c612ff5..29e010b8 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BasicClazzController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BasicClazzController.java @@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.common.constant.CommonConstant; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; @@ -184,6 +185,7 @@ public class BasicClazzController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("新增基础分类") @Operation(summary = "新增一条", description = "传入BasicClazz Obj") public R save(@Valid @RequestBody BasicClazz addOne) { addOne.setId(null); @@ -195,6 +197,7 @@ public class BasicClazzController extends BladeController { */ @PostMapping("/saveBat") @ApiOperationSupport(order = 31) + @ApiLog("新增基础分类") @Operation(summary = "新增批量", description = "传入BasicClazz List") public R saveBat(@Valid @RequestBody List addList) { addList.forEach(one -> { @@ -208,6 +211,7 @@ public class BasicClazzController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("修改基础分类") @Operation(summary = "修改一条", description = "传入BasicClazz Obj") public R update(@Valid @RequestBody BasicClazz updateOne) { return R.status(service.updateById(updateOne)); @@ -218,6 +222,7 @@ public class BasicClazzController extends BladeController { */ @PostMapping("/updateBat") @ApiOperationSupport(order = 41) + @ApiLog("修改基础分类") @Operation(summary = "修改批量", description = "传入BasicClazz List") public R updateBat(@Valid @RequestBody List updateList) { return R.status(service.updateBatchById(updateList)); @@ -248,6 +253,7 @@ public class BasicClazzController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("删除基础分类") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BatConfigController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BatConfigController.java index 1a021cd2..4fce8693 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BatConfigController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BatConfigController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -121,6 +122,7 @@ public class BatConfigController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("新增批量配置") @Operation(summary = "新增一条", description = "传入BatConfig Obj") public R save(@Valid @RequestBody BatConfig addOne) { addOne.setId(null); @@ -145,6 +147,7 @@ public class BatConfigController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("批量配置修改") @Operation(summary = "修改一条", description = "传入BatConfig Obj") public R update(@Valid @RequestBody BatConfig updateOne) { return R.status(service.updateById(updateOne)); @@ -155,6 +158,7 @@ public class BatConfigController extends BladeController { */ @PostMapping("/updateBat") @ApiOperationSupport(order = 41) + @ApiLog("批量配置修改批量") @Operation(summary = "修改批量", description = "传入BatConfig List") public R updateBat(@Valid @RequestBody List updateList) { return R.status(service.updateBatchById(updateList)); @@ -185,6 +189,7 @@ public class BatConfigController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("批量配置逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java index a306c130..0c22152d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java @@ -39,6 +39,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -141,6 +142,7 @@ public class BsAssignController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 4) + @ApiLog("分派规则维护新增") @Operation(summary = "新增", description = "传入bsAssign") public R save(@Valid @RequestBody BsAssignEntity bsAssign) { return R.status(bsAssignService.save(bsAssign)); @@ -164,6 +166,7 @@ public class BsAssignController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 5) + @ApiLog("分派规则维护修改") @Operation(summary = "修改", description = "传入bsAssign") public R update(@Valid @RequestBody BsAssignEntity bsAssign) { @@ -282,6 +285,7 @@ public class BsAssignController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 7) + @ApiLog("分派规则维护删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(bsAssignService.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CoatingThicknessController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CoatingThicknessController.java index 4e478666..c7ed19ce 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CoatingThicknessController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CoatingThicknessController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -124,6 +125,7 @@ public class CoatingThicknessController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("镀层厚度新增") @Operation(summary = "新增一条", description = "传入CoatingThickness Obj") public R save(@Valid @RequestBody CoatingThickness addOne) { addOne.setId(null); @@ -148,6 +150,7 @@ public class CoatingThicknessController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("镀层厚度修改") @Operation(summary = "修改一条", description = "传入CoatingThickness Obj") public R update(@Valid @RequestBody CoatingThickness updateOne) { return R.status(service.updateById(updateOne)); @@ -206,6 +209,7 @@ public class CoatingThicknessController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("镀层厚度逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java index cc25241f..5f628d03 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java @@ -36,6 +36,7 @@ import jakarta.validation.Valid; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -168,6 +169,7 @@ public class CraftAbilityController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 4) + @ApiLog("工艺能力新增") @Operation(summary = "新增", description = "传入CraftAbility") public R save(@Valid @RequestBody CraftAbilityEntity craftAbility) { return R.status(craftAbilityService.save(craftAbility)); @@ -178,6 +180,7 @@ public class CraftAbilityController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 5) + @ApiLog("工艺能力修改") @Operation(summary = "修改", description = "传入CraftAbility") public R update(@Valid @RequestBody CraftAbilityEntity craftAbility) { return R.status(craftAbilityService.updateById(craftAbility)); @@ -198,6 +201,7 @@ public class CraftAbilityController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 7) + @ApiLog("工艺能力删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(craftAbilityService.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/FormulaController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/FormulaController.java index 971d9f5e..dd3972c5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/FormulaController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/FormulaController.java @@ -19,6 +19,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -118,6 +119,7 @@ public class FormulaController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("计算公式新增") @Operation(summary = "新增一条", description = "传入Formula Obj") public R save(@Valid @RequestBody Formula addOne) { addOne.setId(null); @@ -142,6 +144,7 @@ public class FormulaController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("计算公式修改") @Operation(summary = "修改一条", description = "传入Formula Obj") public R update(@Valid @RequestBody Formula updateOne) { return R.status(service.updateById(updateOne)); @@ -182,6 +185,7 @@ public class FormulaController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("计算公式删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java index 19da83f6..edfe2c75 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -124,6 +125,7 @@ public class LocallyPlatedPartController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog(value = "局部镀零件新增") @Operation(summary = "新增一条", description = "传入LocallyPlatedPart Obj") public R save(@Valid @RequestBody LocallyPlatedPart addOne) { addOne.setId(null); @@ -148,6 +150,7 @@ public class LocallyPlatedPartController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog(value = "局部镀零件修改") @Operation(summary = "修改一条", description = "传入LocallyPlatedPart Obj") public R update(@Valid @RequestBody LocallyPlatedPart updateOne) { return R.status(service.updateById(updateOne)); @@ -188,6 +191,7 @@ public class LocallyPlatedPartController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog(value = "局部镀零件逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/MaterialQuotaController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/MaterialQuotaController.java index 950f2826..4f51b4b5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/MaterialQuotaController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/MaterialQuotaController.java @@ -20,6 +20,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -134,6 +135,7 @@ public class MaterialQuotaController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog(value = "物料定额新增") @Operation(summary = "新增一条", description = "传入MaterialQuota Obj") public R save(@Valid @RequestBody MaterialQuota addOne) { addOne.setId(null); @@ -158,6 +160,7 @@ public class MaterialQuotaController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog(value = "物料定额修改") @Operation(summary = "修改一条", description = "传入MaterialQuota Obj") public R update(@Valid @RequestBody MaterialQuota updateOne) { return R.status(service.updateById(updateOne)); @@ -198,6 +201,7 @@ public class MaterialQuotaController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog(value = "物料定额逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/OemController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/OemController.java index f6246100..bad46d12 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/OemController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/OemController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -254,6 +255,7 @@ public class OemController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("新增外协厂家") @Operation(summary = "新增一条", description = "传入Oem Obj") public R save(@Valid @RequestBody Oem addOne) { addOne.setId(null); @@ -278,6 +280,7 @@ public class OemController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("修改外协厂家") @Operation(summary = "修改一条", description = "传入Oem Obj") public R update(@Valid @RequestBody Oem updateOne) { return R.status(service.updateById(updateOne)); @@ -318,6 +321,7 @@ public class OemController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("逻辑删除外协厂家") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlanAssignSteerController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlanAssignSteerController.java index c2f8736f..fd5346b0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlanAssignSteerController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlanAssignSteerController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -139,6 +140,7 @@ public class PlanAssignSteerController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog(value = "外协分派新增") @Operation(summary = "新增一条", description = "传入PlanAssignSteer Obj") public R save(@Valid @RequestBody PlanAssignSteer addOne) { addOne.setId(null); @@ -163,6 +165,7 @@ public class PlanAssignSteerController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog(value = "外协分派修改") @Operation(summary = "修改一条", description = "传入PlanAssignSteer Obj") public R update(@Valid @RequestBody PlanAssignSteer updateOne) { return R.status(service.updateById(updateOne)); @@ -203,6 +206,7 @@ public class PlanAssignSteerController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog(value = "外协分派逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java index e06f53e3..06cb365e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java @@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.common.constant.CommonConstant; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -156,6 +157,7 @@ public class PlatingController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("[镀种] 新增") @Operation(summary = "新增一条", description = "传入Plating Obj") public R save(@Valid @RequestBody Plating addOne) { @@ -187,6 +189,7 @@ public class PlatingController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("[镀种] 修改") @Operation(summary = "修改一条", description = "传入Plating Obj") public R update(@Valid @RequestBody Plating updateOne) { @@ -237,6 +240,7 @@ public class PlatingController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("[镀种] 逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingSmallController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingSmallController.java index a167dc21..44ded6ad 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingSmallController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingSmallController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -136,6 +137,7 @@ public class PlatingSmallController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("镀种小类新增") @Operation(summary = "新增一条", description = "传入PlatingSmall Obj") public R save(@Valid @RequestBody PlatingSmall addOne) { addOne.setId(null); @@ -160,6 +162,7 @@ public class PlatingSmallController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("镀种小类修改") @Operation(summary = "修改一条", description = "传入PlatingSmall Obj") public R update(@Valid @RequestBody PlatingSmall updateOne) { return R.status(service.updateById(updateOne)); @@ -200,6 +203,7 @@ public class PlatingSmallController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("镀种小类逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProcessAbilityController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProcessAbilityController.java index 233e8d10..7a79dc8e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProcessAbilityController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProcessAbilityController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -120,6 +121,7 @@ public class ProcessAbilityController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("工艺能力新增") @Operation(summary = "新增一条", description = "传入ProcessAbility Obj") public R save(@Valid @RequestBody ProcessAbility addOne) { addOne.setId(null); @@ -144,6 +146,7 @@ public class ProcessAbilityController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("工艺能力修改") @Operation(summary = "修改一条", description = "传入ProcessAbility Obj") public R update(@Valid @RequestBody ProcessAbility updateOne) { return R.status(service.updateById(updateOne)); @@ -184,6 +187,7 @@ public class ProcessAbilityController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("工艺能力逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProdMarkController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProdMarkController.java index f4750d5e..e65cef9c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProdMarkController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProdMarkController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -145,6 +146,7 @@ public class ProdMarkController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog(value = "生产标识新增") @Operation(summary = "新增一条", description = "传入ProdMark Obj") public R save(@Valid @RequestBody ProdMark addOne) { addOne.setId(null); @@ -169,6 +171,7 @@ public class ProdMarkController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog(value = "生产标识修改") @Operation(summary = "修改一条", description = "传入ProdMark Obj") public R update(@Valid @RequestBody ProdMark updateOne) { return R.status(service.updateById(updateOne)); @@ -209,6 +212,7 @@ public class ProdMarkController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog(value = "生产标识逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/RelTeamSetUserController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/RelTeamSetUserController.java index e89a38ca..25268d76 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/RelTeamSetUserController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/RelTeamSetUserController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -121,6 +122,7 @@ public class RelTeamSetUserController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("班组用户关联新增") @Operation(summary = "新增一条", description = "传入RelTeamSetUser Obj") public R save(@Valid @RequestBody RelTeamSetUser addOne) { addOne.setId(null); @@ -145,6 +147,7 @@ public class RelTeamSetUserController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("班组用户关联修改") @Operation(summary = "修改一条", description = "传入RelTeamSetUser Obj") public R update(@Valid @RequestBody RelTeamSetUser updateOne) { return R.status(service.updateById(updateOne)); @@ -185,6 +188,7 @@ public class RelTeamSetUserController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("班组用户关联逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ShiftsController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ShiftsController.java index 4e9c9883..e67509fb 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ShiftsController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ShiftsController.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -124,6 +125,7 @@ public class ShiftsController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog(value = "班次新增一条") @Operation(summary = "新增一条", description = "传入Shifts Obj") public R save(@Valid @RequestBody Shifts addOne) { addOne.setId(null); @@ -148,6 +150,7 @@ public class ShiftsController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog(value = "班次修改一条") @Operation(summary = "修改一条", description = "传入Shifts Obj") public R update(@Valid @RequestBody Shifts updateOne) { return R.status(service.updateById(updateOne)); @@ -188,6 +191,7 @@ public class ShiftsController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog(value = "班次逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java index 6296b9de..ff708f05 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java @@ -17,6 +17,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -29,6 +30,7 @@ import org.springblade.desk.basic.excel.PlatingSmallExcel; import org.springblade.desk.basic.excel.TeamSetExcel; import org.springblade.desk.basic.pojo.entity.*; import org.springblade.desk.basic.pojo.vo.TeamSetVO; +import org.springblade.desk.basic.service.IRelTeamSetUserService; import org.springblade.desk.basic.service.IShiftsService; import org.springblade.desk.basic.service.ITeamSetService; import org.springblade.desk.basic.service.ITeamTimeService; @@ -72,6 +74,9 @@ public class TeamSetController extends BladeController { @Resource private IShiftsService shiftService; + @Resource + private IRelTeamSetUserService relTeamSetUserService; + /** * [班组] 详情 */ @@ -92,14 +97,25 @@ public class TeamSetController extends BladeController { List teams = new ArrayList<>(); QueryWrapper qw = Condition.getQueryWrapper(teamSet); TeamSet detail = service.getOne(qw); - if(detail != null){ - String teamId = detail.getTeamMemberId(); - if(null != teamId && !"".equals(teamId)){ - teams = iUserClient.userUNListByIds(teamId); - }else{ - teams = iUserClient.userUNListByIds(""); - } + + QueryWrapper qwuser = new QueryWrapper<>(); + qwuser.eq("TEAM_SET_ID", detail.getId()); + List users = relTeamSetUserService.list(qwuser); + if(null != users && users.size() > 0){ + List userIds = users.stream().map(RelTeamSetUser::getUserId).collect(Collectors.toList()); + String userId = Func.toStr(userIds); + teams = iUserClient.userUNListByIds(userId); + }else{ + teams = iUserClient.userUNListByIds(""); } +// if(detail != null){ +// String teamId = detail.getTeamMemberId(); +// if(null != teamId && !"".equals(teamId)){ +// teams = iUserClient.userUNListByIds(teamId); +// }else{ +// teams = iUserClient.userUNListByIds(""); +// } +// } return R.data(teams); } @@ -110,12 +126,22 @@ public class TeamSetController extends BladeController { List teams = new ArrayList<>(); QueryWrapper qw = Condition.getQueryWrapper(teamSet); TeamSet detail = service.getOne(qw); - if(detail != null){ - String teamId = detail.getTeamMemberId(); - if(null != teamId && !"".equals(teamId)){ - teams = iUserClient.userListByIds(teamId); - } + + QueryWrapper qwuser = new QueryWrapper<>(); + qwuser.eq("TEAM_SET_ID", detail.getId()); + List users = relTeamSetUserService.list(qwuser); + if(null != users && users.size() > 0){ + List userIds = users.stream().map(RelTeamSetUser::getUserId).collect(Collectors.toList()); + String userId = Func.toStr(userIds); + teams = iUserClient.userListByIds(userId); } + +// if(detail != null){ +// String teamId = detail.getTeamMemberId(); +// if(null != teamId && !"".equals(teamId)){ +// teams = iUserClient.userListByIds(teamId); +// } +// } return R.data(teams); } @@ -155,6 +181,7 @@ public class TeamSetController extends BladeController { } + @PostMapping("/updateUserId") @ApiOperationSupport(order = 31) @Operation(summary = "设置人员Id保存", description = "传入WorkCenter List") @@ -166,16 +193,22 @@ public class TeamSetController extends BladeController { String result = null; String team = null; if(null != teamIds){ - result = teamIds.stream() - .map(Object::toString) // 或者直接使用String::valueOf,效果相同 - .collect(Collectors.joining(",")); - - - List teams = iUserClient.userListByIds(result); - - team= teams.stream() - .map(user -> String.valueOf(user.getRealName())) - .collect(Collectors.joining(",")); + for(Long teamId:teamIds){ + RelTeamSetUser relTeamSetUser = new RelTeamSetUser(); + relTeamSetUser.setTeamSetId(detail.getId()); + relTeamSetUser.setUserId(teamId); + relTeamSetUserService.save(relTeamSetUser); + } +// result = teamIds.stream() +// .map(Object::toString) // 或者直接使用String::valueOf,效果相同 +// .collect(Collectors.joining(",")); +// +// +// List teams = iUserClient.userListByIds(result); +// +// team= teams.stream() +// .map(user -> String.valueOf(user.getRealName())) +// .collect(Collectors.joining(",")); } detail.setTeamMemberId(result); @@ -354,6 +387,7 @@ public class TeamSetController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("班组新增") @Operation(summary = "新增一条", description = "传入TeamSet Obj") public R save(@Valid @RequestBody TeamSet addOne) { addOne.setId(null); @@ -382,6 +416,7 @@ public class TeamSetController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("班组修改") @Operation(summary = "修改一条", description = "传入TeamSet Obj") public R update(@Valid @RequestBody TeamSet updateOne) { R user= iUserClient.userInfoById(updateOne.getDispatcher()); @@ -429,6 +464,7 @@ public class TeamSetController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("班组逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java index 7ddcc65a..17d52fb2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java @@ -17,6 +17,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -25,15 +26,9 @@ import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.desk.basic.constant.BAModuleConst; import org.springblade.desk.basic.excel.WorkCenterExcel; -import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity; -import org.springblade.desk.basic.pojo.entity.PlatingSmall; -import org.springblade.desk.basic.pojo.entity.TeamSet; -import org.springblade.desk.basic.pojo.entity.WorkCenter; +import org.springblade.desk.basic.pojo.entity.*; import org.springblade.desk.basic.pojo.vo.WorkCenterVO; -import org.springblade.desk.basic.service.ICraftAbilityService; -import org.springblade.desk.basic.service.IOemCraftAbilityService; -import org.springblade.desk.basic.service.ITeamSetService; -import org.springblade.desk.basic.service.IWorkCenterService; +import org.springblade.desk.basic.service.*; import org.springblade.desk.basic.util.ExcelExtUtil; import org.springblade.desk.basic.wrapper.WorkCenterWrapper; import org.springblade.scheduling.pojo.entity.CraftAbilityEntity; @@ -75,6 +70,8 @@ public class WorkCenterController extends BladeController { private IOemCraftAbilityService oemCraftAbilityService; @Resource private IUserClient iUserClient; + @Resource + private ICenterTeamService teamCenterService; /** * [作业中心] 详情 */ @@ -155,6 +152,7 @@ public class WorkCenterController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("作业中心新增") @Operation(summary = "新增一条", description = "传入WorkCenter Obj") public R save(@Valid @RequestBody WorkCenter addOne) { addOne.setId(null); @@ -181,19 +179,35 @@ public class WorkCenterController extends BladeController { List teams = new ArrayList<>(); QueryWrapper qw = Condition.getQueryWrapper(workCenter); WorkCenter detail = service.getOne(qw); - if(detail != null){ - String teamId = detail.getTeamId(); - if(null != teamId && !"".equals(teamId)){ - List ids = Func.toLongList(teamId); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.notIn("id",ids); - teams = teamService.list(queryWrapper); - }else{ - QueryWrapper queryWrapper = new QueryWrapper<>(); - teams = teamService.list(queryWrapper); - } + QueryWrapper qwteam = new QueryWrapper<>(); + qwteam.eq("WC_ID",detail.getId()); + List teamList = teamCenterService.list(qwteam); + List ids = new ArrayList<>(); + if(null != teamList && teamList.size() > 0){ + ids = teamList.stream().map(CenterTeam::getTsId).collect(Collectors.toList()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.notIn("id",ids); + teams = teamService.list(queryWrapper); + }else{ + QueryWrapper queryWrapper = new QueryWrapper<>(); + teams = teamService.list(queryWrapper); } + + +// if(detail != null){ +// String teamId = detail.getTeamId(); +// if(null != teamId && !"".equals(teamId)){ +// List ids = Func.toLongList(teamId); +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.notIn("id",ids); +// teams = teamService.list(queryWrapper); +// }else{ +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// teams = teamService.list(queryWrapper); +// } +// +// } return R.data(teams); } @@ -204,15 +218,27 @@ public class WorkCenterController extends BladeController { List teams = new ArrayList<>(); QueryWrapper qw = Condition.getQueryWrapper(workCenter); WorkCenter detail = service.getOne(qw); - if(detail != null){ - String teamId = detail.getTeamId(); - if(null != teamId && !"".equals(teamId)){ - List ids = Func.toLongList(teamId); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",ids); - teams = teamService.list(queryWrapper); - } + + QueryWrapper qwteam = new QueryWrapper<>(); + qwteam.eq("WC_ID",detail.getId()); + List teamList = teamCenterService.list(qwteam); + List ids = new ArrayList<>(); + if(null != teamList && teamList.size() > 0){ + ids = teamList.stream().map(CenterTeam::getTsId).collect(Collectors.toList()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id",ids); + teams = teamService.list(queryWrapper); } + +// if(detail != null){ +// String teamId = detail.getTeamId(); +// if(null != teamId && !"".equals(teamId)){ +// List ids = Func.toLongList(teamId); +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.in("id",ids); +// teams = teamService.list(queryWrapper); +// } +// } return R.data(teams); } @@ -249,7 +275,6 @@ public class WorkCenterController extends BladeController { return R.data(teams); } - @PostMapping("/updateTeamId") @ApiOperationSupport(order = 31) @Operation(summary = "设置班组Id保存", description = "传入WorkCenter List") @@ -261,17 +286,25 @@ public class WorkCenterController extends BladeController { String result = null; String team = null; if(null != teamIds){ - result = teamIds.stream() - .map(Object::toString) // 或者直接使用String::valueOf,效果相同 - .collect(Collectors.joining(",")); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",teamIds); - List teams = teamService.list(queryWrapper); + for(Long teamId:teamIds){ + CenterTeam centerteam = new CenterTeam(); + centerteam.setWcId(detail.getId()); + centerteam.setTsId(teamId); + teamCenterService.save(centerteam); + } - team= teams.stream() - .map(user -> String.valueOf(user.getTsName())) - .collect(Collectors.joining(",")); +// result = teamIds.stream() +// .map(Object::toString) // 或者直接使用String::valueOf,效果相同 +// .collect(Collectors.joining(",")); +// +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.in("id",teamIds); +// List teams = teamService.list(queryWrapper); +// +// team= teams.stream() +// .map(user -> String.valueOf(user.getTsName())) +// .collect(Collectors.joining(",")); } detail.setTeamId(result); @@ -349,6 +382,7 @@ public class WorkCenterController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("作业中心修改") @Operation(summary = "修改一条", description = "传入WorkCenter Obj") public R update(@Valid @RequestBody WorkCenter updateOne) { return R.status(service.updateById(updateOne)); @@ -389,6 +423,7 @@ public class WorkCenterController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("作业中心逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkTankController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkTankController.java index bf6d3cf3..ee607a8f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkTankController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkTankController.java @@ -17,6 +17,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -143,6 +144,7 @@ public class WorkTankController extends BladeController { */ @PostMapping("/save") @ApiOperationSupport(order = 30) + @ApiLog("作业槽新增") @Operation(summary = "新增一条", description = "传入WorkTank Obj") public R save(@Valid @RequestBody WorkTank addOne) { @@ -175,6 +177,7 @@ public class WorkTankController extends BladeController { */ @PostMapping("/update") @ApiOperationSupport(order = 40) + @ApiLog("作业槽修改") @Operation(summary = "修改一条", description = "传入WorkTank Obj") public R update(@Valid @RequestBody WorkTank updateOne) { @@ -227,6 +230,7 @@ public class WorkTankController extends BladeController { */ @PostMapping("/remove") @ApiOperationSupport(order = 61) + @ApiLog("作业槽逻辑删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(service.deleteLogic(Func.toLongList(ids))); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/WorkCenterClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/WorkCenterClient.java index 84a5ae73..a8e2e1ad 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/WorkCenterClient.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/WorkCenterClient.java @@ -1,19 +1,25 @@ package org.springblade.desk.basic.feign; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.v3.oas.annotations.Hidden; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.desk.basic.pojo.entity.BasicClazz; +import org.springblade.desk.basic.pojo.entity.RelTeamSetUser; import org.springblade.desk.basic.pojo.entity.TeamSet; import org.springblade.desk.basic.pojo.entity.WorkCenter; import org.springblade.desk.basic.service.IBasicClazzService; +import org.springblade.desk.basic.service.IRelTeamSetUserService; import org.springblade.desk.basic.service.ITeamSetService; import org.springblade.desk.basic.service.IWorkCenterService; import org.springframework.web.bind.annotation.RestController; +import java.util.List; +import java.util.stream.Collectors; + /** * 作业中心 Feign接口类 * @@ -30,6 +36,8 @@ public class WorkCenterClient implements IWorkCenterClient { private ITeamSetService service; @Resource private IBasicClazzService clazzService; + @Resource + private IRelTeamSetUserService relTeamSetUserService; @Override public R getById(Long workCenterId) { WorkCenter workCenter = workCenterService.getById(workCenterId); @@ -38,7 +46,20 @@ public class WorkCenterClient implements IWorkCenterClient { @Override public R getTeamSetById(Long id) { - return R.data(service.getById(id)); + TeamSet teamSet =service.getById(id); + QueryWrapper qwuser = new QueryWrapper<>(); + qwuser.eq("TEAM_SET_ID", id); + List users = relTeamSetUserService.list(qwuser); + if(null != users && users.size() > 0){ + String userIds = users.stream() + .map(RelTeamSetUser::getUserId) + .map(Object::toString) // 或者直接使用String::valueOf,效果相同 + .collect(Collectors.joining(",")); + teamSet.setTeamId(userIds); + } + + + return R.data(teamSet); } @Override diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.java new file mode 100644 index 00000000..b2d3dc25 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.java @@ -0,0 +1,25 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.basic.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; +import org.springblade.desk.basic.excel.TeamSetExcel; +import org.springblade.desk.basic.pojo.entity.CenterTeam; +import org.springblade.desk.basic.pojo.entity.TeamSet; +import org.springblade.desk.basic.pojo.vo.TeamSetVO; + +import java.util.List; + +/** + * + * + * @author Tom Shuo + * @since 2025-12-16 + */ +public interface CenterTeamMapper extends BaseMapper { + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.xml new file mode 100644 index 00000000..b66c4a77 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CenterTeamMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.java index 3889e6b8..5f273966 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.java @@ -62,4 +62,8 @@ public interface CraftAbilityMapper extends BaseMapper { */ List export(@Param("ew") Wrapper queryWrapper); + + CraftAbilityEntity selectOldMesCraftAbilityByOldCaId(@Param("caId") Long caId); + + CraftAbilityEntity selectByCaCode(@Param("caCode") String caCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.xml index ebae4858..e485b0aa 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CraftAbilityMapper.xml @@ -27,5 +27,12 @@ + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICenterTeamService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICenterTeamService.java new file mode 100644 index 00000000..081d9bc2 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICenterTeamService.java @@ -0,0 +1,27 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.basic.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.basic.excel.TeamSetExcel; +import org.springblade.desk.basic.pojo.entity.CenterTeam; +import org.springblade.desk.basic.pojo.entity.TeamSet; +import org.springblade.desk.basic.pojo.vo.TeamSetVO; +import org.springblade.system.pojo.entity.User; + +import java.util.List; + +/** + * + * + * @author Tom Shuo + * @since 2025-12-16 + */ +public interface ICenterTeamService extends BaseService { + + CenterTeam getByTsId(Long makeTeam); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICraftAbilityService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICraftAbilityService.java index 5f1b59c5..7b102a4a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICraftAbilityService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICraftAbilityService.java @@ -60,4 +60,17 @@ public interface ICraftAbilityService extends BaseService { */ List export(Wrapper queryWrapper); + /** + * 根据老mes工艺能力ID查询 + * @param caId + * @return + */ + CraftAbilityEntity selectOldMesCraftAbilityByOldCaId(Long caId); + + /** + * 根据工艺能力编码查询 + * @param caCode + * @return + */ + CraftAbilityEntity selectByCaCode(String caCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IRelTeamSetUserService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IRelTeamSetUserService.java index c4b75bf6..65fe2b94 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IRelTeamSetUserService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IRelTeamSetUserService.java @@ -41,4 +41,11 @@ public interface IRelTeamSetUserService extends BaseService { * @param vo */ void setVOValue(RelTeamSetUserVO vo); + + /** + * 获取班组id + * @param userId + * @return + */ + List getTeamId(Long userId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IUserRightService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IUserRightService.java index 046cf4b1..e404ecbf 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IUserRightService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IUserRightService.java @@ -41,4 +41,11 @@ public interface IUserRightService extends BaseService { * @param vo */ void setVOValue(UserRightVO vo); + + /** + * 获取团队id + * @param userId + * @return + */ + List getTeamId(Long userId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CenterTeamServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CenterTeamServiceImpl.java new file mode 100644 index 00000000..4003c0b4 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CenterTeamServiceImpl.java @@ -0,0 +1,55 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.basic.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.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import jakarta.annotation.Resource; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.tool.api.R; +import org.springblade.desk.basic.excel.TeamSetExcel; +import org.springblade.desk.basic.mapper.CenterTeamMapper; +import org.springblade.desk.basic.mapper.TeamSetMapper; +import org.springblade.desk.basic.pojo.entity.CenterTeam; +import org.springblade.desk.basic.pojo.entity.RelTeamSetUser; +import org.springblade.desk.basic.pojo.entity.TeamSet; +import org.springblade.desk.basic.pojo.vo.TeamSetVO; +import org.springblade.desk.basic.service.ICenterTeamService; +import org.springblade.desk.basic.service.IRelTeamSetUserService; +import org.springblade.desk.basic.service.ITeamSetService; +import org.springblade.system.feign.IUserClient; +import org.springblade.system.pojo.entity.User; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * + * + * @author Tom Shuo + * @since 2025-12-16 + */ +@Service +@Data +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class CenterTeamServiceImpl extends BaseServiceImpl implements ICenterTeamService { + + + @Override + public CenterTeam getByTsId(Long makeTeam) { + List list = this.list(Wrappers.lambdaQuery(CenterTeam.class).eq(CenterTeam::getTsId, makeTeam)); + if (CollectionUtils.isEmpty(list)) { + return null; + } + return list.get(0); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CraftAbilityServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CraftAbilityServiceImpl.java index 0aad84f2..df55718b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CraftAbilityServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CraftAbilityServiceImpl.java @@ -62,4 +62,14 @@ public class CraftAbilityServiceImpl extends BaseServiceImpl getTeamId(Long userId) { + List relTeamSetUsers = this.list(Wrappers.lambdaQuery(RelTeamSetUser.class).eq(RelTeamSetUser::getUserId, userId)); + if (CollectionUtils.isEmpty(relTeamSetUsers)) { + return null; + } + return relTeamSetUsers.stream().map(RelTeamSetUser::getTeamSetId).toList(); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/UserRightServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/UserRightServiceImpl.java index 527080ae..a909b929 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/UserRightServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/UserRightServiceImpl.java @@ -5,6 +5,8 @@ package org.springblade.desk.basic.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import jakarta.annotation.Resource; import lombok.AllArgsConstructor; import lombok.Data; @@ -12,6 +14,7 @@ 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.basic.constant.UserRightConst; import org.springblade.desk.basic.excel.UserRightExcel; import org.springblade.desk.basic.mapper.UserRightMapper; import org.springblade.desk.basic.pojo.entity.UserRight; @@ -66,4 +69,13 @@ public class UserRightServiceImpl extends BaseServiceImpl getTeamId(Long userId) { + List bsTeamSet = this.list(Wrappers.lambdaQuery(UserRight.class).eq(UserRight::getUserId, userId).eq(UserRight::getUrType, UserRightConst.UR_TYPE_TEAM_SET)); + if (CollectionUtils.isEmpty(bsTeamSet)) { + return null; + } + return bsTeamSet.stream().map(UserRight::getTheId).toList(); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/wrapper/CenterTeamWrapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/wrapper/CenterTeamWrapper.java new file mode 100644 index 00000000..23879920 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/wrapper/CenterTeamWrapper.java @@ -0,0 +1,38 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.basic.wrapper; + +import org.springblade.core.mp.support.BaseEntityWrapper; +import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.desk.basic.pojo.entity.CenterTeam; +import org.springblade.desk.basic.pojo.entity.TeamSet; +import org.springblade.desk.basic.pojo.vo.CenterTeamVO; +import org.springblade.desk.basic.pojo.vo.TeamSetVO; + +import java.util.Objects; + +/** + * [班组] 包装类,返回视图层所需的字段 + * + * @author Tom Shuo + * @since 2025-12-16 + */ +public class CenterTeamWrapper extends BaseEntityWrapper { + + public static CenterTeamWrapper build() { + return new CenterTeamWrapper(); + } + + @Override + public CenterTeamVO entityVO(CenterTeam teamSet) { + CenterTeamVO VO = Objects.requireNonNull(BeanUtil.copyProperties(teamSet, CenterTeamVO.class)); + + //User createUser = UserCache.getUser(teamSet.getCreateUser()); + //User updateUser = UserCache.getUser(teamSet.getUpdateUser()); + //teamSetVO.setCreateUserName(createUser.getName()); + //teamSetVO.setUpdateUserName(updateUser.getName()); + + return VO; + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartController.java index 6211bad6..5c78154d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartController.java @@ -262,5 +262,19 @@ public class DsPartController extends BladeController { } + /** + * 测试接口 + */ + @GetMapping("/test") + public R test(@RequestParam String partCode, + @RequestParam String roamNo, + @RequestParam String rank, + @RequestParam String partVersion) { + + return R.data(dsPartService.selectPartCraft(partCode,roamNo,rank,partVersion)); + } + + + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskBillController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskBillController.java index 7dc87cf0..8b50aeb9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskBillController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskBillController.java @@ -202,4 +202,14 @@ public class DsTaskBillController extends BladeController { return R.data(bsFillingDetailService.listFillingDetail(busId,BsFillingDetailEntity.DS_TASK_BILL)); } + /** + * 外协任务单表 详情 + */ + @GetMapping("/listOemFillingDetail") + @ApiOperationSupport(order = 12) + @Operation(summary = "外协任务单表", description = "传入dsTaskBill") + public R listOemFillingDetail(@RequestParam Long busId) { + return R.data(bsFillingDetailService.listFillingDetail(busId, BsFillingDetailEntity.OEM_PROCESS_TASK)); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskingController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskingController.java index 76f9c235..19c668af 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskingController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskingController.java @@ -25,6 +25,7 @@ */ package org.springblade.desk.dashboard.controller; +import io.protostuff.Request; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -230,8 +231,17 @@ public class DsTaskingController extends BladeController { @GetMapping("/partDetail") @ApiOperationSupport(order = 1) @Operation(summary = "零件信息", description = "传入dsCraft") - public R partDetail(@RequestParam Long taskId,@RequestParam String version) { - DsPartSynthesisVO detail = dsTaskingService.getPartDetail(taskId,version); + public R partDetail(@RequestParam(required = false) Long taskId, + @RequestParam(required = false) String partCode, + @RequestParam String version) { + boolean hasTask = taskId != null; + boolean hasPart = partCode != null && !partCode.trim().isEmpty(); + + if (hasTask == hasPart) { + throw new IllegalArgumentException("taskId 和 partCode 必须且只能有一个有值"); + } + + DsPartSynthesisVO detail = dsTaskingService.getPartDetail(taskId,version,partCode); return R.data(detail); } @@ -241,11 +251,19 @@ public class DsTaskingController extends BladeController { @GetMapping("/processAuthorized") @ApiOperationSupport(order = 1) @Operation(summary = "工艺编制", description = "传入dsCraft") - public R processAuthorized(@RequestParam Long taskId, + public R processAuthorized(@RequestParam(required = false) Long taskId, + @RequestParam(required = false) String partCode, @RequestParam(required = false) String rank, @RequestParam String version) { - DsPartAuthorizedVO detail = dsTaskingService.processAuthorized(taskId,rank,version); + boolean hasTask = taskId != null; + boolean hasPart = partCode != null && !partCode.trim().isEmpty(); + + if (hasTask == hasPart) { + throw new IllegalArgumentException("taskId 和 partCode 必须且只能有一个有值"); + } + + DsPartAuthorizedVO detail = dsTaskingService.processAuthorized(taskId,partCode,rank,version); return R.data(detail); } @@ -383,4 +401,14 @@ public class DsTaskingController extends BladeController { } + /** + * 零件信息表 详情-工艺详情 + */ + @GetMapping("/syncTasking") + public R craftDetail() { + boolean b = dsTaskingService.reworkTask(); + return R.data(b); + } + + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/OrderBoxClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/OrderBoxClient.java new file mode 100644 index 00000000..32c87b00 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/OrderBoxClient.java @@ -0,0 +1,28 @@ +package org.springblade.desk.dashboard.feign; + +import io.swagger.v3.oas.annotations.Hidden; +import jakarta.annotation.Resource; +import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; +import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity; +import org.springblade.desk.dashboard.service.IDsPartRelationService; +import org.springblade.desk.dashboard.service.IDsPartService; +import org.springblade.desk.dashboard.service.IDsTaskingService; +import org.springblade.desk.logistics.service.IStorageMonitoringService; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@Hidden() +public class OrderBoxClient implements IOrderBoxClient { + + @Resource + private IStorageMonitoringService storageMonitoringService; + + + @Override + public void monitoringStation() { + storageMonitoringService.monitoringStation(); + } +} + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/PartClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/PartClient.java index 7426b9b1..3711f56c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/PartClient.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/PartClient.java @@ -47,8 +47,8 @@ public class PartClient implements IPartClient { } @Override - public void syncPart() { - partService.syncPart(); + public void syncTasking() { + taskingService.syncTasking(); } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsProcessSetMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsProcessSetMapper.java index cc752b81..82bad3e4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsProcessSetMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsProcessSetMapper.java @@ -32,6 +32,7 @@ import org.apache.ibatis.annotations.Param; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; import org.springblade.desk.dashboard.pojo.vo.BsProcessSetVO; import org.springblade.desk.dashboard.excel.BsProcessSetExcel; +import org.springblade.scheduling.pojo.entity.ProcessSetEntity; import java.util.List; @@ -64,4 +65,6 @@ public interface BsProcessSetMapper extends BaseMapper { BsProcessSetEntity selectBsProcessSetByProcessCode(@Param("processCode")String processCode); List selectAll(); + + BsProcessSetEntity selectOldMesProcessSetByOldPpsId(@Param("oldPpsId") Long oldPpsId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml index f80740cf..7e45fd4b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml @@ -72,6 +72,7 @@ select * from DS_CRAFT where is_deleted = 0 and PART_ID = #{partId} and RANK = #{rank} + and ROAM_NO = #{roamNo} SELECT * FROM DS_CRAFT WHERE PART_ID=#{partCode} AND PART_VERSIONS=#{partVersion} and ROWNUM = 1 + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java index 8498ebb8..82c0f289 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java @@ -71,7 +71,7 @@ public interface DsCraftMapper extends BaseMapper { List selectCraft(@Param("partId")Long partId,@Param("rank")String rank); - DsCraftEntity getPartCraft(@Param("partId")Long partId, @Param("rank")String rank); + DsCraftEntity getPartCraft(@Param("partId")Long partId, @Param("rank")String rank,@Param("roamNo") String roamNo); DsCraftEntity getReworkCraft(@Param("partId")Long partId,@Param("changeNo") String changeNo); /** @@ -81,4 +81,12 @@ public interface DsCraftMapper extends BaseMapper { * @return */ DsCraftEntity selectDsCraftByPartCodeAndVersion(@Param("partCode")Long partCode,@Param("partVersion")String partVersion); + + List selectOldMesCraftByOldMesPartId(@Param("oldMesPartId") Long oldMesPartId); + + List selectDsCraftByPartIdAndRoamNo(@Param("partId") Long partId,@Param("roamNo") String roamNo); + + DsCraftEntity selectDscraftByReworkOrder(@Param("changeNo") String changeNo); + + List selectDsCraftByPartIdAndRank(@Param("partId")Long partId, @Param("rank")String rank); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartBasicsMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartBasicsMapper.java new file mode 100644 index 00000000..d0572f6d --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartBasicsMapper.java @@ -0,0 +1,42 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.dashboard.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springblade.desk.dashboard.pojo.entity.DsPartBasicsEntity; + +/** + * 零件基础信息表 Mapper 接口 + * + * @author BladeX + * @since 2025-11-12 + */ +public interface DsPartBasicsMapper extends BaseMapper { + + + DsPartBasicsEntity selectPartCode(@Param("partCode") String partCode); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java index 2614a79a..6095ff0f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java @@ -26,6 +26,7 @@ package org.springblade.desk.dashboard.mapper; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; +import org.springblade.desk.dashboard.pojo.entity.DsPartSub; import org.springblade.desk.dashboard.pojo.vo.*; import org.springblade.desk.dashboard.excel.DsPartExcel; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -76,7 +77,7 @@ public interface DsPartMapper extends BaseMapper { * @param partCode * @return */ - DsPartEntity selectDsPartByPatCode(@Param("partCode")String partCode); + List selectDsPartByPatCode(@Param("partCode")String partCode); /** * 零件过期时间区间查询 @@ -148,4 +149,8 @@ public interface DsPartMapper extends BaseMapper { List selectDsPartVersionByIds(@Param("ids") List idList); List selectPartByDate(@Param("startDate") Date startDate,@Param("endDate") Date endDate); + + List selectDsPartSub(@Param("partCode") String partCode); + + List selectListPartByCodeLike(@Param("zPartCode") String zPartCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java index d2b42638..3ae4c87b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java @@ -63,5 +63,9 @@ public interface DsPartRelationMapper extends BaseMapper { List selectDsPartRelationByPartId(@Param("partId")Long partId); - List selectDsPartRelationByPartCodeAndChildPartCode(@Param("bPartCode")String bPartCode, @Param("zPartCode")String zPartCode); + List selectDsPartRelationByPartCodeAndChildPartCode(@Param("bPartCode")String bPartCode, + @Param("zPartCode")String zPartCode, + @Param("bPartVersion")String bPartVersion, + @Param("zPartVersion") String zPartVersion, + @Param("zPartIdList")List zPartIdList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsProcessMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsProcessMapper.java index dd02582a..0d359039 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsProcessMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsProcessMapper.java @@ -73,4 +73,6 @@ public interface DsProcessMapper extends BaseMapper { * @return */ List selectDsProcessByIds(@Param("processIds")List processIds); + + List selectOldMesProcessByOldMesCraftId(@Param("oldMesCraftId") Long oldMesCraftId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsTaskingMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsTaskingMapper.java index 5744db14..9b953202 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsTaskingMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsTaskingMapper.java @@ -25,6 +25,7 @@ */ package org.springblade.desk.dashboard.mapper; +import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.pojo.entity.DsTaskingEntity; import org.springblade.desk.dashboard.pojo.vo.DsTaskingVO; import org.springblade.desk.dashboard.excel.DsTaskingExcel; @@ -32,6 +33,8 @@ 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.Date; import java.util.List; /** @@ -105,4 +108,25 @@ public interface DsTaskingMapper extends BaseMapper { @Param("reworkOrder")String reworkOrder, @Param("batchNo")String batchNo); + + /** + * 获取最近的同步时间 + * @return + */ + DsTaskingEntity getMaxSyncTime(); + + /** + * 查询老mes + * @param startTime + * @param endTime + * @return + */ + List selectOldMesTasking(@Param("startTime") Date startTime,@Param("endTime") Date endTime); + + /** + * 获取老mes的零件 + * @param partCode + * @return + */ + DsPartEntity getOldMesPartByPartCode(@Param("partCode") String partCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartBasicsMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartBasicsMapper.xml new file mode 100644 index 00000000..ed740816 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartBasicsMapper.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml index 438b0647..cbdce1b4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml @@ -140,15 +140,15 @@ @@ -343,7 +344,8 @@ p.DOC_LINK as bDocLink, c.PART_CODE as zPartCode, c.PART_NAME as zPartName, - c.DOC_LINK as zDocLink + c.DOC_LINK as zDocLink, + c.QUOTA as quota FROM DS_PART_RELATION r LEFT JOIN DS_PART p ON r.PART_ID = p.ID LEFT JOIN DS_PART c ON r.CHILD_PART_ID = c.ID @@ -380,6 +382,22 @@ WHERE update_time BETWEEN TO_DATE(#{startDate}, 'yyyy-mm-dd hh24:mi:ss') AND TO_DATE(#{endDate}, 'yyyy-mm-dd hh24:mi:ss'); + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml index b979f296..15aed665 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml @@ -36,24 +36,49 @@ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PrReworkProcessMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PrReworkProcessMapper.java index 75931eaf..eb64af32 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PrReworkProcessMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PrReworkProcessMapper.java @@ -60,7 +60,12 @@ public interface PrReworkProcessMapper extends BaseMapper */ List exportPrReworkProcess(@Param("ew") Wrapper queryWrapper); - List selectPrReworkProcess(@Param("reworkOrder")String reworkOrder, - @Param("partCode")String partCode, - @Param("batchNo")String batchNo); + List selectPrReworkProcess(@Param("reworkOrder") String reworkOrder, + @Param("partCode") String partCode, + @Param("batchNo") String batchNo); + + List selectPrReworkProcessReworkNo(@Param("reworkOrder") String reworkOrder, + @Param("partCode") String partCode, + @Param("batchNo") String batchNo, + @Param("reworkNo") String reworkNo); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMapper.xml index 1bbf67e6..3cfe562b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessMapper.xml @@ -48,5 +48,9 @@ #{id} + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessSetMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessSetMapper.xml index d303d1fd..d27ef025 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessSetMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ProcessSetMapper.xml @@ -47,5 +47,10 @@ + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ReworkProcessMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ReworkProcessMapper.xml index 215614cf..b5d3f8f9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ReworkProcessMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/ReworkProcessMapper.xml @@ -51,6 +51,15 @@ and REWORK_CODE = #{reworkOrder} and PART_CODE = #{partCode} and BATCH_NO = #{batchNo} + order by PROCESS_NO + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml index 2c70e397..1524f020 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml @@ -123,5 +123,18 @@ and BATCH_NO = #{batchNo} and REWORK_ORDER = #{reworkOrder} + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsProcessSetService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsProcessSetService.java index 0f3f7e5e..079c37ad 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsProcessSetService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsProcessSetService.java @@ -31,6 +31,7 @@ import org.springblade.core.mp.base.BaseService; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; import org.springblade.desk.dashboard.pojo.vo.BsProcessSetVO; import org.springblade.desk.dashboard.excel.BsProcessSetExcel; +import org.springblade.scheduling.pojo.entity.ProcessSetEntity; import java.util.List; /** @@ -86,4 +87,11 @@ public interface IBsProcessSetService extends BaseService { * @return */ List getProcessSetList(); + + /** + * 根据老mes的工序设置ID 查询 + * @param oldPpsId + * @return + */ + BsProcessSetEntity selectOldMesProcessSetByOldPpsId(Long oldPpsId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java index 8103fd94..b04c7e10 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java @@ -125,9 +125,10 @@ public interface IDsCraftService extends BaseService { * 获取零件工艺 * @param partId 零件号 * @param rank 工艺等级 + * @param roamNo B号 * @return */ - DsCraftEntity getPartCraft(Long partId, String rank); + DsCraftEntity getPartCraft(Long partId, String rank,String roamNo); /** * 获取返工工艺 @@ -184,4 +185,34 @@ public interface IDsCraftService extends BaseService { * @return */ DsCraftEntity selectDsCraftByPartCodeAndVersion(Long partCode,String partVersion); + + /** + * 根据老mes partId查询老mes工艺 + * @param oldMesPartId + * @return + */ + List selectOldMesCraftByOldMesPartId(Long oldMesPartId); + + /** + * 根据零件ID和B号查询工艺 + * @param partId + * @param roamNo + * @return + */ + List selectDsCraftByPartIdAndRoamNo(Long partId, String roamNo); + + /** + * 获取返工工艺 + * @param changeNo + * @return + */ + DsCraftEntity getReworkCraft(String changeNo); + + /** + * 根据零件ID 工艺等级查询 + * @param partId + * @param rank + * @return + */ + List getPartCraft(Long partId, String rank); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartBasicsService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartBasicsService.java new file mode 100644 index 00000000..255d1289 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartBasicsService.java @@ -0,0 +1,45 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.dashboard.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.dashboard.pojo.entity.DsPartBasicsEntity; + +/** + * 零件基础信息表 服务类 + * + * @author BladeX + * @since 2025-11-12 + */ +public interface IDsPartBasicsService extends BaseService { + + /** + * 根据零件号查询 + * @param partCode + * @return + */ + DsPartBasicsEntity selectByPartCode(String partCode); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java index 22c6b879..92e59235 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java @@ -70,7 +70,10 @@ public interface IDsPartRelationService extends BaseService selectDsPartRelationByPartCodeAndChildPartCode(String bPartCode, String zPartCode); + List selectDsPartRelationByPartCodeAndChildPartCode + (String bPartCode, String zPartCode, String bPartVersion, String zPartVersion,List zPartId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java index f7c92c51..db18783c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java @@ -29,8 +29,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import org.springblade.desk.dashboard.excel.DsPartExcel; -import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; -import org.springblade.desk.dashboard.pojo.entity.DsProcessProjectEntity; +import org.springblade.desk.dashboard.pojo.entity.*; import org.springblade.desk.dashboard.pojo.vo.*; import java.util.List; @@ -219,7 +218,7 @@ public interface IDsPartService extends BaseService { * @param partCode * @return */ - DsPartEntity selectDsPartByPatCode(String partCode); + List selectDsPartByPatCode(String partCode); /** * 根据零件号、工序ID、版本号、工艺级别查询对应的检验项目 @@ -227,7 +226,47 @@ public interface IDsPartService extends BaseService { * @param orders 工序编号 * @param partVersion 版本号 * @param rank 工艺级别 + * @param roamNo B号 * @return 检验项目列表 */ - List selectDsProcessProjectByPartNoAndPpsId(String partCode, String orders, String partVersion, String rank); + List selectDsProcessProjectByPartNoAndPpsId(String partCode, String orders, String partVersion, String rank,String roamNo); + + /** + * 查询老mes的子件信息 + * @param partCode + * @return + */ + List selectDsPartSub(String partCode); + + List selectDsPartVersionByIds(List idList); + + /** + * 根据 零件号 b号 工艺级别 版本号 查询零件工艺信息 + * 版本号为空查最新版本 + * 工艺级别为空返回二级工艺 + * @param partCode 零件号 + * @param roamNo B号 + * @param rank 工艺级别 + * @param partVersion 版本号 + * @return + */ + PartCraftVO selectPartCraft(String partCode, String roamNo, String rank, String partVersion); + + + /** + * 根据 零件号 返工单号 查询零件工艺信息 + * @param partCode 零件号 + * @param reworkOrder 返工单号 + * @param batchNo 批次号 + * @param reworkNo 路线编号 + * @return + */ + List selectReworkPartCraft(String partCode, String reworkOrder,String batchNo,String reworkNo); + + /** + * 获取零件最新版本号 + * @param partCode + * @return + */ + DsPartVersionEntity getNewPartVersion(String partCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartVersionService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartVersionService.java index bea2d201..0921427e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartVersionService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartVersionService.java @@ -26,6 +26,7 @@ package org.springblade.desk.dashboard.service; import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; import java.util.List; @@ -66,4 +67,11 @@ public interface IDsPartVersionService extends BaseService * @return */ DsPartVersionEntity selectByPartCodeAndPartVersion(String partCode, String partVersion); + + /** + * 获取零件的最新版本号 + * @param dsPartList + * @return + */ + List selectListByPartCode(List dsPartList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessService.java index 7b82a4a2..4f727183 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsProcessService.java @@ -90,4 +90,11 @@ public interface IDsProcessService extends BaseService { * @return */ boolean addOrEdit(DsCraftEntity craft, List processList, List processDeleteIds, List projectDeleteIds); + + /** + * 根据老mes的工艺id查询老mes的工序 + * @param oldMesCraftId + * @return + */ + List selectOldMesProcessByOldMesCraftId(Long oldMesCraftId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskingService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskingService.java index 1471874e..7189cec2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskingService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskingService.java @@ -136,17 +136,19 @@ public interface IDsTaskingService extends BaseService { * 零件 子件 详情 * @param taskId 零件工艺信息ID * @param version 版本号 + * @param partCode 零件号 * @return 零件详细信息 */ - DsPartSynthesisVO getPartDetail(Long taskId, String version); + DsPartSynthesisVO getPartDetail(Long taskId, String version, String partCode); /** * 工艺编制 * @param taskId 任务ID + * @param partCode 零件号 * @param rank 工艺等级 * @return version 版本号 */ - DsPartAuthorizedVO processAuthorized(Long taskId, String rank,String version); + DsPartAuthorizedVO processAuthorized(Long taskId, String partCode, String rank, String version); /** @@ -220,4 +222,12 @@ public interface IDsTaskingService extends BaseService { * @return */ boolean authorizedPart(DsPartEntity dsPart, List zPartList); + + + /** + * 同步任务 + * @return + */ + boolean syncTasking(); + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IPrReworkProcessService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IPrReworkProcessService.java index ceda52ed..2e8e2df1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IPrReworkProcessService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IPrReworkProcessService.java @@ -71,4 +71,14 @@ public interface IPrReworkProcessService extends BaseService selectPrReworkProcess(String reworkOrder, String partCode, String batchNo); JSONArray treeProcess(ReworkProcessDTO prReworkProcess); + + /** + * 获取返工工序 + * @param reworkOrder + * @param partCode + * @param batchNo + * @param reworkNo + * @return + */ + List selectPrReworkProcess(String reworkOrder, String partCode, String batchNo,String reworkNo); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/BsProcessSetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/BsProcessSetServiceImpl.java index 96854756..1e503f50 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/BsProcessSetServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/BsProcessSetServiceImpl.java @@ -36,6 +36,7 @@ import org.springblade.desk.dashboard.mapper.BsProcessSetMapper; import org.springblade.desk.dashboard.service.IBsProcessSetService; import org.springblade.desk.dashboard.service.IBsProcessTeamService; import org.springblade.desk.dashboard.service.IBsTeamSetService; +import org.springblade.scheduling.pojo.entity.ProcessSetEntity; import org.springblade.system.feign.IUserClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -171,4 +172,9 @@ public class BsProcessSetServiceImpl extends BaseServiceImpl selectOldMesCraftByOldMesPartId(Long oldMesPartId) { + + return craftMapper.selectOldMesCraftByOldMesPartId(oldMesPartId); + } + + @Override + public List selectDsCraftByPartIdAndRoamNo(Long partId, String roamNo) { + return craftMapper.selectDsCraftByPartIdAndRoamNo(partId,roamNo); + } + + @Override + public DsCraftEntity getReworkCraft(String changeNo) { + return craftMapper.selectDscraftByReworkOrder(changeNo); + } + + @Override + public List getPartCraft(Long partId, String rank) { + return craftMapper.selectDsCraftByPartIdAndRank(partId,rank); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartBasicsServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartBasicsServiceImpl.java new file mode 100644 index 00000000..e53a4eef --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartBasicsServiceImpl.java @@ -0,0 +1,52 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.dashboard.service.impl; + +import org.checkerframework.checker.units.qual.A; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.desk.dashboard.mapper.DsPartBasicsMapper; +import org.springblade.desk.dashboard.pojo.entity.DsPartBasicsEntity; +import org.springblade.desk.dashboard.service.IDsPartBasicsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 零件基础信息 服务实现类 + * + * @author BladeX + * @since 2025-11-12 + */ +@Service +public class DsPartBasicsServiceImpl extends BaseServiceImpl implements IDsPartBasicsService { + + @Autowired + DsPartBasicsMapper partBasicsMapper; + + @Override + public DsPartBasicsEntity selectByPartCode(String partCode) { + return partBasicsMapper.selectPartCode(partCode); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java index b0f63701..7fef9de9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java @@ -74,8 +74,8 @@ public class DsPartRelationServiceImpl extends BaseServiceImpl selectDsPartRelationByPartCodeAndChildPartCode(String bPartCode, String zPartCode) { - return partRelationMapper.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode); + public List selectDsPartRelationByPartCodeAndChildPartCode(String bPartCode, String zPartCode ,String bPartVersion, String zPartVersion,List zPartIdList) { + return partRelationMapper.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode,bPartVersion,zPartVersion,zPartIdList); } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java index 1fe82342..b54c27d2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java @@ -1,9 +1,11 @@ package org.springblade.desk.dashboard.service.impl; +import cn.hutool.core.collection.CollUtil; 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 lombok.extern.slf4j.Slf4j; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; @@ -13,6 +15,7 @@ import org.springblade.desk.dashboard.constant.TaskingConstant; import org.springblade.desk.dashboard.excel.DsPartExcel; import org.springblade.desk.dashboard.mapper.DsPartMapper; import org.springblade.desk.dashboard.pojo.entity.*; +import org.springblade.desk.dashboard.pojo.enums.PartCraftStatusEnum; import org.springblade.desk.dashboard.pojo.vo.*; import org.springblade.desk.dashboard.service.*; import org.springblade.desk.dashboard.utils.DateUtils; @@ -40,6 +43,7 @@ import java.util.stream.Collectors; * @author BladeX * @since 2025-11-12 */ +@Slf4j @Service public class DsPartServiceImpl extends BaseServiceImpl implements IDsPartService { @@ -85,6 +89,9 @@ public class DsPartServiceImpl extends BaseServiceImpl selectDsPartPage(IPage page, DsPartVO dsPart) { @@ -113,7 +120,9 @@ public class DsPartServiceImpl extends BaseServiceImpl dsPartVOS = baseMapper.selectDsPartPage(page, dsPart); if (!CollectionUtils.isEmpty(dsPartVOS)) { for (DsPartVO dsPartVO : dsPartVOS) { - dsPartVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVO.getUpdateUser())).getData().getUser().getName()); + if(null != dsPartVO.getUpdateUser()){ + dsPartVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVO.getUpdateUser())).getData().getUser().getName()); + } String isSintering = dsPartVO.getIsSintering(); if (TaskingConstant.IS_SINTERING.equals(isSintering)) { //查询子件信息 @@ -284,11 +293,34 @@ public class DsPartServiceImpl extends BaseServiceImpl sinteringPart(String bPartCode, String zPartCode) { if (!StringUtils.isEmpty(bPartCode) && !StringUtils.isEmpty(zPartCode)) { - return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode); + List partVersionEntityList = partVersionService.selectByPartCode(bPartCode); + Optional maxEntity = partVersionEntityList.stream() + .filter(entity -> entity.getPartVersion() != null) + .max(Comparator.comparing(DsPartVersionEntity::getPartVersion)); + + if (maxEntity.isPresent()) { + String bPartVersion = maxEntity.get().getPartVersion(); + return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode,bPartVersion,null,null); + } + } if (!StringUtils.isEmpty(zPartCode)) { - return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(null, zPartCode); + //模糊查询零件 + List dsPartList = dsPartMapper.selectListPartByCodeLike(zPartCode); + if(!CollectionUtils.isEmpty(dsPartList)){ + //获取这些零件的最新版本号 + List partVersionEntityList = partVersionService.selectListByPartCode(dsPartList); + + // 提取零件ID列表 + List zPartIdList = partVersionEntityList.stream() + .map(DsPartVersionEntity::getPartId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + + return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(null, null,null,null,zPartIdList); + } } return new ArrayList<>(); @@ -297,14 +329,21 @@ public class DsPartServiceImpl extends BaseServiceImpl getPartTreeList(String partCode) { - // 1. 联表查询所有相关关系 - List relations = dsPartMapper.selectPartRelations(partCode); - if (relations.isEmpty()) { - return new ArrayList<>(); + List partVersionEntityList = partVersionService.selectByPartCode(partCode); + Optional maxEntity = partVersionEntityList.stream() + .filter(entity -> entity.getPartVersion() != null) + .max(Comparator.comparing(DsPartVersionEntity::getPartVersion)); + + if (maxEntity.isPresent()) { + String bPartVersion = maxEntity.get().getPartVersion(); + List partBomVOList = partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(partCode, null, bPartVersion, null, null); + + // 2. 构建树形结构 + return buildTreeFromRelations(partBomVOList); + } - // 2. 构建树形结构 - return buildTreeFromRelations(relations); + return new ArrayList<>(); } @Override @@ -407,7 +446,8 @@ public class DsPartServiceImpl extends BaseServiceImpl selectDsPartByPatCode(String partCode) { return dsPartMapper.selectDsPartByPatCode(partCode); } @Override - public List selectDsProcessProjectByPartNoAndPpsId(String partCode, String orders, String partVersion, String rank) { + public List selectDsProcessProjectByPartNoAndPpsId(String partCode, String orders, String partVersion, String rank,String roamNo) { // 根据零件号、版本号查询零件版本信息信息 DsPartVersionEntity partVersionEntity = partVersionService.selectByPartCodeAndPartVersion(partCode, partVersion); if (partVersionEntity == null) { return List.of(); } // 根据零件ID、工艺等级查询工艺信息 - DsCraftEntity partCraft = craftService.getPartCraft(partVersionEntity.getPartId(), rank); + DsCraftEntity partCraft = craftService.getPartCraft(partVersionEntity.getPartId(), rank,roamNo); if (partCraft == null) { return List.of(); } @@ -530,4 +571,156 @@ public class DsPartServiceImpl extends BaseServiceImpl selectDsPartSub(String partCode) { + return dsPartMapper.selectDsPartSub(partCode); + } + + @Override + public List selectDsPartVersionByIds(List idList) { + return dsPartMapper.selectDsPartVersionByIds(idList); + } + + @Override + public PartCraftVO selectPartCraft(String partCode, String roamNo, String rank, String partVersion) { + if (StringUtils.isEmpty(partCode)) { + return PartCraftVO.build(PartCraftStatusEnum.PART_NOT_EXIST.getCode()); + } + + // 1. 查询零件信息 - 先判空再使用 + DsPartEntity partEntity = selectDsPartByPatCodeAndVersion(partCode, partVersion); + if (Objects.isNull(partEntity)) { + return PartCraftVO.build(PartCraftStatusEnum.PART_NOT_EXIST.getCode()); + } + + // 查询零件版本 + DsPartVersionEntity partVersionEntity = partVersionService.selectByPartId(partEntity.getId()); + + // 2. 判断零件状态 + // todo 判断零件状态维护中 返回“零件工艺维护中” + + // 3. 检查工艺是否过期 + Date nextDue = partEntity.getNextDue(); + if (nextDue != null && nextDue.before(new Date())) { + return PartCraftVO.build(PartCraftStatusEnum.PART_EXPIRED.getCode()); + } + + // 4. 查询所有工艺 + List dsCraftList = craftService.selectDsCraftByPartIdAndRoamNo(partEntity.getId(), roamNo); + + // 5. 如果没有工艺,创建维护任务并返回null + if (CollectionUtils.isEmpty(dsCraftList)) { + createMaintainTask(partEntity, partVersionEntity); + return PartCraftVO.build(PartCraftStatusEnum.NO_CRAFT_INFO.getCode()); + } + + // 6. 按优先级查询工艺 + DsCraftEntity craftByRank = selectCraftByPriority(dsCraftList, rank); + if (craftByRank == null) { + return PartCraftVO.build(PartCraftStatusEnum.NO_CRAFT_RANK_INFO.getCode()); + } + + // 7. 查询工序 + List processEntities = processService.selectDsProcessByCraftId(craftByRank.getId()); + if (CollectionUtils.isEmpty(processEntities)) { + return PartCraftVO.build(PartCraftStatusEnum.NO_PROCEDURE_INFO.getCode()); + } + + // 8. 返回工艺 + return PartCraftVO.build(PartCraftStatusEnum.SUCCESS.getCode(),craftByRank); + + } + + @Override + public List selectReworkPartCraft(String partCode, String reworkOrder,String batchNo,String reworkNo) { + if (StringUtils.isEmpty(partCode) || StringUtils.isEmpty(reworkOrder) || StringUtils.isEmpty(batchNo) || StringUtils.isEmpty(reworkNo) ) { + return null; + } + // 1.查询返工工艺 + DsCraftEntity craftEntity = craftService.getReworkCraft(reworkOrder); + if (Objects.isNull(craftEntity)) { + return null; + } + + // 2.查询返工工序 + List reworkProcessEntityList = prReworkProcessService.selectPrReworkProcess(reworkOrder, partCode, batchNo,reworkNo); + if(CollectionUtils.isEmpty(reworkProcessEntityList)){ + return null; + } + + return reworkProcessEntityList; + } + + @Override + public DsPartVersionEntity getNewPartVersion(String partCode) { + if (!StringUtils.isEmpty(partCode)) { + List partVersionEntityList = partVersionService.selectByPartCode(partCode); + Optional maxEntity = partVersionEntityList.stream() + .filter(entity -> entity.getPartVersion() != null) + .max(Comparator.comparing(DsPartVersionEntity::getPartVersion)); + + if (maxEntity.isPresent()) { + return maxEntity.get(); + } + } + return null; + } + + /** + * 创建维护任务 + */ + private void createMaintainTask(DsPartEntity partEntity, DsPartVersionEntity partVersionEntity) { + DsTaskingEntity dsTaskingEntity = new DsTaskingEntity(); + dsTaskingEntity.setPartCode(partEntity.getPartCode()); + dsTaskingEntity.setPartName(partEntity.getPartName()); + dsTaskingEntity.setTaskStatus(TaskingConstant.TASK_STATUS_WAIT); + dsTaskingEntity.setTaskType(TaskingConstant.MAINTAIN_TASK); + if (partVersionEntity != null) { + dsTaskingEntity.setVersion(partVersionEntity.getPartVersion()); + } + boolean taskingSave = taskingService.save(dsTaskingEntity); + if (!taskingSave) { + log.error("创建维护任务失败,零件编码:{}", partEntity.getPartCode()); + } + } + + /** + * 根据优先级选择工艺 + * 优先级规则:指定级别 > 未指定时按 2级→1级→3级 + */ + private DsCraftEntity selectCraftByPriority(List craftList, String rank) { + if (!StringUtils.isEmpty(rank)) { + // 指定了工艺级别,直接返回对应级别工艺 + return getCraftByRank(craftList, rank); + } + + // 未指定级别,按 2级→1级→3级 优先级查询 + String[] priorityRanks = {"2", "1", "3"}; + for (String priorityRank : priorityRanks) { + DsCraftEntity craft = getCraftByRank(craftList, priorityRank); + if (craft != null) { + return craft; + } + } + + return null; + } + + /** + * 从工艺列表中筛选指定级别的工艺 + */ + private DsCraftEntity getCraftByRank(List craftList, String rank) { + if (CollectionUtils.isEmpty(craftList) || StringUtils.isEmpty(rank)) { + return null; + } + return craftList.stream() + .filter(craft -> rank.equals(craft.getRank())) + .findFirst() + .orElse(null); + } + + + + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartsVersionServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartsVersionServiceImpl.java index b201d61b..d353a7f4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartsVersionServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartsVersionServiceImpl.java @@ -27,6 +27,8 @@ package org.springblade.desk.dashboard.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.desk.dashboard.excel.DsSimilarPartsExcel; @@ -43,8 +45,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 相似零件表 服务实现类 @@ -52,6 +54,7 @@ import java.util.List; * @author BladeX * @since 2025-11-21 */ +@Slf4j @Service public class DsPartsVersionServiceImpl extends BaseServiceImpl implements IDsPartVersionService { @@ -77,4 +80,68 @@ public class DsPartsVersionServiceImpl extends BaseServiceImpl selectListByPartCode(List dsPartList) { + // 提取零件ID列表 + List partIds = dsPartList.stream() + .map(DsPartEntity::getId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + if (partIds.isEmpty()) { + return Collections.emptyList(); + } + + // 查询零件版本号 + List partVersionEntityList = partVersionMapper.selectByPartIds(partIds); + + // 2. 按partCode分组,每组内按版本号转Integer降序排序,取最大值 + Map partCodeToMaxVersionMap = partVersionEntityList.stream() + // 过滤无效数据:partCode为空 或 版本号非数字的记录 + .filter(entity -> isValidPartVersionEntity(entity)) + // 分组并保留每组内版本号最大的记录 + .collect(Collectors.toMap( + DsPartVersionEntity::getPartCode, + entity -> entity, + // 合并规则:版本号转Integer后比较,保留更大的 + (existingEntity, newEntity) -> { + int existingVersion = Integer.parseInt(existingEntity.getPartVersion().trim()); + int newVersion = Integer.parseInt(newEntity.getPartVersion().trim()); + return newVersion > existingVersion ? newEntity : existingEntity; + } + )); + + // 3. 将Map的值转为指定返回类型 List + List resultList = new ArrayList<>(partCodeToMaxVersionMap.values()); + + return resultList; + } + + /** + * 校验实体有效性:确保partCode非空 + 版本号可转为Integer + */ + private static boolean isValidPartVersionEntity(DsPartVersionEntity entity) { + if (entity == null) { + return false; + } + // 校验partCode非空 + if (StringUtils.isBlank(entity.getPartCode())) { + log.warn("零件版本实体partCode为空,过滤该记录"); + return false; + } + // 校验版本号非空且可转为Integer + String versionStr = entity.getPartVersion(); + if (StringUtils.isBlank(versionStr)) { + log.warn("零件编码{}的版本号为空,过滤该记录", entity.getPartCode()); + return false; + } + try { + Integer.parseInt(versionStr.trim()); + return true; + } catch (NumberFormatException e) { + log.warn("零件编码{}的版本号{}非有效数字,过滤该记录", entity.getPartCode(), versionStr); + return false; + } + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessServiceImpl.java index 7c717f55..37ca2a90 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsProcessServiceImpl.java @@ -160,4 +160,9 @@ public class DsProcessServiceImpl extends BaseServiceImpl selectOldMesProcessByOldMesCraftId(Long oldMesCraftId) { + return processMapper.selectOldMesProcessByOldMesCraftId(oldMesCraftId); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java index 5a642911..316451bf 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java @@ -32,6 +32,7 @@ import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.SpringUtil; +import org.springblade.desk.basic.service.ICraftAbilityService; import org.springblade.desk.dashboard.constant.*; import org.springblade.desk.dashboard.pojo.dto.DsTaskingDTO; import org.springblade.desk.dashboard.pojo.entity.*; @@ -39,10 +40,16 @@ import org.springblade.desk.dashboard.pojo.vo.*; import org.springblade.desk.dashboard.excel.DsTaskingExcel; import org.springblade.desk.dashboard.mapper.DsTaskingMapper; import org.springblade.desk.dashboard.service.*; +import org.springblade.desk.order.pojo.entity.MoldApply; +import org.springblade.desk.order.pojo.entity.MoldDemand; import org.springblade.desk.order.pojo.entity.YieldOrder; +import org.springblade.desk.order.service.IMoldApplyService; +import org.springblade.desk.order.service.IMoldDemandService; import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.produce.service.IWorkOrderService; import org.springblade.desk.produce.service.IWorkPlanService; +import org.springblade.desk.quality.pojo.request.ReviewSheetErpSearch; +import org.springblade.desk.quality.service.IReviewSheetService; import org.springblade.erpdata.feign.IErpDataReworkTaskClient; import org.springblade.scheduling.pojo.entity.WorkOrderEntity; import org.springblade.scheduling.pojo.entity.WorkPlanEntity; @@ -55,6 +62,8 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; @@ -63,6 +72,7 @@ import java.sql.SQLException; import java.util.*; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -136,54 +146,76 @@ public class DsTaskingServiceImpl extends BaseServiceImpl selectAssignList(IPage page, DsTaskingVO dsTasking) { List dsTaskingVOS = baseMapper.selectDsTaskingPage(page, dsTasking); - if(!CollectionUtils.isEmpty(dsTaskingVOS)){ - for (DsTaskingVO dsTaskingVO : dsTaskingVOS) { - String partCode = dsTaskingVO.getPartCode(); - String version = dsTaskingVO.getVersion(); - DsPartEntity partEntity = partService.selectDsPartByPatCodeAndVersion(partCode,version); - if(TaskingConstant.IS_SINTERING.equals(partEntity.getIsSintering())){ - //查询子件信息 - List partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); - //获取所有子件ID - List idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); - if(CollectionUtils.isEmpty(idList)){ - continue; - } - //获取版本号 根据子件ID - List partVersionList = partVersionService.selectByPartIds(idList); - List list = new ArrayList<>(); - for (DsPartVersionEntity dsPartVersionEntity : partVersionList) { - //根据零件编码 和 版本号查询数据 - List taskStatusList = new ArrayList<>(Arrays.asList( - TaskingConstant.TASK_STATUS_WAIT, - TaskingConstant.TASK_STATUS_ALREADY, - TaskingConstant.TASK_STATUS_UNDERWAY - )); - List dsTaskingEntityList = taskingMapper.selectDsTaskingByPartCodeAndVersion(dsPartVersionEntity.getPartCode(), dsPartVersionEntity.getPartVersion(), taskStatusList); - - List collect = dsTaskingEntityList.stream() - .map(entity -> { - DsTaskingIsCompletedVO vo = new DsTaskingIsCompletedVO(); - BeanUtils.copyProperties(entity, vo); - return vo; - }) - .collect(Collectors.toList()); - - list.addAll(collect); - } - - if(!CollectionUtils.isEmpty(list)){ - dsTaskingVO.setChildren(list); - } - } - } - } +// if(!CollectionUtils.isEmpty(dsTaskingVOS)){ +// for (DsTaskingVO dsTaskingVO : dsTaskingVOS) { +// String partCode = dsTaskingVO.getPartCode(); +// String version = dsTaskingVO.getVersion(); +// DsPartEntity partEntity = partService.selectDsPartByPatCodeAndVersion(partCode,version); +//// if(TaskingConstant.IS_SINTERING.equals(partEntity.getIsSintering())){ +//// //查询子件信息 +//// List partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); +//// //获取所有子件ID +//// List idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); +//// if(CollectionUtils.isEmpty(idList)){ +//// continue; +//// } +//// //获取版本号 根据子件ID +//// List partVersionList = partVersionService.selectByPartIds(idList); +//// List list = new ArrayList<>(); +//// for (DsPartVersionEntity dsPartVersionEntity : partVersionList) { +//// //根据零件编码 和 版本号查询数据 +//// List taskStatusList = new ArrayList<>(Arrays.asList( +//// TaskingConstant.TASK_STATUS_WAIT, +//// TaskingConstant.TASK_STATUS_ALREADY, +//// TaskingConstant.TASK_STATUS_UNDERWAY +//// )); +//// List dsTaskingEntityList = taskingMapper.selectDsTaskingByPartCodeAndVersion(dsPartVersionEntity.getPartCode(), dsPartVersionEntity.getPartVersion(), taskStatusList); +//// +//// List collect = dsTaskingEntityList.stream() +//// .map(entity -> { +//// DsTaskingIsCompletedVO vo = new DsTaskingIsCompletedVO(); +//// BeanUtils.copyProperties(entity, vo); +//// return vo; +//// }) +//// .collect(Collectors.toList()); +//// +//// list.addAll(collect); +//// } +//// +//// if(!CollectionUtils.isEmpty(list)){ +//// dsTaskingVO.setChildren(list); +//// } +//// } +// +// //查询子件信息 +// if(null != partEntity){ +// List partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); +// //获取所有子件ID +// List idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); +// if (!CollectionUtils.isEmpty(idList)) { +// List dsPartEntityList = partService.selectDsPartVersionByIds(idList); +//// for (DsPartVersionVO dsPartVersionVO : dsPartEntityList) { +//// dsPartVersionVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVersionVO.getUpdateUser())).getData().getUser().getName()); +//// } +// dsTaskingVO.setChildren(dsPartEntityList); +// } +// } +// } +// } return page.setRecords(dsTaskingVOS); } @@ -274,7 +306,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl reworkProcessEntityList = reworkProcessService.selectPrReworkProcess(dsTaskingEntity.getReworkOrder(), partEntity.getPartCode(), dsTaskingEntity.getVersion()); + List reworkProcessEntityList = reworkProcessService.selectPrReworkProcess(dsTaskingEntity.getReworkOrder(), partEntity.getPartCode(), dsTaskingEntity.getBatchNo()); if(CollectionUtils.isEmpty(reworkProcessEntityList)){ throw new ServiceException("返工工序缺失"); } @@ -282,7 +314,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl processProjectEntities = processProjectService.selectDsProcessProjectByProcessId(prReworkProcessEntity.getId()); if(CollectionUtils.isEmpty(processProjectEntities)){ @@ -292,32 +324,32 @@ public class DsTaskingServiceImpl extends BaseServiceImpl craftEntityList = craftService.getPartCraft(partEntity.getId(),"2"); + if(CollectionUtils.isEmpty(craftEntityList) ){ throw new ServiceException("零件工艺缺失"); } - //零件工序 - List processEntities = processService.selectDsProcessByCraftId(craft.getId()); - if(CollectionUtils.isEmpty(processEntities)){ - throw new ServiceException("【零件号】工艺未编制工序"); - } - //判断工序下的检验项目 - for (DsProcessEntity processEntity : processEntities) { - BsProcessSetEntity processSet = processSetService.selectBsProcessSetByProcessCode(processEntity.getProcessCode()); - if(TaskingConstant.IS_CHECKOUT.equals(processSet.getIsCheckout()) ){ - List processProjectEntities = processProjectService.selectDsProcessProjectByProcessId(processEntity.getId()); - if(CollectionUtils.isEmpty(processProjectEntities)){ - throw new ServiceException(processEntity.getProcessName()+":未编制检验项目"); - } - } - } +// //零件工序 +// List processEntities = processService.selectDsProcessByCraftId(craft.getId()); +// if(CollectionUtils.isEmpty(processEntities)){ +// throw new ServiceException("【零件号】"+partEntity.getPartCode()+"工艺未编制工序"); +// } +// //判断工序下的检验项目 +// for (DsProcessEntity processEntity : processEntities) { +// BsProcessSetEntity processSet = processSetService.selectBsProcessSetByProcessCode(processEntity.getProcessCode()); +// if(TaskingConstant.IS_CHECKOUT.equals(processSet.getIsCheckout()) ){ +// List processProjectEntities = processProjectService.selectDsProcessProjectByProcessId(processEntity.getId()); +// if(CollectionUtils.isEmpty(processProjectEntities)){ +// throw new ServiceException(processEntity.getProcessName()+":未编制检验项目"); +// } +// } +// } //子件工艺 @@ -326,35 +358,57 @@ public class DsTaskingServiceImpl extends BaseServiceImpl zCraftList = craftService.getPartCraft(zPartEntity.getId(),"2"); + if(CollectionUtils.isEmpty(zCraftList) ){ + throw new ServiceException("子件工艺缺失"); + } +// List zProcessEntities = processService.selectDsProcessByCraftId(zCraft.getId()); +// if(CollectionUtils.isEmpty(zProcessEntities)){ +// throw new ServiceException("【子件号】工艺未编制工序"); +// } - DsCraftEntity zCraft = craftService.getPartCraft(zPartEntity.getId(),rank); - if(null == zCraft){ - throw new ServiceException("子件工艺缺失"); - } - List zProcessEntities = processService.selectDsProcessByCraftId(zCraft.getId()); - if(CollectionUtils.isEmpty(zProcessEntities)){ - throw new ServiceException("【子件号】工艺未编制工序"); - } + //判断工序下的检验项目 +// for (DsProcessEntity zProcessEntity : zProcessEntities) { +// BsProcessSetEntity processSet = processSetService.selectBsProcessSetByProcessCode(zProcessEntity.getProcessCode()); +// if(TaskingConstant.IS_CHECKOUT.equals(processSet.getIsCheckout()) ){ +// List processProjectEntities = processProjectService.selectDsProcessProjectByProcessId(zProcessEntity.getId()); +// if(CollectionUtils.isEmpty(processProjectEntities)){ +// throw new ServiceException("子件"+zProcessEntity.getProcessName()+":未编制检验项目"); +// } +// } +// } - //判断工序下的检验项目 - for (DsProcessEntity zProcessEntity : zProcessEntities) { - BsProcessSetEntity processSet = processSetService.selectBsProcessSetByProcessCode(zProcessEntity.getProcessCode()); - if(TaskingConstant.IS_CHECKOUT.equals(processSet.getIsCheckout()) ){ - List processProjectEntities = processProjectService.selectDsProcessProjectByProcessId(zProcessEntity.getId()); - if(CollectionUtils.isEmpty(processProjectEntities)){ - throw new ServiceException("子件"+zProcessEntity.getProcessName()+":未编制检验项目"); +// zCraft.setCraftStatus(TaskingConstant.IN_USE); +// craftService.updateById(zCraft); + + DsPartVersionEntity partVersionEntity = partVersionService.selectByPartId(zPartEntity.getId()); + // 5新图任务 - 磨具计划下发 对接坤哥 + if(TaskingConstant.NEW_MAP_TASKS.equals(dsTaskingEntity.getTaskType()) + && DsPartConstant.SIN_TER_TYPE_SMM.equals(zPartEntity.getSinTerType()) + && "1".equals(partVersionEntity.getPartVersion())){ + + List moldDemandList = new ArrayList<>(); + MoldDemand moldDemand = new MoldDemand(); + moldDemand.setPartCode(zPartEntity.getPartCode()); + moldDemand.setPartName(zPartEntity.getPartName()); + moldDemand.setMemo("工艺同步新图零件"); + moldDemandList.add(moldDemand); + boolean moldDemandSve = moldDemandService.save(moldDemandList); + if(!moldDemandSve){ + throw new ServiceException("磨具计划下发新增失败"); } } } - - - zCraft.setCraftStatus(TaskingConstant.IN_USE); - craftService.updateById(zCraft); } //3.工艺任务状态变更为已完成 @@ -363,10 +417,8 @@ public class DsTaskingServiceImpl extends BaseServiceImpl partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); +// //获取所有子件ID +// List idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); +// if(CollectionUtils.isEmpty(idList)){ +// continue; +// } +// //获取版本号 根据子件ID +// List partVersionList = partVersionService.selectByPartIds(idList); +// List list = new ArrayList<>(); +// for (DsPartVersionEntity dsPartVersionEntity : partVersionList) { +// //根据零件编码 和 版本号查询数据 +// List taskStatusList = new ArrayList<>(Arrays.asList( +// TaskingConstant.TASK_STATUS_WAIT, +// TaskingConstant.TASK_STATUS_ALREADY, +// TaskingConstant.TASK_STATUS_UNDERWAY +// )); +// List dsTaskingEntityList = taskingMapper.selectDsTaskingByPartCodeAndVersion(dsPartVersionEntity.getPartCode(), dsPartVersionEntity.getPartVersion(), taskStatusList); +// +// List collect = dsTaskingEntityList.stream() +// .filter(entity -> entity.getCraftMan() != null) +// .map(entity -> { +// DsTaskingIsCompletedVO vo = new DsTaskingIsCompletedVO(); +// BeanUtils.copyProperties(entity, vo); +// return vo; +// }) +// .collect(Collectors.toList()); +// +// list.addAll(collect); +// } +// +//// if(!CollectionUtils.isEmpty(list)){ +//// dsTaskingVO.setChildren(list); +//// } +// } + if(null != partEntity){ List partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); //获取所有子件ID List idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); - if(CollectionUtils.isEmpty(idList)){ - continue; - } - //获取版本号 根据子件ID - List partVersionList = partVersionService.selectByPartIds(idList); - List list = new ArrayList<>(); - for (DsPartVersionEntity dsPartVersionEntity : partVersionList) { - //根据零件编码 和 版本号查询数据 - List taskStatusList = new ArrayList<>(Arrays.asList( - TaskingConstant.TASK_STATUS_WAIT, - TaskingConstant.TASK_STATUS_ALREADY, - TaskingConstant.TASK_STATUS_UNDERWAY - )); - List dsTaskingEntityList = taskingMapper.selectDsTaskingByPartCodeAndVersion(dsPartVersionEntity.getPartCode(), dsPartVersionEntity.getPartVersion(), taskStatusList); - - List collect = dsTaskingEntityList.stream() - .filter(entity -> entity.getCraftMan() != null) - .map(entity -> { - DsTaskingIsCompletedVO vo = new DsTaskingIsCompletedVO(); - BeanUtils.copyProperties(entity, vo); - return vo; - }) - .collect(Collectors.toList()); - - list.addAll(collect); - } + if (!CollectionUtils.isEmpty(idList)) { + List dsPartEntityList = partService.selectDsPartVersionByIds(idList); + for (DsPartVersionVO dsPartVersionVO : dsPartEntityList) { +// dsPartVersionVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVersionVO.getUpdateUser())).getData().getUser().getName()); + if(null != dsPartVersionVO.getSinTerType()){ + DsPartVersionEntity partVersionEntity = partVersionService.selectByPartId(dsPartVersionVO.getId()); + dsPartVersionVO.setPartVersion(partVersionEntity.getPartVersion()); + dsTaskingVO.setChildren(dsPartEntityList); + } + } - if(!CollectionUtils.isEmpty(list)){ - dsTaskingVO.setChildren(list); } } } @@ -518,8 +587,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); - List idList = partRelationEntityList.stream() - .map(DsPartRelationEntity::getChildPartId) +// if(TaskingConstant.IS_SINTERING.equals(partEntity.getIsSintering())){ +// +// } + List partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); + List idList = partRelationEntityList.stream() + .map(DsPartRelationEntity::getChildPartId) + .collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(idList)){ + List dsPartEntityList = partService.selectDsPartByIds(idList); + + List dsPartVOList = dsPartEntityList.stream() + .map(entity -> { + DsPartVO vo = new DsPartVO(); + BeanUtils.copyProperties(entity, vo); + + if (vo.getUpdateUser() != null) { + String userName = userClient.userInfo(Func.toLong(vo.getUpdateUser())) + .getData() + .getUser() + .getName(); + vo.setUpdateUserStr(userName); + } + return vo; + }) .collect(Collectors.toList()); - if(!CollectionUtils.isEmpty(idList)){ - List dsPartEntityList = partService.selectDsPartByIds(idList); - - List dsPartVOList = dsPartEntityList.stream() - .map(entity -> { - DsPartVO vo = new DsPartVO(); - BeanUtils.copyProperties(entity, vo); - - if (vo.getUpdateUser() != null) { - String userName = userClient.userInfo(Func.toLong(vo.getUpdateUser())) - .getData() - .getUser() - .getName(); - vo.setUpdateUserStr(userName); - } - return vo; - }) - .collect(Collectors.toList()); - dsPartSynthesisVO.setDsPartVOList(dsPartVOList); - } + dsPartSynthesisVO.setDsPartVOList(dsPartVOList); } dsPartSynthesisVO.setDsPartEntity(partEntity); @@ -613,18 +687,23 @@ public class DsTaskingServiceImpl extends BaseServiceImpl dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), rank); - if(CollectionUtils.isEmpty(dsCraftVOList)){ - throw new ServiceException("零件工艺信息有误 请检查该零件是否有工艺信息"); - } +// if(CollectionUtils.isEmpty(dsCraftVOList)){ +// throw new ServiceException("零件工艺信息有误 请检查该零件是否有工艺信息"); +// } if (!CollectionUtils.isEmpty(dsCraftVOList)) { for (DsCraftVO craftVO : dsCraftVOList) { @@ -698,7 +777,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl reworkProcessEntityList = reworkProcessService.selectPrReworkProcess(dsTaskingEntity.getReworkOrder(),dsTaskingEntity.getPartCode(),dsTaskingEntity.getVersion()); + List reworkProcessEntityList = reworkProcessService.selectPrReworkProcess(dsTaskingEntity.getReworkOrder(),dsTaskingEntity.getPartCode(),dsTaskingEntity.getBatchNo()); if(!CollectionUtils.isEmpty(reworkProcessEntityList)){ List reworkProcessId = reworkProcessEntityList.stream() .map(PrReworkProcessEntity::getId) @@ -718,17 +797,19 @@ public class DsTaskingServiceImpl extends BaseServiceImpl()); result.getCraftList().add(craftTree); + // // 查询零件工艺信息 // List dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), "2"); // if(CollectionUtils.isEmpty(dsCraftVOList)){ @@ -737,11 +818,15 @@ public class DsTaskingServiceImpl extends BaseServiceImpl processEntities = processService.selectDsProcessByCraftId(craftVO.getId()); // @@ -758,10 +843,10 @@ public class DsTaskingServiceImpl extends BaseServiceImpl processTree = buildProcessTree(processEntities, processProjectEntityList, // processMeasuringToolEntityList, processMoldToolEntityList); -// craftTree.setProcessList(processTree); +// craftTree1.setProcessList(processTree); // } // -// result.getCraftList().add(craftTree); +// result.getCraftList().add(craftTree1); // } // } } @@ -906,21 +991,34 @@ public class DsTaskingServiceImpl extends BaseServiceImpl taskingList = taskingMapper.selectOldMesTasking(startTime,endTime); +// +// if (CollectionUtils.isEmpty(taskingList)) { +// log.info("未读取到任务信息"); +// return true; +// } +// +// log.info("共读取到{}条返工任务待处理", taskingList.size()); +// +// int successCount = 0; +// int skipCount = 0; +// int failCount = 0; +// +// for (DsTaskingEntity dsTasking : taskingList) { +// try { +// boolean result = processTask(dsTasking); +// if (result) { +// successCount++; +// } else { +// skipCount++; +// } +// } catch (Exception e) { +// failCount++; +// log.error("处理任务失败,零件号:{},错误信息:{}", +// dsTasking.getPartCode(), +// e.getMessage(), e); +// //继续处理下一条任务 +// continue; +// } +// } +// +// log.info("任务同步完成:成功{}条,跳过{}条,失败{}条", successCount, skipCount, failCount); +// +// return failCount == 0; +// +// } +// +// /** +// * 处理单个任务 +// * 对应: loop 循环内的处理逻辑 +// */ +// private boolean processTask(DsTaskingEntity dsTasking) { +// +// DsPartEntity oldMesPart = taskingMapper.getOldMesPartByPartCode(dsTasking.getPartCode()); +// if(null == oldMesPart){ +// log.error("老MES零件数据不存在:{}",dsTasking.getPartCode()); +// return false; +// } +// Long oldMesPartId = oldMesPart.getId(); +// +// //1.添加零件基础信息 +// //查询零件基础数据是否存在 +// DsPartBasicsEntity partBasicsEntity = partBasicsService.selectByPartCode(dsTasking.getPartCode()); +// if(null == partBasicsEntity){ +// //新增基础数据 +// partBasicsEntity = new DsPartBasicsEntity(); +// partBasicsEntity.setPartCode(oldMesPart.getPartCode()); +// partBasicsEntity.setPartName(oldMesPart.getPartName()); +// partBasicsEntity.setProductType(oldMesPart.getProductType()); +// partBasicsEntity.setIsSintering(oldMesPart.getIsSintering()); +// partBasicsEntity.setIsClassCake(oldMesPart.getIsClassCake()); +// if (oldMesPart.getRemarks() == null || oldMesPart.getRemarks().trim().isEmpty()) { +// partBasicsEntity.setRemarks(oldMesPart.getRemarks()); +// } +// boolean partBasicsSave = partBasicsService.save(partBasicsEntity); +// if(!partBasicsSave){ +// log.error("零件基础数据添加失败:{}",dsTasking.getPartCode()); +// return false; +// } +// } +// +// //2.添加零件信息 +// //查询零件是否有版本号 +// // 查询零件版本列表 +// List partVersionList = partVersionService.selectByPartCode(dsTasking.getPartCode()); +// +// // 取最大版本号(按数字大小排序,推荐写法) +// Optional latestVersion = partVersionList.stream() +// .map(DsPartVersionEntity::getPartVersion) +// .filter(Objects::nonNull) +// .max(Comparator.comparingInt(Integer::parseInt)); +// +// // 处理版本号递增 +// String newVersion; +// if (latestVersion.isPresent()) { +// log.info("最新版本号:{}", latestVersion.get()); +// newVersion = IncrementNumberUtil.convertNumber(latestVersion.get()); +// } else { +// // 无历史版本号,初始为1 +// newVersion = "1"; +// } +// log.info("新生成的版本号:{}", newVersion); +// +// //新增零件 +// //重置零件id 防止该零件重复添加 ID出错 +// oldMesPart.setId(null); +// boolean newPartSave = partService.save(oldMesPart); +// if(!newPartSave){ +// log.error("任务同步零件添加失败"); +// return false; +// } +// //查询一下新零件 方便后面使用 +// DsPartEntity newPart = partService.getById(oldMesPart.getId()); +// Long newPartId = newPart.getId(); +// String newPartCode = newPart.getPartCode(); +// +// //新增版本号信息 +// DsPartVersionEntity newPartVersion = new DsPartVersionEntity(); +// newPartVersion.setPartId(newPartId); +// newPartVersion.setPartCode(newPartCode); +// newPartVersion.setPartVersion(newVersion); +// boolean partVersionSave = partVersionService.save(newPartVersion); +// if(!partVersionSave){ +// log.error("零件版本号新增失败"); +// return false; +// } +// +// //3.新增子件 +// // 查询子件 +// List dsPartSubList = partService.selectDsPartSub(oldMesPart.getPartCode()); +// for (DsPartSub dsPartSub : dsPartSubList) { +// DsPartEntity partEntity = new DsPartEntity(); +// partEntity.setPartCode(dsPartSub.getSubCode()); +// partEntity.setPartName(dsPartSub.getSubName()); +// partEntity.setQuota(dsPartSub.getQuota()); +// partEntity.setSubType(dsPartSub.getSubType()); +// partEntity.setProductType(dsPartSub.getProductType()); +// partEntity.setArea(dsPartSub.getArea()); +// partEntity.setConfigCode(dsPartSub.getConfigNo()); +// partEntity.setPlate(dsPartSub.getPlate()); +// partEntity.setMaterial(dsPartSub.getMaterial()); +// partEntity.setPlateCode(dsPartSub.getPlateCode()); +// partEntity.setSinTerType(dsPartSub.getSinTerType()); +// boolean partSubSave = partService.save(partEntity); +// if(!partSubSave){ +// log.error("子件新增失败,子件编码{}",dsPartSub.getSubCode()); +// return false; +// } +// +// //添加零件 子件关系表 +// DsPartRelationEntity dsPartRelationEntity = new DsPartRelationEntity(); +// dsPartRelationEntity.setPartId(newPartId); +// dsPartRelationEntity.setPartCode(newPartCode); +// dsPartRelationEntity.setChildPartId(partEntity.getId()); +// dsPartRelationEntity.setChildPartCode(partEntity.getPartCode()); +// boolean partRelationSave = partRelationService.save(dsPartRelationEntity); +// if(!partRelationSave){ +// log.error("部件子件关联关系添加失败partcode{},partSubCode{}",dsPartSub.getPartCode(),dsPartSub.getSubCode()); +// return false; +// } +// } +// +// //新增工艺 +// //查询老mes +// List dsCraftEntityList = craftService.selectOldMesCraftByOldMesPartId(oldMesPartId); +// +// if(CollectionUtils.isEmpty(dsCraftEntityList)){ +// log.error("工艺不存在无法新增"); +// return false; +// } +// for (DsCraftEntity craft : dsCraftEntityList) { +// //留存工艺ID 查询老工序是会使用 +// Long oldCraftId = craft.getId(); +// //重置工艺ID 不使用老mesID +// craft.setId(null); +// craft.setPartId(newPartId); +// craft.setPartVersions(newVersion); +// craft.setCraftStatus(TaskingConstant.UNDER_MAINTENANCE); +// boolean craftSaveBatch = craftService.save(craft); +// if(!craftSaveBatch){ +// log.error("工艺新增失败"); +// return false; +// } +// +//// //新增工序 工序设置 工艺能力 +//// //查询工序 +//// List oldMesProcessList = processService.selectOldMesProcessByOldMesCraftId(oldCraftId); +//// if(CollectionUtils.isEmpty(oldMesProcessList)){ +//// log.error("工序查询失败工艺ID:{}",oldCraftId); +//// return false; +//// } +//// for (DsProcessEntity oldProcess : oldMesProcessList) { +//// //验证工序设置 是否存在 不存在则新增工序 +//// if(null != oldProcess.getPpsId()){ +//// //查询老mes工序设置 +//// BsProcessSetEntity oldProcessSet = processSetService.selectOldMesProcessSetByOldPpsId(oldProcess.getPpsId()); +//// if(null == oldProcessSet){ +//// log.error("工序设置查询失败工序ID:{}",oldProcess.getPpsId()); +//// return false; +//// } +//// //验证新mes是否有该工序 +//// BsProcessSetEntity newProcessSet = processSetService.selectBsProcessSetByProcessCode(oldProcessSet.getCode()); +//// if(null == newProcessSet){ +//// //新增工序设置 +//// boolean processSetSave = processSetService.save(oldProcessSet); +//// if(!processSetSave){ +//// log.error("工序设置新增失败"); +//// return false; +//// } +//// } +//// } +//// +//// // 工艺能力 +//// if(null != oldProcess.getCaId()){ +//// //查询老mes工艺能力 +//// CraftAbilityEntity oldMesCraftAbility = craftAbilityService.selectOldMesCraftAbilityByOldCaId(oldProcess.getCaId()); +//// if(null == oldMesCraftAbility){ +//// log.error("工艺能力查询失败能力ID:{}",oldProcess.getCaId()); +//// return false; +//// } +//// //验证新mes是否有该工艺能力 +//// CraftAbilityEntity newMesCraftAbility = craftAbilityService.selectByCaCode(oldMesCraftAbility.getCaCode()); +//// if(null == newMesCraftAbility){ +//// //新增工艺能力 +//// boolean craftAbilitySave = craftAbilityService.save(newMesCraftAbility); +//// if(!craftAbilitySave){ +//// log.error("工艺能力新增失败"); +//// return false; +//// } +//// } +//// } +//// +//// //添加工序 +//// Long oldProcessId = oldProcess.getId(); +//// oldProcess.setId(null); +//// boolean processSave = processService.save(oldProcess); +//// if(!processSave){ +//// log.error("工序新增失败"); +//// return false; +//// } +//// } +// } +// +// return true; +// +// } + + /** + * ------------ + */ + + + @Override + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) + public boolean syncTasking() { + log.info("========== 开始同步任务 =========="); + // 1. 获取上次同步的最大时间 + DsTaskingEntity dsTaskingEntity = taskingMapper.getMaxSyncTime(); + Date startTime = null; + Date endTime = new Date(); + + if (dsTaskingEntity != null && dsTaskingEntity.getSyncTime() != null) { + // 在上次同步时间基础上增加1毫秒,避免重复 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(dsTaskingEntity.getSyncTime()); + calendar.add(Calendar.MILLISECOND, 1); // 增加1毫秒 + startTime = calendar.getTime(); + log.info("同步时间范围:{} - {}", startTime, endTime); + } else { + // 首次同步 + log.info("首次同步,同步所有历史任务"); + } + + // 2. 查询待同步的任务列表(包含 startTime 到 endTime 之间的数据) + List taskingList = taskingMapper.selectOldMesTasking(startTime, endTime); + + if (CollectionUtils.isEmpty(taskingList)) { + log.info("未读取到任务信息"); + // 更新同步时间,避免下次重复查询 + return true; + } + + log.info("共读取到 {} 条返工任务待处理", taskingList.size()); + + // 3. 初始化统计计数器 + AtomicInteger successCount = new AtomicInteger(0); + AtomicInteger skipCount = new AtomicInteger(0); + AtomicInteger failCount = new AtomicInteger(0); + List failedPartCodes = new ArrayList<>(); + + // 4. 逐个处理任务(每个任务独立事务,避免一个失败全部回滚) + for (DsTaskingEntity dsTasking : taskingList) { + try { + // 每个任务独立事务处理 + boolean result = processSingleTaskWithTransaction(dsTasking); + if (result) { + successCount.incrementAndGet(); + log.info("任务处理成功 ({}/{}): {}", + successCount.get() + skipCount.get() + failCount.get(), + taskingList.size(), dsTasking.getPartCode()); + } else { + skipCount.incrementAndGet(); + log.warn("任务跳过 ({}/{}): {}", + successCount.get() + skipCount.get() + failCount.get(), + taskingList.size(), dsTasking.getPartCode()); + } + } catch (Exception e) { + failCount.incrementAndGet(); + failedPartCodes.add(dsTasking.getPartCode()); + log.error("处理任务失败,零件号:{},错误信息:{}", + dsTasking.getPartCode(), e.getMessage(), e); + } + } + + + // 6. 输出统计信息 + log.info("========== 任务同步完成 =========="); + log.info("成功:{} 条", successCount.get()); + log.info("跳过:{} 条", skipCount.get()); + log.info("失败:{} 条", failCount.get()); + + if (!failedPartCodes.isEmpty()) { + log.info("失败的零件号:{}", String.join(", ", failedPartCodes)); + } + + // 失败数为0则返回true,否则返回false + return failCount.get() == 0; + } + + /** + * 单个任务独立事务处理 + */ + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) + public boolean processSingleTaskWithTransaction(DsTaskingEntity dsTasking) { + String partCode = dsTasking.getPartCode(); + log.info("开始处理任务,零件号:{}", partCode); + + try { + // 1. 查询老MES零件数据 + DsPartEntity oldMesPart = getOldMesPart(partCode); + if (oldMesPart == null) { + log.error("老MES零件数据不存在:{}", partCode); + return false; + } + + // 2. 递归处理零件及其子件 + DsPartEntity newPart = processPartRecursively(oldMesPart); + if (newPart == null) { + log.error("零件处理失败:{}", partCode); + return false; + } + + // 3. 处理成功后新增任务记录 + DsPartVersionEntity partVersionEntity = partVersionService.selectByPartId(newPart.getId()); + //修改状态 + if(TaskingConstant.TASK_STATUS_ALREADY.equals(dsTasking.getTaskStatus())){ + dsTasking.setTaskStatus(TaskingConstant.TASK_STATUS_UNDERWAY); + } + dsTasking.setVersion(partVersionEntity.getPartVersion()); + int taskingInsert = taskingMapper.insert(dsTasking); + if (taskingInsert <= 0) { + log.error("任务记录新增失败:{}", partCode); + // 抛出异常触发事务回滚 + throw new RuntimeException("任务记录新增失败:" + partCode); + } + + log.info("任务处理成功:{},新零件ID:{}", partCode, newPart.getId()); + return true; + + } catch (Exception e) { + log.error("处理任务异常:{}", partCode, e); + throw e; + } + } + + /** + * 获取老MES零件数据 + */ + private DsPartEntity getOldMesPart(String partCode) { + return taskingMapper.getOldMesPartByPartCode(partCode); + } + + /** + * 递归处理零件及其子件 + * 核心逻辑:处理基础信息 -> 生成版本号 -> 创建新零件 -> 创建版本记录 -> 同步工艺 -> 处理子件 + */ + // 同时补充修正 processPartRecursively 中对空数据的兼容逻辑 + private DsPartEntity processPartRecursively(DsPartEntity oldMesPart) { + String partCode = oldMesPart.getPartCode(); + Long oldMesPartId = oldMesPart.getId(); + log.info("递归处理零件:{}", partCode); + + try { + // 1. 处理零件基础信息(兼容空数据) + if (!handlePartBasics(oldMesPart)) { + log.error("零件基础信息处理失败:{}", partCode); + return null; + } + + // 2. 生成新版本号(线程安全) + String newVersion = generateNewVersion(partCode); + log.info("零件 {} 生成新版本号:{}", partCode, newVersion); + + // 3. 创建新零件(兼容空数据) + DsPartEntity newPart = createNewPart(oldMesPart, newVersion); + if (newPart == null) { + return null; + } + + // 4. 创建版本号记录 + if (!createPartVersion(newPart.getId(), partCode, newVersion)) { + log.error("版本号记录创建失败:{}", partCode); + return null; + } + + // 5. 同步工艺(兼容空数据,无工艺则跳过) + syncCrafts(oldMesPartId, newPart, newVersion); + + // 6. 处理子件(递归)- 子件处理失败不影响父件,仅记录日志 + processSubPartsRecursively(partCode, newPart); + + log.info("零件 {} 递归处理完成,新ID:{},版本号:{}", + partCode, newPart.getId(), newVersion); + return newPart; + + } catch (Exception e) { + log.error("递归处理零件异常:{}", partCode, e); + return null; + } + } + + /** + * 递归处理子件(子件处理失败仅记录日志,不中断父件处理) + * 关键修正:oldMesSubPart == null 仅代表该子件无更深层级的子件,仍需处理当前子件自身的核心逻辑 + */ + private void processSubPartsRecursively(String parentPartCode, DsPartEntity parentNewPart) { + List subPartList = partService.selectDsPartSub(parentPartCode); + + if (CollectionUtils.isEmpty(subPartList)) { + log.info("零件 {} 没有子件(无子件层级)", parentPartCode); + return; + } + + log.info("零件 {} 有 {} 个子件需要递归处理", parentPartCode, subPartList.size()); + + for (DsPartSub subPartInfo : subPartList) { + String subCode = subPartInfo.getSubCode(); + log.info("开始处理子件:{}", subCode); + + try { + // 1. 查询子件老MES数据(null仅代表无该子件的详细数据,不代表跳过) + DsPartEntity oldMesSubPart = getOldMesPart(subCode); + + if (oldMesSubPart == null) { + // 子件无老MES详细数据,创建空的基础对象(保证核心逻辑能执行) + log.warn("子件 {} 无老MES详细数据,创建基础空对象处理", subCode); + oldMesSubPart = new DsPartEntity(); + if(!StringUtils.isEmpty(subPartInfo.getSubName())){ + oldMesSubPart.setPartName(subPartInfo.getSubName()); + } + oldMesSubPart.setPartCode(subPartInfo.getSubCode()); + oldMesSubPart.setQuota(subPartInfo.getQuota()); + oldMesSubPart.setSubType(subPartInfo.getSubType()); + oldMesSubPart.setProductType(subPartInfo.getProductType()); + oldMesSubPart.setArea(subPartInfo.getArea()); + oldMesSubPart.setConfigCode(subPartInfo.getConfigNo()); + oldMesSubPart.setPlate(subPartInfo.getPlate()); + oldMesSubPart.setMaterial(subPartInfo.getMaterial()); + oldMesSubPart.setPlateCode(subPartInfo.getPlateCode()); + oldMesSubPart.setSinTerType(subPartInfo.getSinTerType()); + + } + + // 2. 递归处理当前子件自身(生成版本号、创建零件、同步工艺等核心逻辑) + DsPartEntity newSubPart = processPartRecursively(oldMesSubPart); + if (newSubPart == null) { + log.error("子件 {} 自身处理失败,跳过该子件", subCode); + continue; + } + + // 3. 建立父子关联关系 + if (!createPartRelation(parentNewPart.getId(), parentNewPart.getPartCode(), + newSubPart.getId(), newSubPart.getPartCode())) { + log.error("建立父子关联关系失败:父{},子{},跳过该子件关联", parentNewPart.getPartCode(), subCode); + continue; + } + + // 4. 保存子件关联的额外信息 + saveSubPartRelationInfo(parentNewPart.getId(), newSubPart.getId(), subPartInfo); + + log.info("子件 {} 处理完成,新ID:{}", subCode, newSubPart.getId()); + + } catch (Exception e) { + log.error("处理子件 {} 异常,跳过该子件", subCode, e); + } + } + } + + /** + * 同步工艺 + */ + private boolean syncCrafts(Long oldMesPartId, DsPartEntity newPart, String newVersion) { + try { + // 兼容空老MES ID的情况(无工艺数据) + if (oldMesPartId == null || oldMesPartId <= 0) { + log.info("零件 {} 无老MES工艺ID,跳过工艺同步", newPart.getPartCode()); + return true; + } + + // 查询老MES的工艺列表 + List oldCraftList = craftService.selectOldMesCraftByOldMesPartId(oldMesPartId); + + if (CollectionUtils.isEmpty(oldCraftList)) { + log.info("零件 {} 没有工艺数据", newPart.getPartCode()); + return true; + } + + log.info("零件 {} 有 {} 个工艺待同步", newPart.getPartCode(), oldCraftList.size()); + + for (DsCraftEntity oldCraft : oldCraftList) { + // 重置工艺ID 不使用老mesID + oldCraft.setId(null); + oldCraft.setPartId(newPart.getId()); + oldCraft.setPartCode(newPart.getPartCode()); + oldCraft.setPartVersions(newVersion); + oldCraft.setCraftStatus(TaskingConstant.UNDER_MAINTENANCE); + + boolean saved = craftService.save(oldCraft); + if (!saved) { + log.error("工艺同步失败,oldCraftId:{}", oldCraft.getId()); + // 继续处理下一个工艺,不中断 + continue; + } + + log.info("工艺同步成功,oldCraftId:{} -> newCraftId:{}", oldMesPartId, oldCraft.getId()); + } + + return true; + } catch (Exception e) { + log.error("同步工艺异常:{}", newPart.getPartCode(), e); + return false; + } + } + + /** + * 生成新版本号(线程安全,使用数据库锁或乐观锁保证唯一性) + */ + private String generateNewVersion(String partCode) { + // 加锁查询版本号,避免多线程重复 + synchronized (this.getClass().getName().concat(partCode).intern()) { + List partVersionList = partVersionService.selectByPartCode(partCode); + + if (CollectionUtils.isEmpty(partVersionList)) { + return "1"; + } + + Optional maxVersion = partVersionList.stream() + .map(DsPartVersionEntity::getPartVersion) + .filter(Objects::nonNull) + .map(v -> { + try { + return Integer.parseInt(v); + } catch (NumberFormatException e) { + log.warn("版本号格式异常:{},视为0", v); + return 0; + } + }) + .max(Integer::compareTo); + + return String.valueOf(maxVersion.orElse(0) + 1); + } + } + + /** + * 创建新零件 + */ + private DsPartEntity createNewPart(DsPartEntity oldMesPart, String newVersion) { + try { + Long oldId = oldMesPart.getId(); + oldMesPart.setId(null); + boolean saved = partService.save(oldMesPart); + if (!saved) { + log.error("零件新增失败:{}", oldMesPart.getPartCode()); + return null; + } + + DsPartEntity newPart = partService.getById(oldMesPart.getId()); + log.info("零件新增成功,oldId:{} -> newId:{}", oldId, newPart.getId()); + + return newPart; + } catch (Exception e) { + log.error("创建新零件异常:{}", oldMesPart.getPartCode(), e); + return null; + } + } + + /** + * 创建版本号记录 + */ + private boolean createPartVersion(Long partId, String partCode, String version) { + try { + DsPartVersionEntity partVersion = new DsPartVersionEntity(); + partVersion.setPartId(partId); + partVersion.setPartCode(partCode); + partVersion.setPartVersion(version); + + boolean saved = partVersionService.save(partVersion); + if (saved) { + log.info("版本号记录创建成功:{} -> 版本{}", partCode, version); + } else { + log.error("版本号记录创建失败:{} -> 版本{}", partCode, version); + } + return saved; + } catch (Exception e) { + log.error("创建版本号记录异常:{}", partCode, e); + return false; + } + } + + /** + * 创建零件-子件关联关系 + */ + private boolean createPartRelation(Long partId, String partCode, Long childPartId, String childPartCode) { + try { + DsPartRelationEntity relation = new DsPartRelationEntity(); + relation.setPartId(partId); + relation.setPartCode(partCode); + relation.setChildPartId(childPartId); + relation.setChildPartCode(childPartCode); + relation.setCreateTime(new Date()); + relation.setStatus(1); + relation.setIsDeleted(0); + + boolean saved = partRelationService.save(relation); + if (saved) { + log.debug("部件子件关联关系添加成功:{} -> {}", partCode, childPartCode); + } else { + log.error("部件子件关联关系添加失败:{} -> {}", partCode, childPartCode); + } + return saved; + } catch (Exception e) { + log.error("创建零件关联关系异常:父{},子{}", partCode, childPartCode, e); + return false; + } + } + + /** + * 保存子件关联的额外信息 + */ + private void saveSubPartRelationInfo(Long parentId, Long childId, DsPartSub subPartInfo) { + try { + // 这里可以根据实际需求实现保存逻辑,比如保存到子件关联信息表 + log.info("子件关联信息:父ID={},子ID={},子件号={},定额={},类型={},配置码={},镀种={},材料={},镀层代号={},烧结类型={}", + parentId, + childId, + subPartInfo.getSubCode(), + subPartInfo.getQuota(), + subPartInfo.getSubType(), + subPartInfo.getConfigNo(), + subPartInfo.getPlate(), + subPartInfo.getMaterial(), + subPartInfo.getPlateCode(), + subPartInfo.getSinTerType()); + } catch (Exception e) { + log.error("保存子件关联信息异常", e); + } + } + + /** + * 处理零件基础信息(有则跳过,无则新增) + */ + private boolean handlePartBasics(DsPartEntity oldMesPart) { + try { + String partCode = oldMesPart.getPartCode(); + DsPartBasicsEntity partBasics = partBasicsService.selectByPartCode(partCode); + + if (partBasics == null) { + partBasics = new DsPartBasicsEntity(); + partBasics.setPartCode(partCode); + partBasics.setPartName(oldMesPart.getPartName()); + partBasics.setProductType(oldMesPart.getProductType()); + partBasics.setIsSintering(oldMesPart.getIsSintering()); + partBasics.setIsClassCake(oldMesPart.getIsClassCake()); + partBasics.setCreateTime(new Date()); + partBasics.setUpdateTime(new Date()); + partBasics.setStatus(1); + partBasics.setIsDeleted(0); + + if (oldMesPart.getRemarks() != null && !oldMesPart.getRemarks().trim().isEmpty()) { + partBasics.setRemarks(oldMesPart.getRemarks()); + } + + boolean saved = partBasicsService.save(partBasics); + if (!saved) { + log.error("零件基础信息新增失败:{}", partCode); + return false; + } + log.info("零件基础信息新增成功:{}", partCode); + } else { + log.info("零件基础信息已存在:{}", partCode); + } + + return true; + } catch (Exception e) { + log.error("处理零件基础信息异常:{}", oldMesPart.getPartCode(), e); + return false; + } + } + + + /** + * -------------- + */ + /** * 处理单个返工任务 * 对应: loop 循环内的处理逻辑 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/PrReworkProcessServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/PrReworkProcessServiceImpl.java index 07cedd07..1de07767 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/PrReworkProcessServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/PrReworkProcessServiceImpl.java @@ -68,7 +68,7 @@ public class PrReworkProcessServiceImpl extends BaseServiceImpl selectPrReworkProcess(String reworkOrder, String partCode, String batchNo) { - return reworkProcessMapper.selectPrReworkProcess(reworkOrder,partCode,batchNo); + return reworkProcessMapper.selectPrReworkProcess(reworkOrder, partCode,batchNo); } @Override @@ -76,4 +76,9 @@ public class PrReworkProcessServiceImpl extends BaseServiceImpl selectPrReworkProcess(String reworkOrder, String partCode, String batchNo, String reworkNo) { + return reworkProcessMapper.selectPrReworkProcessReworkNo(reworkOrder,partCode,batchNo,reworkNo); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/utils/IncrementNumberUtil.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/utils/IncrementNumberUtil.java new file mode 100644 index 00000000..4f217383 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/utils/IncrementNumberUtil.java @@ -0,0 +1,36 @@ +package org.springblade.desk.dashboard.utils; + +/** + * @author: liweidong + * @create: 2026-03-14 + */ +public class IncrementNumberUtil { + /** + * 字符串数值递增转换核心方法 + * @param input 输入的字符串(可为 null/空/非数字/数字) + * @return 转换后的字符串结果 + */ + public static String convertNumber(String input) { + // 1. 处理空值/空字符串:直接返回 "1" + if (input == null || input.trim().isEmpty()) { + return "1"; + } + + try { + // 2. 将字符串转为整数(处理首尾空格) + int num = Integer.parseInt(input.trim()); + + // 3. 处理负数:返回 "1" + if (num < 0) { + return "1"; + } + + // 4. 正常逻辑:非负整数 +1 后转回字符串 + return String.valueOf(num + 1); + + } catch (NumberFormatException e) { + // 5. 处理非数字字符串(如"abc"、"12a"):返回 "1" + return "1"; + } + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IEquipmentService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IEquipmentService.java index c430bbec..36ad8a48 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IEquipmentService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IEquipmentService.java @@ -76,4 +76,9 @@ public interface IEquipmentService extends BaseService { Boolean editIp(String ip, Long deviceId); void regularlyUpdated(); + + /** + * 根据设备编号查询设备信息 + */ + EquipmentEntity getDeEquipmentCardByCode(String deviceCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IFeiBaSetService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IFeiBaSetService.java index 12912a24..1292018a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IFeiBaSetService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IFeiBaSetService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.validation.constraints.NotEmpty; import org.springblade.core.mp.base.BaseService; import org.springblade.desk.device.pojo.entity.FeiBaSetEntity; +import org.springblade.desk.device.pojo.entity.RackSetEntity; import org.springblade.desk.device.pojo.excel.FeiBaSetExcel; import java.util.List; @@ -44,4 +45,9 @@ public interface IFeiBaSetService extends BaseService { Boolean bind(@NotEmpty List ids, Integer deviceId); void regularlyUpdated(); + + /** + * 根据设备编号获取飞靶 + */ + FeiBaSetEntity getBsFeiBaSetByCode(String fsCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IRackSetService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IRackSetService.java index 2c2f7aef..a16851b4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IRackSetService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IRackSetService.java @@ -67,4 +67,12 @@ public interface IRackSetService extends BaseService { * @return */ Boolean bind(@NotEmpty List ids, Integer deviceId); + + /** + * 根据挂具编号查询挂具信息 + * + * @param rsCode + * @return + */ + RackSetEntity getBsRackSetByCode(String rsCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/EquipmentServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/EquipmentServiceImpl.java index d3a3a5df..e617b7c0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/EquipmentServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/EquipmentServiceImpl.java @@ -170,6 +170,15 @@ public class EquipmentServiceImpl extends BaseServiceImpl list = this.list(Wrappers.lambdaQuery(EquipmentEntity.class).eq(EquipmentEntity::getDeviceCode, deviceCode)); + if (CollectionUtils.isEmpty(list)) { + return null; + } + return list.get(0); + } + /** * 构建请求体 */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/FeiBaSetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/FeiBaSetServiceImpl.java index 9ce402d3..276bd888 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/FeiBaSetServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/FeiBaSetServiceImpl.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.desk.device.mapper.FeiBaSetMapper; import org.springblade.desk.device.pojo.entity.FeiBaSetEntity; import org.springblade.desk.device.pojo.entity.FeiBaSetEntity; +import org.springblade.desk.device.pojo.entity.RackSetEntity; import org.springblade.desk.device.pojo.excel.FeiBaSetExcel; import org.springblade.desk.device.service.IFeiBaSetService; import org.springblade.desk.order.pojo.entity.YieldOrder; @@ -26,6 +27,7 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -105,46 +107,69 @@ public class FeiBaSetServiceImpl extends BaseServiceImpl jsonList = JSONArray.parseArray(result.getJSONArray("data").toJSONString(), JSONObject.class); - if (jsonList != null && jsonList.size() > 0) { - //接口返回飞靶code即为本系统code - Map equCodeObjectMap = jsonList.stream().collect(Collectors.toMap( - e -> e.getString("code"), - e -> e)); - Set equCodes = equCodeObjectMap.keySet(); - if (equCodes == null || equCodes.size() < 1) { - log.error("同步飞靶数据接口返回数据为空"); - return; - } - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(CollectionUtils.isNotEmpty(equCodes), FeiBaSetEntity::getFsCode, equCodes); - List feiBaSetEntityList = this.list(lambdaQueryWrapper); - Map FeiBaSetEntityMap = new HashMap<>(); - if (null != feiBaSetEntityList && feiBaSetEntityList.size() > 0) { - feiBaSetEntityList.stream().collect(Collectors.toMap( - e -> e.getFsCode(), - e -> e)); - } - List saves = new ArrayList<>(); - for (JSONObject jsonObject : jsonList) { - FeiBaSetEntity feiBaSet = FeiBaSetEntityMap.get(jsonObject.getString("code")); - feiBaSet = Optional.ofNullable(feiBaSet).orElse(new FeiBaSetEntity()); - feiBaSet.setFsCode(jsonObject.getString("code")); - feiBaSet.setFsType(jsonObject.getString("name")); - if (null == feiBaSet.getId()) { - feiBaSet.setStatus(FeiBaSetEntity.FS_STATUS_FREE); - } - saves.add(feiBaSet); - } - boolean saved = this.saveOrUpdateBatch(saves); - if (saved) { - log.debug("同步飞靶数据成功"); - } else { - log.error("同步飞靶数据失败"); + if (CollectionUtils.isEmpty(jsonList)) { + log.error("同步飞靶数据接口返回数据为空"); + return; + } + + // 接口返回飞靶code即为本系统code + Map equCodeObjectMap = jsonList.stream() + .collect(Collectors.toMap( + e -> e.getString("code"), + Function.identity() + )); + + Set equCodes = equCodeObjectMap.keySet(); + if (CollectionUtils.isEmpty(equCodes)) { + log.error("同步飞靶数据接口返回数据code字段为空"); + return; + } + + // 查询数据库中已存在的记录 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(FeiBaSetEntity::getFsCode, equCodes); + List feiBaSetEntityList = this.list(lambdaQueryWrapper); + + Map feiBaSetEntityMap = feiBaSetEntityList.stream() + .collect(Collectors.toMap( + FeiBaSetEntity::getFsCode, + Function.identity() + )); + + // 批量更新/保存 + List saves = jsonList.stream().map(jsonObject -> { + String code = jsonObject.getString("code"); + FeiBaSetEntity entity = feiBaSetEntityMap.getOrDefault(code, new FeiBaSetEntity()); + + entity.setFsCode(code); + entity.setFsType(jsonObject.getString("name")); + + // 新增记录时设置默认状态 + if (entity.getId() == null) { + entity.setStatus(FeiBaSetEntity.FS_STATUS_FREE); } + + return entity; + }).collect(Collectors.toList()); + + boolean success = this.saveOrUpdateBatch(saves); + if (!success) { + log.error("同步飞靶数据保存失败"); + } else { + log.debug("同步飞靶数据保存成功"); } } } catch (Exception e) { log.error("同步飞靶数据接口调用失败: {}", e.getMessage(), e); } } + + @Override + public FeiBaSetEntity getBsFeiBaSetByCode(String fsCode) { + List list = this.list(Wrappers.lambdaQuery(FeiBaSetEntity.class).eq(FeiBaSetEntity::getFsCode, fsCode)); + if (CollectionUtils.isEmpty(list)) { + return null; + } + return list.get(0); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/RackSetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/RackSetServiceImpl.java index 6d197291..da245702 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/RackSetServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/RackSetServiceImpl.java @@ -26,6 +26,7 @@ package org.springblade.desk.device.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springblade.desk.device.mapper.RackSetMapper; import org.springblade.desk.device.pojo.entity.FeiBaSetEntity; @@ -91,4 +92,13 @@ public class RackSetServiceImpl extends BaseServiceImpl rackSets = this.list(Wrappers.lambdaQuery(RackSetEntity.class).eq(RackSetEntity::getRsCode, rsCode)); + if (CollectionUtils.isEmpty(rackSets)) { + return null; + } + return rackSets.get(0); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.xml index e19103c6..ae834db2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/iot/mapper/EpLineElectricMapper.xml @@ -24,13 +24,12 @@ SELECT * FROM ( SELECT - ID, DEVICE_ID, WORK_SLOT, ELECTRIC, CREATE_TIME, PUSH_DATA - FROM EP_LINE_ELECTRIC + FROM P_RB_EP_LINE_ELECTRIC WHERE DEVICE_ID = #{deviceCode} AND WORK_SLOT = #{batchNo} AND CREATE_TIME BETWEEN #{startDate} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBindController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBindController.java index cf491320..4a24b877 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBindController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBindController.java @@ -20,6 +20,7 @@ import org.springblade.desk.logistics.pojo.vo.OrderBindVO; import org.springblade.desk.logistics.pojo.vo.TaskVO; import org.springblade.desk.logistics.service.IOrderBindService; import org.springblade.desk.logistics.service.IOrderBoxService; +import org.springblade.desk.order.service.IYieldOrderService; import org.springframework.web.bind.annotation.*; /** @@ -35,6 +36,7 @@ import org.springframework.web.bind.annotation.*; public class OrderBindController { private final IOrderBindService iOrderBindService; private final IOrderBoxService iOrderBoxService; + private final IYieldOrderService iYieldOrderService; @PostMapping("/box-binding") @ApiOperationSupport(order = 1) @@ -82,6 +84,15 @@ public class OrderBindController { return iOrderBindService.getBoxcodelist(); } + @GetMapping("/card-no") + @ApiOperationSupport(order = 5) + @Operation( + summary = "根据流程卡号查询", + description = "根据流程卡号查询" + ) + public R getCardNo(@RequestParam String cardNo) throws BusinessException { + return iYieldOrderService.getCardNo(cardNo); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StorageMonitoringServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StorageMonitoringServiceImpl.java index 19aa9e01..89c9edac 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StorageMonitoringServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StorageMonitoringServiceImpl.java @@ -90,7 +90,7 @@ public class StorageMonitoringServiceImpl implements IStorageMonitoringService { * - 库位ID/任务/库位信息空值校验,跳过异常数据 * - 状态未变化时跳过更新,减少数据库IO */ - @Scheduled(cron = "0 0/5 * * * ?") +// @Scheduled(cron = "0 0/5 * * * ?") @Override // 实现IStorageMonitoringService接口的抽象方法 public void monitoringStation() { // ========== 步骤1:查询所有空闲状态的站点 ========== diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/utils/AgvTaskTypeUtil.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/utils/AgvTaskTypeUtil.java index fb94ff28..eec4f90c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/utils/AgvTaskTypeUtil.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/utils/AgvTaskTypeUtil.java @@ -48,11 +48,25 @@ public class AgvTaskTypeUtil { log.info("起点楼层:{},终点楼层:{}", startFloor, endFloor); // 场景4: 输送线起点(1002)或梳齿架 ---> 站点(二层) -> QM3 - if ((isStartConveyorStart || (startFloor != null && startFloor == 1)) - && endFloor != null && endFloor == 2) { +// if ((isStartConveyorStart || (startFloor != null && startFloor == 1)) +// && endFloor != null && endFloor == 2) { + if (isStartConveyorStart + && endFloor != null && endFloor == 2) { log.info("起点(输送线起点/1层梳齿架)到二层站点任务,使用QM3"); return "QM3"; } + // 场景6: 站点1层 ---> 站点(三层) -> QM13 + if ((startFloor != null && startFloor == 1) + && endFloor != null && endFloor == 2) { + log.info("起点(1层梳齿架)到二层站点任务,使用QM13"); + return "QM13"; + } + // 场景7: 站点3层 ---> 站点(1层) -> QM31 + if ((startFloor != null && startFloor == 2) + && endFloor != null && endFloor == 1) { + log.info("起点(3层)到1层站点任务,使用QM31"); + return "QM31"; + } // 场景1: 站点 <-----> 站点 -> QM if (startFloor != null && endFloor != null) { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java index ff8ac5a4..2461af9d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java @@ -104,15 +104,14 @@ public class OemOrderController extends BladeController { IPage pages = workOrderRunService.queryOemApproval(Condition.getPage(query), approvalQuery); return R.data(pages); } - /** - * 审批 + * 批量审批 */ - @PostMapping("/approval") + @PostMapping("/batchApproval") @ApiOperationSupport(order = 4) - @Operation(summary = "审批", description = "") - public R approval(@Valid @RequestBody OemApproval oemApproval) throws Exception { - return workOrderRunService.approval(oemApproval); + @Operation(summary = "批量审批", description = "") + public R batchApproval(@Valid @RequestBody List oemApprovals) throws Exception { + return workOrderRunService.batchApproval(oemApprovals); } /** @@ -121,13 +120,14 @@ public class OemOrderController extends BladeController { @GetMapping("/prepareOemBatches") @ApiOperationSupport(order = 5) @Operation(summary = "外协分批准备数据", description = "worId") - public R detail(@PathVariable Long worId) { + public R prepareOemBatches(@Parameter(description = "车间订单运行记录主键ID", required = true) @RequestParam Long worId) { WorkOrderRun oldWorkOrderRun = workOrderRunService.getById(worId); WorkOrder oldWorkOrder = workOrderService.getById(oldWorkOrderRun.getWoId()); YieldOrder yieldOrder = yieldOrderService.getById(oldWorkOrder.getYoId()); // 创建新的分批订单对象 WorkOrder newWorkOrder = new WorkOrder(); // 复制原订单基本信息 + newWorkOrder.setId(oldWorkOrder.getId()); newWorkOrder.setYoId(oldWorkOrder.getYoId()); newWorkOrder.setWoCode(workOrderService.nextCode(yieldOrder.getYpCode())); newWorkOrder.setCardNo(workOrderService.nextCardNo(yieldOrder.getYpCode(), oldWorkOrder.getCardNo())); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java index b102137c..64579f2f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java @@ -33,6 +33,7 @@ import org.springblade.core.mp.base.BaseServiceImpl; import java.math.BigDecimal; import java.time.LocalDate; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -73,7 +74,31 @@ public class OemStatementServiceImpl extends BaseServiceImpl Map> oemAndStatementMap = statementVOS.stream().collect(Collectors.groupingBy(StatementVO::getOcName)); + // 创建CompletableFuture列表 + List> futures = new ArrayList<>(); for (Map.Entry> listEntry : oemAndStatementMap.entrySet()) { + CompletableFuture future = CompletableFuture.runAsync(() -> { + try { + processOemStatements(listEntry.getKey(), listEntry.getValue(), price, putStoreDate, + countSuccess, countError); + } catch (Exception e) { + log.error(String.format("处理外协厂商{}的结算单时发生异常", listEntry.getKey()), e); + } + }); + futures.add(future); + } + // 等待所有任务完成 + try { + CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join(); + } catch (Exception e) { + log.error("异步处理结算单时发生异常", e); + } + + return R.data(Map.of( + "success", countSuccess.get(), + "error", countError.get() + )); + /*for (Map.Entry> listEntry : oemAndStatementMap.entrySet()) { //外协厂商下全部需要结算的结算单 List statementVOList = listEntry.getValue(); @@ -81,71 +106,6 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetAllList = getPriceSheets(oemName, putStoreDate); - //假数据测试用 -// List priceSheetAllList = new ArrayList<>(); -// PriceSheetVO priceSheet1 = new PriceSheetVO(); -// priceSheet1.setPrice("60"); -// priceSheet1.setSplyname(oemName); -// priceSheet1.setPrtum("件"); -// priceSheet1.setWono("WO-N2510424439-R002"); -// priceSheet1.setSeqid("GXJG-20250228018"); -// priceSheet1.setGxinfo("玻璃封接电化学抛光"); -// priceSheetAllList.add(priceSheet1); -// PriceSheetVO priceSheet2 = new PriceSheetVO(); -// priceSheet2.setPrice("26"); -// priceSheet2.setSplyname(oemName); -// priceSheet2.setPrtum("件"); -// priceSheet2.setSeqid("GXJG-20250228012"); -// priceSheet2.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet2.setPrtlotno("JI和JHT"); -// priceSheet2.setStairflag("单批阶梯价(按单件面积)"); -// priceSheet2.setLower("5"); -// priceSheet2.setUpper("0"); -// priceSheet2.setPrtno("21E6-575-10724-%螺母"); -// priceSheetAllList.add(priceSheet2); -// PriceSheetVO priceSheet3 = new PriceSheetVO(); -// priceSheet3.setPrice("34"); -// priceSheet3.setSplyname(oemName); -// priceSheet3.setPrtum("件"); -// priceSheet3.setSeqid("GXJG-20250228012"); -// priceSheet3.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet3.setPrtlotno("JI和JHT"); -// priceSheet3.setStairflag("单批阶梯价(按单件面积)"); -// priceSheet3.setLower("10"); -// priceSheet3.setUpper("5.00001"); -// priceSheet3.setPrtno("21E6-575-10724-%螺母"); -// priceSheetAllList.add(priceSheet3); -// PriceSheetVO priceSheet4 = new PriceSheetVO(); -// priceSheet4.setPrice("15"); -// priceSheet4.setSplyname(oemName); -// priceSheet4.setPrtum("件"); -// priceSheet4.setSeqid("GXJG-20250228012"); -// priceSheet4.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet4.setPrtlotno("JHT"); -// priceSheet4.setStairflag("非阶梯价"); -// priceSheet4.setPrtno("21E6-575-10724-%螺母"); -// priceSheetAllList.add(priceSheet4); -// PriceSheetVO priceSheet5 = new PriceSheetVO(); -// priceSheet5.setPrice("99"); -// priceSheet5.setSplyname(oemName); -// priceSheet5.setPrtum("件"); -// priceSheet5.setSeqid("GXJG-20250228012"); -// priceSheet5.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet5.setStairflag("非阶梯价"); -// priceSheet5.setPrtno("21E6-575-10724-%螺母"); -// priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)"); -// priceSheetAllList.add(priceSheet5); -// PriceSheetVO priceSheet6 = new PriceSheetVO(); -// priceSheet6.setPrice("200"); -// priceSheet6.setSplyname(oemName); -// priceSheet6.setPrtum("件"); -// priceSheet6.setSeqid("GXJG-20250228012"); -// priceSheet6.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet6.setStairflag("非阶梯价"); -// priceSheet6.setPrtno("21E6-575-10724-%螺母"); -// priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)"); -// priceSheetAllList.add(priceSheet6); - if (priceSheetAllList.isEmpty()) { //【结算异常】 statementVOList.forEach(statementVO -> { @@ -155,43 +115,43 @@ public class OemStatementServiceImpl extends BaseServiceImpl Map> priceSheetMap = priceSheetAllList.stream().collect(Collectors.groupingBy(PriceSheetVO::getGxinfo)); - /*statementVOList.forEach(statementVO -> { - List matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); - if (matchedPriceSheets.isEmpty()) { - return; - } - statementVO.setPriceSheetList(matchedPriceSheets); - });*/ //3.为每个结算单匹配报价集合 statementVOList.forEach(statementVO -> { - List matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); - if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) { - return; - } - statementVO.setPriceSheetList(matchedPriceSheets); - //4.匹配规则,过滤出唯一报价 - //①.匹配车间订单号 - if (ruleWoNo(statementVO, true)) { - return; - } - //②.匹配物料名称和质量等级 - if (rulePartNameAndProdIdent(statementVO)) { - return; - } - //③.匹配金价银价 - if (ruleGoldAndSilverPrices(statementVO, price)) { - return; - } - //④.涂色标、涂色带、涂箭头 - if (ruleColor(statementVO, true)) { - return; - } - //⑤.物料号匹配 - if (ruleGoods(statementVO)) { - return; - } - //⑥.阶梯价匹配 - if (ruleTieredPricing(statementVO, true)) { + try { + List matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); + if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) { + return; + } + statementVO.setPriceSheetList(matchedPriceSheets); + //4.匹配规则,过滤出唯一报价 + //①.匹配车间订单号 + if (ruleWoNo(statementVO, true)) { + return; + } + //②.匹配物料名称和质量等级 + if (rulePartNameAndProdIdent(statementVO)) { + return; + } + //③.匹配金价银价 + if (ruleGoldAndSilverPrices(statementVO, price)) { + return; + } + //④.涂色标、涂色带、涂箭头 + if (ruleColor(statementVO, true)) { + return; + } + //⑤.物料号匹配 + if (ruleGoods(statementVO)) { + return; + } + //⑥.阶梯价匹配 + if (ruleTieredPricing(statementVO, true)) { + return; + } + }catch (Exception e){ + log.error("结算单处理异常", e); + statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); + statementVO.setMemo("结算处理异常: " + e.getMessage()); return; } }); @@ -217,7 +177,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl priceSheetAllList = getPriceSheets(oemName); - //假数据测试用 -// List priceSheetAllList = new ArrayList<>(); -// PriceSheetVO priceSheet1 = new PriceSheetVO(); -// priceSheet1.setPrice("60"); -// priceSheet1.setSplyname(oemName); -// priceSheet1.setPrtum("件"); -// priceSheet1.setWono("WO-N2510424439-R002"); -// priceSheet1.setSeqid("GXJG-20250228018"); -// priceSheet1.setGxinfo("玻璃封接电化学抛光"); -// priceSheet1.setStartdat("2026-01-15"); -// priceSheetAllList.add(priceSheet1); -// PriceSheetVO priceSheet2 = new PriceSheetVO(); -// priceSheet2.setPrice("26"); -// priceSheet2.setSplyname(oemName); -// priceSheet2.setPrtum("件"); -// priceSheet2.setSeqid("GXJG-20250228012"); -// priceSheet2.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet2.setPrtlotno("JI和JHT"); -// priceSheet2.setStairflag("单批阶梯价(按单件面积)"); -// priceSheet2.setLower("5"); -// priceSheet2.setUpper("0"); -// priceSheet2.setPrtno("21E6-575-10724-%螺母"); -// priceSheet2.setStartdat("2026-01-15"); -// priceSheetAllList.add(priceSheet2); -// PriceSheetVO priceSheet3 = new PriceSheetVO(); -// priceSheet3.setPrice("34"); -// priceSheet3.setSplyname(oemName); -// priceSheet3.setPrtum("件"); -// priceSheet3.setSeqid("GXJG-20250228012"); -// priceSheet3.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet3.setPrtlotno("JI和JHT"); -// priceSheet3.setStairflag("单批阶梯价(按单件面积)"); -// priceSheet3.setLower("10"); -// priceSheet3.setUpper("5.00001"); -// priceSheet3.setPrtno("21E6-575-10724-%螺母"); -// priceSheet3.setStartdat("2026-01-15"); -// priceSheetAllList.add(priceSheet3); -// PriceSheetVO priceSheet4 = new PriceSheetVO(); -// priceSheet4.setPrice("15"); -// priceSheet4.setSplyname(oemName); -// priceSheet4.setPrtum("件"); -// priceSheet4.setSeqid("GXJG-20250228012"); -// priceSheet4.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet4.setPrtlotno("JHT"); -// priceSheet4.setStairflag("非阶梯价"); -// priceSheet4.setPrtno("21E6-575-10724-%螺母"); -// priceSheet4.setStartdat("2026-01-15"); -// priceSheetAllList.add(priceSheet4); -// PriceSheetVO priceSheet5 = new PriceSheetVO(); -// priceSheet5.setPrice("99"); -// priceSheet5.setSplyname(oemName); -// priceSheet5.setPrtum("件"); -// priceSheet5.setSeqid("GXJG-20250228012"); -// priceSheet5.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet5.setStairflag("非阶梯价"); -// priceSheet5.setPrtno("21E6-575-10724-%螺母"); -// priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)"); -// priceSheet5.setStartdat("2026-01-15"); -// priceSheetAllList.add(priceSheet5); -// PriceSheetVO priceSheet6 = new PriceSheetVO(); -// priceSheet6.setPrice("200"); -// priceSheet6.setSplyname(oemName); -// priceSheet6.setPrtum("件"); -// priceSheet6.setSeqid("GXJG-20250228012"); -// priceSheet6.setGxinfo("玻璃封接电镀去氧化皮"); -// priceSheet6.setStairflag("非阶梯价"); -// priceSheet6.setPrtno("21E6-575-10724-%螺母"); -// priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)"); -// priceSheet6.setStartdat("2026-01-16"); -// priceSheetAllList.add(priceSheet6); if (priceSheetAllList.isEmpty()) { //【结算异常】 statementVOList.forEach(statementVO -> { @@ -345,40 +235,202 @@ public class OemStatementServiceImpl extends BaseServiceImpl { + try { + List matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); + if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) { + return; + } + statementVO.setPriceSheetList(matchedPriceSheets); + //4.匹配规则,过滤出唯一报价 + //①.匹配车间订单号 + if (ruleWoNo(statementVO, false)) { + return; + } + //②.匹配物料名称和质量等级 + if (rulePartNameAndProdIdent(statementVO)) { + return; + } + //③.匹配金价银价 + if (ruleGoldAndSilverPrices(statementVO, price)) { + return; + } + //④.涂色标、涂色带、涂箭头 + if (ruleColor(statementVO, false)) { + return; + } + //⑤.物料号匹配 + if (ruleGoods(statementVO)) { + return; + } + //⑥.阶梯价匹配 + if (ruleTieredPricing(statementVO, false)) { + return; + } + } catch (Exception e) { + log.error("结算单处理异常", e); + statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); + statementVO.setMemo("结算处理异常: " + e.getMessage()); + return; + } + }); + } + } + return statementVOS; + } + + /** + * 以外协厂商分组结算 + * + * @param oemName + * @param statementVOList + * @param price + * @param putStoreDate + * @param countSuccess + * @param countError + */ + private void processOemStatements(String oemName, List statementVOList, + BigDecimal price, LocalDate putStoreDate, + AtomicInteger countSuccess, AtomicInteger countError) { + // 1. 查询报价单 + List priceSheetAllList = getPriceSheets(oemName, putStoreDate); + //假数据测试用 +// List priceSheetAllList = new ArrayList<>(); +// PriceSheetVO priceSheet1 = new PriceSheetVO(); +// priceSheet1.setPrice("60"); +// priceSheet1.setSplyname(oemName); +// priceSheet1.setPrtum("件"); +// priceSheet1.setWono("WO-N2510424439-R002"); +// priceSheet1.setSeqid("GXJG-20250228018"); +// priceSheet1.setGxinfo("玻璃封接电化学抛光"); +// priceSheetAllList.add(priceSheet1); +// PriceSheetVO priceSheet2 = new PriceSheetVO(); +// priceSheet2.setPrice("26"); +// priceSheet2.setSplyname(oemName); +// priceSheet2.setPrtum("件"); +// priceSheet2.setSeqid("GXJG-20250228012"); +// priceSheet2.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet2.setPrtlotno("JI和JHT"); +// priceSheet2.setStairflag("单批阶梯价(按单件面积)"); +// priceSheet2.setLower("5"); +// priceSheet2.setUpper("0"); +// priceSheet2.setPrtno("21E6-575-10724-%螺母"); +// priceSheetAllList.add(priceSheet2); +// PriceSheetVO priceSheet3 = new PriceSheetVO(); +// priceSheet3.setPrice("34"); +// priceSheet3.setSplyname(oemName); +// priceSheet3.setPrtum("件"); +// priceSheet3.setSeqid("GXJG-20250228012"); +// priceSheet3.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet3.setPrtlotno("JI和JHT"); +// priceSheet3.setStairflag("单批阶梯价(按单件面积)"); +// priceSheet3.setLower("10"); +// priceSheet3.setUpper("5.00001"); +// priceSheet3.setPrtno("21E6-575-10724-%螺母"); +// priceSheetAllList.add(priceSheet3); +// PriceSheetVO priceSheet4 = new PriceSheetVO(); +// priceSheet4.setPrice("15"); +// priceSheet4.setSplyname(oemName); +// priceSheet4.setPrtum("件"); +// priceSheet4.setSeqid("GXJG-20250228012"); +// priceSheet4.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet4.setPrtlotno("JHT"); +// priceSheet4.setStairflag("非阶梯价"); +// priceSheet4.setPrtno("21E6-575-10724-%螺母"); +// priceSheetAllList.add(priceSheet4); +// PriceSheetVO priceSheet5 = new PriceSheetVO(); +// priceSheet5.setPrice("99"); +// priceSheet5.setSplyname(oemName); +// priceSheet5.setPrtum("件"); +// priceSheet5.setSeqid("GXJG-20250228012"); +// priceSheet5.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet5.setStairflag("非阶梯价"); +// priceSheet5.setPrtno("21E6-575-10724-%螺母"); +// priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)"); +// priceSheetAllList.add(priceSheet5); +// PriceSheetVO priceSheet6 = new PriceSheetVO(); +// priceSheet6.setPrice("200"); +// priceSheet6.setSplyname(oemName); +// priceSheet6.setPrtum("件"); +// priceSheet6.setSeqid("GXJG-20250228012"); +// priceSheet6.setGxinfo("玻璃封接电镀去氧化皮"); +// priceSheet6.setStairflag("非阶梯价"); +// priceSheet6.setPrtno("21E6-575-10724-%螺母"); +// priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)"); +// priceSheetAllList.add(priceSheet6); + if (priceSheetAllList.isEmpty()) { + // 【结算异常】 + statementVOList.forEach(statementVO -> { + statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); + statementVO.setMemo(String.format("外协厂商【%s】匹配无报价记录", oemName)); + }); + } else { + // 2. 工序分组Map<工序, 报价列表> + Map> priceSheetMap = priceSheetAllList.stream() + .collect(Collectors.groupingBy(PriceSheetVO::getGxinfo)); + + // 3. 为每个结算单匹配报价集合 + statementVOList.forEach(statementVO -> { + try { List matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) { return; } statementVO.setPriceSheetList(matchedPriceSheets); - //4.匹配规则,过滤出唯一报价 - //①.匹配车间订单号 - if (ruleWoNo(statementVO, false)) { + + // 4. 匹配规则,过滤出唯一报价 + // ①. 匹配车间订单号 + if (ruleWoNo(statementVO, true)) { return; } - //②.匹配物料名称和质量等级 + // ②. 匹配物料名称和质量等级 if (rulePartNameAndProdIdent(statementVO)) { return; } - //③.匹配金价银价 + // ③. 匹配金价银价 if (ruleGoldAndSilverPrices(statementVO, price)) { return; } - //④.涂色标、涂色带、涂箭头 - if (ruleColor(statementVO, false)) { + // ④. 涂色标、涂色带、涂箭头 + if (ruleColor(statementVO, true)) { return; } - //⑤.物料号匹配 + // ⑤. 物料号匹配 if (ruleGoods(statementVO)) { return; } - //⑥.阶梯价匹配 - if (ruleTieredPricing(statementVO, false)) { + // ⑥. 阶梯价匹配 + if (ruleTieredPricing(statementVO, true)) { return; } - }); - } + } catch (Exception e) { + log.error("结算单处理异常", e); + statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); + statementVO.setMemo("结算处理异常: " + e.getMessage()); + } + }); + } + + // 5. 批量保存 + List saves = statementVOList.stream() + .map(statementVO -> { + // 统计数量 + if (Objects.equals(OemStatementEntity.IN_SETTLEMENT, statementVO.getRosStatus())) { + countSuccess.incrementAndGet(); + } else if (Objects.equals(OemStatementEntity.ERR_SETTLEMENT, statementVO.getRosStatus())) { + countError.incrementAndGet(); + } + OemStatementEntity entity = new OemStatementEntity(); + BeanUtils.copyProperties(statementVO, entity); + entity.setUpdateTime(new Date()); + entity.setIsDeleted(0); + return entity; + }) + .collect(Collectors.toList()); + + // 批量插入或更新 + if (!saves.isEmpty()) { + baseMapper.insertOrUpdate(saves); } - return statementVOS; } @Override @@ -468,17 +520,22 @@ public class OemStatementServiceImpl extends BaseServiceImpl getPriceSheets(String oemName, LocalDate putStoreDate) { - PriceSheetQuery query = new PriceSheetQuery(); - query.setOcName(oemName); - query.setInDateStart(putStoreDate); - query.setInDateEnd(putStoreDate); + try { + PriceSheetQuery query = new PriceSheetQuery(); + query.setOcName(oemName); + query.setInDateStart(putStoreDate); + query.setInDateEnd(putStoreDate); - R> pageR = erpDataOemClient.priceSheetData(query, new Query() {{ - setSize(99999); - }}); + R> pageR = erpDataOemClient.priceSheetData(query, new Query() {{ + setSize(99999); + }}); - if (pageR != null && pageR.getData() != null) { - return pageR.getData().getRecords(); + if (pageR != null && pageR.getData() != null) { + return pageR.getData().getRecords(); + } + } catch (Exception e) { + log.error("获取报价单失败,失败原因:{}", e); + return Collections.emptyList(); } return Collections.emptyList(); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemTaskBillServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemTaskBillServiceImpl.java index 4e1dc02e..7767c8bb 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemTaskBillServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemTaskBillServiceImpl.java @@ -21,6 +21,7 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.time.LocalDate; @@ -98,6 +99,7 @@ public class OemTaskBillServiceImpl extends BaseServiceImpl fillingDetailList = handleOemTaskBill.getFillingDetailList(); if (null != fillingDetailList && fillingDetailList.size() > 0) { for (BsFillingDetailEntity fillingDetail : fillingDetailList) { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/MoldDemandClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/MoldDemandClient.java new file mode 100644 index 00000000..15286703 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/MoldDemandClient.java @@ -0,0 +1,29 @@ +package org.springblade.desk.order.feign; + +import io.swagger.v3.oas.annotations.Hidden; +import lombok.RequiredArgsConstructor; +import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.desk.order.pojo.entity.MoldDemand; +import org.springblade.desk.order.service.IMoldDemandService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Feign 排产相关定时任务接口 + * + * @author Chill + */ +@NonDS +@Hidden() +@RestController +@RequiredArgsConstructor +public class MoldDemandClient implements IMoldDemandClient { + + private final IMoldDemandService moldDemandService; + + @Override + @PostMapping(SAVE) + public Boolean save(MoldDemand moldDemand) { + return moldDemandService.save(moldDemand); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/OrderClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/OrderClient.java new file mode 100644 index 00000000..1e8284ec --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/OrderClient.java @@ -0,0 +1,53 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.desk.order.feign; + +import io.swagger.v3.oas.annotations.Hidden; +import lombok.RequiredArgsConstructor; +import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.desk.order.pojo.entity.YieldPlan; +import org.springblade.desk.order.service.IYieldPlanService; +import org.springframework.web.bind.annotation.RestController; + +/** + * Feign 排产相关定时任务接口 + * + * @author Chill + */ +@NonDS +@Hidden() +@RestController +@RequiredArgsConstructor +public class OrderClient implements IOrderClient { + + private final IYieldPlanService yieldPlanService; + + @Override + public Boolean saveGlassCake(YieldPlan yieldPlan) { + yieldPlanService.saveGlassCake(yieldPlan); + return null; + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.java index d93db2b7..c7bd7ecf 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.java @@ -22,4 +22,12 @@ public interface PlateGoodsApplyMapper extends BaseMapper { * @return */ List selectPage(IPage page, PlateGoodsApply entity); + + /** + * 查询当前库中的最大编码 + * + * @param codePattern + * @return + */ + String getMaxByCodePattern(String codePattern); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.xml index 780c7960..7b140b6a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.xml @@ -5,7 +5,7 @@ ID, TENANT_ID, CREATE_USER, CREATE_TIME, CREATE_DEPT, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED, - APPROVAL_MAN, APPROVAL_TIME, APPROVAL_STATUS, APPROVAL_MEMO, WC_ID, GOODS_CODE, GOODS_DEMAND, GOODS_NAME, + APPLY_CODE,APPROVAL_MAN, APPROVAL_TIME, APPROVAL_STATUS, APPROVAL_MEMO, WC_ID, GOODS_CODE, GOODS_DEMAND, GOODS_NAME, GOODS_ADD_TOTAL, GOODS_DEMAND_TOTAL, DECLARED_QUOTA_TOTAL @@ -23,4 +23,15 @@ AND status = #{entity.status} + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsRecordMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsRecordMapper.xml index 8ae13313..df6619f2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsRecordMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsRecordMapper.xml @@ -9,7 +9,7 @@ WC_ID, GOODS_CODE, GOODS_DEMAND, SILVER_POTASSIUM, COEFFICIENT, APPROVAL_MAN, APPROVAL_TIME, APPROVAL_STATUS, APPROVAL_MEMO, DECLARED_QUOTA, DECLARED_SILVER, DECLARED_STATUS, GOODS_BO_ID, COEFFICIENT_BO_ID, PGR_CODE, SURPLUS, SILVER_POTASSIUM_RESIDUE, DEMAND_CODE, INVOLVING_RECORD_CODE, - NOT_ADD_VAL, DETAIL_ORDER_NUM + NOT_ADD_VAL SELECT ID, TENANT_ID, CREATE_USER, CREATE_DEPT, CREATE_TIME, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED, - YO_ID, CRAFT_NO, PROCESS_NO, PPS_ID, MAKE_MEMO, HOUR_QUOTA, PID, START_TIME, END_TIME, MAKE_TEAM, OC_ID, - CA_ID, RP_ID, WORK_CENTER_ID + YO_ID, CRAFT_NO, PROCESS_NO, PPS_ID, MAKE_MEMO, HOUR_QUOTA, PID, START_TIME, END_TIME, MAKE_TEAM, + OC_ID, CA_ID, RP_ID, WORK_CENTER_ID, IS_OUTSOURCE, PROCESS_CODE, PROCESS_NAME FROM MES_YIELD_ORDER_CRAFT WHERE IS_DELETED = 0 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IMoldApplyService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IMoldApplyService.java index 0629c0d4..d2febd8d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IMoldApplyService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IMoldApplyService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import org.springblade.desk.order.pojo.entity.MoldApply; +import java.util.Date; import java.util.List; /** @@ -46,4 +47,28 @@ public interface IMoldApplyService extends BaseService { * @return */ boolean saveBatchByPage(List applyList); + + /** + * 下达模具计划 + * + * @param partCode + * @param moCode + * @param planType + * @param quantity + * @param needDate + * @param level + * @param keeper + * @param createMan + * @param memo + * @return + */ + String createMoldPlan(String partCode, + String moCode, + String planType, + Integer quantity, + Date needDate, + String level, + String keeper, + String createMan, + String memo); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java index fe589c31..7475fdef 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java @@ -5,7 +5,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.validation.constraints.NotEmpty; import org.springblade.common.exception.BusinessException; import org.springblade.core.mp.base.BaseService; +import org.springblade.core.tool.api.R; +import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.order.pojo.entity.YieldOrder; +import org.springblade.desk.order.pojo.entity.YieldPlan; import java.util.List; @@ -54,6 +57,15 @@ public interface IYieldOrderService extends BaseService { */ IPage pageMaterialApply(IPage page, Long wcId, Integer materialType, Integer overHalfMon); + /** + * 查询是否存在玻璃饼生产订单 + * + * @param partCode + * @param memo + * @return + */ + List findByPartCodeAndMemo(String partCode, String memo); + /** * 数据校验 * @@ -199,11 +211,12 @@ public interface IYieldOrderService extends BaseService { /** * 根据 零件号 和 批次号查询 + * * @param partCode * @param batchNo * @return */ - YieldOrder selectByPartCOdeAndBatchNo(String partCode, String batchNo); + YieldOrder selectByPartCOdeAndBatchNo(String partCode, String batchNo, String reworkOrder); /** *

方法名: getNewCardNo

@@ -212,7 +225,29 @@ public interface IYieldOrderService extends BaseService { * @param cardNo 旧单号 * @return java.lang.String */ - String getNewCardNo(String cardNo); + String getNewCardNo(String cardNo); Long getWcId(Long orderId); + + R getCardNo(String cardNo); + + + /** + * 下达玻璃饼生产订单 + * + * @param yieldPlan + * @param dsPart + */ + void saveGlassCake(YieldPlan yieldPlan, DsPartEntity dsPart); + + /** + * 下达玻璃饼生产订单 - 调用ERP存储过程 + * + * @param yoCode + * @param cardNo + * @param batchNo + * @param po + * @param dsPartSub + */ + void saveGlassCake(String yoCode, String cardNo, String batchNo, YieldPlan po, DsPartEntity dsPartSub); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java index f35808bc..6c50e32e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldPlanService.java @@ -48,6 +48,22 @@ public interface IYieldPlanService extends BaseService { */ List getFirstProcess(String partCode); + /** + * 保存生产计划 + * + * @param yieldPlan + * @return + */ + Boolean saveYieldPlan(YieldPlan yieldPlan); + + /** + * 根据生产计划生成玻璃饼订单 + * + * @param yieldPlan + * @return + */ + Boolean saveGlassCake(YieldPlan yieldPlan); + /** * 根据生产计划ID生成玻璃饼订单 * diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java index 66de4376..bfb8b891 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java @@ -11,6 +11,7 @@ import org.springblade.desk.order.pojo.enums.MoldApplyEnum; import org.springblade.desk.order.service.IMoldApplyService; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; /** @@ -51,4 +52,38 @@ public class MoldApplyServiceImpl extends BaseServiceImpl findByPartCodeAndMemo(String partCode, String memo) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(YieldOrder.class) + .eq(YieldOrder::getIsDeleted, CommonConstant.DELETE_FALSE) + .eq(YieldOrder::getPartCode, partCode) + .eq(YieldOrder::getMemo, memo); + List yieldOrderList = baseMapper.selectList(queryWrapper); + return yieldOrderList; + } + @Override public String dataVerify(List ids) { // 先根据ID查询订单列表 @@ -391,13 +407,13 @@ public class YieldOrderServiceImpl extends BaseServiceImpl subList = new ArrayList<>(); - subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConst.SIN_TER_TYPE_SMM, "石墨模")); - subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConst.SIN_TER_TYPE_KT, "壳体")); - subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConst.SIN_TER_TYPE_CZ, "插针")); + subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_SMM, "石墨模")); + subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_KT, "壳体")); + subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_CZ, "插针")); if (subList.size() == 0) { throw new BusinessException("未找到烧结前处理子件信息,请联系工艺编制!"); } @@ -661,16 +677,31 @@ public class YieldOrderServiceImpl extends BaseServiceImpl listWo = workOrderMapper.listByYoId(yo.getId()); + boolean completed = listWo.stream().map(wo -> wo.getRunStatus() >= WorkOrder.RUN_STATUS_COMPLETED).findAny().isPresent(); + if (completed) { + yo.setStatus(curStatus); + } + } else if (YieldOrder.CUR_STATUS_VOIDED.equals(curStatus)) { //整单报废 List listWo = workOrderMapper.selectList(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getYoId, yo.getId())); boolean completed = listWo.stream().map(wo -> WorkOrder.RUN_STATUS_VOIDED.equals(wo.getRunStatus())).findAny().isPresent(); if (completed) { yo.setStatus(curStatus); } - // 生产计划状态变为已完工时,推送至新mes,更新订单状态 -// httpRequestService.pushYieldOrderStatusToNewMes(yo.getCardNo(), curStatus); } + this.updateById(yo); } @Override @@ -701,8 +732,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpl list = list(new LambdaQueryWrapper().eq(YieldOrder::getCardNo, cardNo)); + if (list==null||list.size()==0) { + return R.fail("路线卡号未查询到详情"); + } + + return R.data(list.get(0)); + } + /** * 验证零件子件信息 * @@ -760,13 +818,13 @@ public class YieldOrderServiceImpl extends BaseServiceImpl wrapper = Wrappers.lambdaQuery(YieldOrder.class).eq(YieldOrder::getCardNo, codePattern); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(YieldOrder.class) + .eq(YieldOrder::getCardNo, codePattern); YieldOrder yieldOrder = baseMapper.selectOne(wrapper); if (yieldOrder != null && yieldOrder.getId() != null) { @@ -865,23 +924,54 @@ public class YieldOrderServiceImpl extends BaseServiceImpl wrapper = Wrappers.lambdaQuery(YieldOrder.class) + .likeRight(YieldOrder::getBatchNo, codePattern) + .orderBy(true, false, YieldOrder::getYoCode); + YieldOrder yieldOrder = baseMapper.selectOne(wrapper); + + if (yieldOrder != null) { + num = Integer.parseInt(yieldOrder.getBatchNo().substring(codePattern.length(), codePattern.length() + len)); + } + num++; + return num; + } private String nextBatchNo() { // 自增总长度 int len = 3; - // 自增值 - int num = 0; // 编码模式 String codePattern = "R" + DateUtil.today(); + int num = this.getMaxCodeByPattern(codePattern, len); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(YieldOrder.class).likeRight(YieldOrder::getBatchNo, codePattern).orderBy(true, false, YieldOrder::getYoCode); - YieldOrder yieldOrder = baseMapper.selectOne(wrapper); + // 下个编码 + return codePattern + StringPrefixUtils.prefix(String.valueOf(num), "0", len); + } - if (yieldOrder != null) { - num = Integer.parseInt(yieldOrder.getBatchNo().substring(codePattern.length(), codePattern.length() + len)); + /** + * @param codeType 0:订单号、1:流程卡号;2、批次号 + * @return String + * @Description: 用于给玻璃饼产生对应的订单号、 流程卡号、批次号 + * @Author dxl + * @CreateTime 2023/10/12 16:03 + */ + private String nextBlbCode(int codeType) { + // 自增总长度 + int len = 5; + if (codeType == 2) { + len = 3; } - num++; + + // 编码模式 + String codePattern = "RB" + DateUtil.today(); + int num = this.getMaxCodeByPattern(codePattern, len); + // 下个编码 + if (codeType == 0) { + codePattern = "WO-B" + DateUtil.today(); + } return codePattern + StringPrefixUtils.prefix(String.valueOf(num), "0", len); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java index 5238b84f..5e7e53f9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java @@ -11,7 +11,9 @@ import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.ResultCode; +import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.ObjectUtil; +import org.springblade.desk.dashboard.constant.DsPartConstant; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.service.IDsPartService; import org.springblade.desk.order.mapper.YieldPlanMapper; @@ -100,25 +102,43 @@ public class YieldPlanServiceImpl extends BaseServiceImpl glassCakePartList = dsPartService.selectDsPartByPatCode(yieldPlan.getPartCode(), DsPartConstant.SIN_TER_TYPE_BLB); + if (glassCakePartList != null && glassCakePartList.size() > 0) { + for (DsPartEntity dsPart : glassCakePartList) { + //不包含玻璃字样的代表维护错误,跳过 + if (StringUtils.isBlank(dsPart.getPartCode()) || StringUtils.isBlank(dsPart.getPartName()) || !dsPart.getPartName().contains("玻璃")) { + continue; + } + List glassCakeOrderList = yieldOrderService.findByPartCodeAndMemo(dsPart.getPartCode(), yieldPlan.getYpCode()); + if (glassCakeOrderList == null || glassCakeOrderList.size() == 0) { + yieldOrderService.saveGlassCake(yieldPlan, dsPart); + } + } + } + return true; + } + @Override public Boolean saveGlassCake(String yieldPlanId) { // 根据ID查询生产计划信息 YieldPlan yieldPlan = baseMapper.selectById(yieldPlanId); - //TODO 调用生产订单服务类中方法,生成玻璃饼订单并保存 -// List blbSubList = dsPartSubService.listByPartCode(yieldPlan.getPartCode(), DsPartSub.SIN_TER_TYPE_BLB); -// if (blbSubList != null && blbSubList.size() > 0) { -// List blbList = null; -// for (DsPartSub dps : blbSubList) { -// //不包含玻璃字样的代表维护错误,跳过 -// if (StringUtils.isBlank(dps.getSubCode()) || StringUtils.isBlank(dps.getSubName()) || !dps.getSubName().contains("玻璃")) { -// continue; -// } -// blbList = pjYieldOrderService.findByPartCodeAndMemo(dps.getSubCode(), yieldPlan.getYpCode()); -// if (blbList == null || blbList.size() == 0) { -// pjYieldOrderService.saveBlbOrder(po, dps); -// } -// } -// } + + this.saveGlassCake(yieldPlan); return true; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DsRbFilePreserveController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DsRbFilePreserveController.java new file mode 100644 index 00000000..8cfb68a5 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DsRbFilePreserveController.java @@ -0,0 +1,58 @@ +package org.springblade.desk.produce.controller; + +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springblade.common.utils.CommonUtil; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO; +import org.springblade.desk.produce.pojo.dto.TaskCompleteDTO; +import org.springblade.desk.produce.pojo.dto.TaskCompleteOrderDTO; +import org.springblade.desk.produce.pojo.entity.*; +import org.springblade.desk.produce.pojo.vo.ByCardNoByPlanVO; +import org.springblade.desk.produce.pojo.vo.DsRbFilePreserveVO; +import org.springblade.desk.produce.pojo.vo.TaskCompleteVO; +import org.springblade.desk.produce.service.IDisTaskingService; +import org.springblade.desk.produce.service.IDsRbFilePreserveService; +import org.springblade.desk.produce.service.IPdaSaveService; +import org.springblade.desk.produce.service.IWorkPlanLogService; +import org.springblade.system.cache.UserCache; +import org.springblade.system.pojo.entity.User; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * + * + * @author litao + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/DisTaskingController") +public class DsRbFilePreserveController extends BladeController { + + private final IDsRbFilePreserveService dsRbFilePreserveService; + + + + @GetMapping("/page") + @ApiOperationSupport(order = 1) + @Operation(summary = "调度任务分派", description = "传入taskCompleteDTO") + public R> disTaskHandle(DsRbFilePreserve taskCompleteDTO, Query query) { + return R.data(null); + } + + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java index a7b29947..fa70bca0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java @@ -1,20 +1,22 @@ package org.springblade.desk.produce.controller; +import com.alibaba.fastjson.JSONObject; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; -import org.springblade.core.mp.support.Condition; -import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; +import org.springblade.desk.device.pojo.entity.EquipmentEntity; +import org.springblade.desk.device.pojo.entity.FeiBaSetEntity; import org.springblade.desk.device.pojo.entity.RackSetEntity; -import org.springblade.desk.device.pojo.vo.RackSetVO; -import org.springblade.desk.device.wrapper.RackSetWrapper; -import org.springblade.desk.produce.pojo.dto.TurnTypeDTO; +import org.springblade.desk.produce.pojo.vo.BindModelVO; +import org.springblade.desk.produce.pojo.vo.PdaProRelevantVO; import org.springblade.desk.produce.service.IPdaLoadService; import org.springblade.desk.quality.pojo.entity.InspectionTask; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * @ClassName PdaLoadController * @Description: 手持移动端数据查询接口 @@ -30,41 +32,46 @@ import org.springframework.web.bind.annotation.*; public class PdaLoadController { private final IPdaLoadService pdaLoadService; + @GetMapping(value = "/loadBindData/{cardNo}") @ApiOperationSupport(order = 1) - @Operation(summary = "加载绑定需要的流程卡数据", description = "传入cardNo") - public R loadBindData(@PathVariable String cardNo) { - return R.data(pdaLoadService.loadBindData(AuthUtil.getUser(), cardNo)); + @Operation(summary = "根据流程卡号数据", description = "传入cardNo") + public R loadBindData(@PathVariable String cardNo) { + return R.data(pdaLoadService.loadBindData(1297L, cardNo)); } - @GetMapping(value = "getBsFeiBaSetByCode/{rsCode}") + + @GetMapping(value = "/getBsRackSetByCode/{rsCode}") @ApiOperationSupport(order = 2) @Operation(summary = "根据挂具编码查询数据", description = "传入rsCode") - public R getBsFeiBaSetByCode(@PathVariable String rsCode) { + public R getBsRackSetByCode(@PathVariable String rsCode) { return R.data(pdaLoadService.getBsRackSetByCode(rsCode)); } - @GetMapping(value = "/getBsFeiBaSetByCodeUn/{fsCode}") + + @GetMapping(value = "/getBsFeiBaSetByCode/{fsCode}") @ApiOperationSupport(order = 3) - @Operation(summary = "根据挂具编码查询数据(解绑)", description = "传入fsCode") - public R getBsFeiBaSetByCodeUn(@PathVariable String fsCode) { + @Operation(summary = "根据飞靶编码查询数据", description = "fsCode") + public R getBsFeiBaSetByCode(@PathVariable String fsCode) { return R.data(pdaLoadService.getBsFeiBaSetByCode(fsCode)); } @GetMapping(value = "/getEcByDeviceCode/{deviceCode}") @ApiOperationSupport(order = 4) @Operation(summary = "根据设备编码查询数据", description = "传入deviceCode") - public R getEcByDeviceCode(@PathVariable String deviceCode) { + public R getEcByDeviceCode(@PathVariable String deviceCode) { return R.data(pdaLoadService.getEcByCode(deviceCode)); } + @GetMapping(value = "/loadSubOrder/{cardNo}") @ApiOperationSupport(order = 5) @Operation(summary = "加载子件订单入库数据", description = "传入cardNo") public R loadSubOrder(@PathVariable String cardNo) { return R.data(pdaLoadService.loadSubOrder(cardNo)); } + @GetMapping(value = "/loadProTest/{cardNo}") @ApiOperationSupport(order = 6) @Operation(summary = "加载当前工序检验数据", description = "传入cardNo") - public R loadProTest(@PathVariable String cardNo) { + public R loadProTest(@PathVariable String cardNo) { return R.data(pdaLoadService.loadProTestWorkPlan(cardNo)); } @@ -74,6 +81,7 @@ public class PdaLoadController { public R loadPrMacToolUseByMtnCode(@PathVariable String mtnCode) { return R.data(pdaLoadService.loadPrMacToolUseByMtnCode(mtnCode)); } + @GetMapping(value = "/deletedProduceRun/{mtnCode}") @ApiOperationSupport(order = 8) @Operation(summary = "根据同槽号删除信息", description = "传入mtnCode") @@ -89,4 +97,11 @@ public class PdaLoadController { return R.status(pdaLoadService.saveProCheck(inspectionTask)); } + @GetMapping(value = "/getHangNum") + @ApiOperationSupport(order = 10) + @Operation(summary = "根据设备编号获取挂次号", description = "") + public R> getHangNum(@RequestParam String deviceCode) { + return R.data(pdaLoadService.getHangNum(deviceCode)); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java index 49b0d514..9d7b66d8 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java @@ -1,20 +1,22 @@ package org.springblade.desk.produce.controller; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springblade.core.tool.api.R; import org.springblade.desk.basic.pojo.entity.BasicClazz; import org.springblade.desk.basic.service.IBasicClazzService; -import org.springblade.desk.produce.pojo.entity.MesEquipmentCardEntity; +import org.springblade.desk.produce.pojo.dto.DeviceBindDTO; +import org.springblade.desk.produce.pojo.vo.MacToolUseVO; import org.springblade.desk.produce.pojo.vo.SjEcBingCardVo; import org.springblade.desk.produce.pojo.vo.UnBingDeviceVo; import org.springblade.desk.produce.pojo.vo.UnBingVo; import org.springblade.desk.produce.service.IPdaSaveService; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * @ClassName PdaLoadController * @Description: 手持移动端数据查询接口 @@ -26,90 +28,101 @@ import org.springframework.web.bind.annotation.*; @RestController @RequiredArgsConstructor @RequestMapping("/pdaSave") -@Tag(name = "手持移动端数据查询接口", description = "接口") +@Tag(name = "手持移动端数据保存接口", description = "接口") public class PdaSaveController { private final IPdaSaveService pdaSaveService; private final IBasicClazzService basicClazzService; + @Operation(summary = "流程卡与挂具绑定") @PostMapping("/gjBindingCrad") - public R gjBindingCrad(@RequestParam(value = "rsId") Long rsId,@RequestParam(value = "planListIds") String planListIds) { - pdaSaveService.bindingCard(rsId, null, null, planListIds); - return R.success() ; + public R gjBindingCrad(@RequestBody DeviceBindDTO deviceBindDTO) { + pdaSaveService.bindingCard(deviceBindDTO); + return R.success(); } + @Operation(summary = "挂具与飞靶绑定") @PostMapping("/gjBindingFb") - public R gjBindingFb(@RequestParam(value = "fsId") Long fsId,@RequestParam(value = "rsListIds") String rsListIds) { - pdaSaveService.binding(fsId, null, null,null, rsListIds); - return R.success() ; + public R gjBindingFb(@RequestBody DeviceBindDTO deviceBindDTO) { + pdaSaveService.binding(deviceBindDTO); + return R.success(); } + @Operation(summary = "飞靶与设备绑定") @PostMapping("/fbBindingEc") - public R fbBindingEc(@RequestParam(value = "fsId") Long fsId,@RequestParam(value = "ecId") Long ecId, - @RequestParam(value = "hangNum") Long hangNum,@RequestParam(value = "unFsBool") Boolean unFsBool) { + public R fbBindingEc(@RequestBody DeviceBindDTO deviceBindDTO) { String hangNumName = ""; BasicClazz bsBasicClass = null; - if(hangNum != null&&hangNum != -1){ + Long hangNum = deviceBindDTO.getHangNumId(); + if (hangNum != null && hangNum != -1L) { bsBasicClass = basicClazzService.getById(hangNum); - if(bsBasicClass != null){ + if (bsBasicClass != null) { hangNumName = bsBasicClass.getName(); } - }else if(hangNum == -1){ + } else if (hangNum == -1L) { hangNumName = "-1"; } - pdaSaveService.binding(fsId, ecId, unFsBool, hangNumName,null); - // 删除产线设备对应的挂次号之前的数据 - if(bsBasicClass!= null){ + deviceBindDTO.setHangNum(hangNumName); + pdaSaveService.binding(deviceBindDTO); + // 删除产线设备对应的挂次号之前的数据 + if (bsBasicClass != null) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(BasicClazz::getCode,bsBasicClass.getCode()); - wrapper.eq(BasicClazz::getBizType,"6"); - wrapper.lt(BasicClazz::getUpdateTime,bsBasicClass.getUpdateTime()); - wrapper.set(BasicClazz::getIsDeleted,1); - basicClazzService.update(null, wrapper); + wrapper.eq(BasicClazz::getCode, bsBasicClass.getCode()); + wrapper.eq(BasicClazz::getBizType, BasicClazz.TYPE_SUSPENSION_NO); + wrapper.le(BasicClazz::getUpdateTime, bsBasicClass.getUpdateTime()); + wrapper.set(BasicClazz::getIsDeleted, 1); + basicClazzService.update(wrapper); } - return R.success() ; + return R.success(); } + @Operation(summary = "流程卡与飞靶绑定") @PostMapping("/fbBindingCrad") - public R fbBindingCrad(@RequestParam(value = "fsId") Long fsId,@RequestParam(value = "planListIds") String planListIds) { - pdaSaveService.bindingCard(null, fsId, null, planListIds); - return R.success() ; + public R fbBindingCrad(@RequestBody DeviceBindDTO deviceBindDTO) { + pdaSaveService.bindingCard(deviceBindDTO); + return R.success(); } + @Operation(summary = "流程卡与设备绑定") @PostMapping("/ecBindingCrad") - public R ecBindingCrad(@RequestParam(value = "ecId") Long ecId,@RequestParam(value = "planListIds") String planListIds) { - pdaSaveService.bindingCard(null, null, ecId, planListIds); - return R.success() ; + public R ecBindingCrad(@RequestBody DeviceBindDTO deviceBindDTO) { + pdaSaveService.bindingCard(deviceBindDTO); + return R.success(); } + @Operation(summary = "挂具与设备绑定") @PostMapping("/gjBindingEc") - public R gjBindingEc(@RequestParam(value = "ecId") Long ecId,@RequestParam(value = "rsListIds") String rsListIds) { - pdaSaveService.binding(null, ecId, null,null, rsListIds); - return R.success() ; + public R gjBindingEc(@RequestBody DeviceBindDTO deviceBindDTO) { + pdaSaveService.binding(deviceBindDTO); + return R.success(); } + + @Operation(summary = "设备解绑") + @PostMapping("/unBind") + public R unBind(@RequestBody UnBingVo unBingVo) { + pdaSaveService.unBind(unBingVo); + return R.success(); + } + @Operation(summary = "烧结流程卡与设备绑定") @PostMapping("/sjEcBindingCard") public R sjEcBindingCard(@RequestBody SjEcBingCardVo sjEcBingCardVo) { pdaSaveService.sjBindingCard(sjEcBingCardVo); - return R.success() ; - } - @Operation(summary = "解绑") - @PostMapping("/unBind") - public R unBind(@RequestBody UnBingVo unBingVo) { - pdaSaveService.unBind(unBingVo); - return R.success() ; + return R.success(); } + @Operation(summary = "获取烧结未解绑的绑定记录") @PostMapping("/getUnbindByCard") - public R getUnbindByCard(@RequestParam(value = "cardNo") String cardNo) { - return R.data(pdaSaveService.getUnbindByCard(cardNo)) ; + public R> getUnbindByCard(@RequestParam(value = "cardNo") String cardNo) { + return R.data(pdaSaveService.getUnbindByCard(cardNo)); } - @Operation(summary = "烧结设备解绑解绑") + + @Operation(summary = "烧结设备解绑") @PostMapping("/sjDeviceUnBind") public R sjDeviceUnBind(@RequestBody UnBingDeviceVo unBingDeviceVo) { pdaSaveService.sjDeviceUnBind(unBingDeviceVo); - return R.success() ; + return R.success(); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PlateAroundController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PlateAroundController.java index 87ca852f..a809b841 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PlateAroundController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PlateAroundController.java @@ -1,22 +1,32 @@ package org.springblade.desk.produce.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import org.springblade.common.utils.CommonUtil; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; import org.springblade.desk.produce.pojo.dto.PlateAroundDto; import org.springblade.desk.produce.pojo.dto.SavePlateAroundDto; +import org.springblade.desk.produce.pojo.entity.HandoverRecord; import org.springblade.desk.produce.pojo.entity.PlateAround; import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.pojo.vo.AfterPlateInVO; import org.springblade.desk.produce.pojo.vo.PlateAroundVO; +import org.springblade.desk.produce.pojo.vo.PrintWarehousingVO; +import org.springblade.desk.produce.service.IHandoverRecordService; import org.springblade.desk.produce.service.IPlateAroundService; +import org.springblade.desk.produce.wrapper.HandoverRecordWrapper; +import org.springblade.job.pojo.entity.JobInfo; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; @@ -35,6 +45,8 @@ public class PlateAroundController extends BladeController { private final IPlateAroundService plateAroundService; + private final IHandoverRecordService handoverRecordService; + @GetMapping("/queryPlateAround") @ApiOperationSupport(order = 1) @Operation(summary = "镀前镀后列表(通用)", description = "传入PlateAroundDto") @@ -106,17 +118,40 @@ public class PlateAroundController extends BladeController { public R queryDelLogRecord(PlateAroundDto plateAroundDto, Query query) { return R.data(plateAroundService.queryDelLogRecord(Condition.getPage(query), plateAroundDto)); } + @PostMapping(value = "/savePlateFrontEnter") - @ApiOperationSupport(order = 7) + @ApiOperationSupport(order = 8) @Operation(summary = "保存镀前入库", description = "") public R savePlateFrontEnter(@RequestBody List plateArounds) { - plateAroundService.savePlateFrontEnter(plateArounds); + plateAroundService.savePlateFrontEnter(plateArounds, PlateAround.BEFORE_PLAT_IN); return R.success(); } + @PostMapping(value = "/getByPartCode") - @ApiOperationSupport(order = 8) + @ApiOperationSupport(order = 9) @Operation(summary = "获取零件信息", description = "") public R getByPartCode(@RequestParam String partCode) { return R.data(plateAroundService.getByPartCode(partCode)); } + + @GetMapping("/queryNewRecord") + @ApiOperationSupport(order = 10) + @Operation(summary = "入库单列表", description = "") + public R> queryNewRecord(HandoverRecord handoverRecord, Query query) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(handoverRecord); + if (CommonUtil.isAllFieldsEmpty(handoverRecord)) { + wrapper.isNull(HandoverRecord::getPrintTime); + } + wrapper.eq(HandoverRecord::getCreateUser, AuthUtil.getUserId()).orderByDesc(HandoverRecord::getHrCode); + IPage pages = handoverRecordService.page(Condition.getPage(query), wrapper); + return R.data(HandoverRecordWrapper.build().listHandoverRecordVO(pages)); + } + + @PostMapping(value = "/handoverRecordPrint") + @ApiOperationSupport(order = 11) + @Operation(summary = "入库单打印", description = "") + public R> handoverRecordPrint(@RequestParam String hrIds) { + return R.data(handoverRecordService.handoverRecordPrint(Func.toLongList(hrIds))); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/BsAdditionalMessMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/BsAdditionalMessMapper.java new file mode 100644 index 00000000..3cd615e2 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/BsAdditionalMessMapper.java @@ -0,0 +1,14 @@ +package org.springblade.desk.produce.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.desk.produce.pojo.entity.BsAdditionalMess; + +/** + * 额外信息存储 Mapper 接口 + * + * @author BladeX + */ +public interface BsAdditionalMessMapper extends BaseMapper { + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/BsAdditionalMessMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/BsAdditionalMessMapper.xml index 9b578ae1..e2744d2f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/BsAdditionalMessMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/BsAdditionalMessMapper.xml @@ -1,30 +1,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.java new file mode 100644 index 00000000..9be78d25 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.java @@ -0,0 +1,19 @@ +package org.springblade.desk.produce.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve; +import org.springblade.desk.produce.pojo.entity.MacToolUse; +import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity; +import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; + +import java.util.List; + +/** + * + * @author BladeX + */ +public interface DsRbFilePreserveMapper extends BaseMapper { + + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.xml new file mode 100644 index 00000000..8e3fe10d --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.java new file mode 100644 index 00000000..2e95d572 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.java @@ -0,0 +1,15 @@ +package org.springblade.desk.produce.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.desk.produce.pojo.entity.HandoverRecord; + +/** + * 移交记录 Mapper 接口 + * + * @author BladeX + */ +public interface HandoverRecordMapper extends BaseMapper { + + Double getPaSumWeight(Long id); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.xml new file mode 100644 index 00000000..3a6e4ecb --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java index f3703917..720868a5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java @@ -24,4 +24,6 @@ public interface MacToolUseMapper extends BaseMapper { MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long id); MacToolUse queryByParams(Long wpId, Integer rsBool, Integer fsBool, Integer ecBool); + + String findMaxCodeByParams(Long rsId, Long fsId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml index 88580458..d6532e94 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml @@ -91,6 +91,22 @@ and EQUIPMENT_CARD is not null order by MTN_CODE) where rownum = 1 + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml index 44bf291a..a5f7c4d7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml @@ -58,7 +58,7 @@ LEFT JOIN MES_WORK_ORDER wo ON wp.WO_ID = wo.ID LEFT JOIN MES_YIELD_ORDER yo ON wo.YO_ID = yo.ID - mr.IS_DELETED = 0 and a.worker = #{mesMakeRec.worker} + mr.IS_DELETED = 0 and mr.worker = #{mesMakeRec.worker} AND wo.WO_CODE LIKE concat(concat('%', #{mesMakeRec.worker}),'%') diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesBsAdditionalMessMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesBsAdditionalMessMapper.xml new file mode 100644 index 00000000..9b578ae1 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesBsAdditionalMessMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/PlateAroundMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/PlateAroundMapper.xml index e4f9747a..8339c5c3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/PlateAroundMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/PlateAroundMapper.xml @@ -62,15 +62,19 @@ INNER JOIN MES_WORK_PLAN b ON a.NEXT_WP_ID = b.ID INNER JOIN MES_WORK_ORDER c ON a.WO_ID = c.ID - a.status = 3 and c.ID = #{id} and b.next_wp_id > 0 and (a.make_team in - - #{tsId} - - or a.subsidiary_team in - - #{tsId} - - or c.dispatcher= #{userId}) and c.run_status = 3 + a.status = 3 and c.ID = #{id} and b.next_wp_id > 0 + + and (a.make_team in + + #{tsId} + + or a.subsidiary_team in + + #{tsId} + + or c.dispatcher= #{userId}) + + and c.run_status = 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.java index 90eac3bc..9f7ea484 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.java @@ -9,11 +9,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; import org.springblade.desk.quality.excel.ReviewSheetExcel; import org.springblade.desk.quality.pojo.entity.ReviewSheet; -import org.springblade.desk.quality.pojo.request.InspectionTaskSearch; import org.springblade.desk.quality.pojo.request.ReviewSheetErpSearch; import org.springblade.desk.quality.pojo.request.ReviewSheetInitSearch; import org.springblade.desk.quality.pojo.request.ReviewSheetRedoScrapSearch; import org.springblade.desk.quality.pojo.vo.*; +import org.springblade.desk.quality.pojo.dto.PpmReportDetailDTO; import java.util.List; @@ -58,4 +58,7 @@ public interface ReviewSheetMapper extends BaseMapper { List listErp(IPage page, @Param("q") ReviewSheetErpSearch search); + + List listErpNew(IPage page, + @Param("q") ReviewSheetErpSearch search); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml index abdc9a6e..622ab03c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml @@ -278,6 +278,7 @@ LEFT JOIN BS_PROCESS_SET ps ON wp.ORDERS = ps.CODE -- 外协厂商 oem LEFT JOIN BS_OEM oem ON wp.OC_ID = oem.ID + left join QA_REVIEW_DUTY du on rs.ID = du.REVIEW_SHEET_ID WHERE ( rs.IS_DELETED = 0 -- AND wp.IS_DELETED = 0 @@ -312,6 +313,32 @@ AND rs.PART_CODE = #{q.batchNo} + + + and rs.Id in (select REVIEW_SHEET_ID from QA_REVIEW_DUTY where DUTY_PART like concat(concat('%', #{q.dutyPart}),'%')) + + + + and rs.Id in (select REVIEW_SHEET_ID from QA_REVIEW_DUTY where DUTY_BATCH like concat(concat('%', #{q.dutyBatNo}),'%')) + + ORDER BY rs.ID DESC + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java index 67b642db..7ae11ed3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java @@ -4,12 +4,16 @@ package org.springblade.desk.quality.service; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.v3.oas.annotations.Parameter; +import org.apache.ibatis.annotations.Param; import org.springblade.common.exception.BusinessException; import org.springblade.core.mp.base.BaseService; import org.springblade.core.tool.api.R; +import org.springblade.desk.produce.pojo.dto.PrintThicknessCraftCard; +import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity; import org.springblade.desk.quality.excel.InspectionTaskExcel; import org.springblade.desk.quality.pojo.entity.InspectionTask; import org.springblade.desk.quality.pojo.request.InspectionTaskSearch; @@ -112,10 +116,15 @@ public interface IInspectionTaskService extends BaseService { public R fill(InspectionTaskDetailVO detailVO); IPage listSearch(IPage page, InspectionTaskSearch search); - + IPage queryWorkOrder(IPage page, InspectionTaskSearch search); + List correspondingProcess(Long woId); R getSamePlace(Long id); - + JSONObject newPagePrintEleFiles(Long woId, List planList, List moduleList); R sameResultCopy(Long sourceId, Long targetId); InspectionTask refreshStatusAndQty(Long id); + + Object pagePrintSjEleFiles(Long woId, Integer yieldType,List planList, List moduleList); + List printThicknessList(List idArr); + List getByRfpsIdMesNew(Long rfpsId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IReviewSheetService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IReviewSheetService.java index c372a20f..1b0c5dd9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IReviewSheetService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IReviewSheetService.java @@ -14,7 +14,7 @@ import org.springblade.desk.quality.pojo.request.ReviewSheetErpSearch; import org.springblade.desk.quality.pojo.request.ReviewSheetInitSearch; import org.springblade.desk.quality.pojo.request.ReviewSheetRedoScrapSearch; import org.springblade.desk.quality.pojo.vo.*; - +import org.springblade.desk.quality.pojo.dto.PpmReportDetailDTO; import java.util.List; /** @@ -93,7 +93,7 @@ public interface IReviewSheetService extends EnBaseService { */ List getQcReviewSheetList(String partCode, String batchNo); - List reviewFormMess(JSONObject data); + List reviewFormMess(JSONObject data); /** *

方法描述: 通过返工单查询生产处置单

@@ -146,5 +146,5 @@ public interface IReviewSheetService extends EnBaseService { IPage listReviewRedoScrap(IPage page, ReviewSheetRedoScrapSearch search); - IPage listErp(IPage page, ReviewSheetErpSearch search); + IPage listErp(IPage page, ReviewSheetErpSearch search); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/AuditFileServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/AuditFileServiceImpl.java index e4abdf42..d8b19bde 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/AuditFileServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/AuditFileServiceImpl.java @@ -74,12 +74,16 @@ public class AuditFileServiceImpl extends EnBaseServiceImpl queryWorkOrder(IPage page, InspectionTaskSearch search) { + List listVO = baseMapper.queryWorkOrder(page, search); + for (InspectionTaskListVO oneVO : listVO) { + setListVOValue(oneVO); + } + return page.setRecords(listVO); + } + + @Override + public List correspondingProcess(Long woId) { + return baseMapper.correspondingProcess(woId); + } + @Override public R getSamePlace(Long id) { // LambdaQueryWrapper qw = Wrappers.lambdaQuery(); @@ -361,6 +428,811 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl planList, List moduleList) { + + if (woId == null || planList == null || planList.size() == 0) { + return null; + } + JSONObject jsonObj = new JSONObject(); +// WorkOrder wo = workOrderService.getById(woId); + WorkOrder wo = workOrderMapper.selectById(woId); + YieldOrder pjYieldOrder = yieldOrderMapper.selectById(wo.getYoId()); + QueryWrapper qwpart = new QueryWrapper<>(); + qwpart.eq("PART_CODE", pjYieldOrder.getPartCode()); + List partList = partService.list(qwpart); + DsPartEntity dsPart = new DsPartEntity(); + if(partList != null && partList.size() > 0){ + dsPart = partList.get(0); + } + + QueryWrapper qwplan = new QueryWrapper<>(); + qwplan.eq("WO_ID", woId); + List wpList = workPlanMapper.selectList(qwplan); + if (moduleList.get(0)) { + // 头记录 + JSONObject modelJson = new JSONObject(); + modelJson.put("wo", wo); + modelJson.put("dsPart", dsPart); + jsonObj.put("modelOne", modelJson); + } + + // 检验记录 + if (moduleList.get(1)) { + JSONObject modelJson1 = new JSONObject(); +// List checkList = this.getCheckListNotNG(woId, true); +// modelJson1.put("checkList", checkList); +// +// List checkPrWorkPlan = new ArrayList<>(); +// for (PrWorkPlan prWorkPlan : wpList) { +// if(prWorkPlan.getProcedureSet() != null){ +// if("镀后检验".equals(prWorkPlan.getProcedureSet().getPpsName())){ +// checkPrWorkPlan.add(prWorkPlan); +// } +// } +// } +// modelJson1.put("checkPrWorkPlan", checkPrWorkPlan); + jsonObj.put("modelThree", modelJson1); + } + + // 生产过程(放在获取检验记录下面,这个方法会排除数据) + this.getNewProcess(wpList, jsonObj, planList); + jsonObj.put("modelTwo", wpList); + if (moduleList.get(3)) { + // 审理单记录 +// PrWorkOrder wor = this.getByKey(woId); +// PjYieldOrder yo = wo.getPjYieldOrder(); +// jsonObj.put("modelFive", qcReviewSheetDao.getQcReviewSheetList(yo.getPartCode(), yo.getBatchNo())); + jsonObj.put("modelFive", null); + } + if (moduleList.get(2)) { + // 镀后入库记录 + jsonObj.put("modelFour", wpList.get(wpList.size() - 1)); + } + return jsonObj; + } + + public void getNewProcess(List wpList, JSONObject jsonObj, List modelFlag) { + if (wpList == null || wpList.size() == 0) { + return; + } + // 移除最后两道工序 + List newWpList = wpList; +// for (int i = 0; i < 2; i++) { +// newWpList.remove(wpList.size() - 1); +// } + List workPlanList = new ArrayList<>(); + for (int i = 0; i < newWpList.size(); i++) { +// if(i == modelFlag.size()-1){ +// break; +// } + if (modelFlag.get(i)) { + WorkPlan prWorkPlan = newWpList.get(i); + this.getProcessByWp(prWorkPlan); + workPlanList.add(prWorkPlan); + } + } + jsonObj.put("modelTwo", workPlanList); + } + + + @Resource + private IAuditFileService auditFileService; + + public void getProcessByWp(WorkPlan workPlan) { + + + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("WC_ID", workPlan.getId()); + List auditFileList = auditFileService.list(qw); + if(auditFileList != null && auditFileList.size() > 0){ + workPlan.setAuditFile(auditFileList.get(0)); + } + + MesQcProduceRunEntity box = null; + // 生产追溯数据(从生产追溯表中获取) + if (WorkPlan.PRINT_TYPE_PROCESS.equals(workPlan.getPrintType())) { + List prList = workPlanMapper.listPrByWpId(workPlan.getId()); + // 烘箱信息(从设备,工装使用记录获取) + box = workPlanMapper.getBoxInfo(workPlan.getId()); + if (StringUtils.isNotBlank(box.getInDate())) { + prList.add(box); + } + Optional.ofNullable(prList).filter(s -> prList.size() > 0).ifPresent(s -> workPlan.setPrList(prList)); + + BsProcessSetEntity process = processSetService.getById(workPlan.getPpsId()); + + // 同槽信息(从设备,工装使用记录获取) + List slotList; + //zxh 20250626 增加固溶工序同炉数据 + if (process.getName().equals("固溶")) { + slotList = workPlanMapper.listSlotInfoGr(workPlan.getId(), Boolean.FALSE); + } else { + slotList = workPlanMapper.listSlotInfoList(workPlan.getId(), Boolean.TRUE); + if (slotList == null || slotList.size() == 0) { + slotList = workPlanMapper.listSlotInfoList(workPlan.getId(), Boolean.FALSE); + } + } + + TaskDataDto dto = new TaskDataDto(); + //未取得数据 +// dto.setGjArea(); +// dto.setCdjArea(); +// dto.setPdjArea(); + dto.setSlotList(slotList); + // 2025-07-23 线上迁移修改 删除了prMacToolUseService.listSlotInfo方法调用 + workPlan.setTaskData(dto); + } + // 设备编号信息(从设备,工装使用记录获取) + List mtuList = workPlanMapper.listMacToolUse(workPlan.getId(), Boolean.FALSE); + if (mtuList.size() > 0) { + + List racks = mtuList.stream().map(MacToolUse::getBsRackSet).collect(Collectors.toList()); + List bas = mtuList.stream().map(MacToolUse::getBsFeiBaSet).collect(Collectors.toList()); + List cards = mtuList.stream().map(MacToolUse::getEquipmentCard).collect(Collectors.toList()); + List rackList = rackSetService.listByIds(racks); + List basList = feiBaSetService.listByIds(bas); + List cardList = mesEquipmentCardService.listByIds(cards); + + + // 设备编号 + String gj = StringUtils.join(rackList.stream().filter(i -> i.getRsType() != null).map(i -> i.getRsType()).collect(Collectors.toList()), "'、'"); + String fb = StringUtils.join(basList.stream().filter(i -> i.getFsType() != null).map(i -> i.getFsType()).collect(Collectors.toList()), "、"); + String eq = StringUtils.join(cardList.stream().filter(i -> i.getDeviceCode() != null).map(i -> i.getDeviceCode()).collect(Collectors.toList()), "、"); + workPlan.setGjCode(gj); + workPlan.setFbCode(fb); + //zxh 20250107 电子档案工序设备编号不再拼接烘箱,eq中已存在烘箱 +// workPlan.setDeviceCode(box != null && box.getDeviceId() != null ? eq + "、" + box.getDeviceId() : eq); + workPlan.setDeviceCode(eq); + } + + // 操作者(工序接收人) + // 如果是场内班组 + // zxh 20241217 电子档案场内工序操作者取值改为报工人 + if (null != workPlan.getOcId() && workPlan.getOcId() >0 && workPlan.getReceiveMan() != null ) { + + R user = userClient.userInfoById(workPlan.getReceiveMan()); + if(null != user.getData() && null != user.getData().getAccount()){ + // workPlan.setCreateMan(workPlan.getReceiveMan().getUserName()); + MakeRec prMakeRec = workPlanMapper.getByWpId(workPlan.getId()); + if (prMakeRec != null) { + R userorder = userClient.userInfoById(workPlan.getReceiveMan()); + workPlan.setCreateMan(userorder.getData().getRealName()); + } else { + workPlan.setCreateMan(user.getData().getRealName()); + } + } + } else if (workPlan.getOcId() != null) { // 外协 + Oem oem = oemMapper.selectById(workPlan.getOcId()); + if(oem != null){ + workPlan.setCreateMan(oem.getCode()); + } + } + + WorkPlan plan = workPlanMapper.getConcatMrByWpId(workPlan.getId()); + if (null != plan) { + // 色标数据 + workPlan.setFlagQty(Double.valueOf(plan.getFlagQty().toString())); + workPlan.setFlagColourOne(plan.getFlagColourOne().toString()); + workPlan.setFlagColourTwo(plan.getFlagColourTwo().toString()); + workPlan.setFlagInk(plan.getFlagInk().toString()); + workPlan.setFlagMatter(plan.getFlagMatter().toString()); + // 色带数据 + workPlan.setBeltQty(Double.valueOf(plan.getBeltQty().toString())); + workPlan.setBeltColourOne(plan.getBeltColourOne().toString()); + workPlan.setBeltColourTwo(plan.getBeltColourTwo().toString()); + workPlan.setBeltInk(plan.getBeltInk().toString()); + workPlan.setBeltMatter(plan.getBeltMatter().toString()); + } + + List qcProduceRunsList; + qcProduceRunsList = workPlanMapper.listPrByWpIdIndex(workPlan.getId(), 0, Boolean.FALSE); + workPlan.setQcProduceRunsList(qcProduceRunsList); + // 新版电子档案 生产追溯数据(从生产追溯表中获取) + if (WorkPlan.PRINT_TYPE_PROCESS.equals(workPlan.getPrintType())) { + Integer num = 0; + List prList; + List dsRbFilePreserveSlotList = new ArrayList<>(); + + QueryWrapper qwteam= new QueryWrapper<>(); + qwteam.eq("TS_ID", workPlan.getMakeTeam()); + List teamList = centerTeamService.list(qwteam); + CenterTeam bsCenterTeam = null; + if (teamList != null && teamList.size() > 0) { + bsCenterTeam = teamList.get(0); + } +// CenterTeam bsCenterTeam = bsCenterTeamService.getByTsId(workPlan.getMakeTeam().getTsId()); + if (bsCenterTeam != null && bsCenterTeam.getWcId()!= null) { + MacToolUse prMacToolUse; + List preserveSlotList; + MesQcProduceRunEntity boxInfo = new MesQcProduceRunEntity(); +// // 根据电子档案维护组装数据(上线前) +// prMacToolUse = prMacToolUseService.getDataByWpIdAndIndex(workPlan.getWpId(), "1"); +// if (prMacToolUse != null && prMacToolUse.getMtuId() != null) { +// // 获取模板数据 +// preserveSlotList = dsRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUse.getRfpId())); +// qcProduceRunsList = qcProduceRunService.listPrByWpIdIndex(workPlan.getWpId(), 1); +// // 烘箱信息(从设备,工装使用记录获取) +// boxInfo = prMacToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getWpId()); +// if (StringUtils.isNotBlank(boxInfo.getInDate())) { +// qcProduceRunsList.add(boxInfo); +// } +// this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList); +// +// if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) { +// workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1); +// } +// } + + // 根据电子档案维护组装数据(上线前) 分槽 + List dataByWpIdAndIndexList = workPlanMapper.getDataByWpIdAndIndexList(workPlan.getId(), "1"); + if (dataByWpIdAndIndexList != null && dataByWpIdAndIndexList.size() > 0) { + for (MacToolUse prMacToolUseItem : dataByWpIdAndIndexList) { + if (prMacToolUseItem != null && prMacToolUseItem.getId() != null) { + // 获取模板数据 + preserveSlotList = mesRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUseItem.getRfpId())); + qcProduceRunsList = workPlanMapper.listPrByWpIdIndexAndMtnCode(workPlan.getId(), 1, prMacToolUseItem.getMtnCode()); + // 烘箱信息(从设备,工装使用记录获取) +// boxInfo = workPlanMapper.getBoxInfoByWpIdMtnCode(workPlan.getId()); + List runs = workPlanMapper.getBoxInfoByWpIdMtnCodeList(workPlan.getId()); + if(runs != null && runs.size() > 0){ + boxInfo = runs.get(0); + } + if (StringUtils.isNotBlank(boxInfo.getInDate())) { + qcProduceRunsList.add(boxInfo); + } + + if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) { + + // 2025-07-23 线上迁移修改删除了日志打印 + // cdl 20250218 修改分槽同一槽号连续出现 + this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, + dsRbFilePreserveSlotList, prMacToolUseItem); + if (!(num > 0)) { + workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1); + } + num += 1; + } + } + } + } + + + //1111111111111111111111111111111111111111111111 + + // 根据电子档案维护组装数据(自动) + prMacToolUse = workPlanMapper.getDataByWpIdAndIndex(workPlan.getId(), "2"); + if (prMacToolUse != null && prMacToolUse.getId() != null) { + // 获取模板数据 +// List dsRbFilePreserveList = null; +// if (workPlan.getPpsId() != null){ +// BsProcessSetEntity process = processSetService.getById(workPlan.getPpsId()); +// if("喷砂".equals(process.getName()) || "涂色标".equals(process.getName())) { +// dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(null, +// workPlan.getPpsId(), Boolean.TRUE); +// } else { +// dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(bsCenterTeam.getWcId(), +// workPlan.getPpsId(), Boolean.TRUE); +// } +// } + + List dsRbFilePreserveList = null; + if (workPlan.getPpsId() != null){ + BsProcessSetEntity process = processSetService.getById(workPlan.getPpsId()); + if("喷砂".equals(process.getName()) || "涂色标".equals(process.getName())) { + dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(null, + workPlan.getPpsId(), Boolean.TRUE); + } else { + dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(bsCenterTeam.getWcId(), + workPlan.getPpsId(), Boolean.TRUE); + } + } + + //sql不对 + if (dsRbFilePreserveList != null && dsRbFilePreserveList.size() > 0) { + //00000000000000 + preserveSlotList = workPlanMapper.getByRfpId(dsRbFilePreserveList.get(0).getId()); + qcProduceRunsList = workPlanMapper.listPrByWpIdIndex(workPlan.getId(), 2, Boolean.TRUE); + List runs = workPlanMapper.getBoxInfoByWpIdMtnCodeList(workPlan.getId()); + if(runs != null && runs.size() > 0){ + boxInfo = runs.get(0); + } + // 烘箱信息(从设备,工装使用记录获取) +// boxInfo = workPlanMapper.getBoxInfoByWpIdMtnCode(workPlan.getId()); + if (qcProduceRunsList != null && qcProduceRunsList.size() > 0 && StringUtils.isNotBlank(boxInfo.getInDate())) { + qcProduceRunsList.add(boxInfo); + } + if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) { + //验证qc中重复槽子 +// Boolean checkQcRepeat = this.checkQcRepeat(qcProduceRunsList); +// if (checkQcRepeat) { +// //返镍排序 +// this.setRbFilePreserveDataFn(preserveSlotList, qcProduceRunsList, workPlan, +// dsRbFilePreserveSlotList, prMacToolUse); +// } else { + // cdl 20250218 修改分槽同一槽号连续出现 + this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, + dsRbFilePreserveSlotList, prMacToolUse); +// } + + // cdl + if (!(num > 0)) { + workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1); + } + num += 1; + } + } + // 获取额外面积数据 + MesBsAdditionalMessEntity dataByMtuCode = workPlanMapper.getDataByOneData(prMacToolUse.getMtnCode(), MesBsAdditionalMessEntity.TYPE_ONE); + workPlan.setBsAdditionalMess(dataByMtuCode); + } + + + + //222222222222222222222222222222222222222222222 + + // 根据电子档案维护组装数据(线下) +// prMacToolUse = prMacToolUseService.getDataByWpIdAndIndex(workPlan.getWpId(), "3"); +// if (prMacToolUse != null && prMacToolUse.getMtuId() != null) { +// // 获取模板数据 +// preserveSlotList = dsRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUse.getRfpId())); +// qcProduceRunsList = qcProduceRunService.listPrByWpIdIndex(workPlan.getWpId(), 3, Boolean.FALSE); +// // 烘箱信息(从设备,工装使用记录获取) +// boxInfo = prMacToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getWpId()); +// if (StringUtils.isNotBlank(boxInfo.getInDate())) { +// qcProduceRunsList.add(boxInfo); +// } +// this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList); +// //zxh 20241231 注释下方代码 +//// if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) { +//// workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1); +//// } +// } + //zxh 20250117 解决单工序绑定两个手动记录只显示一个问题 + List prMacToolUseList = workPlanMapper.getDataByWpIdAndIndexList(workPlan.getId(), "3"); + if (prMacToolUseList != null && prMacToolUseList.size() > 0) { + for (MacToolUse prMacToolUseSd : prMacToolUseList) { + if (prMacToolUseSd != null && prMacToolUseSd.getId() != null) { + // 获取模板数据 + preserveSlotList = workPlanMapper.getByRfpId(Long.valueOf(prMacToolUseSd.getRfpId())); + qcProduceRunsList = workPlanMapper.listPrByWpIdIndexAndMtnCode(workPlan.getId(), 3, prMacToolUseSd.getMtnCode()); + // 烘箱信息(从设备,工装使用记录获取) +// boxInfo = prMacToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getId()); + + List runs = workPlanMapper.getBoxInfoByWpIdMtnCodeList(workPlan.getId()); + if(runs != null && runs.size() > 0){ + boxInfo = runs.get(0); + } + + if (StringUtils.isNotBlank(boxInfo.getInDate())) { + qcProduceRunsList.add(boxInfo); + } + + if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) { + + // cdl 20250218 修改分槽同一槽号连续出现 + this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, + dsRbFilePreserveSlotList, prMacToolUseSd); + if (!(num > 0)) { + workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1); + } + } + } + } + } + } + + workPlan.setDsRbFilePreserveSlotList(dsRbFilePreserveSlotList); + workPlan.setQcProduceRunsList(qcProduceRunsList); + } + +// workPlan.setQcProduceRunsList(qcProduceRunsList); + } + + public void setRbFilePreserveData(List preserveSlotList, List qcProduceRunsList, + WorkPlan workPlan, List dsRbFilePreserveSlotList, + MacToolUse prMacToolUseItem) { + + List dsRbFilePreserveDetailList = null; + MesRbFilePreserveSlotEntity newDsRbFilePreserveSlot = null; + MesRbFilePreserveDetailDTO newDsRbFilePreserveDetail = null; +// for (int i = 0; i < preserveSlotList.size(); i++) { +// DsRbFilePreserveSlot dsRbFilePreserveSlot = preserveSlotList.get(i); +// if(StringUtils.isNotBlank(dsRbFilePreserveSlot.getSlotName()) && dsRbFilePreserveSlot.getSlotName().contains("水膜连续性")){ +//// dsRbFilePreserveSlot +// } +// } + + Map preserveSlotMap = preserveSlotList.stream().collect(Collectors.toMap(i -> i.getSlotName(), java.util.function.Function.identity())); + List temporaryList = new ArrayList<>(); + for (MesQcProduceRunEntity qcProduceRun : qcProduceRunsList) { + // 根据维护的电子档案的槽号找寻对应生产追溯的的数据 + if (StringUtils.isBlank(qcProduceRun.getWorkSlot())) continue; + MesRbFilePreserveSlotEntity dsRbFilePreserveSlot = preserveSlotMap.get(qcProduceRun.getWorkSlot().trim()); + + if ("水膜连续性检查".equals(qcProduceRun.getWorkSlot().trim())) { +// qcProduceRun.setQualified(Boolean.TRUE); + qcProduceRun.setQualified("1"); + } + + // cdl 20250218 修改分槽同一槽号连续出现 + this.setTemplateData(dsRbFilePreserveSlot, qcProduceRun, newDsRbFilePreserveSlot, dsRbFilePreserveDetailList, + newDsRbFilePreserveDetail, workPlan, temporaryList, prMacToolUseItem); + } + + // 判断是不是自动线并且有水墨连续性 + MacToolUse prMacToolUse = workPlanMapper.getHangNumIsNull(workPlan.getId()); + if (prMacToolUse != null && prMacToolUse.getId() != null) { + List smSlotList = preserveSlotList.stream().filter(i -> i.getSlotName().contains("水膜连续性")).collect(Collectors.toList()); + for (MesRbFilePreserveSlotEntity dsRbFilePreserveSlot : smSlotList) { + if (dsRbFilePreserveSlot.getSlotName().contains("水膜连续性")) { + MesQcProduceRunEntity qcProduceRun = new MesQcProduceRunEntity(); + qcProduceRun.setQualified("1"); + // cdl 20250218 修改分槽同一槽号连续出现 + this.setTemplateData(dsRbFilePreserveSlot, qcProduceRun, newDsRbFilePreserveSlot, dsRbFilePreserveDetailList, + newDsRbFilePreserveDetail, workPlan, temporaryList, prMacToolUseItem); + } + } + } + + dsRbFilePreserveSlotList.addAll(temporaryList.stream().sorted(Comparator.comparing(MesRbFilePreserveSlotEntity::getSlotIndex)).collect(Collectors.toList())); + } + + + public void setTemplateData(MesRbFilePreserveSlotEntity dsRbFilePreserveSlot, MesQcProduceRunEntity qcProduceRun, MesRbFilePreserveSlotEntity newDsRbFilePreserveSlot, + List dsRbFilePreserveDetailList, MesRbFilePreserveDetailDTO newDsRbFilePreserveDetail, + WorkPlan workPlan, List temporaryList, MacToolUse prMacToolUseItem) { + if (dsRbFilePreserveSlot != null && dsRbFilePreserveSlot.getRfpId() != null) { + // 装入槽子对应的信息 + newDsRbFilePreserveSlot = new MesRbFilePreserveSlotEntity(); + newDsRbFilePreserveSlot.setRfpsType(dsRbFilePreserveSlot.getRfpsType()); + newDsRbFilePreserveSlot.setInsertIndex(dsRbFilePreserveSlot.getInsertIndex()); + newDsRbFilePreserveSlot.setSlotName(dsRbFilePreserveSlot.getSlotName()); + newDsRbFilePreserveSlot.setSlotIndex(dsRbFilePreserveSlot.getSlotIndex()); + + List preserveDetailList = workPlanMapper.getByRfpsId(dsRbFilePreserveSlot.getRfpId()); + if (preserveDetailList.size() > 0) { + dsRbFilePreserveDetailList = new ArrayList<>(); + for (int i = 0; i < preserveDetailList.size(); i++) { + MesRbFilePreserveDetailDTO dsRbFilePreserveDetail = preserveDetailList.get(i); + Short rfpsType = 0; + if (dsRbFilePreserveDetail != null && dsRbFilePreserveDetail.getRfpsType() != null) { + rfpsType = dsRbFilePreserveDetail.getRfpsType(); + } + newDsRbFilePreserveDetail = new MesRbFilePreserveDetailDTO(); + newDsRbFilePreserveDetail.setDetailName(dsRbFilePreserveDetail.getDetailName()); + newDsRbFilePreserveDetail.setDetailIndex(dsRbFilePreserveDetail.getDetailIndex()); + // 工艺要求 + newDsRbFilePreserveDetail.setAsk(dsRbFilePreserveDetail.getAsk()); + newDsRbFilePreserveDetail.setParamName(dsRbFilePreserveDetail.getParamName()); + if (i == 0) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getInDate()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getOutDate()); + } + if (rfpsType == 1) { // 模板一 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } + } else if (rfpsType == 2) { // 模板二 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } + } else if (rfpsType == 3) { // 模板三 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } + } else if (rfpsType == 4) { // 模板四 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } + } else if (rfpsType == 5 || rfpsType == 22) { // 模板五 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } + } else if (rfpsType == 6) { // 模板六 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } + } else if (rfpsType == 7) { // 模板七 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } + } else if (rfpsType == 8) { // 模板八 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } + } else if (rfpsType == 9) { // 模板九 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } + } else if (rfpsType == 10) { // 模板十 + if (i == 0) { + newDsRbFilePreserveDetail.setQualified(qcProduceRun.getQualified()); + } + } else if (rfpsType == 11) { // 模板十一 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } + } else if (rfpsType == 12) { // 模板十二 + if (i == 0) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataThree()); + } + } else if (rfpsType == 13) { // 模板十三 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight()); + } else if (i == 8) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine()); + } else if (i == 9) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen()); + } + } else if (rfpsType == 14) { // 模板十四 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwo()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 8) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 9) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight()); + } else if (i == 10) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine()); + } else if (i == 11) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen()); + } + } else if (rfpsType == 15) { // 模板十五 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataFour()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 8) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 9) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight()); + } else if (i == 10) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine()); + } else if (i == 11) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen()); + } else if (i == 12) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEleven()); + } else if (i == 13) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwelve()); + } + } else if (rfpsType == 16) { // 模板十六 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwo()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 8) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 9) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight()); + } else if (i == 10) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine()); + } else if (i == 11) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen()); + } else if (i == 12) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEleven()); + } else if (i == 13) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwelve()); + } else if (i == 14) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThirteen()); + } else if (i == 15) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFourteen()); + } + } else if (rfpsType == 17) { // 模板十七 + if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwo()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } + } else if (rfpsType == 18) { // 模板十八 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } + } else if (rfpsType == 19) { // 模板十九 //zxh 20250519 新增模板19和模板20 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataEight()); + } else if (i == 8) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine()); + } else if (i == 9) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen()); + } else if (i == 10) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEleven()); + } else if (i == 11) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwelve()); + } + } else if (rfpsType == 20) { // 模板二十 + if (i == 0) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getInDate()); + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getInDate()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getInDate()); + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getInDate()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getOutDate()); + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getOutDate()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getOutDate()); + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getOutDate()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight()); + } + } else if (rfpsType == 21) { // 模板十三 + if (i == 0) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne()); + } else if (i == 1) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo()); + } else if (i == 2) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree()); + } else if (i == 3) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour()); + } else if (i == 4) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive()); + } else if (i == 5) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix()); + } else if (i == 6) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven()); + } else if (i == 7) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight()); + } else if (i == 8) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine()); + } + } + String detailName = dsRbFilePreserveDetail.getDetailName(); + if (detailName != null) { + if (detailName.contains("温度")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getTempSlot()); + } else if (detailName.contains("电导率")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getEleRate()); + } else if (detailName.contains("电流") && !(detailName.contains("壳体") || detailName.contains("插针"))) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getEleStream()); + } else if (detailName.contains("链速")) { +// newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getvSpeed()); + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getVSpeed()); + } else if (detailName.contains("镍离子")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getNiValue()); + } else if (detailName.contains("pH值")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getPhValue()); + } + //zxh 20250604 新增软起时间和工作电压 + else if (detailName.contains("软起时间")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getSoftWorkTime()); + } else if (detailName.contains("工作电压")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getVoltage()); + } else if (detailName.contains("初始电压")) { + newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getStartVol()); + } + + } + dsRbFilePreserveDetailList.add(newDsRbFilePreserveDetail); + // cdl 202502117 修改错行 + if (!dsRbFilePreserveSlot.getSlotName().equals("水膜连续性检查") && dsRbFilePreserveSlot.getRfpsType() != 10) { + workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1); + } +// if (!dsRbFilePreserveSlot.getSlotName().equals("水膜连续性 检查") && dsRbFilePreserveSlot.getRfpsType() != 10) { +// workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1); +// } + } +// newDsRbFilePreserveDetail = new DsRbFilePreserveDetail(); +// newDsRbFilePreserveDetail.setDetailName(dsRbFilePreserveDetail.getDetailName()); +// newDsRbFilePreserveDetail.setDetailIndex(dsRbFilePreserveDetail.getDetailIndex()); +// // 工艺要求 +// newDsRbFilePreserveDetail.setAsk(dsRbFilePreserveDetail.getAsk()); +// newDsRbFilePreserveDetail.setParamName(dsRbFilePreserveDetail.getParamName()); + newDsRbFilePreserveSlot.setChildrenList(dsRbFilePreserveDetailList); + workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1); + } + + temporaryList.add(newDsRbFilePreserveSlot); + } + } + + @SneakyThrows @Transactional(rollbackFor = Exception.class) // todo: @Override @@ -469,6 +1341,450 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("part_code", yieldOrder.getPartCode()); + List dsPartList = partService.list(queryWrapper); + DsPartEntity dsPart = new DsPartEntity(); + if(null != dsPartList && dsPartList.size() > 0){ + dsPart = dsPartList.get(0); + } + + // 获取工序 + List prWorkPlanList = workPlanMapper.listByWoIdAllMes(prWorkOrder.getId()); + obj.put("prWorkOrder", prWorkOrder); + obj.put("dsPart", dsPart); + List prWorkPlanItems; + List printChildCheckList = new ArrayList<>(); + for (WorkPlan prWorkPlan : prWorkPlanList) { + +// // 同槽信息 +// List slotList = prMacToolUseService.listSjSlotInfo(prWorkPlan.getWpId(), Boolean.FALSE); +// prWorkPlan.setSlotList(slotList); +// +// // 设备绑定记录 +// List prList = qcProduceRunService.listPrByWpId(prWorkPlan.getWpId()); +// prWorkPlan.setPrList(prList); + + this.getProcessByWp(prWorkPlan); + prWorkPlanItems = workPlanMapper.listByWpIdMes(prWorkPlan.getId()); + if (prWorkPlanItems != null && prWorkPlanItems.size() > 0) { + PrintChildCheck printChildCheck; + for (WorkPlanItem prWorkPlanItem : prWorkPlanItems) { + printChildCheck = new PrintChildCheck(); +// printChildCheck.setTestOrders(prWorkPlanItem.getTrialNo()); +// printChildCheck.setTestName(prWorkPlanItem.getTrialItem()); +// printChildCheck.setTrialStandard(prWorkPlanItem.getTrialStandard()); + printChildCheck.setTestOrders(prWorkPlanItem.getItemCode()); + printChildCheck.setTestName(prWorkPlanItem.getItemName()); + printChildCheck.setTrialStandard(prWorkPlanItem.getStandardName()); + printChildCheck.setCheckResult(prWorkPlanItem.getCheckResult() == -1 ? "未检验" : prWorkPlanItem.getCheckResult() == 1 ? "合格" : + prWorkPlanItem.getCheckResult() == 2 ? "不合格" : prWorkPlanItem.getCheckResult() == 3 ? "NA" : ""); + if (prWorkPlanItem.getCheckUserId() != null) { + R user = userClient.userInfoById(prWorkPlanItem.getCheckUserId()); + if(null != user && null != user.getData()){ + printChildCheck.setCheckName(user.getData().getRealName()); + } + } + + if (prWorkPlanItem.getCheckDate() != null) { + printChildCheck.setCheckDate(prWorkPlanItem.getCheckDate().toString()); + } + printChildCheckList.add(printChildCheck); + } + prWorkPlan.setPrintChildCheck(printChildCheckList); + } + } + obj.put("prWorkPlanList", prWorkPlanList); + return obj; + } + + private List checkOrderSj(WorkOrder prWorkOrder) { + //B号为空则直接跳过 + YieldOrder yieldOrder = yieldOrderMapper.selectById(prWorkOrder.getYoId()); + if (StringUtils.isBlank(yieldOrder.getRoamNo())) { + return null; + } + //非烧结零件跳过子件验证 + if (!yieldOrder.getYieldType().equals(YieldOrder.YIELD_TYPE_2)) { + return null; + } + +// String roamNoText = dsPartService.findNameByRoamNo(prWorkOrder.getPjYieldOrder().getPartCode(), prWorkOrder.getPjYieldOrder().getRoamNo()); +// if (StringUtils.isBlank(roamNoText)) { +// return null; +// } +// +// //如果部件b号不带有封接字样, 则不显示子件 +// if (!roamNoText.contains("封接")) { +// return null; +// } + + //获取到所有除玻璃饼外的其他子件车间订单 + List subList = workPlanMapper.findCubByYoIdMes(yieldOrder.getId()); + //获取到部件下面的玻璃饼信息 + List dpsList = workPlanMapper.listByPartCodeNew(yieldOrder.getPartCode(), DsPartSub.SIN_TER_TYPE_BLB); + if (dpsList != null && dpsList.size() > 0) { + List blbList; + for (DsPartRelationEntity dps : dpsList) { + blbList = workPlanMapper.findByPartCodeAndMemoMes(dps.getChildPartCode(), yieldOrder.getYpCode()); + subList.addAll(blbList); + } + } + return subList; + } + + private JSONObject glassSealing(Long woId, List planList, List moduleList) { + JSONObject obj = new JSONObject(); + // 订单信息 + WorkOrder prWorkOrder =workOrderMapper.selectById(woId); + + List subPrWorkOrderList = this.checkOrderSj(prWorkOrder); + YieldOrder yieldOrder = yieldOrderMapper.selectById(prWorkOrder.getYoId()); +// DsPartEntity dsPart = dsPartService.getByPartCode(prWorkOrder.getPjYieldOrder().getPartCode()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("part_code", yieldOrder.getPartCode()); + List dsPartList = partService.list(queryWrapper); + DsPartEntity dsPart = new DsPartEntity(); + if(null != dsPartList && dsPartList.size() > 0){ + dsPart = dsPartList.get(0); + } + obj.put("prWorkOrder", prWorkOrder); + obj.put("dsPart", dsPart); + JSONArray sunPrWorkOrderList = new JSONArray(); + DsPartSub dsPartSub; + if (subPrWorkOrderList != null && subPrWorkOrderList.size() > 0) { + for (WorkOrder workOrder : subPrWorkOrderList) { + JSONObject sub = new JSONObject(); + dsPartSub = workPlanMapper.getByPartCodeAndSubCodeMes(dsPart.getPartCode(), yieldOrder.getPartCode()); + if (dsPartSub != null) { + sub.put("batchNo", workOrder.getBatchNo());//批次号 + sub.put("makeQty", workOrder.getMakeQty());//数量 + sub.put("yieldType", dsPartSub.getSinTerType());//零件类型 + sub.put("partCode", dsPartSub.getSubCode());//零件号 + sub.put("material", dsPartSub.getMaterial());//材料 + sub.put("plate", dsPartSub.getPlate());//镀种 + if (dsPartSub.getArea() != null && dsPartSub.getQuota() != null) { + sub.put("poArea", String.valueOf(dsPartSub.getArea() * dsPartSub.getQuota()));//面积 + } + } + sunPrWorkOrderList.add(sub); + } + } + obj.put("sunPrWorkOrderList", sunPrWorkOrderList); + + // 获取工序 + List prWorkPlanList = workPlanMapper.listByWoIdAllMes(prWorkOrder.getId()); + List newPrWorkPlanList = new ArrayList<>(); + List prWorkPlanItems; + List printChildCheckList; + for (int i = 0; i < prWorkPlanList.size(); i++) { + if (planList.get(i)) { + WorkPlan prWorkPlan = prWorkPlanList.get(i); + this.getProcessByWp(prWorkPlan); + + prWorkPlanItems = workPlanMapper.listByWpIdMes(prWorkPlan.getId()); + + printChildCheckList = new ArrayList<>(); + this.getCheckListDetail(printChildCheckList, prWorkPlanItems, true); + prWorkPlan.setPrintChildCheck(printChildCheckList); + newPrWorkPlanList.add(prWorkPlan); + } + } + obj.put("prWorkPlanList", newPrWorkPlanList); + if (moduleList.get(0)) { + // 审理单记录 +// YieldOrder yo = prWorkOrder.getPjYieldOrder(); + obj.put("qcReviewSheetList", workPlanMapper.getQcReviewSheetListMes(yieldOrder.getPartCode(), yieldOrder.getBatchNo())); + } + return obj; + } + public List getCheckListDetail(List checkList, List piLst, Boolean eleOrPrint) { + + if (piLst != null && piLst.size() > 0) { + //开始组装检验项map + Map ccMap = new LinkedHashMap<>(); + PrintChildCheck cc; + + Map> piMap = new LinkedHashMap<>(); + List lst; + + for (WorkPlanItem pi : piLst) { + + lst = piMap.get(pi.getItemCode()); + WorkPlan plan = workPlanMapper.selectById(pi.getWpId()); + String testOrder = plan.getOrders() + "-" + pi.getItemCode(); + if (lst == null || lst.size() == 0) { + //组装检验小项集合 + lst = new ArrayList<>(); + piMap.put(testOrder, lst); + //组装打印检验大项集合 + cc = new PrintChildCheck(); + cc.setTestOrders(testOrder); + if (pi.getCheckQty() != null && pi.getCheckQty() > 0) { + cc.setCheckQty(pi.getCheckQty().toString()); + } + // 230310新增试验数量 + cc.setTestQty(pi.getTestQty() != null && pi.getTestQty() > 0 ? pi.getTestQty().toString() : ""); + // 检验结果 + if(0==pi.getCheckResult()){ + cc.setCheckResult("未检验"); + } + if(1==pi.getCheckResult()){ + cc.setCheckResult("合格"); + } + if(2==pi.getCheckResult()){ + cc.setCheckResult("不合格"); + } + if(-1==pi.getCheckResult()){ + cc.setCheckResult("NA"); + } +// cc.setCheckResult(!"未检验".equals(pi.getCheckResult()) ? pi.getCheckResult() : null); + + if (pi.getCheckUserId() != null) { + R user = userClient.userInfoById(pi.getCheckUserId()); + String userName = user.getData().getAccount(); + if(null != user && user.getData() != null){ + cc.setCheckName(user.getData().getRealName()); + } + //zxh 20250212 从nerp获取检验员印章 + String checkManByNewErp = workPlanMapper.getCheckManByNewErpMes(userName); + + + + if (eleOrPrint) { + cc.setImgUrl(checkManByNewErp); + } else { + if (checkManByNewErp != null && checkManByNewErp.indexOf("base64,") > 0) { + String checkManByNewErpSubString = checkManByNewErp.substring(checkManByNewErp.indexOf("base64,") + 7); + cc.setImgUrl(checkManByNewErpSubString); + } + } + + if(null != pi.getCheckDate()){ + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String formattedDateTime = pi.getCheckDate().format(formatter); + cc.setCheckDate(formattedDateTime); + } + } + ccMap.put(testOrder, cc); + } + if ("厚度检测".equals(pi.getItemName())) { + for (int i = 0; i < 3; i++) { + lst.add(new PrintChildCheckChild(pi.getItemCode(), pi.getStandardName(), pi.getCheckValue(), pi.getWpId())); + } + } + lst.add(new PrintChildCheckChild(pi.getItemCode(), pi.getStandardName(), pi.getCheckValue(), pi.getWpId())); + } + + List idLst; + for (Map.Entry entry : ccMap.entrySet()) { + + cc = ccMap.get(entry.getKey()); + if (cc != null) { + lst = piMap.get(cc.getTestOrders()); + lst = lst.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() + -> new TreeSet<>(Comparator.comparing(i -> i.getWpiId()))), ArrayList::new)); + + if (lst != null && lst.size() > 0) { + for (PrintChildCheckChild ccc : lst) { + idLst = workPlanMapper.listByWpiIdMes(ccc.getWpiId()); + if (idLst != null && idLst.size() > 0) { + lst = new ArrayList<>(); + // 组装量具集合 + for (WorkPlanItemDetail itemDetail : idLst) { + if ("厚度检测".equals(itemDetail.getTrialItem())) { + cc.setDeviceCode(itemDetail.getGaugeValue8()); + lst.add(new PrintChildCheckChild(itemDetail.getTrialItem(), + itemDetail.getTrialStandard(), itemDetail.getGaugeValueNotNUll(), + null)); + } else if (itemDetail.getActMtId() != null) { + lst.add(new PrintChildCheckChild(itemDetail.getTrialItem(), itemDetail.getRuleSize(), + itemDetail.getGaugeValue1(), itemDetail.getWpiId())); + cc.setDeviceCode(itemDetail.getTools()); + if (cc.getTrialStandard() != null) { + cc.setTrialStandard(cc.getTrialStandard() + ';' + itemDetail.getRuleSize()); + } else { + cc.setTrialStandard(itemDetail.getRuleSize()); + } + if (cc.getCheckResult() != null) { + cc.setCheckResult(cc.getCheckResult()); + } else { + cc.setCheckResult(itemDetail.getGaugeValue1()); + } + } + } + } + cc.setCccList(lst); + checkList.add(cc); + break; + } + } + } + } + } + return checkList; + } + + + + @Override + public Object pagePrintSjEleFiles(Long woId, Integer yieldType, List planList, List moduleList) { + + if (yieldType == YieldOrder.YIELD_TYPE_4 || yieldType == YieldOrder.YIELD_TYPE_5) { + return this.metalParts(woId); + } else if (yieldType == YieldOrder.YIELD_TYPE_6) { // 石墨模 +// return this.graphiteMold(woId); + return this.metalParts(woId); + } else if (yieldType == YieldOrder.YIELD_TYPE_3) { // 玻璃饼 + return this.glassCake(woId); + } else if (yieldType == YieldOrder.YIELD_TYPE_2) { // 玻璃封接部件 + return this.glassSealing(woId, planList, moduleList); + } + + return null; + + } + + @Override + public List printThicknessList(List idArr) { + List pcdLst = new ArrayList<>(); +// for (Long woId : idArr) { +// List thicknessList = new ArrayList<>(); +// PrintThicknessChildCraft printThicknessChildCraft; +// List prItemDetails = null; +// // 获取与本单同槽相关订单的工序 +// List byOtherWpId = workPlanMapper.getByOtherWpIdMes(woId); +// // 2025-07-23 线上迁移 +//// byOtherWpId.add(woId); +// String wpIdStr = ""; +// if (byOtherWpId == null || byOtherWpId.size() == 0) { +// continue; +// } +// wpIdStr = StringUtils.join(byOtherWpId, ","); +// +// // 拿出工序对应的测厚数据 +// prItemDetails = prItemDetailService.listByWpIdAndCode(wpIdStr, "镀后测厚"); +// if (prItemDetails != null && prItemDetails.size() > 0) { +// for (PrItemDetail prItemDetail : prItemDetails) { +// printThicknessChildCraft = new PrintThicknessChildCraft(); +// printThicknessChildCraft.setCode(prItemDetail.getGaugeValue7()); +// printThicknessChildCraft.setGauge_value1(prItemDetail.getGaugeValue1()); +// printThicknessChildCraft.setGauge_value2(prItemDetail.getGaugeValue2()); +// printThicknessChildCraft.setGauge_value3(prItemDetail.getGaugeValue3()); +// printThicknessChildCraft.setGauge_value4(prItemDetail.getGaugeValue4()); +// printThicknessChildCraft.setGauge_value5(prItemDetail.getGaugeValue5() != null ? +// prItemDetail.getGaugeValue5() : null); +// printThicknessChildCraft.setGauge_value6(prItemDetail.getGaugeValue6()); +// printThicknessChildCraft.setDeviceName(prItemDetail.getGaugeValue8()); +// printThicknessChildCraft.setUpdate_time(prItemDetail.getUpdateTime() != null ? +// DateTime.date2String(prItemDetail.getUpdateTime(), true, true) : null); +// thicknessList.add(printThicknessChildCraft); +// } +// } +// // 组装打印集合 +// PrintThicknessCraftCard pcd = new PrintThicknessCraftCard(thicknessList); +// WorkOrder wo = workOrderMapper.selectById(woId); +// pcd.setBatchNo(wo.getBatchNo()); +// pcd.setCardNo(wo.getPjYieldOrder().getCardNo()); +// pcd.setPartCode(wo.getPjYieldOrder().getPartCode()); +// pcd.setWoCode(wo.getWoCode()); +// // 填写主槽信息 +// if (prItemDetails != null && prItemDetails.size() > 0) { +// PrItemDetail prItemDetail = prItemDetails.get(0); +// PrWorkOrder prWorkOrder = prItemDetail.getPrWorkPlanItem().getPrWorkPlan().getPrWorkOrder(); +// pcd.setMainBatchNo(prWorkOrder.getBatchNo()); +// pcd.setMainCardNo(prWorkOrder.getPjYieldOrder().getCardNo()); +// pcd.setMainPartCode(prWorkOrder.getPjYieldOrder().getPartCode()); +// pcd.setMainWoCode(prWorkOrder.getWoCode()); +// } +// pcdLst.add(pcd); +// } + return pcdLst; + } + + @Override + public List getByRfpsIdMesNew(Long id) { + + List list = workPlanMapper.getByRfpsIdMesNew(id); + return list; + } + + private JSONObject metalParts(Long woId) { + JSONObject obj = new JSONObject(); + // 子件订单信息 + WorkOrder prWorkOrder = workOrderMapper.selectById(woId); + // 获取部件订单 + List workOrderList = workPlanMapper.findFatherByYoIdMes(prWorkOrder.getYoId()); + + // 获取工序 + List prWorkPlanList = workPlanMapper.listByWoIdAllMes(prWorkOrder.getId()); + obj.put("prWorkOrder", prWorkOrder); + obj.put("workOrderList", workOrderList); + List prWorkPlanItems; + List printChildCheckList = new ArrayList<>(); + for (WorkPlan prWorkPlan : prWorkPlanList) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("WC_ID", prWorkPlan.getId()); + List auditFileList = auditFileService.list(qw); + if(auditFileList != null && auditFileList.size() > 0){ + prWorkPlan.setAuditFile(auditFileList.get(0)); + } + // 同槽信息 + List slotList = workPlanMapper.listSjSlotInfoMes(prWorkPlan.getId(), Boolean.FALSE); + +// prWorkPlan.setSlotList(slotList); + TaskDataDto dto = new TaskDataDto(); + //未取得数据 +// dto.setGjArea(); +// dto.setCdjArea(); +// dto.setPdjArea(); + dto.setSlotList(slotList); + // 2025-07-23 线上迁移修改 删除了prMacToolUseService.listSlotInfo方法调用 + prWorkPlan.setTaskData(dto); + + // 设备绑定记录 + List qcProduceRunsList = workPlanMapper.listPrByWpId(prWorkPlan.getId()); + prWorkPlan.setQcProduceRunsList(qcProduceRunsList); + + prWorkPlanItems = workPlanMapper.listByWpIdMes(prWorkPlan.getId()); + if (prWorkPlanItems != null && prWorkPlanItems.size() > 0) { + PrintChildCheck printChildCheck; + for (WorkPlanItem prWorkPlanItem : prWorkPlanItems) { + printChildCheck = new PrintChildCheck(); +// printChildCheck.setTestOrders(prWorkPlanItem.getTrialNo()); +// printChildCheck.setTestName(prWorkPlanItem.getTrialItem()); +// printChildCheck.setTrialStandard(prWorkPlanItem.getTrialStandard()); + + printChildCheck.setTestOrders(prWorkPlanItem.getItemCode()); + printChildCheck.setTestName(prWorkPlanItem.getItemName()); + printChildCheck.setTrialStandard(prWorkPlanItem.getStandardName()); + + printChildCheck.setCheckResult(prWorkPlanItem.getCheckResult() == -1 ? "未检验" : prWorkPlanItem.getCheckResult() == 1 ? "合格" : + prWorkPlanItem.getCheckResult() == 2 ? "不合格" : prWorkPlanItem.getCheckResult() == 3 ? "NA" : ""); + if (prWorkPlanItem.getCheckUserId() != null) { + R user = userClient.userInfoById(prWorkPlanItem.getCheckUserId()); + if(null != user && null != user.getData()){ + printChildCheck.setCheckName(user.getData().getRealName()); + } + } + if (prWorkPlanItem.getCheckDate() != null) { + printChildCheck.setCheckDate(prWorkPlanItem.getCheckDate().toString()); + } + printChildCheckList.add(printChildCheck); + } + prWorkPlan.setPrintChildCheck(printChildCheckList); + } + } + obj.put("prWorkPlanList", prWorkPlanList); + return obj; + } + public void addRsSheet(Long id) { InspectionTask task = getById(id); if (InspectionTaskConst.CHECK_RESULT_NG.equals(task.getCheckResult())) { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java index f8d61b80..60a6e10c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java @@ -27,12 +27,14 @@ import org.springblade.desk.basic.constant.BaseRequest; import org.springblade.desk.basic.constant.BaseValue; import org.springblade.desk.basic.service.en.impl.EnBaseServiceImpl; import org.springblade.desk.basic.util.IdUtil; -import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.service.IWorkPlanService; import org.springblade.desk.quality.constant.InspectionTaskConst; import org.springblade.desk.quality.constant.ReviewSheetConst; import org.springblade.desk.quality.excel.ReviewSheetExcel; import org.springblade.desk.quality.mapper.ReviewSheetMapper; +import org.springblade.desk.quality.pojo.dto.ReviewDutyDTO; +import org.springblade.desk.quality.pojo.dto.ReviewFaultDTO; +import org.springblade.desk.quality.pojo.dto.ReviewSheetDTO; import org.springblade.desk.quality.pojo.entity.InspectionTask; import org.springblade.desk.quality.pojo.entity.ReviewDuty; import org.springblade.desk.quality.pojo.entity.ReviewFault; @@ -50,12 +52,16 @@ import org.springblade.system.feign.IDictClient; import org.springblade.system.feign.ISysClient; import org.springblade.system.feign.IUserClient; import org.springblade.system.pojo.entity.UserInfo; +import org.springframework.http.HttpEntity; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; - +import org.springblade.desk.quality.pojo.dto.PpmReportDetailDTO; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; - +import org.springframework.web.client.RestTemplate; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; /** * [生产处置单] 服务实现类 * @@ -83,6 +89,8 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl selectReviewSheetPage(IPage page, ReviewSheetDetailVO reviewSheet) { @@ -254,7 +262,7 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl reviewFormMess(JSONObject data) { + public List reviewFormMess(JSONObject data) { // todo: return List.of(); } @@ -372,6 +380,65 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl vods = new ArrayList<>(); + + for(ReviewDuty vod : listD){ + ReviewDutyDTO vodDTO = new ReviewDutyDTO(); + vodDTO.setTrialId(vod.getReviewSheetId()+""); + vodDTO.setReqQty(vod.getQty()); + vodDTO.setUnit(vod.getUnit()); + vodDTO.setCorrBatchNo(vod.getRelevantBatch()); + vods.add(vodDTO); + } + + + List vofs = new ArrayList<>(); + for(ReviewFault vof : listF){ + ReviewFaultDTO vofDTO = new ReviewFaultDTO(); + vofDTO.setTrialId(vof.getReviewSheetId()+""); + vofDTO.setFaultType(vof.getNgType2Id()+""); + vofDTO.setQuestClass(vof.getNgType3Id()+""); + vofDTO.setQuestSubclass(vof.getNgType4Id()+""); + vofDTO.setProportion(vof.getScale()); + vofDTO.setFaultQty(vof.getQty()); + vofDTO.setDescribe(vof.getMemo()); + vofs.add(vofDTO); + } + + JSONObject obj = new JSONObject(); + obj.put("qmsRepairApplyDTO", dto); + obj.put("qmsRepairPartList", vods); + obj.put("qmsRepairMalfList", vofs); + HttpEntity entity = new HttpEntity<>(obj, headers); + ResponseEntity responseEntity; + JSONObject responseBody; + try { + responseEntity = httpClientTemplate.postForEntity("http://192.168.119.68:10113" + + "/api/mms/qms/qmsrepairapply/qmsRepairApplyRest/saveQmsRepairApply/v1", entity, JSONObject.class); + JSONObject result = responseEntity.getBody(); + + responseBody = result.getJSONObject("responseBody"); + if (responseBody == null) { + throw new BusinessException("审理单,接口返回值null"); + } + } catch (Exception e) { + throw new RuntimeException("审理单,接口返回值null"); + } + } return R.success("成功"); } @@ -477,10 +544,23 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl listErp(IPage page, ReviewSheetErpSearch search) { - List listVO = baseMapper.listErp(page, search); - for (ReviewSheetErpVO oneVO : listVO) { - setErpVOValue(oneVO); + public IPage listErp(IPage page, ReviewSheetErpSearch search) { + List listVO = baseMapper.listErpNew(page, search); + for (PpmReportDetailDTO oneVO : listVO) { + oneVO.setSheetNo(oneVO.getCode()); + oneVO.setP5layer1(oneVO.getP5layer1()); + oneVO.setP5layer3(oneVO.getP5layer3()); + oneVO.setProcess(oneVO.getUseproc()); + oneVO.setProcessName(oneVO.getUseseq()); + oneVO.setPrecode(oneVO.getPrecode()); + oneVO.setReworkLine(oneVO.getRedodeptcode()); + oneVO.setMemo(oneVO.getP1remark()); + oneVO.setDispose(oneVO.getDisposename()); + oneVO.setDeptcode(oneVO.getDeptcode()); + oneVO.setLayer1(oneVO.getP2layer1()); + oneVO.setUsercode(oneVO.getChker()); + oneVO.setPrtno(oneVO.getPrtno()); + oneVO.setLotno(oneVO.getLotno()); } return page.setRecords(listVO); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/RestTemplateConfig.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/RestTemplateConfig.java new file mode 100644 index 00000000..105c36f5 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/RestTemplateConfig.java @@ -0,0 +1,18 @@ +package org.springblade.desk.quality.util; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class RestTemplateConfig { + /** + * 声明 RestTemplate Bean,供其他类注入使用 + * @return RestTemplate 实例 + */ + @Bean("httpClientTemplate") // Bean 名称和你注入的名称保持一致(httpClientTemplate) + public RestTemplate restTemplate() { + // 创建并返回 RestTemplate 实例 + return new RestTemplate(); + } +} diff --git a/blade-service/blade-desk/src/main/resources/Excel/oem/外协特殊过程项导入模板.xls b/blade-service/blade-desk/src/main/resources/Excel/oem/外协特殊过程项导入模板.xls index a17a8b3b..2370ef4f 100644 Binary files a/blade-service/blade-desk/src/main/resources/Excel/oem/外协特殊过程项导入模板.xls and b/blade-service/blade-desk/src/main/resources/Excel/oem/外协特殊过程项导入模板.xls differ diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java index 072dfed7..0d084e8c 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java @@ -50,4 +50,10 @@ public class ErpDataProduceClient implements IErpDataProduceClient { public R getVersionByPartCode(String partCode) { return R.data(erpDataProduceService.getVersionByPartCode(partCode)); } + + @Override + public R getCustodianByRecDept(String partCode, String recDept) { + return R.data(erpDataProduceService.getCustodianByRecDept(partCode, recDept)); + } + } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpYieldOrderClientImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpYieldOrderClientImpl.java new file mode 100644 index 00000000..7a08f72d --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpYieldOrderClientImpl.java @@ -0,0 +1,31 @@ +package org.springblade.erpdata.feign; + + +import io.swagger.v3.oas.annotations.Hidden; +import lombok.AllArgsConstructor; +import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.erpdata.service.IErpYieldOrderService; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; + + +/** + * 外协相关erp操作Feign实现类 + * + * @author qyl + * @serial 2026年2月27日 + */ +@NonDS +@Hidden +@RestController +@AllArgsConstructor +public class ErpYieldOrderClientImpl implements IErpYieldOrderClient { + + private final IErpYieldOrderService erpYieldOrderService; + + @Override + public void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate, String planUser, String ypCode, Long poQty, String partCode, Double quota) { + erpYieldOrderService.saveGlassCake(yoCode, cardNo, batchNo, prodIdent, demandDate, planUser, ypCode, poQty, partCode, quota); + } +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java index e6f27808..f9783317 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java @@ -23,4 +23,6 @@ public interface ErpDataProduceMapper extends Mapper { Map getProductAppareaByPartCode(String partCode); String getVersionByPartCode(String partCode); + + String getCustodianByRecDept(String partCode, String recDept); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml index 17d7b3d3..0ec275d2 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml @@ -70,4 +70,12 @@ select b.version from (select version from dba_mgr.drwversion@erp_mes_link a where a.drwpartno in ( select drwpartno from dba_mgr.t_prtbasdef@erp_mes_link where prtno = #{partCode})) b where rownum=1 + diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.java new file mode 100644 index 00000000..f95b3b93 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.java @@ -0,0 +1,21 @@ +package org.springblade.erpdata.mapper; + +import com.baomidou.mybatisplus.core.mapper.Mapper; + +import java.util.Map; + +/** + * Mapper 接口 + * + * @author qyl + */ +public interface ErpYieldOrderMapper extends Mapper { + + /** + * 生成玻璃饼订单 + * + * @param params + */ + void saveGlassCake(Map params); + +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.xml new file mode 100644 index 00000000..b7dd5a24 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java index a1f5f332..24d7c8f6 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java @@ -22,4 +22,6 @@ public interface IErpDataProduceService { Map getProductAppareaByPartCode(String partCode); String getVersionByPartCode(String partCode); + + String getCustodianByRecDept(String partCode, String recDept); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpYieldOrderService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpYieldOrderService.java new file mode 100644 index 00000000..9f64dc76 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpYieldOrderService.java @@ -0,0 +1,29 @@ +package org.springblade.erpdata.service; + +import java.util.Date; + +/** + * 外协相关erp操作service + * + * @author qyl + * @serial 2026年2月27日 + */ +public interface IErpYieldOrderService { + + /** + * 生成玻璃饼订单 + * + * @param yoCode + * @param cardNo + * @param batchNo + * @param prodIdent + * @param demandDate + * @param planUser + * @param ypCode + * @param poQty + * @param partCode + * @param quota + */ + void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate, + String planUser, String ypCode, Long poQty, String partCode, Double quota); +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java index 08370dc0..c7b28bbc 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java @@ -41,4 +41,9 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService { public String getVersionByPartCode(String partCode) { return erpDataProduceMapper.getVersionByPartCode(partCode); } + + @Override + public String getCustodianByRecDept(String partCode, String recDept) { + return erpDataProduceMapper.getCustodianByRecDept(partCode, recDept); + } } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpYieldOrderServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpYieldOrderServiceImpl.java new file mode 100644 index 00000000..720c1572 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpYieldOrderServiceImpl.java @@ -0,0 +1,58 @@ +package org.springblade.erpdata.service.impl; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.erpdata.mapper.ErpYieldOrderMapper; +import org.springblade.erpdata.service.IErpYieldOrderService; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + + +/** + * 外协相关erp操作service实现类 + * + * @author qtl + * @serial 2026年2月27日 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class ErpYieldOrderServiceImpl implements IErpYieldOrderService { + + private final ErpYieldOrderMapper yieldOrderMapper; + + + @Override + public void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate, + String planUser, String ypCode, Long poQty, String partCode, Double quota) { + Map paramMap = new HashMap<>(); + // 1. 赋值静态入参 + paramMap.put("v_work_roam", ""); + paramMap.put("v_next_roam", ""); + paramMap.put("v_po_code", ""); + paramMap.put("v_use_dept", "热表分厂"); + paramMap.put("v_release_date", new Date()); + paramMap.put("v_yield_type", (short) 3); + paramMap.put("v_warctlr", ""); + paramMap.put("v_entrust_dept", "热表分厂"); + paramMap.put("v_recseqno", ""); + paramMap.put("v_manual_increase", Short.valueOf("1")); + paramMap.put("v_lev_flag", "0"); + paramMap.put("v_use_deptcode", ""); + + // 2. 赋值动态入参 + paramMap.put("v_yo_code", yoCode); + paramMap.put("v_part_code", partCode); + paramMap.put("v_prod_ident", prodIdent); + paramMap.put("v_demand_date", demandDate); + paramMap.put("v_plan_user", planUser); + paramMap.put("v_memo", ypCode); + paramMap.put("v_card_no", cardNo); + paramMap.put("v_batch_no", batchNo); + paramMap.put("v_yo_qty", quota * poQty); + yieldOrderMapper.saveGlassCake(paramMap); + } +} diff --git a/blade-service/blade-scheduling/pom.xml b/blade-service/blade-scheduling/pom.xml index aad0f229..8915f1b8 100644 --- a/blade-service/blade-scheduling/pom.xml +++ b/blade-service/blade-scheduling/pom.xml @@ -45,6 +45,12 @@ hutool-all 5.8.16 + + org.springblade + blade-wms-api + 4.6.0.RELEASE + compile + diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/CertificateTypeController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/CertificateTypeController.java index 61f50a6d..9f35d270 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/CertificateTypeController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/CertificateTypeController.java @@ -11,6 +11,7 @@ import jakarta.validation.Valid; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -69,6 +70,7 @@ public class CertificateTypeController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入certificateType") + @ApiLog public R save(@Valid @RequestBody CertificateTypeEntity certificateType) { return R.status(certificateTypeService.save(certificateType)); } @@ -79,6 +81,7 @@ public class CertificateTypeController extends BladeController { @PostMapping("/update") @ApiOperationSupport(order = 5) @Operation(summary = "修改", description = "传入certificateType") + @ApiLog public R update(@Valid @RequestBody CertificateTypeEntity certificateType) { return R.status(certificateTypeService.updateById(certificateType)); } @@ -99,6 +102,7 @@ public class CertificateTypeController extends BladeController { @PostMapping("/remove") @ApiOperationSupport(order = 7) @Operation(summary = "逻辑删除", description = "传入ids") + @ApiLog public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(certificateTypeService.deleteLogic(Func.toLongList(ids))); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/CraftAbilityController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/CraftAbilityController.java index 45e65cac..1918a5d3 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/CraftAbilityController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/CraftAbilityController.java @@ -25,25 +25,27 @@ */ package org.springblade.scheduling.scheduling.controller; -import io.swagger.v3.oas.annotations.tags.Tag; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import lombok.AllArgsConstructor; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; - -import org.springblade.core.secure.BladeUser; -import org.springblade.core.secure.annotation.IsAdmin; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.annotation.IsAdmin; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; -import org.springblade.desk.basic.pojo.entity.CoatingThickness; -import org.springblade.desk.basic.pojo.entity.PlatingSmall; -import org.springblade.desk.basic.pojo.entity.TeamSet; import org.springblade.desk.basic.pojo.entity.WorkCenter; -import org.springblade.desk.basic.pojo.vo.PlatingSmallVO; import org.springblade.desk.basic.pojo.vo.WorkCenterVO; import org.springblade.desk.feign.INoticeClient; import org.springblade.scheduling.pojo.entity.CraftAbilityEntity; @@ -53,20 +55,13 @@ import org.springblade.scheduling.scheduling.vo.CraftAbilityVO; import org.springblade.scheduling.scheduling.wrapper.CraftAbilityWrapper; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.springblade.core.boot.ctrl.BladeController; -import org.springblade.core.tool.utils.DateUtil; -import org.springblade.core.excel.util.ExcelUtil; +import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; -import java.util.Map; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.web.multipart.MultipartFile; - /** * 工艺能力 控制器 * @@ -158,6 +153,7 @@ public class CraftAbilityController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入CraftAbility") + @ApiLog public R save(@Valid @RequestBody CraftAbilityEntity craftAbility) { return R.status(craftAbilityService.save(craftAbility)); } @@ -168,6 +164,7 @@ public class CraftAbilityController extends BladeController { @PostMapping("/update") @ApiOperationSupport(order = 5) @Operation(summary = "修改", description = "传入CraftAbility") + @ApiLog public R update(@Valid @RequestBody CraftAbilityEntity craftAbility) { return R.status(craftAbilityService.updateById(craftAbility)); } @@ -188,6 +185,7 @@ public class CraftAbilityController extends BladeController { @PostMapping("/remove") @ApiOperationSupport(order = 7) @Operation(summary = "逻辑删除", description = "传入ids") + @ApiLog public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(craftAbilityService.deleteLogic(Func.toLongList(ids))); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipAbilityController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipAbilityController.java index 6257e3fa..38d1278e 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipAbilityController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipAbilityController.java @@ -25,10 +25,10 @@ */ package org.springblade.scheduling.scheduling.controller; +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.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -38,7 +38,7 @@ import jakarta.validation.Valid; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; -import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -56,6 +56,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; +import java.util.concurrent.CompletableFuture; /** * 设备能力表 控制器 @@ -110,14 +111,35 @@ public class EquipAbilityController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入mesEquipAbility") - public R save(@Valid @RequestBody EquipAbilityEntity entity) { - List list = equipAbilityService.list(Wrappers.lambdaQuery().eq(EquipAbilityEntity::getWorkCenterId,entity.getWorkCenterId()).eq(EquipAbilityEntity::getEquipCode,entity.getEquipCode()).eq(EquipAbilityEntity::getEquipType,entity.getEquipType()).eq(EquipAbilityEntity::getCraftId,entity.getCraftId()).eq(BaseEntity::getIsDeleted,0)); - if(CollectionUtils.isNotEmpty(list)){ - return R.status(false,"该设备能力已存在!"); + public R save(@Valid @RequestBody List list) { + //校验唯一性 + for(EquipAbilityEntity entity : list){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); + wrapper.eq(EquipAbilityEntity::getWorkCenterId,entity.getWorkCenterId()) + .eq(EquipAbilityEntity::getEquipCode,entity.getEquipCode()) + .eq(EquipAbilityEntity::getEquipType,entity.getEquipType()) + .eq(EquipAbilityEntity::getCraftId,entity.getCraftId()); + if(entity.getProcessId() != null){ + wrapper.eq(EquipAbilityEntity::getProcessId,entity.getProcessId()); + } + List oldList = equipAbilityService.list(wrapper); + if(CollectionUtils.isNotEmpty(oldList)){ + return R.status(false,"设备能力["+entity.getWorkCenterName()+"-"+entity.getCraftName()+"-"+entity.getProcessName()+"]已存在!"); + } + + } + //保存 + for(EquipAbilityEntity entity : list){ + boolean flag = equipAbilityService.save(entity); + if(flag){ + //异步执行 + CompletableFuture future = CompletableFuture.runAsync(() -> { + //初始化设备资源 + equipResourceService.initSingleEquipResource(entity); + }); + } } - equipAbilityService.save(entity); - //初始化设备资源 - equipResourceService.initSingleEquipResource(entity); + return R.status(true); } @@ -127,10 +149,13 @@ public class EquipAbilityController extends BladeController { @PostMapping("/update") @ApiOperationSupport(order = 5) @Operation(summary = "修改", description = "传入mesEquipAbility") - public R update(@Valid @RequestBody EquipAbilityEntity entity) { - equipAbilityService.updateById(entity); - //初始化设备资源 - equipResourceService.initSingleEquipResource(entity); + @ApiLog + public R update(@Valid @RequestBody List list) { + for(EquipAbilityEntity entity : list){ + equipAbilityService.updateById(entity); + //初始化设备资源 + equipResourceService.initSingleEquipResource(entity); + } return R.status(true); } @@ -150,6 +175,7 @@ public class EquipAbilityController extends BladeController { @PostMapping("/remove") @ApiOperationSupport(order = 7) @Operation(summary = "逻辑删除", description = "传入ids") + @ApiLog public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(equipAbilityService.deleteLogic(Func.toLongList(ids))); } @@ -168,4 +194,6 @@ public class EquipAbilityController extends BladeController { ExcelUtil.export(response, "设备能力表数据" + DateUtil.time(), "设备能力表数据表", list, EquipAbilityExcel.class); } + + } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipmentController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipmentController.java index 4b538ade..3661948f 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipmentController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipmentController.java @@ -36,6 +36,7 @@ import jakarta.validation.Valid; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -105,6 +106,7 @@ public class EquipmentController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入Equipment") + @ApiLog public R save(@Valid @RequestBody EquipmentEntity equipment) { return R.status(equipmentService.save(equipment)); } @@ -115,6 +117,7 @@ public class EquipmentController extends BladeController { @PostMapping("/update") @ApiOperationSupport(order = 5) @Operation(summary = "修改", description = "传入Equipment") + @ApiLog public R update(@Valid @RequestBody EquipmentEntity equipment) { return R.status(equipmentService.updateById(equipment)); } @@ -135,6 +138,7 @@ public class EquipmentController extends BladeController { @PostMapping("/remove") @ApiOperationSupport(order = 7) @Operation(summary = "逻辑删除", description = "传入ids") + @ApiLog public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(equipmentService.deleteLogic(Func.toLongList(ids))); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/MainProducerController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/MainProducerController.java index e9a509fe..f2a17d0e 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/MainProducerController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/MainProducerController.java @@ -38,6 +38,7 @@ import jakarta.validation.Valid; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; @@ -108,6 +109,7 @@ public class MainProducerController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入mainProducer") + @ApiLog public R save(@Valid @RequestBody MainProducerEntity entity) { List list = mainProducerService.list(Wrappers.lambdaQuery().eq(MainProducerEntity::getProcessId,entity.getProcessId()).eq(MainProducerEntity::getMainProducer,entity.getMainProducer()).eq(BaseEntity::getIsDeleted,0)); if(CollectionUtils.isNotEmpty(list)){ @@ -122,6 +124,7 @@ public class MainProducerController extends BladeController { @PostMapping("/update") @ApiOperationSupport(order = 5) @Operation(summary = "修改", description = "传入mainProducer") + @ApiLog public R update(@Valid @RequestBody MainProducerEntity entity) { return R.status(mainProducerService.updateById(entity)); } @@ -142,6 +145,7 @@ public class MainProducerController extends BladeController { @PostMapping("/remove") @ApiOperationSupport(order = 7) @Operation(summary = "逻辑删除", description = "传入ids") + @ApiLog public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(mainProducerService.deleteLogic(Func.toLongList(ids))); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/OutsourceProcessController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/OutsourceProcessController.java index 65edd56c..0dff3e76 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/OutsourceProcessController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/OutsourceProcessController.java @@ -25,18 +25,24 @@ */ package org.springblade.scheduling.scheduling.controller; -import io.swagger.v3.oas.annotations.tags.Tag; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import lombok.AllArgsConstructor; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; - -import org.springblade.core.secure.BladeUser; -import org.springblade.core.secure.annotation.IsAdmin; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.annotation.IsAdmin; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.scheduling.pojo.entity.OutsourceProcessEntity; import org.springblade.scheduling.scheduling.excel.OutsourceProcessExcel; @@ -44,15 +50,9 @@ import org.springblade.scheduling.scheduling.service.IOutsourceProcessService; import org.springblade.scheduling.scheduling.vo.OutsourceProcessVO; import org.springblade.scheduling.scheduling.wrapper.OutsourceProcessWrapper; import org.springframework.web.bind.annotation.*; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.springblade.core.boot.ctrl.BladeController; -import org.springblade.core.tool.utils.DateUtil; -import org.springblade.core.excel.util.ExcelUtil; -import java.util.Map; import java.util.List; -import jakarta.servlet.http.HttpServletResponse; +import java.util.Map; /** * 外协工序表 控制器 @@ -106,6 +106,7 @@ public class OutsourceProcessController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入OutsourceProcess") + @ApiLog public R save(@Valid @RequestBody OutsourceProcessEntity OutsourceProcess) { return R.status(outsourceProcessService.save(OutsourceProcess)); } @@ -116,6 +117,7 @@ public class OutsourceProcessController extends BladeController { @PostMapping("/update") @ApiOperationSupport(order = 5) @Operation(summary = "修改", description = "传入OutsourceProcess") + @ApiLog public R update(@Valid @RequestBody OutsourceProcessEntity OutsourceProcess) { return R.status(outsourceProcessService.updateById(OutsourceProcess)); } @@ -136,6 +138,7 @@ public class OutsourceProcessController extends BladeController { @PostMapping("/remove") @ApiOperationSupport(order = 7) @Operation(summary = "逻辑删除", description = "传入ids") + @ApiLog public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(outsourceProcessService.deleteLogic(Func.toLongList(ids))); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/PersonAbilityController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/PersonAbilityController.java index bd09de1b..393183c4 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/PersonAbilityController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/PersonAbilityController.java @@ -38,6 +38,7 @@ import jakarta.validation.Valid; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; @@ -109,6 +110,7 @@ public class PersonAbilityController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入personAbility") + @ApiLog public R save(@Valid @RequestBody PersonAbilityEntity entity) { List list = personAbilityService.list(Wrappers.lambdaQuery().eq(PersonAbilityEntity::getWorkCenterId,entity.getWorkCenterId()).eq(PersonAbilityEntity::getProcessId,entity.getProcessId()).eq(PersonAbilityEntity::getCraftId,entity.getCraftId()).eq(BaseEntity::getIsDeleted,0)); if(CollectionUtils.isNotEmpty(list)){ @@ -123,6 +125,7 @@ public class PersonAbilityController extends BladeController { @PostMapping("/update") @ApiOperationSupport(order = 5) @Operation(summary = "修改", description = "传入personAbility") + @ApiLog public R update(@Valid @RequestBody PersonAbilityEntity entity) { return R.status(personAbilityService.updateById(entity)); } @@ -143,6 +146,7 @@ public class PersonAbilityController extends BladeController { @PostMapping("/remove") @ApiOperationSupport(order = 7) @Operation(summary = "逻辑删除", description = "传入ids") + @ApiLog public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(personAbilityService.deleteLogic(Func.toLongList(ids))); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/SameTroughController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/SameTroughController.java index 46d1c364..ffdd7dbd 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/SameTroughController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/SameTroughController.java @@ -25,18 +25,24 @@ */ package org.springblade.scheduling.scheduling.controller; -import io.swagger.v3.oas.annotations.tags.Tag; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import lombok.AllArgsConstructor; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; - -import org.springblade.core.secure.BladeUser; -import org.springblade.core.secure.annotation.IsAdmin; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.annotation.IsAdmin; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.scheduling.pojo.entity.SameTroughEntity; import org.springblade.scheduling.scheduling.excel.SameTroughExcel; @@ -44,15 +50,9 @@ import org.springblade.scheduling.scheduling.service.ISameTroughService; import org.springblade.scheduling.scheduling.vo.SameTroughVO; import org.springblade.scheduling.scheduling.wrapper.SameTroughWrapper; import org.springframework.web.bind.annotation.*; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.springblade.core.boot.ctrl.BladeController; -import org.springblade.core.tool.utils.DateUtil; -import org.springblade.core.excel.util.ExcelUtil; -import java.util.Map; import java.util.List; -import jakarta.servlet.http.HttpServletResponse; +import java.util.Map; /** * 非同槽因素表 控制器 @@ -106,6 +106,7 @@ public class SameTroughController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入SameTrough") + @ApiLog public R save(@Valid @RequestBody SameTroughEntity sameTrough) { return R.status(sameTroughService.save(sameTrough)); } @@ -116,6 +117,7 @@ public class SameTroughController extends BladeController { @PostMapping("/update") @ApiOperationSupport(order = 5) @Operation(summary = "修改", description = "传入SameTrough") + @ApiLog public R update(@Valid @RequestBody SameTroughEntity sameTrough) { return R.status(sameTroughService.updateById(sameTrough)); } @@ -136,6 +138,7 @@ public class SameTroughController extends BladeController { @PostMapping("/remove") @ApiOperationSupport(order = 7) @Operation(summary = "逻辑删除", description = "传入ids") + @ApiLog public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(sameTroughService.deleteLogic(Func.toLongList(ids))); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/SintTempCurveController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/SintTempCurveController.java index 5cd335c8..f12a5dc4 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/SintTempCurveController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/SintTempCurveController.java @@ -25,18 +25,24 @@ */ package org.springblade.scheduling.scheduling.controller; -import io.swagger.v3.oas.annotations.tags.Tag; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import lombok.AllArgsConstructor; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; - -import org.springblade.core.secure.BladeUser; -import org.springblade.core.secure.annotation.IsAdmin; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.annotation.IsAdmin; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.scheduling.pojo.entity.SintTempCurveEntity; import org.springblade.scheduling.scheduling.excel.SintTempCurveExcel; @@ -44,15 +50,9 @@ import org.springblade.scheduling.scheduling.service.ISintTempCurveService; import org.springblade.scheduling.scheduling.vo.SintTempCurveVO; import org.springblade.scheduling.scheduling.wrapper.SintTempCurveWrapper; import org.springframework.web.bind.annotation.*; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.springblade.core.boot.ctrl.BladeController; -import org.springblade.core.tool.utils.DateUtil; -import org.springblade.core.excel.util.ExcelUtil; -import java.util.Map; import java.util.List; -import jakarta.servlet.http.HttpServletResponse; +import java.util.Map; /** * 烧结温度曲线表 控制器 @@ -106,6 +106,7 @@ public class SintTempCurveController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入SintTempCurve") + @ApiLog public R save(@Valid @RequestBody SintTempCurveEntity sintTempCurve) { return R.status(sintTempCurveService.save(sintTempCurve)); } @@ -116,6 +117,7 @@ public class SintTempCurveController extends BladeController { @PostMapping("/update") @ApiOperationSupport(order = 5) @Operation(summary = "修改", description = "传入SintTempCurve") + @ApiLog public R update(@Valid @RequestBody SintTempCurveEntity sintTempCurve) { return R.status(sintTempCurveService.updateById(sintTempCurve)); } @@ -136,6 +138,7 @@ public class SintTempCurveController extends BladeController { @PostMapping("/remove") @ApiOperationSupport(order = 7) @Operation(summary = "逻辑删除", description = "传入ids") + @ApiLog public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { return R.status(sintTempCurveService.deleteLogic(Func.toLongList(ids))); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java index 0fb68fcd..6e3b674e 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java @@ -319,4 +319,16 @@ public class WorkOrderController extends BladeController { return R.data(pages); } + + /** + * 工序执行分析明细 自定义分页 + */ + @GetMapping("/test") + @ApiOperationSupport(order = 3) + @Operation(summary = "分页", description = "传入WorkOrder") + public R test(WorkPlanVO workPlan, Query query) { + workOrderService.test(); + return R.success(); + } + } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/feign/WorkOrderClient.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/feign/WorkOrderClient.java index 04aa7975..27067974 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/feign/WorkOrderClient.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/feign/WorkOrderClient.java @@ -27,20 +27,14 @@ package org.springblade.scheduling.scheduling.feign; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.v3.oas.annotations.Hidden; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.time.DateFormatUtils; -import org.springblade.core.mp.support.Condition; -import org.springblade.core.mp.support.Query; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; -import org.springblade.core.tool.utils.DateUtil; import org.springblade.scheduling.feign.IWorkOrderClient; import org.springblade.scheduling.pojo.entity.QualityGradeEntity; -import org.springblade.scheduling.pojo.vo.GlassCakeOrderPageQuery; -import org.springblade.scheduling.pojo.vo.WorkOrderVO; import org.springblade.scheduling.scheduling.service.IEquipResourceService; import org.springblade.scheduling.scheduling.service.IPersonResourceService; import org.springblade.scheduling.scheduling.service.IQualityGradeService; @@ -87,14 +81,6 @@ public class WorkOrderClient implements IWorkOrderClient { return R.success(); } - @Override - public R> selectGlassCakeOrderPage(GlassCakeOrderPageQuery glassCakeOrderPageQuery) { - Query query = new Query(); - query.setCurrent(glassCakeOrderPageQuery.getCurrent()); - query.setSize(glassCakeOrderPageQuery.getSize()); - WorkOrderVO workOrder = new WorkOrderVO(); - return R.data(workOrderService.selectGlassCakeOrderPage(Condition.getPage(query), workOrder)); - } @Override public R getById(Long id) { diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartMapper.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartMapper.java index ca8684c3..fbf9f10e 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartMapper.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartMapper.java @@ -29,6 +29,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; +import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; import org.springblade.scheduling.pojo.entity.PartEntity; import org.springblade.scheduling.scheduling.excel.PartExcel; import org.springblade.scheduling.scheduling.vo.PartVO; @@ -62,6 +63,6 @@ public interface PartMapper extends BaseMapper { List export(@Param("ew") Wrapper queryWrapper); - List selectChildPart(PartEntity part); + List selectChildPart(DsPartVersionEntity partVersion); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartMapper.xml b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartMapper.xml index 40c865a5..a47ccc46 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartMapper.xml +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartMapper.xml @@ -77,10 +77,12 @@ c.* FROM DS_PART a - LEFT JOIN DS_PART_RELATION b ON a.id = b.PART_ID - LEFT JOIN DS_PART c ON b.CHILD_PART_ID = c.id + LEFT JOIN DS_PART_VERSION b ON a.id = b.part_id + LEFT JOIN DS_PART_RELATION c ON a.id = c.PART_ID + LEFT JOIN DS_PART d ON c.CHILD_PART_ID = d.id WHERE - a.PART_CODE = #{partCode} + b.PART_CODE = #{partCode} + and b.PART_VERSION = #{partVersion} diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.java new file mode 100644 index 00000000..34bae5bd --- /dev/null +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.java @@ -0,0 +1,41 @@ +/** + * BladeX Commercial License Agreement + * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. + *

+ * Use of this software is governed by the Commercial License Agreement + * obtained after purchasing a license from BladeX. + *

+ * 1. This software is for development use only under a valid license + * from BladeX. + *

+ * 2. Redistribution of this software's source code to any third party + * without a commercial license is strictly prohibited. + *

+ * 3. Licensees may copyright their own code but cannot use segments + * from this software for such purposes. Copyright of this software + * remains with BladeX. + *

+ * Using this software signifies agreement to this License, and the software + * must not be used for illegal purposes. + *

+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is + * not liable for any claims arising from secondary or illegal development. + *

+ * Author: Chill Zhuang (bladejava@qq.com) + */ +package org.springblade.scheduling.scheduling.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; + +/** + * 零件信息表 Mapper 接口 + * + * @author BladeX + * @since 2025-11-12 + */ +public interface PartVersionMapper extends BaseMapper { + + + +} diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.xml b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.xml new file mode 100644 index 00000000..b8011b87 --- /dev/null +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/PartVersionMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.java index b2dce072..3cce158c 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.java @@ -80,9 +80,6 @@ public interface WorkOrderMapper extends BaseMapper { List selectTeamMember(@Param("teamId") Long teamId,@Param("certificateId") Long certificateId); - List selectGlassCakeOrderPage(IPage page, WorkOrderVO workOrder); - - List selectQuaExecuteAnalysisPage(IPage page, WorkPlanVO workPlan); List selectCenterExecuteList(WorkPlanVO workPlan); diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml index 5098abf6..69d8b1ac 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml @@ -299,23 +299,7 @@ AND ct.id = #{certificateId} - +