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 432135a..13e0cbc 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 @@ -308,8 +308,8 @@ public class MesWorkOrderService implements IMesWorkOrderService { // 递归展开 BOM expendBomChild(organizeCode, mesPart.getPartNo(), bomVersion, bomData); - if (bomData.size() == 0) { - MesPcnException.throwMesBusiException("零件号 %s 没找找到 ERP 同步的原始 BOM 数据,请检查接口是否正常!", mesPart.getPartNo()); + if (bomData.isEmpty()) { + throw new ImppBusiException(String.format("零件号 %s 没找找到 ERP 同步的原始 BOM 数据,请检查接口是否正常!",mesPart.getPartNo())); } Iterator iterator = bomData.iterator(); @@ -351,7 +351,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { private void expendBomChild(String organizeCode, String partNo, String bomVersion, List bomData) { List bomDetails = findMesBomByPartNoAndBomVersion(partNo, organizeCode, bomVersion); if (org.springframework.util.CollectionUtils.isEmpty(bomDetails)) { - MesPcnException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在", partNo, bomVersion); + throw new ImppBusiException(String.format("物料【%s】生产版本【%s】对应bom信息不存在", partNo, bomVersion)); } for (MesBom item : bomDetails) { MesBom newItem = new MesBom(); @@ -446,8 +446,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { if (e instanceof ImppBusiException) { msg = ((ImppBusiException) e).getErrorMsg(); } - e.printStackTrace(); - LOGGER.error("条码:{}报工失败", productionRecord.getProductSn(), e); + LOGGER.error("条码:{}报工失败,{}", productionRecord.getProductSn(), e.getMessage()); productionRecordService.updateProductionRecord(organizeCode, userName, productionRecord.getId(), msg); } } @@ -480,8 +479,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { if (e instanceof ImppBusiException) { msg = ((ImppBusiException) e).getErrorMsg(); } - e.printStackTrace(); - LOGGER.error("条码:{}报工失败", productionRecord.getProductSn(), e); + LOGGER.error(String.format("条码:【%s】报工失败,原因:[%s]", productionRecord.getProductSn(), e.getMessage())); productionRecordService.updateProductionRecord(organizeCode, userName, productionRecord.getId(), msg); } @@ -546,7 +544,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { DdlPreparedPack.getStringEqualPack(productionRecord.getPartNo(), "partNo", ddlPackBeanPart); MesPart mesPart = mesPartRDao.getByProperty(ddlPackBeanPart); if (null == mesPart) { - MesPcnException.throwMesBusiException("物料【%s】信息不存在", productionRecord.getPartNo()); + throw new ImppBusiException(String.format("物料【%s】信息不存在", productionRecord.getPartNo())); } List mesBoms = findBomList(organizeCode, mesPart, mesProductVersion.getAlternativePartList()); @@ -565,7 +563,10 @@ public class MesWorkOrderService implements IMesWorkOrderService { double reportQty = MathOperation.add(MesPcnExtConstWords.ONE, oldMesWorkOrder.getReportedQty()); propertyMap.put("reportedQty", reportQty); if (StringUtils.isEmpty(productionRecord.getWorkOrderNo())) { - double unCompleteQty = MathOperation.sub(oldMesWorkOrder.getQty(), oldMesWorkOrder.getReportedQty()); + double unCompleteQty = MathOperation.sub(oldMesWorkOrder.getQty(), reportQty); + //未完成数减到0之后不能为负数 + unCompleteQty = unCompleteQty > 0 ? unCompleteQty : 0; + propertyMap.put(MesPcnExtConstWords.COMPLETE_QTY, reportQty); propertyMap.put(MesPcnExtConstWords.UN_COMPLETE_QTY, unCompleteQty); } @@ -769,13 +770,13 @@ public class MesWorkOrderService implements IMesWorkOrderService { DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", ddlPackBean); MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean); if (Objects.isNull(mesWorkCenter)) { - MesPcnException.throwMesBusiException("产线【%s】不存在", workCenterCode); + throw new ImppBusiException(String.format("产线【%s】不存在",workCenterCode)); } List shiftList = mesShiftService.queryMesShift(organizeCode, workCenterCode); // 如果当前班次是早班 if (CollectionUtils.isEmpty(shiftList)) { - MesPcnException.throwFlowException(String.format("班次信息未维护,产线=%s"), workCenterCode); + throw new ImppBusiException(String.format("班次信息未维护,产线=%s",workCenterCode)); } List shifts = shiftList.stream().filter(mesShift -> Objects.equals(mesShift.getWorkCenterCode(), workCenterCode)).collect(Collectors.toList()); @@ -1208,7 +1209,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { private MesProductVersion getProductVersion(String organizeCode,String partNo,String productVersion) { MesProductVersion mesProductVersion = mesProductVersionService.getMesProductVersion(organizeCode,partNo,productVersion); if (null == mesProductVersion) { - MesPcnException.throwMesBusiException("物料【%s】生产版本【%s】信息不存在", partNo, productVersion); + throw new ImppBusiException(String.format("物料【%s】生产版本【%s】信息不存在", partNo, productVersion)); } return mesProductVersion; } @@ -1579,10 +1580,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { private MesProductVersion getMesProductVersion(Map> productVersionMap, String reportPartNo, String productVersion) { Optional optional = Objects.isNull(productVersionMap) || !productVersionMap.containsKey(reportPartNo) ? Optional.empty() : productVersionMap.get(reportPartNo).stream().filter(t -> t.getProductVersion().equals(productVersion)).findFirst(); - if (!optional.isPresent()) { - MesPcnException.throwMesBusiException("零件:【%s】生产版本:【%s】信息不存在", reportPartNo, productVersion); - } - return optional.get(); + return optional.orElse(null); } @Override @@ -1630,8 +1628,11 @@ public class MesWorkOrderService implements IMesWorkOrderService { newMesProductOffLine.setItemPartNo(mesWorkOrderPart.getPartNo()); newMesProductOffLine.setItemPartName(mesWorkOrderPart.getPartName()); newMesProductOffLine.setItemQty(mesWorkOrderPart.getItemQty()); - newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint()); - newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint()); + if (mesProductVersion != null){ + newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint()); + newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint()); + newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode()); + } newMesProductOffLine.setQty(1d); newMesProductOffLine.setReportSn(record.getProductSn()); newMesProductOffLine.setBomVersion(workOrder.getProductVersion()); @@ -1642,7 +1643,6 @@ public class MesWorkOrderService implements IMesWorkOrderService { newMesProductOffLine.setWorkCenterCode(record.getWorkCenterCode()); newMesProductOffLine.setWorkCellCode(record.getWorkCellCode()); newMesProductOffLine.setReportType(record.getReportType()); - newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode()); newMesProductOffLine.setOrganizeCode(model.getOrganizeCode()); newMesProductOffLine.setDescription(record.getCompleteDateTime()); ConvertBean.serviceModelInitialize(newMesProductOffLine, model.getUserName());