diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/FactoryOrderListener.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/FactoryOrderListener.java index ab380cddb..3302a2229 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/FactoryOrderListener.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/FactoryOrderListener.java @@ -85,20 +85,24 @@ public class FactoryOrderListener { List entities = new ArrayList<>(); List crmSos = new ArrayList<>(); List sns = new ArrayList<>(); + List ships = new ArrayList<>(); for (DeliveryNoteVO vo : vos) { // CRM单号 + SN 唯一 crmSos.add(vo.getCRM_SO()); sns.add(vo.getSN()); + ships.add(vo.getSHIPMENT_SPLIT_NO()); } Map entityMap = new HashMap<>(); + Map entityOrderSnMap = new HashMap<>(); if (CollUtil.isNotEmpty(crmSos) && CollUtil.isNotEmpty(sns)) { List existingEntities = deliveryNoteService.list(Wrappers.lambdaQuery() - .select(DeliveryNoteEntity::getId,DeliveryNoteEntity::getCrmSo,DeliveryNoteEntity::getSn) + .select(DeliveryNoteEntity::getId, DeliveryNoteEntity::getCrmSo, DeliveryNoteEntity::getSn, DeliveryNoteEntity::getShipmentSplitNo) .in(DeliveryNoteEntity::getCrmSo, crmSos) .in(DeliveryNoteEntity::getSn, sns)); if (CollUtil.isNotEmpty(existingEntities)) { for (DeliveryNoteEntity existingEntity : existingEntities) { - entityMap.put(existingEntity.getCrmSo() + existingEntity.getSn(), existingEntity.getId()); + entityMap.put(existingEntity.getCrmSo() + existingEntity.getSn() + existingEntity.getShipmentSplitNo(), existingEntity.getId()); + entityOrderSnMap.put(existingEntity.getCrmSo() + existingEntity.getSn(), existingEntity.getId()); } } } @@ -106,7 +110,13 @@ public class FactoryOrderListener { // CRM单号 + SN 唯一 String crmSo = vo.getCRM_SO(); String sn = vo.getSN(); - if (entityMap.containsKey(crmSo + sn)) { + String shipmentSplitNo = vo.getSHIPMENT_SPLIT_NO(); + // 过滤重复数据 车次号+订单+包条只能存在一条 + if (entityMap.containsKey(crmSo + sn + shipmentSplitNo)) { + log.info("CRM单号:{} 与SN:{} 与shipmentSplitNo:{} 订单+包件+车次号重复,logId: {}", crmSo, sn, shipmentSplitNo, logId); + continue; + } + if (entityOrderSnMap.containsKey(crmSo + sn)) { log.info("CRM单号:{} 与SN:{} 订单+包件重复,logId: {}", crmSo, sn, logId); sn = sn + "-" + DateUtil.format(DateUtil.date(), "MMdd") + "-补"; } @@ -119,20 +129,10 @@ public class FactoryOrderListener { entity.setEndingCustomerTel(vo.getENDING_CUSTOMER_TEL()); entity.setCrmSo(vo.getCRM_SO()); entity.setSpace(vo.getSPACE()); - // 原始单号- 老系统处理完之后推的暂存单的包条码 - // if(sn.startsWith("OLO")){ - // String[] split = sn.split("-"); - // if(ArrayUtils.isNotEmpty(split)){ - // entity.setReserve1(split[0].substring(3)); - // } - // } else { - // entity.setReserve1(sn); - // } entity.setSn(sn); entity.setMaterialCategory(vo.getMATERIAL_CATEGORY()); entity.setSnVolume(vo.getSN_VOLUME()); entity.setSnWeight(vo.getSN_WEIGHT()); - // entity.setQty("1"); entity.setQty(vo.getQTY()); entity.setMaterialDesc(vo.getMATERIAL_DESC()); entity.setSumPrice(vo.getSUM_PRICE());