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 d163a389c..269820c4e 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 @@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.ToString; -@Schema(description = "小板优化的数据信息") +@Schema(description = "小板优化的数据信息-部分") @Data @ToString(callSuper = true) public class BlockPlaceInfo { diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/PlatePlaceInfo.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/PlatePlaceInfo.java new file mode 100644 index 000000000..4474a5363 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/PlatePlaceInfo.java @@ -0,0 +1,103 @@ +package com.cf.imes.module.executor.controller.admin.plan.saveOptimize; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.ToString; + + +@Schema(description = "小板优化的数据信息-全部") +@Data +@ToString(callSuper = true) +public class PlatePlaceInfo { + + + + @Schema(description = "自增板信息") + private Object abInfo; + + @Schema(description = "大板ID") + private Long bi; + + + @Schema(description = "小板编号") + private String bo; + + + @Schema(description = "位置X") + private Object x; + + + @Schema(description = "位置Y") + private Object y; + + + + @Schema(description = "优化顺序") + private Object pi; + + + @Schema(description = "放置方式") + private Object ps; + + + @Schema(description = "开料顺序") + private Object co; + + + @Schema(description = "下刀点位置") + private Object cr; + + + @Schema(description = "下刀点") + private Object cp; + + + @Schema(description = "未移动") + private Object ia; + + + @Schema(description = "是否重叠") + private Object io; + + + + @Schema(description = "是否排钻") + private Object dh; + + + @Schema(description = "是否造型") + private Object dm; + + + @Schema(description = "超限板标识") + private Object of; + + + @Schema(description = "板类型: 0普通 1自增, 2余料(失效)") + private Object type; + + + @Schema(description = "点列表") + private Object points; + + + + @Schema(description = "原造型偏移信息") + private Object orgSizeExpand; + + + @Schema(description = "尺寸扩展信息(造型)") + private Object sizeExpand; + + + @Schema(description = "跟优化位置的漂移量x") + private Object placeOffsetX; + + + @Schema(description = "跟优化位置的漂移量y") + private Object placeOffsetY; + + + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/PlateController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/PlateController.java index a87b1adeb..54f0129be 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/PlateController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/PlateController.java @@ -1,35 +1,32 @@ package com.cf.imes.module.executor.controller.admin.plate; -import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; -import io.swagger.v3.oas.annotations.media.Schema; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.*; -import javax.servlet.http.*; -import javax.validation.constraints.NotEmpty; -import java.util.*; -import java.io.IOException; - +import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.pojo.PageParam; import com.cf.imes.framework.common.pojo.PageResult; -import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.util.object.BeanUtils; -import static com.cf.imes.framework.common.pojo.CommonResult.success; - import com.cf.imes.framework.excel.core.util.ExcelUtils; - import com.cf.imes.framework.operatelog.core.annotations.OperateLog; -import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*; - import com.cf.imes.module.executor.controller.admin.plate.vo.*; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.service.plate.PlateService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; +import java.io.IOException; +import java.util.List; +import java.util.Set; + +import static com.cf.imes.framework.common.pojo.CommonResult.success; +import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 生产单板件") @RestController @@ -57,10 +54,13 @@ public class PlateController { @DeleteMapping("/delete") @Operation(summary = "删除生产单板件") - @Parameter(name = "id", description = "编号", required = true) + @Parameters({ + @Parameter(name = "id", description = "板材ID", required = true), + @Parameter(name = "planId", description = "排单ID", required = true) + }) @PreAuthorize("@ss.hasAnyPermissions('executor:plate:delete','placeorder:optimize')") - public CommonResult deletePlate(@RequestParam("id") Long id) { - plateService.deletePlate(id); + public CommonResult deletePlate(@RequestParam("id") Long id, @RequestParam("planId") Long planId) { + plateService.deletePlate(id,planId); return success(true); } @@ -125,7 +125,7 @@ public class PlateController { @PostMapping("/insertPlate") @Operation(summary = "优化生产创建板材") @PreAuthorize("@ss.hasAnyPermissions('executor:plate:create','placeorder:optimize')") - public CommonResult> createNewPlate(@Valid @RequestBody OptimizationSavePlateReqVO reqVO) { + public CommonResult> createNewPlate(@Valid @RequestBody OptimizationSavePlateReqVO reqVO) { return success(plateService.createNewPlate(reqVO)); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/OptimizationSavePlateReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/OptimizationSavePlateReqVO.java index 8d69423ab..59cee0dba 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/OptimizationSavePlateReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/OptimizationSavePlateReqVO.java @@ -15,7 +15,7 @@ import java.math.BigDecimal; @AllArgsConstructor @NoArgsConstructor @Schema(description = "管理后台 - 优化生产时新增的小板信息") -public class OptimizationSavePlateReqVO { +public class OptimizationSavePlateReqVO { @Schema(description = "柜体号") 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 16968bbb7..0a6eb98a9 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 @@ -112,16 +112,17 @@ public interface GoodsMapper extends BaseMapperX { List selectPlanGoodsDataSource(@Param("filed") String filed,@Param("planId") Long planId ,@Param("organId") Long organId); - default GoodsDO selectGoodsId(Long orderId, String goodsId, Long organId) { - return selectOne(new LambdaQueryWrapperX() - .eq(GoodsDO::getOrganId, organId) - .eq(GoodsDO::getDeleted, false) - .eq(GoodsDO::getGoodsId, goodsId) - .eq(GoodsDO::getOrderId, orderId) - .select(GoodsDO::getId)); - - } +// default GoodsDO selectGoodsId(Long orderId, String goodsId, Long organId) { +// return selectOne(new LambdaQueryWrapperX() +// .eq(GoodsDO::getOrganId, organId) +// .eq(GoodsDO::getDeleted, false) +// .eq(GoodsDO::getGoodsId, goodsId) +// .eq(GoodsDO::getOrderId, orderId) +// .select(GoodsDO::getId)); +// +// } + GoodsDO selectGoodsId(@Param("orderId") Long orderId,@Param("goodsId") String goodsId,@Param("organId") Long organId); List selectOrderGoodsPlateList(@Param("planIds") List planIds, @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/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 b81f00137..df1771646 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 @@ -76,6 +76,13 @@ public interface OrderItemMapper extends BaseMapperX { } + default int deleteByPlateId(Long plateId,Long orderId, Long organId) { + return delete(new LambdaQueryWrapperX() + .eq(OrderItemDO::getOrganId, organId) + .eq(OrderItemDO::getOrderId, orderId) + .eq(OrderItemDO::getPlateId, plateId)); + + } @@ -89,6 +96,16 @@ public interface OrderItemMapper extends BaseMapperX { } + default OrderItemDO selectPlateList(Long plateId,Long orderId, Long organId) { + return selectOne(new LambdaQueryWrapperX() + .eq(OrderItemDO::getOrganId,organId) + .eqIfPresent(OrderItemDO::getOrderId,orderId) + .eqIfPresent(OrderItemDO::getPlateId, plateId) + .select(OrderItemDO::getBodyId)); + + } + + default List selectPackId(Long orderId,List bodyIds, Long organId) { return selectList(new LambdaQueryWrapperX() .eq(OrderItemDO::getOrganId,organId) 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 bc85ed4e9..a5afcffcd 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 @@ -461,6 +461,12 @@ public class OrderServiceImpl implements OrderService { } + List plateDOS = plateMapper.selectPlateIsOptimized(orderId, getUserOrganId()); + + if(!plateDOS.isEmpty()){ + return; + } + // 生产单柜体数量判断 if (orderBodyMapper.selectCountByOrderId(orderId, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()) == 0) { orderMapper.updateOrderStatus(orderId, OrderStatusEnum.EMPTY.getStatus(), getUserOrganId()); 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 888247b08..8a9c0ff84 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 @@ -1100,24 +1100,6 @@ public class PlanServiceImpl implements PlanService { } - private List buildBoardByPlanId(Long planId, String index,Integer size) { - SearchRequest.Builder builder = new SearchRequest.Builder(); - builder.index(index); - builder.size(size); - builder.query(q -> q.term(b -> b.field(FIELD_PLANID).value(planId))); - try { - SearchResponse search = elasticsearchClient.search(builder.build(), OptimizeBoardModelDO.class); - List> hits = search.hits().hits(); - if (CollUtil.isNotEmpty(hits)) { - return hits.stream().map(Hit::source).collect(Collectors.toList()); - } - return new ArrayList<>(); - } catch (IOException e) { - log.error(e.getMessage()); - throw new ServiceException(INTERNAL_SERVER_ERROR); - } - } - private void validatePlan(Long id) { diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateService.java index 6007ac72c..c8ceaf5b7 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateService.java @@ -1,13 +1,13 @@ package com.cf.imes.module.executor.service.plate; -import java.util.*; -import javax.validation.*; - +import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO; import com.cf.imes.module.executor.controller.admin.plate.vo.*; -import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; -import com.cf.imes.framework.common.pojo.PageResult; + +import javax.validation.Valid; +import java.util.List; +import java.util.Set; /** * 生产单板件 Service 接口 @@ -36,7 +36,7 @@ public interface PlateService { * * @param id 编号 */ - void deletePlate(Long id); + void deletePlate(Long id,Long planId); /** * 获得生产单板件 @@ -92,6 +92,6 @@ public interface PlateService { List getPlateModelByPlateId(List bodyIds); - List createNewPlate(OptimizationSavePlateReqVO reqVO); + List createNewPlate(OptimizationSavePlateReqVO reqVO); } \ 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/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 d740141af..c9f79209d 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 @@ -9,28 +9,39 @@ import co.elastic.clients.elasticsearch.core.search.Hit; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; +import com.cf.imes.framework.common.enums.OrderPlateTypeEnum; 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; import com.cf.imes.framework.security.core.LoginUser; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO; +import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PlatePlaceInfo; import com.cf.imes.module.executor.controller.admin.plate.vo.*; +import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; +import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO; import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO; import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; +import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper; import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper; import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper; -import com.cf.imes.module.executor.dal.mysql.planitem.PlanItemMapper; +import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper; import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper; -import com.cf.imes.module.executor.dal.mysql.processStepItem.ProcessStepItemMapper; import com.cf.imes.module.executor.enums.OrderItemType; +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; @@ -42,13 +53,12 @@ import java.io.IOException; import java.util.*; 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.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.REMAIN_PLATE_NOT_EXISTS; -import static com.cf.imes.module.system.enums.ErrorCodeConstants.THE_CURRENT_BOARD_IS_NOT_SELECTED; - +import static com.cf.imes.module.system.enums.ErrorCodeConstants.*; /** * 生产单板件 Service 实现类 * @@ -69,7 +79,7 @@ public class PlateServiceImpl implements PlateService { private GoodsMapper goodsMapper; @Resource - private PlanItemMapper planItemMapper; + private PlanMapper planMapper; @Resource private OrderBodyMapper orderBodyMapper; @@ -82,7 +92,12 @@ public class PlateServiceImpl implements PlateService { private ElasticsearchClient elasticsearchClient; @Resource - private ProcessStepItemMapper processStepItemMapper; + private PlanService planService; + + @Resource + private ESDocumentService esDocumentService; + + String ORDER_REMAIN_PLATE_MODEL = "imes_order_optimize_plate_model"; @Override public Long createPlate(PlateSaveReqVO createReqVO) { @@ -103,9 +118,82 @@ public class PlateServiceImpl implements PlateService { } @Override - public void deletePlate(Long id) { + @Transactional(rollbackFor = Exception.class) + public void deletePlate(Long id,Long planId) { + + PlanDO planDO = planMapper.selectById(planId); + PlateDO plateDO = plateMapper.selectById(id); + // 校验存在 - validatePlateExists(id); + AssertUtils.notEmpty(plateDO,REMAIN_PLATE_NOT_EXISTS); + AssertUtils.notEmpty(planDO,ORDER_PLAN_DATE_ERROR); + + if(!plateDO.getType().equals(OrderPlateTypeEnum.SELFINCREASINGBOARD.getType())){ + throw exception(PLATE_IS_SOURCE); + } + + + if(plateDO.getIsOptimized()) { + + List optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 11); + + if (!optimizeBoardModelDOS.isEmpty()) { + + // todo 目前只解决了非混单的情况 + OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0); + + try { + + ObjectMapper mapper = new ObjectMapper(); + + // 解析 JSON 字符串 + JsonNode jsonNode = mapper.readTree(optimizeBoardModelDO.getBlockPlaceInfo()); + + Long placeBlockNumber = optimizeBoardModelDO.getPlaceBlockNumber() - 1; + + List asJsonObject = mapper.convertValue(jsonNode, new TypeReference<>() {}); + + + String blockPlaceInfo = JsonUtils.toJsonString( + asJsonObject.stream() + .filter(f -> !f.getBo().equals(plateDO.getPlateNo())) + .toList()); + + HashMap objectObjectHashMap = new HashMap<>(); + + + objectObjectHashMap.put("blockPlaceInfo",blockPlaceInfo); + + objectObjectHashMap.put("placeBlockNumber",placeBlockNumber); + + esDocumentService.updateById(ORDER_REMAIN_PLATE_MODEL, optimizeBoardModelDO.getId(), HashMap.class, objectObjectHashMap); + + + } catch (Exception e) { + + log.error(e.getMessage()); + throw new ServiceException(ES_ERROR_UPDATE); + + } + + } + } + + Long bodyId = orderItemMapper.selectPlateList(id, plateDO.getOrderId(), plateDO.getOrganId()).getBodyId(); + + OrderBodyDO orderBodyDO = orderBodyMapper.selectById(bodyId); + + orderBodyDO.setPlateNum(orderBodyDO.getPlateNum() - 1); + orderBodyMapper.updateById(orderBodyDO); + + + orderItemMapper.deleteByPlateId(id, plateDO.getOrderId(), plateDO.getOrganId()); + + + // todo 还需考虑下是否需要和包裹关联,预打包优化数据是否需要关联 + + + // 删除 plateMapper.deleteById(id); } @@ -243,15 +331,15 @@ public class PlateServiceImpl implements PlateService { @Override @Transactional(rollbackFor = Exception.class) - public List createNewPlate(OptimizationSavePlateReqVO reqVO) { + public List createNewPlate(OptimizationSavePlateReqVO reqVO) { - if(reqVO.getRoomId() == null || reqVO.getBodyId() == null){ - throw exception(THE_CURRENT_BOARD_IS_NOT_SELECTED); + AssertUtils.notEmpty(reqVO.getRoomId(),ORDER_ROOM_ERROR); + AssertUtils.notEmpty(reqVO.getBodyId(),ORDER_BODY_ERROR); + AssertUtils.notEmpty(reqVO.getOrderId(),ORDER_ERROR); - } + GoodsDO goodsDO = goodsMapper.selectGoodsId(reqVO.getOrderId(), reqVO.getGoodsId(), getUserOrganId()); - Long goodsId = goodsMapper.selectGoodsId(reqVO.getOrderId(), reqVO.getGoodsId(), getUserOrganId()).getId(); List plateDOS = new ArrayList<>(); @@ -265,9 +353,11 @@ public class PlateServiceImpl implements PlateService { plateDO.setRemark(reqVO.getRemake1() +","+ reqVO.getRemake2()); plateDO.setHoleArrange(reqVO.getPlaceHole()); - plateDO.setGoodsId(goodsId); - plateDO.setIsOptimized(true); + plateDO.setGoodsId(goodsDO.getId()); + plateDO.setThickness(goodsDO.getThickness()); + plateDO.setIsOptimized(false); plateDO.setPlateNo((obtainingTime) + Long.toString(plateNo).substring(2)); + plateDO.setType(OrderPlateTypeEnum.SELFINCREASINGBOARD.getType()); plateDO.setArea(reqVO.getWidth().multiply(reqVO.getHeight()).movePointLeft(4).stripTrailingZeros()); @@ -280,7 +370,7 @@ public class PlateServiceImpl implements PlateService { // 生产单柜体表新增数据 OrderBodyDO orderBodyDO = orderBodyMapper.selectById(reqVO.getBodyId()); - orderBodyDO.setPlateNum(reqVO.getMultiple()); + orderBodyDO.setPlateNum(reqVO.getMultiple()+orderBodyDO.getPlateNum()); orderBodyMapper.updateById(orderBodyDO); @@ -302,32 +392,11 @@ public class PlateServiceImpl implements PlateService { orderItemMapper.insertBatch(orderItemDOS); -// List planItemDOS = new ArrayList<>(); -// -// orderItemDOS.forEach(orderItemDO ->{ -// -// PlanItemDO planItemDO = PlanItemDO.builder() -// .planId(reqVO.getPlanId()) -// .itemId(orderItemDO.getId()) -// .build(); -// planItemDOS.add(planItemDO); -// }); -// -// // 排单明细表新增数据 -// planItemMapper.insertBatch(planItemDOS); - - return plateDOS.stream().map(PlateDO::getId).toList(); + return plateDOS.stream().map(PlateDO::getPlateNo).toList(); } private List buildRespByPlateIds(Collection plateIds, String index) { - // - - -// // 使用Stream API将 Collection 转换成 Collection -// Collection stringPlateIds = plateIds.stream() -// .map(String::valueOf) // 将Long类型的元素转换成String类型 -// .collect(Collectors.toList()); // 收集到一个新的List中 List fieldValues = plateIds.stream().map(FieldValue::of).toList(); SearchRequest.Builder builder = new SearchRequest.Builder(); @@ -348,4 +417,24 @@ public class PlateServiceImpl implements PlateService { } + + private List buildBoardByPlanId(Long planId, String index, Integer size) { + SearchRequest.Builder builder = new SearchRequest.Builder(); + builder.index(index); + builder.size(size); + builder.query(q -> q.term(b -> b.field("planId").value(planId))); + try { + SearchResponse search = elasticsearchClient.search(builder.build(), OptimizeBoardModelDO.class); + List> hits = search.hits().hits(); + if (CollUtil.isNotEmpty(hits)) { + return hits.stream().map(Hit::source).collect(Collectors.toList()); + } + return new ArrayList<>(); + } catch (IOException e) { + log.error(e.getMessage()); + throw new ServiceException(INTERNAL_SERVER_ERROR); + } + } + + } \ No newline at end of file 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 873055b3e..c0085210e 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 @@ -410,4 +410,21 @@ + + + \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PrePackOptimizeInfo.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PrePackOptimizeInfo.java index c7a8d1293..0cd371bb6 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PrePackOptimizeInfo.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PrePackOptimizeInfo.java @@ -6,7 +6,6 @@ import lombok.Data; import lombok.ToString; import javax.validation.Valid; -import javax.validation.constraints.NotNull; import java.util.List; @Schema(description = "预打包的优化结构") 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 939b3bec2..1f26f0a30 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 @@ -249,12 +249,13 @@ public class ErrorCodeConstants { public static final ErrorCode PLATE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_033_001, "导入板材数据不能为空!"); public static final ErrorCode PLATE_EXISTS = new ErrorCode(1_002_033_002, "板材存在"); public static final ErrorCode THE_CURRENT_BOARD_IS_NOT_SELECTED = new ErrorCode(1_002_033_003, "当前板材没有选择房间和柜体,请选择"); - public static final ErrorCode THE_BOARD_HAS_BEEN_CUT_INTO_PIECES = new ErrorCode(1_002_033_004, "当前排单已有板材开料,禁止修改"); + public static final ErrorCode THE_BOARD_HAS_BEEN_CUT_INTO_PIECES = new ErrorCode(1_002_033_004, "当前排单已有板材开料,禁止删除"); public static final ErrorCode REMAIN_PLATE_NOT_EXISTS = new ErrorCode(1_002_033_005, "板材不存在"); public static final ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_033_006, "设计板材不存在"); public static final ErrorCode RAW_GOODS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_033_007, "生产板材导入数据不可以为空"); public static final ErrorCode PLATENO_ERROR = new ErrorCode(1_002_033_008, "当前板编号无对应包裹信息"); public static final ErrorCode PLATE_GOODS_ID_NOT_SAME = new ErrorCode(1_002_033_009, "板材商品编号存在,请重新命名商品编号"); + public static final ErrorCode PLATE_IS_SOURCE = new ErrorCode(1_002_033_010, "当前板材为源小板,无法删除"); @@ -304,7 +305,10 @@ public class ErrorCodeConstants { 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, "当前排单还未保存优化结果,无法对开料结果进行修改"); - public static final ErrorCode ORDER_NO_DATA_ERROR = new ErrorCode(1_002_041_001, "生产单信息错误,请重新进行拆包"); + public static final ErrorCode ORDER_NO_DATA_ERROR = new ErrorCode(1_002_041_015, "生产单信息错误,请重新进行拆包"); + public static final ErrorCode ORDER_ROOM_ERROR = new ErrorCode(1_002_041_015, "当前板材没有选择房间,请选择"); + 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, "当前板材没有选择生产单,请选择");