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 cbd476c..b13ab76 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 @@ -512,15 +512,12 @@ public class MesWorkOrderService implements IMesWorkOrderService { LOGGER.error(String.format("产线【%s】不存在", productionRecord.getWorkCenterCode())); throw new ImppBusiException(String.format("产线【%s】不存在", productionRecord.getWorkCenterCode())); } - MesWorkOrder mesWorkOrder = getBestWorkOrder(productionRecord, oldMesWorkOrderList, mesWorkCenter); - if (mesWorkOrder == null) { + MesWorkOrder oldMesWorkOrder = getBestWorkOrder(productionRecord, oldMesWorkOrderList, mesWorkCenter); + if (oldMesWorkOrder == null) { LOGGER.error(String.format("未找到匹配的加工单, 条码=%s", productionRecord.getCustSn())); return; //throw new ImppBusiException(String.format("未找到匹配的加工单")); } - // 2024-12-12 报工失败,但set值依然被update了 - MesWorkOrder oldMesWorkOrder = new MesWorkOrder(); - BeanUtils.copyProperties(mesWorkOrder, oldMesWorkOrder); //获取生产版本 MesProductVersion mesProductVersion = getProductVersion(organizeCode, productionRecord.getPartNo(), oldMesWorkOrder.getProductVersion()); @@ -545,24 +542,22 @@ public class MesWorkOrderService implements IMesWorkOrderService { Map propertyMap = new HashMap<>(); LOGGER.info("工单【{}]】报工原数量【{}】", oldMesWorkOrder.getWorkOrderNo(), oldMesWorkOrder.getReportedQty()); - oldMesWorkOrder.setReportedQty(MathOperation.add(MesPcnExtConstWords.ONE, oldMesWorkOrder.getReportedQty())); - propertyMap.put("reportedQty", oldMesWorkOrder.getReportedQty()); + double reportQty = MathOperation.add(MesPcnExtConstWords.ONE, oldMesWorkOrder.getReportedQty()); + propertyMap.put("reportedQty", reportQty); if (StringUtils.isEmpty(productionRecord.getWorkOrderNo())) { - oldMesWorkOrder.setCompleteQty(oldMesWorkOrder.getReportedQty()); double unCompleteQty = MathOperation.sub(oldMesWorkOrder.getQty(), oldMesWorkOrder.getReportedQty()); - oldMesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); - propertyMap.put(MesPcnExtConstWords.COMPLETE_QTY, oldMesWorkOrder.getCompleteQty()); - propertyMap.put(MesPcnExtConstWords.UN_COMPLETE_QTY, oldMesWorkOrder.getUnCompleteQty()); + propertyMap.put(MesPcnExtConstWords.COMPLETE_QTY, reportQty); + propertyMap.put(MesPcnExtConstWords.UN_COMPLETE_QTY, unCompleteQty); } if (StringUtil.isEmpty(productionRecord.getWorkOrderNo())) { //更新工单状态 if (oldMesWorkOrder.getReportedQty() >= oldMesWorkOrder.getQty()) { - oldMesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); + propertyMap.put(MesPcnExtConstWords.WORK_ORDER_STATUS, MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); + } else { - oldMesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); + propertyMap.put(MesPcnExtConstWords.WORK_ORDER_STATUS, oldMesWorkOrder.getWorkOrderStatus()); } - propertyMap.put(MesPcnExtConstWords.WORK_ORDER_STATUS, oldMesWorkOrder.getWorkOrderStatus()); } //保存数据 @@ -585,7 +580,19 @@ public class MesWorkOrderService implements IMesWorkOrderService { LOGGER.info("汇报类型不存在"); return; } - + oldMesWorkOrder.setCompleteQty(reportQty); + if (propertyMap.containsKey("reportedQty")){ + oldMesWorkOrder.setReportedQty(reportQty); + } + if (propertyMap.containsKey(MesPcnExtConstWords.COMPLETE_QTY)){ + oldMesWorkOrder.setCompleteQty(Double.valueOf(propertyMap.get(MesPcnExtConstWords.COMPLETE_QTY).toString())); + } + if (propertyMap.containsKey(MesPcnExtConstWords.UN_COMPLETE_QTY)){ + oldMesWorkOrder.setUnCompleteQty(Double.valueOf(propertyMap.get(MesPcnExtConstWords.UN_COMPLETE_QTY).toString())); + } + if (propertyMap.containsKey(MesPcnExtConstWords.WORK_ORDER_STATUS)){ + oldMesWorkOrder.setWorkOrderStatus(Integer.valueOf(propertyMap.get(MesPcnExtConstWords.WORK_ORDER_STATUS).toString())); + } LOGGER.info("工单【{}】报工后数量【{}】", oldMesWorkOrder.getWorkOrderNo(), oldMesWorkOrder.getReportedQty()); ConvertBean.serviceModelUpdate(oldMesWorkOrder, userName); oldMesWorkOrder.setModifyDatetime((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")).format(new Date())); @@ -609,6 +616,9 @@ public class MesWorkOrderService implements IMesWorkOrderService { propertyValue[index] = innerEntry.getValue(); index ++; } + + + workOrderRepository.updateByProperties(new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, new Object[]{oldMesWorkOrder.getId(), oldMesWorkOrder.getOrganizeCode()}, propertyName, propertyValue); LOGGER.info("修改工单数量完成,工单号【{}】", oldMesWorkOrder.getWorkOrderNo());