diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java b/blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java index c9540d3df..cdee1349d 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java @@ -68,6 +68,7 @@ public abstract class FactoryDataConstants { /** * 索菲亚工厂订单 */ + String SFY_NODE_DATA_PUSH = "factory.data.queue.sfy.nodeDataPush" + DEVAUTH; String SFY_FACTORY_ORDER = "factory.data.queue.sfy.factoryOrder" + DEVAUTH; /** * 我乐工厂订单 @@ -117,6 +118,7 @@ public abstract class FactoryDataConstants { /** * 索菲亚工厂订单 */ + String SFY_NODE_DATA_PUSH = "sfy.nodeDataPush" + DEVAUTH; String SFY_FACTORY_ORDER = "sfy.factoryOrder" + DEVAUTH; /** * 我乐工厂订单 diff --git a/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/util/FactoryDataUtil.java b/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/util/FactoryDataUtil.java index 8e3935afb..6b3f206e9 100644 --- a/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/util/FactoryDataUtil.java +++ b/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/util/FactoryDataUtil.java @@ -25,6 +25,7 @@ public class FactoryDataUtil { factorys.put(BrandEnums.ZB.getValue(), FactoryDataConstants.Mq.RoutingKeys.ZBOM_NODE_DATA_PUSH); factorys.put(BrandEnums.LINSY.getValue(), FactoryDataConstants.Mq.RoutingKeys.LINSY_NODE_DATA_PUSH); factorys.put(BrandEnums.OLO.getValue(), FactoryDataConstants.Mq.RoutingKeys.OLO_NODE_DATA_PUSH); + factorys.put(BrandEnums.SFY.getValue(), FactoryDataConstants.Mq.RoutingKeys.SFY_NODE_DATA_PUSH); } diff --git a/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/vo/NodePushMsg.java b/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/vo/NodePushMsg.java index 5eee16854..f2f6ed2e2 100644 --- a/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/vo/NodePushMsg.java +++ b/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/vo/NodePushMsg.java @@ -55,6 +55,11 @@ public class NodePushMsg implements Serializable { */ private SignForStatusEnums signForStatusEnums; + /** + * 主单数据 + */ + private Object main; + /** * 内容 */ diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java index 591bef701..9f239be02 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java @@ -8,8 +8,10 @@ import com.logpm.distribution.dto.app.DistrilbutionloadingscanDTO; import com.logpm.distribution.dto.app.StockupDTO; import com.logpm.distribution.dto.app.StockupZeroDTO; import com.logpm.distribution.entity.DisStockListDetailEntity; +import com.logpm.distribution.entity.DistributionDeliveryListEntity; import com.logpm.distribution.entity.DistributionParcelListEntity; import com.logpm.distribution.entity.DistributionParcelNumberEntity; +import com.logpm.distribution.entity.DistributionReservationEntity; import com.logpm.distribution.entity.DistributionStockArticleEntity; import com.logpm.trunkline.entity.TrunklineAdvanceEntity; import com.logpm.trunkline.entity.TrunklineWaybillOrderEntity; @@ -340,9 +342,9 @@ public interface IDistributionAsyncService { /** * 推送预约下包件转配送日志 - * @param reservationIds + * @param */ - void recordsReservationDeliveryLog(String reservationIds,BasicdataWarehouseEntity warehouse,BladeUser user,String trainNumber,Integer node,String content); + void recordsReservationDeliveryLog(List reservationEntityList, BasicdataWarehouseEntity warehouse, BladeUser user, DistributionDeliveryListEntity deliveryListEntity, Integer node, String content); /** * 自提推送工厂 diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java index 935bc8c32..52b90b941 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java @@ -54,6 +54,7 @@ import com.logpm.factorydata.enums.BrandEnums; import com.logpm.factorydata.util.FactoryDataMessageSender; import com.logpm.factorydata.vo.NodePushMsg; import com.logpm.factorydata.vo.PushData; +import com.logpm.factorydata.vo.SendMsg; import com.logpm.trunkline.dto.AddWaybillTrackDTO; import com.logpm.trunkline.feign.*; import com.logpm.warehouse.entity.WarehouseWaybillEntity; @@ -1611,9 +1612,12 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { List contents = new ArrayList<>(); if (CollUtil.isNotEmpty(zb)) { for (MtReceiveContentDTO mtReceiveContentDTO : zb) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("packageCode", mtReceiveContentDTO.getUnitNo()); - contents.add(jsonObject); + PushData pushData = PushData.builder() + .packageCode(mtReceiveContentDTO.getUnitNo()) + .orderCode(mtReceiveContentDTO.getOrderCode()) + .warehouseName(warehouseName) + .waybillNumber(mtReceiveContentDTO.getWaybillNumber()).build(); + contents.add(pushData); } } NodePushMsg msg = new NodePushMsg(); @@ -2962,16 +2966,33 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { @Override @LogpmAsync("asyncExecutor") - public void recordsReservationDeliveryLog(String reservationIds,BasicdataWarehouseEntity warehouse,BladeUser user,String trainNumber,Integer node,String content) { - List list = Func.toLongList(reservationIds); + public void recordsReservationDeliveryLog(List reservationList,BasicdataWarehouseEntity warehouse,BladeUser user,DistributionDeliveryListEntity deliveryListEntity,Integer node,String content) { + List list = reservationList.stream().map(DistributionReservationEntity::getId).collect(Collectors.toList()); if (!list.isEmpty()) { List distributionReservationPackageEntities = distributionReservationPackageMapper.selectList(Wrappers.query().lambda() .in(DistributionReservationPackageEntity::getReservationId, list) .ne(DistributionReservationPackageEntity::getPacketBarStatus, ReservationPackageStatusConstant.quxiao.getValue()) ); + // reservationList根据id分组封装成map + Map> map = reservationList.stream().collect(Collectors.groupingBy(DistributionReservationEntity::getId)); List aaa = new ArrayList<>(); + List pushDatas = new ArrayList<>(); if (!distributionReservationPackageEntities.isEmpty()) { + // 通过订单id获取订单,然后根据品牌分组 + Map stockArticleEntityMap = new HashMap<>(); + List collect = distributionReservationPackageEntities.stream().map(DistributionReservationPackageEntity::getStockArticleId).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(collect)){ + List stockArticleEntities = distributionStockArticleService.list(Wrappers.query().lambda() + .in(DistributionStockArticleEntity::getId, collect) + ); + if(CollUtil.isNotEmpty(stockArticleEntities)){ + stockArticleEntities.forEach(s->{ + stockArticleEntityMap.put(s.getId(),s); + }); + } + } distributionReservationPackageEntities.forEach(rp->{ + DistributionReservationEntity r = map.get(rp.getReservationId()).get(0); JSONObject trunklinePackageTrackLog= new JSONObject(); trunklinePackageTrackLog.put("tenantId",AuthUtil.getTenantId()); trunklinePackageTrackLog.put("createTime",new Date()); @@ -2988,8 +3009,47 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { trunklinePackageTrackLog.put("content",content); trunklinePackageTrackLog.put("operator",AuthUtil.getUser().getNickName()); aaa.add(trunklinePackageTrackLog); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("trainNumber", deliveryListEntity.getTrainNumber()); + jsonObject.put("brand", stockArticleEntityMap.get(rp.getStockArticleId()).getBrand()); + jsonObject.put("receiver", r.getConsignee()); + jsonObject.put("receiveAddr", r.getDeliveryAddress()); + jsonObject.put("receiveTel", r.getDeliveryPhone()); + jsonObject.put("planDeliveryDate", deliveryListEntity.getTaskTime()); + jsonObject.put("packageCode", rp.getPacketBarCode()); + pushDatas.add(jsonObject); }); } + try { + if(CollUtil.isNotEmpty(pushDatas)){ + // 以trainNumber和receiver 分组 将包件封装成list + Map> collect = pushDatas.stream().collect(Collectors.groupingBy(jsonObject -> jsonObject.getString("trainNumber") + jsonObject.getString("receiver") + jsonObject.getString("brand"))); + if(CollUtil.isNotEmpty(collect)){ + for (Map.Entry> entry : collect.entrySet()) { + List value = entry.getValue(); + if(CollUtil.isNotEmpty(value)){ + JSONObject object = value.get(0); + NodePushMsg msg = new NodePushMsg(); + msg.setNode(WorkNodeEnums.PLAN_DISTRIBUTION); + msg.setBrand(BrandEnums.getByValue(value.get(0).getString("brand"))); + msg.setOperator(AuthUtil.getNickName()); + msg.setOperatorTime(new Date()); + msg.setMain(object); + msg.setContent(value.stream().map(jsonObject -> { + PushData pushData = new PushData(); + pushData.setPackageCode(jsonObject.getString("packageCode")); + return pushData; + }).collect(Collectors.toList())); + log.info("推送工厂数据:{}", JSONUtil.toJsonStr(msg)); + factoryDataMessageSender.sendNodeDataByBrand(msg); + } + } + } + } + }catch (Exception e){ + log.error("推送工程数据失败:{}", e); + } + if (!aaa.isEmpty()) { trunklinePackageTrackLogClient.addPackageTrackLog(aaa); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java index dc18abd58..2b2812b2a 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java @@ -2674,6 +2674,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl logs = new ArrayList<>(); + List pushDatas = new ArrayList<>(); //查询出原来配送信息的备货任务 DistributionStockupVO deliveryStockupInfo = distributionStockupMapper.getDeliveryStockupInfo(deliveryListEntity.getId()); //这里查询出该备货任务的执行情况,如果该任务处于已完成的状态需要创建新的备货任务,其他的备货状态则是进行备货任务的修改 @@ -2869,6 +2870,14 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl newIds = new ArrayList<>(); List oldIds = new ArrayList<>(); + List newReservationEntities = new ArrayList<>(); newReservation.forEach((k, v) -> { clientTotal.getAndIncrement(); //统计配送包件总数量 @@ -3868,7 +3910,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl oldReservationEntities = new ArrayList<>(); oldReservation.forEach((m, n) -> { //这里就是取消的预约单,进行状态回退 DistributionReservationEntity reservationEntity = n.get(0); @@ -3905,12 +3947,13 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl { + + + INITIAL_WAREHOUSE_ENTRY(101020, "入库"), + UNLOAD_INCOMING_WAREHOUSE(105010,"入库"), + INITIAL_WAREHOUSE_LOADING(103020, "出库"), + PLAN_DISTRIBUTION(301060, "计划配车"), + /** + * 配送装车 + */ + DISTRIBUTION_LOADING(302010, "配送"), + /** + * 文员复核 + */ + CLERK_REVIEW(303010, "签收"), + ; + + FactoryNodeEnums(Integer code, String text) { + init(code, text); + } + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeMappingEnums.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeMappingEnums.java new file mode 100644 index 000000000..5602a4ebf --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeMappingEnums.java @@ -0,0 +1,79 @@ +package com.logpm.factorydata.suofeiya.enums; + +import cn.hutool.core.util.ObjectUtil; +import lombok.Getter; +import org.springblade.common.constant.WorkNodeEnums; + +/** + * 系统和工厂节点映射枚举 + * + * @author zhaoqiaobo + * @create 2024-03-20 15:19 + */ +@Getter +public enum NodeMappingEnums { + + /** + * 始发仓入库 + */ + INITIAL_WAREHOUSE_ENTRY(FactoryNodeEnums.INITIAL_WAREHOUSE_ENTRY, WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY, 1), + /** + * 卸车入库 + */ + UNLOAD_INCOMING_WAREHOUSE(FactoryNodeEnums.UNLOAD_INCOMING_WAREHOUSE, WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE, 1), + /** + * 装车 + */ + INITIAL_WAREHOUSE_LOADING(FactoryNodeEnums.INITIAL_WAREHOUSE_LOADING, WorkNodeEnums.INITIAL_WAREHOUSE_LOADING, 1), + /** + * 计划配车 + */ + PLAN_DISTRIBUTION(FactoryNodeEnums.PLAN_DISTRIBUTION, WorkNodeEnums.PLAN_DISTRIBUTION, 1), + + /** + * 已交接 + */ + DISTRIBUTION_LOADING(FactoryNodeEnums.DISTRIBUTION_LOADING, WorkNodeEnums.DISTRIBUTION_LOADING, 1), + /** + * 收货完成 + */ + CLERK_REVIEW(FactoryNodeEnums.CLERK_REVIEW, WorkNodeEnums.CLERK_REVIEW, 1); + + /** + * 系统作业节点 + */ + private WorkNodeEnums workNodeEnums; + /** + * 工厂作业节点 + */ + private FactoryNodeEnums factoryNodeEnums; + /** + * 状态码 + * 存在我们系统同一个作业节点对应工厂多个节点的情况,通过状态码区分 + */ + private Integer status; + + NodeMappingEnums(FactoryNodeEnums factoryNodeEnums, WorkNodeEnums workNodeEnums, Integer status) { + this.workNodeEnums = workNodeEnums; + this.factoryNodeEnums = factoryNodeEnums; + this.status = status; + } + + public static FactoryNodeEnums getFactoryByNodeAndStatus(WorkNodeEnums workNodeEnums) { + return getFactoryByNodeAndStatus(workNodeEnums, 1); + } + + public static FactoryNodeEnums getFactoryByNodeAndStatus(WorkNodeEnums workNodeEnums, Integer status) { + NodeMappingEnums[] values = values(); + for (NodeMappingEnums value : values) { + WorkNodeEnums workNodeEnums1 = value.getWorkNodeEnums(); + Integer status1 = value.getStatus(); + FactoryNodeEnums factoryNodeEnums = value.getFactoryNodeEnums(); + if (ObjectUtil.equal(workNodeEnums1, workNodeEnums) && ObjectUtil.equal(status1, status)) { + return factoryNodeEnums; + } + } + return null; + } + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeNeedEnums.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeNeedEnums.java new file mode 100644 index 000000000..0f57a2a5d --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeNeedEnums.java @@ -0,0 +1,38 @@ +package com.logpm.factorydata.suofeiya.enums; + +import lombok.Getter; + +import java.io.Serializable; + +/** + * 作业节点枚举 + * + * @author zhaoqiaobo + * @create 2024-03-20 15:19 + */ +@Getter +public enum NodeNeedEnums implements Serializable { + + INITIAL_WAREHOUSE_ENTRY(101020, "始发仓入库"), + UNLOAD_INCOMING_WAREHOUSE(105010,"卸车入库"), + INITIAL_WAREHOUSE_LOADING(103020, "装车"), + PLAN_DISTRIBUTION(301060, "计划配车"), + /** + * 配送装车 + */ + DISTRIBUTION_LOADING(302010, "配送装车"), + /** + * 文员复核 + */ + CLERK_REVIEW(303010, "文员复核"), + ; + + private Integer code; + private String value; + + NodeNeedEnums(Integer code, String value) { + this.code = code; + this.value = value; + } + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mq/NodeDataPushListener.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mq/NodeDataPushListener.java new file mode 100644 index 000000000..2c7369263 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mq/NodeDataPushListener.java @@ -0,0 +1,155 @@ +package com.logpm.factorydata.suofeiya.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; +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.logpm.factorydata.suofeiya.enums.FactoryNodeEnums; +import com.logpm.factorydata.suofeiya.enums.NodeMappingEnums; +import com.logpm.factorydata.suofeiya.enums.NodeNeedEnums; +import com.logpm.factorydata.suofeiya.pros.OldProperties; +import com.logpm.factorydata.vo.PushData; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.common.constant.WorkNodeEnums; +import org.springblade.common.constant.factorydata.FactoryDataConstants; +import org.springframework.amqp.core.ExchangeTypes; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +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.List; + +/** + * 监听业务系统推送给节点数据 + * + * @author zhaoqiaobo + * @create 2024-03-18 0:02 + */ +@Slf4j +@Component +@AllArgsConstructor +public class NodeDataPushListener { + + private final IFactoryDataClient factoryDataClient; + private final OldProperties oldProperties; + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(name = FactoryDataConstants.Mq.Queues.OLO_NODE_DATA_PUSH, durable = "true"), + exchange = @Exchange(name = FactoryDataConstants.Mq.Exchanges.NODE_DATA_PUSH, type = ExchangeTypes.TOPIC), + key = FactoryDataConstants.Mq.RoutingKeys.OLO_NODE_DATA_PUSH + )) + @Transactional(rollbackFor = Exception.class) + public void nodeDataPush(String msg) { + log.info("接收到节点数据推送:{}", msg); + if (checkData(msg)) { + return; + } + JSONObject entries = JSONUtil.parseObj(msg); + // 节点 + String node = entries.getStr("node"); + String main = entries.getStr("main"); + WorkNodeEnums workNodeEnums = EnumUtil.fromString(WorkNodeEnums.class, node); + FactoryNodeEnums factoryNode = NodeMappingEnums.getFactoryByNodeAndStatus(workNodeEnums); + // 2 获取业务数据 + List content = entries.getBeanList("content", PushData.class); + if (!ObjectUtil.equal(workNodeEnums.getCode(), NodeNeedEnums.PLAN_DISTRIBUTION.getCode())) { + // 推送入库出库数据 + // 按订单号和运单号进行分组 + if (CollUtil.isNotEmpty(content)) { + JSONObject jsons = new JSONObject(); + List packages = new ArrayList<>(); + for (PushData pushData : content) { + JSONObject js = new JSONObject(); + js.set("paNo", pushData.getPackageCode()); + js.set("subinventoryCode", ""); + js.set("locatorCode", ""); + js.set("updateDate", DateUtil.now()); + js.set("paStausNo", "正常"); + js.set("logisticsStatus", factoryNode.getText()); + packages.add(js); + } + jsons.set("packageInfo", JSONUtil.toJsonStr(packages)); + if (StrUtil.isNotEmpty(oldProperties.getPushNodeUrl())) { + try { + log.info("推送节点数据:{}", JSONUtil.toJsonStr(jsons)); + String post = HttpUtil.post(oldProperties.getPushNodeUrl(), JSONUtil.toJsonStr(jsons)); + log.info("推送结果:{}", post); + } catch (Exception e) { + e.printStackTrace(); + log.error("推送节点数据错误:{}", e); + } + } + } + } else { + // 推送配送单计划 + if (CollUtil.isNotEmpty(content)) { + JSONObject jsons = new JSONObject(); + List packages = new ArrayList<>(); + for (PushData pushData : content) { + packages.add(pushData.getPackageCode()); + } + if(StrUtil.isNotEmpty(main)){ + JSONObject jsonObject = JSONUtil.parseObj(main); + jsons.set("shipPlanNo", jsonObject.getStr("trainNumber")); + jsons.set("receiver", jsonObject.getStr("receiver")); + jsons.set("receiveAddr", jsonObject.getStr("receiveAddr")); + jsons.set("receiveTel", jsonObject.getStr("receiveTel")); + jsons.set("planDeliveryDate", jsonObject.getStr("planDeliveryDate")); + } + jsons.set("paNo", JSONUtil.toJsonStr(packages)); + jsons.set("remark", ""); + jsons.set("orderExtendFields", new JSONArray()); + if (StrUtil.isNotEmpty(oldProperties.getPushNodePlanUrl())) { + try { + log.info("推送节点数据:{}", JSONUtil.toJsonStr(jsons)); + String post = HttpUtil.post(oldProperties.getPushNodePlanUrl(), JSONUtil.toJsonStr(jsons)); + log.info("推送结果:{}", post); + } catch (Exception e) { + e.printStackTrace(); + log.error("推送节点数据错误:{}", e); + } + } + } + } + + } + + private boolean checkData(String msg) { + if (StrUtil.isEmpty(msg)) { + return true; + } + if (!msg.contains("brand") || !msg.contains("content") || !msg.contains("node")) { + return true; + } + JSONObject entries = JSONUtil.parseObj(msg); + String node = entries.getStr("node"); + if (StrUtil.isEmpty(node)) { + return true; + } + // 不是志邦需要的节点数据直接不处理 + if (!EnumUtil.contains(NodeNeedEnums.class, node)) { + return true; + } + WorkNodeEnums workNodeEnums = EnumUtil.fromString(WorkNodeEnums.class, node); + if (ObjectUtil.isEmpty(workNodeEnums)) { + return true; + } + List content = entries.getBeanList("content", JSONObject.class); + if (CollUtil.isEmpty(content)) { + return true; + } + return false; + } + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/OldProperties.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/OldProperties.java new file mode 100644 index 000000000..e46761742 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/OldProperties.java @@ -0,0 +1,25 @@ +package com.logpm.factorydata.suofeiya.pros; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 老系统配置 + * @author zhaoqiaobo + * @Date 2024/5/29 + **/ +@Data +@Component +@ConfigurationProperties(prefix = "old") +public class OldProperties { + /** + * 推送节点数据到来系统的 url + */ + private String pushNodeUrl; + /** + * 推送配送计划URL + */ + private String pushNodePlanUrl; + +} diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java index 419caa9b5..d551729a9 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java @@ -2133,6 +2133,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl map = new HashMap<>(); map.put("messageData", JSONUtil.toJsonStr(orderStatusDTO)); rabbitTemplate.convertAndSend(RabbitConstant.HWY_ORDER_STATUS_EXCHANGE, RabbitConstant.HWY_ORDER_STATUS_ROUTING, map); + NodePushMsg nodePushMsg = NodePushMsg.builder() + .operator(AuthUtil.getNickName()) + .operatorTime(new Date()) + .address("在【" + warehouseName + "】入库") + .brand(BrandEnums.getByValue(entity.getBrandName())) + .node(WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE) + .content(Arrays.asList(PushData.builder() + .packageCode(entity.getOrderPackageCode()) + .warehouseName(warehouseName) + .orderCode(entity.getOrderCode()) + .build())) + .build(); + factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg); } catch (Exception e) { log.error("推送卸车失败{}", e); } @@ -4565,6 +4598,23 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl map = new HashMap<>(); map.put("messageData", JSONUtil.toJsonStr(orderStatusDTO)); rabbitTemplate.convertAndSend(RabbitConstant.HWY_ORDER_STATUS_EXCHANGE, RabbitConstant.HWY_ORDER_STATUS_ROUTING, map); + + NodePushMsg nodePushMsg = NodePushMsg.builder() + .operator(AuthUtil.getNickName()) + .operatorTime(new Date()) + .address("在【" + warehouseName + "】入库") + .brand(BrandEnums.getByValue(distributionParcelListEntity.getBrandName())) + .node(WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE) + .content(Arrays.asList(PushData.builder() + .packageCode(orderPackageCode) + .warehouseName(warehouseName) + .orderCode(orderCode) + .build())) + .build(); + factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg); } } catch (Exception e) { log.error("入库推送失败:{}", e);