diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/OrderPlateTypeEnum.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/OrderPlateTypeEnum.java new file mode 100644 index 000000000..cd02d4f5e --- /dev/null +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/OrderPlateTypeEnum.java @@ -0,0 +1,29 @@ +package com.cf.imes.framework.common.enums; + + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public enum OrderPlateTypeEnum { + + + LAYERBOARD(0, "层板"), + RISER(1, "立板"), + BACKBOARD(2, "背板"), + SELFINCREASINGBOARD(3, "自增板"); + + private final Integer type; + private String description; + + public boolean equals(Integer status) { + return this.type .equals(status) ; + } + + public boolean equals(OrderPlateTypeEnum enableStatusEnum) { + return enableStatusEnum != null && enableStatusEnum.type .equals(this.getType()) ; + } + + +} diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/PlanStatusEnum.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/PlanStatusEnum.java index 8d591adce..c9c2625ae 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/PlanStatusEnum.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/PlanStatusEnum.java @@ -9,10 +9,11 @@ import lombok.Getter; public enum PlanStatusEnum { - NEWORDER(0,"新单"), - BOARDHASBEENAPPLIEDFOR(1,"板材已申请"), - DURINGCUTTING(2,"开料中"), - OPENEDMATERIAL(3,"已开料"); + NOCUTTING(0, "未开料"), + + OPENING(1, "开料中"), + + OPENED(2, "已开料"); private Integer status; private String scheduling; diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/exception/enums/GlobalErrorCodeConstants.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/exception/enums/GlobalErrorCodeConstants.java index a31e456ec..586bc20fd 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/exception/enums/GlobalErrorCodeConstants.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/exception/enums/GlobalErrorCodeConstants.java @@ -33,6 +33,8 @@ public interface GlobalErrorCodeConstants { ErrorCode INTERNAL_SERVER_ERROR = new ErrorCode(500, "系统异常"); ErrorCode NOT_IMPLEMENTED = new ErrorCode(501, "功能未实现/未开启"); ErrorCode ERROR_CONFIGURATION = new ErrorCode(502, "错误的配置项"); + ErrorCode ES_ERROR_UPDATE = new ErrorCode(503, "ES文档更新失败"); + ErrorCode ES_ERROR_DELETE = new ErrorCode(504, "ES文档删除失败"); // ========== 自定义错误段 ========== ErrorCode REPEATED_REQUESTS = new ErrorCode(900, "重复请求,请稍后重试"); // 重复请求 diff --git a/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentServiceImpl.java b/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentServiceImpl.java index 45b275461..906674244 100644 --- a/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentServiceImpl.java +++ b/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentServiceImpl.java @@ -1,7 +1,6 @@ package com.cf.imes.framework.es.core.service; import cn.hutool.core.lang.Snowflake; -import cn.hutool.core.lang.UUID; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; @@ -17,9 +16,6 @@ import java.io.IOException; import java.io.StringReader; import java.text.SimpleDateFormat; import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.time.format.DateTimeFormatterBuilder; import java.util.Date; import java.util.List; import java.util.Map; @@ -146,6 +142,7 @@ public class ESDocumentServiceImpl implements ESDocumentService { esDocument.setCreator(loginUser.getNickname()); esDocument.setCreateTime(simpleDateFormat.format(date)); esDocument.setUpdater(loginUser.getNickname()); + esDocument.setOrganId(loginUser.getOrganId()); esDocument.setUpdateTime(simpleDateFormat.format(date)); br.operations(op -> op.index(idx -> idx diff --git a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/query/QueryWrapperX.java b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/query/QueryWrapperX.java index a4109dc52..d0aa4a1c2 100644 --- a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/query/QueryWrapperX.java +++ b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/query/QueryWrapperX.java @@ -1,10 +1,10 @@ package com.cf.imes.framework.mybatis.core.query; import cn.hutool.core.lang.Assert; -import com.cf.imes.framework.mybatis.core.enums.SqlConstants; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ArrayUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.cf.imes.framework.mybatis.core.enums.SqlConstants; import org.springframework.util.StringUtils; import java.util.Collection; @@ -145,6 +145,12 @@ public class QueryWrapperX extends QueryWrapper { return this; } + @Override + public QueryWrapperX isNotNull(String column) { + super.isNotNull(column); + return this; + } + /** * 设置只返回最后一条 * diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/goods/dto/GoodsDTO.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/goods/dto/GoodsDTO.java new file mode 100644 index 000000000..069e31e9f --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/goods/dto/GoodsDTO.java @@ -0,0 +1,81 @@ +package com.cf.imes.module.executor.api.goods.dto; + + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class GoodsDTO { + + /** + * 主键 + */ + private Long id; + + // 组织 ID + private Long organId; + + /** + * 生产单号 + */ + private Long orderId; + /** + * 设计端商品ID + */ + private String rawGoodsId; + /** + * 商品 ID + */ + private String goodsId; + /** + * 商品名称 + */ + private String goodsName; + /** + * 材质:颗粒板、欧松板、多层板、生态板、禾香板、密度板、实木、铝蜂窝板、铝塑板 + */ + private String material; + /** + * 纹路 0 正纹 1 可翻转 2 反纹 + */ + private Boolean texture; + /** + * 颜色 + */ + private String color; + /** + * 宽度 + */ + private BigDecimal width; + /** + * 高度 + */ + private BigDecimal height; + /** + * 厚度 + */ + private BigDecimal thickness; + /** + * 价格 + */ + private BigDecimal price; + /** + * 品牌 + */ + private String brand; + /** + * 规格 + */ + private String spec; + /** + * 备注 + */ + private String remark; + /** + * 是否删除 + */ + private Boolean deleted; + + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/plan/dto/PlanDTO.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/plan/dto/PlanDTO.java new file mode 100644 index 000000000..eafb4a7a7 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/plan/dto/PlanDTO.java @@ -0,0 +1,62 @@ +package com.cf.imes.module.executor.api.plan.dto; + + +import lombok.Data; + +import java.time.LocalDateTime; + + + +@Data +public class PlanDTO { + + + /** + * ID + */ + + private Long id; + // 组织 ID + + private Long organId; + + /** + * 排序优先级 + */ + private Long sort; + /** + * 排单类型:1 混单排单,2 生产单排单 + */ + private Integer type; + /** + * 排单状态:0 新单,1 板材已申请,2 开料中,3 已开料 + */ + private Integer status; + + /** + * 机台 ID + */ + private Long machineId; + /** + * 计划时间 + */ + private LocalDateTime planTime; + /** + * 生产单号 + */ + private String orderNos; + + /** + * 备注 + */ + private String remark; + /** + * 生产操作人 + */ + private String operator; + /** + * 生产时间 + */ + private LocalDateTime produceTime; + +} 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 5e49de198..deac2662f 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 @@ -11,12 +11,14 @@ public interface ErrorCodeConstants { // ========== 生产单开料排单 ErrorCode PLAN_NOT_EXISTS = new ErrorCode(1_001_107_000, "生产单开料排单不存在"); - ErrorCode PLAN_NOT_ALLOW_DELETE = new ErrorCode(1_001_107_001, "当前排单已开料不予许删除"); + ErrorCode PLAN_NOT_ALLOW_DELETE = new ErrorCode(1_001_107_001, "排单号:{},已开料不予许删除"); ErrorCode PLAN_NOT_ALLOW_CANCEL = new ErrorCode(1_001_107_002, "排单 新单 不予许作废"); ErrorCode LIST_CHANGES_ARE_PROHIBITED = new ErrorCode(1_001_107_003, "当前排单有板材已开料,禁止更改"); + ErrorCode PLAN_ERROR = new ErrorCode(1_001_107_004, "{} 排单数据不存在"); + // ========== 生产单商品 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/api/plan/vo/OrderGroupRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/plan/vo/OrderGroupRespVO.java new file mode 100644 index 000000000..d3d9568f3 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/plan/vo/OrderGroupRespVO.java @@ -0,0 +1,58 @@ +package com.cf.imes.module.executor.api.plan.vo; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class OrderGroupRespVO { + + + @Schema(description = "加工组ID") + private Long id; + + + + @Schema(description = "生产单号") + private Long orderId; + + + + @Schema(description = "柜体ID") + private Long bodyId; + + + + @Schema(description = "加工组类型") + private String groupTypeName; + + + + @Schema(description = "模块名称") + private String name; + + + + @Schema(description = "加工组宽度") + private Double width; + + + + @Schema(description = "加工组高度") + private Double height; + + + + @Schema(description = "加工组深度") + private Double depth; + + + @Schema(description = "加工组总数") + private Integer groupNum; + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java index bfa63c815..bda77fc0f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java @@ -1,15 +1,17 @@ package com.cf.imes.module.executor.controller.admin.plan; import com.cf.imes.framework.common.pojo.CommonResult; -import com.cf.imes.framework.operatelog.core.annotations.OperateLog; 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.plate.vo.PlateSaveReqVO; +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.PlateOptimize; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; import com.cf.imes.module.executor.service.optimizeplan.OptimizePlanService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; @@ -53,10 +55,15 @@ public class OptimizePlanController { @GetMapping("commit") - @Operation(summary = "开始开料") + @Operation(summary = "开料") + @Parameters({ + @Parameter(name = "planId", description = "排单ID", required = true, example = "1024"), + @Parameter(name = "goodsNo", description = "开料的大板编号", required = true, example = "1") + }) @PreAuthorize("@ss.hasPermission('placeorder:optimize')") - public CommonResult commit(@RequestParam @Valid @NotNull(message = "排单id不能空") Long planId) { - return CommonResult.success(optimizePlanService.commit(planId)); + public CommonResult commit(@RequestParam("planId") Long planId,@RequestParam("goodsNo") List goodsNo) { + + return CommonResult.success(optimizePlanService.commit(planId,goodsNo)); } @GetMapping("/endCutting") @@ -67,14 +74,24 @@ public class OptimizePlanController { } + @PutMapping("/updateCuttingStatus") + @Operation(summary = "修改开料状态") + @PreAuthorize("@ss.hasPermission('placeorder:optimize:updateCuttingStatus')") + public CommonResult updateCuttingStatus(@RequestBody CuttingStatusRespVO respVO) { + return success(optimizePlanService.updateCuttingStatus(respVO)); + } + + + @GetMapping("/getOrderSource") @Operation(summary = "获取生产单源数据") @PreAuthorize("@ss.hasPermission('placeorder:optimize')") public CommonResult getOrderSource(@Schema(description = "生产单id") @RequestParam(required = false) Long orderId, + @Schema(description = "大板IDS-大板分类的IDS") @RequestParam(required = false) List ids, @Schema(description = "排单id") @RequestParam(required = false) Long planId, @Schema(description = "机台Id") @RequestParam("machineId") Long machineId ) { - return CommonResult.success(optimizePlanService.getOrderSource(orderId, planId, machineId)); + return CommonResult.success(optimizePlanService.getOrderSource(orderId, planId, machineId,ids)); } @@ -111,5 +128,13 @@ public class OptimizePlanController { } + @DeleteMapping("/delete") + @Operation(summary = "ES批量删除测试") + @PreAuthorize("@ss.hasPermission('placeorder:delete')") + public CommonResult deleteTest(@RequestParam("id") List id) { + return success(optimizePlanService.deleteTest(id)); + } + + } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java index 778b8fd13..34650b42c 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java @@ -1,30 +1,36 @@ package com.cf.imes.module.executor.controller.admin.plan; -import com.cf.imes.framework.es.core.valid.CreateGroup; -import com.cf.imes.framework.es.core.valid.UpdateGroup; -import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; -import javax.validation.*; -import javax.servlet.http.*; -import javax.validation.constraints.NotEmpty; -import java.util.*; -import java.io.IOException; +import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.pojo.PageParam; import com.cf.imes.framework.common.pojo.PageResult; -import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.util.object.BeanUtils; -import static com.cf.imes.framework.common.pojo.CommonResult.success; +import com.cf.imes.framework.es.core.valid.CreateGroup; +import com.cf.imes.framework.es.core.valid.UpdateGroup; import com.cf.imes.framework.excel.core.util.ExcelUtils; import com.cf.imes.framework.operatelog.core.annotations.OperateLog; -import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*; +import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO; +import com.cf.imes.module.executor.controller.admin.plan.bo.OrderRoomBodyList; +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.*; import com.cf.imes.module.executor.service.plan.PlanService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +import static com.cf.imes.framework.common.pojo.CommonResult.success; +import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 排单") @RestController @@ -38,7 +44,7 @@ public class PlanController { @PostMapping("/create") @Operation(summary = "创建排单") @PreAuthorize("@ss.hasPermission('placeorder:create')") - public CommonResult createPlan(@Validated(CreateGroup.class) @RequestBody PlanSaveReqVO createReqVO) { + public CommonResult> createPlan(@Validated(CreateGroup.class) @RequestBody PlanSaveReqVO createReqVO) { return success(planService.createPlan(createReqVO)); } @@ -52,16 +58,16 @@ public class PlanController { @DeleteMapping("/delete") @Operation(summary = "删除排单") - @Parameter(name = "id", description = "排单id", required = true) + @Parameter(name = "ids", description = "排单ids", required = true) @PreAuthorize("@ss.hasPermission('placeorder:delete')") - public CommonResult deletePlan(@RequestParam("id") Long id) { - return success(planService.deletePlan(id)); + public CommonResult deletePlan(@RequestParam("ids") List ids) { + return success(planService.deletePlan(ids)); } - @DeleteMapping("cancellation") - @Operation(summary = "作废") - @Parameter(name = "id", description = "排单id", required = true) - @PreAuthorize("@ss.hasPermission('executor:plan:delete')") +// @DeleteMapping("cancellation") +// @Operation(summary = "作废") +// @Parameter(name = "id", description = "排单id", required = true) +// @PreAuthorize("@ss.hasPermission('executor:plan:delete')") public CommonResult cancellation(@RequestParam("id") Long id) { return success(planService.cancellation(id)); } @@ -106,12 +112,19 @@ public class PlanController { } @GetMapping("getNotPlanOrderListPage") - @Operation(summary = "获取未排单的板材生产单板材分页列表") + @Operation(summary = "获取未排单的生产单分页列表") @PreAuthorize("@ss.hasPermission('placeorder:query')") public CommonResult> getOrderPage(@Valid OrderPageReqVOCopy pageReqVO) { return success(planService.getOrderPage(pageReqVO)); } + @GetMapping("getNotPlanOrderPlateList") + @Operation(summary = "获取未排单的板材分页列表") + @PreAuthorize("@ss.hasPermission('placeorder:query')") + public CommonResult> getOrderPlateList(@Valid OrderPageReqVOCopy pageReqVO) { + return success(planService.getOrderPlateList(pageReqVO)); + } + @GetMapping("getNotPlanGoodsListPage") @Operation(summary = "获取未排单的大板板材分页列表") @@ -122,13 +135,14 @@ public class PlanController { - @GetMapping("getNotPlanPlateListPage") - @Operation(summary = "获取未排单的板材分页列表") + @PostMapping("getNotOptimizeGoodsList") + @Operation(summary = "优化界面未排单的大板板材分页列表") @PreAuthorize("@ss.hasPermission('executor:plan:query')") - public CommonResult> getNotPlanPlateListPage(@Valid PlateReqPageVO pageVO) { - return success(planService.getNotPlanPlateListPage(pageVO)); + public CommonResult> getNotOptimizeGoodsList(@Valid @RequestBody NotPlanGoodsReqVO reqVO) { + return success(planService.getNotOptimizeGoodsList(reqVO)); } + @GetMapping("getNotPlanGoodsListPageByOrderId") @Operation(summary = "根据生产单id获取未排单的商品分页列表") @PreAuthorize("@ss.hasPermission('executor:plan:query')") @@ -180,4 +194,15 @@ public class PlanController { return success(planService.getPlateList(planIds)); } + + @GetMapping("getOrderRoomBodyList") + @Operation(summary = "获取未排单的生产单的柜体和房间名称") + @Parameter(name = "orderIds", description = "生产单ID", required = true) + @PreAuthorize("@ss.hasPermission('placeorder:orderlist')") + public CommonResult> getOrderRoomBody(@Valid @RequestParam List orderIds) { + + return success(planService.getOrderRoomBody(orderIds)); + } + + } \ 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/controller/admin/plan/bo/OrderBodyIds.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderBodyIds.java new file mode 100644 index 000000000..de221829a --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderBodyIds.java @@ -0,0 +1,18 @@ +package com.cf.imes.module.executor.controller.admin.plan.bo; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class OrderBodyIds { + + + @Schema(description = "柜体ID") + private Long bodyId; + + @Schema(description = "柜体名称") + private String bodyName; + + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderIds.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderIds.java index 7057f6fcd..62a2ae26f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderIds.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderIds.java @@ -3,16 +3,15 @@ package com.cf.imes.module.executor.controller.admin.plan.bo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import lombok.Builder; @Data -@Builder + public class OrderIds { - @Schema(description = "大板ID") + @Schema(description = "大板ID-大板分类的ID") private Long id; @@ -20,7 +19,7 @@ public class OrderIds { private Long orderId; - @Schema(description = "商品ID") + @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/bo/OrderRoomBodyList.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderRoomBodyList.java new file mode 100644 index 000000000..7e76d6f2d --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderRoomBodyList.java @@ -0,0 +1,20 @@ +package com.cf.imes.module.executor.controller.admin.plan.bo; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +public class OrderRoomBodyList { + + + @Schema(description = "生产单ID") + private Long orderId; + + + @Schema(description = "柜体房间信息") + private List orderRoomIds; + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderRoomIds.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderRoomIds.java new file mode 100644 index 000000000..ef71aed5b --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderRoomIds.java @@ -0,0 +1,23 @@ +package com.cf.imes.module.executor.controller.admin.plan.bo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +public class OrderRoomIds { + + + @Schema(description = "房间ID") + private Long roomId; + + @Schema(description = "房间名称") + private String roomName; + + @Schema(description = "柜体信息") + private List orderBodyIds; + + + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/BlockPlaceInfo.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/BlockPlaceInfo.java new file mode 100644 index 000000000..d163a389c --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/BlockPlaceInfo.java @@ -0,0 +1,25 @@ +package com.cf.imes.module.executor.controller.admin.plan.saveOptimize; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.ToString; + +@Schema(description = "小板优化的数据信息") +@Data +@ToString(callSuper = true) +public class BlockPlaceInfo { + + + @Schema(description = "大板编号") + private Long bi; + + @Schema(description = "小板编号") + private Long bo; + + public BlockPlaceInfo(Long bi, Long bo) { + this.bi = bi; + this.bo = bo; + } + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/CuttingStatusRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/CuttingStatusRespVO.java new file mode 100644 index 000000000..a019a3893 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/CuttingStatusRespVO.java @@ -0,0 +1,20 @@ +package com.cf.imes.module.executor.controller.admin.plan.saveOptimize; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +public class CuttingStatusRespVO { + + + @Schema(description = "排单ID") + private Long planId; + + + @Schema(description = "取消开料的大板编号") + private List goodsNo; + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NotPlanGoodsReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NotPlanGoodsReqVO.java new file mode 100644 index 000000000..9f3906be0 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NotPlanGoodsReqVO.java @@ -0,0 +1,57 @@ +package com.cf.imes.module.executor.controller.admin.plan.saveOptimize; + + +import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.ToString; + +import javax.validation.Valid; +import java.util.List; + +@Schema(description = "管理后台 - 未排单的大板的数据信息") +@Data +@ToString(callSuper = true) +public class NotPlanGoodsReqVO { + + +// @Schema(description = "生产单ids") +// private List orderIds; +// +// @Schema(description = "生产单的大板ids") +// private List goodsIds; +// +// +// @Schema(description = "板材库对应的大板ids") +// private List plateGoodsIds; + + + @Schema(description = "生产单和大板的信息") + private List orderIdList; + + + @Schema(description = "排单类型:1 混单排单,2 生产单排单", requiredMode = Schema.RequiredMode.REQUIRED) + private Integer type; + + + @Schema(description = "混单过滤条件") + private List filter; + + + @Valid + @Data + public static class Information { + + @Schema(description = "材质") + private Boolean material; + + @Schema(description = "颜色") + private Boolean color; + + @Schema(description = "长*宽") + private Boolean spec; + + } + + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NotPlanGoodsRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NotPlanGoodsRespVO.java new file mode 100644 index 000000000..0311db49b --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NotPlanGoodsRespVO.java @@ -0,0 +1,87 @@ +package com.cf.imes.module.executor.controller.admin.plan.saveOptimize; + + +import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.ToString; + +import java.math.BigDecimal; +import java.util.List; + + +@Data +@ToString(callSuper = true) +public class NotPlanGoodsRespVO { + + +// @Schema(description = "生产单ids") +// private List orderIds; +// +// +// @Schema(description = "生产单的大板ids") +// private List goodsIds; +// +// +// @Schema(description = "板材库对应的大板ids") +// private List plateGoodsIds; + + + @Schema(description = "生产单和大板的信息") + private List orderIdList; + + + +// @Schema(description = "余料板ID") +// private List remainPlateIds; + + + @Schema(description = "商品ID-板材库对应的大板ID") + private Long goodsId; + + + @Schema(description = "商品名称") + private String goodsName; + + + @Schema(description = "商品材质") + private String material; + + + @Schema(description = "商品颜色") + private String color; + + + @Schema(description = "商品纹路") + private Boolean texture; + + +// @Schema(description = "宽") +// private BigDecimal width; +// +// +// @Schema(description = "高") +// private BigDecimal height; +// +// + @Schema(description = "厚") + private BigDecimal thickness; + + +// @Schema(description = "面积") +// private BigDecimal area; + + + @Schema(description = "小板数量") + private Integer plateNum; + + + @Schema(description = "大板数量") + private Integer goodsNum; + + + @Schema(description = "尺寸规格") + private String spec; + + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/GoodsReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/GoodsReqVO.java index 99955e1d1..a5fa5b3a9 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/GoodsReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/GoodsReqVO.java @@ -15,7 +15,7 @@ import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH public class GoodsReqVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4109") + @Schema(description = "主键-大板分类ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4109") private Long id; @@ -29,7 +29,7 @@ public class GoodsReqVO { @Schema(description = "设计端商品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "832") private Long rawGoodsId; - @Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "243") + @Schema(description = "商品 ID-大板的实际ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "243") private Long goodsId; @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰") @@ -79,13 +79,13 @@ public class GoodsReqVO { @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; + private LocalDateTime createTime; @Schema(description = "更新时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] updateTime; + private LocalDateTime updateTime; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/NotPlanOrderPlateRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/NotPlanOrderPlateRespVO.java new file mode 100644 index 000000000..7d7f208e4 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/NotPlanOrderPlateRespVO.java @@ -0,0 +1,55 @@ +package com.cf.imes.module.executor.controller.admin.plan.vo; + + +import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class NotPlanOrderPlateRespVO { + +// @Schema(description = "生产单id") +// private List orderId; +// +// @Schema(description = "生产单的大板ID-大板分类ID") +// private List id; +// +// @Schema(description = "商品id-板材库对应的ID") +// private Long goodsId; + + + @Schema(description = "生产单和大板的信息") + private List orderIdList; + + @Schema(description = "商品ID-板材库对应的大板ID") + private Long goodsId; + + @Schema(description = "商品名称") + private String goodsName; + + @Schema(description = "商品材质") + private String material; + + @Schema(description = "商品颜色") + private String color; + + @Schema(description = "宽") + private BigDecimal width; + + @Schema(description = "高") + private BigDecimal height; + + @Schema(description = "厚") + private BigDecimal thickness; + + @Schema(description = "商品纹路") + private Boolean texture; + + @Schema(description = "商品品牌") + private String brand; + + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderGoodsResp.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderGoodsResp.java index f7fbea228..a36c5a12d 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderGoodsResp.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderGoodsResp.java @@ -5,8 +5,6 @@ import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import javax.validation.Valid; -import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.List; @@ -32,6 +30,10 @@ public class OrderGoodsResp { private BigDecimal height; @Schema(description = "厚") private BigDecimal thickness; + @Schema(description = "商品纹路") + private Boolean texture; + @Schema(description = "商品品牌") + private String brand; @Schema(description = "面积") private BigDecimal area; 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 a3f074eaa..d8f141dc2 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 @@ -3,12 +3,10 @@ package com.cf.imes.module.executor.controller.admin.plan.vo; import com.cf.imes.framework.common.pojo.PageParam; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import lombok.NoArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.Date; import java.util.List; import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -16,14 +14,12 @@ import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH /** * @author there */ -@NoArgsConstructor + @Data public class OrderPageReqVOCopy extends PageParam { @Schema(description = "生产单id") private Long orderId; - @Schema(description = "商品id") - private String goodsId; @Schema(description = "自定义id") private String defaultId; @Schema(description = "客户") @@ -49,12 +45,6 @@ public class OrderPageReqVOCopy extends PageParam { @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 = "交付日期开始时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime beginDate; - @Schema(description = "交付日期结束时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime endDate;*/ @Schema(description = "长 小范围") private BigDecimal longMinRang; @Schema(description = "长 大范围") @@ -64,4 +54,18 @@ public class OrderPageReqVOCopy extends PageParam { @Schema(description = "宽 大范围") private BigDecimal widthMaxRang; + + // todo 目前商品ID的数据筛选只解决了非混单的情况(非混单,数据类型为Long即可,混单情况需要改变),混单数据筛选待解决 + @Schema(description = "商品ID-板材库对应的大板ID") + private Long goodsId; + + @Schema(description = "大板分类ID") + private List ids; + @Schema(description = "房间ID") + private List roomId; + @Schema(description = "柜体ID") + private List bodyId; + @Schema(description = "生产单ids") + private List orderIds; + } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderRespVOCopy.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderRespVOCopy.java index ef8d6c9e5..c668709f1 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderRespVOCopy.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderRespVOCopy.java @@ -24,6 +24,8 @@ import static com.cf.imes.framework.common.util.date.DateUtils.*; public class OrderRespVOCopy { @Schema(description = "生产单id") private Long orderId; + @Schema(description = "生产单状态") + private Long status; @Schema(description = "自定义单号") private String defineId; @Schema(description = "客户") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanPageReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanPageReqVO.java index 99a56a2a0..3771c1035 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanPageReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanPageReqVO.java @@ -1,10 +1,12 @@ package com.cf.imes.module.executor.controller.admin.plan.vo; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import com.cf.imes.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; + import java.time.LocalDateTime; import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -16,7 +18,12 @@ import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH public class PlanPageReqVO extends PageParam { @Schema(description = "排单号") - private String id; + private Long id; + + + @Schema(description = "是否翻页-true:上,false:下") + private Boolean isUp; + @Schema(description = "排序优先级") private Integer sort; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanRespVO.java index 3dd72074f..f6fcd92ea 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanRespVO.java @@ -1,13 +1,12 @@ package com.cf.imes.module.executor.controller.admin.plan.vo; -import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; +import lombok.Data; + import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; +import java.util.List; @Schema(description = "管理后台 - 生产单开料排单 Response VO") @Data @@ -18,10 +17,6 @@ public class PlanRespVO { @ExcelProperty("ID") private Long id; -// @Schema(description = "排单号", requiredMode = Schema.RequiredMode.REQUIRED) -// @ExcelProperty("排单号") -// private String planNo; - @Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("排序优先级") private Integer sort; @@ -34,9 +29,6 @@ public class PlanRespVO { @ExcelProperty("排单状态:0 新单,1 板材已申请,2 开料中,3 已开料") private Integer status; -// @Schema(description = "是否支付:0 否,1 是", requiredMode = Schema.RequiredMode.REQUIRED) -// @ExcelProperty("是否支付:0 否,1 是") -// private Boolean isPay; @Schema(description = "机台 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16707") @ExcelProperty("机台 ID") @@ -57,7 +49,7 @@ public class PlanRespVO { @Schema(description = "排单对应的生产单的信息", requiredMode = Schema.RequiredMode.REQUIRED) private List orderList; - @Schema(description = "板材信息列表", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "板材信息列表-大板信息", requiredMode = Schema.RequiredMode.REQUIRED) private List plateInfoList; @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") @@ -80,4 +72,25 @@ public class PlanRespVO { @ExcelProperty("生产时间") private LocalDateTime produceTime; + + @Schema(description = "优化大板片数") + private Long optimizeGoodsCount; + + + @Schema(description = "已开料的大板片数") + private Long cutGoodsCount; + + + @Schema(description = "总小板片数") + private Long plateNum; + + + @Schema(description = "未优化小板片数") + private Long unOptimizePlateCount; + + + @Schema(description = "已优化小板片数") + private Long optimizePlateCount; + + } \ 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/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 5f654bd6c..5dfbdd92f 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 @@ -2,12 +2,13 @@ package com.cf.imes.module.executor.controller.admin.plan.vo; import com.cf.imes.framework.es.core.valid.CreateGroup; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; +import lombok.Data; + import javax.validation.Valid; -import javax.validation.constraints.*; -import org.springframework.format.annotation.DateTimeFormat; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.time.LocalDateTime; +import java.util.List; @Schema(description = "管理后台 - 生产单开料排单新增/修改 Request VO") @Data @@ -18,7 +19,6 @@ public class PlanSaveReqVO { @Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED) - //@NotNull(groups = CreateGroup.class,message = "排序优先级不能为空") private Long sort; @Schema(description = "排单类型:1 混单排单,2 生产单排单", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @@ -38,14 +38,10 @@ public class PlanSaveReqVO { @NotNull(message = "计划时间不能为空", groups = CreateGroup.class) private LocalDateTime planTime; - /*@Schema(description = "生产单id列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List orderIds;*/ - /*@Schema(description = "板件id列表") - private List plateIds;*/ - @Schema(description = "生产单id与商品id 列表",requiredMode = Schema.RequiredMode.REQUIRED) - private List itemList; +// @Schema(description = "余料板ID") +// private List remainPlateIds; @Schema(description = "备注") @@ -59,6 +55,15 @@ public class PlanSaveReqVO { @NotNull(message = "生产时间不能为空", groups = CreateGroup.class) private LocalDateTime produceTime; + + @Schema(description = "生产单id与商品id 列表",requiredMode = Schema.RequiredMode.REQUIRED) + private List itemList; + + + @Schema(description = "去除的大板分类ID",requiredMode = Schema.RequiredMode.REQUIRED) + private List deleteIds; + + @Valid @Data public static class Item { @@ -70,8 +75,13 @@ public class PlanSaveReqVO { @Schema(description = "生产单id") @NotNull private Long orderId; + @Schema(description = "板材库大板id") @NotNull private Long goodsId; + + @Schema(description = "余料板ID") + @NotNull + private Long remainPlateId; } } \ 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/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 2f4bec75b..6db59c9d4 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 @@ -13,7 +13,7 @@ import java.util.List; public class PlateDetialRespVO { @Schema(description = "板件ID", requiredMode = Schema.RequiredMode.REQUIRED) - private Long id; + private Long plateId; @Schema(description = "房间ID", requiredMode = Schema.RequiredMode.REQUIRED) @@ -35,10 +35,13 @@ public class PlateDetialRespVO { private Long orderId; - @Schema(description = "商品ID", requiredMode = Schema.RequiredMode.REQUIRED) - private Long goodsId; + @Schema(description = "商品ID-大板分类ID", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + @Schema(description = "大板实例ID", requiredMode = Schema.RequiredMode.REQUIRED) + private Long goodsId; + @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED) private String goodsName; 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 8878d2a82..4e9d8aa34 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 @@ -1,14 +1,15 @@ package com.cf.imes.module.executor.controller.admin.plan.vo; +import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.math.BigDecimal; +import java.util.List; /** * @author there @@ -18,6 +19,16 @@ import java.math.BigDecimal; @AllArgsConstructor @NoArgsConstructor public class PlateInfoVO { + + + @Schema(description = "生产单和大板的信息") + private List orderIdList; + + + @Schema(description = "板材库对应的大板ID-大板实际ID") + private Long goodsId; + + @Schema(description = "材质:颗粒板、欧松板、多层板、生态板、禾香板、密度板、实木、铝蜂窝板、铝塑板", requiredMode = Schema.RequiredMode.REQUIRED) private String material; @@ -40,7 +51,10 @@ public class PlateInfoVO { @Schema(description = "颜色") private String color; - @Schema(description = "数量") + @Schema(description = "数量-大板对应的小板数量") private Integer count; + @Schema(description = "优化大板片数") + private Long optimizeGoodsCount; + } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/OptimizationSavePlateReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/OptimizationSavePlateReqVO.java index 0b498dd37..a6658c4fc 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/OptimizationSavePlateReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/OptimizationSavePlateReqVO.java @@ -49,7 +49,7 @@ public class OptimizationSavePlateReqVO { private Integer type; - @Schema(description = "商品ID") + @Schema(description = "商品ID-大板的实际ID") private Long goodsId; @Schema(description = "纹路类型,0 正纹 1 可翻转 2 反纹") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/PlateRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/PlateRespVO.java index 673982e7b..cf285ddf5 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/PlateRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/PlateRespVO.java @@ -1,14 +1,14 @@ package com.cf.imes.module.executor.controller.admin.plate.vo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.cf.imes.framework.common.pojo.PageParam; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; +import lombok.Data; + import java.math.BigDecimal; -import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; +import java.util.List; /** * @author Beal @@ -173,6 +173,14 @@ public class PlateRespVO extends PageParam { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "加工造型(槽)数") + private Integer sculptNum; + + + @Schema(description = "加工孔数") + private Integer holeNum; + + @Schema(description = "板材颜色") private String color; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/CutedBoardInfo.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/CutedBoardInfo.java new file mode 100644 index 000000000..ef37a28f9 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/CutedBoardInfo.java @@ -0,0 +1,28 @@ +package com.cf.imes.module.executor.dal.dataobject.goods; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Schema(description = "大板开料信息") +public class CutedBoardInfo { + + + @Schema(description = "已开料大板数量") + private Long cutedBoardNumber; + + + @Schema(description = "具体的开料大板编号") + private List cutedBoardList; + + +} 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 8b98331c1..3ef978fa8 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.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; @@ -9,6 +10,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.math.BigDecimal; +import java.util.List; @Data @@ -23,7 +25,25 @@ public class OptimizeBoardModelDO extends ESDocument { @Schema(description = "生产单id") - private Long orderId; + @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) + private List orderId; + + + @Schema(description = "大板的实际ID") + private Long goodsId; + + + @Schema(description = "生产单已优化小板数量") + private Long placeBlockNumber; + + + // 新的数据集需要去除 + @Schema(description = "排单优化的大板数量") + private Long placeBoardNumber; + + + @Schema(description = "已开料大板数据集") + private CutedBoardInfo cutedBoardInfo; @Schema(description = "大板原长") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/orderGroup/OrderGroupDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/orderGroup/OrderGroupDO.java index fd7026eb5..e42519f72 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/orderGroup/OrderGroupDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/orderGroup/OrderGroupDO.java @@ -1,11 +1,8 @@ package com.cf.imes.module.executor.dal.dataobject.orderGroup; -import com.cf.imes.framework.organ.core.db.OrganBaseDO; -import lombok.*; import com.baomidou.mybatisplus.annotation.*; import com.cf.imes.framework.mybatis.core.dataobject.BaseDO; - -import java.math.BigDecimal; +import lombok.*; /** * 生产单加工组 DO @@ -51,15 +48,15 @@ public class OrderGroupDO extends BaseDO { */ private String name; /** - * 模块宽度 + * 加工组宽度 */ private Double width; /** - * 模块高度 + * 加工组高度 */ private Double height; /** - * 模块深度 + * 加工组深度 */ private Double depth; /** diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plate/PlateDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plate/PlateDO.java index aa555dccb..e229980e2 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plate/PlateDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plate/PlateDO.java @@ -1,23 +1,10 @@ package com.cf.imes.module.executor.dal.dataobject.plate; -import com.cf.imes.framework.organ.core.db.OrganBaseDO; -import lombok.*; -import java.util.*; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import com.cf.imes.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; + +import java.math.BigDecimal; /** * 生产单板件 DO @@ -55,7 +42,7 @@ public class PlateDO extends BaseDO { */ private String plateNo; /** - * 板类型,0 层板 1 立板 2 背板 + * 板类型,0 层板 1 立板 2 背板 3 自增板 */ private Integer type; /** 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 027d39bce..527532694 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,22 +1,21 @@ package com.cf.imes.module.executor.dal.mysql.goods; -import java.util.*; - import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.cf.imes.framework.common.pojo.PageResult; -import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; 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.OrderPageReqVOCopy; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; -import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO; import org.apache.ibatis.annotations.Mapper; -import com.cf.imes.module.executor.controller.admin.goods.vo.*; import org.apache.ibatis.annotations.Param; +import java.util.Collection; +import java.util.List; + import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; /** @@ -51,7 +50,7 @@ public interface GoodsMapper extends BaseMapperX { List selectGoodsList(@Param("orderId") Long orderId, @Param("organId") Long organId); - List selectGoodsListByOrderIds(@Param("orderIds") List orderIds, @Param("organId") Long organId); + List selectGoodsListByOrderIds(@Param("goodsIds") List goodsIds, @Param("organId") Long organId); // 单个修改删除状态 @@ -82,12 +81,26 @@ public interface GoodsMapper extends BaseMapperX { IPage selectGoods(@Param("page") IPage page, @Param("goodsIds") List goodsIds, @Param("organId") Long organId); - default GoodsDO selectId(Long orderId, Long goodsId, Long organId) { - return selectOne(new LambdaQueryWrapperX() +// default GoodsDO selectId(Long orderId, Long goodsId, Long organId) { +// return selectOne(new LambdaQueryWrapperX() +// } +// default List selectGoodsPlateList(List goodIds, Long organId) { +// return selectList(new LambdaQueryWrapperX() +// .eq(GoodsDO::getOrganId, organId) +// .inIfPresent(GoodsDO::getOrderId, goodIds) +// .select(GoodsDO::getGoodsId,GoodsDO::getGoodsName, GoodsDO::getMaterial, GoodsDO::getColor, GoodsDO::getTexture,GoodsDO::getThickness, GoodsDO::getSpec)); +// } + + + List selectGoodsPlateList(@Param("goodIds") List goodIds,@Param("organId") Long organId); + + + default List selectListByGoodsId(Long goodsId, Long organId) { + return selectList(new LambdaQueryWrapperX() .eq(GoodsDO::getOrganId, organId) - .eq(GoodsDO::getOrderId, orderId) - .eq(GoodsDO::getGoodsId, goodsId) - .eq(GoodsDO::getDeleted, 0)); + .eq(GoodsDO::getDeleted, false) + .eq(GoodsDO::getGoodsId, goodsId)); + } // 根据生产单删除 @@ -101,4 +114,33 @@ public interface GoodsMapper extends BaseMapperX { return delete(new LambdaQueryWrapperX() .in(GoodsDO::getOrderId, orderId)); } + + +// List seleTestSQL(@Param("sql") String sql); + + + + default List selectListByGoodsIdList(List goodsIds,List orderIds, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(GoodsDO::getOrganId, organId) + .eq(GoodsDO::getDeleted, false) + .in(GoodsDO::getGoodsId, goodsIds) + .in(GoodsDO::getOrderId, orderIds)); + + } + + + List seleTestSQL(@Param("filed") String filed,@Param("goodsIds") List goodsIds ,@Param("organId") Long organId); + + + default GoodsDO selectGoodsId(Long orderId, Long goodsId, Long organId) { + return selectOne(new LambdaQueryWrapperX() + .eq(GoodsDO::getOrganId, organId) + .eq(GoodsDO::getDeleted, false) + .eq(GoodsDO::getGoodsId, goodsId) + .eq(GoodsDO::getOrderId, orderId) + .select(GoodsDO::getId)); + + } + } \ 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 43d580fb4..cb37350f5 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 @@ -13,15 +13,15 @@ import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderCountPro import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderOverdueRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds; +import com.cf.imes.module.executor.controller.admin.plan.vo.OrderGoodsResp; +import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPageReqVOCopy; import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.enums.OrderDeletedEnum; import com.cf.imes.module.executor.enums.OrderStatusEnum; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Qualifier; -import javax.annotation.sql.DataSourceDefinition; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -90,6 +90,7 @@ public interface OrderMapper extends BaseMapperX { IPage selectOrderPage(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper wrapper); +// IPage selectOrderPage(@Param("page") IPage page,@Param("pageReqVO") OrderPageReqVOCopy pageReqVO, @Param("organId") Long organId); Map selectDynamicSqlString(@Param("sqlStr") String sqlStr); @@ -143,7 +144,7 @@ public interface OrderMapper extends BaseMapperX { List selectOrderListByIds(@Param("orderIds") List orderIds, @Param("organId") Long organId); - List selectOrderIds(@Param(Constants.WRAPPER) Wrapper wrapper); + IPage selectOrderIds(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper wrapper); // 生产单预警统计 List selectOrderNear(@Param("today") LocalDateTime today, @Param("orderDate") LocalDateTime orderDate, @Param("organId") Long organId); @@ -214,4 +215,37 @@ public interface OrderMapper extends BaseMapperX { .eq(OrderDO::getDeleted, OrderDeletedEnum.DELETED.getStatus()) .lt(OrderDO::getUpdateTime, LocalDateTime.now().minusDays(30))).stream().map(OrderDO::getId).collect(Collectors.toList()); } + + default int updateOrderListStatus(List orderIds, Integer status,Long organId) { + return update(new LambdaUpdateWrapper() + .set(OrderDO::getStatus, status) + .in(OrderDO::getId, orderIds) + .eq(OrderDO::getDeleted, 0) + .eq(OrderDO::getOrganId, organId)); + } + + + + List selectTestSQL(@Param("filed") String filed,@Param("orderIds") List orderIds,@Param("organId") Long organId); + + + + + + default List selectOrderIdsList(OrderPageReqVOCopy pageReqVO, List statusList, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(OrderDO::getOrganId, organId) + .eq(OrderDO::getDeleted, false) + .in(OrderDO::getStatus,statusList) + .likeIfPresent(OrderDO::getId,pageReqVO.getOrderId() != null ? pageReqVO.getOrderId().toString() : null) + .inIfPresent(OrderDO::getId,pageReqVO.getOrderIds()) + .likeIfPresent(OrderDO::getCustomOrderNo,pageReqVO.getDefaultId()) + .likeIfPresent(OrderDO::getCustomer,pageReqVO.getConsignee()) + .likeIfPresent(OrderDO::getAddress,pageReqVO.getConsigneeAddress()) + .betweenIfPresent(OrderDO::getCreateTime,pageReqVO.getCreateTime()) + .select(OrderDO::getId)); + + } + + } 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 4e9242919..3c912c3dc 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 @@ -4,18 +4,12 @@ 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.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderModuleRespVO; -import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBodyRespVO; -import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO; -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.io.Serializable; import java.util.Collection; import java.util.List; import java.util.Set; 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 5a8971ec1..1e5a65fcd 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 @@ -1,25 +1,18 @@ package com.cf.imes.module.executor.dal.mysql.orderItem; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.Constants; 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.order.vo.order.OrderModuleRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPlatesDetailRespVO; import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO; -import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.OptimizeRemainPlate; +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.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; -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.orderModuleExtra.OrderModuleExtraDO; -import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO; 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; @@ -85,4 +78,29 @@ public interface OrderItemMapper extends BaseMapperX { return delete(new LambdaQueryWrapperX() .in(OrderItemDO::getOrderId, orderId)); } + + + List selectRoomBodyByOrderId( @Param("orderIds") List orderIds, @Param("organId") Long organId); + + + + default List selectPlateIdList(List plateIds, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(OrderItemDO::getOrganId,organId) + .inIfPresent(OrderItemDO::getPlateId, plateIds) + .select(OrderItemDO::getBodyId,OrderItemDO::getRoomId,OrderItemDO::getGroupId)); + + } + + + + + + default List selectPartsList(List partIds, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(OrderItemDO::getOrganId,organId) + .inIfPresent(OrderItemDO::getPlateId, partIds) + .select(OrderItemDO::getNum)); + + } } \ 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/orderParts/OrderPartsMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderParts/OrderPartsMapper.java index c7537d6b3..d71cdd578 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderParts/OrderPartsMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderParts/OrderPartsMapper.java @@ -1,19 +1,20 @@ package com.cf.imes.module.executor.dal.mysql.orderParts; -import java.util.*; - import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.cf.imes.framework.common.pojo.PageResult; -import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; 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.orderParts.vo.OrderPartsPageReqVO; +import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO; +import com.cf.imes.module.executor.controller.admin.orderParts.vo.PartGoodsRespVO; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPartsRespVO; -import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO; import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO; import org.apache.ibatis.annotations.Mapper; -import com.cf.imes.module.executor.controller.admin.orderParts.vo.*; import org.apache.ibatis.annotations.Param; +import java.util.Collection; +import java.util.List; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; @@ -84,4 +85,18 @@ public interface OrderPartsMapper extends BaseMapperX { return delete(new LambdaQueryWrapperX() .in(OrderPartsDO::getOrderId, orderId)); } + + + List selectTestSql(@Param("filed") String filed,@Param("partIds") List partIds,@Param("organId") Long organId); + + + + default List selectPartIds(List orderIds, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(OrderPartsDO::getOrganId,organId) + .eq(OrderPartsDO::getDeleted,false) + .in(OrderPartsDO::getOrderId,orderIds) + .select(OrderPartsDO::getId)); + } + } \ 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 33ef05b45..a8845c51e 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 @@ -1,21 +1,21 @@ package com.cf.imes.module.executor.dal.mysql.plan; -import java.util.*; - import com.cf.imes.framework.common.pojo.PageResult; -import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; +import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatisticsReqVO; +import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.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 com.cf.imes.module.executor.controller.admin.plan.vo.*; import org.apache.ibatis.annotations.Param; +import java.util.List; + import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; /** @@ -100,4 +100,19 @@ public interface PlanMapper extends BaseMapperX { * @return */ List selectPlanAreaGroupByCreateTime(@Param("req") OrderStatisticsReqVO reqVO); + + + List seleTestSQL(@Param("filed") String filed,@Param("planId") Long planId,@Param("organId") Long organId); + + + + List selectPlanIds(@Param("updateTime") String updateTime,@Param("sort") Long sort,@Param("organId") Long organId,@Param("planId") Long planId); + + + + List selectPlanIdsFalse(@Param("updateTime") String updateTime,@Param("sort") Long sort,@Param("organId") Long organId,@Param("planId") Long planId); + + +// List seleTestSQL(@Param("sql") String sql); + } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java index 46831309e..096387e97 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 @@ -1,23 +1,29 @@ package com.cf.imes.module.executor.dal.mysql.plate; -import java.math.BigDecimal; -import java.util.*; - 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.enums.OrderPlateTypeEnum; import com.cf.imes.framework.common.pojo.PageResult; -import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; 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.plan.bo.GoodsNum; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds; import com.cf.imes.module.executor.controller.admin.plan.vo.*; +import com.cf.imes.module.executor.controller.admin.plate.vo.PlateGoodsIdVO; +import com.cf.imes.module.executor.controller.admin.plate.vo.PlateGoodsRespVO; +import com.cf.imes.module.executor.controller.admin.plate.vo.PlatePageReqVO; +import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import org.apache.ibatis.annotations.Mapper; -import com.cf.imes.module.executor.controller.admin.plate.vo.*; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; +import java.util.Collection; +import java.util.List; +import java.util.Set; + import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; /** @@ -120,7 +126,9 @@ public interface PlateMapper extends BaseMapperX { List selectPlateGoodsListByList(@Param("plates") List goodsIdList, @Param("orderId") Long orderId, @Param("organId") Long organId); - List selectGoodsPage( @Param("orderIds") List orderIds, @Param("organId") Long organId); +// List selectGoodsPage( @Param("orderIds") List orderIds, @Param("organId") Long organId); + + List selectGoodsPage( @Param(Constants.WRAPPER) Wrapper wrapper); IPage selectGoodsList(@Param("page") IPage page,@Param("goodsIds") List goodsIds,@Param("organId") Long organId); @@ -152,9 +160,67 @@ public interface PlateMapper extends BaseMapperX { .eq(PlateDO::getOrganId, organId) .eqIfPresent(PlateDO::getOrderId, orderId)); } + + + + default List selectGoodsPlateList(List goodIds, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(PlateDO::getOrganId,organId) + .inIfPresent(PlateDO::getGoodsId, goodIds)); + + + } + + + List selectPlateListByGoodIds(@Param("goodIds") List goodIds,@Param("organId") Long organId); + + + List selectPlateArea(@Param("orderIdsList") List orderIdsList,@Param("organId") Long organId); + + + + default List selectPlateByPlateNo(List plateNo, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(PlateDO::getOrganId,organId) + .inIfPresent(PlateDO::getPlateNo, plateNo) + .select(PlateDO::getOrderId)); + + } + + + + default List selectPlateListByGoodsIds(List deleteIds, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(PlateDO::getOrganId,organId) + .inIfPresent(PlateDO::getGoodsId, deleteIds) + .select(PlateDO::getPlateNo)); + + } + + // 批量删除 default int deleteBatch(Collection orderId) { return delete(new LambdaQueryWrapperX() .in(PlateDO::getOrderId, orderId)); } + + + List selectTestSQL(@Param("filed") String filed, @Param("field2") String field2,@Param("goodsIdList") List goodsIdList,@Param("organId") Long organId); + + + + default List selectPlateIdList(List goodsIdList, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(PlateDO::getOrganId,organId) + .eq(PlateDO::getDeleted,false) + .inIfPresent(PlateDO::getGoodsId,goodsIdList) + .eq(PlateDO::getType, OrderPlateTypeEnum.SELFINCREASINGBOARD.getType()) + .select(PlateDO::getId)); + + } + + +// List selectTestSQL(@Param("sql") String sql); + + } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/remainplaten/RemainPlateMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/remainplaten/RemainPlateMapper.java index 8d8bd2545..51a56abdb 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/remainplaten/RemainPlateMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/remainplaten/RemainPlateMapper.java @@ -4,11 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 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.plan.saveOptimize.OptimizeRemainPlate; import com.cf.imes.module.executor.controller.admin.remainplate.vo.RemainPlatePageReqVO; -import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO; import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.Collection; import java.util.List; @@ -59,4 +58,9 @@ public interface RemainPlateMapper extends BaseMapperX { .in(RemainPlateDO::getId, ids) .eq(RemainPlateDO::getOrganId, organId)); } + + List selectTestSQL(@Param("filed") String filed,@Param("planId") Long planId,@Param("organId") Long organId); + + +// 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/enums/OrderPlanStatusEnum.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/enums/OrderPlanStatusEnum.java deleted file mode 100644 index 4f993f5a8..000000000 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/enums/OrderPlanStatusEnum.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.cf.imes.module.executor.enums; - -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -/** - * 排单状态 - * - * @author Gqr - * @since 2024/6/7 14:25 - */ -@RequiredArgsConstructor -@Getter -public enum OrderPlanStatusEnum { - NEW(0, "新单"), - - APPLY(1, "板材已申请"), - - OPENING(2, "开料中"), - - OPENED(3, "已开料"); - - /** - * 类型编码 - */ - private final Integer code; - - /** - * 描述 - */ - private final String desc; -} \ 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/framework/rpc/config/RpcConfiguration.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/framework/rpc/config/RpcConfiguration.java index d7707899b..b48efa051 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/framework/rpc/config/RpcConfiguration.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/framework/rpc/config/RpcConfiguration.java @@ -5,6 +5,7 @@ import com.cf.imes.module.report.api.template.ReportTemplateApi; import com.cf.imes.module.system.api.application.ApplicationApi; import com.cf.imes.module.system.api.dataSource.DataSourceApi; import com.cf.imes.module.system.api.machine.MachineApi; +import com.cf.imes.module.system.api.organ.OrganApi; import com.cf.imes.module.system.api.process.ProcessApi; import com.cf.imes.module.system.api.process.ProcessGroupApi; import com.cf.imes.module.system.api.user.AdminUserApi; @@ -17,6 +18,6 @@ import org.springframework.context.annotation.Configuration; */ @Configuration(proxyBeanMethods = false) @EnableFeignClients(clients = {AdminUserApi.class, MachineApi.class, DictDataApi.class,AdminUserApi.class, - FileApi.class, ProcessGroupApi.class, FileApi.class, DataSourceApi.class, ApplicationApi.class, ProcessApi.class, ReportTemplateApi.class}) + FileApi.class, ProcessGroupApi.class, FileApi.class, DataSourceApi.class, ApplicationApi.class, ProcessApi.class, ReportTemplateApi.class, OrganApi.class}) public class RpcConfiguration { } 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 efd479af2..82c13fc68 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 @@ -1,10 +1,13 @@ 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.dal.dataobject.goods.OptimizeBoardModelDO; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; +import java.util.Collection; import java.util.List; import java.util.Map; @@ -18,19 +21,17 @@ public interface OptimizePlanService { Boolean addRemain(AddRemainReqVO vo); - Boolean savePlanPlateResult(SavePlanPlateResult result); - Boolean commit(Long planId); + Boolean commit(Long planId, List goodsNo); + + Boolean updateCuttingStatus(CuttingStatusRespVO respVO); Boolean endCutting(Long planId); - OptimizeParamResVO getOptimizeParam(Long planId); - - OptimizeParamRespVO getOptimizePlanParam(Long planId); Map getLabelDataSourceValue(GetSourceDataReq req); - OrderSource getOrderSource(Long orderId, Long planId, Long machineId); + OrderSource getOrderSource(Long orderId, Long planId, Long machineId,List ids); OrderSource getOrderSourceByOrderId(Long orderId); @@ -41,4 +42,10 @@ public interface OptimizePlanService { List getPlateModel(Long orderId); + + List buildBoardByOrderIds(Collection orderIds, String index, Integer size); + + + String deleteTest(List id); + } 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 8c57aa199..5e795f8b2 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 @@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch._types.FieldValue; import co.elastic.clients.elasticsearch.core.*; @@ -12,26 +11,20 @@ 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.ProcessProcessingTypeEnum; import com.cf.imes.framework.common.enums.RemainTypeEnum; import com.cf.imes.framework.common.exception.ServiceException; -import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.es.core.service.ESDocumentService; -import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; 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; import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepSalaryIds; -import com.cf.imes.module.executor.controller.admin.plan.dto.Material; -import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.OptimizeRemainPlate; -import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPackReqVO; -import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPartsRespVO; -import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.SavePlanPlateResultReqVO; +import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.*; import com.cf.imes.module.executor.controller.admin.plan.vo.*; -import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailVO; +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; @@ -41,8 +34,6 @@ import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO; -import com.cf.imes.module.executor.dal.dataobject.remainplaten.OutlineDTO; -import com.cf.imes.module.executor.dal.dataobject.remainplaten.PointDTO; 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; @@ -54,33 +45,32 @@ import com.cf.imes.module.executor.dal.mysql.processStep.ProcessStepMapper; import com.cf.imes.module.executor.dal.mysql.processStepItem.ProcessStepItemMapper; import com.cf.imes.module.executor.dal.mysql.remainplaten.RemainPlateMapper; import com.cf.imes.module.executor.enums.ErrorCodeConstants; -import com.cf.imes.module.executor.util.RandomUtils; -import com.cf.imes.module.executor.util.RectangleChecker; import com.cf.imes.module.infra.api.file.FileApi; -import com.cf.imes.module.infra.api.file.dto.FileCreateReqDTO; import com.cf.imes.module.system.api.dataSource.DataSourceApi; import com.cf.imes.module.system.api.machine.MachineApi; import com.cf.imes.module.system.api.process.ProcessApi; 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; import javax.annotation.Resource; import java.io.IOException; -import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; -import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR; -import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.UNKNOWN; +import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.*; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; 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 org.springframework.transaction.annotation.Transactional; +import static com.cf.imes.module.system.enums.ErrorCodeConstants.INSUFFICIENT_PERMISSIONS; /** * @author there @@ -163,55 +153,200 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { return Boolean.TRUE; } - @Override - public Boolean savePlanPlateResult(SavePlanPlateResult result) { - return null; -// PlanDO planDO = planMapper.selectById(result.getPlanId()); -// if (Objects.isNull(planDO)) { -// throw exception(PLAN_NOT_EXISTS); -// } -// try { -// String placeDateFileUrlSource = planDO.getPlaceDateFileUrl(); -// String placeOrderFileUrlSource = planDO.getPlaceOrderFileUrl(); -// if (StrUtil.isNotBlank(placeDateFileUrlSource)) { -// fileApi.deleteFileByPath(placeDateFileUrlSource).checkError(); -// } -// if (StrUtil.isNotBlank(placeOrderFileUrlSource)) { -// fileApi.deleteFileByPath(placeOrderFileUrlSource).checkError(); -// } -// FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO(); -// -// fileCreateReqDTO.setContent(result.getPlaceData().getBytes()); -// fileCreateReqDTO.setName(result.getPlaceData().getOriginalFilename()); -// String placeDateFileUrl = fileApi.createFile(fileCreateReqDTO).getCheckedData(); -// -// fileCreateReqDTO.setContent(result.getPlaceOrder().getBytes()); -// fileCreateReqDTO.setName(result.getPlaceOrder().getOriginalFilename()); -// String placeOrderFileUrl = fileApi.createFile(fileCreateReqDTO).getCheckedData(); -// -// PlanDO updateDO = PlanDO.builder() -// .id(result.getPlanId()) -// .placeDateFileUrl(placeOrderFileUrl) -// .placeOrderFileUrl(placeDateFileUrl) -// .build(); -// planMapper.updateById(updateDO); -// -// } catch (IOException e) { -// throw exception(UNKNOWN); -// } -// return Boolean.TRUE; - } @Override - public Boolean commit(Long planId) { + @Transactional(rollbackFor = Exception.class) + public Boolean commit(Long planId, List goodsNo) { + PlanDO planDO = planMapper.selectById(planId); if (Objects.isNull(planDO)) { throw exception(PLAN_NOT_EXISTS); } - planMapper.updateById(PlanDO.builder() - .id(planId) - .status(PlanStatusEnum.DURINGCUTTING.getStatus()) - .build()); + + + // todo 目前只解决了非混单的情况,混单情况待解决 + List optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10); + + OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.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(); + } + + for (Long goods : goodsNo) { + plateNo.addAll(outputList.stream().filter(f -> f.getBi().equals(goods)).map(BlockPlaceInfo::getBo).distinct().toList()); + } + + + + List plateDOS = plateMapper.selectPlateByPlateNo(plateNo.stream().distinct().toList(), getUserOrganId()); + + + List orderIds = plateDOS.stream().map(PlateDO::getOrderId).distinct().toList(); + + + + // 修改生产单的状态 + orderMapper.updateOrderListStatus(orderIds,OrderStatusEnum.IN_PRODUCTION.getStatus(),getUserOrganId()); + + + CutedBoardInfo cutedBoardInfo = optimizeBoardModelDO.getCutedBoardInfo(); + + + // 获取原排单的开料大板数 + 新增的开料大板数 + long cutedBoardNumber = cutedBoardInfo.getCutedBoardNumber() ; + + + cutedBoardNumber += goodsNo.size(); + + + // 获取原排单的已开料的大板编号 + List cutedBoardList = cutedBoardInfo.getCutedBoardList() == null ? new ArrayList<>() : cutedBoardInfo.getCutedBoardList(); + + + // 将新开料的大板编号添加到已开料的大板编号中 + cutedBoardList.addAll(goodsNo); + + + // 将需要更新更新的数据更新到原数据中 + cutedBoardInfo.setCutedBoardNumber(cutedBoardNumber); + cutedBoardInfo.setCutedBoardList(cutedBoardList); + + + // 更新开料相关的数据 + HashMap objectObjectHashMap = new HashMap<>(); + objectObjectHashMap.put("cutedBoardInfo",cutedBoardInfo); + + try { + + esDocumentService.updateById(ORDER_REMAIN_PLATE_MODEL, optimizeBoardModelDO.getId(), HashMap.class, objectObjectHashMap); + + }catch (IOException e) { + log.error(e.getMessage()); + throw new ServiceException(ES_ERROR_UPDATE); + } + + if(cutedBoardNumber > 0){ + + planDO.setStatus(PlanStatusEnum.OPENING.getStatus()); + planMapper.updateById(planDO); + + } + + if(optimizeBoardModelDO.getBoardCount() == cutedBoardNumber){ + + planDO.setStatus(PlanStatusEnum.OPENED.getStatus()); + planDO.setProduceTime(LocalDateTime.now()); + + planMapper.updateById(planDO); + + } + + return Boolean.TRUE; + } + + + + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateCuttingStatus(CuttingStatusRespVO respVO) { + + Long planId = respVO.getPlanId(); + List goodsNo = respVO.getGoodsNo(); + + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + assert loginUser != null; + + if(!loginUser.getIsSupAdmin()){ + + throw exception(INSUFFICIENT_PERMISSIONS); + + } + + PlanDO planDO = planMapper.selectById(planId); + if (planDO == null) { + throw exception(PLAN_NOT_EXISTS); + } + + // todo 目前只解决了非混单的情况,混单情况待解决 + List optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 99); + + OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0); + + CutedBoardInfo cutedBoardInfo = optimizeBoardModelDO.getCutedBoardInfo() == null ? new CutedBoardInfo() : optimizeBoardModelDO.getCutedBoardInfo(); + + + if(cutedBoardInfo.getCutedBoardNumber() != null) { + // 已经开料的大板信息 + List cutedBoardList = cutedBoardInfo.getCutedBoardList(); + // 开料的大板数量 + long cutedBoardNumber = cutedBoardInfo.getCutedBoardNumber(); + + // 移除取消开料的数据 + cutedBoardList.removeAll(goodsNo); + // 减去取消开料的大板数量 + cutedBoardNumber -= (goodsNo.isEmpty() ? 0 : goodsNo.size()); + + + // 将需要更新更新的数据更新到原数据中 + cutedBoardInfo.setCutedBoardNumber(cutedBoardNumber); + cutedBoardInfo.setCutedBoardList(cutedBoardList); + + + // 更新开料相关的数据 + HashMap objectObjectHashMap = new HashMap<>(); + objectObjectHashMap.put("cutedBoardInfo", cutedBoardInfo); + + try { + + esDocumentService.updateById(ORDER_REMAIN_PLATE_MODEL, optimizeBoardModelDO.getId(), HashMap.class, objectObjectHashMap); + + } catch (IOException e) { + log.error(e.getMessage()); + throw new ServiceException(ES_ERROR_UPDATE); + } + + if(cutedBoardInfo.getCutedBoardNumber() == 0){ + + planDO.setStatus(PlanStatusEnum.NOCUTTING.getStatus()); + planDO.setProduceTime(null); + planMapper.updateById(planDO); + + } + + if(planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus()) && cutedBoardInfo.getCutedBoardNumber() > 0 && cutedBoardInfo.getCutedBoardNumber() < optimizeBoardModelDO.getBoardCount() ){ + planDO.setStatus(PlanStatusEnum.OPENING.getStatus()); + planDO.setProduceTime(null); + planMapper.updateById(planDO); + } + + } + + + // todo 待确认,是否要达到这样的需求 : 生产单的状态也应该更改,如果大板变为未开料,生产单对应的状态应该变为已排单(这时取消开料对应的大板对应的生产单应该在其他排单中不存在,可修改) + + + return Boolean.TRUE; } @@ -224,7 +359,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } planMapper.updateById(PlanDO.builder() .id(planId) - .status(PlanStatusEnum.OPENEDMATERIAL.getStatus()) + .status(PlanStatusEnum.OPENED.getStatus()) .produceTime(LocalDateTime.now()) .build()); @@ -281,93 +416,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } - @Override - public OptimizeParamResVO getOptimizeParam(Long planId) { - //小板列表 - List plates = plateMapper.selectPlateList(planId); - //余料规格列表 - List remainPlateDOS = remainPlateMapper.selectList(new LambdaQueryWrapperX().eq(RemainPlateDO::getPlanId, planId)); - //余料板规格 - List rawSizes = new ArrayList<>(); - List remainPlateCount = new ArrayList<>(); - if (CollectionUtil.isNotEmpty(remainPlateDOS)) { - Map> map = remainPlateDOS.stream() - .map(e -> OutlineDTO.builder() - .list(JsonUtils.parseArray(e.getOutLineJson(), PointDTO.class)) - .length(e.getLength()) - .width(e.getWidth()) - .build() - ) - .filter(e -> e.getList().size() == 4 && RectangleChecker.checkRectangle(e.getList())) - .collect(Collectors.groupingBy(e -> e.getLength() + "," + e.getWidth())); - map.entrySet().forEach(e -> { - String[] split = e.getKey().split(","); - BigDecimal length = new BigDecimal(split[0]); - BigDecimal width = new BigDecimal(split[1]); - List outlines = e.getValue(); - rawSizes.add(OptimizeParamResVO.RawSize.builder() - .length(length) - .width(width) - .x(new BigDecimal(outlines.get(0).getList().get(0).getX())) - .y(new BigDecimal(outlines.get(0).getList().get(0).getY())) - .build()); - remainPlateCount.add(outlines.size()); - }); - } - - //大板规格 - /** - * select * from order_goods a - * left join order_plate b on a.goods_id = b.goods_id - * left join order_item c on b.id = c.plate_id - * left join order_plan_item d on c.id = d.item_id - * where d.plan_id = 1769638780093857792 - */ - MPJLambdaWrapper wrapper = new MPJLambdaWrapperX() - .distinct() - .select(GoodsDO::getId, GoodsDO::getWidth, GoodsDO::getHeight) - .leftJoin(PlateDO.class, PlateDO::getGoodsId, GoodsDO::getGoodsId) - .leftJoin(OrderItemDO.class, OrderItemDO::getPlanId, PlateDO::getPlateNo) - .leftJoin(PlanItemDO.class, PlanItemDO::getItemId, OrderItemDO::getId) - .eq(PlanItemDO::getPlanId, planId); - - GoodsDO goodsDO = goodsMapper.selectJoinOne(GoodsDO.class, wrapper); - rawSizes.add(OptimizeParamResVO.RawSize.builder() - .width(goodsDO.getWidth()) - .length(goodsDO.getHeight()) - .x(new BigDecimal("0")) - .y(new BigDecimal("0")) - .build()); - return OptimizeParamResVO.builder() - .plates(plates) - .rawSizes(rawSizes) - .remainPlateCount(remainPlateCount) - .build(); - - } - - @Override - public OptimizeParamRespVO getOptimizePlanParam(Long planId) { - - OptimizeParamRespVO optimizePlanParam = planMapper.getOptimizePlanParam(planId); - - if (Objects.isNull(optimizePlanParam)) { - return RandomUtils.randomPojo(OptimizeParamRespVO.class); - } - //暂时先mock - ArrayList list = new ArrayList<>(); - list.add(RandomUtils.randomPojo(Material.class)); - list.add(RandomUtils.randomPojo(Material.class)); - ArrayList plateDetailVOS = new ArrayList<>(); - plateDetailVOS.add(RandomUtils.randomPojo(PlateDetailVO.class)); - plateDetailVOS.add(RandomUtils.randomPojo(PlateDetailVO.class)); - plateDetailVOS.add(RandomUtils.randomPojo(PlateDetailVO.class)); - if (CollectionUtil.isNotEmpty(optimizePlanParam.getPlateList())) { - optimizePlanParam.getPlateList().get(0).setPlateDetailList(plateDetailVOS); - } - optimizePlanParam.setMaterialList(list); - return optimizePlanParam; - } @Override public Map getLabelDataSourceValue(GetSourceDataReq req) { @@ -383,9 +431,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } @Override - public OrderSource getOrderSource(Long orderId, Long planId, Long machineId) { - if (!Objects.isNull(orderId) && !Objects.isNull(planId)) { - throw exception(154112, "生产单id与排单id只能传一个"); + public OrderSource getOrderSource(Long orderId, Long planId, Long machineId,List ids) { + if (!Objects.isNull(orderId) && !Objects.isNull(planId) && !Objects.isNull(ids)) { + throw exception(154112, "生产单id与排单id与大板分类ID只能传一个"); } OrderSource orderSource; if (ObjectUtil.isNotNull(orderId)) { @@ -398,6 +446,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { orderSource.setMachineDTO(machineApi.getMachineDetail(machineId).getCheckedData()); return orderSource; } + if (ObjectUtil.isNotNull(ids)) { + orderSource = getOrderSourceByGoodId(ids); + orderSource.setMachineDTO(machineApi.getMachineDetail(machineId).getCheckedData()); + return orderSource; + } throw exception(ErrorCodeConstants.SOURCE_NOT_EXITS_ERROR); } @@ -476,7 +529,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { throw exception(PLAN_NOT_EXISTS); } MPJLambdaWrapper wrapper = new MPJLambdaWrapperX() - .select(OrderItemDO::getOrderId) + .select(OrderItemDO::getOrderId,OrderItemDO::getPlateId) .rightJoin(PlanItemDO.class, PlanItemDO::getItemId, OrderItemDO::getId) .eq(PlanItemDO::getPlanId, planId) .isNotNull(OrderItemDO::getId); @@ -488,9 +541,14 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { // List goodsDOS = goodsMapper.selectList(new LambdaQueryWrapperX().in(GoodsDO::getOrderId, orderIds)); - List goodsDOS = goodsMapper.selectGoodsListByOrderIds(orderIds,getUserOrganId()); - List plateDOS = plateMapper.selectPlateDetialListByIds(orderIds,getUserOrganId()); + List plateIds = orderItemDOS.stream().map(OrderItemDO::getPlateId).distinct().toList(); + + List goodsIds = plateMapper.selectBatchIds(plateIds).stream().map(PlateDO::getGoodsId).distinct().toList(); + + List goodsDOS = goodsMapper.selectGoodsListByOrderIds(goodsIds,getUserOrganId()); + + List plateDOS = plateMapper.selectPlateDetialListByIds(plateIds,getUserOrganId()); for (PlateDetialRespVO plateDetailsRespVO : plateDOS) { String name = ""; @@ -544,38 +602,102 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } + public OrderSource getOrderSourceByGoodId(List ids) { + +// PlanDO planDO = planMapper.selectById(planId); +// if (Objects.isNull(planDO)) { +// throw exception(PLAN_NOT_EXISTS); +// } + + +// List goodsDOS = goodsMapper.selectBatchIds(goodIds); + + List goodsReqVOS = goodsMapper.selectJoinList(GoodsReqVO.class, new MPJLambdaWrapperX() + + .leftJoin(RemainPlateDO.class, RemainPlateDO::getGoodsId, GoodsDO::getId) + .selectAll(GoodsDO.class) + .selectAs(RemainPlateDO::getId,"remainId") + .isNotNull(PlanItemDO::getId) + .eq(GoodsDO::getOrganId, getUserOrganId()) + .in(GoodsDO::getId, ids)); + + + + List orderIds = goodsReqVOS.stream().map(GoodsReqVO::getOrderId).distinct().toList(); + + List orderDOS = orderMapper.selectBatchIds(orderIds); + + List plateDetialRespVOS = plateMapper.selectPlateListByGoodIds(ids, getUserOrganId()); + + + for (PlateDetialRespVO plateDetailsRespVO : plateDetialRespVOS) { + String name = ""; + if(!plateDetailsRespVO.getProcessGroupLists().isEmpty()) { + for (ProcessGroupList groupNameList : plateDetailsRespVO.getProcessGroupLists()) { + // 去除最后的逗号 + name += groupNameList.getGroupName() + ","; + + } + name = name.substring(0, name.length() - 1); + } + + plateDetailsRespVO.setProcessGroupName(name); + + plateDetailsRespVO.setGoodsId(goodsReqVOS + .stream() + .filter(f->f.getId().equals(plateDetailsRespVO.getId())) + .map(GoodsReqVO::getGoodsId) + .findAny().orElse(null)); + } + + + // 造型数据的尺寸长度 + Integer orderModelSize = plateDetialRespVOS.size(); + + List orderModelDOS = buildRespByOrderIds(orderIds, ORDER_PLATE_MODEL, orderModelSize); + + +// // 查询生产单对应的配件信息 +// List printOrderPartsRespVOS = orderPartsMapper.selectPartList(orderIds, getUserOrganId()); +// +// // 查询生产单对应的包裹信息 +// List printOrderPackReqVOS = orderItemMapper.selectPackList(orderIds, getUserOrganId()); + + return OrderSource.builder() + .orderList(orderDOS) + .goodsList(goodsReqVOS) + .plateList(plateDetialRespVOS) + .plateModels(orderModelDOS) + .build(); + } + + + + + // 保存优化后的数据 @Override @Transactional(rollbackFor = Exception.class) public void saveOptimizationResults(SavePlanPlateResultReqVO req) { -// // 判断当前的大板数据是否已经优化,有优化,更新,没有,新增 -// if (req.getOptimizeBoardModelDOS().get(0).getIsOptimized().equals(true)) { -// try { -// // 更新大板的优化数据 -// BulkResponse bulkResponse = esDocumentService.bulkUpdate(ORDER_REMAIN_PLATE_MODEL, req.getOptimizeBoardModelDOS()); -// boolean errors = bulkResponse.errors(); -// if (errors) { -// log.error(bulkResponse.items().toString()); -// throw new ServiceException(500, "未知异常"); -// } -// } catch (Exception e) { -// e.printStackTrace(); -// log.error(e.getMessage()); -// throw new RuntimeException(e); -// } -// } -// else { + // 先根据排单查找是否有优化数据,如果有,删除 + List planIds = req.getOptimizeBoardModelDOS().stream().map(OptimizeBoardModelDO::getPlanId).toList(); - // 保存优化后的大板数据 - batchSaveBoardModel(req.getOptimizeBoardModelDOS()); + List optimizeBoardModelDOS = buildBoardByPlanIds(planIds, ORDER_REMAIN_PLATE_MODEL, planIds.size()); + if(!optimizeBoardModelDOS.isEmpty()){ -// } + deleteByPlanId(planIds,ORDER_REMAIN_PLATE_MODEL); + + } + + + // 保存优化后的大板数据 + batchSaveBoardModel(req.getOptimizeBoardModelDOS()); if (CollectionUtil.isNotEmpty(req.getOptimizeRemainPlates())) { - ArrayList remainPlateDOS = new ArrayList(); + ArrayList remainPlateDOS = new ArrayList<>(); for (OptimizeRemainPlate optimizeRemainPlate : req.getOptimizeRemainPlates()) { remainPlateDOS.add(RemainPlateDO.builder() @@ -603,16 +725,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } remainPlateMapper.updateBatch(remainPlateDOS); -// for (RemainPlateDO remainPlateDO : remainPlateDOS) { -// -//// if(remainPlateDO.getId() != null){ -//// remainPlateMapper.insert(remainPlateDO); -//// -//// } -// -// remainPlateMapper.updateById(remainPlateDO); -// -// } } @@ -622,24 +734,17 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { if (CollectionUtil.isNotEmpty(req.getAddPlateIds())) { List addPlates = req.getPlateList().stream() - .filter(m -> req.getAddPlateIds().contains(m.getId())) - .map(m -> m.setId(null)) + .filter(m -> req.getAddPlateIds().contains(m.getPlateId())) + .map(m -> m.setPlateId(null)) .collect(Collectors.toList()); - -// List collect = req.getPlateList().stream().map(m -> m.getId()).collect(Collectors.toList()); -// List addPlateIds = req.getAddPlateIds().stream().filter(m -> !collect.contains(m)).collect(Collectors.toList()); -// List addPlates = req.getPlateList().stream() -// .filter(m -> addPlateIds.contains(m.getId())) -// .map(m->m.setId(null)) -// .collect(Collectors.toList()); // 批量新增小板信息 List plateDOS = BeanUtils.toBean(addPlates, PlateDO.class); plateMapper.insertBatch(plateDOS); // 批量新增生产单明细表信息 - ArrayList orderItemDOS = new ArrayList(); + ArrayList orderItemDOS = new ArrayList<>(); for (PlateDetialRespVO plateDetialRespVO : req.getPlateList()) { orderItemDOS.add(OrderItemDO.builder() @@ -649,7 +754,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { // .groupId(Long.valueOf(plateDetialRespVO.getProcessGroupId())) .orderId(plateDetialRespVO.getOrderId()) .type(1) - .plateId(plateDetialRespVO.getId()) + .plateId(plateDetialRespVO.getPlateId()) .build()); } @@ -782,7 +887,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } } - private List buildBoardByOrderIds(Collection orderIds, String index, Integer size) { + + @Override + public List buildBoardByOrderIds(Collection orderIds, String index, Integer size) { List fieldValues = orderIds.stream().map(FieldValue::of).toList(); SearchRequest.Builder builder = new SearchRequest.Builder(); builder.index(index); @@ -802,5 +909,59 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } + public List buildBoardByPlanIds(Collection planIds, String index, Integer size) { + List fieldValues = planIds.stream().map(FieldValue::of).toList(); + SearchRequest.Builder builder = new SearchRequest.Builder(); + builder.index(index); + builder.size(size); + builder.query(q -> q.terms(b -> b.field("planId").terms(e -> e.value(fieldValues)))); + try { + SearchResponse search = elasticsearchClient.search(builder.build(), OptimizeBoardModelDO.class); + List> hits = search.hits().hits(); + if (CollectionUtil.isNotEmpty(hits)) { + return hits.stream().map(Hit::source).collect(Collectors.toList()); + } + return new ArrayList<>(); + } catch (IOException e) { + log.error(e.getMessage()); + throw new ServiceException(INTERNAL_SERVER_ERROR); + } + } + + + public void deleteByPlanId(List planIds, String index) { + List fieldValues = planIds.stream().map(FieldValue::of).toList(); + + DeleteByQueryRequest.Builder builder = new DeleteByQueryRequest.Builder(); + builder.index(index); + + builder.query(q -> q.terms(b -> b.field("planId").terms(e -> e.value(fieldValues)))); + + try { + DeleteByQueryResponse response = elasticsearchClient.deleteByQuery(builder.build()); + log.info("Deleted {} documents with planId {}", response.deleted(), planIds); + } catch (IOException e) { + log.error("Error deleting documents with planId {}: {}", planIds, e.getMessage()); + throw new ServiceException(ES_ERROR_DELETE); + } + } + + + + @Override + public String deleteTest(List orderIds) { + + Long a = 1801515154546884609L; + + + List optimizeBoardModelDOS = buildBoardByPlanId(a, ORDER_REMAIN_PLATE_MODEL, 999); + + System.out.println("哈哈哈哈哈1 "+optimizeBoardModelDOS); + + + return null; + + } + } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanService.java index 066549d73..4f13cf6c7 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanService.java @@ -1,12 +1,15 @@ package com.cf.imes.module.executor.service.plan; -import java.util.*; -import javax.validation.*; - -import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO; -import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.framework.common.pojo.PageResult; -import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; +import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO; +import com.cf.imes.module.executor.controller.admin.plan.bo.OrderRoomBodyList; +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.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Map; /** * 生产单开料排单 Service 接口 @@ -21,7 +24,7 @@ public interface PlanService { * @param createReqVO 创建信息 * @return 编号 */ - Long createPlan(@Valid PlanSaveReqVO createReqVO); + Map createPlan(@Valid PlanSaveReqVO createReqVO); /** * 更新生产单开料排单 @@ -33,9 +36,9 @@ public interface PlanService { /** * 删除生产单开料排单 * - * @param id 编号 + * @param ids 编号 */ - Boolean deletePlan(Long id); + Boolean deletePlan(List ids); /** * 获得生产单开料排单 @@ -75,5 +78,9 @@ public interface PlanService { List getPlateList(List planIds); + List getOrderRoomBody(List orderIds); + List getOrderPlateList(OrderPageReqVOCopy pageReqVO); + + List getNotOptimizeGoodsList(NotPlanGoodsReqVO reqVO); } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/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 d3eb44714..aec8c8a10 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 @@ -1,27 +1,39 @@ package com.cf.imes.module.executor.service.plan; import cn.hutool.core.collection.CollectionUtil; +import co.elastic.clients.elasticsearch.ElasticsearchClient; +import co.elastic.clients.elasticsearch._types.FieldValue; +import co.elastic.clients.elasticsearch.core.DeleteByQueryRequest; +import co.elastic.clients.elasticsearch.core.DeleteByQueryResponse; +import co.elastic.clients.elasticsearch.core.SearchRequest; +import co.elastic.clients.elasticsearch.core.SearchResponse; +import co.elastic.clients.elasticsearch.core.search.Hit; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.cf.imes.framework.common.enums.PlanFilterTypeEnum; import com.cf.imes.framework.common.enums.PlanStatusEnum; -import com.cf.imes.framework.common.util.json.JsonUtils; +import com.cf.imes.framework.common.exception.ServiceException; +import com.cf.imes.framework.common.pojo.PageResult; +import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX; 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.GoodsNum; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds; -import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO; +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.*; 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.orderBody.OrderBodyDO; 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 com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper; @@ -29,36 +41,37 @@ import com.cf.imes.module.executor.dal.mysql.module.ModuleMapper; 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.orderItem.OrderItemMapper; +import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper; import com.cf.imes.module.executor.dal.mysql.planitem.PlanItemMapper; import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper; 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; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; - -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - +import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; -import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; -import com.cf.imes.module.executor.controller.admin.plan.vo.*; -import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; -import com.cf.imes.framework.common.pojo.PageResult; -import com.cf.imes.framework.common.util.object.BeanUtils; - -import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper; - +import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.ES_ERROR_DELETE; +import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.cf.imes.framework.common.util.string.SearchUtil.insertSeparator; 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.framework.common.util.string.SearchUtil.insertSeparator; +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 实现类 @@ -67,6 +80,7 @@ import static com.cf.imes.framework.common.util.string.SearchUtil.insertSeparato */ @Service @Validated +@Slf4j public class PlanServiceImpl implements PlanService { @Resource @@ -99,104 +113,276 @@ public class PlanServiceImpl implements PlanService { @Resource private IdentifierGenerator identifierGenerator; + String ORDER_REMAIN_PLATE_MODEL = "imes_order_remain_plate_model"; + + @Resource + private ElasticsearchClient elasticsearchClient; + + @Resource + private OptimizePlanService optimizePlanService; + @Override @Transactional(rollbackFor = Exception.class) - public Long createPlan(PlanSaveReqVO createReqVO) { + public Map createPlan(PlanSaveReqVO createReqVO) { + + // todo 目前只考虑了非混单的情况,混单的情况待考虑 List itemList = createReqVO.getItemList(); - // 插入 - long sort = System.currentTimeMillis(); - PlanDO plan = BeanUtils.toBean(createReqVO, PlanDO.class); -// plan.setIsPay(Boolean.FALSE); - plan.setSort(0L); -// plan.setPlanNo(identifierGenerator.nextId(null).toString()); - String orderNos = itemList.stream().map(PlanSaveReqVO.Item::getOrderId).distinct().toList().toString(); - plan.setOrderNos(orderNos); - plan.setProduceTime(null); - planMapper.insert(plan); - // 修改对应的生产单的状态为 生产中 - List orderIds = JSON.parseArray(orderNos).toJavaList(Long.class); + ArrayList planDOS = new ArrayList<>(); - List goodsNums = plateMapper.selectGoodsNum(orderIds, getUserOrganId()); + ArrayList planItemDOS = new ArrayList<>(); - for (Long orderId : orderIds) { + Map goodsPlanId = new HashMap<>(); - // 传入的生产单的大板数量 - int size1 = itemList.stream().filter(f -> Objects.equals(f.getOrderId(), orderId)).map(PlanSaveReqVO.Item::getId).distinct().toList().size(); - // 当前生产单对应的大板数量 - List list = goodsNums.stream().filter(f -> Objects.equals(f.getOrderId(), orderId)).map(GoodsNum::getGoodsNum).toList(); + Map> groupedItems = itemList.stream() + .collect(Collectors.groupingBy(PlanSaveReqVO.Item::getGoodsId)); + + + for (Map.Entry> entry : groupedItems.entrySet()) { + + List items = entry.getValue(); + + // 创建计划 + PlanDO plan = BeanUtils.toBean(createReqVO, PlanDO.class); + plan.setId(identifierGenerator.nextId(plan).longValue()); + plan.setSort(0L); + String orderNos = items.stream().map(PlanSaveReqVO.Item::getOrderId).distinct().toList().toString(); + plan.setOrderNos(orderNos); + plan.setProduceTime(null); + + planDOS.add(plan); + + goodsPlanId.put(entry.getKey(), plan.getId()); + + Set itemIds = plateMapper.selectBatchOrderIdsAndGoodsIds(items,getUserOrganId()); + + if (CollectionUtil.isNotEmpty(itemIds)) { + + for (Long itemId : itemIds) { + planItemDOS.add(PlanItemDO.builder() + .planId(plan.getId()) + .itemId(itemId) + .build()); + } - if(size1 == list.get(0)){ - OrderDO orderDO = orderMapper.selectById(orderId).setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus()); - orderMapper.updateById(orderDO); } + } - Long planId = plan.getId(); + planMapper.insertBatch(planDOS); - Set itemIds = plateMapper.selectBatchOrderIdsAndGoodsIds(itemList,getUserOrganId()); + planItemMapper.insertBatch(planItemDOS); - if (CollectionUtil.isNotEmpty(itemIds)) { - ArrayList planItemDOS = new ArrayList<>(); - for (Long itemId : itemIds) { - planItemDOS.add(PlanItemDO.builder() - .planId(planId) - .itemId(itemId) - .build()); - } - planItemMapper.insertBatch(planItemDOS); - } - // 返回 - return plan.getId(); + + return goodsPlanId; + +// +// // 插入 +// PlanDO plan = BeanUtils.toBean(createReqVO, PlanDO.class); +// plan.setSort(0L); +// String orderNos = itemList.stream().map(PlanSaveReqVO.Item::getOrderId).distinct().toList().toString(); +// plan.setOrderNos(orderNos); +// plan.setProduceTime(null); +// planMapper.insert(plan); +// +// // 修改对应的生产单的状态为 已排单 +// List orderIds = itemList.stream().map(PlanSaveReqVO.Item::getOrderId).toList(); +// +// List orderDOS = orderMapper.selectBatchIds(orderIds); +// +// List orderDOList = orderDOS.stream().map(o -> o.setStatus(OrderStatusEnum.SORTED.getStatus())).toList(); +// +// orderMapper.updateBatch(orderDOList); +// +// Long planId = plan.getId(); +// +// +// // 返回 +// return plan.getId(); } @Override @Transactional(rollbackFor = Exception.class) public void updatePlan(PlanSaveReqVO updateReqVO) { + // 校验存在 - validatePlanExists(updateReqVO.getId()); + 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); + + 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); + + } + + } + } + + planMapper.updateById(plan); + } @Override @Transactional(rollbackFor = Exception.class) - public Boolean deletePlan(Long id) { + public Boolean deletePlan(List ids) { // 校验存在 - PlanDO planDO = planMapper.selectById(id); - if (planDO == null) { - throw exception(PLAN_NOT_EXISTS); - } - if (planDO.getStatus().equals(PlanStatusEnum.DURINGCUTTING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENEDMATERIAL.getStatus())) { - throw exception(PLAN_NOT_ALLOW_DELETE); - } - // 删除 - planMapper.deleteById(id); - /*planOrderMapper.delete(new LambdaQueryWrapperX().eq(PlanOrderDO::getPlanId, id));*/ - planItemMapper.delete(new LambdaQueryWrapperX().eq(PlanItemDO::getPlanId, id)); + validatePlan(ids); - // 修改生产单的状态为待排单 - List orderIds = JSON.parseArray(planDO.getOrderNos()).toJavaList(Long.class); - List orderDOS = orderMapper.selectBatchIds(orderIds).stream().map(m -> m.setStatus(OrderStatusEnum.SORTED.getStatus())).collect(Collectors.toList()); - orderMapper.updateBatch(orderDOS); + List planDOS = planMapper.selectBatchIds(ids); + + List orderIds = new ArrayList<>(); + for (PlanDO planDO : planDOS) { + + orderIds.addAll(JSON.parseArray(planDO.getOrderNos()).toJavaList(Long.class)); + + } + + // 删除排单信息,排单明细表信息,ES优化数据 + planMapper.deleteBatchIds(ids); + planItemMapper.delete(new LambdaQueryWrapperX().in(PlanItemDO::getPlanId, ids)); + + + // 排单对应的自增板的删除 todo 目前值解决了非混单的情况 + List boardModelDOS = buildBoardByPlanIds(ids, ORDER_REMAIN_PLATE_MODEL, ids.size()); + if(!boardModelDOS.isEmpty()) { + + List goodsIds = boardModelDOS.stream().map(OptimizeBoardModelDO::getGoodsId).toList(); + + List goodsIdList = goodsMapper.selectListByGoodsIdList(goodsIds, orderIds, getUserOrganId()).stream().map(GoodsDO::getId).toList(); + + List plateDOS = plateMapper.selectPlateIdList(goodsIdList, getUserOrganId()); + if(!plateDOS.isEmpty()) { + List plateIds = plateDOS.stream().map(PlateDO::getId).toList(); + + plateMapper.deleteBatchIds(plateIds); + + orderItemMapper.delete(new LambdaQueryWrapperX().in(OrderItemDO::getPlateId, plateIds)); + + } + + + // 目前生产单的状态已经去除待排单,所以无需修改生产单的状态 +// List orderDOS = orderMapper.selectBatchIds(orderIds).stream().map(m -> m.setStatus(OrderStatusEnum.SORTED.getStatus())).collect(Collectors.toList()); +// orderMapper.updateBatch(orderDOS); + + + // 删除排单对应的优化生产数据 + deleteByPlanId(ids, ORDER_REMAIN_PLATE_MODEL); + + } + + List orderIdList = new ArrayList<>(); + + List diff; + + // 根据生产单ID查询ES的优化数据 + List optimizeBoardModelDOS = optimizePlanService.buildBoardByOrderIds(orderIds, ORDER_REMAIN_PLATE_MODEL, 999); + + if(optimizeBoardModelDOS.isEmpty()){ + + diff = new ArrayList<>(orderIds); + + }else { + optimizeBoardModelDOS.forEach(f -> orderIdList.addAll(f.getOrderId())); + + // 已经删除的排单的生产单号和新查找的生生产单号对比,找出不同的部分 + diff = orderIds.stream().filter(f -> !orderIdList.contains(f)).toList(); + } + + if(!diff.isEmpty()){ + + List orderList = orderMapper.selectBatchIds(diff); + + List orderDOList = orderList.stream().map(m -> m.setStatus(OrderStatusEnum.NEW_ORDER.getStatus())).toList(); + + orderMapper.updateBatch(orderDOList); + } return Boolean.TRUE; } - private void validatePlanExists(Long id) { - if (planMapper.selectById(id) == null) { + + + private void validatePlanExists(Long id,Long machineId) { + PlanDO planDO = planMapper.selectById(id); + if ( planDO== null) { throw exception(PLAN_NOT_EXISTS); } + + if(planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) && planDO.getMachineId().equals(machineId)){ + throw exception(LIST_CHANGES_ARE_PROHIBITED); + } } private void validatePlan(List ids) { - planMapper.selectPlanByOrderIds(ids); + List planDOS = planMapper.selectBatchIds(ids); + + for (PlanDO planDO : planDOS) { + if ( planDO== null) { + throw exception(PLAN_NOT_EXISTS); + } + + if ( planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus()) ) { + throw exception(PLAN_NOT_ALLOW_DELETE,planDO.getId()); + } + + } } @@ -232,21 +418,76 @@ public class PlanServiceImpl implements PlanService { return respVO; } + + @Override public PageResult getPlanPage(PlanPageReqVO pageReqVO) { - PageResult planDOPageResult = planMapper.selectPage(pageReqVO); - if (CollectionUtil.isEmpty(planDOPageResult.getList())) { - return new PageResult<>(); - } - Set macheineIds = planDOPageResult.getList().stream().map(PlanDO::getMachineId).collect(Collectors.toSet()); - List machines = machineApi.list(macheineIds).getCheckedData(); + PageResult planDOPageResult = new PageResult<>(); + + + if(pageReqVO.getIsUp() != null) { + + PlanDO planDO = planMapper.selectById(pageReqVO.getId()); + + + List plan = pageReqVO.getIsUp() ? + planMapper.selectPlanIds(planDO.getUpdateTime().toString(),planDO.getSort(), getUserOrganId(), planDO.getId()) : + + planMapper.selectPlanIdsFalse(planDO.getUpdateTime().toString(),planDO.getSort(), getUserOrganId(), planDO.getId()); + + if (plan.isEmpty()) { + + throw exception(NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE, pageReqVO.getIsUp() ? "第" : "最后"); + } + + planDOPageResult.setList(plan); + + + }else { + + planDOPageResult = planMapper.selectPage(pageReqVO); + if (CollectionUtil.isEmpty(planDOPageResult.getList())) { + return new PageResult<>(); + } + + } + + + Set machineIds = planDOPageResult.getList().stream().map(PlanDO::getMachineId).collect(Collectors.toSet()); List planIds = planDOPageResult.getList().stream().map(PlanDO::getId).collect(Collectors.toList()); + List machines = machineApi.list(machineIds).getCheckedData(); + + + List plateInfoVOS = planItemMapper.selectGoodsList(planIds,getUserOrganId()); + 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 planOrderRespVOS = planItemMapper.selectOrderList(planIds, getUserOrganId()); @@ -256,14 +497,40 @@ public class PlanServiceImpl implements PlanService { planRespVOPageResult.getList().forEach(e -> { + // 机台信息 e.setMachineName(machines.stream() .filter(f -> Objects.equals(f.getId(), e.getMachineId())) .map(CuttingRespDTO::getName) .findAny() .orElse(null)); + // 板材信息列表 e.setPlateInfoList(plateInfoVOS.stream() .filter(f -> Objects.equals(f.getPlanId(), e.getId())) .collect(Collectors.toList())); + // todo 小板总数量目前只解决没有混单的情况时的小板数量,后续待加入混单情况 (目前解决,数据正确性待测试) + e.setPlateNum(plateInfoVOS.stream() + .filter(f -> Objects.equals(f.getPlanId(), e.getId())) + .mapToLong(PlateInfoVO::getCount) + .sum()); + // todo 大板优化数量目前只解决没有混单的情况时的小板数量,后续待加入混单情况 (目前解决,数据正确性待测试) + e.setOptimizeGoodsCount(optimizeBoardModelDOS.stream() + .filter(f -> Objects.equals(f.getPlanId(), e.getId())) + // todo 目前兼容修改,新的需求不需要这个校验 + .mapToLong(m -> m.getBoardCount() == null ?0 : m.getBoardCount()) + .sum()); + // 大板开料数 + e.setCutGoodsCount(optimizeBoardModelDOS.stream() + .filter(f->Objects.equals(f.getPlanId(), e.getId())) + .mapToLong(m-> m.getCutedBoardInfo() == null ? 0 : m.getCutedBoardInfo().getCutedBoardNumber()) + .sum()); + // 小板优化数量 + e.setOptimizePlateCount(optimizeBoardModelDOS.stream() + .filter(f->Objects.equals(f.getPlanId(), e.getId())) + .mapToLong(m-> m.getPlaceBlockNumber() == null ? 0 : m.getPlaceBlockNumber()) + .sum()); + // 未优化小板数量 + e.setUnOptimizePlateCount(e.getPlateNum() - e.getOptimizePlateCount()); + // 生产单信息 e.setOrderList(planOrderRespVOS.stream() .filter( f-> Objects.equals(f.getPlanId(), e.getId())) .collect(Collectors.toList())); @@ -276,25 +543,71 @@ public class PlanServiceImpl implements PlanService { public PageResult getOrderPage(OrderPageReqVOCopy pageReqVO) { PageDTO page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); + List statusList = new ArrayList<>(); + statusList.add(OrderStatusEnum.NEW_ORDER.getStatus()); + statusList.add(OrderStatusEnum.IN_PRODUCTION.getStatus()); + statusList.add(OrderStatusEnum.SORTED.getStatus()); + + // todo 修改排单数据筛选,目前只解决了非混单的情况,混单情况待解决 + List goodsDOS = goodsMapper.selectListByGoodsId(pageReqVO.getGoodsId(), getUserOrganId()); + +// List orderIds = new ArrayList<>(); +// if(pageReqVO.getGoodsId() != null) { +// List goodsDOS = goodsMapper.selectListByGoodsId(pageReqVO.getGoodsId(), getUserOrganId()); +// orderIds = goodsDOS.stream().map(GoodsDO::getOrderId).toList(); +// } + QueryWrapperX queryWrapperX = new QueryWrapperX<>(); queryWrapperX .eq("a.organ_id",getUserOrganId()) - .eq("a.status",OrderStatusEnum.SORTED.getStatus()) +// .eq("a.status",OrderStatusEnum.SORTED.getStatus()) .eq("a.deleted",false) + .in("a.status",statusList) + .isNotNull("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) -// .isNull("opi.item_id") + .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()) - .eqIfPresent("op.is_special_shaped", pageReqVO.getRectangle() != null ? false: null) - .eqIfPresent("op.is_special_shaped", pageReqVO.getSpecialShaped()) - .eqIfPresent("op.is_sculpt", pageReqVO.getSculpt()) - .eqIfPresent("op.is_door", pageReqVO.getIsDoor()) - .betweenIfPresent("op.height", new BigDecimal[]{pageReqVO.getLongMinRang(), pageReqVO.getLongMaxRang()}) - .betweenIfPresent("op.width", new BigDecimal[]{pageReqVO.getWidthMinRang(), pageReqVO.getWidthMaxRang()}) - .groupBy("a.id", " a.order_date", "a.delivery_date", "a.customer", "a.address", "a.custom_order_no","a.create_time","a.update_time") + .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") .orderByDesc("a.update_time"); + + + IPage orderRespVOCopies = orderMapper.selectOrderPage(page, queryWrapperX); + + if (CollectionUtil.isEmpty(orderRespVOCopies.getRecords())) { + return new PageResult<>(); + } + + + return new PageResult<>(orderRespVOCopies.getRecords(), orderRespVOCopies.getTotal()); + + } + + + @Override + public List getOrderPlateList(OrderPageReqVOCopy pageReqVO) { + + QueryWrapperX queryWrapperX = new QueryWrapperX<>(); + queryWrapperX + .eq("c.organ_id",getUserOrganId()) + .inIfPresent("c.order_id", pageReqVO.getOrderIds()) + .isNotNull("opi.item_id") + .inIfPresent("oi.room_id",pageReqVO.getRoomId()) + .inIfPresent("oi.body_id",pageReqVO.getBodyId()) + .eqIfPresent("a.is_special_shaped", pageReqVO.getRectangle() != null ? false: null) + .eqIfPresent("a.is_special_shaped", pageReqVO.getSpecialShaped()) + .eqIfPresent("a.is_sculpt", pageReqVO.getSculpt()) + .eqIfPresent("a.is_door", pageReqVO.getIsDoor()) + .betweenIfPresent("a.height", new BigDecimal[]{pageReqVO.getLongMinRang(), pageReqVO.getLongMaxRang()}) + .betweenIfPresent("a.width", new BigDecimal[]{pageReqVO.getWidthMinRang(), pageReqVO.getWidthMaxRang()}) + .groupBy("c.id", " c.order_id", "c.goods_name", "c.width", "c.height", "c.thickness","c.material","c.color","c.texture","c.goods_id"); + String filterTypes = ""; if (Objects.nonNull(pageReqVO.getHoleThrough()) && pageReqVO.getHoleThrough()) { filterTypes += PlanFilterTypeEnum.DIGGINGTHROUGHTHESHAPE.getType().toString(); @@ -306,46 +619,89 @@ public class PlanServiceImpl implements PlanService { filterTypes += PlanFilterTypeEnum.TWODIMENSIONALCUTTINGPATH.getType().toString(); } - queryWrapperX.likeIfPresent("op.filter_type", insertSeparator(filterTypes)); + queryWrapperX.likeIfPresent("a.filter_type", insertSeparator(filterTypes)); - IPage orderRespVOCopies = orderMapper.selectOrderPage(page, queryWrapperX); +// List platePages = plateMapper.selectGoodsPage(pageReqVO.getOrderIds(),getUserOrganId()/*, orderRespVOCopy.getGoodsId()*/); - if (CollectionUtil.isEmpty(orderRespVOCopies.getRecords())) { - return new PageResult<>(); + List notPlanOrderPlateRespVOS = plateMapper.selectGoodsPage(queryWrapperX); + + // todo 目前数据筛选只考虑了非混单的情况,混单情况待解决 + if(pageReqVO.getGoodsId() != null) { + return notPlanOrderPlateRespVOS.stream().filter(f -> f.getGoodsId().equals(pageReqVO.getGoodsId())).toList(); } - List records = orderRespVOCopies.getRecords(); - List orderIds = records.stream().map(m -> m.getOrderId()).collect(Collectors.toList()); - - - List platePages = plateMapper.selectGoodsPage(orderIds,getUserOrganId()/*, orderRespVOCopy.getGoodsId()*/); + return notPlanOrderPlateRespVOS; - List filteredRecords = records.stream() - .filter(record -> { - List filteredPages = platePages.stream() - .filter(f -> Objects.equals(f.getOrderId(), record.getOrderId())) - .collect(Collectors.toList()); - if (filteredPages.isEmpty()) { - return false; // 移除该记录 - } else { - record.setPlatePages(filteredPages); - return true; // 保留该记录 - } - }) - .collect(Collectors.toList()); - - // 处理后的 filteredRecords 将不包含过滤后的数据为空的 record - orderRespVOCopies.setRecords(filteredRecords); - -// orderRespVOCopies.setTotal(orderRespVOCopies.getRecords().size()); +// List filteredRecords = records.stream() +// .filter(record -> { +// List filteredPages = platePages.stream() +// .filter(f -> Objects.equals(f.getOrderId(), record.getOrderId())) +// .collect(Collectors.toList()); +// if (filteredPages.isEmpty()) { +// return false; // 移除该记录 +// } else { +// record.setPlatePages(filteredPages); +// return true; // 保留该记录 +// } +// }) +// .collect(Collectors.toList()); +// +// // 处理后的 filteredRecords 将不包含过滤后的数据为空的 record +// orderRespVOCopies.setRecords(filteredRecords); +// +//// orderRespVOCopies.setTotal(orderRespVOCopies.getRecords().size()); +// +// +// return new PageResult<>(orderRespVOCopies.getRecords(), orderRespVOCopies.getTotal()); - return new PageResult<>(orderRespVOCopies.getRecords(), orderRespVOCopies.getTotal()); } + @Override + public List getNotOptimizeGoodsList(NotPlanGoodsReqVO reqVO) { + + // 板材库对应的大板ID + List plateGoodIds = reqVO.getOrderIdList().stream().map(OrderIds::getId).toList(); + + + List notPlanGoodsRespVOS = goodsMapper.selectJoinList(NotPlanGoodsRespVO.class, new MPJLambdaWrapperX() + + .leftJoin(PlateDO.class, PlateDO::getGoodsId, GoodsDO::getId) + .selectCount(PlateDO::getId,"plateNum") + .select(GoodsDO::getGoodsId, GoodsDO::getHeight, GoodsDO::getWidth, GoodsDO::getColor, GoodsDO::getGoodsName, GoodsDO::getThickness,GoodsDO::getSpec,GoodsDO::getMaterial,GoodsDO::getTexture) + .isNotNull(PlanItemDO::getId) + .eq(GoodsDO::getOrganId, getUserOrganId()) + .in(GoodsDO::getId, plateGoodIds) + .groupBy(GoodsDO::getGoodsId, GoodsDO::getHeight, GoodsDO::getWidth, GoodsDO::getColor, GoodsDO::getGoodsName, GoodsDO::getThickness,GoodsDO::getSpec,GoodsDO::getMaterial,GoodsDO::getTexture)); + + + +// // 生产单对应的大板ID +// List goodIds = reqVO.getOrderIdList().stream().map(OrderIds::getId).toList(); +// +// // 查询板材库的大板信息 +// List notPlanGoodsRespVOS = goodsMapper.selectGoodsPlateList(plateGoodIds, getUserOrganId()); + + // 查询小板数量 +// List plateDOS = plateMapper.selectGoodsPlateNum(goodIds, getUserOrganId()); + + +// List notPlanGoodsRespVOS = BeanUtils.toBean(goodsDOS, NotPlanGoodsRespVO.class); + + for (NotPlanGoodsRespVO notPlanGoodsRespVO : notPlanGoodsRespVOS) { + notPlanGoodsRespVO.setOrderIdList(reqVO.getOrderIdList() + .stream() + .filter(orderIds -> orderIds.getGoodsId().equals(notPlanGoodsRespVO.getGoodsId())).toList()); + + notPlanGoodsRespVO.setGoodsNum(notPlanGoodsRespVO.getOrderIdList().stream().map(OrderIds::getId).toList().size()); + + } + + return notPlanGoodsRespVOS; + } @@ -356,17 +712,30 @@ public class PlanServiceImpl implements PlanService { PageDTO page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); + List statusList = new ArrayList<>(); + statusList.add(OrderStatusEnum.NEW_ORDER.getStatus()); + statusList.add(OrderStatusEnum.IN_PRODUCTION.getStatus()); + statusList.add(OrderStatusEnum.SORTED.getStatus()); + + List orderIds = orderMapper.selectOrderIdsList(pageReqVO, statusList, getUserOrganId()) + .stream().map(OrderDO::getId).toList(); + QueryWrapperX queryWrapperX = new QueryWrapperX<>(); queryWrapperX - .eq("a.organ_id",getUserOrganId()) - .eq("a.status",OrderStatusEnum.SORTED.getStatus()) - .eq("a.deleted",false) - .likeIfPresent("a.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId().toString() : null) -// .isNull("opi.item_id") - .eqIfPresent("a.customer", pageReqVO.getConsignee()) - .eqIfPresent("a.custom_order_no", pageReqVO.getDefaultId()) - .eqIfPresent("a.address", pageReqVO.getConsigneeAddress()) - .betweenIfPresent("a.create_time", pageReqVO.getCreateTime()) + .eq("oi.organ_id",getUserOrganId()) +// .in("a.status",statusList) + .eq("og.deleted",false) +// .likeIfPresent("oi.order_id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId().toString() : null) + .inIfPresent("oi.order_id", orderIds) + .isNotNull("opi.item_id") + .isNotNull("og.id") +// .eqIfPresent("a.customer", pageReqVO.getConsignee()) +// .eqIfPresent("a.custom_order_no", pageReqVO.getDefaultId()) +// .eqIfPresent("a.address", pageReqVO.getConsigneeAddress()) +// .betweenIfPresent("a.create_time", pageReqVO.getCreateTime()) + + // todo 修改排单数据筛选,目前只解决了非混单的情况,混单情况待解决 + .eqIfPresent("og.goods_id",pageReqVO.getGoodsId()) .eqIfPresent("op.is_special_shaped", pageReqVO.getRectangle() != null ? false: null) .eqIfPresent("op.is_special_shaped", pageReqVO.getSpecialShaped()) .eqIfPresent("op.is_sculpt", pageReqVO.getSculpt()) @@ -387,36 +756,45 @@ public class PlanServiceImpl implements PlanService { queryWrapperX.likeIfPresent("op.filter_type", insertSeparator(filterTypes)); - List orderIds = orderMapper.selectOrderIds(queryWrapperX); - - if(orderIds.isEmpty()){ - return new PageResult<>(); - } +// List orderIds = orderMapper.selectOrderIds(queryWrapperX); - List orderIdsList = plateMapper.selectOrderIds(orderIds,getUserOrganId()); + IPage orderGoodsResps = orderMapper.selectOrderIds(page,queryWrapperX); + +// if(orderIds.isEmpty()){ +// return new PageResult<>(); +// } +// +// +// 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(); +// +// } +// +// IPage orderGoodsResps = goodsMapper.selectGoods(page,goodsList, getUserOrganId()); - List goodsList = orderIdsList.stream().map(OrderIds::getGoodsId).distinct().toList(); +// List orderRespVOCopies = orderMapper.selectOrderListByIds(orderIdsList, getUserOrganId()); - 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()); - - record.setArea(orderRespVOCopies.stream().filter(e-> Objects.equals(e.getGoodsId(), record.getGoodsId())) - .map(OrderRespVOCopy::getArea) - .reduce(BigDecimal.ZERO,BigDecimal::add)); - - 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())); - } +// for (OrderGoodsResp record : orderGoodsResps.getRecords()) { +// record.setNum(orderRespVOCopies.stream().filter(e-> Objects.equals(e.getGoodsId(), record.getGoodsId())). +// mapToInt(OrderRespVOCopy::getNum).sum()); +// +// record.setArea(orderRespVOCopies.stream().filter(e-> Objects.equals(e.getGoodsId(), record.getGoodsId())) +// .map(OrderRespVOCopy::getArea) +// .reduce(BigDecimal.ZERO,BigDecimal::add)); +// +// 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())); +// } return new PageResult<>(orderGoodsResps.getRecords(), orderGoodsResps.getTotal()); @@ -466,9 +844,9 @@ public class PlanServiceImpl implements PlanService { if (planDO == null) { throw exception(PLAN_NOT_EXISTS); } - if (planDO.getStatus().equals(PlanStatusEnum.NEWORDER.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.BOARDHASBEENAPPLIEDFOR.getStatus())) { - throw exception(PLAN_NOT_ALLOW_CANCEL); - } +// if (planDO.getStatus().equals(PlanStatusEnum.NEWORDER.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.BOARDHASBEENAPPLIEDFOR.getStatus())) { +// throw exception(PLAN_NOT_ALLOW_CANCEL); +// } Set itemIds = planItemMapper.selectList(new LambdaQueryWrapperX() .eq(PlanItemDO::getOrganId,getUserOrganId()) .eq(PlanItemDO::getPlanId, id)) @@ -484,7 +862,7 @@ public class PlanServiceImpl implements PlanService { return null; } for (Long planId : vo.getPlanIds()) { - validatePlanExists(planId); + validatePlanExists(planId,null); } QueryWrapperX queryWrapperX = new QueryWrapperX<>(); @@ -589,5 +967,74 @@ public class PlanServiceImpl implements PlanService { } + @Override + public List getOrderRoomBody(List orderIds) { + + + List orderRoomBodyLists = orderItemMapper.selectRoomBodyByOrderId(orderIds, getUserOrganId()); + + + return orderRoomBodyLists; + + + } + + + public void deleteByPlanId(List planIds, String index) { + List fieldValues = planIds.stream().map(FieldValue::of).toList(); + + DeleteByQueryRequest.Builder builder = new DeleteByQueryRequest.Builder(); + builder.index(index); + + builder.query(q -> q.terms(b -> b.field("planId").terms(e -> e.value(fieldValues)))); + + try { + DeleteByQueryResponse response = elasticsearchClient.deleteByQuery(builder.build()); + log.info("Deleted {} documents with planId {}", response.deleted(), planIds); + } catch (IOException e) { + log.error("Error deleting documents with planId {}: {}", planIds, e.getMessage()); + throw new ServiceException(ES_ERROR_DELETE); + } + } + + + + public List buildBoardByPlanIds(Collection planIds, String index, Integer size) { + List fieldValues = planIds.stream().map(FieldValue::of).toList(); + SearchRequest.Builder builder = new SearchRequest.Builder(); + builder.index(index); + builder.size(size); + builder.query(q -> q.terms(b -> b.field("planId").terms(e -> e.value(fieldValues)))); + try { + SearchResponse search = elasticsearchClient.search(builder.build(), OptimizeBoardModelDO.class); + List> hits = search.hits().hits(); + if (CollectionUtil.isNotEmpty(hits)) { + return hits.stream().map(Hit::source).collect(Collectors.toList()); + } + return new ArrayList<>(); + } catch (IOException e) { + log.error(e.getMessage()); + throw new ServiceException(INTERNAL_SERVER_ERROR); + } + } + + + private List buildBoardByPlanId(Long planId, String index,Integer size) { + SearchRequest.Builder builder = new SearchRequest.Builder(); + builder.index(index); + builder.size(size); + builder.query(q -> q.term(b -> b.field("planId").value(planId))); + try { + SearchResponse search = elasticsearchClient.search(builder.build(), OptimizeBoardModelDO.class); + List> hits = search.hits().hits(); + if (CollectionUtil.isNotEmpty(hits)) { + return hits.stream().map(Hit::source).collect(Collectors.toList()); + } + return new ArrayList<>(); + } catch (IOException e) { + log.error(e.getMessage()); + throw new ServiceException(INTERNAL_SERVER_ERROR); + } + } } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java index aae596023..d058e5464 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java @@ -1,6 +1,5 @@ package com.cf.imes.module.executor.service.plate; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import co.elastic.clients.elasticsearch.ElasticsearchClient; @@ -13,57 +12,44 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil; -import com.cf.imes.framework.common.util.json.JsonUtils; -import com.cf.imes.framework.es.core.service.ESDocumentService; +import com.cf.imes.framework.common.pojo.PageResult; +import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX; import com.cf.imes.framework.security.core.LoginUser; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO; +import com.cf.imes.module.executor.controller.admin.plate.vo.*; import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO; import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO; -import com.cf.imes.module.executor.dal.dataobject.processStepItem.OrderProcessStepItemDO; +import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper; import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper; -import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper; import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper; import com.cf.imes.module.executor.dal.mysql.planitem.PlanItemMapper; +import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper; import com.cf.imes.module.executor.dal.mysql.processStepItem.ProcessStepItemMapper; import com.cf.imes.module.executor.enums.OrderItemType; -import com.cf.imes.module.executor.util.RandomUtils; import com.cf.imes.module.executor.util.fileConversion.admin.SnowflakeIdWorker3rd; import com.cf.imes.module.system.enums.ErrorCodeConstants; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; - -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - import java.io.IOException; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; import java.util.*; import java.util.stream.Collectors; -import com.cf.imes.module.executor.controller.admin.plate.vo.*; -import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; -import com.cf.imes.framework.common.pojo.PageResult; -import com.cf.imes.framework.common.util.object.BeanUtils; - -import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper; - import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; import static com.cf.imes.module.executor.service.optimizeplan.OptimizePlanService.ORDER_PLATE_MODEL; -import static com.cf.imes.module.system.enums.ErrorCodeConstants.*; +import static com.cf.imes.module.system.enums.ErrorCodeConstants.PLATE_NOT_EXISTS; +import static com.cf.imes.module.system.enums.ErrorCodeConstants.THE_CURRENT_BOARD_IS_NOT_SELECTED; /** * 生产单板件 Service 实现类 @@ -267,6 +253,8 @@ public class PlateServiceImpl implements PlateService { } + Long goodsId = goodsMapper.selectGoodsId(reqVO.getOrderId(), reqVO.getGoodsId(), getUserOrganId()).getId(); + List plateDOS = new ArrayList<>(); for (int i = 0; i < reqVO.getMultiple(); i++) { @@ -279,7 +267,7 @@ public class PlateServiceImpl implements PlateService { plateDO.setRemark(reqVO.getRemake1() +","+ reqVO.getRemake2()); plateDO.setHoleArrange(reqVO.getPlaceHole()); - plateDO.setGoodsId(reqVO.getGoodsId()); + plateDO.setGoodsId(goodsId); plateDO.setPlateNo((obtainingTime) + Long.toString(plateNo).substring(2)); 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 215cf82f0..7bf338290 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,9 +32,9 @@ 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.order_id in + where og.organ_id =#{organId} and og.deleted = false and og.id in - + #{id} @@ -90,15 +90,48 @@ + + + \ 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 f9a372026..1a794803a 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 @@ -3,29 +3,77 @@ - + + + + + @@ -65,7 +113,6 @@ and o.organ_id = #{organId} and op.deleted = false - and op.is_cancel = 0 and og.goods_id in @@ -166,4 +213,73 @@ ORDER BY order_date; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 54c5b4426..5360f906c 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 @@ -207,6 +207,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderParts/OrderPartsMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderParts/OrderPartsMapper.xml index 3bc165a7b..6bb203cff 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderParts/OrderPartsMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderParts/OrderPartsMapper.xml @@ -121,4 +121,22 @@ WHERE order_id = #{orderId} AND organ_id = #{organId} AND deleted = #{deleted} + + + + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml index dbcc2eae8..397f531d3 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml @@ -170,4 +170,48 @@ and p.deleted = 0 group by date; + + + + + + + + + + \ 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 1b061a05d..d1fa9edd9 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 @@ -13,8 +13,20 @@ + + + + + + + + + + + + diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml index d7faf78f9..f0187bd98 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml @@ -123,9 +123,10 @@ - + - + + @@ -189,6 +190,7 @@ op.plate_no as plateNo, op.type as type, op.goods_id as goodsId, + ogs.goods_id as plateGoodsId, op.width as width, op.height as height, op.thickness as thickness, @@ -221,7 +223,6 @@ op.remark as remark, op.filter_type as filterType, op.is_cancel as isCancel, - ogs.goods_name as goodsName, ob.id as bodyId, ob.room_id as roomId, @@ -252,6 +253,7 @@ op.plate_no as plateNo, op.type as type, op.goods_id as goodsId, + ogs.goods_id as plateGoodsId, op.width as width, op.height as height, op.thickness as thickness, @@ -284,7 +286,6 @@ op.remark as remark, op.filter_type as filterType, op.is_cancel as isCancel, - ogs.goods_name as goodsName, ob.id as bodyId, ob.room_id as roomId, @@ -297,7 +298,7 @@ join order_body ob on oi.body_id = ob.id and oi.organ_id = ob.organ_id left join order_group og on oi.group_id = og.id and oi.organ_id = og.organ_id - where op.organ_id = #{organId} and op.deleted = false and op.order_id in + where op.organ_id = #{organId} and op.deleted = false and op.id in @@ -468,11 +469,11 @@ - + + + select distinct + c.texture, + c.width, + c.height, + c.thickness, + c.goods_name, + c.material, + c.color, + c.brand, + + c.order_id as orderId, + c.id as id, + c.goods_id as goodsId + + from order_plate a + LEFT JOIN order_item oi on a.id = oi.plate_id and a.order_id = oi.order_id and a.organ_id = oi.organ_id + LEFT JOIN order_goods c on a.goods_id = c.id and a.organ_id = c.organ_id + left join order_plan_item opi on oi.id = opi.item_id and oi.organ_id = opi.organ_id + + ${ew.customSqlSegment} + @@ -536,7 +589,7 @@ from order_plate a LEFT JOIN order_item oi on a.id = oi.plate_id and a.order_id = oi.order_id and a.organ_id = oi.organ_id - LEFT JOIN `orders` b on a.order_id = b.id and a.organ_id = b.organ_id +-- LEFT JOIN `orders` b on a.order_id = b.id and a.organ_id = b.organ_id LEFT JOIN order_goods c on a.goods_id = c.id and a.organ_id = c.organ_id left join order_plan_item opi on oi.id = opi.item_id and oi.organ_id = opi.organ_id where @@ -564,13 +617,10 @@ c.goods_id as goodsId from order_plate a LEFT JOIN order_item oi on a.id = oi.plate_id and a.order_id = oi.order_id and a.organ_id = oi.organ_id - LEFT JOIN `orders` b on a.order_id = b.id and a.organ_id = b.organ_id LEFT JOIN order_goods c on a.goods_id = c.id and a.organ_id = c.organ_id left join order_plan_item opi on oi.id = opi.item_id and oi.organ_id = opi.organ_id where - c.organ_id = #{organId} - and a.is_cancel = 0 - and b.status = 2 + c.organ_id = #{organId} and a.deleted = false and opi.item_id is null and c.order_id in @@ -581,6 +631,28 @@ + + + + + + + + + + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/remainplaten/RemainPlateMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/remainplaten/RemainPlateMapper.xml new file mode 100644 index 000000000..16f5967c0 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/remainplaten/RemainPlateMapper.xml @@ -0,0 +1,13 @@ + + + + + + + \ 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 22473a6a9..f54ce90d9 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 @@ -2,10 +2,7 @@ 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.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; @@ -20,14 +17,10 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; - -import java.io.IOException; import java.util.List; import static com.cf.imes.framework.common.pojo.CommonResult.success; -import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 生产打包 ") @RestController @@ -80,15 +73,25 @@ public class PackController { @GetMapping("/getOrderPack") - @Operation(summary = "查看生产订单对应的包裹信息") + @Operation(summary = "查看生产订单对应的包裹信息-未分页") @PreAuthorize("@ss.hasPermission('manage:pack:query')") - public CommonResult> getOrderPack(@Valid PackageDetailsReqVO reqVO) { + public CommonResult> getOrderPack(@Valid PackageDetailsReqVO reqVO) { return success(packService.getOrderPack(reqVO)); } + @GetMapping("/getPageOrderPack") + @Operation(summary = "查看生产订单对应的包裹信息-分页") + @PreAuthorize("@ss.hasPermission('manage:pack:query')") + public CommonResult> getPageOrderPack(@Valid PackageDetailsReqVO reqVO) { + + return success(packService.getPageOrderPack(reqVO)); + + } + + @GetMapping("/queryPackageDetails") @Operation(summary = "查询包裹的详细信息") 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 bf39ef5c9..3d1da8583 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 @@ -4,6 +4,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.common.enums.OrderPackageTypeEnum; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.module.manage.controller.admin.pack.vo.PackRespVO; @@ -81,10 +82,16 @@ public interface OrderPackageMapper extends BaseMapperX { // 删除当前生产单下所有的包裹 - default void updateDelete(Long orderId) { + default void updateDelete(Long orderId,Long organId) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper() .set(OrderPackageDO::getDeleted, true) - .eq(OrderPackageDO::getOrderId, orderId); + .eq(OrderPackageDO::getOrganId,organId) + .eq(OrderPackageDO::getOrderId, orderId) + .eq(OrderPackageDO::getType, OrderPackageTypeEnum.PLATE.getType()); update(wrapper); } + + + List selectPackListByOrderId(@Param("orderId") Long orderId,@Param("organId") Long organId); + } 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 e1e0d835b..19047ae99 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 @@ -3,10 +3,8 @@ package com.cf.imes.module.manage.dal.mysql.plate; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; -import com.cf.imes.module.manage.controller.admin.patching.vo.PatchingDetailReqVO; import com.cf.imes.module.manage.controller.admin.patching.vo.PatchingDetailRespVO; import com.cf.imes.module.manage.controller.admin.patching.vo.PatchingPlatePageReqVO; -import com.cf.imes.module.manage.controller.admin.process.vo.OrderPlateReqVO; import com.cf.imes.module.manage.controller.admin.process.vo.PlateDetails; import com.cf.imes.module.manage.dal.dataobject.plate.OrderPlateDO; import org.apache.ibatis.annotations.Mapper; @@ -38,4 +36,13 @@ public interface OrderPlateMapper extends BaseMapperX { .in(OrderPlateDO::getPlateNo, plateNo)); } + + + default OrderPlateDO selectplateByPlateNo(Long plateNo, Long orderId, Long organId) { + return selectOne(new LambdaQueryWrapperX() + .eq(OrderPlateDO::getOrganId, organId) + .eq(OrderPlateDO::getOrderId, orderId) + .eqIfPresent(OrderPlateDO::getPlateNo, plateNo) + .select(OrderPlateDO::getId)); + } } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/ProductionStatusMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/process/OrdersMapper.java similarity index 53% rename from cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/ProductionStatusMapper.java rename to cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/process/OrdersMapper.java index ab6e9464c..5582cc07c 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/ProductionStatusMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/process/OrdersMapper.java @@ -1,4 +1,4 @@ -package com.cf.imes.module.manage.dal.mysql.query; +package com.cf.imes.module.manage.dal.mysql.process; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -9,17 +9,15 @@ import com.cf.imes.module.manage.controller.admin.pack.vo.PackPageReqVO; import com.cf.imes.module.manage.controller.admin.pack.vo.PackRespVO; import com.cf.imes.module.manage.controller.admin.pack.vo.PrintOrderPackRespVO; import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.OrderPlatePageReqVO; -import com.cf.imes.module.manage.controller.admin.query.vo.pack.PrintOrderRespVO; import com.cf.imes.module.manage.dal.dataobject.process.OrderDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; -import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; - @Mapper -public interface ProductionStatusMapper extends BaseMapperX { +public interface OrdersMapper extends BaseMapperX { + default PageResult selectProductionPage(OrderPlatePageReqVO pageReqVO) { @@ -38,32 +36,24 @@ public interface ProductionStatusMapper extends BaseMapperX { + List selectOrderIds( @Param("createTime") String createTime, @Param("organId") Long organId, @Param("orderId") Long orderId); - PrintOrderRespVO selectPrintOrder(@Param("orderNo") Long orderNo,@Param("organId")Long organId); - - -// default List selectOrderIds(PackPageReqVO pageReqVO,Long organId) { -// return selectList(new LambdaQueryWrapperX() -// .eq(OrderDO::getOrganId,organId) -// .eqIfPresent(OrderDO::getId, pageReqVO.getOrderId()) -// .eqIfPresent(OrderDO::getCustomOrderNo, pageReqVO.getCustomOrderNo()) -// .likeIfPresent(OrderDO::getCustomer, pageReqVO.getCustomer()) -// .likeIfPresent(OrderDO::getAddress, pageReqVO.getAddress()) -// .eqIfPresent(OrderDO::getStatus, pageReqVO.getStatus()) -// .orderByDesc(OrderDO::getCreateTime)); -// } - - IPage selectOrderPlate( @Param("page") IPage page, @Param("orderIds") List orderIds, @Param("organId") Long organId); + List selectOrderIdsFalse( @Param("createTime") String createTime,@Param("organId") Long organId, @Param("orderId") Long orderId); - - PrintOrderPackRespVO selectOrderPack(@Param("orderNo")Long orderNo,@Param("packageNo") Long packageNo, @Param("organId") Long organId); + IPage selectOrderPlate(@Param("page") IPage page, @Param("orderIds") List orderIds, @Param("organId") Long organId); - List selectOrderIds(@Param("pageReqVO") PackPageReqVO pageReqVO,@Param("organId") Long organId); + PrintOrderPackRespVO selectOrderPack(@Param("orderNo")Long orderNo, @Param("packageNo") Long packageNo, @Param("organId") Long organId); + + + + IPage selectOrderIdList(@Param("page") IPage page, @Param("pageReqVO") PackPageReqVO pageReqVO, @Param("organId") Long organId); + + } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/process/ProductionProcessMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/process/ProductionProcessMapper.java deleted file mode 100644 index cb955a485..000000000 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/process/ProductionProcessMapper.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.cf.imes.module.manage.dal.mysql.process; - - - -import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; -import com.cf.imes.module.manage.controller.admin.patching.vo.PatchingPlatePageReqVO; -import com.cf.imes.module.manage.controller.admin.patching.vo.PatchingPlateRespVO; -import com.cf.imes.module.manage.dal.dataobject.process.OrderDO; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.time.LocalDateTime; -import java.util.List; - -/** - * 生产单表 order_{N} Mapper - * - * @author 晨丰科技 - */ -@Mapper -public interface ProductionProcessMapper extends BaseMapperX { - - - - - - List selectPatchingPlate(PatchingPlatePageReqVO pageReqVO); - - - OrderDO selectOrderIds(@Param("createTime") String createTime, @Param("organId") Long organId, @Param("orderId") Long orderId); - - OrderDO selectOrderIdsFalse(@Param("createTime") String createTime,@Param("organId") Long organId, @Param("orderId") Long orderId); - - -// OrderDO selectOrderIds(@Param("orderId") Long orderId,@Param("organId") Long organId); -// -// OrderDO selectOrderIdsFalse(@Param("orderId") Long orderId,@Param("organId") Long userOrganId); - - - - -} \ 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 cbed9c208..79becf322 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 @@ -1,12 +1,11 @@ package com.cf.imes.module.manage.dal.mysql.query; - -import com.baomidou.mybatisplus.core.metadata.IPage; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; -import com.cf.imes.module.manage.controller.admin.pack.vo.*; -import com.cf.imes.module.manage.controller.admin.process.vo.OrderPlateReqVO; +import com.cf.imes.module.manage.controller.admin.pack.vo.OrderPlateDetailsRespVO; +import com.cf.imes.module.manage.controller.admin.pack.vo.PackRespVO; +import com.cf.imes.module.manage.controller.admin.pack.vo.PlateDetailsRespVO; import com.cf.imes.module.manage.controller.admin.process.vo.PlateDetails; import com.cf.imes.module.manage.controller.admin.process.vo.ProcessPlateReqVO; import com.cf.imes.module.manage.controller.admin.query.vo.pack.PackageDetailsRespVO; @@ -14,13 +13,10 @@ import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.Orde import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.OrderPlateRespVO; import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.PlatePageVO; import com.cf.imes.module.manage.dal.dataobject.query.OrderItemDO; -import com.cf.imes.module.manage.dal.dataobject.query.OrderPackageDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; - import java.util.List; -import java.util.stream.Collectors; @Mapper public interface OrderItemMapper extends BaseMapperX { @@ -98,4 +94,16 @@ public interface OrderItemMapper extends BaseMapperX { .eqIfPresent(OrderItemDO::getOrderId, orderId)); } + + List selectPlateNum(@Param("orderIds") List orderIds,@Param("organId") Long organId); + + + + default List selectPartsList(Long orderId, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(OrderItemDO::getOrganId, organId) + .eqIfPresent(OrderItemDO::getOrderId, orderId) + .eq(OrderItemDO::getPackageId,0) + .select(OrderItemDO::getPartsId)); + } } 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 8e304307d..33cccfaa8 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 @@ -16,9 +16,11 @@ public interface PackService { // 查看生产订单对应的包裹信息 - PageResult getOrderPack(PackageDetailsReqVO reqVO); + List getOrderPack(PackageDetailsReqVO reqVO); + PageResult getPageOrderPack(PackageDetailsReqVO reqVO); + // 查看生产订单对应的板材信息 List getOrderPlateList(Long orderId); 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 c95fabd8f..652b14619 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 @@ -25,13 +25,10 @@ import com.cf.imes.module.manage.dal.mysql.pack.OrderBodyMapper; import com.cf.imes.module.manage.dal.mysql.pack.OrderPackageMapper; import com.cf.imes.module.manage.dal.mysql.pack.OrderPrepackagedMapper; 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.plate.PlateMapper; +import com.cf.imes.module.manage.dal.mysql.process.OrdersMapper; 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.service.process.ProductionProcessServiceImpl; import com.cf.imes.module.manage.util.SnowflakeIdWorker3rd; import com.cf.imes.module.system.api.setting.SettingApi; import com.cf.imes.module.system.api.setting.dto.PackageConfigDTO; @@ -64,8 +61,6 @@ public class PackServiceImpl implements PackService { @Resource private OrderPackageMapper orderPackageMapper; - @Resource - private ProductionStatusMapper productionStatusMapper; @Resource private OrderItemMapper orderItemMapper; @@ -80,16 +75,11 @@ public class PackServiceImpl implements PackService { private OrderPlateMapper orderPlateMapper; @Resource - private ProcessStepMapper processStepMapper; + private OrdersMapper ordersMapper; @Resource - private ProductionProcessServiceImpl productionProcessService; + private PlateMapper plateMapper; - @Resource - private ProcessStepItemMapper processStepItemMapper; - - @Resource - private ProductionProcessMapper productionProcessMapper; @Resource private SnowflakeIdWorker3rd idWorker; @@ -110,48 +100,62 @@ public class PackServiceImpl implements PackService { List orderIds = new ArrayList<>(); + + IPage packRespVOS = new PageDTO<>(); + + if(pageReqVO.getIsUp() != null){ - OrderDO order = productionProcessMapper.selectById(pageReqVO.getOrderId()); + OrderDO order = ordersMapper.selectById(pageReqVO.getOrderId()); - OrderDO orderDO = pageReqVO.getIsUp() ? - productionProcessMapper.selectOrderIds(order.getCreateTime().toString(), getUserOrganId(),order.getId()) : + List packRespVOList = pageReqVO.getIsUp() ? + ordersMapper.selectOrderIds(order.getCreateTime().toString(), getUserOrganId(),order.getId()) : - productionProcessMapper.selectOrderIdsFalse(order.getCreateTime().toString(), getUserOrganId(),order.getId()); + ordersMapper.selectOrderIdsFalse(order.getCreateTime().toString(), getUserOrganId(),order.getId()); - if(orderDO == null){ + if(packRespVOList.isEmpty()){ throw exception(NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE, pageReqVO.getIsUp() ?"第" : "最后"); } - orderIds.add(orderDO.getId()); + packRespVOS.setRecords(packRespVOList); + + orderIds.addAll(packRespVOS.getRecords().stream().map(PackRespVO::getId).toList()); + }else { pageReqVO.setCustomer(insertSeparator(pageReqVO.getCustomer())); pageReqVO.setCustomOrderNo(insertSeparator(pageReqVO.getCustomOrderNo())); pageReqVO.setAddress(insertSeparator(pageReqVO.getAddress())); - // 根据生产状态查询生产单号 -// List orderIds = productionStatusMapper.selectOrderIds(pageReqVO, getUserOrganId()).stream().map(OrderDO::getId).toList(); - orderIds.addAll(productionStatusMapper.selectOrderIds(pageReqVO, getUserOrganId()).stream().map(OrderDO::getId).toList()); + // 查询查询分页 + packRespVOS = ordersMapper.selectOrderIdList(page,pageReqVO, getUserOrganId()); + + orderIds.addAll(packRespVOS.getRecords().stream().map(PackRespVO::getId).toList()); if (orderIds.isEmpty()) { return null; } } - // 查询打包首页分页数据信息,总的板件数量信息 - IPage packRespVOS = productionStatusMapper.selectOrderPlate(page,orderIds,getUserOrganId()); + + // 查询板材的总量 + List packRespVOList = orderItemMapper.selectPlateNum(orderIds,getUserOrganId()); + // 查询当前生产的包裹数量 List respVOS = orderPackageMapper.selectPackPage(orderIds,getUserOrganId()); + // 查询当前生产单已经打包的板材数量 List plateNum = orderPackageMapper.selectPackPieceCount(orderIds, getUserOrganId()); + for (PackRespVO record : packRespVOS.getRecords()) { + // 板材总数 + record.setTotalPieceCount(packRespVOList.stream().filter(f -> Objects.equals(f.getId(), record.getId())).mapToLong(PackRespVO::getTotalPieceCount).sum()); // 已打包数 record.setPackCount(respVOS.stream().filter(f -> Objects.equals(f.getId(), record.getId())).mapToLong(PackRespVO::getPackCount).sum()); // 已打包片数 @@ -238,12 +242,50 @@ public class PackServiceImpl implements PackService { } + // 查看生产订单对应的包裹信息 @Override - public PageResult getOrderPack(PackageDetailsReqVO reqVO) { + public List getOrderPack(PackageDetailsReqVO reqVO) { + + + List orderPackageVOS = orderPackageMapper.selectPackListByOrderId(reqVO.getOrderId(), getUserOrganId()); + + OrderDO orderDO = ordersMapper.selectById(reqVO.getOrderId()); + + // for (OrderPackageVO orderPackageVO : orderPackageVOS) { +// orderPackageVO.setCustomOrderNo(orderDO.getCustomOrderNo()); +// orderPackageVO.setCustomer(orderDO.getCustomer()); +// orderPackageVO.setAddress(orderDO.getAddress()); +// orderPackageVO.setDealer(orderDO.getDealer()); +// orderPackageVO.setOrderRemark(orderDO.getRemark()); +// } + + + return orderPackageVOS.stream().peek(m -> { + m.setCustomOrderNo(orderDO.getCustomOrderNo()); + m.setCustomer(orderDO.getCustomer()); + m.setAddress(orderDO.getAddress()); + m.setDealer(orderDO.getDealer()); + m.setOrderRemark(orderDO.getRemark()); + } + ).toList(); + + } + + + + @Override + public PageResult getPageOrderPack(PackageDetailsReqVO reqVO) { PageDTO page = new PageDTO<>(reqVO.getPageNo(), reqVO.getPageSize()); + +// if(reqVO.getPlateNo()!= null){ +// +// orderPlateMapper.selectplateByPlateNo(reqVO.getPlateNo(),reqVO.getOrderId(),getUserOrganId()); +// +// } + IPage orderPackageDOIPage = orderPackageMapper.selectByOrderNo(page,reqVO, getUserOrganId()); @@ -261,9 +303,6 @@ public class PackServiceImpl implements PackService { - - - // 查看配件列表分页 @Override public List getPartsList(OrderPartsReqVO reqVO) { @@ -497,7 +536,7 @@ public class PackServiceImpl implements PackService { @Transactional(rollbackFor = Exception.class) public void updateOrderStatus(Long orderId) { - OrderDO orderDO = productionProcessMapper.selectById(orderId); + OrderDO orderDO = ordersMapper.selectById(orderId); if(orderDO.getFinishTime() != null){ return; @@ -525,7 +564,7 @@ public class PackServiceImpl implements PackService { // 修改生产单的打包状态未已打包 orderDO.setPackaged(OrderPackageStatusEnum.PACKAGED.getStatus()); - productionProcessMapper.updateById(orderDO); + ordersMapper.updateById(orderDO); } @@ -549,7 +588,7 @@ public class PackServiceImpl implements PackService { @Override public PrintOrderPackRespVO printOrderPack(PrintOrderPackReqVO reqVO) { - PrintOrderPackRespVO printOrderPackRespVO = productionStatusMapper.selectOrderPack(reqVO.getOrderId(), reqVO.getPackageNo(),getUserOrganId()); + PrintOrderPackRespVO printOrderPackRespVO = ordersMapper.selectOrderPack(reqVO.getOrderId(), reqVO.getPackageNo(),getUserOrganId()); printOrderPackRespVO.setPlateList(orderItemMapper.selectPrintPlateList(reqVO.getOrderId(), reqVO.getPackageNo(),getUserOrganId())); return printOrderPackRespVO; @@ -799,7 +838,8 @@ public class PackServiceImpl implements PackService { if(!packageDOS.isEmpty()){ - orderPackageMapper.updateDelete(reqVO.getOrderId()); + // 删除除配件和其他配件外的所有包裹 + orderPackageMapper.updateDelete(reqVO.getOrderId(),getUserOrganId()); } @@ -828,6 +868,14 @@ public class PackServiceImpl implements PackService { orderItemMapper.updateBatch(orderItemDOS); + List orderItemDoPartsList = orderItemMapper.selectPartsList(reqVO.getOrderId(), getUserOrganId()); + + if(orderItemDoPartsList.isEmpty()) { + OrderDO orderDO = ordersMapper.selectById(reqVO.getOrderId()); + orderDO.setPackaged(OrderPackageStatusEnum.PACKAGED.getStatus()); + ordersMapper.updateById(orderDO); + } + } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/patching/PatchingPlateServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/patching/PatchingPlateServiceImpl.java index 1734343a6..51d007b3e 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/patching/PatchingPlateServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/patching/PatchingPlateServiceImpl.java @@ -1,22 +1,15 @@ package com.cf.imes.module.manage.service.patching; -import com.alibaba.nacos.shaded.com.google.gson.Gson; 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.vo.PlateDetailsRespVO; import com.cf.imes.module.manage.controller.admin.patching.vo.*; -import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.OrderPlateRespVO; +import com.cf.imes.module.manage.dal.dataobject.patching.MachineDO; import com.cf.imes.module.manage.dal.dataobject.patching.PatchDetailDO; -import com.cf.imes.module.manage.dal.dataobject.plate.OrderPlateDO; import com.cf.imes.module.manage.dal.mysql.patching.MachineMapper; import com.cf.imes.module.manage.dal.mysql.patching.PatchDetailMapper; import com.cf.imes.module.manage.dal.mysql.plate.OrderPlateMapper; -import com.cf.imes.module.manage.dal.mysql.plate.PlateMapper; -import com.cf.imes.module.manage.dal.mysql.process.ProductionProcessMapper; import com.cf.imes.module.manage.util.page.PageHelperUtil; -import com.cf.imes.module.manage.dal.dataobject.patching.MachineDO; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.stereotype.Service; @@ -30,8 +23,7 @@ import java.util.List; public class PatchingPlateServiceImpl implements PatchingPlateService{ - @Resource - private ProductionProcessMapper productionProcessMapper; + @Resource private OrderPlateMapper orderPlateMapper; @@ -48,15 +40,7 @@ public class PatchingPlateServiceImpl implements PatchingPlateService{ @Override public PageResult patchingSearchPlate(PatchingPlatePageReqVO pageReqVO) { - - // 查询板件和订单的基础信息 - PageHelper.startPage(pageReqVO.getPageNo(), pageReqVO.getPageSize()); - List patchingPlateRespVOS = productionProcessMapper.selectPatchingPlate(pageReqVO); - - // - PageInfo pageInfo = new PageInfo<>(patchingPlateRespVOS); - return PageHelperUtil.convertToPageResult(pageInfo); - + return null; } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/process/ProductionProcessServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/process/ProductionProcessServiceImpl.java index 61a96f7cf..93a192e8f 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/process/ProductionProcessServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/process/ProductionProcessServiceImpl.java @@ -2,8 +2,6 @@ package com.cf.imes.module.manage.service.process; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.log.Log; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.cf.imes.framework.common.enums.OrderStatusEnum; @@ -15,15 +13,14 @@ import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.module.manage.controller.admin.process.vo.*; import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.OrderModuleVO; import com.cf.imes.module.manage.dal.dataobject.pack.OrderBodyDO; -import com.cf.imes.module.manage.dal.dataobject.plate.OrderPlateDO; -import com.cf.imes.module.manage.dal.dataobject.plate.PlateDO; import com.cf.imes.module.manage.dal.dataobject.process.OrderDO; import com.cf.imes.module.manage.dal.dataobject.process.OrderProcessStepItemNDO; import com.cf.imes.module.manage.dal.dataobject.process.OrderProcessStepNDO; import com.cf.imes.module.manage.dal.mysql.pack.OrderBodyMapper; import com.cf.imes.module.manage.dal.mysql.plate.OrderPlateMapper; -import com.cf.imes.module.manage.dal.mysql.plate.PlateMapper; -import com.cf.imes.module.manage.dal.mysql.process.*; +import com.cf.imes.module.manage.dal.mysql.process.OrdersMapper; +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.query.OrderItemMapper; import com.cf.imes.module.system.api.process.ProcessApi; import com.cf.imes.module.system.enums.ErrorCodeConstants; @@ -35,7 +32,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.*; +import java.util.List; import java.util.stream.Collectors; import static com.cf.imes.framework.common.util.string.SearchUtil.insertSeparator; @@ -73,7 +70,7 @@ public class ProductionProcessServiceImpl implements ProductionProcessService { private OrderPlateMapper orderPlateMapper; @Resource - private ProductionProcessMapper productionProcessMapper; + private OrdersMapper ordersMapper; @Resource @@ -161,10 +158,10 @@ public class ProductionProcessServiceImpl implements ProductionProcessService { } // 当前工序已全部加工,修改生产单的状态为生产完成 if(validateOrderStatus(processStepStatuses.getOrderId())){ - OrderDO orderDO = productionProcessMapper.selectById(processStepStatuses.getOrderId()); + OrderDO orderDO = ordersMapper.selectById(processStepStatuses.getOrderId()); orderDO.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus()); orderDO.setFinishTime(LocalDateTime.now()); - productionProcessMapper.updateById(orderDO); + ordersMapper.updateById(orderDO); } return; @@ -192,10 +189,10 @@ public class ProductionProcessServiceImpl implements ProductionProcessService { } // 当前工序已全部加工,修改生产单的状态为生产完成 if(validateOrderStatus(processStepStatuses.getOrderId())){ - OrderDO orderDO = productionProcessMapper.selectById(processStepStatuses.getOrderId()); + OrderDO orderDO = ordersMapper.selectById(processStepStatuses.getOrderId()); orderDO.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus()); orderDO.setFinishTime(LocalDateTime.now()); - productionProcessMapper.updateById(orderDO); + ordersMapper.updateById(orderDO); } return; @@ -211,19 +208,19 @@ public class ProductionProcessServiceImpl implements ProductionProcessService { // 判断当前工序的状态是否为打包类型,如果是,修改生产的状态为生产完成 if(processStepStatuses.getType().equals(ProcessProcessingTypeEnum.PACK.getNumber())){ - OrderDO orderDO = productionProcessMapper.selectById(processStepStatuses.getOrderId()); + OrderDO orderDO = ordersMapper.selectById(processStepStatuses.getOrderId()); orderDO.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus()); orderDO.setFinishTime(LocalDateTime.now()); - productionProcessMapper.updateById(orderDO); + ordersMapper.updateById(orderDO); return; } // 当前工序已全部加工,修改生产单的状态为生产完成 if(validateOrderStatus(processStepStatuses.getOrderId())){ - OrderDO orderDO = productionProcessMapper.selectById(processStepStatuses.getOrderId()); + OrderDO orderDO = ordersMapper.selectById(processStepStatuses.getOrderId()); orderDO.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus()); orderDO.setFinishTime(LocalDateTime.now()); - productionProcessMapper.updateById(orderDO); + ordersMapper.updateById(orderDO); } }catch (Exception e){ diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusServiceImpl.java index 527c3ba4b..7321c0b21 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusServiceImpl.java @@ -7,12 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.cf.imes.framework.common.enums.OrderPackageTypeEnum; import com.cf.imes.framework.common.pojo.PageResult; -import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.module.manage.controller.admin.pack.vo.GroupNameList; -import com.cf.imes.module.manage.controller.admin.pack.vo.OrderPartsReqVO; import com.cf.imes.module.manage.controller.admin.pack.vo.PackDetailsReqVO; -import com.cf.imes.module.manage.controller.admin.pack.vo.PlateDetailsRespVO; -import com.cf.imes.module.manage.controller.admin.process.vo.ProcessRespVO; 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.pack.PrintOrderRespVO; @@ -21,11 +17,12 @@ import com.cf.imes.module.manage.controller.admin.query.vo.salary.PriceRatePageR import com.cf.imes.module.manage.controller.admin.query.vo.salary.PriceRateReqVO; 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.OrderPackageDO; import com.cf.imes.module.manage.dal.mysql.pack.OrderPackageMapper; +import com.cf.imes.module.manage.dal.mysql.process.OrdersMapper; 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.query.*; +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.util.page.PageHelperUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -43,8 +40,7 @@ import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.ge @Validated public class ProductionStatusServiceImpl implements ProductionStatusService { - @Resource - private ProductionStatusMapper productionStatusMapper; + @Resource private ProcessStepMapper processStepMapper; @@ -56,6 +52,8 @@ public class ProductionStatusServiceImpl implements ProductionStatusService { @Resource private OrderPackageMapper orderPackageMapper; + @Resource + private OrdersMapper ordersMapper; @Resource private OrderItemMapper orderItemMapper; @@ -69,7 +67,7 @@ public class ProductionStatusServiceImpl implements ProductionStatusService { @Override public PageResult getProductionPage(OrderPlatePageReqVO pageReqVO) { - return productionStatusMapper.selectProductionPage(pageReqVO); + return ordersMapper.selectProductionPage(pageReqVO); } @@ -156,7 +154,7 @@ public class ProductionStatusServiceImpl implements ProductionStatusService { @Override public PageResult queryPackage(OrderPlatePageReqVO pageReqVO) { - return productionStatusMapper.selectProductionPage(pageReqVO); + return ordersMapper.selectProductionPage(pageReqVO); } @@ -235,7 +233,9 @@ public class ProductionStatusServiceImpl implements ProductionStatusService { @Override public PrintOrderRespVO printOrder(Long orderNo) { - return productionStatusMapper.selectPrintOrder(orderNo,getUserOrganId()); +// return productionStatusMapper.selectPrintOrder(orderNo,getUserOrganId()); + + return null; } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml index 1cfb322df..19595dcfa 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml @@ -15,42 +15,67 @@ resultMap="PackMap"> - select - op.order_id as id, - count(distinct op.id) as packCount - from order_package op - join order_item oi on op.id = oi.package_id and op.organ_id = oi.organ_id + select + order_id as id, + count(id) as packCount + + from order_package + where - oi.package_id != 0 - and op.organ_id = #{organId} - and op.order_id in + organ_id = #{organId} + + and status !=0 + + and order_id in #{id} - group by op.order_id; + + group by order_id + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/ProductionStatusMapper.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/process/OrdersMapper.xml similarity index 61% rename from cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/ProductionStatusMapper.xml rename to cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/process/OrdersMapper.xml index b1744f594..fafb23ab3 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/ProductionStatusMapper.xml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/process/OrdersMapper.xml @@ -1,40 +1,64 @@ - + - - - - - - - - - - - select - o.id as orderNo , - o.custom_order_no as customOrderNo, - o.dealer as dealer, - o.address as address, - o.customer as customer, - o.phone_number as customerPhone, - count(opn.order_id) as packageQuantity - from `orders` o - join order_package opn on o.id = opn.order_id and o.organ_id = opn.organ_id + SELECT + id as orderNo, + custom_order_no as customOrderNo, + dealer as dealer, + dealer_phone_number as dealerPhoneNumber, + order_date as orderDate, + create_time as createTime, + delivery_date as deliveryDate, + customer as customer, + phone_number as phoneNumber, + address as address, + salesman as salesman, + splitter as splitter, + packaged as packaged + FROM orders + WHERE organ_id = #{organId} and deleted = false and status != 0 and create_time >= #{createTime} and id != #{orderId} + ORDER BY create_time + LIMIT 1 ; - where o.id = #{orderNo} and opn.status <> 0 and o.organ_id = #{organId} ; + + + + + @@ -82,11 +106,11 @@ join order_item oi on o.id = oi.order_id and o.organ_id = oi.organ_id WHERE - o.organ_id = #{organId} and - o.id in - - #{id} - + o.organ_id = #{organId} and + o.id in + + #{id} + group by orderNo,customOrderNo,dealer,deliveryDate,customer,phoneNumber,address,salesman,splitter,packaged,dealerPhoneNumber,orderDate,o.create_time @@ -110,14 +134,14 @@ resultMap="PrintMap"> select o.custom_order_no as customOrderNo, - o.dealer as dealer, - opn.id as packNo , - o.id as orderNo, - o.address as address, - ((SELECT COUNT(t2.id) FROM order_package t2 WHERE t2.create_time <= opn.create_time and t2.order_id =#{orderNo})) as packNum + o.dealer as dealer, + opn.id as packNo , + o.id as orderNo, + o.address as address, + ((SELECT COUNT(t2.id) FROM order_package t2 WHERE t2.create_time <= opn.create_time and t2.order_id =#{orderNo})) as packNum from `orders` o - join order_package opn on o.id = opn.order_id and o.organ_id = opn.organ_id + join order_package opn on o.id = opn.order_id and o.organ_id = opn.organ_id where opn.order_id =#{orderNo} and opn.id = #{packageNo} and opn.status <> 0 and opn.organ_id = #{organId} order by opn.create_time ; @@ -125,10 +149,25 @@ - - select * from orders + select + id as orderNo, + custom_order_no as customOrderNo, + dealer as dealer, + dealer_phone_number as dealerPhoneNumber, + order_date as orderDate, + create_time as createTime, + delivery_date as deliveryDate, + customer as customer, + phone_number as phoneNumber, + address as address, + salesman as salesman, + splitter as splitter, + packaged as packaged + + from orders organ_id =#{organId} @@ -165,7 +204,9 @@ - + + + + + \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/process/ProductionProcessMapper.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/process/ProductionProcessMapper.xml deleted file mode 100644 index 7f4762d3b..000000000 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/process/ProductionProcessMapper.xml +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.xml index 92089cd21..249e46284 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.xml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.xml @@ -468,4 +468,27 @@ + + + + \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.xml index cf44f34c3..5971391e1 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.xml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.xml @@ -76,7 +76,7 @@ from order_parts op join order_item oi on op.id = oi.parts_id and op.organ_id = oi.organ_id - where op.organ_id = #{organId} and op.order_id = #{orderId} and oi.package_id = 0 + where op.organ_id = #{organId} and op.order_id = #{orderId} diff --git a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java index 0166b5d7a..78454fba9 100644 --- a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java +++ b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java @@ -53,6 +53,7 @@ public interface ErrorCodeConstants { ErrorCode THE_PASSWORD_MUST_CONTAIN_AT_LEAST_ONE_NUMBER = new ErrorCode(1_002_003_012, "密码必须包含至少一个数字"); ErrorCode PASSWORDS_CAN_ONLY_CONTAIN_LETTERS_AND_NUMBERS = new ErrorCode(1_002_003_013, "密码只能包含字母和数字"); + ErrorCode INSUFFICIENT_PERMISSIONS = new ErrorCode(1_002_003_014, "当前用户权限不足,无法修改开料状态"); // ========== 部门模块 1-002-004-000 ========== ErrorCode DEPT_NAME_DUPLICATE = new ErrorCode(1_002_004_000, "已经存在该名字的部门"); @@ -213,7 +214,8 @@ public interface ErrorCodeConstants { ErrorCode MACHINE_ERROR = new ErrorCode(1_002_029_007, "当前机台错误,请重新选择机台"); ErrorCode THE_CURRENT_BRAND_OF_THE_MACHINE_EXISTS = new ErrorCode(1_002_029_008, "当前机台配置的模板中,该品牌已存在,请重新输入品牌名称"); ErrorCode THE_MODEL_OF_THE_MACHINE_DOES_NOT_EXIST = new ErrorCode(1_002_029_009, "该型号的机台不存在,请进行配置"); - ErrorCode THE_CURRENT_BRAND = new ErrorCode(1_002_029_666, "品牌ID错误,或品牌不存在"); + ErrorCode THE_CURRENT_BRAND = new ErrorCode(1_002_029_010, "品牌ID错误,或品牌不存在"); + ErrorCode MACHINE_NUM_ERROR = new ErrorCode(1_002_029_011, "当前模板创建的机台数量已达到最大轴,无法继续创建"); // ========== 标签模板 1-002-300-000 ========== ErrorCode LABEL_TEMPLATE_NOT_EXISTS = new ErrorCode(1_002_300_000, "标签模板不存在");