diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/ordermodel/OrderModelDO.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/ordermodel/OrderModelDO.java index c78b7cc79..ab78078be 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/ordermodel/OrderModelDO.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/ordermodel/OrderModelDO.java @@ -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; diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/elasticsearch/OrderPartsRemark.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/elasticsearch/OrderPartsRemark.java index b7aca559f..9c37b3d1c 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/elasticsearch/OrderPartsRemark.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/elasticsearch/OrderPartsRemark.java @@ -20,6 +20,9 @@ public class OrderPartsRemark extends ESDocument { @Schema(description = "生产单号") private Long orderId; + @Schema(description = "生产单号") + private Long batchId; + @Schema(description = "备注") private String remark; diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/order/OrderInputProcessor.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/order/OrderInputProcessor.java index 9e36b19c6..dab80f2d3 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/order/OrderInputProcessor.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/order/OrderInputProcessor.java @@ -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); + } + } + /** * 保存生产单配件备注数据 * diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/DefaultExcelOrderImportFactory.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/DefaultExcelOrderImportFactory.java index 348c585c9..ba77d25b5 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/DefaultExcelOrderImportFactory.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/DefaultExcelOrderImportFactory.java @@ -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()) diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/DefaultXmlOrderImportFactory.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/DefaultXmlOrderImportFactory.java index 43864d087..c1582a426 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/DefaultXmlOrderImportFactory.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/DefaultXmlOrderImportFactory.java @@ -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> 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()); diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportFactory.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportFactory.java index e63e08988..2c7517243 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportFactory.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportFactory.java @@ -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();