From 67e3ebe4fbc8ef1f7739a7f50a72ba2975537610 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Thu, 5 Mar 2026 17:58:05 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=9B=91=E6=8E=A7=E5=B7=A5?= =?UTF-8?q?=E5=BA=8F=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/produce/pojo/entity/MakeRec.java | 2 +- .../pojo/entity/MesQcProduceRunEntity.java | 33 +- .../entity/MesRbFilePreserveDetailEntity.java | 4 +- .../entity/MesRbFilePreserveSlotEntity.java | 2 +- .../pojo/vo/ProduceMonitorFileSlotVO.java | 9 + .../pojo/vo/ProduceMonitorPlanDataVO.java | 2 +- .../pojo/vo/ProduceMonitorPlanItemVO.java | 13 +- .../desk/produce/pojo/vo/UnBingDeviceVo.java | 2 +- .../quality/pojo/entity/InspectionTask.java | 2 +- .../desk/produce/mapper/MacToolUseMapper.java | 7 + .../desk/produce/mapper/MacToolUseMapper.xml | 51 ++ .../produce/mapper/MesQcProduceRunMapper.java | 1 + .../produce/mapper/QcProduceRunMapper.xml | 10 +- .../produce/service/IMacToolUseService.java | 19 + .../service/IMesQcProduceRunService.java | 6 + .../IMesRbFilePreserveDetailService.java | 3 + .../IMesRbFilePreserveSlotService.java | 1 + .../produce/service/IWorkOrderService.java | 9 + .../service/impl/MacToolUseServiceImpl.java | 51 +- .../service/impl/MakeRecServiceImpl.java | 4 +- .../impl/MesQcProduceRunServiceImpl.java | 9 + .../MesRbFilePreserveDetailServiceImpl.java | 8 + .../MesRbFilePreserveSlotServiceImpl.java | 5 + .../service/impl/PdaSaveServiceImpl.java | 15 +- .../service/impl/WorkOrderServiceImpl.java | 589 +++++++++++++++++- .../service/IProReTemplateService.java | 3 + .../impl/ProReTemplateServiceImpl.java | 13 + 27 files changed, 830 insertions(+), 43 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MakeRec.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MakeRec.java index 38756649..973bb4bc 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MakeRec.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MakeRec.java @@ -35,7 +35,7 @@ public class MakeRec extends BaseEntity { private Double workQty = 0d; @Schema(description = "报废数量") - private Integer scrapQty = 0; + private Double scrapQty = 0d; @Schema(description = "色标数量") private Double flagQty = 0d; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesQcProduceRunEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesQcProduceRunEntity.java index 1ac925d0..ba4c90d5 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesQcProduceRunEntity.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesQcProduceRunEntity.java @@ -75,12 +75,12 @@ public class MesQcProduceRunEntity extends BaseEntity { * 入槽时间 */ @Schema(description = "入槽时间") - private Date inDate; + private String inDate; /** * 出槽时间 */ @Schema(description = "出槽时间") - private Date outDate; + private String outDate; /** * 生产状态 */ @@ -160,7 +160,7 @@ public class MesQcProduceRunEntity extends BaseEntity { * 软起时间 */ @Schema(description = "软起时间") - private Date softWorkTime; + private String softWorkTime; /** * 电压 */ @@ -207,13 +207,28 @@ public class MesQcProduceRunEntity extends BaseEntity { @Schema(description = "参数7") private String dataSeven; - @TableField(exist = false) - private Date dataThirteen; + @Schema(description = "参数值8") + private String dataEight; - @TableField(exist = false) - private Date dataTwelve; + @Schema(description = "参数值9") + private String dataNine; - @TableField(exist = false) - private Date dataFourteen; + @Schema(description = "参数值10") + private String dataTen; + + @Schema(description = "参数值11、露点") + private String dataEleven; + + @Schema(description = "参数值12、存储保温结束") + private String dataTwelve; + + @Schema(description = "参数值13、存储保温开始") + private String dataThirteen; + + @Schema(description = "参数值14、真空度") + private String dataFourteen; + + @Schema(description = "初始电压") + private String startVol; } 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 54aba47f..4c2947b0 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 @@ -49,12 +49,12 @@ public class MesRbFilePreserveDetailEntity extends BaseEntity { * 时间 */ @Schema(description = "时间") - private Date rfpdTime; + private String rfpdTime; /** * 是否合格 */ @Schema(description = "是否合格") - private BigDecimal qualified; + private String qualified; /** * 参数名称 */ 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 c2458208..341edb6e 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 @@ -49,7 +49,7 @@ public class MesRbFilePreserveSlotEntity extends BaseEntity { * 模板类型 */ @Schema(description = "模板类型") - private String rfpsType; + private Short rfpsType; /** * 维护时间 */ diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorFileSlotVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorFileSlotVO.java index 78a718e1..9cd3dd63 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorFileSlotVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorFileSlotVO.java @@ -15,6 +15,15 @@ import java.util.List; @Data public class ProduceMonitorFileSlotVO { + @Schema(description = "模板类型") + private Short rfpsType; + + @Schema(description = "插入序号") + private String insertIndex; + + @Schema(description = "槽号序号") + private String slotIndex; + @Schema(description = "槽位/工步") private String slotName; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanDataVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanDataVO.java index e4177faa..3e99fc04 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanDataVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanDataVO.java @@ -40,7 +40,7 @@ public class ProduceMonitorPlanDataVO { private List dsRbFilePreserveSlotList; @Schema(description = "检验记录") - private List prWorkCheck; + private ProduceMonitorWorkCheckVO prWorkCheck; @Schema(description = "转试记录") private List trialItemList; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanItemVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanItemVO.java index 1c352860..0091e48f 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanItemVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanItemVO.java @@ -3,6 +3,7 @@ package org.springblade.desk.produce.pojo.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.time.LocalDateTime; import java.util.Date; /** @@ -15,16 +16,16 @@ import java.util.Date; public class ProduceMonitorPlanItemVO { @Schema(description = "项目编号") - private String trialNo; + private String itemCode; @Schema(description = "项目名称") - private String trialItem; + private String itemName; @Schema(description = "标准") - private String trialStandard; + private String standardName; @Schema(description = "测试值") - private String scrapQty; + private String checkValue; @Schema(description = "试验数量") private Double testQty = 0d; @@ -36,12 +37,12 @@ public class ProduceMonitorPlanItemVO { private Double checkQty = 0d; @Schema(description = "检验结果") - private String checkValue; + private String checkResult; @Schema(description = "检验人") private String checkMan; @Schema(description = "检验时间") - private Date checkDate; + private LocalDateTime checkDate; } \ No newline at end of file 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 6d9ba688..ca019bbe 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 @@ -18,7 +18,7 @@ public class UnBingDeviceVo { private String fiveData; private String sixData; private String sevenData; - private Date dataFourteen; + private String dataFourteen; private String tempSlot; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/InspectionTask.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/InspectionTask.java index a9d53d3a..49c15568 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/InspectionTask.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/InspectionTask.java @@ -329,7 +329,7 @@ public class InspectionTask extends BaseEntity { * 返工数 */ @Schema(description = "返工数") - private Long reworkQty; + private Double reworkQty; /** * [作业计划]id */ 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 5fcd0c40..a9d9e270 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 @@ -3,8 +3,11 @@ 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.MacToolUse; +import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity; +import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; import java.util.List; +import java.util.Map; /** * 设备,工装使用记录 Mapper 接口 @@ -15,4 +18,8 @@ public interface MacToolUseMapper extends BaseMapper { MacToolUse getTcDataByWoId(Long woId); List queryMacToolUse(IPage page, MacToolUse macToolUse); + + List listSlotInfo(Long id, int isGr, int isCx); + + MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long id); } 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 11a324c3..e57b62b5 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 @@ -34,5 +34,56 @@ + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesQcProduceRunMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesQcProduceRunMapper.java index 3f02040e..6d753935 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesQcProduceRunMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesQcProduceRunMapper.java @@ -27,4 +27,5 @@ public interface MesQcProduceRunMapper extends BaseMapper List selectMesQcProduceRunPage(IPage page, MesQcProduceRunVO mesQcProduceRun); + List listPrByWpIdIndex(Long id, int i, int i1); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/QcProduceRunMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/QcProduceRunMapper.xml index 0f9cd761..a36c8fde 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/QcProduceRunMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/QcProduceRunMapper.xml @@ -49,7 +49,15 @@ - + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java index bc68102c..c4cb058c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java @@ -3,6 +3,9 @@ package org.springblade.desk.produce.service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import org.springblade.desk.produce.pojo.entity.MacToolUse; +import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity; +import org.springblade.desk.produce.pojo.entity.WorkPlan; +import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; import java.util.List; @@ -31,4 +34,20 @@ public interface IMacToolUseService extends BaseService { IPage queryMacToolUse(IPage page, MacToolUse macToolUse); MacToolUse getTcDataByWoId(Long woId); + + /** + * 获取工位信息 + * + * @param workPlan + * @return + */ + List listSlotInfo(WorkPlan workPlan); + + List getDataByWpIdAndIndexList(Long id, String number); + + MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long id); + + MacToolUse getDataByWpIdAndIndex(Long id, String number); + + MacToolUse getHangNumIsNull(Long id); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesQcProduceRunService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesQcProduceRunService.java index aef41d80..806deb44 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesQcProduceRunService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesQcProduceRunService.java @@ -5,6 +5,8 @@ import org.springblade.core.mp.base.BaseService; import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity; import org.springblade.desk.produce.pojo.vo.MesQcProduceRunVO; +import java.util.List; + /** * 生产追溯 服务类 * @@ -29,4 +31,8 @@ public interface IMesQcProduceRunService extends BaseService listPrByWpIdIndexAndMtnCode(List list, String mtnCode); + + List listPrByWpIdIndex(Long id, int i, Boolean aTrue); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesRbFilePreserveDetailService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesRbFilePreserveDetailService.java index b102f1f1..75e97bbe 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesRbFilePreserveDetailService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesRbFilePreserveDetailService.java @@ -5,6 +5,8 @@ import org.springblade.core.mp.base.BaseService; import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity; import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveDetailVO; +import java.util.List; + /** * 热表电子档案维护-明细 服务类 * @@ -21,4 +23,5 @@ public interface IMesRbFilePreserveDetailService extends BaseService selectMesRbFilePreserveDetailPage(IPage page, MesRbFilePreserveDetailVO mesRbFilePreserveDetail); + List getByRfpsId(Long id); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesRbFilePreserveSlotService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesRbFilePreserveSlotService.java index 1c9861ba..6cea9406 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesRbFilePreserveSlotService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesRbFilePreserveSlotService.java @@ -24,4 +24,5 @@ public interface IMesRbFilePreserveSlotService extends BaseService selectMesRbFilePreserveSlotPage(IPage page, MesRbFilePreserveSlotVO mesRbFilePreserveSlot); + List getByRfpId(Long aLong); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java index fcc6d61b..05a69120 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java @@ -8,6 +8,7 @@ import org.springblade.desk.produce.pojo.dto.QueryByReadStatusDTO; import org.springblade.desk.produce.pojo.dto.WorkOrderDTO; import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkOrderRun; +import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.pojo.entity.WorkPlanRun; import org.springblade.desk.produce.pojo.vo.BatchPrepareVO; import org.springblade.desk.produce.pojo.vo.QueryByReadStatusVO; @@ -165,4 +166,12 @@ public interface IWorkOrderService extends BaseService { * @param wpId 工单id */ ProduceMonitorPlanDataVO getPlanDetail(Long wpId); + + /** + *

方法名: getProcessByWp

+ *

方法描述: 组装生产追溯数据

+ * + * @param workPlan 工单计划 + */ + void getProcessByWp(ProduceMonitorPlanDataVO planDataVO, WorkPlan workPlan); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java index 1ea939ed..cddcf93b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java @@ -1,21 +1,25 @@ package org.springblade.desk.produce.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; +import org.springblade.desk.dashboard.service.IBsProcessSetService; import org.springblade.desk.device.pojo.entity.RackSetEntity; import org.springblade.desk.device.service.IRackSetService; import org.springblade.desk.produce.mapper.MacToolUseMapper; import org.springblade.desk.produce.pojo.entity.MacToolUse; +import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity; +import org.springblade.desk.produce.pojo.entity.WorkPlan; +import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; import org.springblade.desk.produce.service.IMacToolUseService; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.Random; +import java.util.*; import static com.fasterxml.jackson.databind.type.LogicalType.DateTime; @@ -30,6 +34,8 @@ import static com.fasterxml.jackson.databind.type.LogicalType.DateTime; public class MacToolUseServiceImpl extends BaseServiceImpl implements IMacToolUseService { private final IRackSetService rackSetService; + + private final IBsProcessSetService bsProcessSetService; @Override public String nextCode(int i) { // 编码模式 @@ -84,6 +90,43 @@ public class MacToolUseServiceImpl extends BaseServiceImpl listSlotInfo(WorkPlan workPlan) { + BsProcessSetEntity processSet = bsProcessSetService.getById(workPlan.getPpsId()); + if ("固溶".equals(processSet.getName())) { + return baseMapper.listSlotInfo(workPlan.getId(), 1, 0); + } + List slotListVos = baseMapper.listSlotInfo(workPlan.getId(), 0, 1); + if (CollectionUtils.isEmpty(slotListVos)) { + slotListVos = baseMapper.listSlotInfo(workPlan.getId(), 0, 0); + } + return slotListVos; + } + + @Override + public List getDataByWpIdAndIndexList(Long id, String number) { + return this.list(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getWpId, id).eq(MacToolUse::getMtuIndex, number)); + } + + @Override + public MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long id) { + MesQcProduceRunEntity qcProduceRun = baseMapper.getBoxInfoByWpIdMtnCode(id); + qcProduceRun.setWorkSlot("烘干"); + return qcProduceRun; + } + + @Override + public MacToolUse getDataByWpIdAndIndex(Long id, String number) { + List macToolUses = this.list(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getWpId, id).eq(MacToolUse::getMtuIndex, number).orderByDesc(MacToolUse::getId)); + return CollectionUtils.isNotEmpty(macToolUses) ? macToolUses.get(0) : null; + } + + @Override + public MacToolUse getHangNumIsNull(Long id) { + List macToolUses = this.list(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getWpId, id).isNotNull(MacToolUse::getHangNum)); + return CollectionUtils.isNotEmpty(macToolUses) ? macToolUses.get(0) : null; + } + public static final int time2Integer(Date d) { Calendar cal = Calendar.getInstance(); cal.setTime(d); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java index 702b6d1d..b3f4e36f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java @@ -1,5 +1,6 @@ package org.springblade.desk.produce.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import jodd.bean.BeanUtil; @@ -217,8 +218,7 @@ public class MakeRecServiceImpl extends BaseServiceImpl MesQcProduceRunEntity qcProduceRun = new MesQcProduceRunEntity(); qcProduceRun.setMtnCode(code); qcProduceRun.setWorkSlot("热处理自检"); - - qcProduceRun.setInDate(new Date()); + qcProduceRun.setInDate(DateUtil.now()); qcProduceRun.setDataOne(makeRecDTO.getResource()); qcProduceRun.setDataTwo(makeRecDTO.getNum()); qcProduceRun.setDataThree(makeRecDTO.getThickness()); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesQcProduceRunServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesQcProduceRunServiceImpl.java index ac90f019..49b72e09 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesQcProduceRunServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesQcProduceRunServiceImpl.java @@ -35,5 +35,14 @@ public class MesQcProduceRunServiceImpl extends BaseServiceImpl listPrByWpIdIndexAndMtnCode(List list, String mtnCode) { + return this.list(Wrappers.lambdaQuery(MesQcProduceRunEntity.class).eq(MesQcProduceRunEntity::getMtnCode, mtnCode).in(MesQcProduceRunEntity::getMtnCode, list)); + } + + @Override + public List listPrByWpIdIndex(Long id, int i, Boolean aTrue) { + return baseMapper.listPrByWpIdIndex(id, i, aTrue ? 1 : 0); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesRbFilePreserveDetailServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesRbFilePreserveDetailServiceImpl.java index f0827607..0b3e47ab 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesRbFilePreserveDetailServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesRbFilePreserveDetailServiceImpl.java @@ -1,6 +1,7 @@ package org.springblade.desk.produce.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.desk.produce.mapper.MesRbFilePreserveDetailMapper; import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity; @@ -8,6 +9,8 @@ import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveDetailVO; import org.springblade.desk.produce.service.IMesRbFilePreserveDetailService; import org.springframework.stereotype.Service; +import java.util.List; + /** * 热表电子档案维护-明细 服务实现类 * @@ -22,5 +25,10 @@ public class MesRbFilePreserveDetailServiceImpl extends BaseServiceImpl getByRfpsId(Long id) { + return this.list(Wrappers.lambdaQuery(MesRbFilePreserveDetailEntity.class).eq(MesRbFilePreserveDetailEntity::getRfpsId, id).orderByAsc(MesRbFilePreserveDetailEntity::getDetailIndex)); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesRbFilePreserveSlotServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesRbFilePreserveSlotServiceImpl.java index 32d7d2ce..99aad606 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesRbFilePreserveSlotServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesRbFilePreserveSlotServiceImpl.java @@ -1,5 +1,6 @@ package org.springblade.desk.produce.service.impl; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springblade.desk.produce.mapper.MesRbFilePreserveSlotMapper; import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity; import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveSlotVO; @@ -24,6 +25,10 @@ public class MesRbFilePreserveSlotServiceImpl extends BaseServiceImpl getByRfpId(Long aLong) { + return this.list(Wrappers.lambdaQuery(MesRbFilePreserveSlotEntity.class).eq(MesRbFilePreserveSlotEntity::getRfpId, aLong)); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java index d5858304..71d4ebc4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java @@ -1,5 +1,6 @@ package org.springblade.desk.produce.service.impl; +import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.BeanUtils; @@ -37,7 +38,9 @@ import org.springblade.desk.quality.service.IWorkPlanItemService; import org.springblade.scheduling.pojo.entity.ProcessSetEntity; import org.springframework.stereotype.Service; +import java.text.SimpleDateFormat; import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -271,7 +274,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpllambdaQuery().eq(RackSetEntity::getRsCode, unBingVo.getRsCode())); // 查询飞靶 @@ -364,7 +368,6 @@ public class PdaSaveServiceImpl extends BaseServiceImpl 0) { for (MesQcProduceRunEntity qcProduceRun : qcProduceRuns) { - qcProduceRun.setOutDate(new Date()); + qcProduceRun.setOutDate(DateUtil.now()); if (unBingDeviceVo.getOneData() != null) { - qcProduceRun.setDataThirteen(new Date()); // 保温开始时间 + qcProduceRun.setDataThirteen(DateUtil.now()); // 保温开始时间 } if (unBingDeviceVo.getThreeData() != null) { - qcProduceRun.setDataTwelve(new Date()); // 保温结束时间 + qcProduceRun.setDataTwelve(DateUtil.now()); // 保温结束时间 } qcProduceRun.setTempSlot(unBingDeviceVo.getTempSlot()); // 退火温度 qcProduceRun.setDataFourteen(unBingDeviceVo.getDataFourteen()); // 退火温度 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index 5dc09f47..dc0eb813 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -21,9 +21,17 @@ import org.springblade.core.tool.utils.StringUtil; import org.springblade.desk.basic.constant.FlowConst; import org.springblade.desk.basic.service.IProcessAbilityService; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; +import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.service.IBsProcessSetService; +import org.springblade.desk.dashboard.service.IBsTeamSetService; import org.springblade.desk.dashboard.service.IDsPartService; +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.service.IEquipmentService; +import org.springblade.desk.device.service.IFeiBaSetService; +import org.springblade.desk.device.service.IRackSetService; import org.springblade.desk.order.mapper.YieldOrderMapper; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; @@ -41,8 +49,11 @@ import org.springblade.desk.produce.pojo.vo.*; import org.springblade.desk.produce.service.*; import org.springblade.desk.quality.pojo.entity.InspectionTask; import org.springblade.desk.quality.pojo.entity.PlanTest; +import org.springblade.desk.quality.pojo.entity.ProReTemplate; +import org.springblade.desk.quality.pojo.entity.WorkPlanItem; import org.springblade.desk.quality.service.IInspectionTaskService; import org.springblade.desk.quality.service.IPlanTestService; +import org.springblade.desk.quality.service.IProReTemplateService; import org.springblade.desk.quality.service.IWorkPlanItemService; import org.springblade.scheduling.pojo.entity.WorkOrderEntity; import org.springblade.erpdata.feign.IErpDataProduceClient; @@ -60,6 +71,7 @@ import java.io.ByteArrayOutputStream; import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -106,6 +118,24 @@ public class WorkOrderServiceImpl extends BaseServiceImpl selectWorkOrderPage(IPage page, WorkOrderDTO workOrder) { return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder)); @@ -119,8 +149,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl wpList = new ArrayList<>(oldList.size()); for (WorkPlan oldWp : oldList) { WorkPlan wp = new WorkPlan(); - BeanUtil.copyProperties(oldWp,wp); + BeanUtil.copyProperties(oldWp, wp); wp.setId(null); @@ -303,7 +333,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl makeRecs = makeRecService.list(Wrappers.lambdaQuery(MakeRec.class).eq(MakeRec::getWpId, wpId)); + if (CollectionUtils.isNotEmpty(makeRecs)) { + List makeRecVos = new ArrayList<>(); + for (MakeRec makeRec : makeRecs) { + ProduceMonitorMakeRecVO makeRecVO = new ProduceMonitorMakeRecVO(); + BeanUtils.copyProperties(makeRec, makeRecVO); + makeRecVO.setWorker(UserCache.getUser(makeRec.getWorker()) != null ? UserCache.getUser(makeRec.getWorker()).getRealName() : ""); + makeRecVos.add(makeRecVO); + } + planDataVO.setMrList(makeRecVos); + } + + this.getProcessByWp(planDataVO, workPlan); + + // 设备使用详情 + List macToolUses = macToolUseService.list(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getWpId, workPlan.getId()).eq(MacToolUse::getMtuIndex, "2").orderBy(true, true, MacToolUse::getMtnCode)); + if (CollectionUtils.isNotEmpty(macToolUses)) { + List mtuList = new ArrayList<>(); + // 设备信息 + List equipmentEntities = equipmentService.listByIds(macToolUses.stream().map(MacToolUse::getEquipmentCard).toList()); + Map equipmentEntityMap = equipmentEntities.stream().collect(Collectors.toMap(EquipmentEntity::getId, eq -> eq)); + // 飞靶信息 + List feiBaSetEntities = feiBaSetService.listByIds(macToolUses.stream().map(MacToolUse::getBsFeiBaSet).toList()); + Map feiBaSetEntityMap = feiBaSetEntities.stream().collect(Collectors.toMap(FeiBaSetEntity::getId, fb -> fb)); + // 挂具信息 + List rackSetEntities = rackSetService.listByIds(macToolUses.stream().map(MacToolUse::getBsRackSet).toList()); + Map rackSetEntityMap = rackSetEntities.stream().collect(Collectors.toMap(RackSetEntity::getId, rack -> rack)); + for (MacToolUse macToolUse : macToolUses) { + ProduceMonitorMtuListVO mtuListVO = new ProduceMonitorMtuListVO(); + mtuListVO.setHangNum(macToolUse.getHangNum()); + mtuListVO.setRsCode(rackSetEntityMap.get(macToolUse.getBsRackSet()) != null ? rackSetEntityMap.get(macToolUse.getBsRackSet()).getRsCode() : ""); + mtuListVO.setFsCode(feiBaSetEntityMap.get(macToolUse.getBsFeiBaSet()) != null ? feiBaSetEntityMap.get(macToolUse.getBsFeiBaSet()).getFsCode() : ""); + mtuListVO.setDeviceCode(equipmentEntityMap.get(macToolUse.getEquipmentCard()) != null ? equipmentEntityMap.get(macToolUse.getEquipmentCard()).getDeviceName() : ""); + mtuList.add(mtuListVO); + } + planDataVO.setMtuList(mtuList); + } + + // 检验记录 + InspectionTask prWorkCheckByWpId = inspectionTaskService.getPrWorkCheckByWpId(wpId); + ProduceMonitorWorkCheckVO workCheckVO = new ProduceMonitorWorkCheckVO(); + BeanUtils.copyProperties(prWorkCheckByWpId, workCheckVO); + planDataVO.setPrWorkCheck(workCheckVO); + + // 转试记录 + List planTests = planTestService.list(Wrappers.lambdaQuery(PlanTest.class).eq(PlanTest::getWpId, wpId)); + if (CollectionUtils.isNotEmpty(planTests)) { + planDataVO.setTrialItemList(planTests); + } + + // 检验项目 + List workPlanItems = workPlanItemService.list(Wrappers.lambdaQuery(WorkPlanItem.class).eq(WorkPlanItem::getWpId, wpId)); + if (CollectionUtils.isNotEmpty(workPlanItems)) { + List itemVos = new ArrayList<>(); + for (WorkPlanItem workPlanItem : workPlanItems) { + ProduceMonitorPlanItemVO itemVO = new ProduceMonitorPlanItemVO(); + BeanUtils.copyProperties(workPlanItem, itemVO); + itemVO.setCheckMan(UserCache.getUser(workPlanItem.getCheckUserId()) != null ? UserCache.getUser(workPlanItem.getCheckUserId()).getRealName() : ""); + itemVos.add(itemVO); + } + planDataVO.setItemList(itemVos); + } + return planDataVO; + } + + @Override + public void getProcessByWp(ProduceMonitorPlanDataVO planDataVO, WorkPlan workPlan) { + List qcProduceRunsList; + if (WorkPlan.PRINT_TYPE_PROCESS.equals(workPlan.getPrintType())) { + // 同槽信息 + planDataVO.setSlotList(macToolUseService.listSlotInfo(workPlan)); + // 过程质量记录 + List dsRbFilePreserveSlotList = new ArrayList<>(); + BsTeamSetEntity bsTeamSet = teamSetService.getById(workPlan.getMakeTeam()); + if (bsTeamSet != null) { + MacToolUse prMacToolUse; + List preserveSlotList; + MesQcProduceRunEntity boxInfo; + + // 根据电子档案维护组装数据(上线前) 分槽 + List dataByWpIdAndIndexList = macToolUseService.getDataByWpIdAndIndexList(workPlan.getId(), "1"); + if (CollectionUtils.isNotEmpty(dataByWpIdAndIndexList)) { + for (MacToolUse prMacToolUseItem : dataByWpIdAndIndexList) { + if (prMacToolUseItem != null && prMacToolUseItem.getId() != null) { + // 获取模板数据 + preserveSlotList = mesRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUseItem.getRfpId())); + qcProduceRunsList = qcProduceRunService.listPrByWpIdIndexAndMtnCode(dataByWpIdAndIndexList.stream().map(MacToolUse::getMtnCode).toList(), prMacToolUseItem.getMtnCode()); + // 烘箱信息(从设备,工装使用记录获取) + boxInfo = macToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getId()); + if (boxInfo.getInDate() != null) { + qcProduceRunsList.add(boxInfo); + } + + if (qcProduceRunsList != null && !qcProduceRunsList.isEmpty()) { + + // 2025-07-23 线上迁移修改删除了日志打印 + // cdl 20250218 修改分槽同一槽号连续出现 + this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList, prMacToolUseItem); + } + } + } + } + + + // 根据电子档案维护组装数据(自动) + prMacToolUse = macToolUseService.getDataByWpIdAndIndex(workPlan.getId(), "2"); + if (prMacToolUse != null && prMacToolUse.getId() != null) { + // 获取模板数据 + List dsRbFilePreserveList; + BsProcessSetEntity processSet = bsProcessSetService.getById(workPlan.getPpsId()); + if (workPlan.getPpsId() != null && ("喷砂".equals(processSet.getName()) || "涂色标".equals(processSet.getName()))) { + dsRbFilePreserveList = proReTemplateService.getDataByWcIdAndPpsId(null, workPlan.getPpsId(), Boolean.TRUE); + } else { + dsRbFilePreserveList = proReTemplateService.getDataByWcIdAndPpsId(bsTeamSet.getWcId(), workPlan.getPpsId(), Boolean.TRUE); + } + if (dsRbFilePreserveList != null && !dsRbFilePreserveList.isEmpty()) { + preserveSlotList = mesRbFilePreserveSlotService.getByRfpId(dsRbFilePreserveList.get(0).getId()); + qcProduceRunsList = qcProduceRunService.listPrByWpIdIndex(workPlan.getId(), 2, Boolean.TRUE); + + // 烘箱信息(从设备,工装使用记录获取) + boxInfo = macToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getId()); + if (qcProduceRunsList != null && !qcProduceRunsList.isEmpty() && boxInfo.getInDate() != null) { + qcProduceRunsList.add(boxInfo); + } + if (qcProduceRunsList != null && !qcProduceRunsList.isEmpty()) { + // cdl 20250218 修改分槽同一槽号连续出现 + this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList, prMacToolUse); + } + } + // 获取额外面积数据 +// BsAdditionalMess dataByMtuCode = bsAdditionalMessDao.getDataByOneData(prMacToolUse.getMtnCode(), BsAdditionalMess.TYPE_ONE); +// workPlan.setBsAdditionalMess(dataByMtuCode); + } + + // 根据电子档案维护组装数据(线下) + //zxh 20250117 解决单工序绑定两个手动记录只显示一个问题 + List prMacToolUseList = macToolUseService.getDataByWpIdAndIndexList(workPlan.getId(), "3"); + if (prMacToolUseList != null && !prMacToolUseList.isEmpty()) { + for (MacToolUse prMacToolUseSd : prMacToolUseList) { + if (prMacToolUseSd != null && prMacToolUseSd.getId() != null) { + // 获取模板数据 + preserveSlotList = mesRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUseSd.getRfpId())); + qcProduceRunsList = qcProduceRunService.listPrByWpIdIndexAndMtnCode(prMacToolUseList.stream().map(MacToolUse::getMtnCode).toList(), prMacToolUseSd.getMtnCode()); + // 烘箱信息(从设备,工装使用记录获取) + boxInfo = macToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getId()); + if (boxInfo.getInDate() != null) { + qcProduceRunsList.add(boxInfo); + } + + if (qcProduceRunsList != null && !qcProduceRunsList.isEmpty()) { + + // cdl 20250218 修改分槽同一槽号连续出现 + this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList, prMacToolUseSd); + } + } + } + } + } + planDataVO.setDsRbFilePreserveSlotList(dsRbFilePreserveSlotList); + } + } + + private void setRbFilePreserveData(List preserveSlotList, List qcProduceRunsList, WorkPlan workPlan, List dsRbFilePreserveSlotList, MacToolUse prMacToolUse) { + List dsRbFilePreserveDetailList = null; + ProduceMonitorFileSlotVO newDsRbFilePreserveSlot = null; + MesRbFilePreserveDetailEntity newDsRbFilePreserveDetail = null; + + Map preserveSlotMap = preserveSlotList.stream().collect(Collectors.toMap(MesRbFilePreserveSlotEntity::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("1"); + } + + // cdl 20250218 修改分槽同一槽号连续出现 + this.setTemplateData(dsRbFilePreserveSlot, qcProduceRun, newDsRbFilePreserveSlot, dsRbFilePreserveDetailList, + newDsRbFilePreserveDetail, workPlan, temporaryList, prMacToolUse); + } + + // 判断是不是自动线并且有水墨连续性 + MacToolUse macToolUse = macToolUseService.getHangNumIsNull(workPlan.getId()); + if (macToolUse != null && macToolUse.getId() != null) { + List smSlotList = preserveSlotList.stream().filter(i -> i.getSlotName().contains("水膜连续性")).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, prMacToolUse); + } + } + } + dsRbFilePreserveSlotList.addAll(temporaryList.stream().sorted(Comparator.comparing(ProduceMonitorFileSlotVO::getSlotIndex)).toList()); + } + + private void setTemplateData(MesRbFilePreserveSlotEntity dsRbFilePreserveSlot, MesQcProduceRunEntity qcProduceRun, ProduceMonitorFileSlotVO newDsRbFilePreserveSlot, List dsRbFilePreserveDetailList, MesRbFilePreserveDetailEntity newDsRbFilePreserveDetail, WorkPlan workPlan, List temporaryList, MacToolUse prMacToolUse) { + if (dsRbFilePreserveSlot != null && dsRbFilePreserveSlot.getId() != null) { + // Date转String + + // 装入槽子对应的信息 + newDsRbFilePreserveSlot = new ProduceMonitorFileSlotVO(); + newDsRbFilePreserveSlot.setRfpsType(dsRbFilePreserveSlot.getRfpsType()); + newDsRbFilePreserveSlot.setInsertIndex(dsRbFilePreserveSlot.getInsertIndex()); + newDsRbFilePreserveSlot.setSlotName(dsRbFilePreserveSlot.getSlotName()); + newDsRbFilePreserveSlot.setSlotIndex(dsRbFilePreserveSlot.getSlotIndex()); + + List preserveDetailList = mesRbFilePreserveDetailService.getByRfpsId(dsRbFilePreserveSlot.getId()); + if (!preserveDetailList.isEmpty()) { + dsRbFilePreserveDetailList = new ArrayList<>(); + for (int i = 0; i < preserveDetailList.size(); i++) { + MesRbFilePreserveDetailEntity dsRbFilePreserveDetail = preserveDetailList.get(i); + Short rfpsType = 0; + if (dsRbFilePreserveDetail != null && dsRbFilePreserveDetail.getRfpsId() != null) { + rfpsType = mesRbFilePreserveSlotService.getById(dsRbFilePreserveDetail.getRfpsId()).getRfpsType(); + } + newDsRbFilePreserveDetail = new MesRbFilePreserveDetailEntity(); + 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()); + } 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); + } + newDsRbFilePreserveSlot.setChildrenList(dsRbFilePreserveDetailList); + } + temporaryList.add(newDsRbFilePreserveSlot); + } } public String prefix(String stringToFix, String fixChar, int targetLen) { int len = stringToFix.length(); - for(int i = 0; i < targetLen - len; i += fixChar.length()) { + for (int i = 0; i < targetLen - len; i += fixChar.length()) { stringToFix = fixChar + stringToFix; } return stringToFix; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java index c3be1c49..2717c19c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java @@ -11,6 +11,7 @@ import org.springblade.desk.quality.excel.ProReTemplateExcel; import org.springblade.desk.quality.pojo.entity.ProReTemplate; import org.springblade.desk.quality.pojo.vo.ProReTemplateVO; +import java.math.BigDecimal; import java.util.List; /** @@ -51,4 +52,6 @@ public interface IProReTemplateService extends EnBaseService { R upgradeVer(Long id); R removeFromDetail(Long tankId); + + List getDataByWcIdAndPpsId(BigDecimal wcId, Long ppsId, Boolean aTrue); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java index 90d8ed63..7944e1e2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java @@ -5,7 +5,9 @@ package org.springblade.desk.quality.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import jakarta.annotation.Resource; import lombok.AllArgsConstructor; import lombok.Data; @@ -29,6 +31,7 @@ import org.springblade.system.feign.ISysClient; import org.springblade.system.feign.IUserClient; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.*; /** @@ -132,4 +135,14 @@ public class ProReTemplateServiceImpl extends EnBaseServiceImpl getDataByWcIdAndPpsId(BigDecimal wcId, Long ppsId, Boolean aTrue) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(ProReTemplate.class); + queryWrapper.eq(wcId != null, ProReTemplate::getWcId, wcId); + queryWrapper.eq(ProReTemplate::getPpsId, ppsId); + queryWrapper.eq(ProReTemplate::getLine, aTrue ? "0" : "1"); + queryWrapper.eq(ProReTemplate::getStatus, 2); + return this.list(queryWrapper); + } }