diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java index c2fc29f..9b87f7c 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java @@ -43,9 +43,9 @@ public interface IMesWorkOrderService { List getPreDayReportMesProduceSn(String organizeCode ,List mesProductionRecordList ); - public List insertMesWorkOrder(List mesProduceSns,List mesShiftList,String organizeCode, String userName ); + List insertMesWorkOrder(List mesProductionRecordList,List mesShiftList,String organizeCode, String userName ); - void doPcnJobProductReport(List mesProduceSns,List mesShiftList,String organizeCode, String userName, MesWorkOrder mesWorkOrder); + void doPcnJobProductReport(List mesProductionRecordList,List mesShiftList,String organizeCode, String userName, MesWorkOrder mesWorkOrder); void doProductReportByRecord(MesProductionRecord productionRecord, String organizeCode, String userName); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/TestController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/TestController.java index 88480c1..29616a3 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/TestController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/TestController.java @@ -49,6 +49,7 @@ public class TestController { private MesShiftRepository mesShiftRepository; @Autowired private IMesConfigService configService; + @GetMapping("/equipment/log/query") @ApiOperation(value = "查询设备交互") public ResultBean queryReworkTaskByPager(String organizeCode, Integer equipId) { @@ -61,6 +62,7 @@ public class TestController { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } + @GetMapping("/reportWorkByPreDayJob") @ApiOperation(value = "查询设备交互") public ResultBean queryReworkTaskByPager(String organizeCode) { @@ -74,29 +76,31 @@ public class TestController { for (String workCenterCode : workCenterCodeList) { List mesShiftList = mesShiftListAll.stream().filter(s -> s.getWorkCenterCode().equalsIgnoreCase(workCenterCode)).collect(Collectors.toList()); //1.获取生产加工记录production_record表中,report_status为待汇报状态的工单 - List mesProductionRecordList = workOrderService.getPreDayReportMesProductionRecord(organizeCode,mesShiftList,workCenterCode); - if(CollectionUtils.isEmpty(mesProductionRecordList)){ - continue; - } - //2. 查询 mesProduceSn - List unReportMesProduceSn = workOrderService.getPreDayReportMesProduceSn(organizeCode,mesProductionRecordList); - if(CollectionUtils.isEmpty(unReportMesProduceSn)){ + List mesProductionRecordList = workOrderService.getPreDayReportMesProductionRecord(organizeCode, mesShiftList, workCenterCode); + if (CollectionUtils.isEmpty(mesProductionRecordList)) { continue; } - List mesWorkOrders = workOrderService.insertMesWorkOrder(unReportMesProduceSn, mesShiftList,organizeCode, userName); - if(CollectionUtils.isEmpty(mesWorkOrders)){ + + //3.插入生产工单表 + List mesWorkOrders = workOrderService.insertMesWorkOrder(mesProductionRecordList, mesShiftList, organizeCode, userName); + if (CollectionUtils.isEmpty(mesWorkOrders)) { continue; + } - //根据产线+物料产生的工单报工 + //4.根据产线+物料产生的工单报工 + for (MesWorkOrder mesWorkOrder : mesWorkOrders) { - List mesProduceSnList = unReportMesProduceSn.stream().filter(w -> w.getPartNo().equalsIgnoreCase(mesWorkOrder.getPartNo())).collect(Collectors.toList()); - workOrderService.doPcnJobProductReport(mesProduceSnList,mesShiftList,organizeCode,userName, mesWorkOrder); + List mesProductionRecords = mesProductionRecordList.stream().filter( + w -> w.getWorkCenterCode().equalsIgnoreCase(mesWorkOrder.getWorkCenterCode()) + && w.getPartNo().equalsIgnoreCase(mesWorkOrder.getPartNo())).collect(Collectors.toList()); + workOrderService.doPcnJobProductReport(mesProductionRecords, mesShiftList, organizeCode, userName, mesWorkOrder); } for (MesProductionRecord mesProductionRecord : mesProductionRecordList) { mesProductionRecord.setReportStatus(20); ConvertBean.serviceModelUpdate(mesProductionRecord, userName); } productionRecordRao.saveAll(mesProductionRecordList); + } return ResultBean.success("查询成功").setResultList(null); } catch (ImppBusiException imppException) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportWorkByPreDayJob.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportWorkByPreDayJob.java index c708c2e..71b20bb 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportWorkByPreDayJob.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportWorkByPreDayJob.java @@ -78,13 +78,13 @@ public class MesReportWorkByPreDayJob extends BaseMesScheduleJob { continue; } //2. 查询 mesProduceSn - List unReportMesProduceSn = workOrderService.getPreDayReportMesProduceSn(organizeCode, mesProductionRecordList); - if (CollectionUtils.isEmpty(unReportMesProduceSn)) { - continue; - } - LOGGER.info("产线:{}报工mesWorkOrders:{}", workCenterCode, unReportMesProduceSn); +// List unReportMesProduceSn = workOrderService.getPreDayReportMesProduceSn(organizeCode, mesProductionRecordList); +// if (CollectionUtils.isEmpty(unReportMesProduceSn)) { +// continue; +// } + LOGGER.info("产线:{}报工mesProductionRecordList:{}", workCenterCode, mesProductionRecordList); //3.插入生产工单表 - List mesWorkOrders = workOrderService.insertMesWorkOrder(unReportMesProduceSn, mesShiftList, organizeCode, userName); + List mesWorkOrders = workOrderService.insertMesWorkOrder(mesProductionRecordList, mesShiftList, organizeCode, userName); if (CollectionUtils.isEmpty(mesWorkOrders)) { continue; @@ -93,14 +93,16 @@ public class MesReportWorkByPreDayJob extends BaseMesScheduleJob { //4.根据产线+物料产生的工单报工 try { for (MesWorkOrder mesWorkOrder : mesWorkOrders) { - List mesProduceSnList = unReportMesProduceSn.stream().filter(w -> w.getPartNo().equalsIgnoreCase(mesWorkOrder.getPartNo())).collect(Collectors.toList()); - workOrderService.doPcnJobProductReport(mesProduceSnList, mesShiftList, organizeCode, userName, mesWorkOrder); - for (MesProductionRecord mesProductionRecord : mesProductionRecordList) { - mesProductionRecord.setReportStatus(20); - ConvertBean.serviceModelUpdate(mesProductionRecord, userName); - } - productionRecordRao.saveAll(mesProductionRecordList); + List mesProductionRecords = mesProductionRecordList.stream().filter( + w -> w.getWorkCenterCode().equalsIgnoreCase(mesWorkOrder.getWorkCenterCode()) + && w.getPartNo().equalsIgnoreCase(mesWorkOrder.getPartNo())).collect(Collectors.toList()); + workOrderService.doPcnJobProductReport(mesProductionRecords, mesShiftList, organizeCode, userName, mesWorkOrder); + } + for (MesProductionRecord mesProductionRecord : mesProductionRecordList) { + mesProductionRecord.setReportStatus(20); + ConvertBean.serviceModelUpdate(mesProductionRecord, userName); } + productionRecordRao.saveAll(mesProductionRecordList); } catch (ImppBusiException e) { LOGGER.error("产线:{}报工失败:{}", workCenterCode, e.getErrorDetail()); // for (MesProductionRecord mesProductionRecord : mesProductionRecordList) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index 9323e37..bc60e9f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -253,7 +253,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { mesProductOffLineRDao.saveAll(mesProductOffLineList); } } - public void doPcnJobProductReport(List mesProduceSns,List mesShiftList,String organizeCode, String userName ,MesWorkOrder mesWorkOrderDb) { + public void doPcnJobProductReport(List mesProductionRecordList,List mesShiftList,String organizeCode, String userName ,MesWorkOrder mesWorkOrderDb) { //查询物料信息 DdlPackBean ddlPackBeanPart = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode()); @@ -279,8 +279,6 @@ public class MesWorkOrderService implements IMesWorkOrderService { //更新工单 // updateMesWorkOrder(mesWorkOrderDb, userName ); - //生成条码 todo 有条码 不生成 - //保存数据 // List mesProductOffLineList = new ArrayList<>(); // for (MesBom mesBom : mesBoms) { @@ -288,11 +286,11 @@ public class MesWorkOrderService implements IMesWorkOrderService { // } // mesProductOffLineService.insertBatch(mesProductOffLineList); - LOGGER.info("产线:{} 零件:{}更新工单mesProduceSns:{}", mesWorkOrderDb.getWorkCenterCode(), mesWorkOrderDb.getPartNo(),mesProduceSns.size()); + LOGGER.info("产线:{} 零件:{}更新工单mesProduceSns:{}", mesWorkOrderDb.getWorkCenterCode(), mesWorkOrderDb.getPartNo(),mesProductionRecordList.size()); //保存数据 List mesProductOffLineList = new ArrayList<>(); MesProductOffLine newMesProductOffLine; - for (MesProduceSn produceSn : mesProduceSns) { + for (MesProductionRecord mesProductionRecord : mesProductionRecordList) { for (MesBom mesBom : mesBoms) { newMesProductOffLine = new MesProductOffLine(); newMesProductOffLine.setReportPartNo(mesWorkOrderDb.getPartNo()); @@ -303,9 +301,9 @@ public class MesWorkOrderService implements IMesWorkOrderService { newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint()); newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint()); newMesProductOffLine.setQty(1d); - newMesProductOffLine.setReportSn(produceSn.getProductSn()); + newMesProductOffLine.setReportSn(mesProductionRecord.getProductSn()); newMesProductOffLine.setBomVersion(mesWorkOrderDb.getProductVersion()); - newMesProductOffLine.setSerialNumber(produceSn.getProductSn()); + newMesProductOffLine.setSerialNumber(mesProductionRecord.getProductSn()); newMesProductOffLine.setUnit(mesBom.getUnit()); newMesProductOffLine.setItemUnit(mesBom.getItemUnit()); newMesProductOffLine.setWorkOrderNo(mesWorkOrderDb.getWorkOrderNo()); @@ -809,12 +807,12 @@ public class MesWorkOrderService implements IMesWorkOrderService { } @Override - public List insertMesWorkOrder(List mesProduceSns,List mesShiftList, String organizeCode, String userName) { + public List insertMesWorkOrder(List mesProductionRecordList,List mesShiftList, String organizeCode, String userName) { List mesWorkOrderList=new ArrayList<>(); - Map> snListMap = mesProduceSns.stream().collect(Collectors.groupingBy(sn -> sn.getWorkCenterCode() +"="+ sn.getPartNo())); - for (Map.Entry> stringListEntry : snListMap.entrySet()) { - List value = stringListEntry.getValue(); - MesProduceSn mesProduceSn = value.get(0); + Map> mesProductionRecordListMap = mesProductionRecordList.stream().collect(Collectors.groupingBy(sn -> sn.getWorkCenterCode() +"="+ sn.getPartNo())); + for (Map.Entry> stringListEntry : mesProductionRecordListMap.entrySet()) { + List value = stringListEntry.getValue(); + MesProductionRecord mesProductionRecord = value.get(0); String[] split = stringListEntry.getKey().split("="); String workCenterCode = split[0]; String partNo = split[1]; @@ -853,11 +851,11 @@ public class MesWorkOrderService implements IMesWorkOrderService { MesPcnException.throwMesBusiException("单号流水码生成重复"); } item.setWorkOrderNo(orderNo); - item.setPartName(mesProduceSn.getPartName()); + item.setPartName(mesProductionRecord.getPartName()); //生产时间新增取当天 item.setProduceTime(TimeTool.getToday()); item.setUnCompleteQty(0d); - item.setQty(value.stream().mapToDouble(MesProduceSn::getQty).sum()); + item.setQty(value.stream().mapToDouble(MesProductionRecord::getQty).sum()); item.setReportedQty(item.getQty()); item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); @@ -877,17 +875,11 @@ public class MesWorkOrderService implements IMesWorkOrderService { item.setProductVersion(mesProductVersion.getProductVersion()); //获取bom信息 List bomList = findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); - //item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); + //发送工单信息给WMS saveMesWorkOrderToWms.addAll(saveMesWorkOrderToWms(item, bomList)); } -// if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()){ -// //生产工单-非排序手工插单,关闭该零件当天之前日期非排序工单 -// List partNoList = Collections.singletonList(item.getPartNo()); -// deleteUnSortOrder(orderNo,partNoList); -// } - item.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); ConvertBean.serviceModelInitialize(item, userName); MesWorkOrder mesWorkOrder = workOrderRepository.insert(item);