From d6a9d33105ec09b115822c9b71a4221d6e28b63d Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Sun, 29 Sep 2024 20:37:43 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=AF=B9=E8=B4=A6=E5=8D=95=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/apiservice/schedulejob/MesAccountJob.java | 23 ++- .../base/MesEquipmentSpotCheckDetailService.java | 2 +- .../serviceimpl/base/MesPartInspectionService.java | 4 + .../base/MesProductionRecordServiceImpl.java | 218 +++++++++++++++++++-- 4 files changed, 222 insertions(+), 25 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesAccountJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesAccountJob.java index fd4132d..575e394 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesAccountJob.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesAccountJob.java @@ -68,15 +68,19 @@ public class MesAccountJob extends BaseMesScheduleJob { public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) { JSONObject jsonObject = new JSONObject(); + String json = this.getJobParam(); - //String json = "{\"startTime\":\"2024-09-13 07:50:00\",\"endTime\":\"2024-09-19 08:00:00\"}"; - com.alibaba.fastjson.JSONObject reqJson = com.alibaba.fastjson.JSONObject.parseObject(json); - String startDateTime = reqJson.getString("startTime"); - String endDateTime = reqJson.getString("endTime"); - if (reqJson == null || (StringUtils.isEmpty(startDateTime) && StringUtils.isEmpty(endDateTime))) { + //String json = "{\"startTime\":\"2024-09-25 08:00:00\",\"endTime\":\"2024-09-26 08:00:00\"}"; + String startDateTime = ""; + String endDateTime = ""; + if (StringUtils.isEmpty(json)) { Date yesterday = TimeTool.getDateBefore(new Date(), 1); startDateTime = FORMAT_YYYY_MM_DD.format(yesterday) + " " + " 07:50:00"; endDateTime = TimeTool.getToday() + " 08:00:00"; + } else { + com.alibaba.fastjson.JSONObject reqJson = com.alibaba.fastjson.JSONObject.parseObject(json); + startDateTime = reqJson.getString("startTime"); + endDateTime = reqJson.getString("endTime"); } jsonObject.putIfAbsent("organizeCode", "CK01"); @@ -96,7 +100,7 @@ public class MesAccountJob extends BaseMesScheduleJob { //String endDateTime = TimeTool.getToday() + " 08:00:00"; //String startDateTime = "2024-09-14 07:50:00"; //String endDateTime = "2024-09-15 08:00:00"; - //List list = Stream.of("A88_EOL_Electric_inspection").collect(Collectors.toList()); + //List list = Stream.of("HT2800MIX").collect(Collectors.toList()); DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); //DdlPreparedPack.getInPackList(list, "equipmentCode", ddlPackBean); DdlPreparedPack.getNumEqualPack(10, "equipmentType", ddlPackBean); @@ -148,10 +152,13 @@ public class MesAccountJob extends BaseMesScheduleJob { } for (MesProductRecordLog log : recordLogs) { - if (!StringUtils.isEmpty(log.getPartNo()) && log.getEquipVariableName() != null + /*if (log.getId() == 1288497096009187355l) { + int i = 1; + }*/ + /*if (!StringUtils.isEmpty(log.getPartNo()) && log.getEquipVariableName() != null && !log.getEquipVariableName().contains("InjDataSeries")) { continue; - } + }*/ if (log.getType().equals("logdetail") && log.getEquipVariableName().contains("InjDataSeries")) { if (StringUtils.isEmpty(log.getEquipVariableValue())) { continue; diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentSpotCheckDetailService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentSpotCheckDetailService.java index a8ac4d0..6e68a4a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentSpotCheckDetailService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentSpotCheckDetailService.java @@ -44,7 +44,7 @@ public class MesEquipmentSpotCheckDetailService extends BaseMesService String inventoryLocationCode = bean.getInventoryLocationCode(); List collect = orgList.stream().filter(o->o.getInventoryLocationCode().equals(inventoryLocationCode)) .map(MesOrg::getResponsibleParty).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(collect) || collect.get(0) == null) { + return new ListPager<>(new ArrayList<>(), pager); + } DdlPreparedPack.getInPackList(collect,"responsibleParty", packBean); } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java index f038a66..5f198c2 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java @@ -319,6 +319,17 @@ public class MesProductionRecordServiceImpl extends BaseMesService recordLogs) { + /*private String handleNotHT(List recordLogs) { int result = 0; String startTime = ""; String endTime = ""; @@ -614,9 +628,9 @@ public class MesProductionRecordServiceImpl extends BaseMesService 0) { - reason += String.format(offlineReason, startTime, endTime, errorCount + ""); + if (result > 0) { + reason += String.format(offlineReason, startTime, endTime, 1 + ""); + result = 0; errorCount = 0; } //result = 0; @@ -690,6 +705,158 @@ public class MesProductionRecordServiceImpl extends BaseMesService recordLogs) { + int result = 0; + // 定义有问题的开始时间 + String startTime = ""; + // 定义有问题的结束时间 + String endTime = ""; + // 错误个数 + // 异常原因 + String reason = ""; + String reasonOffline = "因其他原因:系统,网络,发版等,导致【%s】的完成信号丢失;"; + + String offlineReason = "【%s】到【%s】,客户端下线,导致【%s】个完成信号丢失;"; + String reasonQuality = "【%s】设备信号质量为0,视为无效;"; + String reasonBypass = "【%s】的完成信号,设备打BYPASS,视为无效;"; + + // BYPASS 默认fasle + boolean bypassFlag = false; + + // BYPASS 默认fasle + boolean offlineFlag = false; + //List finishList = Stream.of("Product_finish","PART_OK","Part_Finish","Product_OK").collect(Collectors.toList()); + List finishList = Stream.of("Product_finish","Part_Finish").collect(Collectors.toList()); + String preReason = ""; + + for (MesProductRecordLog recordLog : recordLogs) { + int errorCount = 0; + if (recordLog.getId() ==1838536264741601280l) { + int a = 1; + } + if (Objects.equal(recordLog.getType(), "monitor") && recordLog.getMessage().contains("客户端下线")) { + startTime = recordLog.getCreateDatetime(); + offlineFlag = true; + continue; + } + if (Objects.equal(recordLog.getType(), "monitor") && recordLog.getMessage().contains("客户端上线") ) { + endTime = recordLog.getCreateDatetime(); + offlineFlag = false; + if (result > 0) { + reason += String.format(offlineReason, startTime, endTime, 1 + ""); + preReason = ""; + result = 0; + errorCount = 0; + } + //result = 0; + continue; + } + // 如果是bypass 遇到的所有加工完成指令 都计数并且原因是bypass导致 + if (bypassFlag && finishList.contains(recordLog.getCategoryLevelTwo()) && Objects.equal(recordLog.getEquipVariableValue(), "True")) { + if (!StringUtils.isEmpty(preReason)) { + reason += preReason; + } + preReason = String.format(reasonBypass,startTime, 1 +""); + //reason += String.format(reasonBypass,startTime, 1 +""); + continue; + } + if (offlineFlag && finishList.contains(recordLog.getCategoryLevelTwo()) && Objects.equal(recordLog.getEquipVariableValue(), "True")) { + // 如果经过了1个finish,然后再经过客户端下线,再遇到finish则认为是客户端下线引起,如果没有需要预处理一个下线的原因 + errorCount ++; + if (result > 0) { + reason += preReason; + preReason = String.format(offlineReason, endTime, recordLog.getCreateDatetime(), errorCount + ""); + endTime = recordLog.getCreateDatetime(); + continue; + } else { + endTime = recordLog.getCreateDatetime(); + preReason = String.format(offlineReason, startTime,endTime, errorCount + ""); + } + result++; + continue ; + } + + if (Objects.equal(recordLog.getCategoryLevelTwo(), "BYPASS") && Objects.equal(recordLog.getEquipVariableValue(), "True")) { + // 如果有finish然后遇到bypass 需要预处理 + if (result > 0) { + reason += String.format(reasonBypass,startTime, 1 +""); + result = 0; + } + startTime = recordLog.getCreateDatetime(); + endTime = recordLog.getCreateDatetime(); + bypassFlag = true; + continue; + } + + // 遇到bypass = false 则重置错误次数 + if (bypassFlag && Objects.equal(recordLog.getCategoryLevelTwo(), "BYPASS") && Objects.equal(recordLog.getEquipVariableValue(), "False")) { + endTime = recordLog.getCreateDatetime(); + errorCount = 0; + bypassFlag = false; + continue; + } + + // BYPASS 逻辑结束 result = 1 代表一个成功新型号,遇到一个加工记录就会-1 变成0 + if (result == 0) { + // 没有加工完成指令,或者没有release指令,但是有加工记录,则也需要重置 + if (recordLog.getType().equals("record")) { + bypassFlag = false; + preReason = ""; + } + + if (!finishList.contains(recordLog.getCategoryLevelTwo()) || !Objects.equal(recordLog.getEquipVariableValue(), "True")) { + continue; + } + if (!StringUtils.isEmpty(preReason)) { + reason += preReason; + preReason = ""; + } + result ++; + startTime = recordLog.getCreateDatetime(); + + } else { + if (finishList.contains(recordLog.getCategoryLevelTwo()) && Objects.equal(recordLog.getEquipVariableValue(), "True")) { + // 上一个加工记录信号还没走完,这边又继续发一个加工记录,且没有release 两个都要判定问题 + if (!StringUtils.isEmpty(preReason)) { + reason += preReason; + } + if (Objects.equal(recordLog.getQuality(), "192")) { + reason += String.format(reasonOffline,startTime, 1 +""); + } else { + reason += String.format(reasonQuality,startTime, 1 +""); + } + // 每次preReason附完值都需要更新startTime,完成信号 + startTime = recordLog.getCreateDatetime(); + + } + + if (recordLog.getType().equals("record")) { + bypassFlag = false; + offlineFlag = false; + result --; + preReason = ""; + startTime = ""; + errorCount = 0; + } + } + } + // 如果走到最后,还有预编译的错误,则直接加上 + if (!StringUtils.isEmpty(preReason)) { + reason += preReason; + } else { + if (result > 0) { + reason += String.format(reasonOffline,startTime, 1 +""); + } + } + return reason; } @@ -723,7 +890,7 @@ public class MesProductionRecordServiceImpl extends BaseMesService 0) { - reason += String.format(offlineReason, startTime, endTime, 1 + ""); + // 如果preReason已经有则代表已经判定过,可以直接获取 + if (!StringUtils.isEmpty(preReason)) { + reason += preReason; + startTime = recordLog.getCreateDatetime(); + preReason = ""; + } else { + reason += String.format(offlineReason, startTime, endTime, 1 + ""); + } + result = 0; errorCount = 0; } //result = 0; @@ -751,21 +926,26 @@ public class MesProductionRecordServiceImpl extends BaseMesService 0) { - //endTime = recordLog.getCreateDatetime(); - errorCount ++; reason += String.format(offlineReason, startTime, startTime, errorCount + ""); continue; + } else { + endTime = recordLog.getCreateDatetime(); + preReason = String.format(offlineReason, startTime,endTime, errorCount + ""); } - errorCount ++; result++; continue ; } if (Objects.equal(recordLog.getCategoryLevelTwo(), "BYPASS") && Objects.equal(recordLog.getEquipVariableValue(), "True")) { + // 如果有finish然后遇到bypass 需要预处理 + if (result > 0) { + reason += String.format(reasonBypass,startTime, 1 +""); + result = 0; + } startTime = recordLog.getCreateDatetime(); - endTime = recordLog.getCreateDatetime(); bypassFlag = true; continue; @@ -820,7 +1000,8 @@ public class MesProductionRecordServiceImpl extends BaseMesService Date: Wed, 9 Oct 2024 10:14:02 +0800 Subject: [PATCH 2/8] =?UTF-8?q?43326=20=E7=94=B5=E5=AD=90=E5=8C=96?= =?UTF-8?q?=E6=A3=80=E9=AA=8C=EF=BC=8C=E5=8F=91=E9=80=81=E7=BB=99QMS?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=EF=BC=8C=E6=8C=89=E7=85=A7=E9=9B=B6?= =?UTF-8?q?=E4=BB=B6=E5=8F=B7+=E8=B4=A3=E4=BB=BB=E4=BA=BA=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=88=86=E7=BB=84=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/apiservice/serviceimpl/base/MesQmsScrapService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesQmsScrapService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesQmsScrapService.java index d39b185..3cc719c 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesQmsScrapService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesQmsScrapService.java @@ -43,11 +43,11 @@ public class MesQmsScrapService extends BaseMesService implements I DdlPreparedPack.getInPackList(idList, "pid", packBean); List partInspectionDetails = partInspectionDetailRDao.findByHqlWhere(packBean); Map> idDetailListMap = partInspectionDetails.stream().collect(Collectors.groupingBy(MesPartInspectionDetail::getPid)); - - Map> workOrderPartMap = mesPartInspectionList.stream().collect(Collectors.groupingBy(MesPartInspection::getPartNo)); + //43326 电子化检验,发送给QMS的数据,按照零件号+责任人类型分组发送 + Map> workOrderPartMap = mesPartInspectionList.stream().collect(Collectors.groupingBy(p -> p.getPartNo() +"="+p.getResponsibleParty())); //根据物料对可疑品分组 for (Map.Entry> stringListEntry : workOrderPartMap.entrySet()) { - String key = stringListEntry.getKey(); + String keyPartNo = stringListEntry.getKey().split("=")[0]; List mesPartInspections = stringListEntry.getValue(); MesPartInspection next = mesPartInspections.iterator().next(); List mesPartInspectionDetails = new ArrayList<>(); @@ -62,7 +62,7 @@ public class MesQmsScrapService extends BaseMesService implements I mesQmsScrap.setSource("MES"); double sum = mesPartInspections.stream().mapToDouble(MesPartInspection::getRejectQty).sum(); mesQmsScrap.setRejectQty((int) sum); - mesQmsScrap.setPartNo(key); + mesQmsScrap.setPartNo(keyPartNo); mesQmsScrap.setPartName(next.getPartName()); String defectTypeName = mesPartInspectionDetails.stream().map(MesPartInspectionDetail::getDefectTypeName).collect(Collectors.joining(";")); mesQmsScrap.setDefectTypeName(defectTypeName); From 8e204baadf72a489f646fa49cd9679e8533593a5 Mon Sep 17 00:00:00 2001 From: jun Date: Wed, 9 Oct 2024 14:48:14 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E6=8A=A5=E5=B7=A5=E5=A2=9E=E5=8A=A0bom?= =?UTF-8?q?=E6=80=BB=E8=A1=8C=E6=95=B0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/base/MesWorkOrderService.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index 97dd03d..023ba56 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -901,7 +901,7 @@ public class MesWorkOrderService extends BaseMesService implements String nowTime = StringUtil.isEmpty(mesWorkOrder.getDescription())?TimeTool.getNowTime(true):mesWorkOrder.getDescription(); for (MesBom mesBom : mesBoms) { - mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, false,nowTime)); + mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, false,nowTime,mesBoms.size())); } mesProductOffLineService.insertBatch(mesProductOffLineList); } @@ -994,7 +994,7 @@ public class MesWorkOrderService extends BaseMesService implements if (isReport) { String nowTime = TimeTool.getNowTime(true); for (MesBom mesBom : mesBoms) { - mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, false,nowTime)); + mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, false,nowTime,mesBoms.size())); } } //成品移库 @@ -1009,7 +1009,7 @@ public class MesWorkOrderService extends BaseMesService implements if (MesExtEnumUtil.NOSORT_REPORT_TYPE.REPORT.getValue() == mesProdRuleNoSortCfg.getReportType()) { String nowTime = TimeTool.getNowTime(true); for (MesBom mesBom : mesBoms) { - mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, false,nowTime)); + mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, false,nowTime,mesBoms.size())); } } @@ -1023,6 +1023,7 @@ public class MesWorkOrderService extends BaseMesService implements //保存报工记录 试制单不报工 if (CollectionUtils.isNotEmpty(mesProductOffLineList) && (Objects.isNull(mesWorkOrder.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(mesWorkOrder.getOrderFlag()))) { + mesProductOffLineList.forEach(t->t.setBomTotalSize(mesProductOffLineList.size())); mesProductOffLineService.insertBatch(mesProductOffLineList); } //保存移库记录 @@ -1075,7 +1076,7 @@ public class MesWorkOrderService extends BaseMesService implements List mesProductOffLineList = new ArrayList<>(); String nowTime = TimeTool.getNowTime(true); for (MesBom mesBom : mesBoms) { - mesProductOffLineList.add(getMesProductOffLine(model, mesPart, mesProductVersion, mesBom,nowTime)); + mesProductOffLineList.add(getMesProductOffLine(model, mesPart, mesProductVersion, mesBom,nowTime,mesBoms.size())); } mesProductOffLineService.insertBatch(mesProductOffLineList); } @@ -1123,7 +1124,7 @@ public class MesWorkOrderService extends BaseMesService implements workOrderLogService.saveMesWorkOrderLog(mesWorkOrder,type,qty); } - private MesProductOffLine getMesProductOffLine(WmsProductModel model, MesPart mesPart, MesProductVersion mesProductVersion, MesBom mesBom,String nowTime) { + private MesProductOffLine getMesProductOffLine(WmsProductModel model, MesPart mesPart, MesProductVersion mesProductVersion, MesBom mesBom,String nowTime,Integer bomTotalSize) { MesProductOffLine newMesProductOffLine = new MesProductOffLine(); newMesProductOffLine.setReportPartNo(mesPart.getPartNo()); newMesProductOffLine.setReportPartNameRdd(mesPart.getPartName()); @@ -1146,6 +1147,7 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setCustNo(model.getCustNo()); newMesProductOffLine.setCustOrder(model.getCustOrderNo()); newMesProductOffLine.setDescription(nowTime); + newMesProductOffLine.setBomTotalSize(bomTotalSize); ConvertBean.serviceModelInitialize(newMesProductOffLine, model.getUserName()); return newMesProductOffLine; @@ -1195,7 +1197,7 @@ public class MesWorkOrderService extends BaseMesService implements //汇报 if (isItemReport) { String nowTime = TimeTool.getNowTime(true); - mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, true,nowTime)); + mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, true,nowTime,mesBoms.size())); } //移库 if (isItemMove) { @@ -1254,7 +1256,7 @@ public class MesWorkOrderService extends BaseMesService implements private MesProductOffLine creatMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, - String sn, MesBom mesBom, boolean isItemReport,String nowTime) { + String sn, MesBom mesBom, boolean isItemReport,String nowTime,Integer bomTotalSize) { MesProductOffLine newMesProductOffLine; newMesProductOffLine = new MesProductOffLine(); if (!isItemReport) { @@ -1282,6 +1284,7 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode()); newMesProductOffLine.setDescription(nowTime); newMesProductOffLine.setBomCode(mesBom.getBomCode()); + newMesProductOffLine.setBomTotalSize(bomTotalSize); ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser()); return newMesProductOffLine; @@ -1524,6 +1527,7 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setReportType(mesWorkOrderDb.getReportType()); newMesProductOffLine.setSapWorkCenter(mesWorkOrderDb.getErpWorkCenter()); newMesProductOffLine.setOrganizeCode(organizeCode); + newMesProductOffLine.setBomTotalSize(mesBoms.size()); ConvertBean.serviceModelInitialize(newMesProductOffLine, userName); mesProductOffLineList.add(newMesProductOffLine); From 39b3edf01fd747dc2732398891f2a5f97cb99758 Mon Sep 17 00:00:00 2001 From: jun Date: Thu, 10 Oct 2024 14:26:09 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E8=BD=A6=E5=9E=8B?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E4=BF=A1=E6=81=AF=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/serviceimpl/base/MesCustomerCarModelService.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerCarModelService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerCarModelService.java index 39f8667..6a54d9c 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerCarModelService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerCarModelService.java @@ -1,14 +1,13 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; -import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerCarModelDetailService; import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerCarModelService; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel; +import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModelDetail; import cn.estsh.i3plus.pojo.mes.repository.MesCustomerCarModelDetailRepository; -import cn.estsh.i3plus.pojo.mes.repository.MesCustomerCarModelRepository; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; @@ -45,7 +44,7 @@ public class MesCustomerCarModelService extends BaseMesService Date: Thu, 10 Oct 2024 17:04:06 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E8=BD=A6=E5=9E=8B?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9=E5=94=AF?= =?UTF-8?q?=E4=B8=80=E5=80=BC=E4=BF=AE=E6=94=B9=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E5=B7=A5=E5=8E=82=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/apiservice/serviceimpl/base/MesCustomerCarModelService.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerCarModelService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerCarModelService.java index 6a54d9c..29dfedc 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerCarModelService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerCarModelService.java @@ -38,13 +38,14 @@ public class MesCustomerCarModelService extends BaseMesService Date: Thu, 10 Oct 2024 18:43:39 +0800 Subject: [PATCH 6/8] =?UTF-8?q?bom=E9=80=92=E5=BD=92=E5=92=8C=E6=8A=A5?= =?UTF-8?q?=E5=B7=A5=E8=B0=83=E6=95=B4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/api/base/IMesBomService.java | 9 ++++ .../controller/base/BaseMesController.java | 3 +- .../controller/base/MesBomController.java | 19 ++++++++ .../controller/base/MesWorkOrderController.java | 3 +- .../apiservice/serviceimpl/base/MesBomService.java | 52 ++++++++++++++++++++++ .../base/MesProductionRecordServiceImpl.java | 1 - .../serviceimpl/base/MesWorkOrderLogService.java | 4 +- .../serviceimpl/base/MesWorkOrderService.java | 1 + 8 files changed, 88 insertions(+), 4 deletions(-) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesBomService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesBomService.java index 2fd31de..69faa66 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesBomService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesBomService.java @@ -39,6 +39,15 @@ public interface IMesBomService extends IBaseMesService { @ApiOperation(value = "查询BOM树结构") ListPager queryMesDataTree(MesBom bom, Pager pager); + /** + * 查询MES组织模型数据返回树结构 + * + * @param bom 组织代码 + * @return 组织模型数据返回树结构 + */ + @ApiOperation(value = "查询BOM树结构平铺") + ListPager queryMesDataTreeAll(MesBom bom, Pager pager); + @ApiOperation(value = "查询bom信息") List findMesBomByPartNoAndBomVersion(String partNo, String organizeCode, String bomVersion); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java index 7c941ae..cb2ed63 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java @@ -152,7 +152,8 @@ public abstract class BaseMesController extends BaseControll @ApiOperation(value = "查询信息带分页", notes = "组合查询,外带分页功能") public ResultBean queryByPager(T bean, Pager pager) { try { - bean.setOrganizeCode(AuthUtilExt.getOrganizeCode()); + // bean.setOrganizeCode(AuthUtilExt.getOrganizeCode()); + bean.setOrganizeCode("ck01"); ListPager listPager = getBaseService().queryPager(bean, pager); return ResultBean.success("操作成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesBomController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesBomController.java index 83e14e8..4527383 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesBomController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesBomController.java @@ -89,4 +89,23 @@ public class MesBomController extends BaseMesController { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } + + @GetMapping(value = "/tree/queryAll") + @ApiOperation(value = "查询MES组织模型数据返回树结构-获取所有") + public ResultBean queryMesDataTreeAll(MesBom bom, Pager pager) { + try { + ValidatorBean.checkNotNull(bom.getPartNo(), "父零件号不能为空"); + ValidatorBean.checkNotNull(bom.getBomVersion(), "BOM版本不能为空"); + ValidatorBean.checkNotNull(bom.getBomCode(), "BOM代码不能为空"); + ValidatorBean.checkNotNull(bom.getEffStartTime(), "生效时间不能为空"); + bom.setOrganizeCode(AuthUtil.getOrganizeCode()); + //bom.setOrganizeCode("CK01"); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setListPager(bomService.queryMesDataTreeAll(bom, pager)); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java index 8919f88..7523a0c 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java @@ -58,7 +58,8 @@ public class MesWorkOrderController extends BaseMesController { @GetMapping("/mesProductVersion/query") public ResultBean queryMesProdRuleByPager(MesProductVersion mesProductVersion, Pager pager){ try { - String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + // String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + String organizeCode ="CK01"; mesProductVersion.setOrganizeCode(organizeCode); ListPager productVersionListPager = mesWorkOrderService.queryMesProductVersionByPager(mesProductVersion, pager); return ResultBean.success("生产版本查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()). diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBomService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBomService.java index 5123e76..ff2d58e 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBomService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBomService.java @@ -101,6 +101,35 @@ public class MesBomService extends BaseMesService implements IMesBomServ return new ListPager<>(resultList, pager); } + /** + * 根据零件号查询所有 + * + * @param bom 组织代码 + * @return + */ + @Override + public ListPager queryMesDataTreeAll(MesBom bom, Pager pager) { + MesBomTreeModel organize = new MesBomTreeModel(); + + organize.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); + organize.setName(AuthUtil.getOrganize().getName()); + + DdlPackBean packBean = DdlPackBean.getDdlPackBean(bom.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(bom.getPartNo(), "partNo", packBean); + DdlPreparedPack.getStringEqualPack(bom.getBomVersion(), "bomVersion", packBean); + DdlPreparedPack.getStringEqualPack(bom.getBomCode(), "bomCode", packBean); + DdlPreparedPack.getStringSmallerPack(bom.getEffStartTime(), "effStartTime", packBean); + packBean.setOrderByStr(" order by createDatetime desc "); + pager = PagerHelper.getPager(pager, baseRDao.findByHqlWhereCount(packBean)); + + List bomList = baseRDao.findByHqlWherePage(packBean, pager); + + List list = recursionBomListAll(bomList,bom.getEffStartTime(), null);; + + + return new ListPager<>(list, pager); + } + public List findMesBomByPartNoAndBomVersion(String partNo, String organizeCode, String bomVersion, String bomCode, String effStartTime) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean); @@ -216,6 +245,29 @@ public class MesBomService extends BaseMesService implements IMesBomServ return bomList; } + /** + * 递归查询bom + * + * @return + */ + private List recursionBomListAll(List bomList,String effStartTime,List allList) { + if (CollectionUtils.isEmpty(allList)) { + allList = new ArrayList<>(); + allList.addAll(bomList); + } + + if (!CollectionUtils.isEmpty(bomList)) { + for (MesBom bom : bomList) { + if (Objects.equals("X", bom.getPartType())) { + List resultList = findMesBomByPartNoAndBomVersion(bom.getItemPartNo(), bom.getOrganizeCode(), bom.getBomVersion(), bom.getBomCode(), effStartTime); + allList.addAll(resultList); + recursionBomListAll(resultList,effStartTime, allList); + } + } + } + return allList; + + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java index 5f198c2..e6d74e7 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java @@ -1089,7 +1089,6 @@ public class MesProductionRecordServiceImpl extends BaseMesService 0) { startTime = recordLog.getCreateDatetime(); - endTime = recordLog.getCreateDatetime(); if (Objects.equal(recordLog.getQuality(), "192")) { reason += String.format(reasonOffline,startTime, 1 +""); } else { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java index ae268d0..500cd23 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java @@ -70,7 +70,9 @@ public class MesWorkOrderLogService extends BaseMesService impl " wol.wo_source as workOrderSource," + " wol.adjust_qty as adjustQty,"+ " wol.modify_qty as modifyQty,"+ - " wol.remark as remark "; + " wol.remark as remark," + + " wol.description as description " + ; String sql = " from mes_work_order_log wol" + " where 1=1 " + diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index 023ba56..b073b1b 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -845,6 +845,7 @@ public class MesWorkOrderService extends BaseMesService implements @Override public void doProductReport(MesWorkOrder mesWorkOrder) { MesWorkOrder mesWorkOrderDb = baseRDao.getById(mesWorkOrder.getId()); + mesWorkOrderDb.setDescription(mesWorkOrder.getDescription()); if (Objects.isNull(mesWorkOrderDb)) { MesException.throwMesBusiException("工单id为【%s】工单信息不存在", mesWorkOrder.getId()); } From 8830a062c1586e4147b7e2d40b9110c4f6de2275 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Thu, 10 Oct 2024 18:44:51 +0800 Subject: [PATCH 7/8] =?UTF-8?q?bom=E9=80=92=E5=BD=92=E5=92=8C=E6=8A=A5?= =?UTF-8?q?=E5=B7=A5=E8=B0=83=E6=95=B4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/apiservice/controller/base/BaseMesController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java index cb2ed63..f4d3129 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java @@ -152,8 +152,8 @@ public abstract class BaseMesController extends BaseControll @ApiOperation(value = "查询信息带分页", notes = "组合查询,外带分页功能") public ResultBean queryByPager(T bean, Pager pager) { try { - // bean.setOrganizeCode(AuthUtilExt.getOrganizeCode()); - bean.setOrganizeCode("ck01"); + bean.setOrganizeCode(AuthUtilExt.getOrganizeCode()); + //bean.setOrganizeCode("ck01"); ListPager listPager = getBaseService().queryPager(bean, pager); return ResultBean.success("操作成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) From ba81ac12b39a1943c569412e253698281be525f3 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Thu, 10 Oct 2024 18:45:52 +0800 Subject: [PATCH 8/8] =?UTF-8?q?bom=E9=80=92=E5=BD=92=E5=92=8C=E6=8A=A5?= =?UTF-8?q?=E5=B7=A5=E8=B0=83=E6=95=B4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/apiservice/controller/base/MesWorkOrderController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java index 7523a0c..ba4ff54 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java @@ -58,8 +58,8 @@ public class MesWorkOrderController extends BaseMesController { @GetMapping("/mesProductVersion/query") public ResultBean queryMesProdRuleByPager(MesProductVersion mesProductVersion, Pager pager){ try { - // String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); - String organizeCode ="CK01"; + String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + //String organizeCode ="CK01"; mesProductVersion.setOrganizeCode(organizeCode); ListPager productVersionListPager = mesWorkOrderService.queryMesProductVersionByPager(mesProductVersion, pager); return ResultBean.success("生产版本查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).