diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java index 631ef23..033adb4 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java @@ -113,12 +113,17 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_CENTER_ORDER_NO); genSerialNoModel.setPartNo(detail.getWorkCenterCode()); List resultList = syncFuncService.syncSerialNo(genSerialNoModel, "edi", detail.getOrganizeCode(), 1).getResultList(); -// GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_NO); -// List resultList = syncFuncService.syncSerialNo(genSerialNoModel,"JOB", detail.getOrganizeCode(), 1).getResultList(); mesWorkOrder.setWorkOrderNo(resultList.get(0)); mesWorkOrder.setWorkOrderType(MesExtEnumUtil.ORDER_TYPE.BTO.getValue()); mesWorkOrder.setWorkOrderSeq(createSeq.toString()); - mesWorkOrder.setProduceSeq(createSeq); + //生产顺序号 【前缀(WSPS)+工厂号+产线+特殊符号#+10位流水 步长10】({prefix}{custProdLine}{prodLocation}{dynamicRule}{serialNo}) + GenSerialNoModel proSeqGenSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_PRODUCT_SEQ); + proSeqGenSerialNoModel.setCustProdLineCode(detail.getOrganizeCode()); + proSeqGenSerialNoModel.setProdLocation(detail.getWorkCenterCode()); + proSeqGenSerialNoModel.setDynamicRule("#"); + List seqList = syncFuncService.syncSerialNo(proSeqGenSerialNoModel, "edi", detail.getOrganizeCode(), 1).getResultList(); + String prodSeqStr = seqList.get(0); + mesWorkOrder.setProduceSeq(Long.parseLong(prodSeqStr.substring(prodSeqStr.indexOf("#")+1))); mesWorkOrder.setCustPartNo(sortInfos.get(0).getCustPartNo()); //标识 -空 //状态 --- 根据零件发运组看是自动发布 @@ -138,6 +143,7 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { } //产线 mesWorkOrder.setWorkCenterCode(detail.getWorkCenterCode()); + //todo 需要校验产线和零件关系 //工位 mesWorkOrder.setWorkCellCode(detail.getWorkCellCode()); //生产日期,计划时间 @@ -165,15 +171,19 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { calendar.setTime(date); int hours = calendar.get(Calendar.HOUR_OF_DAY); int minutes = calendar.get(Calendar.MINUTE); - int shiftTime = Integer.parseInt(hours + "" + minutes); - for (MesShift shift : shiftList) { - int startTime = Integer.parseInt(shift.getStartTime()); - int endTime = Integer.parseInt(shift.getEndTime()); - if (shiftTime >= startTime && shiftTime <= endTime) { - mesWorkOrder.setShiftName(shift.getShiftName()); - mesWorkOrder.setShiftCode(shift.getShiftCode()); - break; + String shiftTime = String.format("%02d:%02d", hours, minutes); + if (shiftList == null || shiftList.isEmpty()) { + for (MesShift shift : shiftList) { + String startTime = shift.getStartTime().replace(":", ""); + String endTime = shift.getEndTime().replace(":", ""); + if ((shiftTime.compareTo(startTime) >= 0) && (shiftTime.compareTo(endTime) <= 0)) { + mesWorkOrder.setShiftName(shift.getShiftName()); + mesWorkOrder.setShiftCode(shift.getShiftCode()); + break; + } } + } else { + log.info("当前产线:{} 没有配置班次", detail.getWorkCenterCode()); } // 12.零件相关 mesWorkOrder.setPartNo(mesPartSap.getPartNo()); @@ -182,9 +192,10 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { MesProductVersion prodVersion = getProdVersion(detail.getOrganizeCode(), mesPartSap.getPartNo()); if (prodVersion == null) { log.info("请配置工厂:{},partNo:{}的生产版本", detail.organizeCode, mesPartSap.getPartNo()); + }else { + String productVersion = prodVersion.getProductVersion(); + mesWorkOrder.setProductVersion(productVersion); } - String productVersion = prodVersion.getProductVersion(); - mesWorkOrder.setProductVersion(productVersion); // 14.bomCode partNo + 生产版本+ organizeCode // 数量 double realQty = roundQty * multiple; @@ -237,21 +248,20 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { Date now = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(now); - String hour = calendar.get(Calendar.HOUR_OF_DAY) + ""; // 获取小时(24小时制) - String minute = calendar.get(Calendar.MINUTE) + ""; - String nowTime = hour + minute; + int hour = calendar.get(Calendar.HOUR_OF_DAY); // 获取小时(24小时制) + int minute = calendar.get(Calendar.MINUTE); + String nowTime = String.format("%02d:%02d", hour, minute); //遍历窗口时间获取最新的窗口时间 - String nowTimeStr = String.format("%04d", Integer.parseInt(nowTime)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List sortedTime = windowTimeList.stream().sorted(Comparator.comparing(MesPartProdGroupWindowTime::getWindowTime)).collect(Collectors.toList()); for (MesPartProdGroupWindowTime time : sortedTime) { - if (nowTimeStr.compareTo(time.getWindowTime()) < 0) { + if (nowTime.compareTo(time.getWindowTime()) < 0) { continue; } - calendar.set(Calendar.HOUR, Integer.parseInt(time.getWindowTime().substring(0, 2))); + calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time.getWindowTime().substring(0, 2))); calendar.set(Calendar.MINUTE, Integer.parseInt(time.getWindowTime().substring(2, 4))); Date dateCreateOrder = calendar.getTime(); - if (Objects.isNull(time.getLastRunTime())){ + if (Objects.isNull(time.getLastRunTime())) { return time; } Date lastRunTime = sdf.parse(time.getLastRunTime()); diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java index 07fc310..76cfb44 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java @@ -29,6 +29,8 @@ public class MesCommonConstant { public static final String MES_WORK_ORDER_NO = "MES_WORK_ORDER_NO"; //产线代码独立排序单号规则 public static final String MES_WORK_CENTER_ORDER_NO = "MES_WORK_CENTER_ORDER_NO"; + //工单的生产顺序号 + public static final String MES_WORK_ORDER_PRODUCT_SEQ = "MES_WORK_ORDER_PRODUCT_SEQ"; //报工条码规则 public static final String REPORT_SN = "REPORT_SN"; //装车单号