1、xml导入订单修复可用;2、未排单订单分页支持pageSize=-1的查询全部;

This commit is contained in:
gaoqr
2026-06-09 17:31:12 +08:00
parent 9aeb56fc3a
commit 57f3fa6428
10 changed files with 75 additions and 132 deletions
@@ -77,22 +77,20 @@ public class ErrorCodeConstants {
public static final ErrorCode CUSTOM_PLATENO_GENERATE_ORG_CUSTOM_PLATENO_SEQ_MODIFY_ERROR = new ErrorCode(1_003_030_004, "order.custom.plateno.generate.org.custom.plateno.seq.modify.error");
// ========== 订单导入 1_003_031 ==========
public static final ErrorCode ORDER_IMPORT_TYPE_NOT_SUPPORT = new ErrorCode(1_003_031_001, "不支持的订单导入类型:{}");
public static final ErrorCode ORDER_IMPORT_TYPE_NOT_SUPPORT = new ErrorCode(1_003_031_001, "不支持的订单导入类型:{0}");
public static final ErrorCode ORDER_IMPORT_ORGAN_LOCK_ERROR = new ErrorCode(1_003_031_002, "组织下存在正在导入的订单,请稍后再试");
public static final ErrorCode ORDER_IMPORT_FILE_ANALYZE_ERROR = new ErrorCode(1_003_031_003, "订单导入文件解析失败,请检查文件类型和格式");
public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_EMPTY = new ErrorCode(1_003_031_004, "订单信息【{}】不能为空");
public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_LENGTH_ERROR = new ErrorCode(1_003_031_005, "订单信息【{}】长度不能超过【{}】个字符");
public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_MOBILE_FORMAT_ERROR = new ErrorCode(1_003_031_006, "订单信息【{}】手机号格式错误");
public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_DATE_FORMAT_ERROR = new ErrorCode(1_003_031_007, "订单信息【{}】日期格式错误");
public static final ErrorCode ORDER_IMPORT_ORDER_NOT_EXISTS = new ErrorCode(1_003_031_008, "订单【{}】不存在");
public static final ErrorCode ORDER_IMPORT_ORDER_CUSTOMERNO_EXISTS = new ErrorCode(1_003_031_009, "{}【{}】已存在");
public static final ErrorCode ORDER_IMPORT_DETAIL_FIELD_EMPTY = new ErrorCode(1_003_031_010, "导入校验异常:第{}行,导入明细【{}】不能为空");
public static final ErrorCode ORDER_IMPORT_DETAIL_FIELD_LENGTH_ERROR = new ErrorCode(1_003_031_011, "导入校验异常:第{}行,导入明细【{}】长度不能超过【{}】个字符");
public static final ErrorCode ORDER_IMPORT_DETAIL_VALID_ERROR = new ErrorCode(1_003_031_012, "导入校验异常:{}");
public static final ErrorCode ORDER_IMPORT_GROUPCODE_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_013, "导入校验异常:板件{}下加工组编码{}不存在于加工组编码列表中");
public static final ErrorCode ORDER_IMPORT_ROOMCODE_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_014, "导入校验异常:板件{}下房间编码{}不存在于房间编码列表中");
public static final ErrorCode ORDER_IMPORT_BODYCODE_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_015, "导入校验异常:板件{}下柜体编码{}不存在于柜体编码列表中");
public static final ErrorCode ORDER_IMPORT_PLATEGOODS_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_016, "导入校验异常:第{}行的板材不存在,请确保板材管理中存在对应商品编号或商品(名称+材质+颜色+厚度+品牌)组合的板材后导入");
public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_EMPTY = new ErrorCode(1_003_031_004, "订单信息【{0}】不能为空");
public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_LENGTH_ERROR = new ErrorCode(1_003_031_005, "订单信息【{0}】长度不能超过【{1}】个字符");
public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_MOBILE_FORMAT_ERROR = new ErrorCode(1_003_031_006, "订单信息【{0}】手机号格式错误");
public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_DATE_FORMAT_ERROR = new ErrorCode(1_003_031_007, "订单信息【{0}】日期格式错误");
public static final ErrorCode ORDER_IMPORT_ORDER_NOT_EXISTS = new ErrorCode(1_003_031_008, "订单【{0}】不存在");
public static final ErrorCode ORDER_IMPORT_ORDER_CUSTOMERNO_EXISTS = new ErrorCode(1_003_031_009, "{0}【{1}】已存在");
public static final ErrorCode ORDER_IMPORT_DETAIL_VALID_ERROR = new ErrorCode(1_003_031_012, "导入校验异常:{0}");
public static final ErrorCode ORDER_IMPORT_GROUPCODE_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_013, "导入校验异常:板件{0}下加工组编码{1}不存在于加工组编码列表中");
public static final ErrorCode ORDER_IMPORT_ROOMCODE_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_014, "导入校验异常:板件{0}下房间编码{1}不存在于房间编码列表中");
public static final ErrorCode ORDER_IMPORT_BODYCODE_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_015, "导入校验异常:板件{0}下柜体编码{1}不存在于柜体编码列表中");
public static final ErrorCode ORDER_IMPORT_PLATEGOODS_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_016, "导入校验异常:第{0}行的板材不存在,请确保板材管理中存在对应商品编号或商品(名称+材质+颜色+厚度+品牌)组合的板材后导入");
// ========== manage板材/配件 1_003_001_000 ==========
public static final ErrorCode PARTS_NOT_EXISTS = new ErrorCode(1_003_001_000, "配件不存在");
@@ -81,6 +81,7 @@ import java.util.stream.Collectors;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.DATA_DATA_ERROR;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.common.pojo.PageParam.PAGE_SIZE_NONE;
import static com.cf.imes.framework.common.util.json.JsonUtils.parseArray;
import static com.cf.imes.framework.redis.constants.RedisKeyConstants.ORDER_PLAN_OPTIMIZE_KEY;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
@@ -571,12 +572,17 @@ public class PlanServiceImpl implements PlanService {
.likeIfPresent(FIELD_ADDRESS, pageReqVO.getConsigneeAddress())
.betweenIfPresent(FIELD_ORDER_DATE, LocalDateTimeUtils.generateTimeSection(pageReqVO.getCreateTime()))
.eqIfPresent(FIELD_ORDER_TYPE, pageReqVO.getOrderType());
PageDTO<OrderRespVOCopy> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
Integer pageSize = pageReqVO.getPageSize();
PageDTO<OrderRespVOCopy> page = new PageDTO<>(pageReqVO.getPageNo(), pageSize);
// 查询满足未排单条件的顶级订单id
IPage<Long> rootOrderIdList = planItemMapper.selectRootOrderIdList(page, queryWrapperX);
long rootOrderIdListTotal = rootOrderIdList.getTotal();
if (rootOrderIdListTotal == 0) {
if (PAGE_SIZE_NONE != pageSize && rootOrderIdListTotal == 0) {
return new PageResult<>();
}
if (PAGE_SIZE_NONE == pageSize && rootOrderIdList.getRecords().isEmpty()) {
return new PageResult<>();
}
@@ -537,6 +537,7 @@ public class DefaultOrderImportXmlParserHandler {
.createTime(LocalDateTime.now())
.detail(JsonUtils.zipString(JSON.toJSONString(boxXmlVO)))
.sort(sort++)
.area(BigDecimal.ZERO)
.build());
}
@@ -1744,6 +1745,7 @@ public class DefaultOrderImportXmlParserHandler {
.bodyName(boxName)
.createTime(LocalDateTime.now())
.sort(sort++)
.area(BigDecimal.ZERO)
.build());
roomBodyMap.put(roomBodyKey, RoomBoxXmlVO.builder()
@@ -44,6 +44,12 @@ public class OrderDO extends BaseDO {
* 父单号
*/
private Long parentId;
/**
* 根单号
*/
private Long rootId;
/**
* 源订单号
*/
@@ -100,5 +100,5 @@ public class OrderBodyDO extends BaseDO {
/**
* 成倍序号
*/
private int sort;
private int multiSort;
}
@@ -251,6 +251,5 @@ public class PlateDO extends BaseDO {
/**
* 造型数据
*/
@TableField(exist = false)
private String modelData;
}
@@ -28,12 +28,10 @@ import com.cf.imes.module.plan.dal.mysql.orderImport.OrderImportTaskMapper;
import com.cf.imes.module.plan.dal.mysql.orderImport.OrderImportTempDataMapper;
import com.cf.imes.module.plan.dal.mysql.orderItem.OrderItemMapper;
import com.cf.imes.module.plan.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.plan.dal.mysql.orderParts.PartsMapper;
import com.cf.imes.module.plan.dal.mysql.plate.PlateGoodMapper;
import com.cf.imes.module.plan.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.plan.dal.mysql.rawgoods.RawGoodsMapper;
import com.cf.imes.module.plan.service.customplateno.CustomPlateNoGenerateService;
import com.cf.imes.module.plan.service.order.OrderInputProcessor;
import com.cf.imes.module.plan.service.orderImport.OrderImportTaskService;
import com.cf.imes.module.plan.service.orderImport.factory.DefaultXmlOrderImportFactory;
import com.rabbitmq.client.Channel;
@@ -42,9 +40,9 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import jakarta.annotation.Resource;
import org.springframework.transaction.support.TransactionTemplate;
import java.time.LocalDate;
import java.util.Objects;
@@ -110,21 +108,17 @@ public class DefaultXmlOrderImportConsumer {
@Resource
private PlateGoodMapper plateGoodMapper;
@Resource
private OrderInputProcessor orderInputProcessor;
@Resource
private PartsMapper partsMapper;
@Resource
private CustomPlateNoGenerateService customPlateNoGenerateService;
@Resource
private ChenfengCacheProperties chenfengCacheProperties;
@Resource
private TransactionTemplate transactionTemplate;
@RabbitListener(queues = RabbitMqConstants.ORDER_IMPORT_DEFAULT_XML_QUEUE)
@DS("imes_prod")
@Transactional(rollbackFor = Exception.class)
public void orderImport(String message, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) throws Exception {
log.info("====================【订单默认xml导入收到消息:{}】====================", message);
Long organId = null;
@@ -153,16 +147,30 @@ public class DefaultXmlOrderImportConsumer {
if (ObjectUtil.isNull(orderImportTaskDO)) {
return;
}
// 创建订单
OrderDO orderDO = createOrder(taskId);
log.info("====================【订单默认xml导入处理临时数据开始】====================");
// 创建工厂
DefaultXmlOrderImportFactory defaultExcelOrderImportFactory = new DefaultXmlOrderImportFactory(taskId, orderDO, organId, orderImportTaskDO.getCreator(),
snowFlakeGenerator, idWorker, orderImportTaskMapper, orderImportTempDataMapper, orderMapper, goodsMapper, rawGoodsMapper, orderPartsMapper,
orderBodyMapper, orderGroupMapper, plateMapper, orderItemMapper, plateGoodMapper, orderInputProcessor, partsMapper, customPlateNoGenerateService);
// 解析临时数据
defaultExcelOrderImportFactory.analyzeTempData();
log.info("====================【订单默认xml导入处理临时数据结束】====================");
Long finalOrganId = organId;
String creator = orderImportTaskDO.getCreator();
transactionTemplate.execute(status -> {
try {
// 创建订单
OrderDO orderDO = createOrder(taskId);
log.info("====================【订单默认xml导入处理临时数据开始】====================");
// 创建工厂
DefaultXmlOrderImportFactory defaultExcelOrderImportFactory = new DefaultXmlOrderImportFactory(taskId, orderDO, finalOrganId, creator,
snowFlakeGenerator, idWorker, orderImportTaskMapper, orderImportTempDataMapper, orderMapper, goodsMapper, rawGoodsMapper, orderPartsMapper,
orderBodyMapper, orderGroupMapper, plateMapper, orderItemMapper, plateGoodMapper, customPlateNoGenerateService);
// 解析临时表数据
defaultExcelOrderImportFactory.analyzeTempData();
log.info("====================【订单默认xml导入处理临时数据结束】====================");
} catch (Exception e) {
status.setRollbackOnly();
throw e;
}
return null;
});
} catch (Exception e) {
log.error( ORDER_IMPORT_FAIL.getMsg(), e);
orderImportTaskService.updateImportTaskFail(orderImportTaskDO, e);
@@ -203,6 +211,8 @@ public class DefaultXmlOrderImportConsumer {
OrderDO newOrder = JSON.parseObject(orderTempDetail, OrderDO.class);
Long orderId = (Long) snowFlakeGenerator.nextId(null);
newOrder.setId(orderId);
// todo 后续可能有子单需求?目前只创建主单
newOrder.setRootId(orderId);
orderMapper.insert(newOrder);
// 订单id更新到导入任务表
orderImportTaskMapper.update(new LambdaUpdateWrapper<OrderImportTaskDO>()
@@ -19,7 +19,6 @@ import com.cf.imes.framework.id.core.util.SnowflakeIdWorker3rd;
import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator;
import com.cf.imes.framework.mybatis.core.injector.BaseBatchMapper;
import com.cf.imes.module.executor.enums.DictTypeConstants;
import com.cf.imes.module.executor.enums.OrderImportStatusEnum;
import com.cf.imes.module.executor.enums.OrderImportTmpDataTypeEnum;
import com.cf.imes.module.executor.enums.OrderItemTypeEnum;
import com.cf.imes.module.plan.controller.admin.orderimport.vo.OrderImportTempDataReqVO;
@@ -68,7 +67,6 @@ import com.cf.imes.module.plan.dal.elasticsearch.IContourData;
import com.cf.imes.module.plan.dal.elasticsearch.IOriginModelingData;
import com.cf.imes.module.plan.dal.elasticsearch.ModelDetail;
import com.cf.imes.module.plan.dal.elasticsearch.OffSetList;
import com.cf.imes.module.plan.dal.elasticsearch.OrderPartsRemark;
import com.cf.imes.module.plan.dal.elasticsearch.PartsInfo;
import com.cf.imes.module.plan.dal.elasticsearch.Point;
import com.cf.imes.module.plan.dal.elasticsearch.PointDetail;
@@ -81,14 +79,12 @@ import com.cf.imes.module.plan.dal.mysql.orderImport.OrderImportTaskMapper;
import com.cf.imes.module.plan.dal.mysql.orderImport.OrderImportTempDataMapper;
import com.cf.imes.module.plan.dal.mysql.orderItem.OrderItemMapper;
import com.cf.imes.module.plan.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.plan.dal.mysql.orderParts.PartsMapper;
import com.cf.imes.module.plan.dal.mysql.plate.PlateGoodMapper;
import com.cf.imes.module.plan.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.plan.dal.mysql.rawgoods.RawGoodsMapper;
import com.cf.imes.module.plan.enums.ErrorCodeConstants;
import com.cf.imes.module.plan.service.customplateno.CustomPlateNoGenerateService;
import com.cf.imes.module.plan.service.customplateno.vo.CustomPlateNoGenerateConfigVO;
import com.cf.imes.module.plan.service.order.OrderInputProcessor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;
@@ -106,8 +102,6 @@ import java.util.stream.Collectors;
import static com.cf.imes.module.executor.enums.OrderImportConstants.NOT_ASSIGNED;
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.ORDER_IMPORT_PLATE_GOODS_NOT_EXISTS;
import static com.cf.imes.module.plan.service.order.OrderInputProcessor.ORDER_PARTS_REMARK_MODEL;
import static com.cf.imes.module.plan.service.order.OrderInputProcessor.ORDER_PLATE_MODEL;
/**
* 默认xml导入订单工厂服务
@@ -146,9 +140,6 @@ public class DefaultXmlOrderImportFactory {
private List<PlateDO> plateDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
private List<OrderItemDO> orderItemDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
private List<PlateGoodDO> plateGoodDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
private List<OrderModelDO> orderModelDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
private List<OrderPartsRemark> orderPartsRemarks = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
// private List<PartsDO> partsDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
private static final String EMPTY_STRING = new String();
private static final BigDecimal BIG_ZERO = new BigDecimal(0);
@@ -194,10 +185,6 @@ public class DefaultXmlOrderImportFactory {
private PlateGoodMapper plateGoodMapper;
private OrderInputProcessor orderInputProcessor;
private PartsMapper partsMapper;
private String operatorName;
private CustomPlateNoGenerateService customPlateNoGenerateService;
@@ -219,8 +206,6 @@ public class DefaultXmlOrderImportFactory {
PlateMapper plateMapper,
OrderItemMapper orderItemMapper,
PlateGoodMapper plateGoodMapper,
OrderInputProcessor orderInputProcessor,
PartsMapper partsMapper,
CustomPlateNoGenerateService customPlateNoGenerateService) {
this.taskId = taskId;
this.orderDO = orderDO;
@@ -240,8 +225,6 @@ public class DefaultXmlOrderImportFactory {
this.plateMapper = plateMapper;
this.orderItemMapper = orderItemMapper;
this.plateGoodMapper = plateGoodMapper;
this.orderInputProcessor = orderInputProcessor;
this.partsMapper = partsMapper;
this.customPlateNoGenerateService = customPlateNoGenerateService;
batchId = (Long) snowFlakeGenerator.nextId(null);
}
@@ -299,9 +282,6 @@ public class DefaultXmlOrderImportFactory {
// 完成所有流程后更新任务为导入成功
updateTaskSuccess();
} catch (Exception e) {
// 数据库数据回滚,此时删除 ES 里的数据
orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PLATE_MODEL);
orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PARTS_REMARK_MODEL);
throw e;
} finally {
clearAll();
@@ -320,6 +300,7 @@ public class DefaultXmlOrderImportFactory {
String bodyCode = bodyDO.getBodyCode();
Map<String, OrderImportTempDataDO> bodyTempMap = roomBodyMap.get(roomCode);
int bodySort = 1;
if (MapUtil.isNotEmpty(bodyTempMap)) {
OrderImportTempDataDO bodyTempData = bodyTempMap.get(bodyCode);
if (ObjectUtil.isNotNull(bodyTempData)) {
@@ -329,10 +310,13 @@ public class DefaultXmlOrderImportFactory {
// 有房间没柜体,取房间id,后续操作增加房间下柜体
Map.Entry<String, OrderImportTempDataDO> anyBody = bodyTempMap.entrySet().iterator().next();
bodyDO.setInnerRoomId(anyBody.getValue().getInnerRoomId());
bodySort = bodyTempMap.size() + 1;
}
// 创建order_body
OrderBodyDO orderBodyDO = createOrderBodyDO(bodyDO);
// 设置序号
orderBodyDO.setMultiSort(bodySort);
orderBodyDOS.add(orderBodyDO);
// 批量插入orderGroup
orderInfoBatchInsertWithinThreshold(orderBodyMapper, orderBodyDOS, false);
@@ -511,6 +495,7 @@ public class DefaultXmlOrderImportFactory {
bodyBasePoint = roomBodyTempDataDO.getBodyPosition();
} else {
roomBodyTempDataDO.setPlateNum(roomBodyTempDataDO.getPlateNum() + 1);
roomBodyTempDataDO.setArea(roomBodyTempDataDO.getArea().add(area));
}
}
}
@@ -666,20 +651,18 @@ public class DefaultXmlOrderImportFactory {
orderModelDO.setOrganId(organId);
orderModelDO.setCreator(operatorName);
orderModelDO.setUpdater(operatorName);
orderModelDOS.add(orderModelDO);
// 创建造型数据
plateDO.setModelData(JsonUtils.zipString(JsonUtils.toJsonString(orderModelDO)));
// 批量插入order_plate
plateDOS.add(plateDO);
orderInfoBatchInsertWithinThreshold(plateMapper, plateDOS, false);
// 批量插入造型数据
orderModelsBatchInsertWithinThreshold(false);
}
}
);
//最后批量插入一次,避免最后一页小于BATCH_THRESHOLD_NUMBER漏插入
orderInfoBatchInsertWithinThreshold(plateMapper, plateDOS, true);
// 批量插入造型数据
orderModelsBatchInsertWithinThreshold(true);
// 所有自定义板编号生成完成后更新配置到订单
customPlateNoGenerateService.updateCustomPlateNoGenerateConfig(plateNoGenerateConfigVO, orderDO);
@@ -1271,8 +1254,6 @@ public class DefaultXmlOrderImportFactory {
// 最后批量插入一次,避免最后一页小于BATCH_THRESHOLD_NUMBER漏插入
orderInfoBatchInsertWithinThreshold(orderPartsMapper, orderPartsDOS, true);
orderInfoBatchInsertWithinThreshold(orderItemMapper, orderItemDOS, true);
// 批量插入配件备注
orderPartsRemarksBatchInsertWithinThreshold(true);
}
/**
@@ -1392,14 +1373,6 @@ public class DefaultXmlOrderImportFactory {
// 缓存配件
orderPartsDOMap.put(itemCode, orderPartsDO);
orderInfoBatchInsertWithinThreshold(orderPartsMapper, orderPartsDOS, false);
// 批量插入配件备注
orderPartsRemarks.add(OrderPartsRemark.builder()
.partsId(partId)
.batchId(batchId)
.orderId(orderId)
.remark(partRemarkXmlVOList.toString())
.build());
orderPartsRemarksBatchInsertWithinThreshold(false);
}
/**
@@ -1519,13 +1492,6 @@ public class DefaultXmlOrderImportFactory {
// 缓存配件
orderPartsDOMap.put(itemCode, orderPartsDO);
orderInfoBatchInsertWithinThreshold(orderPartsMapper, orderPartsDOS, false);
// 批量插入配件备注
orderPartsRemarks.add(OrderPartsRemark.builder()
.partsId(partId)
.orderId(orderId)
.remark(partRemarkXmlVOList.toString())
.build());
orderPartsRemarksBatchInsertWithinThreshold(false);
}
/**
@@ -1644,14 +1610,6 @@ public class DefaultXmlOrderImportFactory {
// 缓存配件
orderPartsDOMap.put(itemCode, orderPartsDO);
orderInfoBatchInsertWithinThreshold(orderPartsMapper, orderPartsDOS, false);
// 批量插入配件备注
orderPartsRemarks.add(OrderPartsRemark.builder()
.partsId(partId)
.batchId(batchId)
.orderId(orderId)
.remark(partRemarkXmlVOList.toString())
.build());
orderPartsRemarksBatchInsertWithinThreshold(false);
}
private void writeBackToOrders() {
@@ -1730,7 +1688,7 @@ public class DefaultXmlOrderImportFactory {
.width(NumberUtil.parseDouble(roomBoxXmlVO.getWidth()))
.height(NumberUtil.parseDouble(roomBoxXmlVO.getHeight()))
.depth(NumberUtil.parseDouble(roomBoxXmlVO.getLength()))
.multiNum(0)
.multiNum(1)
.unregularNum(0)
.filename("")
.remark("")
@@ -1802,39 +1760,6 @@ public class DefaultXmlOrderImportFactory {
}
}
/**
* 每达到阈值就批量插入一次订单造型数据和压缩数据
*
* @param isLast 是否最后一次插入,不是就需要清理list
*/
private void orderModelsBatchInsertWithinThreshold(boolean isLast) {
// 达到批量的阈值就做一次插入
if (CollUtil.isNotEmpty(orderModelDOS) && (orderModelDOS.size() >= BATCH_THRESHOLD_NUMBER || isLast)) {
// 保存订单造型数据
orderInputProcessor.batchSaveModel(orderModelDOS);
if (!isLast) {
// 存储完成清理 list
orderModelDOS.clear();
}
}
}
/**
* 每达到阈值就批量插入一次订单造型数据和压缩数据
*
* @param isLast 是否最后一次插入,不是就需要清理list
*/
private void orderPartsRemarksBatchInsertWithinThreshold(boolean isLast) {
// 达到批量的阈值就做一次插入
if (CollUtil.isNotEmpty(orderPartsRemarks) && (orderPartsRemarks.size() >= BATCH_THRESHOLD_NUMBER || isLast)) {
orderInputProcessor.batchSaveOrderPartsModel(orderPartsRemarks);
if (!isLast) {
// 存储完成清理 list
orderPartsRemarks = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
}
}
}
/**
* 长度面积数值按单位转换
*
@@ -1930,9 +1855,6 @@ public class DefaultXmlOrderImportFactory {
plateDOS.clear();
orderItemDOS.clear();
plateGoodDOS.clear();
orderModelDOS.clear();
orderPartsRemarks.clear();
// partsDOS.clear();
}
/**
@@ -1964,6 +1886,6 @@ public class DefaultXmlOrderImportFactory {
* 更新为导入成功
*/
private void updateTaskSuccess() {
orderImportTaskMapper.update(new LambdaUpdateWrapper<OrderImportTaskDO>().eq(OrderImportTaskDO::getId, taskId).set(OrderImportTaskDO::getImportStatus, OrderImportStatusEnum.IMPORT_SUCCESS.getStatus()));
// orderImportTaskMapper.update(new LambdaUpdateWrapper<OrderImportTaskDO>().eq(OrderImportTaskDO::getId, taskId).set(OrderImportTaskDO::getImportStatus, OrderImportStatusEnum.IMPORT_SUCCESS.getStatus()));
}
}
@@ -709,7 +709,7 @@ public class WebCadOrderImportAsyncFactory {
Long bodyId = (Long) snowFlakeGenerator.nextId(null);
orderBodyDO = OrderBodyDO.builder().id(bodyId).orderId(orderId).organId(organId)
.roomId(roomId).roomName(roomName).name(boxName).width(0.0).height(0.0)
.depth(0.0).multiNum(count).sort(i+1).plateNum(0).unregularNum(0).filename("").remark("").deleted(false).build();
.depth(0.0).multiNum(count).multiSort(i+1).plateNum(0).unregularNum(0).filename("").remark("").deleted(false).build();
orderBodyDO.setCreator(operatorName);
orderBodyDO.setUpdater(operatorName);
orderBodyDO.setCreateTime(now);
@@ -1478,7 +1478,7 @@ public class WebCadOrderImportAsyncFactory {
Long bodyId = (Long) snowFlakeGenerator.nextId(null);
orderBodyDO = OrderBodyDO.builder().id(bodyId).orderId(orderId).organId(organId)
.roomId(roomId).roomName(roomName).name(bodyName).width(0.0).height(0.0)
.depth(0.0).multiNum(1).sort(1).plateNum(0).unregularNum(0).filename("").remark("").deleted(false).build();
.depth(0.0).multiNum(1).multiSort(1).plateNum(0).unregularNum(0).filename("").remark("").deleted(false).build();
orderBodyDO.setCreator(operatorName);
orderBodyDO.setUpdater(operatorName);
orderBodyDO.setCreateTime(now);
@@ -2667,7 +2667,7 @@ public class WebCadOrderImportAsyncFactory {
ps.setString(18, orderBodyDO.getCreator());
ps.setString(19, orderBodyDO.getUpdater());
ps.setLong(20, cadViewFileId);
ps.setInt(21, orderBodyDO.getSort());
ps.setInt(21, orderBodyDO.getMultiSort());
}
@Override
@@ -893,7 +893,7 @@ public class WebCadOrderImportFactory {
Long bodyId = (Long) snowFlakeGenerator.nextId(null);
OrderBodyDO orderBodyDO = OrderBodyDO.builder().id(bodyId).orderId(orderId).organId(organId)
.roomId(roomId).roomName(roomName).name(boxName).width(0.0).height(0.0)
.depth(0.0).multiNum(count).sort(i + 1).plateNum(0).unregularNum(0).filename("").remark("").deleted(false).build();
.depth(0.0).multiNum(count).multiSort(i + 1).plateNum(0).unregularNum(0).filename("").remark("").deleted(false).build();
orderBodyDO.setCreator(operatorName);
orderBodyDO.setUpdater(operatorName);
orderBodyDO.setCreateTime(now);
@@ -1682,7 +1682,7 @@ public class WebCadOrderImportFactory {
Long bodyId = (Long) snowFlakeGenerator.nextId(null);
orderBodyDO = OrderBodyDO.builder().id(bodyId).orderId(orderId).organId(organId)
.roomId(roomId).roomName(roomName).name(bodyName).width(0.0).height(0.0)
.depth(0.0).multiNum(1).sort(1).plateNum(0).unregularNum(0).filename("").remark("").deleted(false).build();
.depth(0.0).multiNum(1).multiSort(1).plateNum(0).unregularNum(0).filename("").remark("").deleted(false).build();
orderBodyDO.setCreator(operatorName);
orderBodyDO.setUpdater(operatorName);
orderBodyDO.setCreateTime(now);
@@ -2443,7 +2443,7 @@ public class WebCadOrderImportFactory {
ps.setString(18, orderBodyDO.getCreator());
ps.setString(19, orderBodyDO.getUpdater());
ps.setLong(20, cadViewFileId);
ps.setInt(21, orderBodyDO.getSort());
ps.setInt(21, orderBodyDO.getMultiSort());
}
@Override