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") @Schema(description = "小板id")
private Long plateId; private Long plateId;
@Schema(description = "批次id")
private Long batchId;
@Schema(description = "大板的实际ID") @Schema(description = "大板的实际ID")
private String goodsId; private String goodsId;
@@ -20,6 +20,9 @@ public class OrderPartsRemark extends ESDocument {
@Schema(description = "生产单号") @Schema(description = "生产单号")
private Long orderId; private Long orderId;
@Schema(description = "生产单号")
private Long batchId;
@Schema(description = "备注") @Schema(description = "备注")
private String remark; private String remark;
@@ -45,6 +45,8 @@ public class OrderInputProcessor {
private static final String FIELD_ORDER_ID = "orderId"; 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; private Long organId;
// 批次id
private Long batchId;
private Long orderId; private Long orderId;
private Long taskId; private Long taskId;
@@ -193,6 +196,7 @@ public class DefaultExcelOrderImportFactory {
this.orderInputProcessor = orderInputProcessor; this.orderInputProcessor = orderInputProcessor;
this.partsMapper = partsMapper; this.partsMapper = partsMapper;
this.customPlateNoGenerateService = customPlateNoGenerateService; this.customPlateNoGenerateService = customPlateNoGenerateService;
batchId = (Long) snowFlakeGenerator.nextId(null);
} }
/** /**
@@ -226,8 +230,8 @@ public class DefaultExcelOrderImportFactory {
updateTaskSuccess(); updateTaskSuccess();
} catch (Exception e) { } catch (Exception e) {
// 数据库数据回滚,此时删除 ES 里的数据 // 数据库数据回滚,此时删除 ES 里的数据
orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL); orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PLATE_MODEL);
orderInputProcessor.deleteByOrderId(orderId, ORDER_PARTS_REMARK_MODEL); orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PARTS_REMARK_MODEL);
throw e; throw e;
} finally { } finally {
// 解析结束后清理所有list // 解析结束后清理所有list
@@ -466,8 +470,12 @@ public class DefaultExcelOrderImportFactory {
} }
// 配件备注信息存储 // 配件备注信息存储
OrderPartsRemark orderPartsRemark = OrderPartsRemark.builder().partsId(partId).orderId(orderId) OrderPartsRemark orderPartsRemark = OrderPartsRemark.builder()
.remark(remark.toString()).build(); .partsId(partId)
.batchId(batchId)
.orderId(orderId)
.remark(remark.toString())
.build();
orderPartsRemark.setCreator(operatorName); orderPartsRemark.setCreator(operatorName);
orderPartsRemark.setUpdater(operatorName); orderPartsRemark.setUpdater(operatorName);
orderPartsRemark.setOrganId(organId); orderPartsRemark.setOrganId(organId);
@@ -786,6 +794,7 @@ public class DefaultExcelOrderImportFactory {
// 批量插入CAD板件信息 // 批量插入CAD板件信息
OrderModelDO orderModelDO = OrderModelDO.builder() OrderModelDO orderModelDO = OrderModelDO.builder()
.orderId(orderId) .orderId(orderId)
.batchId(batchId)
.plateId(plateId) .plateId(plateId)
.typographicFace(Integer.valueOf(typographyDTO.getValue())) .typographicFace(Integer.valueOf(typographyDTO.getValue()))
.texture(plateDO.getTexture()) .texture(plateDO.getTexture())
@@ -94,8 +94,6 @@ import com.cf.imes.module.plan.service.order.OrderInputProcessor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.ResultContext; import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.ResultHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -128,6 +126,9 @@ public class DefaultXmlOrderImportFactory {
private Long organId; private Long organId;
// 批次id
private Long batchId;
private Long orderId; private Long orderId;
private OrderDO orderDO; private OrderDO orderDO;
@@ -234,6 +235,7 @@ public class DefaultXmlOrderImportFactory {
this.orderInputProcessor = orderInputProcessor; this.orderInputProcessor = orderInputProcessor;
this.partsMapper = partsMapper; this.partsMapper = partsMapper;
this.customPlateNoGenerateService = customPlateNoGenerateService; this.customPlateNoGenerateService = customPlateNoGenerateService;
batchId = (Long) snowFlakeGenerator.nextId(null);
} }
private Map<String, Map<String, OrderImportTempDataDO>> roomBodyMap = new HashMap<>(); // 房间code: (柜体code:柜体数据) private Map<String, Map<String, OrderImportTempDataDO>> roomBodyMap = new HashMap<>(); // 房间code: (柜体code:柜体数据)
@@ -286,8 +288,8 @@ public class DefaultXmlOrderImportFactory {
updateTaskSuccess(); updateTaskSuccess();
} catch (Exception e) { } catch (Exception e) {
// 数据库数据回滚,此时删除 ES 里的数据 // 数据库数据回滚,此时删除 ES 里的数据
orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL); orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PLATE_MODEL);
orderInputProcessor.deleteByOrderId(orderId, ORDER_PARTS_REMARK_MODEL); orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PARTS_REMARK_MODEL);
throw e; throw e;
} finally { } finally {
clearAll(); clearAll();
@@ -596,6 +598,7 @@ public class DefaultXmlOrderImportFactory {
// 板件es数据 // 板件es数据
OrderModelDO orderModelDO = OrderModelDO.builder() OrderModelDO orderModelDO = OrderModelDO.builder()
.orderId(orderId) .orderId(orderId)
.batchId(batchId)
.plateId(plateId) .plateId(plateId)
.has2DModel(false) .has2DModel(false)
.has3DModel(false) .has3DModel(false)
@@ -1371,6 +1374,7 @@ public class DefaultXmlOrderImportFactory {
// 批量插入配件备注 // 批量插入配件备注
orderPartsRemarks.add(OrderPartsRemark.builder() orderPartsRemarks.add(OrderPartsRemark.builder()
.partsId(partId) .partsId(partId)
.batchId(batchId)
.orderId(orderId) .orderId(orderId)
.remark(partRemarkXmlVOList.toString()) .remark(partRemarkXmlVOList.toString())
.build()); .build());
@@ -1622,6 +1626,7 @@ public class DefaultXmlOrderImportFactory {
// 批量插入配件备注 // 批量插入配件备注
orderPartsRemarks.add(OrderPartsRemark.builder() orderPartsRemarks.add(OrderPartsRemark.builder()
.partsId(partId) .partsId(partId)
.batchId(batchId)
.orderId(orderId) .orderId(orderId)
.remark(partRemarkXmlVOList.toString()) .remark(partRemarkXmlVOList.toString())
.build()); .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_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_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.enums.ErrorCodeConstants.WEBCAD_ORDER_NOT_EXISTS_ERROR;
import static com.cf.imes.module.plan.service.order.OrderInputProcessor.ORDER_PLATE_MODEL;
/** /**
* webcad导入生产单工厂服务 * webcad导入生产单工厂服务
@@ -118,6 +119,9 @@ public class WebCadOrderImportFactory {
private Long organId; private Long organId;
// 批次id
private Long batchId;
private Long orderId; private Long orderId;
private OrderDO orderDO; private OrderDO orderDO;
@@ -189,6 +193,7 @@ public class WebCadOrderImportFactory {
this.transactionManager = transactionManager; this.transactionManager = transactionManager;
operatorName = SecurityFrameworkUtils.getLoginUser().getNickname(); operatorName = SecurityFrameworkUtils.getLoginUser().getNickname();
now = LocalDateTime.now(); now = LocalDateTime.now();
batchId = (Long) snowFlakeGenerator.nextId(null);
} }
public void analyzeTempData(WebCadDataReqVO webCadDataReqVO) { public void analyzeTempData(WebCadDataReqVO webCadDataReqVO) {
@@ -218,6 +223,8 @@ public class WebCadOrderImportFactory {
saveData(); saveData();
} catch (Exception e) { } catch (Exception e) {
// 数据库数据回滚,此时删除 ES 里的数据
orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PLATE_MODEL);
throw e; throw e;
} finally { } finally {
// 清理数据 // 清理数据
@@ -594,6 +601,7 @@ public class WebCadOrderImportFactory {
OrderModelDO orderModelDO = OrderModelDO.builder() OrderModelDO orderModelDO = OrderModelDO.builder()
.orderId(orderId) .orderId(orderId)
.plateId(plateId) .plateId(plateId)
.batchId(batchId)
.boardData(JSON.toJSONString(boardData)) .boardData(JSON.toJSONString(boardData))
.pointInfo(JSON.toJSONString(block.getPointInfo())) .pointInfo(JSON.toJSONString(block.getPointInfo()))
.build(); .build();