From 8d24223198a10fe24b49eb92f8f4f27f3025af0d Mon Sep 17 00:00:00 2001 From: wws <18630710203@163.com> Date: Thu, 14 Sep 2023 15:58:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BD=E5=9D=AF=E8=AE=A2=E5=8D=95=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProWetMaterialPlanDetailMapper.java | 7 + .../impl/ProOrderWorkorderServiceImpl.java | 228 +++++++++++++----- .../plan/ProWetMaterialPlanDetailMapper.xml | 9 + 3 files changed, 180 insertions(+), 64 deletions(-) diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProWetMaterialPlanDetailMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProWetMaterialPlanDetailMapper.java index 94e5102f..7834a1f1 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProWetMaterialPlanDetailMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProWetMaterialPlanDetailMapper.java @@ -109,4 +109,11 @@ public interface ProWetMaterialPlanDetailMapper { * @return */ ProWetMaterialPlan selectProWetMaterialPlanById(String wetMaterialPlanId); + + /** + * 通过订单code查询已经下发的湿料计划详情 + * @param orderCode + * @return + */ + ProWetMaterialPlanDetail selectProWetMaterialPlanDetailByOrderCode(String orderCode); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java index a2a7d590..5469462c 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java @@ -356,30 +356,51 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { @Override @DS("#header.poolName") public AjaxResult getOrderAndWorkInfo(ProOrderWorkorder proOrderWorkorder) { - boolean run = true; - while (run) { - ProOrderWorkorder fatherWorkOrder = proOrderWorkorderMapper.selectWorkOrderByCode(proOrderWorkorder.getParentOrder()); - // 如果存在父工单 - if (fatherWorkOrder != null) { - BeanUtils.copyProperties(fatherWorkOrder, proOrderWorkorder); - } else { - run = false; - } - } - // 通过母订单id查询母订单详情 - ProOrder proOrder = proOrderMapper.selectProOrderById(proOrderWorkorder.getOrderId()); - if (proOrder != null) { - // 递归查询子订单 - recursiveQueryChildOrder(proOrder); - } - // 通过获取到的工单信息获取父工单 - formatProOrderWorkorder(proOrderWorkorder); - Map orderAndWork = new HashMap(); - orderAndWork.put("order", proOrder); - orderAndWork.put("workOrder", proOrderWorkorder); + if (proOrderWorkorder.getProdType().equals("white")) { + // 获取子母订单 + ProOrder childOrder = proOrderMapper.selectProOrderByOrderCode(proOrderWorkorder.getOrderCode()); + ProOrder proOrder = proOrderMapper.selectProOrderByOrderCode(childOrder.getParentOrder()); + // 将子订单放入母订单 + List orderList = new ArrayList<>(); + orderList.add(childOrder); + proOrder.setChildren(orderList); + + // 工单 + ProOrderWorkorder workOrder = proOrderWorkorderMapper.selectProOrderWorkorderByWorkorderId(proOrderWorkorder.getWorkorderId()); + formatProOrderWorkorder(workOrder); + - return success(orderAndWork); + Map orderAndWork = new HashMap(); + orderAndWork.put("order", proOrder); + orderAndWork.put("workOrder", workOrder); + + return success(orderAndWork); + } else { + boolean run = true; + while (run) { + ProOrderWorkorder fatherWorkOrder = proOrderWorkorderMapper.selectWorkOrderByCode(proOrderWorkorder.getParentOrder()); + // 如果存在父工单 + if (fatherWorkOrder != null) { + BeanUtils.copyProperties(fatherWorkOrder, proOrderWorkorder); + } else { + run = false; + } + } + // 通过母订单id查询母订单详情 + ProOrder proOrder = proOrderMapper.selectProOrderById(proOrderWorkorder.getOrderId()); + if (proOrder != null) { + // 递归查询子订单 + recursiveQueryChildOrder(proOrder); + } + // 通过获取到的工单信息获取父工单 + formatProOrderWorkorder(proOrderWorkorder); + Map orderAndWork = new HashMap(); + orderAndWork.put("order", proOrder); + orderAndWork.put("workOrder", proOrderWorkorder); + + return success(orderAndWork); + } } /** @@ -486,34 +507,41 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { } if (checkout) { - // 删除所有工单s下的批次信息 - int i = proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderIds(workorderIds); - // 删除湿料计划 - proWetMaterialPlanDetailMapper.deleteProWetMaterialPlanDetailByWorkId(proWorkOrder.getWorkorderId()); - // 创建订单信息,并将信息copy进去 - ProOrder proOrder = new ProOrder(); - BeanUtils.copyProperties(splitOrderDTO.getProduct(), proOrder); - // 设置换算基数,用于获得换算值 - Long quantity = proOrder.getQuantity(); - // 创建批次表通用对象 - ProOrderWorkorderBatch workBatch = setCommonBatchAttribute(); - boolean run = true; - // 获取单位换算值 - Long conver = 1L; - int index = workOrderList.size(); - while (run) { - // 获得对应工单 - ProOrderWorkorder proOrderWorkorder = workOrderList.get(--index); - // 更新订单 + + // 白坯订单变更逻辑 + if (splitOrderDTO.getProduct().getProdType().equals("white")) { + // 删除所有工单下的批次信息 + int i = proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderIds(workorderIds); + // 删除湿料计划 + proWetMaterialPlanDetailMapper.deleteProWetMaterialPlanDetailByWorkId(proWorkOrder.getWorkorderId()); + // 创建订单信息,将信息copy进去 + ProOrder proOrder = new ProOrder(); + BeanUtils.copyProperties(splitOrderDTO.getProduct(), proOrder); + // 创建批次表通用对象 + ProOrderWorkorderBatch workBatch = setCommonBatchAttribute(); + // 更新母订单信息 + proOrder.setQuantitySplit(proOrder.getQuantitySplit() + splitOrderDTO.getSplitNum()); proOrder.setUpdateBy(SecurityContextHolder.getUserName()); proOrder.setUpdateTime(DateUtils.getNowDate()); - proOrder.setQuantitySplit(proOrder.getQuantitySplit() + Long.valueOf(proOrder.getAtrr1())); + proOrder.setAtrr1(""); + // 更新母订单至数据库 proOrderMapper.updateProOrder(proOrder); - // 设置工单信息 + // 更新子订单 + ProOrder childOrder = new ProOrder(); + BeanUtils.copyProperties(proOrder.getChildren().get(0),childOrder); + childOrder.setAtrr1(""); + childOrder.setQuantitySplit(childOrder.getQuantitySplit() + splitOrderDTO.getSplitNum()); + childOrder.setQuantity(childOrder.getQuantitySplit()); + childOrder.setUpdateBy(SecurityContextHolder.getUserName()); + childOrder.setUpdateTime(DateUtils.getNowDate()); + // 更新子订单至数据库 + proOrderMapper.updateProOrder(childOrder); + + // 工单信息更新 + ProOrderWorkorder proOrderWorkorder = workOrderList.get(0); + proOrderWorkorder.setQuantitySplit(splitOrderDTO.getSplitNum()); proOrderWorkorder.setUpdateBy(SecurityContextHolder.getUserName()); proOrderWorkorder.setUpdateTime(DateUtils.getNowDate()); - // 拆分数量 - proOrderWorkorder.setQuantitySplit(Long.valueOf(proOrder.getAtrr1())); // 2.将工单信息更新至数据库 if (splitOrderDTO.getProdLineCode() != null) { proOrderWorkorder.setProdLineCode(splitOrderDTO.getProdLineCode()); @@ -528,16 +556,12 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { proOrderWorkorder.setRouteCode(splitOrderDTO.getRouteCode()); } // 白坯工单返修-车数 - if (proOrderWorkorder.getProdType().equals("white")) { - int everyNum = (int) Math.ceil(proOrder.getQuantity() / proOrder.getCarNum()); - int carNum = (int) Math.ceil(splitOrderDTO.getSplitNum() / everyNum); - proOrderWorkorder.setCarNum(carNum); + if (splitOrderDTO.getCarNum() != null) { + proOrderWorkorder.setCarNum(splitOrderDTO.getCarNum()); } proOrderWorkorderMapper.updateProOrderWorkorder(proOrderWorkorder); -// System.out.println("这里是workorderCode------------》"+proOrderWorkorder.getWorkorderCode()); - // 生成对应批次表 workBatch.setWorkorderId(proOrderWorkorder.getWorkorderId()); // 生成批次表信息并更新至数据库 @@ -547,7 +571,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { // 生成批次号 workBatch.setBatchCode(batch.getBatchCode()); // 生成批次数量 - workBatch.setBatchQuantity(batch.getBatchQuantity() * conver); + workBatch.setBatchQuantity(batch.getBatchQuantity()); // 更新至数据库 proOrderWorkorderBatchMapper.insertProOrderWorkorderBatch(workBatch); @@ -556,19 +580,95 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { // System.out.println("这里是拆分数量----------->"+workBatch.getBatchQuantity()); } - // 如果存在子节点 - if (proOrder.getChildren().size() > 0) { - ProOrderDTO newProOrder = (ProOrderDTO) proOrder.getChildren().get(0); - // 更新换算值 - conver = (newProOrder.getQuantity() / quantity); - // 将child信息重新赋值给proOrder - BeanUtils.copyProperties(newProOrder, proOrder); - } else { - // 结束循环 - run = false; + return success("变更成功"); + } else { + // 删除所有工单s下的批次信息 + int i = proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderIds(workorderIds); + // 删除湿料计划 + proWetMaterialPlanDetailMapper.deleteProWetMaterialPlanDetailByWorkId(proWorkOrder.getWorkorderId()); + // 创建订单信息,并将信息copy进去 + ProOrder proOrder = new ProOrder(); + BeanUtils.copyProperties(splitOrderDTO.getProduct(), proOrder); + // 设置换算基数,用于获得换算值 + Long quantity = proOrder.getQuantity(); + // 创建批次表通用对象 + ProOrderWorkorderBatch workBatch = setCommonBatchAttribute(); + boolean run = true; + // 获取单位换算值 + Long conver = 1L; + int index = workOrderList.size(); + while (run) { + // 获得对应工单 + ProOrderWorkorder proOrderWorkorder = workOrderList.get(--index); + // 更新订单 + proOrder.setUpdateBy(SecurityContextHolder.getUserName()); + proOrder.setUpdateTime(DateUtils.getNowDate()); + proOrder.setQuantitySplit(proOrder.getQuantitySplit() + Long.valueOf(proOrder.getAtrr1())); + proOrderMapper.updateProOrder(proOrder); + // 设置工单信息 + proOrderWorkorder.setUpdateBy(SecurityContextHolder.getUserName()); + proOrderWorkorder.setUpdateTime(DateUtils.getNowDate()); + // 拆分数量 + proOrderWorkorder.setQuantitySplit(Long.valueOf(proOrder.getAtrr1())); + // 2.将工单信息更新至数据库 + if (splitOrderDTO.getProdLineCode() != null) { + proOrderWorkorder.setProdLineCode(splitOrderDTO.getProdLineCode()); + } + if (splitOrderDTO.getProductDate() != null) { + proOrderWorkorder.setProductDate(splitOrderDTO.getProductDate()); + } + if (splitOrderDTO.getShiftId() != null) { + proOrderWorkorder.setShiftId(splitOrderDTO.getShiftId()); + } + if (splitOrderDTO.getRouteCode() != null) { + proOrderWorkorder.setRouteCode(splitOrderDTO.getRouteCode()); + } + // 白坯工单返修-车数 + if (proOrderWorkorder.getProdType().equals("white")) { + if (splitOrderDTO.getCarNum() != null) { + proOrderWorkorder.setCarNum(splitOrderDTO.getCarNum()); + } + } + + proOrderWorkorderMapper.updateProOrderWorkorder(proOrderWorkorder); + +// System.out.println("这里是workorderCode------------》"+proOrderWorkorder.getWorkorderCode()); + // 生成对应批次表 + workBatch.setWorkorderId(proOrderWorkorder.getWorkorderId()); + + // 生成批次表信息并更新至数据库 + for (Batch batch : splitOrderDTO.getFormFields()) { + // 生成批次id + workBatch.setBatchId(IdUtils.fastSimpleUUID()); + // 生成批次号 + workBatch.setBatchCode(batch.getBatchCode()); + // 生成批次数量 + workBatch.setBatchQuantity(batch.getBatchQuantity() * conver); + // 更新至数据库 + proOrderWorkorderBatchMapper.insertProOrderWorkorderBatch(workBatch); + + // 测试 +// System.out.println("这里是workorderId----------->"+workBatch.getWorkorderId()); +// System.out.println("这里是拆分数量----------->"+workBatch.getBatchQuantity()); + } + + // 如果存在子节点 + if (proOrder.getChildren().size() > 0) { + ProOrderDTO newProOrder = (ProOrderDTO) proOrder.getChildren().get(0); + // 更新换算值 + conver = (newProOrder.getQuantity() / quantity); + // 将child信息重新赋值给proOrder + BeanUtils.copyProperties(newProOrder, proOrder); + } else { + // 结束循环 + run = false; + } } + return success("变更成功"); +// throw new RuntimeException(); } - return success(); + + } @@ -585,7 +685,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { @DS("#header.poolName") public AjaxResult checkWorkOrder(String id) { ProOrderWorkorder proOrderWorkorder = proOrderWorkorderMapper.selectProOrderWorkorderByWorkorderId(id); - if (!(proOrderWorkorder.getStatus().equals("w0") ||proOrderWorkorder.getStatus().equals("w1"))) { + if (!(proOrderWorkorder.getStatus().equals("w0") || proOrderWorkorder.getStatus().equals("w1"))) { return error("工单已生产,不可变更!"); } return success(); diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProWetMaterialPlanDetailMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProWetMaterialPlanDetailMapper.xml index aa9ec214..cb678406 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProWetMaterialPlanDetailMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProWetMaterialPlanDetailMapper.xml @@ -116,6 +116,15 @@ where wet_material_plan_id = #{wetMaterialPlanId} + + insert into pro_wet_material_plan_detail