From 896f6d5aedf6e09473b2cfc3917dd128ad7fef25 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Thu, 19 Sep 2024 17:49:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E8=B4=A6=E5=8D=95=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/apiservice/schedulejob/MesAccountJob.java | 30 ++++-- .../base/MesProductionRecordServiceImpl.java | 119 ++++++++++++--------- .../serviceimpl/base/MesWorkOrderService.java | 1 + 3 files changed, 93 insertions(+), 57 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 d0764a2..1730825 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,6 +68,17 @@ 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-15 07:50:00\",\"endTime\":\"2024-09-17 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))) { + Date yesterday = TimeTool.getDateBefore(new Date(), 1); + startDateTime = FORMAT_YYYY_MM_DD.format(yesterday) + " " + " 07:50:00"; + endDateTime = TimeTool.getToday() + " 08:00:00"; + } + jsonObject.putIfAbsent("organizeCode", "CK01"); jsonObject.putIfAbsent("userName", "job"); @@ -80,12 +91,12 @@ public class MesAccountJob extends BaseMesScheduleJob { if (null == userName) { userName = "JOB"; } - Date yesterday = TimeTool.getDateBefore(new Date(), 1); + //String startDateTime = FORMAT_YYYY_MM_DD.format(yesterday) + " " + " 07:50:00"; //String endDateTime = TimeTool.getToday() + " 08:00:00"; - String startDateTime = "2024-09-15 07:50:00"; - String endDateTime = "2024-09-16 08:00:00"; - // List list = Stream.of("760BFoaming").collect(Collectors.toList()); + //String startDateTime = "2024-09-14 07:50:00"; + //String endDateTime = "2024-09-15 08:00:00"; + //List list = Stream.of("HT3300MIX").collect(Collectors.toList()); DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); //DdlPreparedPack.getInPackList(list, "equipmentCode", ddlPackBean); DdlPreparedPack.getNumEqualPack(10, "equipmentType", ddlPackBean); @@ -96,7 +107,7 @@ public class MesAccountJob extends BaseMesScheduleJob { } try { for (MesEquipment equipment : equipments) { - + LOGGER.info("正常处理设备编号:{}的设备数据开始", equipment.getEquipmentCode()); DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(equipment.getEquipmentCode(), "equipmentCode", packBean); @@ -105,11 +116,13 @@ public class MesAccountJob extends BaseMesScheduleJob { DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), packBean); List recordLogs = mesProductRecordLogRepository.findByHqlWhere(packBean); - recordLogs = recordLogs.stream().filter(productRecordLog ->(!Objects.equal(productRecordLog.getType(), "record") && !Objects.equal(productRecordLog.getType(), "logdetail")) + /*recordLogs = recordLogs.stream().filter(productRecordLog ->(!Objects.equal(productRecordLog.getType(), "record") && !Objects.equal(productRecordLog.getType(), "logdetail")) || (Objects.equal(productRecordLog.getType(), "logdetail") && StringUtils.isEmpty(productRecordLog.getPartNo()))).collect(Collectors.toList()); - +*/ if (CollectionUtils.isEmpty(recordLogs)) { - return; + continue; + + } if (equipment.getEquipmentCode().contains("HT")) { String partNo = ""; @@ -160,6 +173,7 @@ public class MesAccountJob extends BaseMesScheduleJob { } mesProductRecordLogRepository.saveAll(productRecordLogs); } + LOGGER.info("正常处理设备编号:{}的设备数据结束"); } }catch (Exception e) { e.printStackTrace(); 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 0244ea8..5fc4af7 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 @@ -321,8 +321,8 @@ public class MesProductionRecordServiceImpl extends BaseMesService partitionList = partition(mesProductAccountResModels, pager.getPageSize(), pager.getCurrentPage()); for (MesProductAccountResModel mesProductAccountResModel : partitionList) { boolean isErrorCount = false; - int size = mesProductAccountResModel.getPartNo().split(",").length; + int size = mesProductAccountResModel.getPartNo().split(",").length == 1 ? mesProductAccountResModel.getPartNo().split(";").length : 1; int productCount = Integer.valueOf(mesProductAccountResModel.getProductCount()); int detailCount = Integer.valueOf(mesProductAccountResModel.getDetailCount()); if (detailCount * size > productCount) { @@ -562,6 +563,10 @@ public class MesProductionRecordServiceImpl extends BaseMesService recordLogs = mesProductRecordLogRepository.findByHqlWhere(packBean); + + + + if (mesProductAccountResModel.getEquipmentCode().contains("HT")) { // 1 判断2个 shotcount之间有没有加工记录,如果没有,就需要看 设备是不是192,然后看是否是网络原因 @@ -584,16 +589,17 @@ public class MesProductionRecordServiceImpl extends BaseMesService finishList = Stream.of("Product_finish","Part_Finish").collect(Collectors.toList()); for (MesProductRecordLog recordLog : recordLogs) { + int errorCount = 0; + if (Objects.equal(recordLog.getCategoryLevelTwo(), "BYPASS")) { if (Objects.equal(recordLog.getEquipVariableValue(), "True")) { if (StringUtils.isEmpty(startTime)) { @@ -613,7 +619,7 @@ public class MesProductionRecordServiceImpl extends BaseMesService recordLogs) { int result = 0; + // 定义有问题的开始时间 String startTime = ""; + // 定义有问题的结束时间 String endTime = ""; - int errorCount = 0; + // 错误个数 + // 异常原因 String reason = ""; - String reasonOffline = "【%s】到【%s】,客户端下线,导致【%s】个完成信号丢失"; - String reasonQuality = "【%s】到【%s】设备信号质量为0,导致【%s】个完成信号丢失"; - String reasonBypass = "【%s】到【%s】设备打BYPASS,导致【%s】个完成信号丢失"; - String releaseBypass = "【%s】到【%s】设备在MES没有发允许加工指令的情况下,给了【%s】个完成信号"; + String reasonOffline = "因其他原因:系统,网络,发版等,导致【%s】的完成信号丢失【%s】个;"; + //String reasonOffline = "【%s】,客户端下线,导致【%s】个完成信号丢失"; + String reasonQuality = "【%s】设备信号质量为0,导致【%s】个完成信号丢失;"; + String reasonBypass = "【%s】设备打BYPASS,导致【%s】个完成信号丢失;"; + String releaseBypass = "【%s】设备在MES没有发允许加工指令的情况下,给了【%s】个完成信号;"; + // BYPASS 默认fasle boolean bypassFlag = false; + // release 默认false boolean releaseFlag = 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 singleReason = ""; for (MesProductRecordLog recordLog : recordLogs) { + int errorCount = 0; + + // BYPASS 逻辑开始 + // 第一次遇到BYPASS = true, 取下开始时间,后面的加工记录一直增加errorCount 直到出现 BYPASS = FALSE, if (Objects.equal(recordLog.getCategoryLevelTwo(), "BYPASS") && Objects.equal(recordLog.getEquipVariableValue(), "True")) { - if (StringUtils.isEmpty(startTime)) { - startTime = recordLog.getCreateDatetime(); - } + startTime = recordLog.getCreateDatetime(); + endTime = recordLog.getCreateDatetime(); - // 每次都取反,第一次是打开,那第二次就是关闭了 - bypassFlag = !bypassFlag; - if (!bypassFlag) { - errorCount = 0; - } + bypassFlag = true; continue; } if (bypassFlag && recordLog.getType().equals("record")) { errorCount ++; - reason = String.format(reasonBypass,startTime, endTime, errorCount +""); + singleReason += String.format(reasonBypass,startTime, errorCount +""); continue; } if (bypassFlag && Objects.equal(recordLog.getCategoryLevelTwo(), "BYPASS") && Objects.equal(recordLog.getEquipVariableValue(), "False")) { endTime = recordLog.getCreateDatetime(); + reason += singleReason + ";"; + singleReason = ""; + errorCount = 0; bypassFlag = false; continue; } + if (!releaseFlag) { + if (finishList.contains(recordLog.getCategoryLevelTwo()) && Objects.equal(recordLog.getEquipVariableValue(), "True")) { startTime = recordLog.getCreateDatetime(); + errorCount ++; + reason += String.format(releaseBypass, startTime, errorCount + ""); + continue; + } + } + // BYPASS 逻辑结束 result = 1 代表一个成功新型号,遇到一个加工记录就会-1 变成0 if (result == 0) { if (Objects.equal(recordLog.getCategoryLevelTwo(), "Work_Allow") && Objects.equal(recordLog.getEquipVariableValue(), "True")) { releaseFlag = true; @@ -702,22 +725,19 @@ public class MesProductionRecordServiceImpl extends BaseMesService 0) { - if (StringUtils.isEmpty(startTime)) { - startTime = recordLog.getCreateDatetime(); - } + startTime = recordLog.getCreateDatetime(); + errorCount ++; endTime = recordLog.getCreateDatetime(); if (Objects.equal(recordLog.getQuality(), "192")) { - reason = String.format(reasonOffline,startTime, endTime, errorCount +""); + reason += String.format(reasonOffline,startTime, errorCount +""); } else { - reason = String.format(reasonQuality,startTime, endTime, errorCount +""); + reason += String.format(reasonQuality,startTime, errorCount +""); } } if (recordLog.getType().equals("record")) { @@ -768,6 +788,7 @@ public class MesProductionRecordServiceImpl extends BaseMesService> partition = Lists.partition(list, pageSize); // 总页数 int pages = partition.size(); + pageNum = pageNum -1; pageNum = pageNum <= 0 ? 0 : (pageNum <= (pages - 1) ? pageNum : (pages - 1)); return partition.get(pageNum); } 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 234ee60..97dd03d 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 @@ -1281,6 +1281,7 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getErpWorkCenter()); newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode()); newMesProductOffLine.setDescription(nowTime); + newMesProductOffLine.setBomCode(mesBom.getBomCode()); ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser()); return newMesProductOffLine;