From ea2b735694166e8fb1cb65a32c2a3b875cabfffd Mon Sep 17 00:00:00 2001 From: gsz Date: Mon, 1 Jul 2024 09:44:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E5=AD=90=E5=85=B3=E7=B3=BBExtendType?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/api/base/IMesWorkOrderService.java | 6 +- .../controller/busi/MesWhiteListController.java | 68 ++++++++++++---------- .../base/MesWorkCellExtendCfgService.java | 2 +- .../serviceimpl/base/MesWorkOrderService.java | 57 ++++++------------ 4 files changed, 57 insertions(+), 76 deletions(-) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java index 40a93ae..1aabb54 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java @@ -40,10 +40,10 @@ public interface IMesWorkOrderService extends IBaseMesService { List getPreDayReportMesProductionRecord(String organizeCode , List mesShiftList, String workCenterCode); - List getPreDayReportMesProduceSn(String organizeCode , List mesProductionRecordList ); + 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); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesWhiteListController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesWhiteListController.java index be5167d..69b52c9 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesWhiteListController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesWhiteListController.java @@ -53,6 +53,7 @@ public class MesWhiteListController extends MesBaseController { private MesShiftRepository mesShiftRepository; @Autowired private IMesConfigService configService; + @PostMapping(value = "/meter/main-data") @ApiOperation(value = "Maximo仪表主数据", notes = "Maximo仪表主数据") public Map doMeterMainData(@RequestBody MaximoParamModel paramModel) { @@ -61,7 +62,7 @@ public class MesWhiteListController extends MesBaseController { ValidatorBean.checkNotNull(paramModel.getAssetNum(), "assetNum不能为空"); ValidatorBean.checkNotNull(paramModel.getBaseMeasureUnitId(), "baseMeasureUnitId不能为空"); ValidatorBean.checkNotNull(paramModel.getSiteId(), "siteId不能为空"); - Map resultMap = maximoService.doMeterMainData(paramModel); + Map resultMap = maximoService.doMeterMainData(paramModel); LOGGER.info("Maximo仪表主数据 返回 resultMap:{}", resultMap); @@ -78,7 +79,7 @@ public class MesWhiteListController extends MesBaseController { ValidatorBean.checkNotNull(paramModel.getSiteId(), "siteId不能为空"); ValidatorBean.checkNotNull(paramModel.getStatus(), "status不能为空"); ValidatorBean.checkNotNull(paramModel.getFailureCode(), "failureCode不能为空"); - Map resultMap = maximoService.doAssetMainData(paramModel); + Map resultMap = maximoService.doAssetMainData(paramModel); LOGGER.info("Maximo设备主数据 返回 resultMap:{}", resultMap); @@ -86,19 +87,21 @@ public class MesWhiteListController extends MesBaseController { // return ResultBean.success().setResultMap(resultMap).setSuccess((Boolean) resultMap.get("success")); } + @GetMapping(value = "/ccscTest") @ApiOperation(value = "ccsc", notes = " ") public ResultBean doCcscTest(String organizeCode) { List mesWorkOrderList = mesWorkOrderService.queryMesWorkOrderProcessToSap(organizeCode); - if (!CollectionUtils.isEmpty(mesWorkOrderList)){ - mesCcscTaskService.doCcscTaskByMesWorkOrder(organizeCode,mesWorkOrderList); + if (!CollectionUtils.isEmpty(mesWorkOrderList)) { + mesCcscTaskService.doCcscTaskByMesWorkOrder(organizeCode, mesWorkOrderList); } - return ResultBean.success().setSuccess(true); + return ResultBean.success().setSuccess(true); } + @GetMapping("/reportWorkByPreDayJob") @ApiOperation(value = "job测试") public ResultBean queryReworkTaskByPager(String organizeCode) { - try { + //遍历系统参数指定的产线获取对应班次,找到早班的开始时间, String workCenterCodes = configService.getCfgValue(organizeCode, "MES_PCN_WORK_CENTER_NO"); List workCenterCodeList = Arrays.asList(workCenterCodes.split(",")); @@ -108,36 +111,37 @@ public class MesWhiteListController extends MesBaseController { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", packBean); List mesShiftList = mesShiftRepository.findByHqlWhere(packBean); - //1.获取生产加工记录production_record表中,report_status为待汇报状态的工单 - List mesProductionRecordList = workOrderService.getPreDayReportMesProductionRecord(organizeCode,mesShiftList,workCenterCode); - if(CollectionUtils.isEmpty(mesProductionRecordList)){ + //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)){ - 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; } - //根据产线+物料产生的工单报工 - 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); + //4.根据产线+物料产生的工单报工 + try { + for (MesWorkOrder mesWorkOrder : mesWorkOrders) { + 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 imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } - for (MesProductionRecord mesProductionRecord : mesProductionRecordList) { - mesProductionRecord.setReportStatus(20); - ConvertBean.serviceModelUpdate(mesProductionRecord, userName); - } - productionRecordRao.saveAll(mesProductionRecordList); } - return ResultBean.success("查询成功").setResultList(null); - } catch (ImppBusiException imppException) { - return ResultBean.fail(imppException); - } catch (Exception e) { - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } + return ResultBean.success(); } -} +} \ No newline at end of file diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCellExtendCfgService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCellExtendCfgService.java index 360e073..ade551f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCellExtendCfgService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkCellExtendCfgService.java @@ -36,7 +36,7 @@ public class MesWorkCellExtendCfgService extends BaseMesService implements return mesProduceSnRao.findByHqlWhere(snPackBean); } @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]; - + //查询工作中心 DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", ddlPackBean); MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean); @@ -1254,20 +1254,24 @@ public class MesWorkOrderService extends BaseMesService implements List orderList=new ArrayList<>(); GenSerialNoModel genSerialNoModel = new GenSerialNoModel("MES_WORK_CENTER_ORDER_NO"); genSerialNoModel.setPartNo(workCenterCode); -// orderList = syncFuncService.syncSerialNo(genSerialNoModel,userName, organizeCode, 1).getResultList(); + orderList = syncFuncService.syncSerialNo(genSerialNoModel,userName, organizeCode, 1).getResultList(); - String orderNo = workCenterCode+TimeTool.getNowTime(true); + String orderNo = orderList.get(0); DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(orderNo, "workOrderNo", orderPackBean); if (mesWorkOrderRDao.isExitByHql(orderPackBean)) { MesException.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()); + + //校验标识 //若工单类型为排序 List saveMesWorkOrderToWms = new ArrayList<>(); @@ -1283,7 +1287,7 @@ public class MesWorkOrderService extends BaseMesService implements 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)); } @@ -1320,7 +1324,7 @@ public class MesWorkOrderService extends BaseMesService implements return mesWorkOrderToWmsList; } - 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()); @@ -1341,33 +1345,6 @@ public class MesWorkOrderService extends BaseMesService implements MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrderDb); //物料+生产版本获取bom信息 List mesBoms = findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList()); - //报工类型 - if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrderDb.getReportType()) { - mesWorkOrderDb.setReportedQty(MathOperation.add(mesWorkOrderDb.getNum(), mesWorkOrderDb.getReportedQty())); - //更新工单状态 - double unCompleteQty = MathOperation.sub(mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty()); - mesWorkOrderDb.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); - if (mesWorkOrderDb.getReportedQty() > mesWorkOrderDb.getQty()) { - MesException.throwMesBusiException("工单报工数量【%s】大于工单数量【%s】,不允许报工", - mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty()); - } else if (Objects.equals(mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty())) { - mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); - } else { - mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); - } - } else { - //报工调整数量加- - mesWorkOrderDb.setAdjustQty((MathOperation.add(mesWorkOrderDb.getNum(), mesWorkOrderDb.getAdjustQty()))); - //冲销数量大于工单完成数量报错 - if (mesWorkOrderDb.getAdjustQty() > mesWorkOrderDb.getReportedQty()) { - MesException.throwMesBusiException("冲销数量【%s】大于工单完成数量【%s】,不允许冲销", - mesWorkOrderDb.getAdjustQty(), mesWorkOrderDb.getReportedQty()); - } - } - //更新工单 - updateMesWorkOrder(mesWorkOrderDb, userName ); - - //生成条码 todo 有条码 不生成 //保存数据 // List mesProductOffLineList = new ArrayList<>(); @@ -1379,7 +1356,7 @@ public class MesWorkOrderService extends BaseMesService implements //保存数据 List mesProductOffLineList = new ArrayList<>(); MesProductOffLine newMesProductOffLine; - for (MesProduceSn produceSn : mesProduceSns) { + for (MesProductionRecord produceSn : mesProductionRecordList) { for (MesBom mesBom : mesBoms) { newMesProductOffLine = new MesProductOffLine(); newMesProductOffLine.setReportPartNo(mesWorkOrderDb.getPartNo());