diff --git a/cf-gateway/pom.xml b/cf-gateway/pom.xml
index 2df26d27c..79e7cb1be 100644
--- a/cf-gateway/pom.xml
+++ b/cf-gateway/pom.xml
@@ -101,6 +101,27 @@
org.springframework.boot
spring-boot-maven-plugin
${spring.boot.version}
+
+ ZIP
+
+
+ com.cf.imes
+ cf-common
+
+
+ com.cf.imes
+ cf-module-system-api
+
+
+ com.cf.imes
+ cf-spring-boot-starter-banner
+
+
+ com.cf.imes
+ cf-spring-boot-starter-monitor
+
+
+
@@ -108,15 +129,6 @@
-
-
-
-
-
-
-
-
-
org.apache.maven.plugins
@@ -132,7 +144,7 @@
target/lib
-
+ com.cf.imes
diff --git a/cf-module-infra/cf-module-infra-biz/pom.xml b/cf-module-infra/cf-module-infra-biz/pom.xml
index c8ac36b85..8227ad15f 100644
--- a/cf-module-infra/cf-module-infra-biz/pom.xml
+++ b/cf-module-infra/cf-module-infra-biz/pom.xml
@@ -161,6 +161,79 @@
org.springframework.boot
spring-boot-maven-plugin
${spring.boot.version}
+
+ ZIP
+
+
+ com.cf.imes
+ cf-common
+
+
+ com.cf.imes
+ cf-module-infra-api
+
+
+ com.cf.imes
+ cf-module-system-api
+
+
+ com.cf.imes
+ cf-spring-boot-starter-banner
+
+
+ com.cf.imes
+ cf-spring-boot-starter-biz-error-code
+
+
+ com.cf.imes
+ cf-spring-boot-starter-biz-operatelog
+
+
+ com.cf.imes
+ cf-spring-boot-starter-biz-organ
+
+
+ com.cf.imes
+ cf-spring-boot-starter-excel
+
+
+ com.cf.imes
+ cf-spring-boot-starter-file
+
+
+ com.cf.imes
+ cf-spring-boot-starter-monitor
+
+
+ com.cf.imes
+ cf-spring-boot-starter-mybatis
+
+
+ com.cf.imes
+ cf-spring-boot-starter-redis
+
+
+ com.cf.imes
+ cf-spring-boot-starter-rpc
+
+
+ com.cf.imes
+ cf-spring-boot-starter-security
+
+
+ com.cf.imes
+ cf-spring-boot-starter-web
+
+
+ com.cf.imes
+ cf-spring-boot-starter-websocket
+
+
+ com.cf.imes
+ cf-spring-boot-starter-mq
+
+
+
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
deleted file mode 100644
index 069e31e9f..000000000
--- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/goods/dto/GoodsDTO.java
+++ /dev/null
@@ -1,81 +0,0 @@
-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/OrderPlanApi.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApi.java
index 743ec360b..e7cda9bbf 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApi.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApi.java
@@ -10,6 +10,8 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
+import java.util.List;
+
@FeignClient(name = ApiConstants.NAME) // TODO 晨丰:fallbackFactory =
@Tag(name = "RPC 服务 - 多组织")
public interface OrderPlanApi {
@@ -22,4 +24,102 @@ public interface OrderPlanApi {
@Parameter(name = "machineId", description = "机台ID", required = true, example = "1024")
CommonResult getOrderPlan(@RequestParam("machineId") Long id);
+
+
+
+ /*
+ * 机台数据源数据查询
+ *
+ * */
+
+ @GetMapping(PREFIX +"/apiDataGetPlan")
+ @Operation(summary = "获取当前排单对应的生产单信息")
+ @Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
+ String apiDataGetPlan(@RequestParam("planId") Long planId,@RequestParam("filed") String filed);
+
+
+
+
+ @GetMapping(PREFIX +"/apiGetGoods")
+ @Operation(summary = "查询当前排单对应的大板信息")
+ @Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
+ String getGoods(@RequestParam("planId") Long planId,@RequestParam("filed") String filed);
+
+
+
+
+ @GetMapping(PREFIX +"/apiGetOrders")
+ @Operation(summary = "查询当前排单对应的业务员和拆单员信息")
+// @Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
+ List apiGetOrders(@RequestParam("planId") Long planId ,@RequestParam("isSale") Boolean isSale);
+
+
+
+
+ @GetMapping(PREFIX +"/apiGetPlan")
+ @Operation(summary = "查询当前排单的信息")
+ @Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
+ String getPlan(@RequestParam("planId") Long planId,@RequestParam("filed") String filed);
+
+
+
+
+ @GetMapping(PREFIX +"/apiGetESPlan")
+ @Operation(summary = "查询ES中的排单优化生产信息")
+ @Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
+ String apiGetEsPlan(@RequestParam("planId") Long planId,@RequestParam("fields") List fields);
+
+
+
+
+ @GetMapping(PREFIX +"/apiGetPlanRemainPlate")
+ @Operation(summary = "查询排单中的余料板信息")
+ @Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
+ String apiGetPlanRemainPlate(@RequestParam("planId") Long planId,@RequestParam("field") String field);
+
+
+
+
+ @GetMapping(PREFIX +"/apiGetPlanPlate")
+ @Operation(summary = "查询排单中的板材信息")
+ @Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
+ String apiGetPlanPlate(@RequestParam("planId") Long planId,@RequestParam("field") String field);
+
+
+
+
+ @GetMapping(PREFIX +"/apiGetESPlate")
+ @Operation(summary = "查询ES中的板材信息")
+ @Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
+ String apiGetEsPlate(@RequestParam("planId") Long planId,@RequestParam("fields") List fields);
+
+
+
+
+ @GetMapping(PREFIX +"/apiGetPlanBodyOrRoom")
+ @Operation(summary = "查询排单中的板材房间信息")
+ @Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
+ String apiGetPlanBodyOrRoom(@RequestParam("planId") Long planId,@RequestParam("field") String field);
+
+
+
+
+ @GetMapping(PREFIX +"/apiGetPlanGroup")
+ @Operation(summary = "查询排单中的板材加工组信息")
+ @Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
+ String apiGetPlanGroup(@RequestParam("planId") Long planId,@RequestParam("field") String field);
+
+
+
+ @GetMapping(PREFIX +"/apiGetPlanParts")
+ @Operation(summary = "查询排单中的配件信息")
+ @Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
+ String apiGetPlanParts(@RequestParam("planId") Long planId,@RequestParam("field") String field);
+
+
+ @GetMapping(PREFIX +"/apiGetESParts")
+ @Operation(summary = "查询ES中的配件备注信息")
+ @Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
+ String apiGetEsParts(@RequestParam("planId") Long planId,@RequestParam("fields") List fields);
+
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/pom.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/pom.xml
index 7f93d1641..d16009736 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/pom.xml
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/pom.xml
@@ -173,6 +173,91 @@
org.springframework.boot
spring-boot-maven-plugin
${spring.boot.version}
+
+ ZIP
+
+
+ com.cf.imes
+ cf-common
+
+
+ com.cf.imes
+ cf-module-infra-api
+
+
+ com.cf.imes
+ cf-module-prod-executor-api
+
+
+ com.cf.imes
+ cf-module-report-api
+
+
+ com.cf.imes
+ cf-module-system-api
+
+
+ com.cf.imes
+ cf-spring-boot-starter-banner
+
+
+ com.cf.imes
+ cf-spring-boot-starter-biz-data-permission
+
+
+ com.cf.imes
+ cf-spring-boot-starter-biz-dict
+
+
+ com.cf.imes
+ cf-spring-boot-starter-biz-error-code
+
+
+ com.cf.imes
+ cf-spring-boot-starter-biz-operatelog
+
+
+ com.cf.imes
+ cf-spring-boot-starter-biz-organ
+
+
+ com.cf.imes
+ cf-spring-boot-starter-elasticsearch
+
+
+ com.cf.imes
+ cf-spring-boot-starter-excel
+
+
+ com.cf.imes
+ cf-spring-boot-starter-file
+
+
+ com.cf.imes
+ cf-spring-boot-starter-monitor
+
+
+ com.cf.imes
+ cf-spring-boot-starter-mybatis
+
+
+ com.cf.imes
+ cf-spring-boot-starter-redis
+
+
+ com.cf.imes
+ cf-spring-boot-starter-rpc
+
+
+ com.cf.imes
+ cf-spring-boot-starter-security
+
+
+ com.cf.imes
+ cf-spring-boot-starter-web
+
+
+
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApiImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApiImpl.java
index 92dc3c9b8..d6631a96d 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApiImpl.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/plan/OrderPlanApiImpl.java
@@ -1,20 +1,57 @@
package com.cf.imes.module.executor.api.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.SearchRequest;
+import co.elastic.clients.elasticsearch.core.SearchResponse;
+import co.elastic.clients.elasticsearch.core.search.Hit;
+import com.alibaba.fastjson.JSON;
+import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.pojo.CommonResult;
+import com.cf.imes.framework.common.util.json.JsonUtils;
+import com.cf.imes.module.executor.api.plan.vo.OrderGroupRespVO;
+import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark;
+import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO;
+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.orderParts.OrderPartsDO;
+import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
+import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO;
+import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper;
+import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
+import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper;
+import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
+import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
+import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
+import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
+import com.cf.imes.module.executor.dal.mysql.remainplaten.RemainPlateMapper;
+import com.fasterxml.jackson.databind.JsonNode;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
-
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
+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.util.json.JsonUtils.toJsonString;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
@RestController // 提供 RESTful API 接口,给 Feign 调用
@Validated
+@Slf4j
public class OrderPlanApiImpl implements OrderPlanApi{
@@ -22,6 +59,52 @@ public class OrderPlanApiImpl implements OrderPlanApi{
private PlanMapper planMapper;
+ @Resource
+ private GoodsMapper goodsMapper;
+
+
+ @Resource
+ private OrderMapper orderMapper;
+
+
+ @Resource
+ private RemainPlateMapper remainPlateMapper;
+
+
+ @Resource
+ private PlateMapper plateMapper;
+
+
+ @Resource
+ private OrderItemMapper orderItemMapper;
+
+
+ @Resource
+ private OrderBodyMapper orderBodyMapper;
+
+ @Resource
+ private OrderGroupMapper orderGroupMapper;
+
+ @Resource
+ private OrderPartsMapper orderPartsMapper;
+
+
+ @Resource
+ private ElasticsearchClient elasticsearchClient;
+
+
+ public static final String SEPARATE = "select";
+
+
+ public static final String ORDER_REMAIN_PLATE_MODEL = "imes_order_optimize_plate_model";
+
+
+ public static final String ORDER_PLATE_MODEL = "imes_order_plate_model";
+
+
+ public static final String ORDER_PARTS_REMARK_MODEL = "imes_order_parts_remark_model";
+
+
@Override
public CommonResult getOrderPlan(Long machineId) {
@@ -36,4 +119,487 @@ public class OrderPlanApiImpl implements OrderPlanApi{
}
+
+
+ /*
+ * 机台数据源数据查询
+ *
+ * */
+
+ @Override
+ public String apiDataGetPlan(Long planId,String filed) {
+
+ PlanDO planDOS = planMapper.selectById(planId);
+
+ List orderIds = JSON.parseArray(planDOS.getOrderNos()).toJavaList(Long.class);
+
+
+ return toJsonString(orderMapper.selectOrderDataSource(conversion(filed),orderIds,getUserOrganId()));
+ }
+
+
+
+ @Override
+ public String getGoods(Long planId,String filed) {
+
+
+ List optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10);
+
+ List goodsIds = optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getGoodsId).toList();
+
+
+ JsonNode jsonNode = JsonUtils.parseTree(JsonUtils.toJsonString(optimizeBoardModelDOS));
+
+
+ filed = filed.replace("place_block_number","");
+
+
+ String filed2 = "place_block_number".equals(filed) ? ",{placeBlockNumber:"+jsonNode.get("placeBlockNumber").asLong()+"}]" : "";
+
+
+// String sql = " select from order_goods where organ_id = #{organId} and deleted = false";
+//
+// sql = sql.replace("#{organId}", getUserOrganId() + "");
+
+
+ List goodsDO = goodsMapper.selectPlanGoodsDataSource(conversion(filed),planId,getUserOrganId());
+
+
+
+ return "".equals(filed2) ? toJsonString(goodsDO) : toJsonString(goodsDO).replace("]", "") + filed2;
+
+ }
+
+
+
+
+ @Override
+ public List apiGetOrders(Long planId,Boolean isSale) {
+
+ PlanDO planDOS = planMapper.selectById(planId);
+
+ List orderIds = JSON.parseArray(planDOS.getOrderNos()).toJavaList(Long.class);
+
+
+ return isSale ? orderMapper.selectBatchIds(orderIds).stream().map(OrderDO::getSalesman).distinct().toList()
+ : orderMapper.selectBatchIds(orderIds).stream().map(OrderDO::getCreator).distinct().toList();
+
+
+ }
+
+
+
+ @Override
+ public String getPlan(Long planId,String filed) {
+
+
+// String sql = " select from order_plan where id =#{planId} and organ_id = #{organId} and deleted = false";
+//
+// sql = sql.replace("#{organId}", getUserOrganId() + "").replace("#{planId}", planId + "");
+//
+// String toInsert = filed.replaceAll("\\[|\\]", "");
+
+// List planDOS = planMapper.seleTestSQL(conversion(sql, filed));
+
+
+ List planDOS = planMapper.selectPlanDataSource(conversion(filed),planId,getUserOrganId());
+
+ return toJsonString(planDOS);
+
+
+
+ }
+
+ @Override
+ public String apiGetEsPlan(Long planId, List fields) {
+
+
+ List esData = new ArrayList<>();
+
+
+ List optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 99);
+
+ for (OptimizeBoardModelDO optimizeBoardModelDO : optimizeBoardModelDOS) {
+ List filedData = new ArrayList<>() ;
+
+ JsonNode jsonNode = JsonUtils.parseTree(JsonUtils.toJsonString(optimizeBoardModelDO));
+
+ for (String field : fields) {
+ filedData.add(field+":"+ (jsonNode.get(field) == null ?"" : jsonNode.get(field).asText()));
+ }
+
+ esData.add(filedData.toString());
+
+ }
+
+
+ return esData.toString();
+
+
+ }
+
+ @Override
+ public String apiGetPlanRemainPlate(Long planId, String field) {
+
+
+// String sql = " select from order_remain_plate where organ_id = #{organId} and plan_id = #{planId} and deleted = false";
+//
+// sql = sql.replace("#{organId}", getUserOrganId() + "").replace("#{planId}", planId + "");
+
+
+ List remainPlateDOS = remainPlateMapper.selectPlanRemainDataSource(conversion(field),planId,getUserOrganId());
+
+
+ return toJsonString(remainPlateDOS);
+
+
+ }
+
+
+ @Override
+ public String apiGetPlanPlate(Long planId, String field) {
+
+
+// List optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 99);
+//
+//
+// List goodsIds = optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getGoodsId).toList();
+//
+//
+// List orderIds = BeanUtils.toBean(optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getOrderId).toList(), Long.class);
+//
+//
+// List goodsIdList = goodsMapper.selectListByGoodsIdList(goodsIds,orderIds, getUserOrganId())
+// .stream().map(GoodsDO::getId).toList();
+
+ List goodsDOS = goodsMapper.selectPlanGoods(planId, getUserOrganId());
+
+ List goodsIds = goodsDOS.stream().map(GoodsDO::getId).distinct().toList();
+
+ List orderIds = goodsDOS.stream().map(GoodsDO::getOrderId).distinct().toList();
+
+
+ field = field
+ .replace("sculpt_num", "sum(front_model_count+back_model_count) as sculptNum" + "")
+ .replace("hole_num", "sum(unregular_point_count+front_hole_count+back_hole_count+side_hole_count) as holeNum" + "");
+
+
+ String field2 = "sculpt_num".equals(field) || "hole_num".equals(field) ? "group by " + conversion(field)
+ .replace("sum(front_model_count+back_model_count) as sculptNum", "")
+ .replace("sum(unregular_point_count+front_hole_count+back_hole_count+side_hole_count) as holeNum", "") : "";
+
+
+ field2 = field2.replaceFirst(",\\s*$", "");
+
+
+ List plateDOS = plateMapper.selectPlanPlateListDataSource(conversion(field),field2,goodsIds,orderIds,getUserOrganId());
+
+
+ return toJsonString(plateDOS);
+
+ }
+
+
+
+ @Override
+ public String apiGetEsPlate(Long planId, List fields) {
+
+ List esData = new ArrayList<>();
+
+ // todo 目前只考虑非混单的情况,混单的情况待解决
+ List plateIds = getPlateIds(planId);
+
+
+ List orderModelDOS = buildBoardByPlateIds(plateIds, ORDER_PLATE_MODEL, plateIds.size());
+
+
+ for (OrderModelDO orderModelDO : orderModelDOS) {
+ List filedData = new ArrayList<>() ;
+
+ JsonNode jsonNode = JsonUtils.parseTree(JsonUtils.toJsonString(orderModelDO));
+
+ for (String field : fields) {
+
+ BigDecimal splitLength = BigDecimal.valueOf(jsonNode.get("splitLength").asDouble());
+ BigDecimal splitWidth = BigDecimal.valueOf(jsonNode.get("splitWidth").asDouble());
+
+ filedData.add( "splitArea".equals(field)? "splitArea:"+ splitLength.multiply(splitWidth) : field+":"+jsonNode.get(field).asText() );
+
+// filedData.add(field+":"+jsonNode.get(field).asText());
+ }
+
+
+ esData.add(filedData.toString());
+
+ }
+
+
+ return esData.toString();
+
+ }
+
+
+
+
+ @Override
+ public String apiGetPlanBodyOrRoom(Long planId, String field) {
+
+// List plateIds = getPlateIds(planId);
+//
+//
+// List orderItemDOS = orderItemMapper.selectPlateIdList(plateIds, getUserOrganId());
+//
+// List bodyIds = orderItemDOS.stream().map(OrderItemDO::getBodyId).distinct().toList();
+
+
+ List bodyIds = goodsMapper.selectPlanBodyIds(planId, getUserOrganId());
+
+ List orderBodyDOS = orderBodyMapper.selectPlanBodyRoomDataSource(conversion(field), bodyIds, getUserOrganId());
+
+
+ return toJsonString(orderBodyDOS);
+
+ }
+
+
+
+
+ @Override
+ public String apiGetPlanGroup(Long planId, String field) {
+
+
+// List plateIds = getPlateIds(planId);
+//
+//// List plateIds = Arrays.asList(1825367895442456579L, 1825367895308238851L, 1824334800400416772L);
+//
+// List orderItemDOS = orderItemMapper.selectPlateIdList(plateIds, getUserOrganId());
+//
+// List groupIds = orderItemDOS.stream().map(OrderItemDO::getGroupId).distinct().toList();
+
+
+ List groupIds = goodsMapper.selectPlanGroupListDataSource(planId, getUserOrganId());
+
+ if(groupIds.isEmpty()){
+ return null;
+ }
+
+ field = field.replace("group_num", "count(id) as groupNum" + "");
+
+
+ String field2 = ("group by " + conversion(field).replace("count(id) as groupNum", "")).replaceFirst(",\\s*$", "");
+
+
+ List orderGroupDOS = orderGroupMapper.selectPlanGroupDataSource(conversion(field),field2, groupIds, getUserOrganId());
+
+
+ return toJsonString(orderGroupDOS);
+
+ }
+
+
+
+
+
+ @Override
+ public String apiGetPlanParts(Long planId, String field) {
+
+
+// List optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10);
+//
+//
+// String orderNos = optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getOrderId).toList().toString();
+//
+//
+// List orderIds = JSON.parseArray(orderNos).toJavaList(Long.class);
+
+
+ List orderIds = goodsMapper.selectPlanGoods(planId, getUserOrganId()).stream().map(GoodsDO::getOrderId).distinct().toList();
+
+
+ List partIds = orderPartsMapper.selectPartIds(orderIds, getUserOrganId()).stream().map(OrderPartsDO::getId).toList();
+
+
+ String filed2 = "parts_num" .equals(field) ?
+ ",{partsNum:"+orderItemMapper.selectPartsList(partIds,orderIds, getUserOrganId()).stream().mapToDouble(OrderItemDO::getNum).sum()+"}]" : "";
+
+
+ List orderPartsDOS = orderPartsMapper.selectPlanPartsDataSource(conversion(field), partIds, getUserOrganId());
+
+
+ return "".equals(filed2) ? toJsonString(orderPartsDOS) : toJsonString(orderPartsDOS).replace("]", "") + filed2;
+
+
+
+ }
+
+
+
+
+
+ @Override
+ public String apiGetEsParts(Long planId, List fields) {
+
+
+// List optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10);
+//
+//
+// String orderNos = optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getOrderId).toList().toString();
+//
+//
+// List orderIds = JSON.parseArray(orderNos).toJavaList(Long.class);
+
+
+ List orderIds = goodsMapper.selectPlanGoods(planId, getUserOrganId()).stream().map(GoodsDO::getOrderId).distinct().toList();
+
+ List esData = new ArrayList<>();
+
+ List orderPartsRemarks = buildOrderPartsByOrderId(orderIds, ORDER_PARTS_REMARK_MODEL, 999);
+
+
+ for (OrderPartsRemark orderPartsRemark : orderPartsRemarks) {
+
+ List filedData = new ArrayList<>();
+
+ JsonNode jsonNode = JsonUtils.parseTree(JsonUtils.toJsonString(orderPartsRemark));
+
+ for (String field : fields) {
+ filedData.add(field+":" + (jsonNode.get(field) == null ? "" : jsonNode.get(field).asText()));
+ }
+
+ esData.add(filedData.toString());
+
+ }
+
+
+ return esData.toString();
+
+
+ }
+
+
+ // 字符串处理
+ private String conversion(String filed) {
+
+ // 去除字段中的 【 】
+ return filed.replaceAll("\\[|\\]", "");
+
+ // 使用正则表达式在单词后插入字符串
+// return sql.replaceAll(SEPARATE + "(\\b)", SEPARATE + " " + toInsert);
+
+ }
+
+
+
+
+ // 根据排单ID获取对应的板材ID
+ private List getPlateIds(Long planId) {
+
+
+// List optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10);
+//
+// List goodsIds = optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getGoodsId).toList();
+//
+//
+// List orderIds = BeanUtils.toBean(optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getOrderId).toList(), Long.class);
+//
+// List ids = goodsMapper.selectListByGoodsIdList(goodsIds, orderIds, getUserOrganId()).stream().map(GoodsDO::getId).toList();
+//
+// plateMapper.selectGoodsPlateList(ids, getUserOrganId()).stream().map(PlateDO::getId).toList();
+
+ return goodsMapper.selectPlanPlateList(planId, getUserOrganId());
+
+ }
+
+
+ private List buildOrderPartsByOrderId(List orderIds, String index, Integer size) {
+
+ List fieldValues = orderIds.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("orderId").terms(e -> e.value(fieldValues))));
+ try {
+ SearchResponse search = elasticsearchClient.search(builder.build(), OrderPartsRemark.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);
+ }
+ }
+
+
+
+
+ private List buildBoardByPlateIds(Collection plateIds, String index, Integer size) {
+ List fieldValues = plateIds.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("plateId").terms(e -> e.value(fieldValues))));
+ try {
+ SearchResponse search = elasticsearchClient.search(builder.build(), OrderModelDO.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 static String toCamelCase(String fieldName) {
+ if (fieldName == null || fieldName.isEmpty()) {
+ return fieldName;
+ }
+
+ StringBuilder camelCase = new StringBuilder();
+ boolean nextIsUpperCase = false;
+
+ for (char c : fieldName.toCharArray()) {
+ if (c == '_' || c == '-') {
+ nextIsUpperCase = true;
+ } else {
+ if (nextIsUpperCase) {
+ camelCase.append(Character.toUpperCase(c));
+ nextIsUpperCase = false;
+ } else {
+ camelCase.append(c);
+ }
+ }
+ }
+
+ return camelCase.toString();
+ }
+
+
+
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java
index 9df6d4aac..debcee335 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java
@@ -2,14 +2,20 @@ package com.cf.imes.module.executor.controller.admin.order;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
+import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.pojo.PageParam;
+import com.cf.imes.framework.common.pojo.PageResult;
+import com.cf.imes.framework.common.util.object.BeanUtils;
+import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
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.controller.admin.orderParts.vo.OrderPartsRespVO;
+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 com.cf.imes.module.executor.service.order.OrderService;
import com.cf.imes.module.executor.util.ExcelWriterUtil;
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataAchieve;
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeRealize;
@@ -18,33 +24,29 @@ import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPl
import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO.OrderXmlVO;
import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XMLUtil;
import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XmlBuilder;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
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.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
import java.io.File;
-import java.util.*;
-
-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 java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.common.pojo.CommonResult.success;
-
-import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
-
-import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*;
+import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
+import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.IMPORT;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
@@ -461,7 +463,7 @@ public class OrderController {
@Operation(summary = "删除柜体")
@PreAuthorize("@ss.hasPermission('production:manager-list:deleteCabinet')")
public CommonResult deleteBody(@Valid @RequestBody OrderModuleParameterRespVO orderModuleParameterRespVO) {
- orderService.updateBodyDeletedByOrderId(orderModuleParameterRespVO.getOrderId(), orderModuleParameterRespVO.getRoomIds(),
+ orderService.updateDeleteBody(orderModuleParameterRespVO.getOrderId(), orderModuleParameterRespVO.getRoomIds(),
orderModuleParameterRespVO.getBodyId(), OrderDeletedEnum.DELETED.getStatus());
return success(true);
}
@@ -470,7 +472,7 @@ public class OrderController {
@Operation(summary = "还原柜体")
@PreAuthorize("@ss.hasPermission('production:manager-list:restoreCabinet')")
public CommonResult restoreBody(@Valid @RequestBody OrderModuleParameterRespVO orderModuleParameterRespVO) {
- orderService.updateBodyDeletedByOrderId(orderModuleParameterRespVO.getOrderId(), orderModuleParameterRespVO.getRoomIds(),
+ orderService.updateRestoreBody(orderModuleParameterRespVO.getOrderId(), orderModuleParameterRespVO.getRoomIds(),
orderModuleParameterRespVO.getBodyId(), OrderDeletedEnum.NOT_DELETED.getStatus());
return success(true);
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderGoodsIds.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderGoodsIds.java
new file mode 100644
index 000000000..a93db39c8
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderGoodsIds.java
@@ -0,0 +1,28 @@
+package com.cf.imes.module.executor.controller.admin.order.vo.order;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+/**
+ * @author Administrator
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@ToString(callSuper = true)
+public class OrderGoodsIds {
+
+ @Schema(description = "大板的实际ID")
+ private String goodsId;
+
+
+ @Schema(description = "大板的旧分类ID")
+ private Long oldId;
+
+
+ @Schema(description = "大板的新分类ID")
+ private Long 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 eb856c56a..4571a5440 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
@@ -110,6 +110,8 @@ public class PlanController {
return success(planService.getOrderPage(pageReqVO));
}
+
+ // 目前因为这个接口没有使用,所以这个接口里代码没有进行更改
@GetMapping("getNotPlanOrderPlateList")
@Operation(summary = "获取未排单的板材分页列表")
@PreAuthorize("@ss.hasPermission('placeorder:query')")
@@ -135,9 +137,9 @@ public class PlanController {
}
- @GetMapping("getNotPlanGoodsListPageByOrderId")
- @Operation(summary = "根据生产单id获取未排单的商品分页列表")
- @PreAuthorize("@ss.hasPermission('executor:plan:query')")
+// @GetMapping("getNotPlanGoodsListPageByOrderId")
+// @Operation(summary = "根据生产单id获取未排单的商品分页列表")
+// @PreAuthorize("@ss.hasPermission('executor:plan:query')")
public CommonResult> getNotPlanGoodsListPageByOrderId(@Valid NotPlanGoodsListPageVO pageVO) {
return success(planService.getNotPlanGoodsListPageByOrderId(pageVO));
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/pack/OrderPackageDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/pack/OrderPackageDO.java
new file mode 100644
index 000000000..87310592c
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/pack/OrderPackageDO.java
@@ -0,0 +1,51 @@
+package com.cf.imes.module.executor.dal.dataobject.pack;
+
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
+import lombok.*;
+
+@TableName("order_package")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class OrderPackageDO extends BaseDO {
+
+
+ // 包裹ID
+ @TableId
+ private Long id;
+
+ // 组织 ID
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Long organId;
+
+ // 生产单号
+ private Long orderId;
+
+ // 包裹编号
+ private String packageNo;
+
+ // 包裹类型,-1未定义,0板材,1配件,2其他配件
+ private Integer type;
+
+ // 包裹名
+ private String name;
+
+ // 包裹状态,0未封包,1已封包,2已入库,3已出库
+ private Integer status;
+
+
+ // 备注
+ private String remark;
+
+
+
+}
+
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/pack/OrderPrepackagedDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/pack/OrderPrepackagedDO.java
new file mode 100644
index 000000000..bc4b35a21
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/pack/OrderPrepackagedDO.java
@@ -0,0 +1,33 @@
+package com.cf.imes.module.executor.dal.dataobject.pack;
+
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+@TableName("order_prepackaged")
+@Data
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class OrderPrepackagedDO {
+
+
+ @TableId
+ // 生产单号-主键
+ private Long orderId;
+
+
+ // 预打包优化信息
+ private String result;
+
+
+ // 组织 ID
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Long organId;
+
+
+}
diff --git a/cf-module-prod-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 c3c94a531..1f0cc2d2e 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
@@ -86,6 +86,7 @@ public interface GoodsMapper extends BaseMapperX {
return selectList(new LambdaQueryWrapperX()
.eq(GoodsDO::getOrganId, organId)
.eq(GoodsDO::getDeleted, false)
+ .eq(GoodsDO::getPlanId ,0)
.eq(GoodsDO::getGoodsId, goodsId));
}
@@ -117,7 +118,7 @@ public interface GoodsMapper extends BaseMapperX {
}
- List seleTestSQL(@Param("filed") String filed,@Param("goodsIds") List goodsIds ,@Param("organId") Long organId);
+ List selectPlanGoodsDataSource(@Param("filed") String filed,@Param("planId") Long planId ,@Param("organId") Long organId);
default GoodsDO selectGoodsId(Long orderId, String goodsId, Long organId) {
@@ -199,4 +200,25 @@ public interface GoodsMapper extends BaseMapperX {
List selectPlanOrderList(@Param("orderId") Long orderId,@Param("roomIds") Set roomIds, @Param("bodyId") Long bodyId,@Param("organId") Long organId);
+ List selectPlanPlateList(@Param("planId") Long planId,@Param("organId") Long organId);
+
+ List selectPlanBodyIds(@Param("planId") Long planId,@Param("organId") Long organId);
+
+ List selectPlanGroupListDataSource(@Param("planId") Long planId,@Param("organId") Long organId);
+
+
+
+ default List selectGoodsListByStatus(Long orderId, List goodsIds, Long organId) {
+ return selectList(new LambdaQueryWrapperX()
+ .eq(GoodsDO::getOrganId, organId)
+ .eq(GoodsDO::getDeleted, true)
+ .eqIfPresent(GoodsDO::getOrderId,orderId)
+ .inIfPresent(GoodsDO::getId,goodsIds));
+
+ }
+
+
+ List selectNoPlanGoodsList(@Param("orderId") Long orderId,@Param("goodsIds") List goodsIds,@Param("organId") Long organId);
+
+
}
\ No newline at end of file
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java
index b4fab3faa..f6dccec08 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
@@ -227,7 +227,7 @@ public interface OrderMapper extends BaseMapperX {
- List selectTestSQL(@Param("filed") String filed,@Param("orderIds") List orderIds,@Param("organId") Long organId);
+ List selectOrderDataSource(@Param("filed") String filed,@Param("orderIds") List orderIds,@Param("organId") Long organId);
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/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 4223189fe..a2be28bad 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
@@ -127,7 +127,7 @@ public interface OrderBodyMapper extends BaseMapperX {
}
- List selectTestSQL(@Param("filed") String filed,@Param("bodyIds") List bodyIds,@Param("organId") Long organId);
+ List selectPlanBodyRoomDataSource(@Param("filed") String filed,@Param("bodyIds") List bodyIds,@Param("organId") Long organId);
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderGroup/OrderGroupMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderGroup/OrderGroupMapper.java
index 4c1a32a65..d2c3a6abb 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderGroup/OrderGroupMapper.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderGroup/OrderGroupMapper.java
@@ -108,6 +108,6 @@ public interface OrderGroupMapper extends BaseMapperX {
}
- List selectTestSQL(@Param("filed") String filed, @Param("field2") String field2 ,@Param("groupIds") List groupIds, @Param("organId") Long organId);
+ List selectPlanGroupDataSource(@Param("filed") String filed, @Param("field2") String field2 ,@Param("groupIds") List groupIds, @Param("organId") Long organId);
}
\ No newline at end of file
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java
index d28854a03..5228abcd9 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
@@ -5,7 +5,6 @@ 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.OrderPlatesDetailRespVO;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO;
-import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPackReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailReqVO;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailRespVO;
@@ -59,8 +58,6 @@ public interface OrderItemMapper extends BaseMapperX {
void deleteByPlateId(@Param("deletePlateIds") List deletePlateIds);
- List selectPackList(@Param("ids") List ids, @Param("organId") Long organId);
-
default int deleteByBodyId(Long bodyId, Long organId) {
return delete(new LambdaQueryWrapperX()
@@ -94,9 +91,10 @@ public interface OrderItemMapper extends BaseMapperX {
- default List selectPartsList(List partIds, Long organId) {
+ default List selectPartsList(List partIds,List orderIds, Long organId) {
return selectList(new LambdaQueryWrapperX()
.eq(OrderItemDO::getOrganId,organId)
+ .inIfPresent(OrderItemDO::getOrderId,orderIds)
.inIfPresent(OrderItemDO::getPartsId, partIds)
.select(OrderItemDO::getNum));
@@ -105,6 +103,14 @@ public interface OrderItemMapper extends BaseMapperX {
IPage selectTestNum(@Param("page") IPage page,@Param("organId") Long organId);
- List selectOrderPlateList(@Param("orderId") Long orderId,@Param("organId") Long organId);
+ default List selectPackId(List bodyIds, Long organId) {
+ return selectList(new LambdaQueryWrapperX()
+ .eq(OrderItemDO::getOrganId,organId)
+ .inIfPresent(OrderItemDO::getBodyId,bodyIds)
+ .select(OrderItemDO::getPackageId));
+ }
+
+
+ void deletePackList(@Param("orderId") Long orderId,@Param("packIds") List packIds,@Param("organId") Long organId);
}
\ No newline at end of file
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/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 935a55495..9eab930fe 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
@@ -6,7 +6,6 @@ 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.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.orderParts.OrderPartsDO;
@@ -87,7 +86,7 @@ public interface OrderPartsMapper extends BaseMapperX {
}
- List selectTestSql(@Param("filed") String filed,@Param("partIds") List partIds,@Param("organId") Long organId);
+ List selectPlanPartsDataSource(@Param("filed") String filed,@Param("partIds") List partIds,@Param("organId") Long organId);
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/pack/OrderPackageMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/pack/OrderPackageMapper.java
new file mode 100644
index 000000000..13c465783
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/pack/OrderPackageMapper.java
@@ -0,0 +1,27 @@
+package com.cf.imes.module.executor.dal.mysql.pack;
+
+
+import com.cf.imes.framework.common.enums.OrderPackageStatusEnum;
+import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
+import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackageDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface OrderPackageMapper extends BaseMapperX {
+
+
+ void updatePackList(@Param("orderId") Long orderId, @Param("packIds") List packIds, @Param("organId") Long organId);
+
+ default List selectPackStatusList(Long orderId,Long organId) {
+ return selectList(new LambdaQueryWrapperX()
+ .eq(OrderPackageDO::getOrganId,organId)
+ .eq(OrderPackageDO::getDeleted,false)
+ .eq(OrderPackageDO::getStatus, OrderPackageStatusEnum.PACKAGED.getStatus())
+ .eqIfPresent(OrderPackageDO::getOrderId, orderId));
+ }
+
+}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/pack/OrderPrepackagedMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/pack/OrderPrepackagedMapper.java
new file mode 100644
index 000000000..bc616afbd
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/pack/OrderPrepackagedMapper.java
@@ -0,0 +1,17 @@
+package com.cf.imes.module.executor.dal.mysql.pack;
+
+import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
+import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.cf.imes.module.executor.dal.dataobject.pack.OrderPrepackagedDO;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface OrderPrepackagedMapper extends BaseMapperX {
+
+ default int deletePacked(Long orderId, Long organId) {
+ return delete(new LambdaQueryWrapperX()
+ .eq(OrderPrepackagedDO::getOrganId, organId)
+ .eqIfPresent(OrderPrepackagedDO::getOrderId, orderId));
+ }
+
+}
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 2f9cb36ab..d512fb682 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
@@ -103,7 +103,7 @@ public interface PlanMapper extends BaseMapperX {
List selectPlanAreaGroupByCreateTime(@Param("req") OrderStatisticsReqVO reqVO);
- List seleTestSQL(@Param("filed") String filed,@Param("planId") Long planId,@Param("organId") Long organId);
+ List selectPlanDataSource(@Param("filed") String filed,@Param("planId") Long planId,@Param("organId") Long organId);
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/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 8a827cf52..ce04622e3 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
@@ -10,6 +10,7 @@ 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.saveOptimize.PrintOrderPackReqVO;
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;
@@ -143,13 +144,24 @@ public interface PlateMapper extends BaseMapperX {
default List selectPlateNum(Long orderId, Long organId) {
return selectList(new LambdaQueryWrapperX()
.eq(PlateDO::getOrganId,organId)
+ .eq(PlateDO::getDeleted,false)
.eqIfPresent(PlateDO::getOrderId, orderId));
}
-// 房间id查小板的开料状态
- List selectPlateTypeByRoomId(@Param("orderId") Long orderId, @Param("bodyIds") Collection bodyIds,
+ default List selectPlateDeletedStatus(Long orderId,List goodsIds, Long organId) {
+ return selectList(new LambdaQueryWrapperX()
+ .eq(PlateDO::getOrganId,organId)
+ .eq(PlateDO::getDeleted,false)
+ .in(PlateDO::getGoodsId,goodsIds)
+ .eqIfPresent(PlateDO::getOrderId, orderId));
+ }
+
+
+
+ // 房间id查小板的开料状态
+ List selectPlateTypeByRoomId(@Param("orderId") Long orderId, @Param("bodyIds") Collection bodyIds,
@Param("organId") Long organId, @Param("deleted") Integer deleted);
// 根据生产单id删除
@@ -180,6 +192,7 @@ public interface PlateMapper extends BaseMapperX {
default List selectPlateByPlateNo(List plateNo, Long organId) {
return selectList(new LambdaQueryWrapperX()
.eq(PlateDO::getOrganId,organId)
+ .eq(PlateDO::getDeleted,false)
.inIfPresent(PlateDO::getPlateNo, plateNo)
.select(PlateDO::getOrderId));
@@ -197,7 +210,7 @@ public interface PlateMapper extends BaseMapperX {
}
- List selectTestSQL(@Param("filed") String filed, @Param("field2") String field2,@Param("goodsIdList") List goodsIdList,@Param("organId") Long organId);
+ List selectPlanPlateListDataSource(@Param("filed") String filed, @Param("field2") String field2,@Param("goodsIdList") List goodsIdList,@Param("orderIds") List orderIds,@Param("organId") Long organId);
@@ -233,6 +246,24 @@ public interface PlateMapper extends BaseMapperX {
void updateNoPlateOptimized(@Param("orderIdList") List orderIdList,@Param("ids") List ids,@Param("organId") Long organId);
+ List selectPlanPackList(@Param("ids") List ids,@Param("organId") Long organId);
+
+ List selectOrderPackList(@Param("orderId") Long orderId,@Param("organId") Long organId);
+
+ void updatePlateOptimizedStatus(@Param("plateDOList")List plateDOList,@Param("organId") Long organId,@Param("orderId") Long orderId);
+
+
+
+ default List selectNoPlanPlate(Long orderId, List goodsIds, Long organId) {
+ return selectList(new LambdaQueryWrapperX()
+ .eq(PlateDO::getOrganId,organId)
+ .eqIfPresent(PlateDO::getOrderId,orderId)
+ .inIfPresent(PlateDO::getGoodsId,goodsIds)
+ .eq(PlateDO::getIsOptimized,false));
+
+ }
+
+
// 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/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 9c16c2d76..f8aa96bde 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
@@ -41,9 +41,10 @@ public interface RemainPlateMapper extends BaseMapperX {
}
- default List selectByPlanId(Long planId, Long userOrganId) {
+ default List selectByPlanId(Long planId, Long organId) {
return selectList( new LambdaQueryWrapperX()
- .eq(RemainPlateDO::getOrganId, userOrganId)
+ .eq(RemainPlateDO::getOrganId, organId)
+ .eq(RemainPlateDO::getDeleted,false)
.eq(RemainPlateDO::getPlanId, planId));
@@ -59,7 +60,7 @@ public interface RemainPlateMapper extends BaseMapperX {
.eq(RemainPlateDO::getOrganId, organId));
}
- List selectTestSQL(@Param("filed") String filed,@Param("planId") Long planId,@Param("organId") Long organId);
+ List selectPlanRemainDataSource(@Param("filed") String filed,@Param("planId") Long planId,@Param("organId") Long organId);
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 b87f360f5..bee00fa0e 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
@@ -12,6 +12,7 @@ import com.alibaba.fastjson.JSON;
import com.cf.imes.framework.common.enums.OrderStatusEnum;
import com.cf.imes.framework.common.enums.PlanStatusEnum;
import com.cf.imes.framework.common.exception.ServiceException;
+import com.cf.imes.framework.common.util.Assert.AssertUtils;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.es.core.service.ESDocumentService;
import com.cf.imes.framework.security.core.LoginUser;
@@ -66,6 +67,7 @@ import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.ge
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_NOT_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLAN_NOT_EXISTS;
+import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
/**
* @author there
@@ -160,14 +162,15 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
public Boolean commit(Long planId, List goodsNo) {
PlanDO planDO = planMapper.selectById(planId);
- if (Objects.isNull(planDO)) {
- throw exception(PLAN_NOT_EXISTS);
- }
+
+ AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
// todo 目前只解决了非混单的情况,混单情况待解决
List optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10);
+ AssertUtils.notEmpty(optimizeBoardModelDOS,ORDER_PLAN_OPTIMIZE_ERROR);
+
OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0);
List plateNo = new ArrayList<>();
@@ -190,7 +193,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
}
} catch (JsonProcessingException e) {
- e.printStackTrace();
+ throw exception(ORDER_PLAN_OPTIMIZE_ERROR);
}
for (Long goods : goodsNo) {
@@ -275,22 +278,14 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
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);
- }
+
+ AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
// todo 目前只解决了非混单的情况,混单情况待解决
- List optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 99);
+ List optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, 10);
+
+ AssertUtils.notEmpty(optimizeBoardModelDOS,ORDER_PLAN_OPTIMIZE_ERROR);
OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0);
@@ -459,10 +454,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
@Override
public OrderSource getOrderSourceByOrderId(Long orderId) {
OrderDO orderDO = orderMapper.selectById(orderId);
- if (Objects.isNull(orderDO)) {
- throw exception(ORDER_NOT_EXISTS);
- }
- OrderSource orderSource = new OrderSource();
+// if (Objects.isNull(orderDO)) {
+// throw exception(ORDER_NOT_EXISTS);
+// }
+
+ AssertUtils.notEmpty(orderDO,ORDER_NOT_EXISTS);
List goodsDOS = goodsMapper.selectGoodsList(orderId,getUserOrganId());
@@ -470,6 +466,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List plateDOS = plateMapper.selectPlateDetialList(orderId,getUserOrganId());
+ AssertUtils.notEmpty(plateDOS,ORDER_PLATE_ERROR);
for (PlateDetialRespVO plateDetailsRespVO : plateDOS) {
String name = "";
@@ -489,11 +486,14 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
Integer orderModelSize = plateDOS.size();
- List orderModelDOS = buildRespByOrderId(orderId, ORDER_PLATE_MODEL, orderModelSize);
+ List orderModelDOS = buildRespByOrderId(orderId, orderModelSize);
+
+
+ AssertUtils.notEmpty(orderModelDOS,ORDER_PLATE_MODEL_DATE_ERROR);
// 大板数据的尺寸长度
- Integer boardSize = goodsDOS.stream().map(GoodsReqVO::getId).toList().size();
+ Integer boardSize = goodsDOS.size();
List optimizeBoardModelDOS = buildBoardByOrderId(orderId, ORDER_REMAIN_PLATE_MODEL, boardSize);
@@ -504,8 +504,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 查询生产单对应的包裹信息
- List printOrderPackReqVOS = orderItemMapper.selectOrderPlateList(orderId, getUserOrganId());
-
+ List printOrderPackReqVOS = plateMapper.selectOrderPackList(orderId,getUserOrganId());
// 统计每个订单的包装数量
printOrderPackReqVOS
@@ -515,14 +514,24 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
.forEach(f->f.setPackNum(printOrderPackReqVOS.stream().filter(e -> e.getOrderId().equals(orderId)).map(PrintOrderPackReqVO::getPackId).toList().size()));
- orderSource.setOrderList(Collections.singletonList(orderDO));
- orderSource.setPlateList(plateDOS);
- orderSource.setGoodsList(goodsDOS);
- orderSource.setPlateModels(orderModelDOS);
- orderSource.setOptimizeBoardModelDOS(optimizeBoardModelDOS);
- orderSource.setOrderPartsRespVOS(printOrderPartsRespVOS);
- orderSource.setOrderPackReqVOS(printOrderPackReqVOS);
- return orderSource;
+// orderSource.setOrderList(Collections.singletonList(orderDO));
+// orderSource.setPlateList(plateDOS);
+// orderSource.setGoodsList(goodsDOS);
+// orderSource.setPlateModels(orderModelDOS);
+// orderSource.setOptimizeBoardModelDOS(optimizeBoardModelDOS);
+// orderSource.setOrderPartsRespVOS(printOrderPartsRespVOS);
+// orderSource.setOrderPackReqVOS(printOrderPackReqVOS);
+
+ return OrderSource.builder()
+ .orderList(Collections.singletonList(orderDO))
+ .goodsList(goodsDOS)
+ .plateList(plateDOS)
+ .plateModels(orderModelDOS)
+ .optimizeBoardModelDOS(optimizeBoardModelDOS)
+ .orderPartsRespVOS(printOrderPartsRespVOS)
+ .orderPackReqVOS(printOrderPackReqVOS)
+ .build();
+
}
@@ -530,15 +539,17 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
@Override
public OrderSource getOrderSourceByPlanId(Long planId) {
PlanDO planDO = planMapper.selectById(planId);
- if (Objects.isNull(planDO)) {
- throw exception(PLAN_NOT_EXISTS);
- }
+// if (Objects.isNull(planDO)) {
+// throw exception(PLAN_NOT_EXISTS);
+// }
+
+ AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
// 查询排单对应的大板信息
List goodsDOS = goodsMapper.selectGoodsListByOrderIds(planId,getUserOrganId());
- List orderIds = goodsDOS.stream().map(GoodsReqVO::getOrderId).toList();
+ List orderIds = goodsDOS.stream().map(GoodsReqVO::getOrderId).distinct().toList();
List ids = goodsDOS.stream().map(GoodsReqVO::getId).toList();
@@ -546,26 +557,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List plateDetialRespVOS = plateMapper.selectPlateListByGoodsIds(ids, getUserOrganId());
-
-// List bodyIds = plateDetialRespVOS.stream().map(PlateDetialRespVO::getBodyId).distinct().toList();
-//
-//
-// List orderBodyDOS = orderBodyMapper.selectOrderBodyList(bodyIds,orderIds, getUserOrganId());
-//
-//
-//// List detialRespVOS = new ArrayList<>();
-//
-//
-// for (OrderBodyDO orderBodyDO : orderBodyDOS) {
-//
-// plateDetialRespVOS.stream().filter(f -> f.getBodyId().equals(orderBodyDO.getId())).forEach(m -> {
-// m.setBodyName(orderBodyDO.getName());
-// m.setRoomName(orderBodyDO.getRoomName());
-// });
-//
-// }
-
-
+ AssertUtils.notEmpty(plateDetialRespVOS,ORDER_PLAN_PLATE_ERROR);
for (PlateDetialRespVO plateDetailsRespVO : plateDetialRespVOS) {
String name = "";
@@ -579,23 +571,15 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
plateDetailsRespVO.setProcessGroupName(name);
-// plateDetailsRespVO.setGoodsId(goodsDOS
-// .stream()
-// .filter(f->f.getId().equals(plateDetailsRespVO.getId()))
-// .map(GoodsReqVO::getGoodsId)
-// .findAny().orElse(null));
-
-// plateDetailsRespVO.setGoodsName(goodsDOS
-// .stream()
-// .filter(f->f.getId().equals(plateDetailsRespVO.getId()))
-// .map(GoodsReqVO::getGoodsName)
-// .findAny().orElse(null));
}
List orderDOS = orderMapper.selectBatchIds(orderIds);
+ AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR);
+
+
// 造型数据的尺寸长度
Integer orderModelSize = plateDetialRespVOS.size();
@@ -605,14 +589,18 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List orderModelDOS = buildRespByPlateIds(plateIds, orderModelSize);
+ AssertUtils.notEmpty(orderModelDOS,ORDER_PLAN_PLATE_MODEL_DATE_ERROR);
+
+
// 大板数据的尺寸长度
- Integer boardSize = goodsDOS.stream().map(GoodsReqVO::getId).toList().size();
+ Integer boardSize = goodsDOS.size();
List optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL, boardSize);
List remainPlateDOS = remainPlateMapper.selectByPlanId(planId,getUserOrganId());
+
List optimizeRemainPlates = BeanUtils.toBean(remainPlateDOS, OptimizeRemainPlate.class);
@@ -620,19 +608,20 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List printOrderPartsRespVOS = orderPartsMapper.selectPartList(orderIds, getUserOrganId());
// 查询生产单对应的包裹信息
- List printOrderPackReqVOS = orderItemMapper.selectPackList(ids, getUserOrganId());
+ List printOrderPackReqVOS = plateMapper.selectPlanPackList(ids,getUserOrganId());
- for (Long orderId : orderIds) {
+ if(!printOrderPackReqVOS.isEmpty()) {
+ for (Long orderId : orderIds) {
- // 统计每个订单的包装数量
- printOrderPackReqVOS
- .stream()
- .filter(f->f.getOrderId().equals(orderId))
- .forEach(f->f.setPackNum(printOrderPackReqVOS.stream().filter(e -> e.getOrderId().equals(orderId)).map(PrintOrderPackReqVO::getPackId).toList().size()));
+ // 统计每个订单的包装数量
+ printOrderPackReqVOS
+ .stream()
+ .filter(f -> f.getOrderId().equals(orderId))
+ .forEach(f -> f.setPackNum(printOrderPackReqVOS.stream().filter(e -> e.getOrderId().equals(orderId)).map(PrintOrderPackReqVO::getPackId).toList().size()));
+ }
}
-
return OrderSource.builder()
.orderList(orderDOS)
.plan(planDO)
@@ -652,6 +641,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List goodsReqVOS = goodsMapper.selectGoodsAndRemainPlate(ids, getUserOrganId());
+ AssertUtils.notEmpty(goodsReqVOS,ORDER_GOODS_DATA_ERROR);
+
+
List orderIds = goodsReqVOS.stream().map(GoodsReqVO::getOrderId).distinct().toList();
List orderDOS = orderMapper.selectBatchIds(orderIds);
@@ -660,22 +652,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List plateDetialRespVOS = plateMapper.selectPlateListByGoodsIds(ids, getUserOrganId());
-// List bodyIds = plateDetialRespVOS.stream().map(PlateDetialRespVO::getBodyId).distinct().toList();
-//
-//
-// List orderBodyDOS = orderBodyMapper.selectOrderBodyList(bodyIds,orderIds, getUserOrganId());
-//
-//
-// for (OrderBodyDO orderBodyDO : orderBodyDOS) {
-//
-// plateDetialRespVOS.stream().filter(f -> f.getBodyId().equals(orderBodyDO.getId())).forEach(m -> {
-// m.setBodyName(orderBodyDO.getName());
-// m.setRoomName(orderBodyDO.getRoomName());
-// });
-//
-// }
-
-
for (PlateDetialRespVO plateDetailsRespVO : plateDetialRespVOS) {
String name = "";
if(!plateDetailsRespVO.getProcessGroupLists().isEmpty()) {
@@ -688,13 +664,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
plateDetailsRespVO.setProcessGroupName(name);
-
-// // todo 这样写混单时同样适用,后面加混单后这里不用修改
-// plateDetailsRespVO.setGoodsId(goodsReqVOS
-// .stream()
-// .filter(f->f.getId().equals(plateDetailsRespVO.getId()))
-// .map(GoodsReqVO::getGoodsId)
-// .findAny().orElse(null));
}
@@ -729,16 +698,23 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// todo 目前只解决非混单的情况下,
List optimizeBoardModelDOS = buildBoardByPlanIds(planIds, ORDER_REMAIN_PLATE_MODEL, planIds.size());
+
if(!optimizeBoardModelDOS.isEmpty()){
-
deleteByPlanId(planIds,ORDER_REMAIN_PLATE_MODEL);
-
}
// 保存优化后的大板数据
batchSaveBoardModel(req.getOptimizeBoardModelDOS());
+ List goodsDOS = goodsMapper.selectPlanGoodsListByPlanIdList(planIds, getUserOrganId());
+
+ List ids = goodsDOS.stream().map(GoodsDO::getId).distinct().toList();
+
+ List orderIds = goodsDOS.stream().map(GoodsDO::getOrderId).distinct().toList();
+
+ plateMapper.updatePlateOptimized(orderIds,ids,getUserOrganId());
+
// // 保存余料板的数据
// if (CollectionUtil.isNotEmpty(req.getOptimizeRemainPlates())) {
@@ -818,8 +794,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List plateDOS = plateMapper.selectPlateNum(orderId, getUserOrganId());
+ if(plateDOS.isEmpty()){
+ return null;
+ }
- return buildRespByOrderId(orderId, ORDER_PLATE_MODEL,plateDOS.size());
+ return buildRespByOrderId(orderId, plateDOS.size());
}
@@ -843,9 +822,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
}
- private List buildRespByOrderId(Long orderId, String index,Integer size) {
+ private List buildRespByOrderId(Long orderId, Integer size) {
SearchRequest.Builder builder = new SearchRequest.Builder();
- builder.index(index);
+ builder.index(OptimizePlanService.ORDER_PLATE_MODEL);
builder.size(size);
builder.query(q -> q.term(b -> b.field("orderId").value(orderId)));
try {
@@ -874,12 +853,12 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
boolean errors = bulkResponse.errors();
if (errors) {
log.error(bulkResponse.items().toString());
- throw new ServiceException(500, "未知异常");
+ throw new ServiceException(INTERNAL_SERVER_ERROR);
}
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
- throw new RuntimeException(e);
+ throw new ServiceException(INTERNAL_SERVER_ERROR);
}
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java
index 25398f97b..4a2cb3393 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java
@@ -1,20 +1,19 @@
package com.cf.imes.module.executor.service.order;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.*;
-
import com.alibaba.fastjson.JSONObject;
import com.cf.imes.framework.common.pojo.PageParam;
+import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
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.controller.admin.orderParts.vo.OrderPartsRespVO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
-import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO;
import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO.OrderXmlVO;
import org.springframework.boot.system.ApplicationHome;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
import java.io.File;
import java.util.List;
import java.util.Map;
@@ -91,7 +90,9 @@ public interface OrderService {
* @param roomId: 房间id
* @param bodyId: 柜体id
*/
- void updateBodyDeletedByOrderId(Long orderId , Set roomId, Long bodyId, Integer status);
+ void updateDeleteBody(Long orderId , Set roomId, Long bodyId, Integer status);
+
+ void updateRestoreBody(Long orderId , Set roomId, Long bodyId, Integer status);
/**
* @param listMap:生产单号
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java
index c8b82bcfd..484947b3c 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java
@@ -30,6 +30,7 @@ import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
+import com.cf.imes.module.executor.dal.dataobject.pack.OrderPackageDO;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
@@ -40,6 +41,8 @@ import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper;
import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
+import com.cf.imes.module.executor.dal.mysql.pack.OrderPackageMapper;
+import com.cf.imes.module.executor.dal.mysql.pack.OrderPrepackagedMapper;
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
@@ -64,12 +67,14 @@ import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.time.LocalDate;
+import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
@@ -114,6 +119,12 @@ public class OrderServiceImpl implements OrderService {
@Resource
private OrderItemMapper orderItemMapper;
+ @Resource
+ private OrderPackageMapper orderPackageMapper;
+
+ @Resource
+ private OrderPrepackagedMapper orderPrepackagedMapper;
+
@Resource
private OrderInputProcessor orderInputProcessor;
@@ -246,7 +257,7 @@ public class OrderServiceImpl implements OrderService {
@Override
@Transactional(rollbackFor = Exception.class)
- public void updateBodyDeletedByOrderId(Long orderId, Set roomIds, Long bodyId, Integer status) { // 要删除传1,还原传0
+ public void updateDeleteBody(Long orderId, Set roomIds, Long bodyId, Integer status) { // 要删除传1,还原传0
// 判断生产单的状态和生产单柜体对应的板擦是否已开料
List planIds = validateOrderStatus(orderId, roomIds, bodyId, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus());
@@ -261,43 +272,52 @@ public class OrderServiceImpl implements OrderService {
}
if (bodyIds.size() != 0){
- List plateDOList = plateMapper.selectPlateTypeByRoomId(orderId, bodyIds, getUserOrganId(), index);
+
+ List plateDOList = plateMapper.selectPlateTypeByRoomId(orderId, bodyIds, getUserOrganId(), index);
+ List plateIds = plateDOList.stream().map(PlateDO::getId).toList();
+
+ List goodsIds = plateDOList.stream().map(PlateDO::getGoodsId).distinct().toList();
// List groupIds = orderGroupMapper.selectListByBodyId(bodyIds, orderId, getUserOrganId(), index);
orderBodyMapper.updateDeletedById(bodyIds, status, getUserOrganId(), orderId);// 柜体
orderGroupMapper.updateDeletedById(bodyIds, status, getUserOrganId(), orderId);// 加工组
- if (plateDOList != null && plateDOList.size() != 0) {
- plateMapper.updateDeletedById(plateDOList, status, getUserOrganId(), orderId);// 删小板
+
+ if (!plateDOList.isEmpty()) {
+ plateMapper.updateDeletedById(plateIds, status, getUserOrganId(), orderId);// 删小板
}
+
+
+ // 删除包裹,只需删除,无需还原
+ List packIds = orderItemMapper.selectPackId(bodyIds, getUserOrganId()).stream().map(OrderItemDO::getPackageId).distinct().toList();
+
+ orderPackageMapper.updatePackList(orderId, packIds, getUserOrganId());
+
+ orderItemMapper.deletePackList(orderId, packIds, getUserOrganId());
+
+ orderPrepackagedMapper.deletePacked(orderId,getUserOrganId());
+
+ List orderPackageDOS = orderPackageMapper.selectPackStatusList(orderId, getUserOrganId());
+
+ if(orderPackageDOS.isEmpty()){
+
+ OrderDO orderDO = orderMapper.selectById(orderId);
+
+ orderDO.setPackaged(OrderPackageStatusEnum.UNPACKED.getStatus());
+
+ orderMapper.updateById(orderDO);
+
+ }
+
+
// 删除大板
- List goodsIdList = plateMapper.selectPlateNum(orderId, getUserOrganId());
- Map> goodsIdMap = goodsIdList.stream()
- .collect(Collectors.groupingBy(PlateDO::getGoodsId));
+ List goodsList = plateMapper.selectPlateDeletedStatus(orderId, goodsIds, getUserOrganId());
- List goodsIdDeleted = new ArrayList<>();
+ List goodsIdList = goodsList.stream().map(PlateDO::getGoodsId).distinct().toList();
- goodsIdMap.forEach((goodsId, plates) -> {
- if (plates.isEmpty()) {
- goodsIdDeleted.add(goodsId);
- return;
- }
- boolean allDeleted = true;
- for (PlateDO plateDO : plates) {
- if (status == 1) {
- if (!plateDO.getDeleted()) {
- allDeleted = false;
- break;
- }
- } else {
- if (plateDO.getDeleted()) {
- break;
- }
- }
- }
- if (allDeleted) {
- goodsIdDeleted.add(goodsId);
- }
- });
+ List goodsIdDeleted = Stream.concat(
+ goodsIds.stream().filter(str -> !goodsIdList.contains(str)),
+ goodsIdList.stream().filter(str -> !goodsIds.contains(str)))
+ .toList();
if (goodsIdDeleted.size() > 0) {
@@ -305,18 +325,20 @@ public class OrderServiceImpl implements OrderService {
}
- if(planIds != null) {
+
+ if(!planIds.isEmpty()) {
// 判断删除的柜体对应的板材是否和排单板材一样
List goodsDOS = goodsMapper.selectPlanGoodsListByPlanIdList(planIds, getUserOrganId());
// 一样,同时删除排单的信息
- if(goodsDOS.isEmpty()){
+ if(goodsDOS.isEmpty() && status.equals(1)){
planService.deletePlan(planIds);
- }else {
- // 只要有排单,不管删除的柜体的板材数和排单数一样,都要删除排单对应的优化数据(不用这种写法进行删除时,有时会报错,原因目前还没找到)
- planService.deleteByPlanId(planIds, ORDER_REMAIN_PLATE_MODEL);
}
+ // 只要有排单,不管删除的柜体的板材数和排单数一样,都要删除排单对应的优化数据(不用这种写法进行删除时,有时会报错,原因目前还没找到)
+ planService.deleteByPlanId(planIds, ORDER_REMAIN_PLATE_MODEL);
+
+
}
List partsList = orderPartsMapper.selectPartsIdListByBodyId(bodyIds, getUserOrganId(), orderId); // 配件
@@ -335,6 +357,123 @@ public class OrderServiceImpl implements OrderService {
}
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void updateRestoreBody(Long orderId, Set roomIds, Long bodyId, Integer status) { // 要删除传1,还原传0
+
+ // 校验存在
+ OrderDO orderDO = orderMapper.selectOrderOne(orderId, getUserOrganId());
+ if (orderDO == null)
+ throw exception(ORDER_NOT_EXISTS);
+
+ List bodyIds = new ArrayList<>();
+ Integer index = status == 1 ? 0 : 1;
+
+ if (roomIds != null && roomIds.size() != 0) {
+ bodyIds = orderBodyMapper.selectBodyIdByRoomId(orderId, roomIds, getUserOrganId(), index);
+ } else if (bodyId != null && bodyId != 0) {
+ validateOrderBodyExists(orderId, bodyId, getUserOrganId(), index);
+ bodyIds.add(bodyId);
+ }
+
+
+ if (bodyIds.size() != 0){
+
+ List plateDOList = plateMapper.selectPlateTypeByRoomId(orderId, bodyIds, getUserOrganId(), index);
+ List plateIds = plateDOList.stream().map(PlateDO::getId).toList();
+
+ List