plan微服务生产单导入:1、orderModels、orderPartsRemark新增批次batchId;2、补充es数据回滚基于批次删除;

This commit is contained in:
gaoqr
2025-03-14 15:45:30 +08:00
parent 5ea85530ea
commit 1b02e086c0
6 changed files with 60 additions and 8 deletions
@@ -33,6 +33,9 @@ public class OrderModelDO extends ESDocument {
@Schema(description = "小板id")
private Long plateId;
@Schema(description = "批次id")
private Long batchId;
@Schema(description = "大板的实际ID")
private String goodsId;
@@ -20,6 +20,9 @@ public class OrderPartsRemark extends ESDocument {
@Schema(description = "生产单号")
private Long orderId;
@Schema(description = "生产单号")
private Long batchId;
@Schema(description = "备注")
private String remark;
@@ -45,6 +45,8 @@ public class OrderInputProcessor {
private static final String FIELD_ORDER_ID = "orderId";
private static final String FIELD_BATCH_ID = "batchId";
/**
* 保存生产单造型数据
*
@@ -80,6 +82,28 @@ public class OrderInputProcessor {
}
}
/**
* 按批次删除生产单OrderModels
*
* @param orderId 生产单id
* @param batchId 批次id
* @param index
*/
public void deleteByOrderIdBatch(Long orderId, Long batchId, String index) {
DeleteByQueryRequest.Builder builder = new DeleteByQueryRequest.Builder();
builder.index(index);
builder.query(q -> q.term(t -> t.field(FIELD_ORDER_ID).value(orderId)));
builder.query(q -> q.term(t -> t.field(FIELD_BATCH_ID).value(batchId)));
try {
DeleteByQueryResponse response = elasticsearchClient.deleteByQuery(builder.build());
log.info("Deleted {} documents with planId {}", response.deleted(), orderId);
} catch (IOException | ElasticsearchException e) {
log.error("Error deleting documents with planId {}: {}", orderId, e.getMessage());
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
}
/**
* 保存生产单配件备注数据
*
@@ -89,6 +89,9 @@ public class DefaultExcelOrderImportFactory {
private Long organId;
// 批次id
private Long batchId;
private Long orderId;
private Long taskId;
@@ -193,6 +196,7 @@ public class DefaultExcelOrderImportFactory {
this.orderInputProcessor = orderInputProcessor;
this.partsMapper = partsMapper;
this.customPlateNoGenerateService = customPlateNoGenerateService;
batchId = (Long) snowFlakeGenerator.nextId(null);
}
/**
@@ -226,8 +230,8 @@ public class DefaultExcelOrderImportFactory {
updateTaskSuccess();
} catch (Exception e) {
// 数据库数据回滚,此时删除 ES 里的数据
orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL);
orderInputProcessor.deleteByOrderId(orderId, ORDER_PARTS_REMARK_MODEL);
orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PLATE_MODEL);
orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PARTS_REMARK_MODEL);
throw e;
} finally {
// 解析结束后清理所有list
@@ -466,8 +470,12 @@ public class DefaultExcelOrderImportFactory {
}
// 配件备注信息存储
OrderPartsRemark orderPartsRemark = OrderPartsRemark.builder().partsId(partId).orderId(orderId)
.remark(remark.toString()).build();
OrderPartsRemark orderPartsRemark = OrderPartsRemark.builder()
.partsId(partId)
.batchId(batchId)
.orderId(orderId)
.remark(remark.toString())
.build();
orderPartsRemark.setCreator(operatorName);
orderPartsRemark.setUpdater(operatorName);
orderPartsRemark.setOrganId(organId);
@@ -786,6 +794,7 @@ public class DefaultExcelOrderImportFactory {
// 批量插入CAD板件信息
OrderModelDO orderModelDO = OrderModelDO.builder()
.orderId(orderId)
.batchId(batchId)
.plateId(plateId)
.typographicFace(Integer.valueOf(typographyDTO.getValue()))
.texture(plateDO.getTexture())
@@ -94,8 +94,6 @@ 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;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@@ -128,6 +126,9 @@ public class DefaultXmlOrderImportFactory {
private Long organId;
// 批次id
private Long batchId;
private Long orderId;
private OrderDO orderDO;
@@ -234,6 +235,7 @@ public class DefaultXmlOrderImportFactory {
this.orderInputProcessor = orderInputProcessor;
this.partsMapper = partsMapper;
this.customPlateNoGenerateService = customPlateNoGenerateService;
batchId = (Long) snowFlakeGenerator.nextId(null);
}
private Map<String, Map<String, OrderImportTempDataDO>> roomBodyMap = new HashMap<>(); // 房间code: (柜体code:柜体数据)
@@ -286,8 +288,8 @@ public class DefaultXmlOrderImportFactory {
updateTaskSuccess();
} catch (Exception e) {
// 数据库数据回滚,此时删除 ES 里的数据
orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL);
orderInputProcessor.deleteByOrderId(orderId, ORDER_PARTS_REMARK_MODEL);
orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PLATE_MODEL);
orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PARTS_REMARK_MODEL);
throw e;
} finally {
clearAll();
@@ -596,6 +598,7 @@ public class DefaultXmlOrderImportFactory {
// 板件es数据
OrderModelDO orderModelDO = OrderModelDO.builder()
.orderId(orderId)
.batchId(batchId)
.plateId(plateId)
.has2DModel(false)
.has3DModel(false)
@@ -1371,6 +1374,7 @@ public class DefaultXmlOrderImportFactory {
// 批量插入配件备注
orderPartsRemarks.add(OrderPartsRemark.builder()
.partsId(partId)
.batchId(batchId)
.orderId(orderId)
.remark(partRemarkXmlVOList.toString())
.build());
@@ -1622,6 +1626,7 @@ public class DefaultXmlOrderImportFactory {
// 批量插入配件备注
orderPartsRemarks.add(OrderPartsRemark.builder()
.partsId(partId)
.batchId(batchId)
.orderId(orderId)
.remark(partRemarkXmlVOList.toString())
.build());
@@ -72,6 +72,7 @@ import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPO
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_SAVEDATA_ERROR;
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_SEAL_NOT_EXIST_ERROR;
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_NOT_EXISTS_ERROR;
import static com.cf.imes.module.plan.service.order.OrderInputProcessor.ORDER_PLATE_MODEL;
/**
* webcad导入生产单工厂服务
@@ -118,6 +119,9 @@ public class WebCadOrderImportFactory {
private Long organId;
// 批次id
private Long batchId;
private Long orderId;
private OrderDO orderDO;
@@ -189,6 +193,7 @@ public class WebCadOrderImportFactory {
this.transactionManager = transactionManager;
operatorName = SecurityFrameworkUtils.getLoginUser().getNickname();
now = LocalDateTime.now();
batchId = (Long) snowFlakeGenerator.nextId(null);
}
public void analyzeTempData(WebCadDataReqVO webCadDataReqVO) {
@@ -218,6 +223,8 @@ public class WebCadOrderImportFactory {
saveData();
} catch (Exception e) {
// 数据库数据回滚,此时删除 ES 里的数据
orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PLATE_MODEL);
throw e;
} finally {
// 清理数据
@@ -594,6 +601,7 @@ public class WebCadOrderImportFactory {
OrderModelDO orderModelDO = OrderModelDO.builder()
.orderId(orderId)
.plateId(plateId)
.batchId(batchId)
.boardData(JSON.toJSONString(boardData))
.pointInfo(JSON.toJSONString(block.getPointInfo()))
.build();