diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java index b9ab72dc9..e0f520c0f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java @@ -33,6 +33,7 @@ public interface ErrorCodeConstants { ErrorCode ORDER_NOT_CANCEL = new ErrorCode(1_001_109_000, "生产单已排单,小板操作无效"); ErrorCode ORDER_CANCEL = new ErrorCode(1_001_109_000, "生产单未作废,还原无效"); ErrorCode ORDER_PLAN_ERROR = new ErrorCode(1_001_109_001, "选中删除对象有已开料板件,请联系管理员修改开料状态后再删除!"); + ErrorCode ORDER_ERROR = new ErrorCode(1_001_109_002, "当前生产单柜体,房间已全部删除!"); // ========== 生产单 TODO 补充编号 ========== ErrorCode MODULE_NOT_EXISTS = new ErrorCode(1_001_110_000, "模块不存在"); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java index ebc53ac3e..5f36ee97d 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java @@ -227,6 +227,16 @@ public interface PlateMapper extends BaseMapperX { } + + default List selectPlateIsOptimized(Long orderId, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(PlateDO::getOrganId,organId) + .eq(PlateDO::getDeleted,false) + .eqIfPresent(PlateDO::getOrderId,orderId) + .eq(PlateDO::getIsOptimized,true)); + + } + // List selectTestSQL(@Param("sql") String sql); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index ac1463554..3a8fbb9d8 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -60,6 +60,7 @@ import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO.OrderX import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XmlTypeRealize; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -259,7 +260,7 @@ public class OrderServiceImpl implements OrderService { @Transactional(rollbackFor = Exception.class) public void updateDeleteBody(Long orderId, Set roomIds, Long bodyId, Integer status) { // 要删除传1,还原传0 // 判断生产单的状态和生产单柜体对应的板擦是否已开料 - List planIds = validateOrderStatus(orderId, roomIds, bodyId, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()); + List planIds = validateOrderStatus(orderId, roomIds, bodyId, getUserOrganId()); List bodyIds = new ArrayList<>(); Integer index = status == 1 ? 0 : 1; @@ -348,7 +349,7 @@ public class OrderServiceImpl implements OrderService { // 生产单柜体数量判断 - if (orderBodyMapper.selectCountByOrderId(orderId, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()) == 0) { + if (orderBodyMapper.selectCountByOrderId(orderId, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()) == 0 ) { orderMapper.updateOrderStatus(orderId, OrderStatusEnum.EMPTY.getStatus(), getUserOrganId()); }else { orderMapper.updateOrderStatus(orderId, OrderStatusEnum.NEW_ORDER.getStatus(), getUserOrganId()); @@ -993,15 +994,20 @@ public class OrderServiceImpl implements OrderService { } // 判断生产单状态是否符合(如果已开料,不允许删除) - private List validateOrderStatus(Long orderId,Set roomIds, Long bodyId, Long organId, Integer status) { + private List validateOrderStatus(Long orderId,Set roomIds, Long bodyId, Long organId) { // 校验存在 OrderDO orderDO = orderMapper.selectOrderOne(orderId, organId); if (orderDO == null) throw exception(ORDER_NOT_EXISTS); + + if (ObjectUtils.isEmpty(roomIds) && ObjectUtils.isEmpty(bodyId)) { + throw exception(ORDER_ERROR); + } + // 判断小板是否已开料,已开料不允许删除 List planIds = goodsMapper.selectPlanOrderList(orderId, roomIds, bodyId, organId); - if(!planIds.isEmpty() && status.equals(1)) { + if(!planIds.isEmpty()) { List planDOS = planMapper.selectPlanStatus(planIds, organId); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java index 04866b571..535cc96a0 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java @@ -337,34 +337,31 @@ public class PlanServiceImpl implements PlanService { remainPlateMapper.deletePlanRemainPlate(ids,getUserOrganId()); + List goodsIdList = goodsMapper.selectPlanGoodsListByPlanIdList(orderIds,ids, getUserOrganId()).stream().map(GoodsDO::getId).toList(); - // 排单对应的自增板的删除 todo 目前值解决了非混单的情况 - List boardModelDOS = buildBoardByPlanIds(ids, ORDER_REMAIN_PLATE_MODEL, ids.size()); - if(!boardModelDOS.isEmpty()) { + if(!goodsIdList.isEmpty()) { + // 修改删除的大板对应的小板为未优化 + plateMapper.updateNoPlateOptimized(orderIds, goodsIdList, getUserOrganId()); - - List goodsIdList = goodsMapper.selectPlanGoodsListByPlanIdList(orderIds,ids, getUserOrganId()).stream().map(GoodsDO::getId).toList(); - - if(!goodsIdList.isEmpty()) { - // 修改删除的大板对应的小板为未优化 - plateMapper.updateNoPlateOptimized(orderIds, goodsIdList, getUserOrganId()); - } - - List plateDOS = plateMapper.selectPlateIdList(orderIds,goodsIdList, getUserOrganId()); - if(!plateDOS.isEmpty()) { + List plateDOS = plateMapper.selectPlateIdList(orderIds, goodsIdList, getUserOrganId()); + if (!plateDOS.isEmpty()) { List plateIds = plateDOS.stream().map(PlateDO::getId).toList(); plateMapper.deleteBatchIds(plateIds); orderItemMapper.delete(new LambdaQueryWrapperX() - .eq(OrderItemDO::getOrganId,getUserOrganId()) - .in(OrderItemDO::getOrderId,orderIds) + .eq(OrderItemDO::getOrganId, getUserOrganId()) + .in(OrderItemDO::getOrderId, orderIds) .in(OrderItemDO::getPlateId, plateIds)); } + } + // 排单对应的自增板的删除 todo 目前值解决了非混单的情况 + List boardModelDOS = buildBoardByPlanIds(ids, ORDER_REMAIN_PLATE_MODEL, ids.size()); + if(!boardModelDOS.isEmpty()) { // 删除排单对应的优化生产数据 deleteByPlanId(ids, ORDER_REMAIN_PLATE_MODEL); @@ -378,7 +375,7 @@ public class PlanServiceImpl implements PlanService { List diff; // 根据生产单ID查询ES的优化数据 - List optimizeBoardModelDOS = optimizePlanService.buildBoardByOrderIds(orderIds, ORDER_REMAIN_PLATE_MODEL, 999); + List optimizeBoardModelDOS = optimizePlanService.buildBoardByOrderIds(orderIds, ORDER_REMAIN_PLATE_MODEL, 100); if(optimizeBoardModelDOS.isEmpty()){