diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/processStep/ProcessStepMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/processStep/ProcessStepMapper.java index 8ff654386..189ba2814 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/processStep/ProcessStepMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/processStep/ProcessStepMapper.java @@ -80,4 +80,13 @@ public interface ProcessStepMapper extends BaseMapperX { .eqIfPresent(ProcessStepDO::getStatus,false)); } + + + default List selectProcessIds(List orderIds, Long organId,Integer number) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ProcessStepDO::getOrganId, organId) + .inIfPresent(ProcessStepDO::getOrderId, orderIds) + .eqIfPresent(ProcessStepDO::getType,number)); + + } } \ 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/PackController.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/PackController.java index 824d6f807..75953b3e0 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/PackController.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/PackController.java @@ -4,14 +4,12 @@ package com.cf.imes.module.manage.controller.admin.pack; 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.util.object.BeanUtils; import com.cf.imes.framework.excel.core.util.ExcelUtils; import com.cf.imes.framework.operatelog.core.annotations.OperateLog; +import com.cf.imes.module.manage.controller.admin.pack.prePack.PrePackReqVO; import com.cf.imes.module.manage.controller.admin.pack.vo.*; import com.cf.imes.module.manage.controller.admin.query.vo.pack.OrderPackageVO; import com.cf.imes.module.manage.controller.admin.query.vo.pack.PackageDetailsRespVO; -import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.OrderModuleReqVO; -import com.cf.imes.module.manage.dal.dataobject.query.OrderPackageDO; import com.cf.imes.module.manage.service.pack.PackService; import com.cf.imes.module.manage.service.query.ProductionStatusService; import io.swagger.v3.oas.annotations.Operation; @@ -263,19 +261,30 @@ public class PackController { - -/* - @GetMapping("/query") - @Operation(summary = "板材列表下的查询") + @GetMapping("/getPrePackInfo") + @Operation(summary = "查询预打包优化信息") + @Parameter(name = "orderId", description = "生产单Id", required = true) @PreAuthorize("@ss.hasPermission('manage:pack:query')") - public CommonResult> GetOrderPlateGroup(@Valid Long orderId) { + public CommonResult getPrePackInfo (@Valid @RequestParam("orderId") Long orderId) { - return success(packService.GetOrderPlateGroup(orderId)); + return success(packService.getPrePackInfo(orderId)); } -*/ + @PostMapping("/saveOptimizeInfo") + @Operation(summary = "预打包保存优化信息") + @PreAuthorize("@ss.hasPermission('manage:pack:insert')") + public CommonResult saveOptimizeInfo(@Valid @RequestBody PrePackReqVO reqVO) { + + packService.saveOptimizeInfo(reqVO); + + return success(true); + + + } + + } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PackPlateList.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PackPlateList.java new file mode 100644 index 000000000..e761dc1a5 --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PackPlateList.java @@ -0,0 +1,30 @@ +package com.cf.imes.module.manage.controller.admin.pack.prePack; + + +import lombok.Builder; +import lombok.Data; +import lombok.ToString; + +import java.util.List; + +@Data +@ToString(callSuper = true) +@Builder +public class PackPlateList { + + + // 包裹ID + private Long packId; + + // 包裹编号 + private String packNo; + + // 板材ID + private Long plateId; + + // 包裹编号 + private String plateNo; + + + +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PrePackData.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PrePackData.java new file mode 100644 index 000000000..78f26185f --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PrePackData.java @@ -0,0 +1,30 @@ +package com.cf.imes.module.manage.controller.admin.pack.prePack; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.ToString; + +@Schema(description = "预打包的优化结构") +@Data +@ToString(callSuper = true) +public class PrePackData { + + + @Schema(description = "点的位置信息") + private Double pointX; + private Double pointY; + + @Schema(description = "板材编号") + private String plateNo; + + @Schema(description = "板材宽度") + private Long plateWidth; + + @Schema(description = "板材高度") + private Long plateHeight; + + + + +} 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 new file mode 100644 index 000000000..675805100 --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PrePackOptimizeInfo.java @@ -0,0 +1,25 @@ +package com.cf.imes.module.manage.controller.admin.pack.prePack; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.ToString; + +import java.util.List; + +@Schema(description = "预打包的优化结构") +@Data +@ToString(callSuper = true) +public class PrePackOptimizeInfo { + + + @Schema(description = "包裹编号") + private String packNo; + + + @Schema(description = "优化的数据") + private List optimizeData; + + + +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PrePackReqVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PrePackReqVO.java new file mode 100644 index 000000000..89ea74e76 --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/prePack/PrePackReqVO.java @@ -0,0 +1,34 @@ +package com.cf.imes.module.manage.controller.admin.pack.prePack; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.ToString; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Schema(description = "管理后台 - 预打包保存优化信息") +@Data +@ToString(callSuper = true) +public class PrePackReqVO { + + + @Schema(description = "生产单ID") + private Long orderId; + + + @Schema(description = "优化信息") + @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) + private Map> optimizeInfo; + + + @Schema(description = "是否自动打包") + private Boolean isAutoPack; + + + + +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PackRespVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PackRespVO.java index 648effaee..0b430f8bd 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PackRespVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PackRespVO.java @@ -41,7 +41,7 @@ public class PackRespVO { private LocalDateTime deliveryDate; - @Schema(description = "订单状态", requiredMode = Schema.RequiredMode.REQUIRED,example = "0") + @Schema(description = "打包状态", requiredMode = Schema.RequiredMode.REQUIRED,example = "0") private Integer status; diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/pack/OrderPrepackagedDO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/pack/OrderPrepackagedDO.java new file mode 100644 index 000000000..dfddd51d8 --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/pack/OrderPrepackagedDO.java @@ -0,0 +1,31 @@ +package com.cf.imes.module.manage.dal.dataobject.pack; + + +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + + +@TableName("order_prepackaged") +@Data +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OrderPrepackagedDO { + + + @TableId + // 生产单号-主键 + private Long orderId; + + + // 预打包优化信息 + private String result; + + + // 组织 ID + @TableField(fill = FieldFill.INSERT_UPDATE) + private Long organId; + + +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.java index 0b781883e..a1c518154 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.java @@ -1,6 +1,7 @@ package com.cf.imes.module.manage.dal.mysql.pack; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.cf.imes.framework.common.enums.OrderPackageStatusEnum; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; @@ -77,4 +78,13 @@ public interface OrderPackageMapper extends BaseMapperX { List selectPackPieceCount(@Param("orderIds") List orderIds, @Param("organId") Long organId); List selectOrderPack(@Param("orderId") Long orderId,@Param("organId") Long organId); + + + // 单个修改删除状态 + default void updateDelete(Long orderId) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper() + .set(OrderPackageDO::getDeleted, true) + .eq(OrderPackageDO::getOrderId, orderId); + update(wrapper); + } } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPrepackagedMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPrepackagedMapper.java new file mode 100644 index 000000000..806c888f3 --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPrepackagedMapper.java @@ -0,0 +1,30 @@ +package com.cf.imes.module.manage.dal.mysql.pack; + + +import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; +import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.cf.imes.module.manage.dal.dataobject.pack.OrderPrepackagedDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface OrderPrepackagedMapper extends BaseMapperX { + + + + default List selectOrderList(Long orderId, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(OrderPrepackagedDO::getOrganId, organId) + .eqIfPresent(OrderPrepackagedDO::getOrderId, orderId)); + } + + + + default OrderPrepackagedDO selectOrder(Long orderId, Long organId) { + return selectOne(new LambdaQueryWrapperX() + .eq(OrderPrepackagedDO::getOrganId, organId) + .eqIfPresent(OrderPrepackagedDO::getOrderId, orderId)); + } + +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/plate/OrderPlateMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/plate/OrderPlateMapper.java index 8902db8db..e1e0d835b 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/plate/OrderPlateMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/plate/OrderPlateMapper.java @@ -27,19 +27,15 @@ public interface OrderPlateMapper extends BaseMapperX { - default List selectPlateList(PatchingDetailReqVO reqVO) { - return selectList( new LambdaQueryWrapperX() - .and(wrapper -> { - for (Long plateId : reqVO.getPlateIdList()) { - wrapper.or().eq(OrderPlateDO::getId, plateId); - } - }) - .orderByDesc(OrderPlateDO::getId)); - } - - List selectOtherPlateList(@Param("plateIdList") List plateIdList); List selectListByOrderId( @Param("orderId") Long orderId, @Param("organId") Long organId); + + default List selectPlateList(List plateNo, Long organId) { + return selectList( new LambdaQueryWrapperX() + .eq(OrderPlateDO::getOrganId, organId) + .in(OrderPlateDO::getPlateNo, plateNo)); + + } } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/process/ProcessStepMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/process/ProcessStepMapper.java index 1cafdea7f..b24379016 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/process/ProcessStepMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/process/ProcessStepMapper.java @@ -65,4 +65,15 @@ public interface ProcessStepMapper extends BaseMapperX { .eqIfPresent(OrderProcessStepNDO::getType,type)); } + + + default List selectByOrderIds(List orderIds, Long organId, Integer number) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(OrderProcessStepNDO::getOrganId, organId) + .inIfPresent(OrderProcessStepNDO::getOrderId, orderIds) + .eqIfPresent(OrderProcessStepNDO::getType,number)); + + } + + } \ 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/dal/mysql/query/OrderItemMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java index c1008cae2..cbed9c208 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java @@ -91,4 +91,11 @@ public interface OrderItemMapper extends BaseMapperX { void updateParts(@Param("partsId") Long partsId,@Param("packageId") Long packageId); + + default List selectPackPlateList(Long orderId, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(OrderItemDO::getOrganId, organId) + .eqIfPresent(OrderItemDO::getOrderId, orderId)); + } + } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackService.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackService.java index 75b3b1fb4..07ad0685e 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackService.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackService.java @@ -2,10 +2,9 @@ package com.cf.imes.module.manage.service.pack; import com.cf.imes.framework.common.pojo.PageResult; +import com.cf.imes.module.manage.controller.admin.pack.prePack.PrePackReqVO; import com.cf.imes.module.manage.controller.admin.pack.vo.*; import com.cf.imes.module.manage.controller.admin.query.vo.pack.OrderPackageVO; -import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.OrderModuleReqVO; -import com.cf.imes.module.manage.dal.dataobject.query.OrderPackageDO; import java.util.List; @@ -81,4 +80,12 @@ public interface PackService { OrderPackRespVO addNewPartsPack(OrderPackReqVO reqVO); + + // 查询预打包优化信息 + String getPrePackInfo(Long orderId); + + + // 保存优化后的预打包信息 + void saveOptimizeInfo(PrePackReqVO reqVO); + } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java index d8fc46c8e..56d73adcb 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java @@ -8,35 +8,35 @@ import com.cf.imes.framework.common.enums.OrderPackageStatusEnum; import com.cf.imes.framework.common.enums.OrderPackageTypeEnum; import com.cf.imes.framework.common.enums.OrderStatusEnum; import com.cf.imes.framework.common.enums.ProcessProcessingTypeEnum; -import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil; import com.cf.imes.framework.common.pojo.PageResult; +import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.common.util.object.BeanUtils; +import com.cf.imes.module.manage.controller.admin.pack.prePack.PackPlateList; +import com.cf.imes.module.manage.controller.admin.pack.prePack.PrePackData; +import com.cf.imes.module.manage.controller.admin.pack.prePack.PrePackOptimizeInfo; +import com.cf.imes.module.manage.controller.admin.pack.prePack.PrePackReqVO; import com.cf.imes.module.manage.controller.admin.pack.vo.*; -import com.cf.imes.module.manage.controller.admin.process.vo.OrderProcessStepItemVO; -import com.cf.imes.module.manage.controller.admin.process.vo.ProcessRespVO; -import com.cf.imes.module.manage.controller.admin.process.vo.ProcessStepStatus; import com.cf.imes.module.manage.controller.admin.query.vo.pack.OrderPackageVO; -import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.OrderModuleReqVO; -import com.cf.imes.module.manage.dal.dataobject.pack.OrderBodyDO; +import com.cf.imes.module.manage.dal.dataobject.pack.OrderPrepackagedDO; +import com.cf.imes.module.manage.dal.dataobject.plate.OrderPlateDO; import com.cf.imes.module.manage.dal.dataobject.process.OrderDO; import com.cf.imes.module.manage.dal.dataobject.process.OrderProcessStepNDO; import com.cf.imes.module.manage.dal.dataobject.query.OrderItemDO; import com.cf.imes.module.manage.dal.dataobject.query.OrderPackageDO; import com.cf.imes.module.manage.dal.dataobject.query.OrderPartsNDO; import com.cf.imes.module.manage.dal.mysql.pack.OrderBodyMapper; +import com.cf.imes.module.manage.dal.mysql.pack.OrderPrepackagedMapper; import com.cf.imes.module.manage.dal.mysql.pack.OrderPackageMapper; +import com.cf.imes.module.manage.dal.mysql.plate.OrderPlateMapper; import com.cf.imes.module.manage.dal.mysql.process.ProcessStepItemMapper; import com.cf.imes.module.manage.dal.mysql.process.ProcessStepMapper; import com.cf.imes.module.manage.dal.mysql.process.ProductionProcessMapper; import com.cf.imes.module.manage.dal.mysql.query.OrderItemMapper; import com.cf.imes.module.manage.dal.mysql.query.OrderPartsMapper; import com.cf.imes.module.manage.dal.mysql.query.ProductionStatusMapper; +import com.cf.imes.module.manage.enums.OrderPackStatusEnums; import com.cf.imes.module.manage.service.process.ProductionProcessServiceImpl; -import com.cf.imes.module.manage.util.packageNo.PackageNoUtil; -import com.cf.imes.module.manage.util.page.PageHelperUtil; -import com.cf.imes.module.system.enums.ErrorCodeConstants; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; +import com.cf.imes.module.manage.util.SnowflakeIdWorker3rd; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -44,8 +44,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -74,6 +73,9 @@ public class PackServiceImpl implements PackService { @Resource private OrderBodyMapper orderBodyMapper; + @Resource + private OrderPlateMapper orderPlateMapper; + @Resource private ProcessStepMapper processStepMapper; @@ -86,6 +88,12 @@ public class PackServiceImpl implements PackService { @Resource private ProductionProcessMapper productionProcessMapper; + @Resource + private SnowflakeIdWorker3rd idWorker; + + @Resource + private OrderPrepackagedMapper orderPrepackagedMapper; + // 打包分页查询 @@ -247,7 +255,7 @@ public class PackServiceImpl implements PackService { OrderPackageDO orderPackageDO = new OrderPackageDO(); orderPackageDO.setOrderId(reqVO.getOrderId()); orderPackageDO.setType(OrderPackageTypeEnum.PARTS.getType()); - orderPackageDO.setPackageNo(PackageNoUtil.randomPageNo()); + orderPackageDO.setPackageNo(generatePackageNo()); orderPackageDO.setStatus((OrderPackageStatusEnum.PACKAGED.getStatus())); orderPackageMapper.insert(orderPackageDO); // 生产单明细表新增包裹 ID @@ -348,7 +356,7 @@ public class PackServiceImpl implements PackService { OrderPackageDO orderPackageDO = new OrderPackageDO(); orderPackageDO.setOrderId(packageVO.getOrderId()); orderPackageDO.setType(OrderPackageTypeEnum.PLATE.getType()); - orderPackageDO.setPackageNo(PackageNoUtil.randomPageNo()); + orderPackageDO.setPackageNo(generatePackageNo()); orderPackageDO.setStatus((OrderPackageStatusEnum.PACKAGED.getStatus())); orderPackageDO.setRemark(packageVO.getRemark()); orderPackageMapper.insert(orderPackageDO); @@ -538,10 +546,10 @@ public class PackServiceImpl implements PackService { public OrderPackRespVO addNewOtherPack(OtherPackReqVO reqVO) { // 判断配件名称是否重复 - OrderPartsNDO orderPartsNDO = orderPartsMapper.selectOneParts(reqVO.getName(),getUserOrganId()); - if (orderPartsNDO != null) { - throw exception(THE_ACCESSORY_NAME_CANNOT_BE_DUPLICATED); - } +// OrderPartsNDO orderPartsNDO = orderPartsMapper.selectOneParts(reqVO.getName(),getUserOrganId()); +// if (orderPartsNDO != null) { +// throw exception(THE_ACCESSORY_NAME_CANNOT_BE_DUPLICATED); +// } // 配件表新增数据 OrderPartsNDO orderParts = BeanUtils.toBean(reqVO, OrderPartsNDO.class); @@ -552,7 +560,7 @@ public class PackServiceImpl implements PackService { // 在包裹表中添加包裹编号和生产单号,修改包裹类型未其他配件类型 OrderPackageDO orderPackageDO = new OrderPackageDO(); - orderPackageDO.setPackageNo(PackageNoUtil.randomPageNo()); + orderPackageDO.setPackageNo(generatePackageNo()); orderPackageDO.setOrderId(reqVO.getOrderId()); orderPackageDO.setType(OrderPackageTypeEnum.OTHER_ACCESSORIES.getType()); @@ -645,7 +653,7 @@ public class PackServiceImpl implements PackService { orderPackageDO.setOrderId(reqVO.getOrderId()); orderPackageDO.setType(reqVO.getPackageType()); orderPackageDO.setStatus(OrderPackageStatusEnum.PACKAGED.getStatus()); - orderPackageDO.setPackageNo(PackageNoUtil.randomPageNo()); + orderPackageDO.setPackageNo(generatePackageNo()); orderPackageMapper.insert(orderPackageDO); orderItemMapper.insertPartsId(orderPackageDO.getId(), reqVO.getAddPartsIdList()); @@ -656,6 +664,208 @@ public class PackServiceImpl implements PackService { + + // 查询预打包优化信息 + @Override + public String getPrePackInfo(Long orderId) { + + OrderPrepackagedDO orderPrepackagedDO = orderPrepackagedMapper.selectOrder(orderId, getUserOrganId()); + + if(orderPrepackagedDO == null){ + throw exception(NO_OPTIMIZATION_INFORMATION_AVAILABLE); + } + + return JsonUtils.unzipString(orderPrepackagedDO.getResult()); + + } + + + + + // 保存优化后的预打包信息 + @Override + @Transactional(rollbackFor = Exception.class) + public void saveOptimizeInfo(PrePackReqVO reqVO) { + + + // 自动打包,包裹表新增 + if(reqVO.getIsAutoPack()){ + + ArrayList orderPackageDOS = new ArrayList<>(); + + List packPlateNoLists = new ArrayList<>(); + + reqVO.getOptimizeInfo().values().parallelStream().forEach(value -> { + value.forEach(prePackOptimizeInfo -> { + String packageNo = generatePackageNo(); + List list = prePackOptimizeInfo.getOptimizeData().stream().map(PrePackData::getPlateNo).toList(); + + list.forEach(a -> packPlateNoLists.add(PackPlateList.builder() + .packNo(packageNo) + .plateNo(a) + .build())); + + orderPackageDOS.add(OrderPackageDO.builder() + .packageNo(packageNo) + .type(OrderPackageTypeEnum.PLATE.getType()) + .orderId(reqVO.getOrderId()) + .status(OrderPackageStatusEnum.PACKAGED.getStatus()) + .build()); + + prePackOptimizeInfo.setPackNo(packageNo); + }); + }); + + + List packageDOS = orderPackageMapper.selectPackStatus(reqVO.getOrderId(), getUserOrganId()); + + if(!packageDOS.isEmpty()){ + + orderPackageMapper.updateDelete(reqVO.getOrderId()); + + } + + orderPackageMapper.insertBatch(orderPackageDOS); + + + orderPackageDOS.forEach(a-> + packPlateNoLists.stream().filter(f -> Objects.equals(f.getPackNo(), a.getPackageNo())) + .forEach(f -> f.setPackId(a.getId()))); + + List orderItemDOS = orderItemMapper.selectPackPlateList(reqVO.getOrderId(), getUserOrganId()); + + + List plateNo = packPlateNoLists.stream().map(PackPlateList::getPlateNo).toList(); + + + List orderPlateDOS = orderPlateMapper.selectPlateList(plateNo, getUserOrganId()); + + orderPlateDOS.forEach(a-> + packPlateNoLists.stream().filter(f->Objects.equals(f.getPlateNo(), a.getPlateNo())) + .forEach(f -> f.setPlateId(a.getId()))); + + packPlateNoLists.forEach(a-> + orderItemDOS.stream().filter(f->Objects.equals(f.getPlateId(), a.getPlateId())) + .forEach(f->f.setPackageId(a.getPackId()))); + + orderItemMapper.updateBatch(orderItemDOS); + + } + + + String optimizeInfo = JsonUtils.toJsonString(reqVO.getOptimizeInfo()); + + OrderPrepackagedDO orderPackOptimizeDO = orderPrepackagedMapper.selectOrder(reqVO.getOrderId(), getUserOrganId()); + + if(orderPackOptimizeDO ==null){ + + OrderPrepackagedDO prepackagedDO = new OrderPrepackagedDO(); + prepackagedDO.setOrderId(reqVO.getOrderId()); + prepackagedDO.setResult(JsonUtils.zipString(optimizeInfo)); + orderPrepackagedMapper.insert(prepackagedDO); + return; + } + + orderPackOptimizeDO.setResult(JsonUtils.zipString(optimizeInfo)); + orderPrepackagedMapper.updateById(orderPackOptimizeDO); + + + } + + + + +// +// @Override +// @Transactional(rollbackFor = Exception.class) +// public void saveOptimizeInfo(PrePackReqVO reqVO) { +// if (reqVO.getIsAutoPack()) { +// List orderPackageDOS = new ArrayList<>(); +// List packPlateNoLists = new ArrayList<>(); +// +// reqVO.getOptimizeInfo().values().parallelStream().forEach(value -> { +// value.forEach(prePackOptimizeInfo -> { +// String packageNo = generatePackageNo(); +// List list = prePackOptimizeInfo.getOptimizeData().stream().map(m -> m.getPlateNo()).collect(Collectors.toList()); +// +// list.forEach(a -> packPlateNoLists.add(PackPlateList.builder() +// .packNo(packageNo) +// .plateNo(a) +// .build())); +// +// orderPackageDOS.add(OrderPackageDO.builder() +// .packageNo(packageNo) +// .type(OrderPackageTypeEnum.PLATE.getType()) +// .orderId(reqVO.getOrderId()) +// .status(OrderPackageStatusEnum.PACKAGED.getStatus()) +// .build()); +// +// prePackOptimizeInfo.setPackNo(packageNo); +// }); +// }); +// +// List packageDOS = orderPackageMapper.selectPackStatus(reqVO.getOrderId(), getUserOrganId()); +// +// if (!packageDOS.isEmpty()) { +// orderPackageMapper.updateDelete(reqVO.getOrderId()); +// } +// +// orderPackageMapper.insertBatch(orderPackageDOS); +// +// Map packageNoToIdMap = orderPackageDOS.stream().collect(Collectors.toMap(OrderPackageDO::getPackageNo, OrderPackageDO::getId)); +// +// packPlateNoLists.forEach(f -> f.setPackId(packageNoToIdMap.get(f.getPackNo()))); +// +// List orderItemDOS = orderItemMapper.selectPackPlateList(reqVO.getOrderId(), getUserOrganId()); +// +// List plateNo = packPlateNoLists.stream().map(PackPlateList::getPlateNo).collect(Collectors.toList()); +// +// List orderPlateDOS = orderPlateMapper.selectPlateList(plateNo, getUserOrganId()); +// +// Map plateNoToIdMap = orderPlateDOS.stream().collect(Collectors.toMap(OrderPlateDO::getPlateNo, OrderPlateDO::getId)); +// +// packPlateNoLists.forEach(f -> f.setPlateId(plateNoToIdMap.get(f.getPlateNo()))); +// +// Map plateIdToPackIdMap = packPlateNoLists.stream().collect(Collectors.toMap(PackPlateList::getPlateId, PackPlateList::getPackId)); +// +// orderItemDOS.forEach(f -> f.setPackageId(plateIdToPackIdMap.get(f.getPlateId()))); +// +// orderItemMapper.updateBatch(orderItemDOS); +// } +// +// String optimizeInfo = JsonUtils.toJsonString(reqVO.getOptimizeInfo()); +// +// OrderPrepackagedDO orderPackOptimizeDO = orderPrepackagedMapper.selectOrder(reqVO.getOrderId(), getUserOrganId()); +// +// if (orderPackOptimizeDO == null) { +// OrderPrepackagedDO newOrderPackOptimizeDO = new OrderPrepackagedDO(); +// newOrderPackOptimizeDO.setOrderId(reqVO.getOrderId()); +// newOrderPackOptimizeDO.setResult(JsonUtils.zipString(optimizeInfo)); +// orderPrepackagedMapper.insert(newOrderPackOptimizeDO); +// return; +// } +// +// orderPackOptimizeDO.setResult(JsonUtils.zipString(optimizeInfo)); +// orderPrepackagedMapper.updateById(orderPackOptimizeDO); +// } + + + + + + + // 生成包裹编号 + private String generatePackageNo(){ + + long packNo = idWorker.nextId(); + long obtainingTime = SnowflakeIdWorker3rd.obtainingTime(); + + return (obtainingTime) + Long.toString(packNo).substring(2); + + } + + + // 类型转换 private OrderPackRespVO typeConversion(OrderPackageDO orderPackageDO){ return OrderPackRespVO.builder()