diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApi.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApi.java index e7cda9bbf..3569fc44e 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApi.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApi.java @@ -25,6 +25,10 @@ public interface OrderPlanApi { CommonResult getOrderPlan(@RequestParam("machineId") Long id); + @GetMapping(PREFIX +"/apiGetOrder") + @Operation(summary = "查询生产单对应的板材已全部开料") + @Parameter(name = "orderId", description = "生产单ID", required = true) + CommonResult getOrder(@RequestParam("orderId") Long orderId); /* diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApiImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApiImpl.java index fa64e3b05..8898dae9f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApiImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApiImpl.java @@ -120,6 +120,22 @@ public class OrderPlanApiImpl implements OrderPlanApi{ } + @Override + public CommonResult getOrder(Long orderId) { + + List planIds = goodsMapper.selectNoPlanOrders(orderId, getUserOrganId()); + + List planList = planIds.stream().filter(f -> f == 0).toList(); + + if(planIds.isEmpty() || !planList.isEmpty()){ + return CommonResult.success(false); + } + List planIdList = planMapper.selectPLanList(planIds, getUserOrganId()); + + return CommonResult.success(planIdList.isEmpty()); + } + + /* * 机台数据源数据查询 diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/BlockPlaceInfo.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/BlockPlaceInfo.java index 269820c4e..c798fe084 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/BlockPlaceInfo.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/BlockPlaceInfo.java @@ -15,9 +15,9 @@ public class BlockPlaceInfo { private Long bi; @Schema(description = "小板编号") - private Long bo; + private String bo; - public BlockPlaceInfo(Long bi, Long bo) { + public BlockPlaceInfo(Long bi, String bo) { this.bi = bi; this.bo = bo; } 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 2d1a606c2..3ae2cb4bd 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 @@ -212,5 +212,21 @@ public interface GoodsMapper extends BaseMapperX { List selectNoPlanOrdersList(@Param("orderIds") List orderIds, @Param("organId") Long organId); + List selectNoPlanOrders(@Param("orderId") Long orderId, @Param("organId") Long organId); + + + default List selectNoPlanOrdersListByOrderIds(List orderIds, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(GoodsDO::getOrganId, organId) + .eq(GoodsDO::getDeleted, false) + .inIfPresent(GoodsDO::getOrderId,orderIds) + .eq(GoodsDO::getPlanId,0) + .select(GoodsDO::getOrderId)); + + } + + List selectOrderPlanList(@Param("orderIds") List orderIds,@Param("organId") Long organId); + + List selectPlanOrderListByOrderIds(@Param("orderIds") List orderIds,@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/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 330443e76..8a2c8cc26 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 @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.cf.imes.framework.common.enums.OrderPackageStatusEnum; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; @@ -259,12 +260,25 @@ public interface OrderMapper extends BaseMapperX { - default List selectNoPlanOrderList(Long organId, List statusList) { + default List selectOrderList(List orderIds, Long organId) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(OrderDO::getOrganId, organId) .eq(OrderDO::getDeleted, false) - .in(OrderDO::getStatus,statusList) - .select(OrderDO::getId)); + .inIfPresent(OrderDO::getId,orderIds) + .eq(OrderDO::getStatus, OrderStatusEnum.FINISH_PRODUCTION.getStatus())); } + + + + default List selectOrderPackList(List orderIds, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(OrderDO::getOrganId, organId) + .eq(OrderDO::getDeleted, false) + .inIfPresent(OrderDO::getId,orderIds) + .eq(OrderDO::getPackaged, OrderPackageStatusEnum.PACKAGED.getStatus())); + + } + + } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java index 8f6c755fa..be60c39ac 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java @@ -5,7 +5,10 @@ import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatisticsReqVO; -import com.cf.imes.module.executor.controller.admin.plan.vo.*; +import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanStatisticsAreaRespVO; +import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanStatisticsCountRespVO; +import com.cf.imes.module.executor.controller.admin.plan.vo.PlanPageReqVO; +import com.cf.imes.module.executor.controller.admin.plan.vo.PlateOptimize; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; @@ -117,6 +120,11 @@ public interface PlanMapper extends BaseMapperX { + List selectPLanList(@Param("planIds") List planIds, @Param("organId") Long organId); + + + + // List seleTestSQL(@Param("sql") String sql); } \ 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 5f36ee97d..bca2910b0 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 @@ -162,7 +162,7 @@ public interface PlateMapper extends BaseMapperX { - default List selectPlateByPlateNo(List plateNo, Long organId) { + default List selectPlateByPlateNo(List plateNo, Long organId) { return selectList(new LambdaQueryWrapperX() .eq(PlateDO::getOrganId,organId) .eq(PlateDO::getDeleted,false) @@ -237,7 +237,14 @@ public interface PlateMapper extends BaseMapperX { } -// List selectTestSQL(@Param("sql") String sql); + default PlateDO selectByPlateNo(Long plateNo, Long organId) { + return selectOne(new LambdaQueryWrapperX() + .eq(PlateDO::getOrganId,organId) + .eq(PlateDO::getDeleted,false) + .eq(PlateDO::getPlateNo, plateNo)); + + } + } \ 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/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 ec4656a20..bde3da404 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 @@ -8,6 +8,7 @@ import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch._types.FieldValue; import co.elastic.clients.elasticsearch.core.*; import co.elastic.clients.elasticsearch.core.search.Hit; +import com.alibaba.fastjson.JSON; import com.cf.imes.framework.common.enums.OrderStatusEnum; import com.cf.imes.framework.common.enums.PlanStatusEnum; import com.cf.imes.framework.common.exception.ServiceException; @@ -41,6 +42,7 @@ import com.cf.imes.module.executor.enums.ErrorCodeConstants; import com.cf.imes.module.system.api.dataSource.DataSourceApi; import com.cf.imes.module.system.api.machine.MachineApi; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; @@ -56,6 +58,7 @@ import java.util.stream.Stream; import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.*; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.cf.imes.framework.common.util.json.JsonUtils.parseObject; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_NOT_EXISTS; import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLAN_NOT_EXISTS; @@ -159,7 +162,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } - List plateNo = new ArrayList<>(); + List plateNo = new ArrayList<>(); // 创建一个列表存储 BlockPlaceInfo 对象,将优化的小板信息拿出,获取到小板编号,查询生产单,修改生产单的状态 List outputList = new ArrayList<>(); @@ -174,7 +177,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { if (jsonArray.isArray()) { for (JsonNode jsonNode : jsonArray) { Long bi = jsonNode.get("bi").asLong(); - Long bo = jsonNode.get("bo").asLong(); + String bo = jsonNode.get("bo").asText(); outputList.add(new BlockPlaceInfo(bi,bo)); } } @@ -191,8 +194,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { List plateDOS = plateMapper.selectPlateByPlateNo(plateNo.stream().distinct().toList(), getUserOrganId()); - List orderIds = plateDOS.stream().map(PlateDO::getOrderId).distinct().toList(); - + List orderIds = new ArrayList<>(plateDOS.stream().map(PlateDO::getOrderId).distinct().toList()); // 修改生产单的状态 @@ -203,7 +205,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { // 获取原排单的开料大板数 + 新增的开料大板数 - long cutedBoardNumber = cutedBoardInfo.getCutedBoardNumber() == null ? 0 : cutedBoardInfo.getCutedBoardNumber(); // 获取原排单的已开料的大板编号 @@ -217,7 +218,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { goodsNo.stream().filter(str -> !cutedBoardList.contains(str))) .toList()); - cutedBoardNumber = cutedBoardList.size(); + long cutedBoardNumber = cutedBoardList.size(); // 将需要更新更新的数据更新到原数据中 cutedBoardInfo.setCutedBoardNumber(cutedBoardNumber); @@ -251,6 +252,23 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { planMapper.updateById(planDO); + + List deleteOrderIds = goodsMapper.selectNoPlanOrdersListByOrderIds(orderIds, getUserOrganId()).stream().map(GoodsDO::getOrderId).distinct().toList(); + + orderIds.removeAll(deleteOrderIds); + + if(!orderIds.isEmpty()) { + + List orderIdList = goodsMapper.selectOrderPlanList(orderIds, getUserOrganId()); + + List orderDOS = orderMapper.selectOrderPackList(orderIdList, getUserOrganId()); + + if (!orderDOS.isEmpty()) { + List orderDOList = orderDOS.stream().map(m -> m.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus())).toList(); + orderMapper.updateBatch(orderDOList); + } + + } } return Boolean.TRUE; @@ -319,16 +337,48 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { if(cutedBoardInfo.getCutedBoardNumber() == 0){ -// planDO.setStatus(PlanStatusEnum.NOCUTTING.getStatus()); -// planDO.setProduceTime(null); planMapper.updatePlanStatus(planId,PlanStatusEnum.NOCUTTING.getStatus(),getUserOrganId()); + List orderIdList = JSON.parseArray(planDO.getOrderNos()).toJavaList(Long.class); + + orderIdList.removeAll(goodsMapper.selectPlanOrderListByOrderIds(orderIdList,getUserOrganId())); + + + if(!orderIdList.isEmpty()) { + List orderDOList = orderMapper.selectBatchIds(orderIdList); + orderMapper.updateBatch(orderDOList.stream() + .map(m -> m.setStatus(OrderStatusEnum.SORTED.getStatus())) + .toList()); + } + + return Boolean.TRUE; + } - if(planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus()) && cutedBoardInfo.getCutedBoardNumber() > 0 && cutedBoardInfo.getCutedBoardNumber() < optimizeBoardModelDO.getBoardCount() ){ -// planDO.setStatus(PlanStatusEnum.OPENING.getStatus()); -// planDO.setProduceTime(null); - planMapper.updatePlanStatus(planId,PlanStatusEnum.OPENING.getStatus(),getUserOrganId()); +// if(planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus()) && cutedBoardInfo.getCutedBoardNumber() > 0 && cutedBoardInfo.getCutedBoardNumber() < optimizeBoardModelDO.getBoardCount() ){ +// +// planMapper.updatePlanStatus(planId,PlanStatusEnum.OPENING.getStatus(),getUserOrganId()); +// } + + planMapper.updatePlanStatus(planId,PlanStatusEnum.OPENING.getStatus(),getUserOrganId()); + + + // 判断取消开料的大板对应的生产单号的状态,修改状态 + List asJsonObject = parseObject(optimizeBoardModelDO.getBlockPlaceInfo(), new TypeReference<>() {}); + + List plateNo = new ArrayList<>(); + + for (Long aLong : goodsNo) { + plateNo.addAll(asJsonObject.stream().filter(f->f.getBi().equals(aLong)).map(PlatePlaceInfo::getBo).toList()); + } + + List orderIds = plateMapper.selectPlateByPlateNo(plateNo, getUserOrganId()).stream().map(PlateDO::getOrderId).toList(); + + List orderDOS = orderMapper.selectOrderList(orderIds, getUserOrganId()); + + if(!orderDOS.isEmpty()){ + List orderDOList = orderDOS.stream().map(m -> m.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus())).toList(); + orderMapper.updateBatch(orderDOList); } } 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 669ce5a5e..236e5ef4b 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 @@ -197,10 +197,16 @@ public class PlanServiceImpl implements PlanService { List orderDOList = orderMapper.selectBatchIds(orderIdList); - orderDOList.forEach(m -> m.setStatus(OrderStatusEnum.SORTED.getStatus())); + List orderDOS = orderDOList.stream() + .filter(f -> !f.getStatus().equals(OrderStatusEnum.IN_PRODUCTION.getStatus())) + .map(m -> m.setStatus(OrderStatusEnum.SORTED.getStatus())) + .toList(); - orderMapper.updateBatch(orderDOList); +// orderDOList.forEach(m -> m.setStatus(OrderStatusEnum.SORTED.getStatus())); + if(!orderDOS.isEmpty()) { + orderMapper.updateBatch(orderDOS); + } planMapper.insertBatch(planDOS); 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 c9f79209d..a7cab4892 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 @@ -14,7 +14,6 @@ import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.util.Assert.AssertUtils; -import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.es.core.service.ESDocumentService; import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX; @@ -40,8 +39,6 @@ import com.cf.imes.module.executor.service.plan.PlanService; import com.cf.imes.module.executor.util.fileConversion.admin.SnowflakeIdWorker3rd; import com.cf.imes.module.system.enums.ErrorCodeConstants; import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -56,6 +53,8 @@ import java.util.stream.Collectors; import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.ES_ERROR_UPDATE; import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.cf.imes.framework.common.util.json.JsonUtils.parseObject; +import static com.cf.imes.framework.common.util.json.JsonUtils.toJsonString; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; import static com.cf.imes.module.executor.service.optimizeplan.OptimizePlanService.ORDER_PLATE_MODEL; import static com.cf.imes.module.system.enums.ErrorCodeConstants.*; @@ -144,17 +143,19 @@ public class PlateServiceImpl implements PlateService { try { - ObjectMapper mapper = new ObjectMapper(); +// ObjectMapper mapper = new ObjectMapper(); +// +// // 解析 JSON 字符串 +// JsonNode jsonNode = mapper.readTree(optimizeBoardModelDO.getBlockPlaceInfo()); + +// List asJsonObject = mapper.convertValue(jsonNode, new TypeReference<>() {}); - // 解析 JSON 字符串 - JsonNode jsonNode = mapper.readTree(optimizeBoardModelDO.getBlockPlaceInfo()); Long placeBlockNumber = optimizeBoardModelDO.getPlaceBlockNumber() - 1; - List asJsonObject = mapper.convertValue(jsonNode, new TypeReference<>() {}); + List asJsonObject = parseObject(optimizeBoardModelDO.getBlockPlaceInfo(), new TypeReference<>() {}); - - String blockPlaceInfo = JsonUtils.toJsonString( + String blockPlaceInfo = toJsonString( asJsonObject.stream() .filter(f -> !f.getBo().equals(plateDO.getPlateNo())) .toList()); @@ -338,6 +339,10 @@ public class PlateServiceImpl implements PlateService { AssertUtils.notEmpty(reqVO.getBodyId(),ORDER_BODY_ERROR); AssertUtils.notEmpty(reqVO.getOrderId(),ORDER_ERROR); + if(reqVO.getMultiple() < 1 ){ + throw exception(PLATE_MULTIPLE_ERROR); + } + GoodsDO goodsDO = goodsMapper.selectGoodsId(reqVO.getOrderId(), reqVO.getGoodsId(), getUserOrganId()); 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 b4f99adfb..b54df913c 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 @@ -443,5 +443,52 @@ + + + + + + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml index 97baf4b55..15ef5b98a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml @@ -122,6 +122,20 @@ and status !=0; + + diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/pom.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/pom.xml index 7eccabf68..0b24044ba 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/pom.xml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/pom.xml @@ -174,8 +174,12 @@ gson 2.8.8 - - + + com.cf.imes + cf-module-prod-executor-api + 2.0.0-jdk8-snapshot + compile + diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/framework/rpc/config/RpcConfiguration.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/framework/rpc/config/RpcConfiguration.java index 3eaf416ea..43498de56 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/framework/rpc/config/RpcConfiguration.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/framework/rpc/config/RpcConfiguration.java @@ -1,5 +1,6 @@ package com.cf.imes.module.manage.framework.rpc.config; +import com.cf.imes.module.executor.api.plan.OrderPlanApi; import com.cf.imes.module.system.api.organ.OrganApi; import com.cf.imes.module.system.api.permission.PermissionApi; import com.cf.imes.module.system.api.process.ProcessApi; @@ -9,6 +10,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Configuration; @Configuration(proxyBeanMethods = false) -@EnableFeignClients(clients = {AdminUserApi.class, OrganApi.class, ProcessApi.class, SettingApi.class,PermissionApi.class}) +@EnableFeignClients(clients = {AdminUserApi.class, OrganApi.class, ProcessApi.class, SettingApi.class,PermissionApi.class, OrderPlanApi.class}) public class RpcConfiguration { } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java index 0b36b2949..97701800c 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java @@ -4,15 +4,13 @@ package com.cf.imes.module.manage.service.pack; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; -import com.cf.imes.framework.common.enums.OrderItemTypeEnum; -import com.cf.imes.framework.common.enums.OrderPackageStatusEnum; -import com.cf.imes.framework.common.enums.OrderPackageTypeEnum; -import com.cf.imes.framework.common.enums.UserSettingTypeEnum; +import com.cf.imes.framework.common.enums.*; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.util.Assert.AssertUtils; import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.mybatis.core.query.QueryWrapperX; +import com.cf.imes.module.executor.api.plan.OrderPlanApi; import com.cf.imes.module.manage.controller.admin.pack.prePack.PackPlateList; import com.cf.imes.module.manage.controller.admin.pack.prePack.PrePackOptimizeInfo; import com.cf.imes.module.manage.controller.admin.pack.prePack.PrePackReqVO; @@ -80,7 +78,6 @@ public class PackServiceImpl implements PackService { @Resource private OrdersMapper ordersMapper; - @Resource private SnowflakeIdWorker3rd idWorker; @@ -91,6 +88,9 @@ public class PackServiceImpl implements PackService { @Resource private SettingApi settingApi; + @Resource + private OrderPlanApi orderPlanApi; + // 打包分页查询 @Override @@ -374,6 +374,7 @@ public class PackServiceImpl implements PackService { @Transactional(rollbackFor = Exception.class) public OrderPackRespVO updateParts(OrderPartsReqVO reqVO) { + validateOrdersExists(reqVO.getOrderId(),null); // 判断包裹ID是否为空,为空,走新增,不为空,走更新 if (reqVO.getPackId() == null) { @@ -404,6 +405,7 @@ public class PackServiceImpl implements PackService { OrderPackageDO orderPackageDO = orderPackageMapper.selectByPackId(reqVO.getPackId(),reqVO.getOrderId(), getUserOrganId()); + AssertUtils.notEmpty(orderPackageDO,ORDER_PACK_DATA_ERROR); List orderItemDOS = orderItemMapper.selectPackList(reqVO.getPackId(), reqVO.getOrderId(), getUserOrganId()); List partsList = orderItemDOS.stream().map(OrderItemDO::getPartsId).distinct().toList(); @@ -460,7 +462,7 @@ public class PackServiceImpl implements PackService { OrderPackageDO packageDO = orderPackageMapper.selectById(packageID); - AssertUtils.notEmpty(packageDO,ORDER_PACK_DATA_ERROR ); + AssertUtils.notEmpty(packageDO,ORDER_PACK_DATA_NULL_ERROR ); Long orderId = packageDO.getOrderId(); @@ -469,6 +471,11 @@ public class PackServiceImpl implements PackService { AssertUtils.notEmpty(orderDO,ORDER_NO_DATA_ERROR); orderDO.setPackaged(OrderPackageStatusEnum.UNPACKED.getStatus()); + + if(orderDO.getStatus().equals(OrderStatusEnum.FINISH_PRODUCTION.getStatus())){ + orderDO.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus()); + } + ordersMapper.updateById(orderDO); packageDO.setStatus(OrderPackageStatusEnum.UNPACKED.getStatus()); @@ -484,6 +491,7 @@ public class PackServiceImpl implements PackService { @Transactional(rollbackFor = Exception.class) public OrderPackRespVO updatePack(OrderPackReqVO packageVO) { + validateOrdersExists(packageVO.getOrderId(),null); // 判断包裹ID是否为空,为空,走新增,不为空,走更新 if (packageVO.getPackId() == null) { @@ -509,6 +517,9 @@ public class PackServiceImpl implements PackService { OrderPackageDO orderPackageDO = orderPackageMapper.selectByPackId(packageVO.getPackId(),packageVO.getOrderId(), getUserOrganId()); + + AssertUtils.notEmpty(orderPackageDO,ORDER_PACK_DATA_ERROR); + List orderItemDOS = orderItemMapper.selectPackList(packageVO.getPackId(), packageVO.getOrderId(), getUserOrganId()); List plateList = orderItemDOS.stream().map(OrderItemDO::getPlateId).distinct().toList(); @@ -588,9 +599,16 @@ public class PackServiceImpl implements PackService { // 修改生产单的打包状态为已打包 orderDO.setPackaged(OrderPackageStatusEnum.PACKAGED.getStatus()); + + if(orderPlanApi.getOrder(orderId).getData()){ + orderDO.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus()); + } + + ordersMapper.updateById(orderDO); + } @@ -622,6 +640,8 @@ public class PackServiceImpl implements PackService { @Transactional(rollbackFor = Exception.class) public void deleteOrderPack(PackReqVO reqVO) { + + // 判断包裹的类型是否为其他类型,如果是,则删除其包裹信息 if (reqVO.getIsOther()) { @@ -900,6 +920,9 @@ public class PackServiceImpl implements PackService { if (orderItemDoPartsList.isEmpty()) { OrderDO orderDO = ordersMapper.selectById(reqVO.getOrderId()); orderDO.setPackaged(OrderPackageStatusEnum.PACKAGED.getStatus()); + if(orderPlanApi.getOrder(reqVO.getOrderId()).getData()){ + orderDO.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus()); + } ordersMapper.updateById(orderDO); } @@ -952,6 +975,18 @@ public class PackServiceImpl implements PackService { } + private void validateOrdersExists(Long orderId, Long packId) { + + OrderDO orderDO = ordersMapper.selectById(orderId); + AssertUtils.notEmpty(orderDO,ORDER_PACK_ERROR); + + if(packId != null){ + OrderPackageDO orderPackageDO = orderPackageMapper.selectById(packId); + AssertUtils.notEmpty(orderPackageDO,ORDER_PACK_DATA_ERROR); + } + + } + // 类型转换 private OrderPackRespVO typeConversion(OrderPackageDO orderPackageDO) { return OrderPackRespVO.builder() 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 3304b7cc5..193ea239b 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 @@ -302,7 +302,7 @@ public class ErrorCodeConstants { 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_ERROR = new ErrorCode(1_002_041_011, "当前包裹数据为空,请重新查看包裹数据或联系客服"); + 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, "当前柜体对应的板材数据为空,无法删除"); public static final ErrorCode ORDER_PLAN_NO_OPTIMIZE_ERROR = new ErrorCode(1_002_041_013, "当前排单还未保存优化结果,无法进行开料"); public static final ErrorCode ORDER_PLAN_NO_OPTIMIZE_UPDATE_ERROR = new ErrorCode(1_002_041_014, "当前排单还未保存优化结果,无法对开料结果进行修改"); @@ -311,6 +311,9 @@ public class ErrorCodeConstants { public static final ErrorCode ORDER_BODY_ERROR = new ErrorCode(1_002_041_015, "当前板材没有选择柜体,请选择"); public static final ErrorCode ORDER_ERROR = new ErrorCode(1_002_041_015, "当前板材没有选择生产单,请选择"); public static final ErrorCode MACHINE_NO_DATA_ERROR = new ErrorCode(1_002_041_016, "当前所选机台有误,请检查机台信息或重新选择机台"); + public static final ErrorCode PLATE_MULTIPLE_ERROR = new ErrorCode(1_002_041_017, "板材倍数有误,倍数必须大于 0"); + public static final ErrorCode ORDER_PACK_ERROR = new ErrorCode(1_002_041_018, "当前生产单信息有误,请重新选择包裹"); + public static final ErrorCode ORDER_PACK_DATA_ERROR = new ErrorCode(1_002_041_019, "当前包裹信息有误,请重新选择包裹");