1、cad拆单支持造型数据压缩存入mysql;2、未排单数据、计算用板量、优化生产接口支持mysql造型数据替换es造型数据;

This commit is contained in:
gaoqr
2026-05-12 09:50:18 +08:00
parent ba914beb16
commit 9f9941e71e
19 changed files with 291 additions and 98 deletions
@@ -220,5 +220,6 @@ public class PlateDetailRespVO {
@Schema(description = "加工组名称", requiredMode = Schema.RequiredMode.REQUIRED)
private List<ProcessGroupList> processGroupLists;
@Schema(description = "造型数据")
private String modelData;
}
@@ -1,7 +1,6 @@
package com.cf.imes.module.executor.service.optimizeplan;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.PageUtil;
@@ -20,6 +19,7 @@ import co.elastic.clients.elasticsearch.sql.TranslateRequest;
import co.elastic.clients.elasticsearch.sql.TranslateResponse;
import co.elastic.clients.json.JsonData;
import co.elastic.clients.json.JsonpMappingException;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -32,6 +32,7 @@ import com.cf.imes.framework.common.enums.PlanTypeEnum;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.Assert.AssertUtils;
import com.cf.imes.framework.common.util.json.JsonUtils;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.es.core.service.ESDocumentService;
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
@@ -308,10 +309,14 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
AssertUtils.notEmpty(plateDOS, ORDER_PLATE_EMPTY);
List<OrderModelDO> orderModelDOS = getOrderModels(ListUtil.of(orderId), goodsDOS.stream().map(GoodsReqVO::getId).collect(Collectors.toList()));
AssertUtils.notEmpty(orderModelDOS,ORDER_PLATE_MODEL_DATE_ERROR);
List<OrderModelDO> models =
plateDOS.stream()
.map(PlateDetailRespVO::getModelData)
.filter(StringUtils::isNotBlank)
.map(json -> JsonUtils.parseObject(json, OrderModelDO.class))
.toList();
AssertUtils.notEmpty(models, ORDER_PLATE_MODEL_DATE_ERROR);
// 查询订单对应的配件信息
List<PrintOrderPartsRespVO> printOrderPartsRespVOS = orderPartsMapper.selectPartList(Collections.singletonList(orderId), getUserOrganId());
@@ -338,7 +343,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
.orderList(Collections.singletonList(orderDO))
.goodsList(goodsDOS)
.plateList(plateDOS)
.plateModels(orderModelDOS)
.plateModels(models)
.orderPartsRespVOS(printOrderPartsRespVOS)
.orderPartsRemarks(orderPartsRemarks)
.orderPackReqVOS(printOrderPackReqVOS)
@@ -389,18 +394,14 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
AssertUtils.notEmpty(orderDOS, ORDER_PLAN_ORDERS_EMPTY);
// 需要查询小板造型信息的板材ID
List<Long> plateIds = plateDetailRespVOS.stream().map(PlateDetailRespVO::getPlateId).toList();
List<OrderModelDO> models =
plateDetailRespVOS.stream()
.map(PlateDetailRespVO::getModelData)
.filter(StringUtils::isNotBlank)
.map(json -> JsonUtils.parseObject(json, OrderModelDO.class))
.toList();
// 每一千块查询一次es
List<List<Long>> batchPlateIdsList = batchProcess(plateIds);
List<OrderModelDO> orderModelDOS = new ArrayList<>();
for (List<Long> plateIdsList : batchPlateIdsList) {
orderModelDOS.addAll(esUtils.getEsDocument(FIELD_PLATE_ID, plateIdsList, plateIdsList.size(), ORDER_PLATE_MODEL.getIndex(), OrderModelDO.class));
}
AssertUtils.notEmpty(orderModelDOS, ORDER_PLAN_PLATE_MODEL_DATE_ERROR);
AssertUtils.notEmpty(models, ORDER_PLAN_PLATE_MODEL_DATE_ERROR);
List<RemainPlateDO> remainPlateDOS = remainPlateMapper.selectByPlanId(planId,getUserOrganId());
@@ -446,7 +447,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
.plan(planDO)
.goodsList(goodsDOS)
.plateList(plateDetailRespVOS)
.plateModels(orderModelDOS)
.plateModels(models)
.planActualGoodsModelDO(planActualGoodsModelDO)
.optimizeRemainPlates(optimizeRemainPlates)
.orderPartsRespVOS(printOrderPartsRespVOS)
@@ -791,8 +792,12 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
AssertUtils.notEmpty(plateDetailRespVOS, ORDER_PLATE_EMPTY);
// todo 数据结构改后,可以增加排单ID作为筛选,只查为 0 的
// List<OrderModelDO> orderModelDOS = getOrderModels(orderIds, orderGoodsIds);
List<OrderModelDO> models =
plateDetailRespVOS.stream()
.map(PlateDetailRespVO::getModelData)
.filter(StringUtils::isNotBlank)
.map(json -> JsonUtils.parseObject(json, OrderModelDO.class))
.toList();
AssertUtils.notEmpty(plateDetailRespVOS,ORDER_PLATE_MODEL_DATE_ERROR);
@@ -800,7 +805,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
.orderList(buildTree(orderDOS))
.goodsList(goodsReqVOS)
.plateList(plateDetailRespVOS)
.plateModels(Collections.emptyList())
.plateModels(models)
.build();
}
@@ -405,6 +405,7 @@
<result property="isSideSculpt" column="isSideSculpt"/>
<result property="is2v" column="is2v"/>
<result property="isSide2v" column="isSide2v"/>
<result property="modelData" column="modelData" typeHandler="com.cf.imes.framework.mybatis.core.type.CompressByteTypeHandler"/>
<collection property="processGroupLists" javaType="java.util.List" ofType="com.cf.imes.module.executor.controller.admin.plan.bo.ProcessGroupList" >
@@ -453,7 +454,8 @@
op.open_door_type as openDoorType,
op.is_special_shaped as isSpecialShaped,
op.is_sculpt as isSculpt,
op.remark as remark
op.remark as remark,
op.model_data as modelData
from order_plate op
left join order_goods ogs on op.organ_id = ogs.organ_id and op.order_id = ogs.order_id and op.goods_id = ogs.id
@@ -76,6 +76,7 @@
<result property="isSideSculpt" column="isSideSculpt"/>
<result property="is2v" column="is2v"/>
<result property="isSide2v" column="isSide2v"/>
<result property="modelData" column="modelData" typeHandler="com.cf.imes.framework.mybatis.core.type.CompressByteTypeHandler"/>
<collection property="processGroupLists" javaType="java.util.List" ofType="com.cf.imes.module.executor.controller.admin.plan.bo.ProcessGroupList" >
@@ -379,6 +380,7 @@
<result property="offsetY" column="offsetY"/>
<result property="isSpecialShaped" column="isSpecialShaped"/>
<result property="remark" column="remark"/>
<result property="modelData" column="modelData" typeHandler="com.cf.imes.framework.mybatis.core.type.CompressByteTypeHandler"/>
</resultMap>
<select id="selectPlateListByGoodsIds"
@@ -409,7 +411,8 @@
op.hole_face as holeFace,
op.open_door_type as openDoorType,
op.is_special_shaped as isSpecialShaped,
op.remark as remark
op.remark as remark,
op.model_data as modelData
from order_plate op
join order_goods ogs on op.organ_id = ogs.organ_id and op.order_id = ogs.order_id and op.goods_id = ogs.id
@@ -463,7 +466,8 @@
op.is_special_shaped as isSpecialShaped,
op.is_sculpt as isSculpt,
op.is_row_hole as hasHole,
op.remark as remark
op.remark as remark,
op.model_data as modelData
from order_plate op
join order_goods ogs on op.organ_id = ogs.organ_id and op.order_id = ogs.order_id and op.goods_id = ogs.id