Browse Source

feat(all): 修改我乐回传节点总逻辑

1 按照最新的回传逻辑调整我乐的节点回传
visual
zhaoqiaobo 4 months ago
parent
commit
3e7af65f43
  1. 117
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/entity/FactoryNodePushEntity.java
  2. 51
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/FactoryNodeEnums.java
  3. 17
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeMappingEnums.java
  4. 10
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeNeedEnums.java
  5. 25
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/SiteLevelEnums.java
  6. 16
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryNodePushMapper.java
  7. 5
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryNodePushMapper.xml
  8. 30
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/FactoryOrderListener.java
  9. 154
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/NodeDataPushListener.java
  10. 14
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/FactoryNodePushService.java
  11. 99
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/impl/DeliveryNoteServiceImpl.java
  12. 22
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/impl/FactoryNodePushServiceImpl.java

117
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;
}

51
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<Integer> {
/** 已入库 */
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();
}
}

17
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),
;
/**

10
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, "三方中转发车"),
/**
* 配送装车
*/

25
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<Integer> {
DISTRIBUTION_CENTER(1, "分拨中心"),
OUTLET(2, "网点"),
OTHER(3, "其他"),
SIGN_FOR(4, "客户签收"),
;
SiteLevelEnums(Integer code, String text) {
init(code, text);
}
}

16
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<FactoryNodePushEntity> {
}

5
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryNodePushMapper.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.logpm.factorydata.olo.mapper.FactoryNodePushMapper">
</mapper>

30
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<String, Long> entityMap = new HashMap<>();
if (CollUtil.isNotEmpty(crmSos) && CollUtil.isNotEmpty(sns)) {
List<DeliveryNoteEntity> existingEntities = deliveryNoteService.list(Wrappers.<DeliveryNoteEntity>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());

154
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<PushData> content = entries.getBeanList("content", PushData.class);
WorkNodeEnums workNodeEnums = EnumUtil.fromString(WorkNodeEnums.class, node);
// 按订单号和运单号进行分组
if (CollUtil.isNotEmpty(content)) {
Map<String, List<PushData>> sendMap = content.stream()
.collect(Collectors.groupingBy(data -> data.getOrderCode() + data.getWaybillNumber()));
JSONArray jsons = new JSONArray(sendMap.size());
for (Map.Entry<String, List<PushData>> entry : sendMap.entrySet()) {
List<PushData> 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<String> packageSet = content.stream().map(PushData::getPackageCode).collect(Collectors.toSet());
Set<String> orderSet = content.stream().map(PushData::getOrderCode).collect(Collectors.toSet());
List<DeliveryNoteEntity> factoryList = deliveryNoteService.list(Wrappers.<DeliveryNoteEntity>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<FactoryNodePushEntity> pushEntities = new ArrayList<>();
if (CollUtil.isNotEmpty(factoryList)) {
// 按 包件+订单 分组
Map<String, List<DeliveryNoteEntity>> collect = factoryList.stream().collect(Collectors.groupingBy(data -> data.getSn() + data.getCrmSo()));
// 按 订单+运单+发货分单号 分组 作为发送的 key
Map<String, List<PushData>> 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<String, List<PushData>> entry : collect1.entrySet()) {
List<PushData> 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<FactoryNodePushEntity> list = factoryNodePushService.list(Wrappers.<FactoryNodePushEntity>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<String, Integer> 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<String, Integer> 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();

14
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<FactoryNodePushEntity> {
}

99
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<DeliveryNoteMapper,
// 车次号 + 订单自编号 一个暂存单
for (DeliveryNoteEntity detail : vos) {
// 我乐包车和快递数据不进入暂存单
if(StrUtil.equals(detail.getShipmentTypeDesc(), "快递") || StrUtil.equals(detail.getShipmentTypeDesc(), "包车")){
if (StrUtil.equals(detail.getShipmentTypeDesc(), "快递") || StrUtil.equals(detail.getShipmentTypeDesc(), "包车")) {
continue;
}
String crmSo = detail.getCrmSo();
@ -134,6 +133,8 @@ public class DeliveryNoteServiceImpl extends BaseServiceImpl<DeliveryNoteMapper,
List<JSONObject> advances = new ArrayList<>();
for (Map.Entry<String, List<DeliveryNoteEntity>> stringListEntry : advanceMap.entrySet()) {
List<DeliveryNoteEntity> 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<DeliveryNoteMapper,
advanceEntity.setBrand(BrandEnums.OLO.getValue());
advanceEntity.setSiteName("");
advanceEntity.setArea("");
advanceEntity.setTotalNum(CollUtil.isNotEmpty(value) ? value.size() : 0);
advanceEntity.setTotalNum(Convert.toInt(totalQty));
advanceEntity.setPackCode("");
advanceEntity.setWarehouseId(startWarehouseId);
@ -174,52 +175,62 @@ public class DeliveryNoteServiceImpl extends BaseServiceImpl<DeliveryNoteMapper,
advanceEntity.setCustomerName(orderPackageDTO.getEndingCustomer());
advanceEntity.setCustomerPhone(orderPackageDTO.getEndingCustomerTel());
advanceEntity.setCustomerAddress(orderPackageDTO.getZgkdz());
// 封装包件
TrunklineAdvanceDetailEntity advanceDetailEntity = new TrunklineAdvanceDetailEntity();
advanceDetailEntity.setWarehouseId(startWarehouseId);
advanceDetailEntity.setWarehouseName(startWarehouseName);
Integer anInt = Convert.toInt(orderPackageDTO.getQty());
for (int i = 0; i < anInt; i++) {
// 封装包件
TrunklineAdvanceDetailEntity advanceDetailEntity = new TrunklineAdvanceDetailEntity();
advanceDetailEntity.setWarehouseId(startWarehouseId);
advanceDetailEntity.setWarehouseName(startWarehouseName);
// advanceDetailEntity.setIncomingWarehouseId(0L);
// advanceDetailEntity.setIncomingWarehouseName("");
// 根据志邦的一流单标识赋值
advanceEntity.setLegacyStatus("0");
if (StrUtil.contains(orderPackageDTO.getCrmSo(), "遗")) {
advanceEntity.setLegacyStatus("1");
}
// 根据志邦的一流单标识赋值
advanceEntity.setLegacyStatus("0");
if (StrUtil.contains(orderPackageDTO.getCrmSo(), "遗")) {
advanceEntity.setLegacyStatus("1");
}
advanceDetailEntity.setOrderCode(orderPackageDTO.getCrmSo());
advanceDetailEntity.setBrand(BrandEnums.OLO.getValue());
advanceDetailEntity.setSystemType("线上");
advanceDetailEntity.setFirstPackName(orderPackageDTO.getMaterialCategory());
// 获取映射志邦映射品类信息
// 二级品类名称
advanceDetailEntity.setSecondPackName(orderPackageDTO.getMaterialCategory());
// 三级品类名称
advanceDetailEntity.setThirdPackName(orderPackageDTO.getMaterialCategory());
// advanceDetailEntity.setMaterialName(orderPackageDTO.getMaterialCategory());
advanceDetailEntity.setOrderCode(orderPackageDTO.getCrmSo());
advanceDetailEntity.setBrand(BrandEnums.OLO.getValue());
advanceDetailEntity.setSystemType("线上");
advanceDetailEntity.setFirstPackName(orderPackageDTO.getMaterialCategory());
// 获取映射志邦映射品类信息
// 二级品类名称
advanceDetailEntity.setSecondPackName(orderPackageDTO.getMaterialCategory());
// 三级品类名称
advanceDetailEntity.setThirdPackName(orderPackageDTO.getMaterialCategory());
// advanceDetailEntity.setMaterialName(orderPackageDTO.getMaterialCategory());
advanceDetailEntity.setSiteName("");
advanceDetailEntity.setSiteCode("");
advanceDetailEntity.setQuantity((StrUtil.isNotBlank(orderPackageDTO.getQty()) && NumberUtil.isNumber(orderPackageDTO.getQty())) ? Convert.toInt(orderPackageDTO.getQty()) : 0);
advanceDetailEntity.setOrderPackageCode(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.setSiteName("");
advanceDetailEntity.setSiteCode("");
// advanceDetailEntity.setQuantity((StrUtil.isNotBlank(orderPackageDTO.getQty()) && NumberUtil.isNumber(orderPackageDTO.getQty())) ? Convert.toInt(orderPackageDTO.getQty()) : 0);
advanceDetailEntity.setQuantity(1);
// 按老系统生成新的逻辑的包件号 OLO2312064418-20231226010129-1-001
if (anInt > 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);

22
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<FactoryNodePushMapper, FactoryNodePushEntity> implements FactoryNodePushService {
}
Loading…
Cancel
Save