diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IMesCreateWorkOrder.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IMesCreateWorkOrder.java index e5f543f..8b9505c 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IMesCreateWorkOrder.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IMesCreateWorkOrder.java @@ -13,6 +13,6 @@ public interface IMesCreateWorkOrder { * @param partSap * @param sortInfo */ - void createWorkOrder(MesPartProdGroup partProdGroup, MesPartProdGroupDetail mesPartProdGroupDetail, MesPartSap partSap, MesCustSortInfo sortInfo); + void createWorkOrder(MesPartProdGroup partProdGroup, MesPartProdGroupDetail mesPartProdGroupDetail, MesPartSap partSap, MesCustSortInfo sortInfo,Long productSeq); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesPackageRoundnessService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesPackageRoundnessService.java index 1382918..e2b1967 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesPackageRoundnessService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesPackageRoundnessService.java @@ -117,30 +117,22 @@ public class MesPackageRoundnessService implements IRoundnessStrategy { //2.排序信息中的零件合计数量 double qty = sortInfoList.stream().map(MesCustSortInfo::getQty).reduce(Double::sum).get(); MesCustSortInfo sortInfo; + /** + * 2024/10/24 by Castle需要根据custOrderNo升序设置productSeq + */ + log.info("castle-execute-before查询出的sortInfo数据:{}", sortInfoList); + sortInfoList = sortInfoList.stream().sorted((sortInfo1, sortInfo2) -> { + if (Long.parseLong(sortInfo1.getCustOrderCode().substring(3)) > Long.parseLong(sortInfo2.getCustOrderCode().substring(3))) { + return 1; + } + return -1; + }).collect(Collectors.toList()); + log.info("castle-execute-after查询出的sortInfo数据:{}", sortInfoList); + //3.当数量未达到圆整包装数时 if (qty < roundQty) { //4.查看客户排序信息钟的最早的一条过点时间 + 生产组最晚生成时间是否已到达当前时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); -// sortInfoList = sortInfoList.stream().sorted((sortInfo1, sortInfo2) -> { -// try { -// if (sdf.parse(sortInfo1.getMatchTime()).after(sdf.parse(sortInfo2.getMatchTime()))) { -// return 1; -// } -// } catch (ParseException e) { -// log.error("解析匹配时间报错:{}", e.getMessage()); -// } -// return -1; -// }).collect(Collectors.toList()); - /** - * 2024/10/24 by Castle需要根据custOrderNo升序设置productSeq - */ - sortInfoList = sortInfoList.stream().sorted((sortInfo1, sortInfo2) -> { - if (Long.parseLong(sortInfo1.getCustOrderCode().substring(3)) > Long.parseLong(sortInfo2.getCustOrderCode().substring(3))) { - return 1; - } - return -1; - }).collect(Collectors.toList()); - sortInfo = sortInfoList.get(0); //最晚延迟的时间 int latestCreationTime = Integer.parseInt(partProdGroup.getLatestCreationTime()); @@ -158,11 +150,23 @@ public class MesPackageRoundnessService implements IRoundnessStrategy { } } + //批量获取生生产序号 + /** + * 生产序号 + * 工厂-产线-9位流水号,跳号10 + */ + GenSerialNoModel prodSeqSerialNoModel = new GenSerialNoModel("MES_WORK_ORDER_SEQ_WU_HAN"); + prodSeqSerialNoModel.setProdLocation(partProdGroup.getWorkCenterCode()); + List proSeqResultList = syncFuncService.syncSerialNo(prodSeqSerialNoModel.organizeCode(partProdGroup.getOrganizeCode()), "edi", partProdGroup.getOrganizeCode(), sortInfoList.size()).getResultList(); + log.info("castle-execute-顺序号:{}", proSeqResultList); //扣减qty 生成工单 while (qty > 0) { //临时客户排序信息中的数量计数器 sortInfo = sortInfoList.get(0); + String seq = proSeqResultList.get(0); + long productSeq = Long.parseLong(seq.replace("MES_WORK_ORDER_SEQ_WU_HAN", "").replace(partProdGroup.getWorkCenterCode(), "")); + double custQty = sortInfo.getQty(); //当客户排序信息中的数量大于剩余圆整数量要Break if (custQty > roundQty) { @@ -187,10 +191,11 @@ public class MesPackageRoundnessService implements IRoundnessStrategy { return; } - mesCreateWorkOrder.createWorkOrder(partProdGroup, mesPartProdGroupDetail, mesPart, sortInfo); + mesCreateWorkOrder.createWorkOrder(partProdGroup, mesPartProdGroupDetail, mesPart, sortInfo,productSeq); // doCreateWorkOrder(partProdGroup, mesPartProdGroupDetail, mesPart, sortInfo); qty -= custQty; sortInfoList.remove(sortInfo); + proSeqResultList.remove(seq); // 更新排序信息 已完成 custSoftInfoService.updateCustSortInfo(sortInfo); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java index a0a9d97..bc319c6 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java @@ -87,7 +87,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { @Transactional(propagation = Propagation.REQUIRES_NEW) - public void createWorkOrder(MesPartProdGroup partProdGroup, MesPartProdGroupDetail mesPartProdGroupDetail, MesPartSap partSap, MesCustSortInfo sortInfo) { + public void createWorkOrder(MesPartProdGroup partProdGroup, MesPartProdGroupDetail mesPartProdGroupDetail, MesPartSap partSap, MesCustSortInfo sortInfo,Long productSeq) { //判断vin是否已经生成了S单,如果已经生成S单 则不再生成工单 String vinCode = sortInfo.getVinCode(); @@ -411,15 +411,16 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { workOrderPartRao.saveAll(workOrderPartList); } List assemblyList = getAssemblyList(mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getCarModelCode(), workOrderPartList, partProdGroup); - /** - * 生产序号 - * 工厂-产线-9位流水号,跳号10 - */ - GenSerialNoModel prodSeqSerialNoModel = new GenSerialNoModel("MES_WORK_ORDER_SEQ_WU_HAN"); - prodSeqSerialNoModel.setProdLocation(mesWorkOrder.getWorkCenterCode()); - List proSeqResultList = syncFuncService.syncSerialNo(prodSeqSerialNoModel.organizeCode(organizeCode), "edi", mesPartProdGroupDetail.getOrganizeCode(), 1).getResultList(); - String proSeqStr = proSeqResultList.get(0); - mesWorkOrder.setProductSeq(Long.parseLong(proSeqStr.replace("MES_WORK_ORDER_SEQ_WU_HAN", "").replace(mesWorkOrder.getWorkCenterCode(),""))); +// /** +// * 生产序号 +// * 工厂-产线-9位流水号,跳号10 +// */ +// GenSerialNoModel prodSeqSerialNoModel = new GenSerialNoModel("MES_WORK_ORDER_SEQ_WU_HAN"); +// prodSeqSerialNoModel.setProdLocation(mesWorkOrder.getWorkCenterCode()); +// List proSeqResultList = syncFuncService.syncSerialNo(prodSeqSerialNoModel.organizeCode(organizeCode), "edi", mesPartProdGroupDetail.getOrganizeCode(), 1).getResultList(); +// String proSeqStr = proSeqResultList.get(0); + mesWorkOrder.setProductSeq(productSeq); + mesWorkOrder.setPartProdGroupName(partProdGroup.getPartProdGroupName()); ConvertBean.saveOrUpdate(mesWorkOrder, "MES-JOB"); mesWorkOrderRao.insert(mesWorkOrder); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSortRuleCfgOfflineServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSortRuleCfgOfflineServiceImpl.java index e1994e1..05f37ad 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSortRuleCfgOfflineServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSortRuleCfgOfflineServiceImpl.java @@ -104,12 +104,11 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS cfgOffline.setCustPartNo(custPartNo); cfgOffline.setCustPartName(mesCustomerPart.getCustPartName()); cfgOffline.setPartNo(erpPartNo); - cfgOffline.setVehicleNo(carModelCode); +// cfgOffline.setVehicleNo(carModelCode); cfgOffline.setOrganizeCode(organizeCode); ConvertBean.saveOrUpdate(cfgOffline, "OFFLINE-JOB"); cfgOfflineRao.insert(cfgOffline); } - } @Transactional(propagation = Propagation.REQUIRES_NEW)