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 deac2662f..879d1ea72 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 @@ -19,6 +19,10 @@ public interface ErrorCodeConstants { ErrorCode PLAN_ERROR = new ErrorCode(1_001_107_004, "{} 排单数据不存在"); + ErrorCode PLATE_ERROR = new ErrorCode(1_001_107_005, "当前新增的板材非同一类型的板材,禁止更改"); + + + // ========== 生产单商品 TODO 补充编号 ========== ErrorCode GOODS_NOT_EXISTS = new ErrorCode(1_001_108_000, "生产单商品不存在"); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/OptimizeRemainPlate.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/OptimizeRemainPlate.java index 0540cd89e..78eaac277 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/OptimizeRemainPlate.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/OptimizeRemainPlate.java @@ -41,7 +41,7 @@ public class OptimizeRemainPlate { @Schema(description = "商品名", requiredMode = Schema.RequiredMode.REQUIRED) - private String goodsName; + private String name; @Schema(description = "材质", requiredMode = Schema.RequiredMode.REQUIRED) @@ -67,11 +67,6 @@ public class OptimizeRemainPlate { - @Schema(description = "排单号", requiredMode = Schema.RequiredMode.REQUIRED) - private String planCode; - - - @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED) private Integer count; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/RemainBoardList.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/RemainBoardList.java new file mode 100644 index 000000000..3838a9254 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/RemainBoardList.java @@ -0,0 +1,56 @@ +package com.cf.imes.module.executor.controller.admin.plan.saveOptimize; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "优化生产使用的余料板的信息") +public class RemainBoardList { + + + + @Schema(description = "前端生成的ID", requiredMode = Schema.RequiredMode.REQUIRED) + private String id; + + + + @Schema(description = "余料板材质", requiredMode = Schema.RequiredMode.REQUIRED) + private String material; + + + + @Schema(description = "余料板颜色", requiredMode = Schema.RequiredMode.REQUIRED) + private String color; + + + + @Schema(description = "余料板宽", requiredMode = Schema.RequiredMode.REQUIRED) + private Double width; + + + + @Schema(description = "余料板长", requiredMode = Schema.RequiredMode.REQUIRED) + private Double length; + + + + @Schema(description = "余料板厚度", requiredMode = Schema.RequiredMode.REQUIRED) + private Double thickness; + + + @Schema(description = "余料板数量", requiredMode = Schema.RequiredMode.REQUIRED) + private Integer count; + + + + @Schema(description = "纹路 纹路(0正纹1可翻转2反纹)") + private Integer texture; + + + + @Schema(description = "是否手动添加余料", requiredMode = Schema.RequiredMode.REQUIRED) + private Boolean isHandAdd; + + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/SavePlanPlateResultReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/SavePlanPlateResultReqVO.java index 17bbc5ef3..8ff36b449 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/SavePlanPlateResultReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/SavePlanPlateResultReqVO.java @@ -1,13 +1,10 @@ package com.cf.imes.module.executor.controller.admin.plan.saveOptimize; -import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO; -import com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetialRespVO; -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.order.OrderDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; + import java.util.List; @Data @@ -29,18 +26,18 @@ public class SavePlanPlateResultReqVO { - @Schema(description = "优化后的小板列表数据", requiredMode = Schema.RequiredMode.REQUIRED) - private List plateList; - - - - @Schema(description = "优化后新增的小板ID") - private List addPlateIds; - - - - @Schema(description = "优化后删除的小板ID") - private List deletePlateIds; +// @Schema(description = "优化后的小板列表数据", requiredMode = Schema.RequiredMode.REQUIRED) +// private List plateList; +// +// +// +// @Schema(description = "优化后新增的小板ID") +// private List addPlateIds; +// +// +// +// @Schema(description = "优化后删除的小板ID") +// private List deletePlateIds; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java index d8f141dc2..53fbf27db 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java @@ -42,7 +42,7 @@ public class OrderPageReqVOCopy extends PageParam { private Boolean twoDimensionalToolPath; @Schema(description = "门板") private Boolean isDoor; - @Schema(description = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") + @Schema(description = "生产单订单日期", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; @Schema(description = "长 小范围") @@ -55,7 +55,7 @@ public class OrderPageReqVOCopy extends PageParam { private BigDecimal widthMaxRang; - // todo 目前商品ID的数据筛选只解决了非混单的情况(非混单,数据类型为Long即可,混单情况需要改变),混单数据筛选待解决 + // todo 目前商品ID的数据筛选只解决了非混单的情况(非混单,数据类型为Long即可,混单情况需要改变),混单数据筛选待解决 @Schema(description = "商品ID-板材库对应的大板ID") private Long goodsId; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java index 5dfbdd92f..bb943cf19 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java @@ -56,7 +56,7 @@ public class PlanSaveReqVO { private LocalDateTime produceTime; - @Schema(description = "生产单id与商品id 列表",requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "生产单id与商品id 列表,修改排单时,只传入新增的那一部分",requiredMode = Schema.RequiredMode.REQUIRED) private List itemList; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateDetialRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateDetialRespVO.java index 6db59c9d4..7a8f3443c 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateDetialRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateDetialRespVO.java @@ -39,7 +39,7 @@ public class PlateDetialRespVO { private Long id; - @Schema(description = "大板实例ID", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "大板实际ID", requiredMode = Schema.RequiredMode.REQUIRED) private Long goodsId; @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateInfoVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateInfoVO.java index 4e9d8aa34..cb8b6bc83 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateInfoVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateInfoVO.java @@ -57,4 +57,7 @@ public class PlateInfoVO { @Schema(description = "优化大板片数") private Long optimizeGoodsCount; + @Schema(description = "排单对应的小板信息") + private List platePages; + } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/GoodsDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/GoodsDO.java index c8bdcffcf..0c8d950db 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/GoodsDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/GoodsDO.java @@ -1,14 +1,10 @@ package com.cf.imes.module.executor.dal.dataobject.goods; -import com.cf.imes.framework.organ.core.db.OrganBaseDO; +import com.baomidou.mybatisplus.annotation.*; +import com.cf.imes.framework.mybatis.core.dataobject.BaseDO; import lombok.*; import java.math.BigDecimal; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import com.cf.imes.framework.mybatis.core.dataobject.BaseDO; /** * 生产单商品 DO @@ -45,6 +41,10 @@ public class GoodsDO extends BaseDO { * 商品 ID */ private String goodsId; + /** + * 排单 ID + */ + private Long planId; /** * 商品名称 */ diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java index 3ef978fa8..230719cac 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java @@ -2,6 +2,7 @@ package com.cf.imes.module.executor.dal.dataobject.goods; import com.cf.imes.framework.es.core.dal.ESDocument; +import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.RemainBoardList; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; @@ -142,6 +143,9 @@ public class OptimizeBoardModelDO extends ESDocument { + @Schema(description = "余料板的数据列表") + private List remainBoardList; + 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 527532694..efc83d2d5 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 @@ -1,14 +1,15 @@ package com.cf.imes.module.executor.dal.mysql.goods; +import com.baomidou.mybatisplus.core.conditions.Wrapper; 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.pojo.PageResult; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsPageReqVO; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.NotPlanGoodsRespVO; -import com.cf.imes.module.executor.controller.admin.plan.vo.GoodsReqVO; -import com.cf.imes.module.executor.controller.admin.plan.vo.OrderGoodsResp; +import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -50,7 +51,7 @@ public interface GoodsMapper extends BaseMapperX { List selectGoodsList(@Param("orderId") Long orderId, @Param("organId") Long organId); - List selectGoodsListByOrderIds(@Param("goodsIds") List goodsIds, @Param("organId") Long organId); + List selectGoodsListByOrderIds(@Param("planId") Long planId, @Param("organId") Long organId); // 单个修改删除状态 @@ -143,4 +144,42 @@ public interface GoodsMapper extends BaseMapperX { } + default PageResult selectTestSQL(OrderPageReqVOCopy pageReqVO) { + return selectPage(pageReqVO, new LambdaQueryWrapperX() + .eq(GoodsDO::getOrganId, getUserOrganId()) + .orderByDesc(GoodsDO::getId)); + } + + + IPage selectOrderGoodsList(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper wrapper); + + + List selectOrderGoodsPlateList(@Param("planIds") List planIds, @Param("organId") Long organId); + + + + default List selectPlanGoodsList(List goodsIds, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(GoodsDO::getOrganId, organId) + .eq(GoodsDO::getDeleted, false) + .inIfPresent(GoodsDO::getId,goodsIds)); + + } + + + + default List selectPlanGoods(Long planId, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(GoodsDO::getOrganId, organId) + .eq(GoodsDO::getDeleted, false) + .eqIfPresent(GoodsDO::getPlanId,planId) + .select(GoodsDO::getGoodsId,GoodsDO::getId,GoodsDO::getOrderId)); + + } + + + List selectGoodsListByGoodsId(@Param(Constants.WRAPPER) Wrapper wrapper); + + + IPage selectPlanGoodsListByPlanId(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper wrapper); } \ 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 cb37350f5..1d077e413 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 @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants; 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; +import com.cf.imes.framework.mybatis.core.query.QueryWrapperX; import com.cf.imes.framework.organ.core.aop.OrganIgnore; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderCountProducePeriodRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderOverdueRespVO; @@ -242,10 +243,12 @@ public interface OrderMapper extends BaseMapperX { .likeIfPresent(OrderDO::getCustomOrderNo,pageReqVO.getDefaultId()) .likeIfPresent(OrderDO::getCustomer,pageReqVO.getConsignee()) .likeIfPresent(OrderDO::getAddress,pageReqVO.getConsigneeAddress()) - .betweenIfPresent(OrderDO::getCreateTime,pageReqVO.getCreateTime()) + .betweenIfPresent(OrderDO::getOrderDate,pageReqVO.getCreateTime()) .select(OrderDO::getId)); } + List selectGoodsListByGoodsId(@Param(Constants.WRAPPER) QueryWrapperX queryWrapperX); + } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderBody/OrderBodyMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderBody/OrderBodyMapper.java index 3c912c3dc..9ebee13a2 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderBody/OrderBodyMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderBody/OrderBodyMapper.java @@ -123,4 +123,19 @@ public interface OrderBodyMapper extends BaseMapperX { return delete(new LambdaQueryWrapperX() .in(OrderBodyDO::getOrderId, orderId)); } + + + List selectTestSQL(@Param("filed") String filed,@Param("bodyIds") List bodyIds,@Param("organId") Long organId); + + + + default List selectOrderBodyList(List bodyIds, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(OrderBodyDO::getOrganId, organId) + .eq(OrderBodyDO::getDeleted,false) + .in(OrderBodyDO::getId, bodyIds) + .select(OrderBodyDO::getId,OrderBodyDO::getName,OrderBodyDO::getRoomName)); + } + + } \ 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/orderGroup/OrderGroupMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderGroup/OrderGroupMapper.java index 63f15a214..ab9171afd 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderGroup/OrderGroupMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderGroup/OrderGroupMapper.java @@ -1,19 +1,15 @@ package com.cf.imes.module.executor.dal.mysql.orderGroup; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; - import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; -import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO; +import com.cf.imes.module.executor.api.plan.vo.OrderGroupRespVO; import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Update; import java.util.Collection; import java.util.List; -import java.util.stream.Collectors; /** * 生产单加工组 Mapper @@ -96,4 +92,8 @@ public interface OrderGroupMapper extends BaseMapperX { return delete(new LambdaQueryWrapperX() .in(OrderGroupDO::getOrderId, orderId)); } + + + List selectTestSQL(@Param("filed") String filed, @Param("field2") String field2 ,@Param("groupIds") List groupIds, @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/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 1e5a65fcd..c3aafb300 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 @@ -7,6 +7,7 @@ import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPlatesDe import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderRoomBodyList; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPackReqVO; +import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy; import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailReqVO; import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailRespVO; import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO; @@ -99,8 +100,23 @@ public interface OrderItemMapper extends BaseMapperX { default List selectPartsList(List partIds, Long organId) { return selectList(new LambdaQueryWrapperX() .eq(OrderItemDO::getOrganId,organId) - .inIfPresent(OrderItemDO::getPlateId, partIds) + .inIfPresent(OrderItemDO::getPartsId, partIds) .select(OrderItemDO::getNum)); } + + IPage selectTestNum(@Param("page") IPage page,@Param("organId") Long organId); + + + + default List selectOrderPlateList(List plateIds, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(OrderItemDO::getOrganId,organId) + .inIfPresent(OrderItemDO::getPlateId, plateIds) + .select(OrderItemDO::getBodyId,OrderItemDO::getRoomId,OrderItemDO::getGroupId,OrderItemDO::getPlateId)); + + } + + + } \ 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/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 a8845c51e..69d11fbf0 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 @@ -6,10 +6,9 @@ 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.dal.dataobject.goods.GoodsDO; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; -import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO; import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; -import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -43,9 +42,11 @@ public interface PlanMapper extends BaseMapperX { .betweenIfPresent(PlanDO::getCreateTime, reqVO.getCreateTime()) .eqIfPresent(PlanDO::getOperator, reqVO.getOperator()) .betweenIfPresent(PlanDO::getProduceTime, reqVO.getProduceTime()) - .leftJoin(PlanItemDO.class, PlanItemDO::getPlanId, PlanDO::getId) - .leftJoin(OrderItemDO.class, OrderItemDO::getId, PlanItemDO::getItemId) - .leftJoin(OrderDO.class, OrderDO::getId, OrderItemDO::getOrderId) + + // todo 如果后续生产单加入排单状态,这里可以更改只连 orders 表 + .leftJoin(GoodsDO.class, GoodsDO::getPlanId, PlanDO::getId) +// .leftJoin(OrderItemDO.class, OrderItemDO::getId, PlanItemDO::getItemId) + .leftJoin(OrderDO.class, OrderDO::getId, GoodsDO::getOrderId) .like(OrderDO::getCustomer, reqVO.getCustomer()) .orderBy(true, true, PlanDO::getSort) .orderByDesc(PlanDO::getUpdateTime) 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 9b88e9067..00044a955 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 @@ -2,7 +2,6 @@ package com.cf.imes.module.executor.dal.mysql.planitem; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.module.executor.controller.admin.plan.vo.PlanOrderRespVO; -import com.cf.imes.module.executor.controller.admin.plan.vo.PlateInfoVO; import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -18,9 +17,6 @@ import java.util.List; public interface PlanItemMapper extends BaseMapperX { - List selectGoodsList(@Param("planIds") List planIds, @Param("organId") Long organId); - - List selectOrderList(@Param("planIds") List planIds, @Param("organId") Long userOrganId); } \ 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 096387e97..a111db9e1 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 @@ -175,7 +175,7 @@ public interface PlateMapper extends BaseMapperX { List selectPlateListByGoodIds(@Param("goodIds") List goodIds,@Param("organId") Long organId); - List selectPlateArea(@Param("orderIdsList") List orderIdsList,@Param("organId") Long organId); +// List selectPlateArea(@Param("orderIdsList") List orderIdsList,@Param("organId") Long organId); @@ -189,13 +189,7 @@ public interface PlateMapper extends BaseMapperX { - default List selectPlateListByGoodsIds(List deleteIds, Long organId) { - return selectList(new LambdaQueryWrapperX() - .eq(PlateDO::getOrganId,organId) - .inIfPresent(PlateDO::getGoodsId, deleteIds) - .select(PlateDO::getPlateNo)); - - } + List selectPlateListByGoodsIds(@Param("goodsIdList") List goodsIdList,@Param("organId") Long organId); // 批量删除 @@ -220,6 +214,18 @@ public interface PlateMapper extends BaseMapperX { } + + default List selectPlateIds(OrderPageReqVOCopy pageReqVO, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(PlateDO::getOrganId,organId) + .eq(PlateDO::getDeleted,false) + .eqIfPresent(PlateDO::getIsSpecialShaped,pageReqVO.getSpecialShaped()) + .eqIfPresent(PlateDO::getIsDoor,pageReqVO.getIsDoor()) + .select(PlateDO::getGoodsId)); + + } + + // 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/optimizeplan/OptimizePlanService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java index 82c13fc68..8cc94c6a4 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java @@ -3,7 +3,10 @@ package com.cf.imes.module.executor.service.optimizeplan; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderSource; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.CuttingStatusRespVO; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.SavePlanPlateResultReqVO; -import com.cf.imes.module.executor.controller.admin.plan.vo.*; +import com.cf.imes.module.executor.controller.admin.plan.vo.AddRemainReqVO; +import com.cf.imes.module.executor.controller.admin.plan.vo.GetSourceDataReq; +import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPageReqVOCopy; +import com.cf.imes.module.executor.controller.admin.plan.vo.PlateOptimize; import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; 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 629bf739b..a889be687 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 @@ -11,13 +11,11 @@ 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.enums.RemainTypeEnum; import com.cf.imes.framework.common.exception.ServiceException; 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.plan.bo.OrderSource; import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessGroupList; import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepAreaIds; @@ -28,7 +26,7 @@ import com.cf.imes.module.executor.dal.dataobject.goods.CutedBoardInfo; 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.order.OrderDO; -import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO; +import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO; 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.planitem.PlanItemDO; @@ -37,6 +35,8 @@ import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO; import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO; import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper; import com.cf.imes.module.executor.dal.mysql.order.OrderMapper; +import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper; +import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper; import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper; import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper; import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper; @@ -53,7 +53,6 @@ import com.cf.imes.module.system.api.process.dto.ProcessDTO; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -70,7 +69,6 @@ import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.ge 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; -import static com.cf.imes.module.system.enums.ErrorCodeConstants.INSUFFICIENT_PERMISSIONS; /** * @author there @@ -126,6 +124,12 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { @Resource private ProcessStepItemMapper processStepItemMapper; + @Resource + private OrderBodyMapper orderBodyMapper; + + @Resource + private OrderGroupMapper orderGroupMapper; + @Override public List getPlateListByPlanId(Long planId) { @@ -474,6 +478,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { List plateDOS = plateMapper.selectPlateDetialList(orderId,getUserOrganId()); + for (PlateDetialRespVO plateDetailsRespVO : plateDOS) { String name = ""; if(!plateDetailsRespVO.getProcessGroupLists().isEmpty()) { @@ -504,7 +509,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { // 大板数据的尺寸长度 - Integer boardSize = goodsDOS.stream().map(m -> m.getId()).collect(Collectors.toList()).size(); + Integer boardSize = goodsDOS.stream().map(GoodsReqVO::getId).toList().size(); List optimizeBoardModelDOS = buildBoardByOrderId(orderId, ORDER_REMAIN_PLATE_MODEL, boardSize); @@ -528,29 +533,41 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { if (Objects.isNull(planDO)) { throw exception(PLAN_NOT_EXISTS); } - MPJLambdaWrapper wrapper = new MPJLambdaWrapperX() - .select(OrderItemDO::getOrderId,OrderItemDO::getPlateId) - .rightJoin(PlanItemDO.class, PlanItemDO::getItemId, OrderItemDO::getId) - .eq(PlanItemDO::getPlanId, planId) - .isNotNull(OrderItemDO::getId); - List orderItemDOS = orderItemMapper.selectJoinList(OrderItemDO.class, wrapper); - List orderIds = orderItemDOS.stream().map(OrderItemDO::getOrderId).collect(Collectors.toList()); + + // 查询排单对应的大板信息 + List goodsDOS = goodsMapper.selectGoodsListByOrderIds(planId,getUserOrganId()); - List orderDOS = orderMapper.selectBatchIds(orderIds); - -// List goodsDOS = goodsMapper.selectList(new LambdaQueryWrapperX().in(GoodsDO::getOrderId, orderIds)); + List orderIds = goodsDOS.stream().map(GoodsReqVO::getOrderId).toList(); - List plateIds = orderItemDOS.stream().map(OrderItemDO::getPlateId).distinct().toList(); + List ids = goodsDOS.stream().map(GoodsReqVO::getId).toList(); - List goodsIds = plateMapper.selectBatchIds(plateIds).stream().map(PlateDO::getGoodsId).distinct().toList(); - List goodsDOS = goodsMapper.selectGoodsListByOrderIds(goodsIds,getUserOrganId()); + List plateDetialRespVOS = plateMapper.selectPlateListByGoodsIds(ids, getUserOrganId()); - List plateDOS = plateMapper.selectPlateDetialListByIds(plateIds,getUserOrganId()); - for (PlateDetialRespVO plateDetailsRespVO : plateDOS) { + List bodyIds = plateDetialRespVOS.stream().map(PlateDetialRespVO::getBodyId).distinct().toList(); + + + List orderBodyDOS = orderBodyMapper.selectOrderBodyList(bodyIds, getUserOrganId()); + + + List detialRespVOS = new ArrayList<>(); + + + for (OrderBodyDO orderBodyDO : orderBodyDOS) { + + detialRespVOS.addAll(plateDetialRespVOS.stream().filter(f -> f.getBodyId().equals(orderBodyDO.getId())).peek(m -> { + m.setBodyName(orderBodyDO.getName()); + m.setRoomName(orderBodyDO.getRoomName()); + }).toList()); + + } + + + + for (PlateDetialRespVO plateDetailsRespVO : detialRespVOS) { String name = ""; if(!plateDetailsRespVO.getProcessGroupLists().isEmpty()) { for (ProcessGroupList groupNameList : plateDetailsRespVO.getProcessGroupLists()) { @@ -561,12 +578,26 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { name = name.substring(0, name.length() - 1); } plateDetailsRespVO.setProcessGroupName(name); + + plateDetailsRespVO.setGoodsId(goodsDOS + .stream() + .filter(f->f.getId().equals(plateDetailsRespVO.getId())) + .map(GoodsReqVO::getGoodsId) + .findAny().orElse(null)); + + plateDetailsRespVO.setGoodsName(goodsDOS + .stream() + .filter(f->f.getId().equals(plateDetailsRespVO.getId())) + .map(GoodsReqVO::getGoodsName) + .findAny().orElse(null)); + } + List orderDOS = orderMapper.selectBatchIds(orderIds); // 造型数据的尺寸长度 - Integer orderModelSize = plateDOS.size(); + Integer orderModelSize = plateDetialRespVOS.size(); List orderModelDOS = buildRespByOrderIds(orderIds, ORDER_PLATE_MODEL, orderModelSize); @@ -592,7 +623,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { .orderList(orderDOS) .plan(planDO) .goodsList(goodsDOS) - .plateList(plateDOS) + .plateList(plateDetialRespVOS) .plateModels(orderModelDOS) .optimizeBoardModelDOS(optimizeBoardModelDOS) .optimizeRemainPlates(optimizeRemainPlates) @@ -627,10 +658,30 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { List orderDOS = orderMapper.selectBatchIds(orderIds); - List plateDetialRespVOS = plateMapper.selectPlateListByGoodIds(ids, getUserOrganId()); + + List plateDetialRespVOS = plateMapper.selectPlateListByGoodsIds(ids, getUserOrganId()); - for (PlateDetialRespVO plateDetailsRespVO : plateDetialRespVOS) { + List bodyIds = plateDetialRespVOS.stream().map(PlateDetialRespVO::getBodyId).distinct().toList(); + + + List orderBodyDOS = orderBodyMapper.selectOrderBodyList(bodyIds, getUserOrganId()); + + + List detialRespVOS = new ArrayList<>(); + + + for (OrderBodyDO orderBodyDO : orderBodyDOS) { + + detialRespVOS.addAll(plateDetialRespVOS.stream().filter(f -> f.getBodyId().equals(orderBodyDO.getId())).peek(m -> { + m.setBodyName(orderBodyDO.getName()); + m.setRoomName(orderBodyDO.getRoomName()); + }).toList()); + + } + + + for (PlateDetialRespVO plateDetailsRespVO : detialRespVOS) { String name = ""; if(!plateDetailsRespVO.getProcessGroupLists().isEmpty()) { for (ProcessGroupList groupNameList : plateDetailsRespVO.getProcessGroupLists()) { @@ -684,6 +735,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { // 先根据排单查找是否有优化数据,如果有,删除 List planIds = req.getOptimizeBoardModelDOS().stream().map(OptimizeBoardModelDO::getPlanId).toList(); + // todo 目前只解决非混单的情况下, List optimizeBoardModelDOS = buildBoardByPlanIds(planIds, ORDER_REMAIN_PLATE_MODEL, planIds.size()); if(!optimizeBoardModelDOS.isEmpty()){ @@ -696,84 +748,75 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { batchSaveBoardModel(req.getOptimizeBoardModelDOS()); + // 保存余料板的数据 if (CollectionUtil.isNotEmpty(req.getOptimizeRemainPlates())) { - ArrayList remainPlateDOS = new ArrayList<>(); - for (OptimizeRemainPlate optimizeRemainPlate : req.getOptimizeRemainPlates()) { - remainPlateDOS.add(RemainPlateDO.builder() - .id(optimizeRemainPlate.getId()) - .planId(optimizeRemainPlate.getPlanId()) - .initPlanId(optimizeRemainPlate.getInitPlanId()) - .organId(getUserOrganId()) - .status(optimizeRemainPlate.getStatus()) - .isCutting(true) - .useType(RemainTypeEnum.PATCHINGPLATE.getType()) - .goodsId(optimizeRemainPlate.getGoodsId().toString()) - .name(optimizeRemainPlate.getGoodsName()) - .material(optimizeRemainPlate.getMaterial()) - .color(optimizeRemainPlate.getColor()) - .width(optimizeRemainPlate.getWidth()) - .length(optimizeRemainPlate.getLength()) - .thickness(optimizeRemainPlate.getThickness()) - .brand(optimizeRemainPlate.getBrand()) - .placeStyle(optimizeRemainPlate.getPlaceStyle()) - .store("") - .count(optimizeRemainPlate.getCount()) - .remark(optimizeRemainPlate.getRemark()) - .outLineJson(optimizeRemainPlate.getOutLineJson()) - .build()); - } + List remainPlateDoS = BeanUtils.toBean(req.getOptimizeRemainPlates(), RemainPlateDO.class) + .stream() + .map(m -> m.setUseType(1)) + .map(m -> m.setOutLineJson("")).toList(); - remainPlateMapper.updateBatch(remainPlateDOS); + + List insertPlateDoS = remainPlateDoS.stream().filter(f -> f.getId() == null).toList(); + + List updatePlateDoS = remainPlateDoS.stream().filter(f -> f.getId() != null).toList(); + + Boolean aBoolean = insertPlateDoS.isEmpty() ? null : remainPlateMapper.insertBatch(insertPlateDoS); + + Boolean bBoolean = updatePlateDoS.isEmpty() ? null : remainPlateMapper.updateBatch(updatePlateDoS); } + + // 有新增小板,往数据库新增小板 - if (CollectionUtil.isNotEmpty(req.getAddPlateIds())) { + // todo 目前新增小板在界面就已经走接口了,这个逻辑应该用不到了 - List addPlates = req.getPlateList().stream() - .filter(m -> req.getAddPlateIds().contains(m.getPlateId())) - .map(m -> m.setPlateId(null)) - .collect(Collectors.toList()); - - // 批量新增小板信息 - List plateDOS = BeanUtils.toBean(addPlates, PlateDO.class); - - plateMapper.insertBatch(plateDOS); - - // 批量新增生产单明细表信息 - ArrayList orderItemDOS = new ArrayList<>(); - - for (PlateDetialRespVO plateDetialRespVO : req.getPlateList()) { - orderItemDOS.add(OrderItemDO.builder() -// .id(plateDetialRespVO.getItemId()) - .bodyId(plateDetialRespVO.getBodyId()) - .roomId(plateDetialRespVO.getRoomId()) -// .groupId(Long.valueOf(plateDetialRespVO.getProcessGroupId())) - .orderId(plateDetialRespVO.getOrderId()) - .type(1) - .plateId(plateDetialRespVO.getPlateId()) - .build()); - } - - - orderItemMapper.insertBatch(orderItemDOS); - - } - - // 有删除的小板ID,删除小板 - if (CollectionUtil.isNotEmpty(req.getDeletePlateIds())) { - - // 删除生产单板件表的小板 - plateMapper.deleteBatchIds(req.getDeletePlateIds()); - - // 删除生产单明细表中对应的小板数据 - orderItemMapper.deleteByPlateId(req.getDeletePlateIds()); - - - } +// if (CollectionUtil.isNotEmpty(req.getAddPlateIds())) { +// +// List addPlates = req.getPlateList().stream() +// .filter(m -> req.getAddPlateIds().contains(m.getPlateId())) +// .map(m -> m.setPlateId(null)) +// .collect(Collectors.toList()); +// +// // 批量新增小板信息 +// List plateDOS = BeanUtils.toBean(addPlates, PlateDO.class); +// +// plateMapper.insertBatch(plateDOS); +// +// // 批量新增生产单明细表信息 +// ArrayList orderItemDOS = new ArrayList<>(); +// +// for (PlateDetialRespVO plateDetialRespVO : req.getPlateList()) { +// orderItemDOS.add(OrderItemDO.builder() +//// .id(plateDetialRespVO.getItemId()) +// .bodyId(plateDetialRespVO.getBodyId()) +// .roomId(plateDetialRespVO.getRoomId()) +//// .groupId(Long.valueOf(plateDetialRespVO.getProcessGroupId())) +// .orderId(plateDetialRespVO.getOrderId()) +// .type(1) +// .plateId(plateDetialRespVO.getPlateId()) +// .build()); +// } +// +// +// orderItemMapper.insertBatch(orderItemDOS); +// +// } +// +// // 有删除的小板ID,删除小板 +// if (CollectionUtil.isNotEmpty(req.getDeletePlateIds())) { +// +// // 删除生产单板件表的小板 +// plateMapper.deleteBatchIds(req.getDeletePlateIds()); +// +// // 删除生产单明细表中对应的小板数据 +// orderItemMapper.deleteByPlateId(req.getDeletePlateIds()); +// +// +// } } 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 09570ec19..9512ab07a 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 @@ -24,7 +24,6 @@ import com.cf.imes.framework.mybatis.core.query.QueryWrapperX; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderRoomBodyList; -import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.BlockPlaceInfo; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.NotPlanGoodsReqVO; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.NotPlanGoodsRespVO; import com.cf.imes.module.executor.controller.admin.plan.vo.*; @@ -48,9 +47,6 @@ import com.cf.imes.module.executor.enums.OrderStatusEnum; import com.cf.imes.module.executor.service.optimizeplan.OptimizePlanService; import com.cf.imes.module.system.api.machine.MachineApi; import com.cf.imes.module.system.api.machine.dto.CuttingRespDTO; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -71,7 +67,6 @@ import static com.cf.imes.framework.common.util.string.SearchUtil.insertSeparato import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*; import static com.cf.imes.module.system.enums.ErrorCodeConstants.NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE; -import static com.cf.imes.module.system.enums.ErrorCodeConstants.THE_BOARD_HAS_BEEN_CUT_INTO_PIECES; /** * 生产单开料排单 Service 实现类 @@ -130,7 +125,7 @@ public class PlanServiceImpl implements PlanService { ArrayList planDOS = new ArrayList<>(); - ArrayList planItemDOS = new ArrayList<>(); + List goodsDOS = new ArrayList<>(); Map goodsPlanId = new HashMap<>(); @@ -154,18 +149,24 @@ public class PlanServiceImpl implements PlanService { goodsPlanId.put(entry.getKey(), plan.getId()); - Set itemIds = plateMapper.selectBatchOrderIdsAndGoodsIds(items,getUserOrganId()); +// Set itemIds = plateMapper.selectBatchOrderIdsAndGoodsIds(items,getUserOrganId()); - if (CollectionUtil.isNotEmpty(itemIds)) { + List goodsIds = items.stream().map(PlanSaveReqVO.Item::getId).toList(); - for (Long itemId : itemIds) { - planItemDOS.add(PlanItemDO.builder() - .planId(plan.getId()) - .itemId(itemId) - .build()); - } + List goodsDOList = goodsMapper.selectPlanGoodsList(goodsIds, getUserOrganId()).stream().map(m -> m.setPlanId(plan.getId())).toList(); - } + goodsDOS.addAll(goodsDOList); + +// if (CollectionUtil.isNotEmpty(itemIds)) { +// +// for (Long itemId : itemIds) { +// planItemDOS.add(PlanItemDO.builder() +// .planId(plan.getId()) +// .itemId(itemId) +// .build()); +// } +// +// } } @@ -173,7 +174,7 @@ public class PlanServiceImpl implements PlanService { planMapper.insertBatch(planDOS); - planItemMapper.insertBatch(planItemDOS); + goodsMapper.updateBatch(goodsDOS); return goodsPlanId; @@ -207,74 +208,111 @@ public class PlanServiceImpl implements PlanService { @Transactional(rollbackFor = Exception.class) public void updatePlan(PlanSaveReqVO updateReqVO) { - // 校验存在 + // 校验排单是否存在,是否开料 validatePlanExists(updateReqVO.getId(),updateReqVO.getMachineId()); + // 更新 PlanDO plan = BeanUtils.toBean(updateReqVO, PlanDO.class); - // 目前只解决非混单的情况 + // 校验新增的板材是否和排单为统一类型的 if(!updateReqVO.getItemList().isEmpty()){ - List optimizeBoardModelDOS = buildBoardByPlanId(plan.getId(), ORDER_REMAIN_PLATE_MODEL, 99); + // todo 目前之解决非混单的情况,混单的情况待解决 + Long goodsId = updateReqVO.getItemList().stream().map(PlanSaveReqVO.Item::getGoodsId).distinct().toList().get(0); - OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0); - List goodsNo = optimizeBoardModelDO.getCutedBoardInfo().getCutedBoardList(); + // todo 目前只解决非混单的情况 + Long goodsIds = BeanUtils.toBean(goodsMapper.selectPlanGoods(plan.getId(), getUserOrganId()).stream().map(GoodsDO::getGoodsId).toList(), Long.class).get(0); - List plateNo = new ArrayList<>(); - - // 创建一个列表存储 BlockPlaceInfo 对象,将优化的小板信息拿出,获取到小板编号,查询生产单,修改生产单的状态 - List outputList = new ArrayList<>(); - - ObjectMapper mapper = new ObjectMapper(); - - try { - // 解析 JSON 字符串 - JsonNode jsonArray = mapper.readTree(optimizeBoardModelDO.getBlockPlaceInfo()); - - // 遍历 JSON 数组并提取所需字段 - if (jsonArray.isArray()) { - for (JsonNode jsonNode : jsonArray) { - Long bi = jsonNode.get("bi").asLong(); - Long bo = jsonNode.get("bo").asLong(); - outputList.add(new BlockPlaceInfo(bi,bo)); - } - } - } catch (JsonProcessingException e) { - e.printStackTrace(); + if(goodsId.equals(goodsIds)){ + throw exception(PLATE_ERROR); } - for (Long goods : goodsNo) { - plateNo.addAll(outputList.stream().filter(f -> f.getBi().equals(goods)).map(BlockPlaceInfo::getBo).distinct().toList()); - } + // 修改排单板材,删除排单的优化生产数据 + deleteByPlanId(Collections.singletonList(plan.getId()),ORDER_REMAIN_PLATE_MODEL); - if(updateReqVO.getDeleteIds() != null) { + List ids = updateReqVO.getItemList().stream().map(PlanSaveReqVO.Item::getId).toList(); - List plateDOS = plateMapper.selectPlateListByGoodsIds(updateReqVO.getDeleteIds(), getUserOrganId()); + List goodsDOS = new ArrayList<>(goodsMapper.selectPlanGoodsList(ids, getUserOrganId()) + .stream().map(m -> m.setPlanId(plan.getId())).toList()); - List deletePlateNos = plateDOS.stream().map(PlateDO::getPlateNo).map(Long::valueOf).toList(); + if (!updateReqVO.getDeleteIds().isEmpty()){ - List plateNoCopyList = new ArrayList<>(plateNo); - - // 使用retainAll方法保留 plateNo 中与 deletePlateNos 相同的元素 - plateNoCopyList.retainAll(deletePlateNos); - - // 如果 plateNoCopyList 不为空,说明两个List有共同的元素 - boolean b = !plateNoCopyList.isEmpty(); - - if (b) { - - throw exception(THE_BOARD_HAS_BEEN_CUT_INTO_PIECES); - - } + goodsDOS.addAll(goodsMapper.selectPlanGoodsList(ids, getUserOrganId()).stream().map(m -> m.setPlanId(null)).toList()); } + + goodsMapper.updateBatch(goodsDOS); + + } + planMapper.updateById(plan); +// +// // todo 目前只解决非混单的情况,混单的情况待解决,这个逻辑目前应该不用,排单是否开料判断了,可保留,万一以后需求更改 +// if(!updateReqVO.getItemList().isEmpty()){ +// +// List optimizeBoardModelDOS = buildBoardByPlanId(plan.getId(), ORDER_REMAIN_PLATE_MODEL, 10); +// +// OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0); +// +// List goodsNo = optimizeBoardModelDO.getCutedBoardInfo().getCutedBoardList(); +// +// List plateNo = new ArrayList<>(); +// +// // 创建一个列表存储 BlockPlaceInfo 对象,将优化的小板信息拿出,获取到小板编号,查询生产单,修改生产单的状态 +// List outputList = new ArrayList<>(); +// +// ObjectMapper mapper = new ObjectMapper(); +// +// try { +// // 解析 JSON 字符串 +// JsonNode jsonArray = mapper.readTree(optimizeBoardModelDO.getBlockPlaceInfo()); +// +// // 遍历 JSON 数组并提取所需字段 +// if (jsonArray.isArray()) { +// for (JsonNode jsonNode : jsonArray) { +// Long bi = jsonNode.get("bi").asLong(); +// Long bo = jsonNode.get("bo").asLong(); +// outputList.add(new BlockPlaceInfo(bi,bo)); +// } +// } +// } catch (JsonProcessingException e) { +// e.printStackTrace(); +// } +// +// for (Long goods : goodsNo) { +// plateNo.addAll(outputList.stream().filter(f -> f.getBi().equals(goods)).map(BlockPlaceInfo::getBo).distinct().toList()); +// } +// +// if(updateReqVO.getDeleteIds() != null) { +// +// List plateDOS = plateMapper.selectPlateListByGoodsIds(updateReqVO.getDeleteIds(), getUserOrganId()); +// +// List deletePlateNos = plateDOS.stream().map(PlateDO::getPlateNo).map(Long::valueOf).toList(); +// +// List plateNoCopyList = new ArrayList<>(plateNo); +// +// // 使用retainAll方法保留 plateNo 中与 deletePlateNos 相同的元素 +// plateNoCopyList.retainAll(deletePlateNos); +// +// // 如果 plateNoCopyList 不为空,说明两个List有共同的元素 +// boolean b = !plateNoCopyList.isEmpty(); +// +// if (b) { +// +// throw exception(THE_BOARD_HAS_BEEN_CUT_INTO_PIECES); +// +// } +// +// } +// } + + } @Override @@ -358,7 +396,7 @@ public class PlanServiceImpl implements PlanService { - private void validatePlanExists(Long id,Long machineId) { + private void validatePlanExists(Long id, Long machineId) { PlanDO planDO = planMapper.selectById(id); if ( planDO== null) { throw exception(PLAN_NOT_EXISTS); @@ -462,31 +500,47 @@ public class PlanServiceImpl implements PlanService { List machines = machineApi.list(machineIds).getCheckedData(); - - List plateInfoVOS = planItemMapper.selectGoodsList(planIds,getUserOrganId()); - - List orderIdsList = new ArrayList<>(); - - plateInfoVOS.forEach(f-> - orderIdsList.addAll(f.getOrderIdList())); +// List plateInfoVOS = planItemMapper.selectGoodsList(planIds,getUserOrganId()); - List plateInfoVOList = plateMapper.selectPlateArea(orderIdsList, getUserOrganId()); + // 查询排单对应的大板板材信息 + List plateInfoVOS = goodsMapper.selectOrderGoodsPlateList(planIds, getUserOrganId()); - // todo 目前这种情况只解决没有混单的情况,混单情况待解决 (目前解决,数据正确性待测试) - for (PlateInfoVO plateInfoVO : plateInfoVOS) { - plateInfoVO.setArea(plateInfoVOList.stream() - .filter(s->s.getGoodsId().equals(plateInfoVO.getGoodsId())) - .map(PlateInfoVO::getArea) - .reduce(BigDecimal.ZERO,BigDecimal::add)); + // 查询排单对应的小板数量和小板面积 + List infoVOList = plateInfoVOS.stream().peek(m -> { -// plateInfoVO.setOptimizeGoodsCount(plateInfoVOList.stream().filter(s->s.getGoodsId().equals(plateInfoVO.getGoodsId())).mapToLong(PlateInfoVO::getOptimizeGoodsCount).sum()); - } + m.setCount((int) m.getPlatePages().stream().map(PlatePage::getPlateId).count()); + + m.setArea(m.getPlatePages().stream().map(PlatePage::getArea).reduce(BigDecimal.ZERO, BigDecimal::add)); + m.setPlatePages(null); + + }).toList(); + + +// List orderIdsList = new ArrayList<>(); +// +// plateInfoVOS.forEach(f-> +// orderIdsList.addAll(f.getOrderIdList())); +// +// +// List plateInfoVOList = plateMapper.selectPlateArea(orderIdsList, getUserOrganId()); +// +// +// +// // todo 目前这种情况只解决没有混单的情况,混单情况待解决 (目前解决,数据正确性待测试) +// for (PlateInfoVO plateInfoVO : plateInfoVOS) { +// plateInfoVO.setArea(plateInfoVOList.stream() +// .filter(s->s.getGoodsId().equals(plateInfoVO.getGoodsId())) +// .map(PlateInfoVO::getArea) +// .reduce(BigDecimal.ZERO,BigDecimal::add)); +// +//// plateInfoVO.setOptimizeGoodsCount(plateInfoVOList.stream().filter(s->s.getGoodsId().equals(plateInfoVO.getGoodsId())).mapToLong(PlateInfoVO::getOptimizeGoodsCount).sum()); +// } // 根据排单ID查询ES中的优化数据 todo 目前只解决无混单的情况,混单情况待解决 - List optimizeBoardModelDOS = buildBoardByPlanIds(planIds, ORDER_REMAIN_PLATE_MODEL, plateInfoVOS.size()); + List optimizeBoardModelDOS = buildBoardByPlanIds(planIds, ORDER_REMAIN_PLATE_MODEL, infoVOList.size()); // 获取排单对应的生产单的信息 @@ -504,11 +558,11 @@ public class PlanServiceImpl implements PlanService { .findAny() .orElse(null)); // 板材信息列表 - e.setPlateInfoList(plateInfoVOS.stream() + e.setPlateInfoList(infoVOList.stream() .filter(f -> Objects.equals(f.getPlanId(), e.getId())) .collect(Collectors.toList())); // todo 小板总数量目前只解决没有混单的情况时的小板数量,后续待加入混单情况 (目前解决,数据正确性待测试) - e.setPlateNum(plateInfoVOS.stream() + e.setPlateNum(infoVOList.stream() .filter(f -> Objects.equals(f.getPlanId(), e.getId())) .mapToLong(PlateInfoVO::getCount) .sum()); @@ -559,32 +613,44 @@ public class PlanServiceImpl implements PlanService { QueryWrapperX queryWrapperX = new QueryWrapperX<>(); queryWrapperX - .eq("a.organ_id",getUserOrganId()) -// .eq("a.status",OrderStatusEnum.SORTED.getStatus()) - .eq("a.deleted",false) - .in("a.status",statusList) - .isNull("opi.item_id") + .eq("o.organ_id",getUserOrganId()) + .eq("o.deleted",false) + .in("o.status",statusList) + .eq("og.organ_id",getUserOrganId()) + .eq("og.plan_id",0) + .eq("og.deleted",false) +// .isNull("opi.item_id") // todo 修改排单数据筛选,目前只解决了非混单的情况,混单情况待解决 .inIfPresent("op.goods_id",goodsDOS.isEmpty() ? null :goodsDOS.stream().map(GoodsDO::getId).toList()) - - .inIfPresent("a.id",pageReqVO.getOrderIds()) - .likeIfPresent("a.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId().toString() : null) + .inIfPresent("o.id",pageReqVO.getOrderIds()) + .likeIfPresent("o.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId().toString() : null) .inIfPresent("op.goods_id",pageReqVO.getIds()) - .eqIfPresent("a.customer", pageReqVO.getConsignee()) - .eqIfPresent("a.custom_order_no", pageReqVO.getDefaultId()) - .eqIfPresent("a.address", pageReqVO.getConsigneeAddress()) - .betweenIfPresent("a.create_time", pageReqVO.getCreateTime()) - .groupBy("a.id", " a.order_date", "a.delivery_date", "a.customer", "a.address", "a.custom_order_no","a.create_time","a.update_time","a.status") + .likeIfPresent("o.customer", pageReqVO.getConsignee()) + .likeIfPresent("o.custom_order_no", pageReqVO.getDefaultId()) + .likeIfPresent("o.address", pageReqVO.getConsigneeAddress()) + .betweenIfPresent("o.order_date", pageReqVO.getCreateTime()) + .groupBy("o.id", " o.order_date", "o.delivery_date", "o.customer", "o.address", "o.custom_order_no","o.status") .having("count(op.id) != 0") - .orderByDesc("a.create_time"); + .orderByDesc("o.order_date"); - - IPage orderRespVOCopies = orderMapper.selectOrderPage(page, queryWrapperX); + // todo 目前修改一半,速度无法再进行特别的优化,需等后面修改表结构再进行优化 + IPage orderRespVOCopies = orderMapper.selectOrderPage(page,queryWrapperX); if (CollectionUtil.isEmpty(orderRespVOCopies.getRecords())) { return new PageResult<>(); } +// List records = orderRespVOCopies.getRecords(); +// +// orderRespVOCopies.setRecords(records.stream().peek(m -> { +// +// m.setNum((int) m.getPlatePages().stream().map(PlatePage::getPlateId).count()); +// +// m.setArea(m.getPlatePages().stream().map(PlatePage::getArea).reduce(BigDecimal.ZERO, BigDecimal::add)); +// m.setPlatePages(null); +// +// }).toList()); + return new PageResult<>(orderRespVOCopies.getRecords(), orderRespVOCopies.getTotal()); @@ -718,16 +784,26 @@ public class PlanServiceImpl implements PlanService { statusList.add(OrderStatusEnum.IN_PRODUCTION.getStatus()); statusList.add(OrderStatusEnum.SORTED.getStatus()); - List orderIds = orderMapper.selectOrderIdsList(pageReqVO, statusList, getUserOrganId()) - .stream().map(OrderDO::getId).toList(); +// List orderIds = orderMapper.selectOrderIdsList(pageReqVO, statusList, getUserOrganId()) +// .stream().map(OrderDO::getId).distinct().toList(); +// +// List goodsIds = plateMapper.selectPlateIds(pageReqVO, getUserOrganId()) +// .stream().map(PlateDO::getGoodsId).distinct().toList(); + QueryWrapperX queryWrapperX = new QueryWrapperX<>(); queryWrapperX - .eq("oi.organ_id",getUserOrganId()) + .eq("o.organ_id",getUserOrganId()) + .eq("o.deleted",false) + .in("o.status",statusList) + .eq("og.organ_id",getUserOrganId()) + .eq("og.plan_id",0) .eq("og.deleted",false) - .inIfPresent("oi.order_id", orderIds) - .isNull("opi.item_id") - .isNotNull("og.id") + + .inIfPresent("og.order_id", pageReqVO.getOrderIds()) +// .inIfPresent("og.id", goodsIds) +// .isNull("opi.item_id") +// .isNotNull("og.id") // todo 修改排单数据筛选,目前只解决了非混单的情况,混单情况待解决 .eqIfPresent("og.goods_id",pageReqVO.getGoodsId()) @@ -751,44 +827,80 @@ public class PlanServiceImpl implements PlanService { queryWrapperX.likeIfPresent("op.filter_type", insertSeparator(filterTypes)); -// List orderIds = orderMapper.selectOrderIds(queryWrapperX); - - IPage orderGoodsResps = orderMapper.selectOrderIds(page,queryWrapperX); -// if(orderIds.isEmpty()){ -// return new PageResult<>(); -// } + +// IPage orderGoodsResps = goodsMapper.selectOrderGoodsList(page, queryWrapperX); + + + if (CollectionUtil.isEmpty(orderGoodsResps.getRecords())) { + return new PageResult<>(); + } + + + List records = orderGoodsResps.getRecords(); + + + System.out.println("哈哈哈哈哈哈1 "+records.size()); + + List goodsIdList = records.stream().map(OrderGoodsResp::getGoodsId).toList(); + + queryWrapperX.in("og.goods_id", goodsIdList); + + + List goodsResp = orderMapper.selectGoodsListByGoodsId(queryWrapperX); + + +// +// Map> collect = records.stream().collect(Collectors.groupingBy(OrderGoodsResp::getGoodsId)); + + +// for (OrderGoodsResp orderGoodsResp : goodsResp) { +// +// List orderGoodsResps1 = collect.get(orderGoodsResp.getGoodsId()); // // -// List orderIdsList = plateMapper.selectOrderIds(orderIds,getUserOrganId()); -// -// -// List goodsList = orderIdsList.stream().map(OrderIds::getGoodsId).distinct().toList(); -// -// // 修改排单时进行数据筛选,todo 目前只解决非混单情况 -// if(pageReqVO.getGoodsId() != null){ -// -// goodsList = goodsList.stream().filter(f->f.equals(pageReqVO.getGoodsId())).toList(); +// if (orderGoodsResps1 != null) { +// // 合并 otherObjectList 到 obj1 副本中 +// orderGoodsResps1.get().addAll(obj2.getOtherObjectList()); +// } // // } + + + + for (OrderGoodsResp record : records) { + + + List orderIdsList = new ArrayList<>(); + + + List> list = goodsResp.stream().filter(f -> f.getGoodsId().equals(record.getGoodsId())).map(OrderGoodsResp::getOrderIds).toList(); + + + if(!list.isEmpty()){ + + orderIdsList = list.stream().flatMap(Collection::stream).toList(); + + } + + record.setOrderIds(orderIdsList); + + } + + + orderGoodsResps.setRecords(records); + +// for (Map.Entry> entry : collect.entrySet()) { // -// IPage orderGoodsResps = goodsMapper.selectGoods(page,goodsList, getUserOrganId()); - - -// List orderRespVOCopies = orderMapper.selectOrderListByIds(orderIdsList, getUserOrganId()); - - -// for (OrderGoodsResp record : orderGoodsResps.getRecords()) { -// record.setNum(orderRespVOCopies.stream().filter(e-> Objects.equals(e.getGoodsId(), record.getGoodsId())). -// mapToInt(OrderRespVOCopy::getNum).sum()); +// List> list = entry.getValue().stream().map(OrderGoodsResp::getOrderIds).toList(); // -// record.setArea(orderRespVOCopies.stream().filter(e-> Objects.equals(e.getGoodsId(), record.getGoodsId())) -// .map(OrderRespVOCopy::getArea) -// .reduce(BigDecimal.ZERO,BigDecimal::add)); +// List orderds = list.stream().flatMap(Collection::stream).toList(); +// +// List list1 = records.stream().filter(f -> f.getGoodsId().equals(entry.getKey())).map(m -> m.setOrderIds(orderds)).toList(); +// +// orderGoodsResps.setRecords(list1); // -// record.setOrderIds(orderIdsList.stream().filter(e -> Objects.equals(e.getGoodsId(), record.getGoodsId())).collect(Collectors.toList())); -//// record.setOrderList(orderRespVOCopies.stream().filter(e -> Objects.equals(e.getGoodsId(), record.getGoodsId())).collect(Collectors.toList())); // } @@ -859,7 +971,7 @@ public class PlanServiceImpl implements PlanService { for (Long planId : vo.getPlanIds()) { validatePlanExists(planId,null); } - QueryWrapperX queryWrapperX = new QueryWrapperX<>(); + QueryWrapperX queryWrapperX = new QueryWrapperX<>(); String filterTypes = ""; if (Objects.nonNull(vo.getHoleThrough()) && vo.getHoleThrough()) { @@ -872,21 +984,25 @@ public class PlanServiceImpl implements PlanService { filterTypes += PlanFilterTypeEnum.TWODIMENSIONALCUTTINGPATH.getType().toString(); } - queryWrapperX.in("p.plan_id", vo.getPlanIds()) - .eq("a.organ_id",getUserOrganId()) - .eqIfPresent("a.is_door", vo.getIsDoor()) - .eqIfPresent("a.is_special_shaped", vo.getRectangle() != null ? false: null) - .eqIfPresent("a.is_special_shaped", vo.getSpecialShaped()) - .eqIfPresent("a.is_sculpt", vo.getSculpt()) - .betweenIfPresent("a.width", new BigDecimal[]{vo.getWidthMinRang(), vo.getWidthMaxRang()}) - .betweenIfPresent("a.height", new BigDecimal[]{vo.getLongMinRang(), vo.getLongMaxRang()}) - .likeIfPresent("a.filter_type", insertSeparator(filterTypes)) - .betweenIfPresent("f.delivery_date", new Date[]{vo.getBeginDate(), vo.getEndDate()}) - .orderByDesc("a.order_id") - .orderByDesc("a.name"); + queryWrapperX.eq("og.organ_id",getUserOrganId()) + .in("og.plan_id", vo.getPlanIds()) + .eqIfPresent("op.is_door", vo.getIsDoor()) + .eqIfPresent("op.is_special_shaped", vo.getRectangle() != null ? false: null) + .eqIfPresent("op.is_special_shaped", vo.getSpecialShaped()) + .eqIfPresent("op.is_sculpt", vo.getSculpt()) + .betweenIfPresent("op.width", new BigDecimal[]{vo.getWidthMinRang(), vo.getWidthMaxRang()}) + .betweenIfPresent("op.height", new BigDecimal[]{vo.getLongMinRang(), vo.getLongMaxRang()}) + .likeIfPresent("op.filter_type", insertSeparator(filterTypes)) + .orderByDesc("op.order_id"); + PageDTO page = new PageDTO<>(vo.getPageNo(), vo.getPageSize()); - IPage pageResult = plateMapper.selectPlateByPlanId(page, queryWrapperX); + +// IPage pageResult = plateMapper.selectPlateByPlanId(page, queryWrapperX); + + IPage pageResult = goodsMapper.selectPlanGoodsListByPlanId(page, queryWrapperX); + Set bodyIds = pageResult.getRecords().stream().map(PlateResList::getBodyId).collect(Collectors.toSet()); + if (CollectionUtil.isNotEmpty(bodyIds)) { List orderBodyDOS = orderBodyMapper.selectBatchIds(bodyIds); for (PlateResList resList : pageResult.getRecords()) { @@ -900,12 +1016,12 @@ public class PlanServiceImpl implements PlanService { @Override public PageResult getOrderByPlanId(PlanOrderPageReqVO pageReqVO) { MPJLambdaWrapperX lambdaWrapperX = new MPJLambdaWrapperX<>(); - lambdaWrapperX.leftJoin(OrderItemDO.class, OrderItemDO::getOrderId, OrderDO::getId) - .leftJoin(PlanItemDO.class, PlanItemDO::getItemId, OrderItemDO::getId) - .eq(PlanItemDO::getOrganId,getUserOrganId()) - .eq(PlanItemDO::getPlanId, pageReqVO.getPlanId()) + lambdaWrapperX.leftJoin(GoodsDO.class, GoodsDO::getOrderId, OrderDO::getId) + .eq(GoodsDO::getOrganId,getUserOrganId()) + .eq(GoodsDO::getPlanId, pageReqVO.getPlanId()) .distinct(); + PageResult pageResult = orderMapper.selectJoinPage(pageReqVO, OrderDO.class, lambdaWrapperX); return BeanUtils.toBean(pageResult, OrderRespVO.class); } 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 7bf338290..8afc79103 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 @@ -32,11 +32,7 @@ orp.id as remainId from order_goods og left join order_remain_plate orp on og.id = orp.goods_id and og.organ_id = orp.organ_id - where og.organ_id =#{organId} and og.deleted = false and og.id in - - - #{id} - + where og.organ_id =#{organId} and og.deleted = false and og.plan_id = #{planId} @@ -134,4 +130,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml index 8b77ae91f..8ab97e0c8 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml @@ -2,13 +2,54 @@ - + + select distinct + o.id as orderId, + o.order_date as orderDate, + o.delivery_date as deliveryDate, + o.customer as customer, + o.address as address, + o.custom_order_no as defineId, + o.status as status, + count( op.id) as num , + sum(op.area) as area + + from orders o + + left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id + + left join order_plate op on og.organ_id = op.organ_id and og.id = op.goods_id and og.deleted = op.deleted ${ew.customSqlSegment} @@ -271,10 +312,10 @@ og.width, og.height, og.brand - from order_item oi - left join order_plan_item opi on oi.id = opi.item_id and oi.organ_id = opi.organ_id - left join order_plate op on oi.plate_id = op.id and oi.organ_id = op.organ_id - left join order_goods og on op.goods_id = og.id and op.organ_id = og.organ_id + + from orders o + left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id + left join order_plate op on og.organ_id = op.organ_id and og.id = op.goods_id and og.deleted = op.deleted ${ew.customSqlSegment} @@ -282,4 +323,22 @@ + + + + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderBody/OrderBodyMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderBody/OrderBodyMapper.xml index cc1b0e091..a409533a4 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderBody/OrderBodyMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderBody/OrderBodyMapper.xml @@ -55,5 +55,20 @@ + + + + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderGroup/OrderGroupMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderGroup/OrderGroupMapper.xml index 82d058346..94a7b211b 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderGroup/OrderGroupMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderGroup/OrderGroupMapper.xml @@ -11,4 +11,19 @@ from `order_group` as gp where gp.order_id = #{orderId} and gp.organ_id = #{organId} and gp.deleted = 0 + + + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml index 5360f906c..e1269539b 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml @@ -258,4 +258,35 @@ + + + + + + + + + + + + + + + + + + + + \ 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 4bccbfb7b..0fac4cc42 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 @@ -4,62 +4,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + \ No newline at end of file