diff --git a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java index f08392b2..809bfc3f 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java @@ -164,21 +164,49 @@ public class ProOrderWorkorderController extends BaseController { if (ObjectUtils.isEmpty(proOrderWorkorders)) { throw new ServiceException("所查询的工单为空!!"); } + // 划分工单 + List whiteWorkOrder = new ArrayList<>(); + List proWorkOrder = new ArrayList<>(); + for (ProOrderWorkorder data : proOrderWorkorders) { + if (data.getProdType().equals("white")) { + whiteWorkOrder.add(data); + }else { + proWorkOrder.add(data); + } + } + + // 白坯检验逻辑 + for (ProOrderWorkorder white : whiteWorkOrder) { + if (!(white.getStatus().equals("w0") || white.getStatus().equals("w1"))) { + throw new ServiceException("工单已进行生产,不允许删除!"); + } + } + + if (whiteWorkOrder.size() > 0) { + proOrderWorkorderService.deleteWhiteWorkorderByWorkOrder(whiteWorkOrder); + } + + // 成品检验逻辑 ArrayList strings = new ArrayList<>(); - for (ProOrderWorkorder proOrderWorkorder : proOrderWorkorders) { + for (ProOrderWorkorder proOrderWorkorder : proWorkOrder) { String status = proOrderWorkorder.getStatus(); - if (status.equals("w0")) { + if (status.equals("w0") || status.equals("w1")) { strings.add(proOrderWorkorder.getWorkorderId()); } else { - throw new ServiceException("工单已经下发,不能删除!"); + throw new ServiceException("工单已进行生产,不允许删除!"); } // 判断是否含有湿料计划 boolean值(存在为true,不存在为false) - if (proWetMaterialPlanDetailService.selectProWetMaterialPlanDetailByWorkId(proOrderWorkorder.getWorkorderId())) { - throw new ServiceException("工单已创建湿料计划,不能删除!"); - } +// if (proWetMaterialPlanDetailService.selectProWetMaterialPlanDetailByWorkId(proOrderWorkorder.getWorkorderId())) { +// throw new ServiceException("工单已创建湿料计划,不能删除!"); +// } } String[] orderWorkerIds = strings.toArray(new String[0]); - return toAjax(proOrderWorkorderService.deleteProOrderWorkorderByWorkorderIds(orderWorkerIds)); + + // 删除成品工单 + if (proWorkOrder.size() > 0) { + proOrderWorkorderService.deleteProOrderWorkorderByWorkorderIds(orderWorkerIds); + } + return toAjax(1); } /** diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java index 4c6a69dc..8c7de2c9 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java @@ -114,4 +114,10 @@ public interface IProOrderWorkorderService { * @return */ AjaxResult getWorkOrders(String code); + + /** + * 删除白坯工单 + * @param whiteWorkOrder + */ + void deleteWhiteWorkorderByWorkOrder(List whiteWorkOrder); } 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 80804f90..8c11af25 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 @@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONArray; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.common.core.context.SecurityContextHolder; import com.op.common.core.domain.R; +import com.op.common.core.exception.ServiceException; import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.bean.BeanUtils; import com.op.common.core.utils.uuid.IdUtils; @@ -801,6 +802,58 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { return success(reversalWorkOrderList); } + /** + * 删除白坯工单 + * @param whiteWorkOrder + */ + @Override + @DS("#header.poolName") + @Transactional + public void deleteWhiteWorkorderByWorkOrder(List whiteWorkOrder) { + // 检验-湿料计划下发不允许删除 + for (ProOrderWorkorder data : whiteWorkOrder) { + ProWetMaterialPlan plan = proWetMaterialPlanMapper.selectProWetMaterialPlanByWorkId(data.getWorkorderId()); + if (plan != null) { + if (plan.getSyncFlag().equals("Y")) { + throw new ServiceException("工单下湿料计划已下发,不允许删除!"); + } + } + } + + // 删除逻辑 + for (ProOrderWorkorder data : whiteWorkOrder) { + // 删除工单 + proOrderWorkorderMapper.deleteProOrderWorkorderByWorkorderId(data.getWorkorderId()); + // 获得对应订单和母订单 + ProOrder childOrder = proOrderMapper.selectProOrderByOrderCode(data.getOrderCode()); + ProOrder parentOrder = proOrderMapper.selectProOrderByOrderCode(childOrder.getParentOrder()); + // 处理订单信息 + childOrder.setQuantitySplit(childOrder.getQuantitySplit()-data.getQuantitySplit()); + childOrder.setQuantity(childOrder.getQuantity()-data.getQuantitySplit()); + childOrder.setUpdateBy(SecurityContextHolder.getUserName()); + childOrder.setUpdateTime(DateUtils.getNowDate()); + + parentOrder.setQuantity(parentOrder.getQuantity()-data.getQuantitySplit()); + parentOrder.setQuantitySplit(parentOrder.getQuantitySplit()-data.getQuantitySplit()); + parentOrder.setUpdateBy(SecurityContextHolder.getUserName()); + parentOrder.setUpdateTime(DateUtils.getNowDate()); + parentOrder.setStatus("o1"); + + // 更新至数据库 + proOrderMapper.updateProOrder(childOrder); + proOrderMapper.updateProOrder(parentOrder); + // 将级联所有白坯订单状态改为拆分中 + proOrderMapper.updateOrderStatusByOrderCode(parentOrder.getOrderCode()); + + // 删除湿料计划中的湿料详情 + proWetMaterialPlanDetailMapper.deleteProWetMaterialPlanDetailByWorkId(data.getWorkorderId()); + + // 删除对应批次此信息 + proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderId(data.getWorkorderId()); + + } + } + /** * 格式化工单信息(递归处理) * diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderMapper.xml index 3de44404..b57dd11a 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderMapper.xml @@ -295,7 +295,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update pro_order set quantity_split = quantity_split-#{worker.quantitySplit}, - update_time = GETDATE() + update_time = GETDATE(), + status = 'o1' where id = #{worker.orderId}