From 0f1d137aff59afbd0f8ff024e806d9e59553f91b Mon Sep 17 00:00:00 2001 From: wws <18630710203@163.com> Date: Thu, 3 Aug 2023 16:23:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86=E6=A8=A1?= =?UTF-8?q?=E5=9D=97(=E5=AF=BC=E5=85=A5=E9=80=BB=E8=BE=91=E4=BF=AE?= =?UTF-8?q?=E6=94=B9-=E5=B7=B2=E6=9C=89=E8=AE=A2=E5=8D=95=E9=80=BB?= =?UTF-8?q?=E8=BE=91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plan/mapper/ProOrderWorkorderMapper.java | 7 ++ .../service/impl/ProOrderServiceImpl.java | 89 ++++++++++++------- .../mapper/plan/ProOrderWorkorderMapper.xml | 4 + 3 files changed, 67 insertions(+), 33 deletions(-) diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java index 58806a4d..025f3792 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java @@ -111,5 +111,12 @@ public interface ProOrderWorkorderMapper { * @return */ List selectWorkOrderByOrderCode(String orderCode); + + /** + * 通过订单id删除该订单下的所有工单 + * @param id + * @return + */ + int deleteProOrderWorkorderByOrderId(String id); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java index 800bdcda..e2d8f3f8 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java @@ -1,5 +1,6 @@ package com.op.plan.service.impl; +import java.sql.SQLException; import java.util.*; import java.util.stream.Collectors; @@ -30,7 +31,9 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; + import javax.servlet.http.HttpServletRequest; + import static com.op.common.core.web.domain.AjaxResult.error; import static com.op.common.core.web.domain.AjaxResult.success; @@ -218,7 +221,7 @@ public class ProOrderServiceImpl implements IProOrderService { @Override public void shopOrderSync(List proOrderList) { - for (ProOrder proOrder:proOrderList) { + for (ProOrder proOrder : proOrderList) { String shopOrder = proOrder.getOrderCode(); if (StringUtil.isBlank(shopOrder)) { throw new CheckedException("订单号不能为空!"); @@ -238,7 +241,7 @@ public class ProOrderServiceImpl implements IProOrderService { @DS("#header.poolName") public AjaxResult syncSAP() { SapProOrder sapqo = proOrderMapper.getMaxCreatetime(); - if(sapqo == null){ + if (sapqo == null) { sapqo.setCreateTime(DateUtils.getNowDate()); } //获取当前所选工厂 @@ -246,35 +249,36 @@ public class ProOrderServiceImpl implements IProOrderService { String key = "#header.poolName"; sapqo.setFactoryCode(request.getHeader(key.substring(8))); - R> rSapProOrder = remoteSapService.shopOrderSync(sapqo); + R> rSapProOrder = remoteSapService.shopOrderSync(sapqo); List newOrders = rSapProOrder.getData(); ProOrder proOrder = null; - for(SapProOrder sapProOrder:newOrders){ + for (SapProOrder sapProOrder : newOrders) { //工单下达后整个订单就被锁定//订单存在就更新,不存在就插入 proOrder = new ProOrder(); BeanUtils.copyProperties(sapProOrder, proOrder); //pro_order_workorder List orderExit = proOrderMapper.selectProOrderList(proOrder); - if(CollectionUtils.isEmpty(orderExit)){//不存在就插入 + if (CollectionUtils.isEmpty(orderExit)) {//不存在就插入 proOrderMapper.insertProOrder(proOrder); - }else if("w0".equals(orderExit.get(0).getStatus())){ + } else if ("w0".equals(orderExit.get(0).getStatus())) { //如果工单没下达,则更新pro_order proOrderMapper.updateProOrder(proOrder); List orderCodes = this.getListByPCode(proOrder); - if(!CollectionUtils.isEmpty(orderCodes)){ - List idstr = orderCodes.stream().map(order->order.getId()).collect(Collectors.toList()); - String [] ids = idstr.stream().toArray(String[]::new); + if (!CollectionUtils.isEmpty(orderCodes)) { + List idstr = orderCodes.stream().map(order -> order.getId()).collect(Collectors.toList()); + String[] ids = idstr.stream().toArray(String[]::new); //删除工单pro_order_workorder proOrderWorkorderMapper.deleteProOrderWorkorderByWorkorderIds(ids); //删除批次pro_order_workorder_batch proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderIds(ids); } - }else if("w1".equals(orderExit.get(0).getStatus())){ + } else if ("w1".equals(orderExit.get(0).getStatus())) { //TODO;不更新 } } return success(); } + //父查子递归 public List getListByPCode(ProOrder pOrder) { List codeList = new ArrayList<>(); @@ -299,7 +303,7 @@ public class ProOrderServiceImpl implements IProOrderService { // 数据校验 AjaxResult checkResult = checkImportOrder(orderList); // 如果数据校验成功 - if (checkResult.isSuccess()){ + if (checkResult.isSuccess()) { // 校验数据是否可编辑 boolean checkEdit = false; // 反馈数据 @@ -318,34 +322,53 @@ public class ProOrderServiceImpl implements IProOrderService { } } - if (checkOnly){ - errMsg.append("第"+(i+1)+"行:"+"订单号为:"+orderList.get(i).getOrderCode()+",该订单下工单已下达,不允许更新;"+"
"); - return error(500,errMsg.toString()); - }else { + if (checkOnly) { + errMsg.append("第" + (i + 1) + "行:" + "订单号为:" + orderList.get(i).getOrderCode() + ",该订单下工单已下达,不允许更新;" + "
"); + return error(500, errMsg.toString()); + } else { // 正常插入与更新操作 for (ProOrder order : orderList) { // 查询订单是否存在 ProOrder proOrder = proOrderMapper.selectProOrderByOrderCode(order.getOrderCode()); // 如果存在 - if (proOrder != null){ + if (proOrder != null) { + // 通过订单Code查询该订单下的所有工单id-用于删除批次表 + List childWorkOrderList = proOrderWorkorderMapper.selectWorkOrderByOrderCode(proOrder.getOrderCode()); + // 存在工单 + if (childWorkOrderList.size() > 0){ + // 将获得的工单id封装 + List ids = new ArrayList<>(); + for (ProOrderWorkorder workOrder : childWorkOrderList) { + ids.add(workOrder.getWorkorderId()); + } + String[] workorderIds = (String[])ids.toArray(new String[ids.size()]); + + // 删除所有该订单下的工单 + proOrderWorkorderMapper.deleteProOrderWorkorderByOrderId(proOrder.getId()); + // 删除工单下的所有批次表信息 + proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderIds(workorderIds); + } + + // 更新字段 + order.setStatus("o0"); + order.setQuantitySplit(0L); order.setUpdateBy(SecurityContextHolder.getUserName()); order.setUpdateTime(DateUtils.getNowDate()); // 通过订单号code更新订单信息 proOrderMapper.updateProOrderByOrderCode(order); - }else { + } else { // 不存在则创建 order.setId(IdUtils.fastSimpleUUID()); order.setOrderType(order.getProdType()); - System.out.println(order); + order.setParentOrder("0"); proOrderMapper.insertProOrder(order); } } - return success("信息导入成功!"); } } // 如果存在不可编辑信息 - if (checkEdit){ - return error(500,errMsg.toString()); + if (checkEdit) { + return error(500, errMsg.toString()); } return success("信息导入成功"); @@ -628,51 +651,51 @@ public class ProOrderServiceImpl implements IProOrderService { public AjaxResult checkImportOrder(List orderList) { // 传入对象不能为空 - if (orderList.size()==0 || StringUtils.isNull(orderList)){ - return error(500,"导入的订单信息不能为空!信息导入失败!"); + if (orderList.size() == 0 || StringUtils.isNull(orderList)) { + return error(500, "导入的订单信息不能为空!信息导入失败!"); } // 循环遍历校验数据是否为空 for (ProOrder proOrder : orderList) { // 计划工厂 if (proOrder.getPlanFactoryCode().isEmpty() || proOrder.getPlanFactoryCode() == null) { - return error(500,"计划工厂信息不能为空!信息导入失败!"); + return error(500, "计划工厂信息不能为空!信息导入失败!"); } // 订单号 if (proOrder.getOrderCode().isEmpty() || proOrder.getOrderCode() == null) { - return error(500,"订单号不能为空!信息导入失败!"); + return error(500, "订单号不能为空!信息导入失败!"); } // 物料号 if (proOrder.getProdCode().isEmpty() || proOrder.getProdCode() == null) { - return error(500,"物料号不能为空!信息导入失败!"); + return error(500, "物料号不能为空!信息导入失败!"); } // 物料名称 if (proOrder.getProdDesc().isEmpty() || proOrder.getProdDesc() == null) { - return error(500,"物料名称不能为空!信息导入失败!"); + return error(500, "物料名称不能为空!信息导入失败!"); } // 订单数量 if (proOrder.getQuantity() == 0 || proOrder.getProdDesc() == null) { - return error(500,"订单数量不能为0或空!信息导入失败!"); + return error(500, "订单数量不能为0或空!信息导入失败!"); } // 单位 if (proOrder.getUnit().isEmpty() || proOrder.getUnit() == null) { - return error(500,"单位不能为空!信息导入失败!"); + return error(500, "单位不能为空!信息导入失败!"); } // 订单拆分状态 if (proOrder.getStatus().isEmpty() || proOrder.getStatus() == null) { - return error(500,"拆分状态不能为空!信息导入失败!"); + return error(500, "拆分状态不能为空!信息导入失败!"); } // 产品类型 if (proOrder.getProdType().isEmpty() || proOrder.getProdType() == null) { - return error(500,"产品类型不能为空!信息导入失败!"); + return error(500, "产品类型不能为空!信息导入失败!"); } // 计划生产日期 if (proOrder.getPlanProDate() == null || StringUtils.isNull(proOrder.getPlanProDate())) { - return error(500,"计划生产日期不能为空!信息导入失败!"); + return error(500, "计划生产日期不能为空!信息导入失败!"); } // 计划完成日期 if (proOrder.getPlanComplete() == null || StringUtils.isNull(proOrder.getPlanComplete())) { - return error(500,"计划完成日期不能为空!信息导入失败!"); + return error(500, "计划完成日期不能为空!信息导入失败!"); } } diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml index 8e36fc14..203dd245 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml @@ -247,4 +247,8 @@ #{workorderId} + + + delete from pro_order_workorder where order_id = #{id} +