From 3e7af65f43b869ccc52f2b84fed8c3fcae1c775a Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Tue, 29 Oct 2024 00:08:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(all):=20=E4=BF=AE=E6=94=B9=E6=88=91?= =?UTF-8?q?=E4=B9=90=E5=9B=9E=E4=BC=A0=E8=8A=82=E7=82=B9=E6=80=BB=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 按照最新的回传逻辑调整我乐的节点回传 --- .../olo/entity/FactoryNodePushEntity.java | 117 +++++++++++++ .../olo/enums/FactoryNodeEnums.java | 51 ++++-- .../olo/enums/NodeMappingEnums.java | 17 +- .../factorydata/olo/enums/NodeNeedEnums.java | 10 +- .../factorydata/olo/enums/SiteLevelEnums.java | 25 +++ .../olo/mapper/FactoryNodePushMapper.java | 16 ++ .../olo/mapper/FactoryNodePushMapper.xml | 5 + .../olo/mq/FactoryOrderListener.java | 30 ++-- .../olo/mq/NodeDataPushListener.java | 154 ++++++++++++++---- .../olo/service/FactoryNodePushService.java | 14 ++ .../service/impl/DeliveryNoteServiceImpl.java | 99 ++++++----- .../impl/FactoryNodePushServiceImpl.java | 22 +++ 12 files changed, 437 insertions(+), 123 deletions(-) create mode 100644 blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/entity/FactoryNodePushEntity.java create mode 100644 blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/SiteLevelEnums.java create mode 100644 blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryNodePushMapper.java create mode 100644 blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryNodePushMapper.xml create mode 100644 blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/FactoryNodePushService.java create mode 100644 blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/impl/FactoryNodePushServiceImpl.java diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/entity/FactoryNodePushEntity.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/entity/FactoryNodePushEntity.java new file mode 100644 index 000000000..a71463c4a --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/entity/FactoryNodePushEntity.java @@ -0,0 +1,117 @@ +package com.logpm.factorydata.olo.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.springblade.core.mp.base.BaseEntity; + +/** + * 节点数据推送成功数据 + * + * @Author zqb + * @Date 2024/3/26 + **/ +@Builder +@Data +@TableName("olo_factory_node_push") +@ApiModel(value = "节点数据推送成功数据", description = "节点数据推送成功数据") +@EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@AllArgsConstructor +public class FactoryNodePushEntity extends BaseEntity { + + /** + * 预留1 + */ + @ApiModelProperty(value = "预留1") + private String reserve1; + /** + * 预留2 + */ + @ApiModelProperty(value = "预留2") + private String reserve2; + /** + * 预留3 + */ + @ApiModelProperty(value = "预留3") + private String reserve3; + /** + * 预留4 + */ + @ApiModelProperty(value = "预留4") + private String reserve4; + /** + * 预留5 + */ + @ApiModelProperty(value = "预留5") + private String reserve5; + + /** + * 作业仓库 + */ + @ApiModelProperty(value = "作业仓库") + private String warehouse; + /** + * 订单号 + */ + @ApiModelProperty(value = "订单号") + private String orderCode; + /** + * 运单号 + */ + @ApiModelProperty(value = "运单号") + private String waybillCode; + /** + * 发货分单号 + */ + @ApiModelProperty(value = "发货分单号") + private String shipmentSpitCode; + /** + * 发货单号 + */ + @ApiModelProperty(value = "发货单号") + private String shipmentCode; + /** + * 包条码 + */ + @ApiModelProperty(value = "包条码") + private String packageCode; + /** + * 类型 + */ + @ApiModelProperty(value = "类型(包件到达,包件到货,包件发运,包件配送, 包件签收)") + private String type; + /** + * 类型码 + */ + @ApiModelProperty(value = "类型码(包件到达 1,包件到货 2,包件发运 3,包件配送 4, 包件签收 5)") + private Integer typeCode; + /** + * 发送状态 + */ + @ApiModelProperty(value = "发送状态(0:成功,-1:失败,1:取消)") + private String sendStatus; + /** + * url + */ + @ApiModelProperty(value = "url") + private String sendUrl; + /** + * 内容 + */ + @ApiModelProperty(value = "内容") + private String content; + /** + * 返回值 + */ + @ApiModelProperty(value = "返回值") + private String resultContent; + + + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/FactoryNodeEnums.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/FactoryNodeEnums.java index e77ba3ca2..72d7b0a77 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/FactoryNodeEnums.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/FactoryNodeEnums.java @@ -1,7 +1,8 @@ package com.logpm.factorydata.olo.enums; import lombok.Getter; -import org.springblade.common.model.IDict; + +import java.io.Serializable; /** * 工厂节点枚举 @@ -10,22 +11,42 @@ import org.springblade.common.model.IDict; * @create 2024-03-20 15:19 */ @Getter -public enum FactoryNodeEnums implements IDict { - - /** 已入库 */ - ALREADY_IN_STOCK(101020, "已入库"), - /** 已出库 */ - SHIPPED(103020, "已出库"), - /** 已发车 */ - DISPATCHED(103040, "已发车"), - /** 配送 */ - DISTRIBUTION(302010, "配送"), - /** 已签收 */ - SIGNED_FOR(303010, "已签收"), +public enum FactoryNodeEnums implements Serializable { + + ARRIVAL(1, "包件到达分拨中心", "已到达", 0), + DELIVERY(2, "包件到货", "已入库", 0), + SHIPMENT(3, "包件发运", "已发运", 1), + DISTRIBUTION(4, "包件配送", "配送中", 1), + SIGN_FOR(5, "包件签收", "已签收", 1), + ; + private Integer code; + private String value; + private String status; + /** + * 0:收货 1:发货 + */ + private Integer receiveOrSend; + + FactoryNodeEnums(Integer code, String value, String status, Integer receiveOrSend) { + this.code = code; + this.value = value; + this.status = status; + this.receiveOrSend = receiveOrSend; + } + + public Integer getSiteLecel(Boolean isArrival){ + if(isArrival){ + return SiteLevelEnums.DISTRIBUTION_CENTER.getCode(); + } + if(this.getCode() == 2 || this.getCode() == 3){ + return SiteLevelEnums.OUTLET.getCode(); + } + if(this.getCode() == 5){ + return SiteLevelEnums.SIGN_FOR.getCode(); - FactoryNodeEnums(Integer code, String text) { - init(code, text); + } + return SiteLevelEnums.OTHER.getCode(); } } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeMappingEnums.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeMappingEnums.java index ae1c519f9..f672c333f 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeMappingEnums.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeMappingEnums.java @@ -13,20 +13,17 @@ import org.springblade.common.constant.WorkNodeEnums; @Getter public enum NodeMappingEnums { - INITIAL_WAREHOUSE_ENTRY(FactoryNodeEnums.ALREADY_IN_STOCK, WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY, 1), - UNLOAD_INCOMING_WAREHOUSE(FactoryNodeEnums.ALREADY_IN_STOCK, WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE, 1), + ARRIVAL(FactoryNodeEnums.DELIVERY, WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE, 1), + DELIVERY(FactoryNodeEnums.ARRIVAL, WorkNodeEnums.TRANSFER_WAREHOUSE_UNLOADING, 1), + END_WAREHOUSE_UNLOADING(FactoryNodeEnums.ARRIVAL, WorkNodeEnums.END_WAREHOUSE_UNLOADING, 1), - INITIAL_WAREHOUSE_LOADING(FactoryNodeEnums.SHIPPED, WorkNodeEnums.INITIAL_WAREHOUSE_LOADING, 1), - - INITIAL_WAREHOUSE_DEPART(FactoryNodeEnums.DISPATCHED, WorkNodeEnums.INITIAL_WAREHOUSE_DEPART, 1), - TRANSFER_WAREHOUSE_DEPART(FactoryNodeEnums.DISPATCHED, WorkNodeEnums.TRANSFER_WAREHOUSE_DEPART, 1), - TRIPARTITE_TRANSFER_DEPART(FactoryNodeEnums.DISPATCHED, WorkNodeEnums.TRIPARTITE_TRANSFER_DEPART, 1), + TRANSFER_WAREHOUSE_DEPART(FactoryNodeEnums.SHIPMENT, WorkNodeEnums.TRANSFER_WAREHOUSE_DEPART, 1), DISTRIBUTION_LOADING(FactoryNodeEnums.DISTRIBUTION, WorkNodeEnums.DISTRIBUTION_LOADING, 1), - SIGN_DIRECT_SHIPPER(FactoryNodeEnums.SIGNED_FOR, WorkNodeEnums.SIGN_DIRECT_SHIPPER, 1), - SIGN_TRIPARTITE_TRANSFER_DEPART(FactoryNodeEnums.SIGNED_FOR, WorkNodeEnums.SIGN_TRIPARTITE_TRANSFER_DEPART, 1), - CLERK_REVIEW(FactoryNodeEnums.SIGNED_FOR, WorkNodeEnums.CLERK_REVIEW, 1), + SIGN_DIRECT_SHIPPER(FactoryNodeEnums.SIGN_FOR, WorkNodeEnums.SIGN_DIRECT_SHIPPER, 1), + SIGN_TRIPARTITE_TRANSFER_DEPART(FactoryNodeEnums.SIGN_FOR, WorkNodeEnums.SIGN_TRIPARTITE_TRANSFER_DEPART, 1), + CLERK_REVIEW(FactoryNodeEnums.SIGN_FOR, WorkNodeEnums.CLERK_REVIEW, 1), ; /** diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeNeedEnums.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeNeedEnums.java index ad0f0ae85..d75b8bbe0 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeNeedEnums.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeNeedEnums.java @@ -13,14 +13,16 @@ import java.io.Serializable; @Getter public enum NodeNeedEnums implements Serializable { - INITIAL_WAREHOUSE_ENTRY(101020, "始发仓入库"), + // INITIAL_WAREHOUSE_ENTRY(101020, "始发仓入库"), UNLOAD_INCOMING_WAREHOUSE(105010,"卸车入库"), + TRANSFER_WAREHOUSE_UNLOADING(105020, "卸车确认"), + END_WAREHOUSE_UNLOADING(105040, "末端仓卸车确认"), - INITIAL_WAREHOUSE_LOADING(103020, "装车"), + // INITIAL_WAREHOUSE_LOADING(103020, "装车"), - INITIAL_WAREHOUSE_DEPART(103040, "始发仓发车"), + // INITIAL_WAREHOUSE_DEPART(103040, "始发仓发车"), TRANSFER_WAREHOUSE_DEPART(103080, "网点发车"), - TRIPARTITE_TRANSFER_DEPART(104010, "三方中转发车"), + // TRIPARTITE_TRANSFER_DEPART(104010, "三方中转发车"), /** * 配送装车 */ diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/SiteLevelEnums.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/SiteLevelEnums.java new file mode 100644 index 000000000..6baf4a970 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/SiteLevelEnums.java @@ -0,0 +1,25 @@ +package com.logpm.factorydata.olo.enums; + +import lombok.Getter; +import org.springblade.common.model.IDict; + +/** + * 网点级别 + * + * @author zhaoqiaobo + * @create 2024-03-20 15:19 + */ +@Getter +public enum SiteLevelEnums implements IDict { + + DISTRIBUTION_CENTER(1, "分拨中心"), + OUTLET(2, "网点"), + OTHER(3, "其他"), + SIGN_FOR(4, "客户签收"), + ; + + SiteLevelEnums(Integer code, String text) { + init(code, text); + } + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryNodePushMapper.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryNodePushMapper.java new file mode 100644 index 000000000..fdceb54fa --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryNodePushMapper.java @@ -0,0 +1,16 @@ +package com.logpm.factorydata.olo.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.logpm.factorydata.olo.entity.FactoryNodePushEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 工厂订单日志 mapper + * + * @author zqb + * @since 2024-03-26 + */ +@Mapper +public interface FactoryNodePushMapper extends BaseMapper { + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryNodePushMapper.xml b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryNodePushMapper.xml new file mode 100644 index 000000000..53f952f5c --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryNodePushMapper.xml @@ -0,0 +1,5 @@ + + + + + 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 6563cb5d5..6261c84cd 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 @@ -1,39 +1,24 @@ package com.logpm.factorydata.olo.mq; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.convert.Convert; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; -import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.URLUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONConfig; -import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.logpm.factorydata.base.feign.IFactoryDataBaseClient; -import com.logpm.factorydata.base.vo.FactoryWarehouseBindVO; -import com.logpm.factorydata.enums.BrandEnums; import com.logpm.factorydata.enums.SaxStatusEnums; -import com.logpm.factorydata.feign.IFactoryDataClient; import com.logpm.factorydata.olo.entity.DeliveryNoteEntity; import com.logpm.factorydata.olo.entity.FactoryOrderLogEntity; import com.logpm.factorydata.olo.service.DeliveryNoteService; import com.logpm.factorydata.olo.service.FactoryOrderLogService; import com.logpm.factorydata.olo.vo.DeliveryNoteVO; -import com.logpm.factorydata.vo.SendMsg; -import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity; -import com.logpm.trunkline.entity.TrunklineAdvanceEntity; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springblade.common.annotations.LogpmAsync; -import org.springblade.common.constant.HttpConstants; import org.springblade.common.constant.factorydata.FactoryDataConstants; -import org.springblade.core.redis.cache.BladeRedis; -import org.springblade.core.tool.api.R; import org.springframework.amqp.core.ExchangeTypes; import org.springframework.amqp.rabbit.annotation.Exchange; import org.springframework.amqp.rabbit.annotation.Queue; @@ -42,8 +27,6 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -109,6 +92,7 @@ public class FactoryOrderListener { Map entityMap = new HashMap<>(); if (CollUtil.isNotEmpty(crmSos) && CollUtil.isNotEmpty(sns)) { List existingEntities = deliveryNoteService.list(Wrappers.lambdaQuery() + .select(DeliveryNoteEntity::getId,DeliveryNoteEntity::getCrmSo,DeliveryNoteEntity::getSn) .in(DeliveryNoteEntity::getCrmSo, crmSos) .in(DeliveryNoteEntity::getSn, sns)); if (CollUtil.isNotEmpty(existingEntities)) { @@ -134,10 +118,20 @@ public class FactoryOrderListener { entity.setEndingCustomerTel(vo.getENDING_CUSTOMER_TEL()); entity.setCrmSo(vo.getCRM_SO()); entity.setSpace(vo.getSPACE()); - entity.setSn(vo.getSN()); + // 原始单号- 老系统处理完之后推的暂存单的包条码 + // 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()); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/NodeDataPushListener.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/NodeDataPushListener.java index d316174b4..00f2ee197 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/NodeDataPushListener.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/NodeDataPushListener.java @@ -1,7 +1,6 @@ package com.logpm.factorydata.olo.mq; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.EnumUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -9,11 +8,15 @@ import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import com.logpm.factorydata.feign.IFactoryDataClient; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.logpm.factorydata.olo.entity.DeliveryNoteEntity; +import com.logpm.factorydata.olo.entity.FactoryNodePushEntity; import com.logpm.factorydata.olo.enums.FactoryNodeEnums; import com.logpm.factorydata.olo.enums.NodeMappingEnums; import com.logpm.factorydata.olo.enums.NodeNeedEnums; import com.logpm.factorydata.olo.pros.OldProperties; +import com.logpm.factorydata.olo.service.DeliveryNoteService; +import com.logpm.factorydata.olo.service.FactoryNodePushService; import com.logpm.factorydata.vo.PushData; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -27,8 +30,11 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; /** @@ -42,8 +48,9 @@ import java.util.stream.Collectors; @AllArgsConstructor public class NodeDataPushListener { - private final IFactoryDataClient factoryDataClient; private final OldProperties oldProperties; + private final FactoryNodePushService factoryNodePushService; + private final DeliveryNoteService deliveryNoteService; @RabbitListener(bindings = @QueueBinding( value = @Queue(name = FactoryDataConstants.Mq.Queues.OLO_NODE_DATA_PUSH, durable = "true"), @@ -59,40 +66,120 @@ public class NodeDataPushListener { JSONObject entries = JSONUtil.parseObj(msg); // 节点 String node = entries.getStr("node"); - WorkNodeEnums workNodeEnums = EnumUtil.fromString(WorkNodeEnums.class, node); - FactoryNodeEnums factoryNode = NodeMappingEnums.getFactoryByNodeAndStatus(workNodeEnums); // 2 获取业务数据 List content = entries.getBeanList("content", PushData.class); + WorkNodeEnums workNodeEnums = EnumUtil.fromString(WorkNodeEnums.class, node); // 按订单号和运单号进行分组 if (CollUtil.isNotEmpty(content)) { - Map> sendMap = content.stream() - .collect(Collectors.groupingBy(data -> data.getOrderCode() + data.getWaybillNumber())); - JSONArray jsons = new JSONArray(sendMap.size()); - for (Map.Entry> entry : sendMap.entrySet()) { - List pushDatas = entry.getValue(); - PushData pushData = pushDatas.get(0); - JSONObject js = new JSONObject(); - js.set("status", factoryNode.getText()); - js.set("opTime", DateUtil.now()); - js.set("content", factoryNode.getText()); - js.set("orderNo", pushData.getOrderCode()); - js.set("deliveryNo", pushData.getWaybillNumber()); - js.set("siteLevel", 3); - js.set("nodeName", pushData.getWarehouseName()); - js.set("receiveOrSend", 1); - js.set("shipmentSplitNo", ""); - js.set("receivable", 0); - js.set("receipts", 0); - js.set("shipmentNo", ""); - JSONArray snArray = new JSONArray(pushDatas.size()); - for (PushData data : pushDatas) { - JSONObject jsonObject = new JSONObject(); - jsonObject.set("sn", data.getPackageCode()); - jsonObject.set("qty", 1); - snArray.add(jsonObject); + FactoryNodeEnums factoryNode = NodeMappingEnums.getFactoryByNodeAndStatus(workNodeEnums, 1); + // 1 先处理 批次件 OLO开头的包件 OLO2312064418-20231226010129-1-001 原始包件 2312064418 回传按原始包件回传 + content.stream().map(i -> { + String packageCode = i.getPackageCode(); + if (StrUtil.startWith(packageCode, "OLO")) { + if (StrUtil.isNotEmpty(packageCode)) { + String[] split = packageCode.split("-"); + i.setPackageCode(split[0].substring(3)); + } + } + return i; + }); + // 2 先查出 包件+订单 的所有发运分单号和发运单号 + Set packageSet = content.stream().map(PushData::getPackageCode).collect(Collectors.toSet()); + Set orderSet = content.stream().map(PushData::getOrderCode).collect(Collectors.toSet()); + List factoryList = deliveryNoteService.list(Wrappers.lambdaQuery() + .select(DeliveryNoteEntity::getSn, DeliveryNoteEntity::getCrmSo, DeliveryNoteEntity::getShipmentSplitNo, DeliveryNoteEntity::getShipmentNo, DeliveryNoteEntity::getReserve1) + .in(DeliveryNoteEntity::getSn, packageSet) + .in(DeliveryNoteEntity::getCrmSo, orderSet) + ); + // 查询出已推的到达 + JSONArray jsons = new JSONArray(); + List pushEntities = new ArrayList<>(); + if (CollUtil.isNotEmpty(factoryList)) { + // 按 包件+订单 分组 + Map> collect = factoryList.stream().collect(Collectors.groupingBy(data -> data.getSn() + data.getCrmSo())); + // 按 订单+运单+发货分单号 分组 作为发送的 key + Map> collect1 = content.stream() + .filter(data -> StrUtil.isNotEmpty(data.getWaybillNumber())) + .collect(Collectors.groupingBy(data -> data.getOrderCode() + data.getWaybillNumber() + collect.get(data.getPackageCode() + data.getOrderCode()).get(0).getShipmentSplitNo())); + for (Map.Entry> entry : collect1.entrySet()) { + List value = entry.getValue(); + PushData sendData = value.get(0); + String orderCode = sendData.getOrderCode(); + String waybillNumber = sendData.getWaybillNumber(); + String shipmentSplitNo = collect.get(sendData.getPackageCode() + sendData.getOrderCode()).get(0).getShipmentSplitNo(); + List list = factoryNodePushService.list(Wrappers.lambdaQuery() + .eq(FactoryNodePushEntity::getOrderCode, orderCode) + .eq(FactoryNodePushEntity::getWaybillCode, waybillNumber) + .eq(FactoryNodePushEntity::getShipmentSpitCode, shipmentSplitNo) + .eq(FactoryNodePushEntity::getTypeCode, FactoryNodeEnums.ARRIVAL.getCode()) + ); + FactoryNodeEnums needSendNode = factoryNode; + // 是否是分拨中心 + Boolean isArrival = Boolean.FALSE; + switch (workNodeEnums) { + // 卸车扫描的时候 如果没有推到达,则不处理 推了到达则推入库 + case UNLOAD_INCOMING_WAREHOUSE: + if (CollUtil.isEmpty(list)) { + continue; + } + break; + // 中转 卸车确认 时,如果推了达到,则不处理 + case TRANSFER_WAREHOUSE_UNLOADING: + if (CollUtil.isNotEmpty(list)) { + continue; + } + isArrival = Boolean.TRUE; + break; + // 末端仓卸车确认 时,如果推了到达,则不处理 + case END_WAREHOUSE_UNLOADING: + if (CollUtil.isNotEmpty(list)) { + continue; + } + isArrival = Boolean.TRUE; + break; + } + if(isArrival){ + FactoryNodePushEntity entity = new FactoryNodePushEntity(); + entity.setOrderCode(orderCode); + entity.setWaybillCode(waybillNumber); + entity.setShipmentSpitCode(shipmentSplitNo); + entity.setType(needSendNode.getValue()); + entity.setTypeCode(needSendNode.getCode()); + pushEntities.add(entity); + } + needSendNode = NodeMappingEnums.getFactoryByNodeAndStatus(workNodeEnums); + JSONObject js = new JSONObject(); + js.set("status", needSendNode.getStatus()); + js.set("opTime", entries.getStr("operatorTime")); + js.set("content", needSendNode.getValue()); + js.set("orderNo", orderCode); + js.set("deliveryNo", waybillNumber); + js.set("siteLevel", needSendNode.getSiteLecel(isArrival)); + js.set("nodeName", sendData.getWarehouseName()); + js.set("receiveOrSend", needSendNode.getReceiveOrSend()); + js.set("shipmentSplitNo", shipmentSplitNo); + js.set("receivable", 0); + js.set("receipts", 0); + js.set("shipmentNo", collect.get(sendData.getPackageCode() + sendData.getOrderCode()).get(0).getShipmentNo()); + JSONArray snArray = new JSONArray(); + Map snMap = new HashMap<>(); + // value 按包件分组 包含则数量+1 + for (PushData data : value) { + if (snMap.containsKey(data.getPackageCode())) { + snMap.put(data.getPackageCode(), snMap.get(data.getPackageCode()) + 1); + } else { + snMap.put(data.getPackageCode(), 1); + } + } + for (Map.Entry stringIntegerEntry : snMap.entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.set("sn", stringIntegerEntry.getKey()); + jsonObject.set("qty", stringIntegerEntry.getValue()); + snArray.add(jsonObject); + } + js.set("snList", snArray); + jsons.add(js); } - js.set("snList", snArray); - jsons.add(js); } if (oldProperties.getEnable()) { try { @@ -100,6 +187,9 @@ public class NodeDataPushListener { log.info("推送节点数据:{}", JSONUtil.toJsonStr(jsons)); String post = HttpUtil.post(oldProperties.getPushNodeUrl(), JSONUtil.toJsonStr(jsons)); log.info("推送结果:{}", post); + if (CollUtil.isNotEmpty(pushEntities)) { + factoryNodePushService.saveBatch(pushEntities); + } } } catch (Exception e) { e.printStackTrace(); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/FactoryNodePushService.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/FactoryNodePushService.java new file mode 100644 index 000000000..1e422c229 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/FactoryNodePushService.java @@ -0,0 +1,14 @@ +package com.logpm.factorydata.olo.service; + +import com.logpm.factorydata.olo.entity.FactoryNodePushEntity; +import org.springblade.core.mp.base.BaseService; + +/** + * 回推记录 服务类 + * + * @Author zqb + * @Date 2024/4/26 + **/ +public interface FactoryNodePushService extends BaseService { + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/impl/DeliveryNoteServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/impl/DeliveryNoteServiceImpl.java index 00327a75a..1d253d31f 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/impl/DeliveryNoteServiceImpl.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/impl/DeliveryNoteServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; -import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; @@ -116,7 +115,7 @@ public class DeliveryNoteServiceImpl extends BaseServiceImpl advances = new ArrayList<>(); for (Map.Entry> stringListEntry : advanceMap.entrySet()) { List value = stringListEntry.getValue(); + // 计算数量 + BigDecimal totalQty = value.stream().map(i -> Convert.toBigDecimal(i.getQty())).reduce(BigDecimal.ZERO, BigDecimal::add); TrunklineAdvanceEntity advanceEntity = new TrunklineAdvanceEntity(); advanceEntity.setTenantId(tenantId); advanceEntity.setStatus(0); @@ -143,7 +144,7 @@ public class DeliveryNoteServiceImpl extends BaseServiceImpl 1) { + advanceDetailEntity.setOrderPackageCode("OLO" + orderPackageDTO.getSn() + "-" + (i + 1) + "-" + StrUtil.padPre(String.valueOf(i + 1), 3, "0")); + } else { + advanceDetailEntity.setOrderPackageCode(orderPackageDTO.getSn()); + } + advanceDetailEntity.setReserve4(orderPackageDTO.getSn()); + advanceDetailEntity.setTrainNumber(orderPackageDTO.getShipmentNo()); + advanceDetailEntity.setServiceNum(orderPackageDTO.getShipmentSplitNo()); + advanceDetailEntity.setWaybillNo(""); + advanceDetailEntity.setPackageStatus("0"); + advanceDetailEntity.setWeight(StrUtil.isNotBlank(orderPackageDTO.getSnWeight()) ? new BigDecimal(orderPackageDTO.getSnWeight()) : BigDecimal.ZERO); + advanceDetailEntity.setVolume(StrUtil.isNotBlank(orderPackageDTO.getSnVolume()) ? new BigDecimal(orderPackageDTO.getSnVolume()) : BigDecimal.ZERO); // advanceDetailEntity.setChargeType(0); - advanceDetailEntity.setSupple(""); - advanceDetailEntity.setManifest(""); - advanceDetailEntity.setReturnNum(""); - advanceDetailEntity.setSendDateStr(DateUtil.formatLocalDateTime(LocalDateTime.now())); - advanceDetailEntity.setCarNumber(""); - advanceDetailEntity.setGoodsMan(""); - advanceDetailEntity.setTenantId(tenantId); - advanceDetailEntity.setStatus(0); - advanceDetailEntity.setIsDeleted(0); - JSONObject entries = JSONUtil.parseObj(advanceDetailEntity); - packageList.add(entries); + advanceDetailEntity.setSupple(""); + advanceDetailEntity.setManifest(""); + advanceDetailEntity.setReturnNum(""); + advanceDetailEntity.setSendDateStr(DateUtil.formatLocalDateTime(LocalDateTime.now())); + advanceDetailEntity.setCarNumber(""); + advanceDetailEntity.setGoodsMan(""); + advanceDetailEntity.setTenantId(tenantId); + advanceDetailEntity.setStatus(0); + advanceDetailEntity.setIsDeleted(0); + JSONObject entries = JSONUtil.parseObj(advanceDetailEntity); + packageList.add(entries); + } + } // 转成json对象,然后将包件明细放到detail中 JSONObject entries = JSONUtil.parseObj(advanceEntity); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/impl/FactoryNodePushServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/impl/FactoryNodePushServiceImpl.java new file mode 100644 index 000000000..f4e0032e5 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/impl/FactoryNodePushServiceImpl.java @@ -0,0 +1,22 @@ +package com.logpm.factorydata.olo.service.impl; + +import com.logpm.factorydata.olo.entity.FactoryNodePushEntity; +import com.logpm.factorydata.olo.mapper.FactoryNodePushMapper; +import com.logpm.factorydata.olo.service.FactoryNodePushService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.stereotype.Service; + +/** + * 工厂订单日志 业务实现类 + * + * @Author zqb + * @Date 2024/4/26 + **/ +@Slf4j +@Service +@AllArgsConstructor +public class FactoryNodePushServiceImpl extends BaseServiceImpl implements FactoryNodePushService { + +}