diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java index a104748e9..0535b54f2 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java @@ -19,7 +19,6 @@ import org.apache.ibatis.annotations.Param; import java.util.Collection; import java.util.List; -import java.util.Set; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; @@ -169,9 +168,6 @@ public interface GoodsMapper extends BaseMapperX { List selectNoPlanRoomBody(@Param("orderIds") List orderIds, @Param("organId") Long organId); - - List selectPlanOrderList(@Param("orderId") Long orderId,@Param("roomIds") Set roomIds, @Param("bodyId") Long bodyId,@Param("organId") Long organId); - List selectPlanPlateList(@Param("planId") Long planId,@Param("organId") Long organId); List selectPlanBodyIds(@Param("planId") Long planId,@Param("organId") Long organId); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java index fe7ea96de..08869f1b6 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java @@ -290,7 +290,7 @@ public interface OrderMapper extends BaseMapperX { IPage selectFilterGoodsPlatePage(@Param("page") IPage page,@Param(Constants.WRAPPER) QueryWrapperX queryWrapperX); - Long selectNoPlanOrderPlateCount(@Param(Constants.WRAPPER) Wrapper wrapper); + List selectNoPlanOrderPlateCount(@Param(Constants.WRAPPER) Wrapper wrapper); List selectNoPlanOrderPlateList(@Param(Constants.WRAPPER) Wrapper wrapper,@Param("pageNo") Integer pageNo,@Param("pageSize") Integer pageSize); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java index 70e4fdad0..dc7cfae0a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java @@ -131,4 +131,6 @@ public interface OrderItemMapper extends BaseMapperX { Integer countPartsNotId(@Param("orderId") Long orderId, @Param("bodyId") Set bodyIds, @Param("goodsId") Long partsId, @Param("organId") Long organId, @Param("deleted") Integer deleted); + + List selectOrderPlanList(@Param("orderId") Long orderId,@Param("roomIds") Set roomIds, @Param("bodyId") Long bodyId,@Param("organId") Long organId); } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/planitem/PlanItemMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/planitem/PlanItemMapper.java index 120cdeaa6..38c504871 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/planitem/PlanItemMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/planitem/PlanItemMapper.java @@ -9,6 +9,7 @@ import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.controller.admin.plate.vo.OrderPlateIds; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO; +import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -61,5 +62,6 @@ public interface PlanItemMapper extends BaseMapperX { } + List selectOrderPlanPlateListByPlanId(@Param("planId") Long planId, @Param("organId") Long organId); } \ No newline at end of file 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 19dc06556..a94d46fe2 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 @@ -269,16 +269,16 @@ public interface PlateMapper extends BaseMapperX { } - default List selectIsOptimizedPlate(List orderId,List ids, Long organId) { - return selectList(new LambdaQueryWrapperX() - .eq(PlateDO::getOrganId,organId) - .eq(PlateDO::getDeleted,false) - .inIfPresent(PlateDO::getOrderId,orderId) - .inIfPresent(PlateDO::getGoodsId,ids) - .eq(PlateDO::getIsOptimized,true) - .select(PlateDO::getId,PlateDO::getId)); - - } +// default List selectIsOptimizedPlate(List orderId,List ids,List plateIds, Long organId) { +// return selectList(new LambdaQueryWrapperX() +// .eq(PlateDO::getOrganId,organId) +// .eq(PlateDO::getDeleted,false) +// .inIfPresent(PlateDO::getOrderId,orderId) +// .inIfPresent(PlateDO::getGoodsId,ids) +// .eq(PlateDO::getIsOptimized,true) +// .select(PlateDO::getId,PlateDO::getId)); +// +// } default List selectPlateIsCuttingStatus(List orderIds,Long organId) { diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java index 822bd1b25..f3d0072cc 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java @@ -41,7 +41,6 @@ import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderPlateModel; import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; -import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO; import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper; @@ -63,6 +62,7 @@ import com.cf.imes.module.system.api.systemconfig.SystemConfigApi; import com.cf.imes.module.system.api.systemconfig.dto.ProcessSchemeDTO; import com.fasterxml.jackson.databind.JsonNode; import lombok.extern.slf4j.Slf4j; +import org.springframework.aop.framework.AopContext; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -448,84 +448,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { Long goodsNum = updatePlanOptimizeData(remainBoardInfos, optimizeBoardModelDO, orderIds, goodsIds, goodsNo, cutedType); - if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){ + // 根据开料状态修改排单和生产单的状态 + OptimizePlanServiceImpl o = (OptimizePlanServiceImpl) AopContext.currentProxy(); + o.updateOrderAndPlanByCutStatus(planDO,goodsNum,cutedType,orderIds,boardCount); - planDO.setStatus(PlanStatusEnum.OPENING.getStatus()); - planDO.setProduceTime(null); - - if(goodsNum.equals(0L)){ - planDO.setStatus(PlanStatusEnum.NOCUTTING.getStatus()); - } - - planMapper.updateById(planDO); - - List plateDOS = plateMapper.selectPlateIsCuttingStatus(orderIds, getUserOrganId()); - List orderIdList = plateDOS.stream().map(PlateDO::getOrderId).distinct().toList(); - - orderIds.removeAll(orderIdList); - - if(CollUtil.isNotEmpty(orderIds)){ - - List orderDOS = orderMapper.selectBatchIds(orderIds); - AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR); - - orderDOS.forEach(f->f.setStatus(OrderStatusEnum.SORTED.getStatus())); - orderMapper.updateBatch(orderDOS); - } - - return; - - } - - - - if(OrderPlateCutStatusEnum.OPENING.getStatus().equals(cutedType)){ - - planDO.setStatus(PlanStatusEnum.OPENING.getStatus()); - - List orderDOS = orderMapper.selectBatchIds(orderIds); - AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR); - - orderDOS.forEach(f->f.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus())); - - planMapper.updateById(planDO); - orderMapper.updateBatch(orderDOS); - return; - - } - - - if(OrderPlateCutStatusEnum.OPENED.getStatus().equals(cutedType)){ - - List plateDOList = plateMapper.selectNoCutPlateByPlateId(orderIds, getUserOrganId()); - - List orderIdList = plateDOList.stream().map(PlateDO::getOrderId).distinct().toList(); - - orderIds.removeAll(orderIdList); - - if(CollUtil.isNotEmpty(orderIds)){ - - // 查询生产单的打包状态是否为已打包 - List orderDOS = orderMapper.selectOrderPackList(orderIds, getUserOrganId()); - if (CollUtil.isNotEmpty(orderDOS)) { - orderDOS.forEach(f -> { - f.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus()); - f.setFinishTime(LocalDateTime.now()); - }); - - orderMapper.updateBatch(orderDOS); - } - } - - if(goodsNum.equals(Long.valueOf(boardCount))) { - - planDO.setStatus(PlanStatusEnum.OPENED.getStatus()); - planDO.setProduceTime(LocalDateTime.now()); - - planMapper.updateById(planDO); - } - - } } @@ -613,20 +539,20 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { // 查询生产单对应的包裹信息 List printOrderPackReqVOS = plateMapper.selectOrderPackList(orderId,getUserOrganId()); - // 统计每个订单的包装数量 - printOrderPackReqVOS - .stream() - .filter(f->f - .getOrderId().equals(orderId)) - .forEach(f->f.setPackNum(printOrderPackReqVOS.stream().filter(e -> e.getOrderId().equals(orderId)).map(PrintOrderPackReqVO::getPackId).toList().size())); - + if(CollUtil.isNotEmpty(printOrderPackReqVOS)) { + // 统计每个订单的包装数量 + printOrderPackReqVOS + .stream() + .filter(f -> f + .getOrderId().equals(orderId)) + .forEach(f -> f.setPackNum(printOrderPackReqVOS.stream().filter(e -> e.getOrderId().equals(orderId)).map(PrintOrderPackReqVO::getPackId).toList().size())); + } return OrderSource.builder() .orderList(Collections.singletonList(orderDO)) .goodsList(goodsDOS) .plateList(plateDOS) .plateModels(orderModelDOS) -// .optimizeBoardModelDOS(optimizeBoardModelDOS) .orderPartsRespVOS(printOrderPartsRespVOS) .orderPartsRemarks(orderPartsRemarks) .orderPackReqVOS(printOrderPackReqVOS) @@ -747,10 +673,20 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { Long planId = boardModelDO.getPlanId(); + List plateDOS = planItemMapper.selectOrderPlanPlateListByPlanId(planId,getUserOrganId()); + + AssertUtils.notEmpty(plateDOS,THIS_PLAN_PLATE_DATA_ERROR); + + plateDOS.forEach(f->{ + f.setIsOptimized(true); + }); + + plateMapper.updateBatch(plateDOS); + List optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(), planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); // 删除原来的优化信息 - if(!optimizeBoardModelDOS.isEmpty()){ + if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){ esUtils.deleteEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(),planId,ORDER_OPTIMIZE_PLATE_MODEL); } @@ -778,6 +714,8 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { PlanDO planDO = planMapper.selectById(planId); + AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS); + // 如果方案组ID不相等,就删除旧的方案组信息,再保存新的加工方案组ID if(!planDO.getProcessId().equals(processId)){ planMapper.updateById(planDO.setProcessId(processId)); @@ -785,15 +723,16 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL); - List orderIds = JSON.parseArray(planDO.getOrderNos()).toJavaList(Long.class).stream().distinct().toList(); - List planItemDOS = planItemMapper.selectPlanPlateList(Collections.singletonList(planId), orderIds, getUserOrganId()); + List plateDOS = planItemMapper.selectOrderPlanPlateListByPlanId(planId,getUserOrganId()); - List ids = planItemDOS.stream().map(PlanItemDO::getGoodsId).distinct().toList(); + AssertUtils.notEmpty(plateDOS,THIS_PLAN_PLATE_DATA_ERROR); - List plateIds = planItemDOS.stream().map(PlanItemDO::getPlateId).toList(); + plateDOS.forEach(f->{ + f.setIsOptimized(true); + }); - plateMapper.updatePlateIsOptimized(orderIds,ids,plateIds,getUserOrganId()); + plateMapper.updateBatch(plateDOS); // 不能加非空判断,因为方案组里可能没有优化信息 @@ -934,9 +873,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { List orderDOS = orderMapper.selectBatchIds(orderIds); + AssertUtils.notEmpty(orderDOS,THIS_ORDER_PLATE_DATA_ERROR); List plateDetailRespVOS = plateMapper.selectNoPlanPlate(orderIds,getUserOrganId()); + AssertUtils.notEmpty(plateDetailRespVOS,ORDER_PLATE_ERROR); for (PlateDetailRespVO plateDetailsRespVO : plateDetailRespVOS) { StringBuilder name = new StringBuilder(); @@ -961,6 +902,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { List orderModelDOS = esUtils.getEsDocument("plateId", plateIds, orderModelSize, OptimizePlanService.ORDER_PLATE_MODEL, OrderModelDO.class); + AssertUtils.notEmpty(plateDetailRespVOS,ORDER_PLATE_MODEL_DATE_ERROR); return OrderSource.builder() .orderList(orderDOS) @@ -1550,5 +1492,93 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } + @Transactional(rollbackFor = Exception.class) + public void updateOrderAndPlanByCutStatus(PlanDO planDO,Long goodsNum,Integer cutedType,List orderIds,Integer boardCount){ + + + if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){ + + planDO.setStatus(PlanStatusEnum.OPENING.getStatus()); + planDO.setProduceTime(null); + + if(goodsNum.equals(0L)){ + planDO.setStatus(PlanStatusEnum.NOCUTTING.getStatus()); + } + + planMapper.updateById(planDO); + + List plateDOS = plateMapper.selectPlateIsCuttingStatus(orderIds, getUserOrganId()); + List orderIdList = plateDOS.stream().map(PlateDO::getOrderId).distinct().toList(); + + orderIds.removeAll(orderIdList); + + if(CollUtil.isNotEmpty(orderIds)){ + + List orderDOS = orderMapper.selectBatchIds(orderIds); + AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR); + + orderDOS.forEach(f->f.setStatus(OrderStatusEnum.SORTED.getStatus())); + orderMapper.updateBatch(orderDOS); + } + + return; + + } + + + + if(OrderPlateCutStatusEnum.OPENING.getStatus().equals(cutedType)){ + + planDO.setStatus(PlanStatusEnum.OPENING.getStatus()); + + List orderDOS = orderMapper.selectBatchIds(orderIds); + AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR); + + orderDOS.forEach(f->f.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus())); + + planMapper.updateById(planDO); + orderMapper.updateBatch(orderDOS); + return; + + } + + + if(OrderPlateCutStatusEnum.OPENED.getStatus().equals(cutedType)){ + + List plateDOList = plateMapper.selectNoCutPlateByPlateId(orderIds, getUserOrganId()); + + List orderIdList = plateDOList.stream().map(PlateDO::getOrderId).distinct().toList(); + + orderIds.removeAll(orderIdList); + + if(CollUtil.isNotEmpty(orderIds)){ + + // 查询生产单的打包状态是否为已打包 + List orderDOS = orderMapper.selectOrderPackList(orderIds, getUserOrganId()); + if (CollUtil.isNotEmpty(orderDOS)) { + orderDOS.forEach(f -> { + f.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus()); + f.setFinishTime(LocalDateTime.now()); + }); + + orderMapper.updateBatch(orderDOS); + } + } + + if(goodsNum.equals(Long.valueOf(boardCount))) { + + planDO.setStatus(PlanStatusEnum.OPENED.getStatus()); + planDO.setProduceTime(LocalDateTime.now()); + + planMapper.updateById(planDO); + } + + } + + + + + } + } 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 c5fbb6832..3a5eb8029 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 @@ -1071,7 +1071,8 @@ public class OrderServiceImpl implements OrderService { } // 判断小板是否已开料,已开料不允许删除 - List planIds = goodsMapper.selectPlanOrderList(orderId, roomIds, bodyId, organId); + List planIds = orderItemMapper.selectOrderPlanList(orderId,roomIds,bodyId,organId); + 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 7e5211108..ffc5b217f 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 @@ -46,6 +46,7 @@ import com.cf.imes.module.system.api.systemconfig.SystemConfigApi; import com.cf.imes.module.system.api.systemconfig.dto.SystemConfigRespDTO; import com.fasterxml.jackson.core.type.TypeReference; import lombok.extern.slf4j.Slf4j; +import org.springframework.aop.framework.AopContext; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; @@ -273,9 +274,11 @@ public class PlanServiceImpl implements PlanService { } - List plateDOS = plateMapper.selectIsOptimizedPlate(orderIds, ids, getUserOrganId()); + List plateDOS = plateMapper.selectBatchIds(plateIds); - AssertUtils.empty(plateDOS,CREAT_PLAN_PLATE_DATA_ERROR); + List plateDOList = plateDOS.stream().filter(f -> f.getIsOptimized().equals(true)).toList(); + + AssertUtils.empty(plateDOList,CREAT_PLAN_PLATE_DATA_ERROR); List orderDOList = orderMapper.selectBatchIds(orderIds); @@ -291,9 +294,9 @@ public class PlanServiceImpl implements PlanService { planMapper.insertBatch(planDOS); - plateMapper.updatePlateIsOptimized(orderIds, ids, plateIds, getUserOrganId()); +// plateMapper.updatePlateIsOptimized(orderIds, ids, plateIds, getUserOrganId()); + - // 后面还需要测试一下这个新增的数量 planItemMapper.insertBatch(planItemDOS, planItemDOS.size()); @@ -337,7 +340,8 @@ public class PlanServiceImpl implements PlanService { if(CollUtil.isNotEmpty(deleteOrderPlateIds)){ - deletePlanPlate(deleteOrderPlateIds); + PlanServiceImpl p = (PlanServiceImpl) AopContext.currentProxy(); + p.deletePlanPlate(deleteOrderPlateIds); return; } @@ -348,7 +352,8 @@ public class PlanServiceImpl implements PlanService { if(CollUtil.isNotEmpty(insertOrderPlateIds)){ - insertPlanPlate(insertOrderPlateIds); + PlanServiceImpl p = (PlanServiceImpl) AopContext.currentProxy(); + p.insertPlanPlate(insertOrderPlateIds); } @@ -1046,7 +1051,8 @@ public class PlanServiceImpl implements PlanService { - private void deletePlanPlate(List deleteOrderPlateIds) { + @Transactional(rollbackFor = Exception.class) + public void deletePlanPlate(List deleteOrderPlateIds) { List deletePlanIds = deleteOrderPlateIds.stream().map(OrderPlateIds::getPlanId).distinct().toList(); @@ -1202,8 +1208,8 @@ public class PlanServiceImpl implements PlanService { } - - private void insertPlanPlate(List insertOrderPlateIds){ + @Transactional(rollbackFor = Exception.class) + public void insertPlanPlate(List insertOrderPlateIds){ // 后面还需要看看是否需要进行混单的判断 List insertPlanIds = insertOrderPlateIds.stream().map(OrderPlateIds::getPlanId).distinct().toList(); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java index c61a92b8d..af57ff25e 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java @@ -322,7 +322,7 @@ public class PlateServiceImpl implements PlateService { .eqIfPresent("op.is_row_hole",pageReqVO.getIsRowHole()) .orderByDesc("o.id"); - Long plateCount = orderMapper.selectNoPlanOrderPlateCount(queryWrapperX); + List plateCount = orderMapper.selectNoPlanOrderPlateCount(queryWrapperX); List plateResLists = orderMapper.selectNoPlanOrderPlateList(queryWrapperX,pageNo,pageReqVO.getPageSize()); @@ -332,11 +332,11 @@ public class PlateServiceImpl implements PlateService { PlateModelDetailRespVO.builder() - .plateResLists(new PageResult<>(plateResLists,plateCount)) + .plateResLists(new PageResult<>(plateResLists, (long) plateCount.size())) .plateModels(orderModelDOS) .build(); - return new PageResult<>(plateResLists,plateCount); + return new PageResult<>(plateResLists, (long) plateCount.size()); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml index 8e8bee140..bf2f54f11 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml @@ -321,35 +321,6 @@ - - - + + + + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/planitem/PlanItemMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/planitem/PlanItemMapper.xml index d5784e408..c69807d49 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/planitem/PlanItemMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/planitem/PlanItemMapper.xml @@ -382,4 +382,21 @@ + + + \ No newline at end of file diff --git a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/api/systemconfig/dto/ProcessSchemeDTO.java b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/api/systemconfig/dto/ProcessSchemeDTO.java index d8626db1b..c41962cb8 100644 --- a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/api/systemconfig/dto/ProcessSchemeDTO.java +++ b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/api/systemconfig/dto/ProcessSchemeDTO.java @@ -63,14 +63,27 @@ public class ProcessSchemeDTO implements Serializable { @Schema(description = "解析器配置-机台的配置", requiredMode = Schema.RequiredMode.REQUIRED) private String analyzerConfigSetting; - - @Schema(description = "标签的配置", requiredMode = Schema.RequiredMode.REQUIRED) - private String labelSetting; - - @Schema(description = "机台类型", requiredMode = Schema.RequiredMode.REQUIRED) private Integer machineType; + @Schema(description = "标签ID", requiredMode = Schema.RequiredMode.REQUIRED) + private Long label; + + @Schema(description = "标签的配置", requiredMode = Schema.RequiredMode.REQUIRED) + private String labelSetting; + + @Schema(description = "标签类型", requiredMode = Schema.RequiredMode.REQUIRED) + private String labelType; + + @Schema(description = "标签高", requiredMode = Schema.RequiredMode.REQUIRED) + private Integer labelHeight; + + @Schema(description = "标签宽", requiredMode = Schema.RequiredMode.REQUIRED) + private Integer labelWidth; + + + + } diff --git a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java index 557ca002a..8ab34834a 100644 --- a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java +++ b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java @@ -308,8 +308,8 @@ public class ErrorCodeConstants { public static final ErrorCode ORDER_PLAN_OPTIMIZE_ERROR = new ErrorCode(1_002_041_005, "当前排单对应的优化数据为空,请重新进行优化"); public static final ErrorCode ORDER_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_002_041_006, "生产单对应的板材造型数据为空,请重新导入生产单"); public static final ErrorCode ORDER_PLAN_PLATE_ERROR = new ErrorCode(1_002_041_007, "当前排单对应的板材数据有异常,请查看板材信息或联系客服"); - public static final ErrorCode ORDER_PLAN_ERROR = new ErrorCode(1_002_041_008, "当前排单对应的生产单数据为空,请重新创建排单"); - public static final ErrorCode ORDER_PLAN_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_002_041_009, "当前排单对应的板材造型数据为空,请检查板材信息或者联系客服"); + public static final ErrorCode ORDER_PLAN_ERROR = new ErrorCode(1_002_041_008, "当前排单对应的生产单数据为空,请删掉排单并重新创建排单"); + public static final ErrorCode ORDER_PLAN_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_002_041_009, "当前排单对应的板材造型数据为空,请重新进行排单或重新导入生产单"); public static final ErrorCode ORDER_GOODS_DATA_ERROR = new ErrorCode(1_002_041_010, "当前大板数据异常,请检查大板信息或者联系客服"); public static final ErrorCode ORDER_PACK_DATA_NULL_ERROR = new ErrorCode(1_002_041_011, "当前包裹数据为空,请重新查看包裹数据或联系客服"); public static final ErrorCode ORDER_BODY_DATA_ERROR = new ErrorCode(1_002_041_012, "当前柜体对应的板材数据为空,无法删除"); @@ -341,7 +341,7 @@ public class ErrorCodeConstants { public static final ErrorCode PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_035, "当前排单没有选择板材数据,请进行选择"); public static final ErrorCode DELETE_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_036, "当前删除的小板信息有误,请检查小板是否存在或重新创建排单"); public static final ErrorCode PLAN_PLATE_OPTIMIZE_DATA_ERROR = new ErrorCode(1_002_041_037, "当前排单对应的优化数据异常,请重新进行优化"); - public static final ErrorCode THIS_ORDER_PLATE_DATA_ERROR = new ErrorCode(1_002_041_038, "当前选择的生产单数据为空,请检查生产单信息或稍后重试"); + public static final ErrorCode THIS_ORDER_PLATE_DATA_ERROR = new ErrorCode(1_002_041_038, "当前选择的生产单数据为空,请检查生产单信息或者重新导入生产单"); public static final ErrorCode THIS_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_039, "当前排单对应的板材数据为空,请重新进行排单或检查生产单对应的板材信息"); @@ -385,4 +385,5 @@ public class ErrorCodeConstants { public static final ErrorCode SYSTEM_PROCESS_SCHEME_CONFIG_DATA_ERROR = new ErrorCode(1_002_040_016, "加工方案组的:{} 为空,请检查配置信息"); public static final ErrorCode SYSTEM_PROCESS_SCHEME_CONFIG_FIELD_ERROR = new ErrorCode(1_002_040_017, "当前方案组的配置异常,请重新配置"); public static final ErrorCode SYSTEM_PROCESS_SCHEME_CONFIG_IS_PLAN = new ErrorCode(1_002_040_018, "当前方案组已在排单中使用,无法删除"); + public static final ErrorCode SYSTEM_PROCESS_SCHEME_CONFIG_MACHINE_LABEL = new ErrorCode(1_002_040_019, "当前方案组对应的解析器的机台的标签数据为空,请检查机台的标签配置信息"); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApiImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApiImpl.java index ae21e8ccf..d40790c23 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApiImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApiImpl.java @@ -114,6 +114,7 @@ public class SystemConfigApiImpl implements SystemConfigApi { List schemeDTOS = BeanUtils.toBean(processSchemeConfigs, ProcessSchemeDTO.class); + // 配置ID查询和数据校验 List processLineConfigIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getProcessLineConfig).distinct().toList(); checkValueIsNotEmpty(processLineConfigIds,"加工分线"); @@ -127,19 +128,30 @@ public class SystemConfigApiImpl implements SystemConfigApi { checkValueIsNotEmpty(analyzerIds,"解析器"); + // 配置查询和数据校验 List processLineConfigList = systemConfigMapper.selectBatchIds(processLineConfigIds); + checkValueIsNotEmpty(processLineConfigList,"加工分线"); + List optimizationConfigList = systemConfigMapper.selectBatchIds(optimizationConfigIds); + checkValueIsNotEmpty(optimizationConfigList,"优化数据配置"); + List analyzerList = machineMapper.selectBatchIds(analyzerIds); + checkValueIsNotEmpty(analyzerList,"解析器"); + + // 标签ID和配置查询和数据校验 List labelIds = analyzerList.stream().map(MachineDO::getLabelId).distinct().toList(); + AssertUtils.notEmpty(labelIds,SYSTEM_PROCESS_SCHEME_CONFIG_MACHINE_LABEL); List labelDOS = labelMapper.selectBatchIds(labelIds); + AssertUtils.notEmpty(labelDOS,SYSTEM_PROCESS_SCHEME_CONFIG_MACHINE_LABEL); + // 匹配对应数据 schemeDTOS.forEach(f->{ f.setProcessLineConfigName(processLineConfigList.stream() @@ -147,35 +159,39 @@ public class SystemConfigApiImpl implements SystemConfigApi { .map(SystemConfigDO::getName) .toList().get(0) ); - f.setProcessLineConfigSetting(toJsonString( + f.setProcessLineConfigSetting( processLineConfigList.stream() .filter(p->f.getProcessLineConfig().equals(p.getId())) .map(SystemConfigDO::getSetting) .toList().get(0) - )); - - + ); f.setOptimizationConfigName(processLineConfigList.stream() .filter(p->f.getProcessLineConfig().equals(p.getId())) .map(SystemConfigDO::getName) .toList().get(0) ); - f.setOptimizationConfigSetting(toJsonString( + f.setOptimizationConfigSetting( optimizationConfigList.stream() .filter(p->f.getOptimizationConfig().equals(p.getId())) .map(SystemConfigDO::getSetting) .toList().get(0) - )); + ); MachineDO machineDO = analyzerList.stream().filter(p -> f.getAnalyzer().equals(p.getId())).toList().get(0); - f.setAnalyzerConfigName(machineDO.getName()); - f.setAnalyzerConfigSetting(toJsonString(unzipString(machineDO.getSetting()))); + f.setAnalyzerConfigSetting(unzipString(machineDO.getSetting())); f.setMachineType(machineDO.getMachineType()); + LabelDO labelDO = labelDOS.stream().filter(l -> machineDO.getLabelId().equals(l.getId())).toList().get(0); + f.setLabel(labelDO.getId()); + f.setLabelHeight(labelDO.getHeight()); + f.setLabelWidth(labelDO.getWidth()); + f.setLabelType(labelDO.getType()); + f.setLabelSetting(unzipString(labelDO.getTemplate())); + }); @@ -183,7 +199,7 @@ public class SystemConfigApiImpl implements SystemConfigApi { } - private void checkValueIsNotEmpty(List value,String error) { + private void checkValueIsNotEmpty(List value,String error) { if(ObjectUtils.isEmpty(value)){ throw exception(SYSTEM_PROCESS_SCHEME_CONFIG_DATA_ERROR,error);