Browse Source

Merge remote-tracking branch 'origin/master'

master
pref_mail@163.com 5 months ago
parent
commit
c6117e9332
  1. 4
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/OpenOrderDTO.java
  2. 11
      blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWaybillEntity.java
  3. 23
      blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/ExportWarehouseWaybillVO.java
  4. 12
      blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/FinanceWaybillExportVO.java
  5. 5
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/controller/OrderController.java
  6. 10
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/entity/FactoryNodePushEntity.java
  7. 7
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/enums/NodeMappingEnums.java
  8. 6
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/enums/NodeNeedEnums.java
  9. 32
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/enums/WarehouseEnums.java
  10. 296
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mq/NodeDataPushListener.java
  11. 360
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mq/NodeDataPushV2Listener.java
  12. 3
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/pros/JinPaiProperties.java
  13. 44
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/vo/OldFactoeyVO.java
  14. 2
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/entity/DeliveryNoteEntity.java
  15. 2
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/impl/DeliveryNoteServiceImpl.java
  16. 22
      blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCheckListener.java
  17. 23
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java
  18. 31
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java
  19. 181
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.xml

4
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/OpenOrderDTO.java

@ -63,7 +63,9 @@ public class OpenOrderDTO implements Serializable {
private BigDecimal pickupFee = BigDecimal.ZERO;//提货费
private BigDecimal warehouseManagementFee = BigDecimal.ZERO;//仓库管理费
private BigDecimal storageFee = BigDecimal.ZERO;//仓储费
private BigDecimal handlingFee = BigDecimal.ZERO;//装卸费
private BigDecimal sortingFee = BigDecimal.ZERO;//仓储分拣费
private BigDecimal handlingFee = BigDecimal.ZERO;//仓储操作费
private BigDecimal installFee = BigDecimal.ZERO;//安装费
private BigDecimal otherFee = BigDecimal.ZERO;//其他费
private BigDecimal insuranceFee = BigDecimal.ZERO;//保价费

11
blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWaybillEntity.java

@ -330,11 +330,18 @@ public class WarehouseWaybillEntity extends TenantEntity {
*/
@ApiModelProperty(value = "仓储费")
private BigDecimal storageFee;//仓储费
/**
* 仓储费
*/
@ApiModelProperty(value = "仓储分拣费")
private BigDecimal sortingFee;//仓储分拣费
/**
* 装卸费
*/
@ApiModelProperty(value = "装卸费")
private BigDecimal handlingFee;//装卸费
@ApiModelProperty(value = "仓库操作费")
private BigDecimal handlingFee;//仓库操作
/**
* 安装费
*/

23
blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/ExportWarehouseWaybillVO.java

@ -50,7 +50,8 @@ public class ExportWarehouseWaybillVO implements Serializable {
@ExcelProperty(value = "收货单位")
private String consignee;
@ExcelProperty(value = "收货单位编码")
private String consigneeCode;
@ExcelProperty(value = "收货人")
private String consigneeName;
@ -61,6 +62,8 @@ public class ExportWarehouseWaybillVO implements Serializable {
@ExcelProperty(value = "收货方地址")
private String consigneeAddress;
@ExcelProperty(value = "发站")
private String departure;
@ExcelProperty(value = "到站")
private String destination;
@ -109,11 +112,14 @@ public class ExportWarehouseWaybillVO implements Serializable {
@ExcelProperty(value = "仓储费")
private BigDecimal storageFee;
@ExcelProperty(value = "装卸费")
@ExcelProperty(value = "仓储分拣费")
private BigDecimal sortingFee;
@ExcelProperty(value = "仓储操作费")
private BigDecimal handlingFee;
@ExcelProperty(value = "安装费")
private BigDecimal installFee;
@ExcelProperty(value = "申明价值")
private BigDecimal claimingValue;
@ExcelProperty(value = "回扣")
private BigDecimal rebate;
@ -141,6 +147,8 @@ public class ExportWarehouseWaybillVO implements Serializable {
@ExcelProperty(value = "送货方式")
private String deliveryWay;
@ExcelProperty(value = "运输方式")
private String transportType;
@ExcelProperty(value = "紧急度")
private String urgency;
@ -148,9 +156,6 @@ public class ExportWarehouseWaybillVO implements Serializable {
@ExcelProperty(value = "回单数")
private Integer receiptNum;
@ExcelProperty(value = "运输方式")
private String transportType;
@ExcelProperty(value = "经办人")
private String agent;
@ -182,6 +187,10 @@ public class ExportWarehouseWaybillVO implements Serializable {
private Date freezeTime;
@ExcelIgnore
private Integer checkStatus;
@ExcelProperty(value = "是否审核")
private String checkStatusStr;
@ExcelProperty(value = "审核人")
private String checkUserName;

12
blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/FinanceWaybillExportVO.java

@ -68,7 +68,7 @@ public class FinanceWaybillExportVO implements Serializable {
@ExcelProperty(value = "备注")
private String remark;
@ExcelProperty(value = "备注")
@ExcelProperty(value = "结算方")
private String cleanObjType;
@ExcelProperty(value = "支付方式")
@ -78,16 +78,16 @@ public class FinanceWaybillExportVO implements Serializable {
private String payWay;
@ExcelProperty(value = "现付")
private BigDecimal xPay;
private BigDecimal nowPay;
@ExcelProperty(value = "到付")
private BigDecimal dPay;
private BigDecimal arrivePay;
@ExcelProperty(value = "回付")
private BigDecimal hPay;
private BigDecimal backPay;
@ExcelProperty(value = "月结")
private BigDecimal yPay;
private BigDecimal monthPay;
@ExcelProperty(value = "服务类型")
private String serviceType;
@ -134,7 +134,7 @@ public class FinanceWaybillExportVO implements Serializable {
@ExcelProperty(value = "总重量")
private BigDecimal totalWeight;
@ExcelProperty(value = "总重量")
@ExcelProperty(value = "总体积")
private BigDecimal totalVolume;
@ExcelProperty(value = "总费用")

5
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/controller/OrderController.java

@ -3,6 +3,7 @@ package com.logpm.factorydata.jinpai.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.logpm.factorydata.jinpai.pros.JinPaiProperties;
import com.logpm.factorydata.jinpai.service.DeliveryNoteService;
import com.logpm.factorydata.jinpai.vo.DeliveryNoteVO;
import com.logpm.factorydata.jinpai.vo.OrderInfoVO;
@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
* 工厂订单 前端控制器
@ -36,13 +38,14 @@ public class OrderController {
private final DeliveryNoteService service;
private final JinPaiProperties jinPaiProperties;
@ResponseBody
@PostMapping
@ApiOperationSupport(order = 1)
@ApiOperation(value = "工厂订单", notes = "工厂订单")
public R order(@RequestBody List<DeliveryNoteVO> vo) {
Map<String, String> warehouse = jinPaiProperties.getWarehouse();
log.info("接收工厂订单:{} ", JSONUtil.toJsonStr(vo));
String res = "";
try {

10
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/entity/FactoryNodePushEntity.java

@ -55,6 +55,16 @@ public class FactoryNodePushEntity extends BaseEntity {
*/
@ApiModelProperty(name = "订单号", notes = "")
private String orderCode;
/**
* 运单
*/
@ApiModelProperty(name = "运单", notes = "")
private String waybillCode;
/**
* 发货单号
*/
@ApiModelProperty(name = "发货单号", notes = "")
private String transportNo;
/**
* 节点
*/

7
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/enums/NodeMappingEnums.java

@ -16,12 +16,13 @@ public enum NodeMappingEnums {
/**
* 到达目的站
*/
FINAL_NET_ARRIVE_CAR(FactoryNodeEnums.FINAL_NET_ARRIVE_CAR, WorkNodeEnums.FINAL_NET_ARRIVE_CAR, 1),
// FINAL_NET_ARRIVE_CAR(FactoryNodeEnums.FINAL_NET_ARRIVE_CAR, WorkNodeEnums.FINAL_NET_ARRIVE_CAR, 1),
/**
* 包件入库
*/
END_WAREHOUSE_UNLOADING(FactoryNodeEnums.END_WAREHOUSE_UNLOADING, WorkNodeEnums.END_WAREHOUSE_UNLOADING, 1),
UNLOAD_INCOMING_WAREHOUSE(FactoryNodeEnums.END_WAREHOUSE_UNLOADING, WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE, 1),
// END_WAREHOUSE_UNLOADING(FactoryNodeEnums.END_WAREHOUSE_UNLOADING, WorkNodeEnums.END_WAREHOUSE_UNLOADING, 1),
FINAL_NET_ARRIVE_CAR(FactoryNodeEnums.FINAL_NET_ARRIVE_CAR, WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE, 1),
UNLOAD_INCOMING_WAREHOUSE(FactoryNodeEnums.END_WAREHOUSE_UNLOADING, WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE, 2),
;
/**

6
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/enums/NodeNeedEnums.java

@ -16,12 +16,12 @@ public enum NodeNeedEnums implements Serializable {
/**
* 到达目的站
*/
FINAL_NET_ARRIVE_CAR(1030100,"到达目的站"),
// FINAL_NET_ARRIVE_CAR(1030100,"到达目的站"),
/**
* 包件入库
*/
END_WAREHOUSE_UNLOADING(105040, "末端仓卸车确认"),
UNLOAD_INCOMING_WAREHOUSE(105010, "末端仓卸车确认"),
// END_WAREHOUSE_UNLOADING(105040, "末端仓卸车确认"),
UNLOAD_INCOMING_WAREHOUSE(105010, "卸车入库"),
;
private Integer code;

32
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/enums/WarehouseEnums.java

@ -0,0 +1,32 @@
package com.logpm.factorydata.jinpai.enums;
import org.springblade.common.model.IDict;
/**
* 金牌工厂枚举
*
* @author zhaoqiaobo
* @create 2024-04-28
*/
public enum WarehouseEnums implements IDict<String> {
LONG_QUAN("0504FCC44EA9CFE315A2BFF661095382", "龙泉仓"),
CHONG_QING("D770E5FD47FB7A783CD9F0EBD3017096", "重庆仓"),
ZI_GONG("CDB3BB8B33D645DF1AFA51CFCE41472B", "自贡仓"),
BA_ZHONG("74CA17A22421ADA84DAB040EA0797894", "巴中仓"),
NAN_CHONG("99ADD9B8B77C0739752F38A9708C61CD", "南充仓"),
CHANG_SHA("F64AD5CEBCCC8EF3FB1A5D44E0547B6C", "长沙仓"),
WAN_ZHOUG("D33A52459F6127C2A0992D4070E4F169", "万州仓"),
LU_ZHOU("0A5067099226E0943E8BAA230B9AED7A", "泸州仓"),
DA_ZHOU("CE7D2E506DEB3020FB0FC3CB8C8B619F", "达州仓"),
KUN_MING("91540EF5F401F2AEF582E7C8683753C1", "昆明仓"),
WU_HAN("898F1156FADF8AE5E61C76F07187426A", "武汉仓"),
XI_AN("80F42D9EAE8851C057F275D05E4B987D", "西安仓"),
GUANG_YUAN("9D5F309EFB333FF88230AEC95302E051", "广元仓"),
;
WarehouseEnums(String code, String text) {
init(code, text);
}
}

296
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mq/NodeDataPushListener.java

@ -1,6 +1,7 @@
package com.logpm.factorydata.jinpai.mq;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.EnumUtil;
import cn.hutool.core.util.NumberUtil;
@ -12,21 +13,24 @@ import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.factorydata.enums.BrandEnums;
import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.jinpai.entity.FactoryNodePushEntity;
import com.logpm.factorydata.jinpai.entity.PushOrderDetailEntity;
import com.logpm.factorydata.jinpai.entity.PushOrderEntity;
import com.logpm.factorydata.jinpai.enums.FactoryNodeEnums;
import com.logpm.factorydata.jinpai.enums.NodeNeedEnums;
import com.logpm.factorydata.jinpai.enums.WarehouseEnums;
import com.logpm.factorydata.jinpai.pros.JinPaiProperties;
import com.logpm.factorydata.jinpai.service.FactoryNodePushService;
import com.logpm.factorydata.jinpai.service.PushOrderDetailService;
import com.logpm.factorydata.jinpai.service.PushOrderService;
import com.logpm.factorydata.jinpai.vo.OldFactoeyVO;
import com.logpm.factorydata.vo.NodePushMsg;
import com.logpm.factorydata.vo.PushData;
import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.factorydata.FactoryDataConstants;
import org.springblade.common.model.IDict;
import org.springblade.common.utils.HutoolConfigUtil;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
@ -35,7 +39,9 @@ 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.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@ -53,8 +59,6 @@ import java.util.stream.Collectors;
public class NodeDataPushListener {
private final IFactoryDataClient factoryDataClient;
private final PushOrderDetailService pushOrderDetailService;
private final PushOrderService pushOrderService;
private final FactoryNodePushService factoryNodePushService;
private final JinPaiProperties jinPaiProperties;
@ -89,37 +93,21 @@ public class NodeDataPushListener {
WorkNodeEnums workNodeEnums = EnumUtil.fromString(WorkNodeEnums.class, node);
// 2 获取业务数据
List<PushData> content = entries.getBeanList("content", PushData.class);
// 数据按订单分组
// 3 拿到所有必推节点的code
List<Integer> mustPushCode = FactoryNodeEnums.getMustPushCode();
if (CollUtil.isNotEmpty(content)) {
// 卸车扫描节点 判断是否是末端仓卸车,末端仓卸车推送的数据推送
if (NodeNeedEnums.UNLOAD_INCOMING_WAREHOUSE.getCode().equals(workNodeEnums.getCode())) {
content = content.stream().filter(item -> ObjectUtil.equal(item.getWarehouseName(), item.getDestinationWarehouse())).collect(Collectors.toList());
}
// 按订单分组
Map<String, List<PushData>> orderGroup = content.stream().collect(Collectors.groupingBy(PushData::getOrderCode));
// 查询出本次操作的所有订单
Set<String> orderCodes = content.stream().map(PushData::getOrderCode).collect(Collectors.toSet());
if (CollUtil.isEmpty(orderCodes)) {
log.info("订单数据为空,不处理:{}", JSONUtil.toJsonStr(content));
return;
}
for (Map.Entry<String, List<PushData>> stringListEntry : orderGroup.entrySet()) {
String sendOrderCode = stringListEntry.getKey();
List<PushData> values = stringListEntry.getValue();
// 先从新系统查,如果查不到,去老系统查一次
List<PushOrderDetailEntity> orderDetailEntities = null;
// List<PushOrderDetailEntity> orderDetailEntities = pushOrderDetailService.list(Wrappers.<PushOrderDetailEntity>lambdaQuery()
// .in(PushOrderDetailEntity::getCustomItemNo, sendOrderCode)
// );
Boolean flag = Boolean.FALSE;
PushOrderEntity pushOrderEntity = new PushOrderEntity();
if (CollUtil.isEmpty(orderDetailEntities)) {
Map<String, OldFactoeyVO> oldFactoeyVOMap = new HashMap<>();
List<OldFactoeyVO> oldFactoeyVOS = null;
if (CollUtil.isEmpty(oldFactoeyVOS)) {
// 去老系统查
if (StrUtil.isNotEmpty(jinPaiProperties.getOldSystemHost()) && StrUtil.isNotEmpty(jinPaiProperties.getFindOldDataUrl())) {
try {
log.info("去老系统查询:{}", sendOrderCode);
// 工厂推送的一个订单可能分批次发货,对应的发货单号不一样。只能按包件+订单才能查到唯一的发运单号和工厂对接唯一标识
String result = HttpUtil.get(jinPaiProperties.getOldSystemHost() + jinPaiProperties.getFindOldDataUrl() + "?orderCode=" + sendOrderCode);
log.info("老系统查询结果:{}", result);
if (StrUtil.isNotEmpty(result)) {
@ -128,9 +116,14 @@ public class NodeDataPushListener {
if (NumberUtil.equals(code, 200)) {
JSONArray data = jsonObject.getJSONArray("data");
if (CollUtil.isNotEmpty(data)) {
orderDetailEntities = data.toList(PushOrderDetailEntity.class);
pushOrderEntity = data.get(0, PushOrderEntity.class);
flag = Boolean.TRUE;
for (OldFactoeyVO oldFactoeyVO : data.toList(OldFactoeyVO.class)) {
String boxCodeList = oldFactoeyVO.getBoxCodeList();
JSONArray boxCodeListJson = JSONUtil.parseArray(boxCodeList);
boxCodeListJson.forEach(item -> {
// 包件号+订单号 为一组组装工厂原始数据
oldFactoeyVOMap.put(item.toString() + oldFactoeyVO.getCustomItemNo(), oldFactoeyVO);
});
}
}
}
}
@ -139,132 +132,79 @@ public class NodeDataPushListener {
}
}
}
if (CollUtil.isEmpty(orderDetailEntities)) {
log.info("未查到包件数据,不处理:{}", JSONUtil.toJsonStr(content));
return;
}
// 订单 warehouse 不为空为干线,否则为仓配,推送干线的同时回推仓配
// Map<String, String> orderCodeMap = orderDetailEntities.stream().collect(Collectors.toMap(PushOrderDetailEntity::getOrderId, PushOrderDetailEntity::getCustomItemNo));
// Map<String, PushOrderDetailEntity> detailEntityMap = orderDetailEntities.stream().collect(Collectors.toMap(PushOrderDetailEntity::getCustomItemNo, v -> v));
Map<String, List<PushOrderDetailEntity>> detailEntityMap = orderDetailEntities.stream()
.collect(Collectors.groupingBy(PushOrderDetailEntity::getCustomItemNo));
// List<String> orderIds = orderDetailEntities.stream().map(PushOrderDetailEntity::getOrderId).collect(Collectors.toList());
// Map<String, PushOrderEntity> pushOrderEntityMap = new HashMap<>();
// if (CollUtil.isNotEmpty(orderIds)) {
// List<PushOrderEntity> pushOrderEntities = pushOrderService.listByIds(orderIds);
// if (CollUtil.isNotEmpty(pushOrderEntities)) {
// pushOrderEntities.forEach(pushOrderEntity -> {
// pushOrderEntityMap.put(orderCodeMap.get(pushOrderEntity.getId().toString()), pushOrderEntity);
// });
// }
// }
List<FactoryNodePushEntity> pushEntities = factoryNodePushService.list(Wrappers.<FactoryNodePushEntity>lambdaQuery()
.eq(FactoryNodePushEntity::getOrderCode, sendOrderCode)
);
// 到站还是入库
if (workNodeEnums.equals(WorkNodeEnums.FINAL_NET_ARRIVE_CAR)) {
Map<String, FactoryNodePushEntity> pushEntityMap = new HashMap<>();
if (CollUtil.isNotEmpty(pushEntities)) {
pushEntityMap = pushEntities.stream().filter(pushEntity -> {
return StrUtil.equals(pushEntity.getNode(), FactoryNodeEnums.FINAL_NET_ARRIVE_CAR.getCode().toString());
}).collect(Collectors.toMap(FactoryNodePushEntity::getOrderCode, v -> v));
}
JSONObject mainJson = JSONUtil.parseObj(main);
// 到站 一个订单只发送一次
// for (String orderCode : orderCodes) {
if (pushEntityMap.containsKey(sendOrderCode)) {
continue;
}
String arriveFor = "carrier";
// PushOrderEntity pushOrderEntity = pushOrderEntityMap.get(orderCode);
if (ObjectUtil.isNotEmpty(pushOrderEntity) && StrUtil.isNotEmpty(pushOrderEntity.getWarehouse())) {
arriveFor = "stock";
}
PushOrderDetailEntity pushOrderDetailEntity = detailEntityMap.get(sendOrderCode).get(0);
String boxCodeList = pushOrderDetailEntity.getBoxCodeList();
JSONArray boxCodeListJson = JSONUtil.parseArray(boxCodeList);
// JSONArray details = new JSONArray();
JSONObject detail = new JSONObject();
boxCodeListJson.forEach(item -> {
// JSONObject jsonObject = new JSONObject();
detail.set(item.toString(), 1);
// details.add(jsonObject);
});
if (!CollUtil.contains(pushEntityMap.keySet(), sendOrderCode)) {
JSONObject js = new JSONObject();
js.set("extOrderNo", sendOrderCode);
js.set("extWaybillNO", mainJson.getStr("serviceNumber"));
js.set("detail", detail);
// js.set("shipNo", mainJson.getStr("waybillNumber"));
js.set("shipNo", pushOrderDetailEntity.getShipNo());
js.set("targetNo", pushOrderEntity.getTransportNo());
js.set("targetType", 1);
js.set("doType", 32);
js.set("doLocation", "");
js.set("doTime", DateUtil.now());
js.set("sendSite", mainJson.getStr("sendWarehouseName"));
js.set("endSite", mainJson.getStr("warehouseName"));
js.set("passSite", mainJson.getStr("acceptWarehouseName"));
js.set("doRemark", "");
js.set("reqSn", (RandomUtil.randomLong(100000000000000000L, 999999999999999999L)) + "");
js.set("syscode", "huitong");
js.set("carNo", mainJson.getStr("carNumber"));
js.set("carHangNo", "");
js.set("driverName", mainJson.getStr("driverName"));
js.set("driverPhone", mainJson.getStr("driverMobile"));
js.set("carType", "A");
js.set("carSize", "1");
js.set("arriveFor", arriveFor);
log.info("推送工厂:{}", js);
String url = jinPaiProperties.getOldSystemHost() + jinPaiProperties.getOldSystemArrivedUrl();
try {
if (jinPaiProperties.getEnable()) {
String result = HttpUtil.post(url, JSONUtil.toJsonStr(js));
log.info("推送工厂结果:{}", result);
// 保存推送记录
factoryNodePushService.save(FactoryNodePushEntity.builder()
.orderCode(sendOrderCode)
.node(FactoryNodeEnums.FINAL_NET_ARRIVE_CAR.getCode().toString())
.content(JSONUtil.toJsonStr(js))
.resultContent(result)
.build());
// 过滤掉本次不需要处理的数据
List<PushData> filterData = values.stream().filter(item -> {
String packageCode = item.getPackageCode();
String orderCode = item.getOrderCode();
String warehouseName = item.getWarehouseName();
String destinationWarehouse = item.getDestinationWarehouse();
if (oldFactoeyVOMap.containsKey(packageCode + orderCode)) {
OldFactoeyVO oldFactoeyVO = oldFactoeyVOMap.get(packageCode + orderCode);
// 判断当前仓是否是末端仓
Boolean isEnd = Boolean.FALSE;
if (StrUtil.equals(destinationWarehouse, warehouseName)) {
isEnd = Boolean.TRUE;
}
if (StrUtil.isEmpty(oldFactoeyVO.getWarehouse())) {
// 1 如果当前包条没有仓库 则是干线数据 按运单是否是末端仓推送
if (isEnd) {
return true;
} else {
return false;
}
} else {
// 2 如果当前包条有仓库 则是仓配数据 按当前仓是否是金牌的末端仓推送, 如果到了运单末端仓,不是金牌的末端仓,则按运单末端仓回推
String text = IDict.getByCode(WarehouseEnums.class, oldFactoeyVO.getWarehouse()).getText();
if (StrUtil.equals(warehouseName, text)) {
return true;
} else {
if (isEnd) {
return true;
} else {
return false;
}
}
} catch (Exception e) {
log.error("推送工厂失败:{}", e);
}
}
// }
} else {
// 入库一个包件一次
Map<String, FactoryNodePushEntity> pushEntityMap = new HashMap<>();
return false;
}).collect(Collectors.toList());
// 需要推送的数据
if (CollUtil.isNotEmpty(filterData)) {
// 当前订单的到达记录
List<FactoryNodePushEntity> pushEntities = factoryNodePushService.list(Wrappers.<FactoryNodePushEntity>lambdaQuery()
.eq(FactoryNodePushEntity::getOrderCode, sendOrderCode)
.eq(FactoryNodePushEntity::getNode, Convert.toStr(FactoryNodeEnums.FINAL_NET_ARRIVE_CAR.getCode()))
);
// 当前 订单 + 发货单 是否推到达 ,已推 推送到货,未推 推送到达,延迟推送到货
Set<String> collect = new HashSet<>();
if (CollUtil.isNotEmpty(pushEntities)) {
pushEntityMap = pushEntities.stream().filter(pushEntity -> {
return StrUtil.equals(pushEntity.getNode(), FactoryNodeEnums.END_WAREHOUSE_UNLOADING.getCode().toString());
}).collect(Collectors.toMap(FactoryNodePushEntity::getPackageCode, v -> v));
collect = pushEntities.stream().map(item -> item.getOrderCode() + item.getTransportNo()).collect(Collectors.toSet());
}
for (PushData pushData : values) {
if (!CollUtil.contains(pushEntityMap.keySet(), pushData.getPackageCode())) {
Set<String> pushOrderSet = new HashSet<>();
for (PushData filterDatum : filterData) {
String packageCode = filterDatum.getPackageCode();
String orderCode = filterDatum.getOrderCode();
OldFactoeyVO oldFactoeyVO = oldFactoeyVOMap.get(packageCode + orderCode);
String transportNo = oldFactoeyVO.getTransportNo();
String waybillNumber = filterDatum.getWaybillNumber();
if (collect.contains(orderCode + transportNo)) {
// 已经推送了到达,只推送到货
String arriveFor = "stock";
// PushOrderEntity pushOrderEntity = pushOrderEntityMap.get(pushData.getOrderCode());
if (StrUtil.isEmpty(pushOrderEntity.getWarehouse())) {
if (StrUtil.isEmpty(oldFactoeyVO.getWarehouse())) {
arriveFor = "carrier";
}
JSONObject js = new JSONObject();
js.set("extOrderNo", pushData.getOrderCode());
js.set("extWaybillNO", detailEntityMap.get(pushData.getOrderCode()).get(0).getCustomOrderNo());
// js.set("transportNo", pushOrderEntityMap.get(pushData.getOrderCode()).getTransportNo());
js.set("transportNo", pushOrderEntity.getTransportNo());
js.set("extOrderNo", orderCode);
js.set("extWaybillNO", waybillNumber);
js.set("transportNo", transportNo);
js.set("doTime", entries.getStr("operatorTime"));
js.set("syscode", "huitong");
js.set("reqSn", (RandomUtil.randomLong(100000000000000000L, 999999999999999999L)) + "");
// js.set("reqSn", detailEntityMap.get(pushData.getOrderCode()).getShipNo());
js.set("arriveFor", arriveFor);
JSONObject detailJson = new JSONObject();
detailJson.set(pushData.getPackageCode(), 1);
detailJson.set(packageCode, 1);
js.set("detail", detailJson);
js.set("shipNo", detailEntityMap.get(pushData.getOrderCode()).get(0).getShipNo());
js.set("shipNo", oldFactoeyVO.getShipNo());
log.info("推送工厂:{}", js);
String url = jinPaiProperties.getOldSystemHost() + jinPaiProperties.getOldSystemAlreadyStockedUrl();
try {
@ -273,16 +213,88 @@ public class NodeDataPushListener {
log.info("推送工厂结果:{}", result);
// 保存推送记录
factoryNodePushService.save(FactoryNodePushEntity.builder()
.orderCode(pushData.getOrderCode())
.orderCode(orderCode)
.node(FactoryNodeEnums.END_WAREHOUSE_UNLOADING.getCode().toString())
.content(JSONUtil.toJsonStr(js))
.packageCode(pushData.getPackageCode())
.packageCode(packageCode)
.resultContent(result)
.build());
}
} catch (Exception e) {
log.error("推送工厂失败:{}", e);
}
} else {
// 没有推送到达, 推送到达,发送延迟消息
if (!pushOrderSet.contains(orderCode + transportNo)) {
JSONObject mainJson = JSONUtil.parseObj(main);
String arriveFor = "carrier";
if (StrUtil.isNotEmpty(oldFactoeyVO.getWarehouse())) {
arriveFor = "stock";
}
String boxCodeList = oldFactoeyVO.getBoxCodeList();
JSONArray boxCodeListJson = JSONUtil.parseArray(boxCodeList);
JSONObject detail = new JSONObject();
boxCodeListJson.forEach(item -> {
detail.set(item.toString(), 1);
});
JSONObject js = new JSONObject();
js.set("extOrderNo", sendOrderCode);
js.set("extWaybillNO", waybillNumber);
js.set("detail", detail);
js.set("shipNo", oldFactoeyVO.getTransportNo());
js.set("targetNo", transportNo);
js.set("targetType", 1);
js.set("doType", 32);
js.set("doLocation", "");
js.set("doTime", entries.getStr("operatorTime"));
js.set("sendSite", mainJson.getStr("sendWarehouseName"));
js.set("endSite", mainJson.getStr("warehouseName"));
js.set("passSite", mainJson.getStr("acceptWarehouseName"));
js.set("doRemark", "");
js.set("reqSn", (RandomUtil.randomLong(100000000000000000L, 999999999999999999L)) + "");
js.set("syscode", "huitong");
js.set("carNo", mainJson.getStr("carNumber"));
js.set("carHangNo", "");
js.set("driverName", mainJson.getStr("driverName"));
js.set("driverPhone", mainJson.getStr("driverMobile"));
js.set("carType", "A");
js.set("carSize", "1");
js.set("arriveFor", arriveFor);
log.info("推送工厂:{}", js);
String url = jinPaiProperties.getOldSystemHost() + jinPaiProperties.getOldSystemArrivedUrl();
try {
if (jinPaiProperties.getEnable()) {
String result = HttpUtil.post(url, JSONUtil.toJsonStr(js));
log.info("推送工厂结果:{}", result);
// 保存推送记录
factoryNodePushService.save(FactoryNodePushEntity.builder()
.orderCode(sendOrderCode)
.transportNo(transportNo)
.node(FactoryNodeEnums.FINAL_NET_ARRIVE_CAR.getCode().toString())
.content(JSONUtil.toJsonStr(js))
.resultContent(result)
.build());
}
} catch (Exception e) {
log.error("推送工厂失败:{}", e);
}
}
ArrayList<Object> objects = new ArrayList<>();
objects.add(filterDatum);
NodePushMsg nodePushMsg = NodePushMsg.builder()
.node(EnumUtil.fromString(WorkNodeEnums.class, node))
.operator(entries.getStr("operator"))
.operatorTime(DateUtil.parseDateTime(entries.getStr("operatorTime")))
.main(main)
.brand(BrandEnums.JP)
.content(objects)
.build();
factoryDataClient.sendMessage(SendMsg.builder()
.exchange(FactoryDataConstants.Mq.Exchanges.NODE_DATA_PUSH_DELAYED)
.routingKey(FactoryDataConstants.Mq.RoutingKeys.JP_NODE_DATA_PUSH)
.message(JSONUtil.toJsonStr(nodePushMsg, HutoolConfigUtil.jsonConfigByDataTimeFormat()))
.delay(3000)
.build());
}
}
}

360
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mq/NodeDataPushV2Listener.java

@ -0,0 +1,360 @@
package com.logpm.factorydata.jinpai.mq;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.EnumUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
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.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.jinpai.entity.FactoryNodePushEntity;
import com.logpm.factorydata.jinpai.entity.PushOrderDetailEntity;
import com.logpm.factorydata.jinpai.entity.PushOrderEntity;
import com.logpm.factorydata.jinpai.enums.FactoryNodeEnums;
import com.logpm.factorydata.jinpai.enums.NodeMappingEnums;
import com.logpm.factorydata.jinpai.enums.NodeNeedEnums;
import com.logpm.factorydata.jinpai.enums.WarehouseEnums;
import com.logpm.factorydata.jinpai.pros.JinPaiProperties;
import com.logpm.factorydata.jinpai.service.FactoryNodePushService;
import com.logpm.factorydata.jinpai.service.PushOrderDetailService;
import com.logpm.factorydata.jinpai.service.PushOrderService;
import com.logpm.factorydata.jinpai.vo.OldFactoeyVO;
import com.logpm.factorydata.vo.PushData;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.model.IDict;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 监听业务系统推送给工厂的节点数据
*
* @author zhaoqiaobo
* @create 2024-03-18 0:02
*/
@Slf4j
@Component
@AllArgsConstructor
public class NodeDataPushV2Listener {
private final IFactoryDataClient factoryDataClient;
private final PushOrderDetailService pushOrderDetailService;
private final PushOrderService pushOrderService;
private final FactoryNodePushService factoryNodePushService;
private final JinPaiProperties jinPaiProperties;
// @RabbitListener(bindings = @QueueBinding(
// value = @Queue(name = FactoryDataConstants.Mq.Queues.JP_NODE_DATA_PUSH, durable = "true"),
// exchange = @Exchange(name = FactoryDataConstants.Mq.Exchanges.NODE_DATA_PUSH_DELAYED, type = ExchangeTypes.TOPIC
// , delayed = FactoryDataConstants.Mq.DELAYED),
// key = FactoryDataConstants.Mq.RoutingKeys.JP_NODE_DATA_PUSH
// ))
public void nodeDataPushDelayed(String msg) {
// 直接调用nodeDataPush方法处理接收到的消息
nodeDataPush(msg);
}
// @RabbitListener(bindings = @QueueBinding(
// value = @Queue(name = FactoryDataConstants.Mq.Queues.JP_NODE_DATA_PUSH, durable = "true"),
// exchange = @Exchange(name = FactoryDataConstants.Mq.Exchanges.NODE_DATA_PUSH, type = ExchangeTypes.TOPIC),
// key = FactoryDataConstants.Mq.RoutingKeys.JP_NODE_DATA_PUSH
// ))
// @Transactional(rollbackFor = Exception.class)
public void nodeDataPush(String msg) {
// {"brand":"ZBOM","node":"TRANSFER_WAREHOUSE_DEPART","operator":"","operatorTime":"","content":[{"packageCode":"1423090693445"}]}
log.info("接收到节点数据推送:{}", msg);
// 1 校验数据
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 factoryByNodeAndStatus = NodeMappingEnums.getFactoryByNodeAndStatus(workNodeEnums);
// 2 获取业务数据
List<PushData> content = entries.getBeanList("content", PushData.class);
if (CollUtil.isNotEmpty(content)) {
// 按订单分组
Map<String, List<PushData>> orderGroup = content.stream().collect(Collectors.groupingBy(PushData::getOrderCode));
for (Map.Entry<String, List<PushData>> stringListEntry : orderGroup.entrySet()) {
String sendOrderCode = stringListEntry.getKey();
List<PushData> values = stringListEntry.getValue();
// 先从新系统查,如果查不到,去老系统查一次
Map<String, OldFactoeyVO> oldFactoeyVOMap = new HashMap<>();
List<OldFactoeyVO> oldFactoeyVOS = null;
PushOrderEntity pushOrderEntity = new PushOrderEntity();
if (CollUtil.isEmpty(oldFactoeyVOS)) {
// 去老系统查
if (StrUtil.isNotEmpty(jinPaiProperties.getOldSystemHost()) && StrUtil.isNotEmpty(jinPaiProperties.getFindOldDataUrl())) {
try {
log.info("去老系统查询:{}", sendOrderCode);
// 工厂推送的一个订单可能分批次发货,对应的发货单号不一样。只能按包件+订单才能查到唯一的发运单号和工厂对接唯一标识
String result = HttpUtil.get(jinPaiProperties.getOldSystemHost() + jinPaiProperties.getFindOldDataUrl() + "?orderCode=" + sendOrderCode);
log.info("老系统查询结果:{}", result);
if (StrUtil.isNotEmpty(result)) {
JSONObject jsonObject = JSONUtil.parseObj(result);
Integer code = jsonObject.getInt("code");
if (NumberUtil.equals(code, 200)) {
JSONArray data = jsonObject.getJSONArray("data");
if (CollUtil.isNotEmpty(data)) {
for (OldFactoeyVO oldFactoeyVO : data.toList(OldFactoeyVO.class)) {
String boxCodeList = oldFactoeyVO.getBoxCodeList();
JSONArray boxCodeListJson = JSONUtil.parseArray(boxCodeList);
boxCodeListJson.forEach(item -> {
// 包件号+订单号 为一组组装工厂原始数据
oldFactoeyVOMap.put(item.toString() + oldFactoeyVO.getCustomItemNo(), oldFactoeyVO);
});
}
}
}
}
} catch (Exception e) {
log.error("老系统查询失败", e);
}
}
}
// 过滤掉本次不需要处理的数据
List<PushData> filterData = values.stream().filter(item -> {
String packageCode = item.getPackageCode();
String orderCode = item.getOrderCode();
String warehouseName = item.getWarehouseName();
String destinationWarehouse = item.getDestinationWarehouse();
if (oldFactoeyVOMap.containsKey(packageCode + orderCode)) {
OldFactoeyVO oldFactoeyVO = oldFactoeyVOMap.get(packageCode + orderCode);
// 判断当前仓是否是末端仓
Boolean isEnd = Boolean.FALSE;
if (StrUtil.equals(destinationWarehouse, warehouseName)) {
isEnd = Boolean.TRUE;
}
if (StrUtil.isEmpty(oldFactoeyVO.getWarehouse())) {
// 1 如果当前包条没有仓库 则是干线数据 按运单是否是末端仓推送
if (isEnd) {
return true;
} else {
return false;
}
} else {
// 2 如果当前包条有仓库 则是仓配数据 按当前仓是否是金牌的末端仓推送, 如果到了运单末端仓,不是金牌的末端仓,则按运单末端仓回推
String text = IDict.getByCode(WarehouseEnums.class, oldFactoeyVO.getWarehouse()).getText();
if (StrUtil.equals(warehouseName, text)) {
return true;
} else {
if (isEnd) {
return true;
} else {
return false;
}
}
}
}
return false;
}).collect(Collectors.toList());
// 需要推送的数据
if (CollUtil.isNotEmpty(filterData)) {
// 所有已推数据
Map<String, FactoryNodePushEntity> pushEntityMap = new HashMap<>();
// 当前订单 当前节点的推送记录
List<FactoryNodePushEntity> pushEntities = factoryNodePushService.list(Wrappers.<FactoryNodePushEntity>lambdaQuery()
.eq(FactoryNodePushEntity::getOrderCode, sendOrderCode)
.eq(FactoryNodePushEntity::getNode, factoryByNodeAndStatus.getCode())
);
// 按 订单 + 运单号 + 发运单号 分组
if (CollUtil.isNotEmpty(pushEntities)) {
// 过滤出当前节点当前订单已经推送过的
pushEntityMap = pushEntities.stream().filter(pushEntity -> {
return StrUtil.equals(pushEntity.getNode(), factoryByNodeAndStatus.getCode().toString());
}).collect(Collectors.toMap(i -> (i.getOrderCode() + i.getWaybillCode() + i.getTransportNo()), v -> v));
}
Map<String, List<PushData>> orderWaybillGroup = filterData.stream().collect(Collectors.groupingBy(item -> item.getOrderCode() + item.getWaybillNumber() + oldFactoeyVOMap.get(item.getPackageCode() + item.getOrderCode()).getTransportNo()));
for (Map.Entry<String, List<PushData>> listEntry : orderWaybillGroup.entrySet()) {
}
}
List<PushOrderDetailEntity> orderDetailEntities = null;
// 订单 warehouse 不为空为干线,否则为仓配,推送干线的同时回推仓配
Map<String, List<PushOrderDetailEntity>> detailEntityMap = orderDetailEntities.stream()
.collect(Collectors.groupingBy(PushOrderDetailEntity::getCustomItemNo));
// List<String> orderIds = orderDetailEntities.stream().map(PushOrderDetailEntity::getOrderId).collect(Collectors.toList());
// Map<String, PushOrderEntity> pushOrderEntityMap = new HashMap<>();
// if (CollUtil.isNotEmpty(orderIds)) {
// List<PushOrderEntity> pushOrderEntities = pushOrderService.listByIds(orderIds);
// if (CollUtil.isNotEmpty(pushOrderEntities)) {
// pushOrderEntities.forEach(pushOrderEntity -> {
// pushOrderEntityMap.put(orderCodeMap.get(pushOrderEntity.getId().toString()), pushOrderEntity);
// });
// }
// }
List<FactoryNodePushEntity> pushEntities = null;
// 到站还是入库
if (workNodeEnums.equals(WorkNodeEnums.FINAL_NET_ARRIVE_CAR)) {
Map<String, FactoryNodePushEntity> pushEntityMap = new HashMap<>();
if (CollUtil.isNotEmpty(pushEntities)) {
pushEntityMap = pushEntities.stream().filter(pushEntity -> {
return StrUtil.equals(pushEntity.getNode(), FactoryNodeEnums.FINAL_NET_ARRIVE_CAR.getCode().toString());
}).collect(Collectors.toMap(FactoryNodePushEntity::getOrderCode, v -> v));
}
JSONObject mainJson = JSONUtil.parseObj(main);
// 到站 一个订单只发送一次
// for (String orderCode : orderCodes) {
if (pushEntityMap.containsKey(sendOrderCode)) {
continue;
}
String arriveFor = "carrier";
// PushOrderEntity pushOrderEntity = pushOrderEntityMap.get(orderCode);
if (ObjectUtil.isNotEmpty(pushOrderEntity) && StrUtil.isNotEmpty(pushOrderEntity.getWarehouse())) {
arriveFor = "stock";
}
PushOrderDetailEntity pushOrderDetailEntity = detailEntityMap.get(sendOrderCode).get(0);
String boxCodeList = pushOrderDetailEntity.getBoxCodeList();
JSONArray boxCodeListJson = JSONUtil.parseArray(boxCodeList);
// JSONArray details = new JSONArray();
JSONObject detail = new JSONObject();
boxCodeListJson.forEach(item -> {
// JSONObject jsonObject = new JSONObject();
detail.set(item.toString(), 1);
// details.add(jsonObject);
});
if (!CollUtil.contains(pushEntityMap.keySet(), sendOrderCode)) {
JSONObject js = new JSONObject();
js.set("extOrderNo", sendOrderCode);
js.set("extWaybillNO", mainJson.getStr("serviceNumber"));
js.set("detail", detail);
// js.set("shipNo", mainJson.getStr("waybillNumber"));
js.set("shipNo", pushOrderDetailEntity.getShipNo());
js.set("targetNo", pushOrderEntity.getTransportNo());
js.set("targetType", 1);
js.set("doType", 32);
js.set("doLocation", "");
js.set("doTime", DateUtil.now());
js.set("sendSite", mainJson.getStr("sendWarehouseName"));
js.set("endSite", mainJson.getStr("warehouseName"));
js.set("passSite", mainJson.getStr("acceptWarehouseName"));
js.set("doRemark", "");
js.set("reqSn", (RandomUtil.randomLong(100000000000000000L, 999999999999999999L)) + "");
js.set("syscode", "huitong");
js.set("carNo", mainJson.getStr("carNumber"));
js.set("carHangNo", "");
js.set("driverName", mainJson.getStr("driverName"));
js.set("driverPhone", mainJson.getStr("driverMobile"));
js.set("carType", "A");
js.set("carSize", "1");
js.set("arriveFor", arriveFor);
log.info("推送工厂:{}", js);
String url = jinPaiProperties.getOldSystemHost() + jinPaiProperties.getOldSystemArrivedUrl();
try {
if (jinPaiProperties.getEnable()) {
String result = HttpUtil.post(url, JSONUtil.toJsonStr(js));
log.info("推送工厂结果:{}", result);
// 保存推送记录
factoryNodePushService.save(FactoryNodePushEntity.builder()
.orderCode(sendOrderCode)
.node(FactoryNodeEnums.FINAL_NET_ARRIVE_CAR.getCode().toString())
.content(JSONUtil.toJsonStr(js))
.resultContent(result)
.build());
}
} catch (Exception e) {
log.error("推送工厂失败:{}", e);
}
}
// }
} else {
// 入库一个包件一次
Map<String, FactoryNodePushEntity> pushEntityMap = new HashMap<>();
if (CollUtil.isNotEmpty(pushEntities)) {
pushEntityMap = pushEntities.stream().filter(pushEntity -> {
return StrUtil.equals(pushEntity.getNode(), FactoryNodeEnums.END_WAREHOUSE_UNLOADING.getCode().toString());
}).collect(Collectors.toMap(FactoryNodePushEntity::getPackageCode, v -> v));
}
for (PushData pushData : values) {
if (!CollUtil.contains(pushEntityMap.keySet(), pushData.getPackageCode())) {
String arriveFor = "stock";
// PushOrderEntity pushOrderEntity = pushOrderEntityMap.get(pushData.getOrderCode());
if (StrUtil.isEmpty(pushOrderEntity.getWarehouse())) {
arriveFor = "carrier";
}
JSONObject js = new JSONObject();
js.set("extOrderNo", pushData.getOrderCode());
js.set("extWaybillNO", detailEntityMap.get(pushData.getOrderCode()).get(0).getCustomOrderNo());
// js.set("transportNo", pushOrderEntityMap.get(pushData.getOrderCode()).getTransportNo());
js.set("transportNo", pushOrderEntity.getTransportNo());
js.set("doTime", entries.getStr("operatorTime"));
js.set("syscode", "huitong");
js.set("reqSn", (RandomUtil.randomLong(100000000000000000L, 999999999999999999L)) + "");
// js.set("reqSn", detailEntityMap.get(pushData.getOrderCode()).getShipNo());
js.set("arriveFor", arriveFor);
JSONObject detailJson = new JSONObject();
detailJson.set(pushData.getPackageCode(), 1);
js.set("detail", detailJson);
js.set("shipNo", detailEntityMap.get(pushData.getOrderCode()).get(0).getShipNo());
log.info("推送工厂:{}", js);
String url = jinPaiProperties.getOldSystemHost() + jinPaiProperties.getOldSystemAlreadyStockedUrl();
try {
if (jinPaiProperties.getEnable()) {
String result = HttpUtil.post(url, JSONUtil.toJsonStr(js));
log.info("推送工厂结果:{}", result);
// 保存推送记录
factoryNodePushService.save(FactoryNodePushEntity.builder()
.orderCode(pushData.getOrderCode())
.node(FactoryNodeEnums.END_WAREHOUSE_UNLOADING.getCode().toString())
.content(JSONUtil.toJsonStr(js))
.packageCode(pushData.getPackageCode())
.resultContent(result)
.build());
}
} catch (Exception e) {
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<JSONObject> content = entries.getBeanList("content", JSONObject.class);
if (CollUtil.isEmpty(content)) {
return true;
}
return false;
}
}

3
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/pros/JinPaiProperties.java

@ -4,6 +4,8 @@ import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* FactoryProperties
*
@ -65,5 +67,6 @@ public class JinPaiProperties {
*/
private String oldSystemAlreadyStockedUrl;
private Map<String,String> warehouse;
}

44
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/vo/OldFactoeyVO.java

@ -0,0 +1,44 @@
package com.logpm.factorydata.jinpai.vo;
import lombok.Data;
import java.io.Serializable;
/**
* 老系统查询工厂必要字段vo
* @author zhaoqiaobo
* @create 2024-04-30
*/
@Data
public class OldFactoeyVO implements Serializable {
/**
* 唯一标识目前是dd单号但是dd单号不唯一
*/
private String orderId;
/**
* DD单号
*/
private String customItemNo;
/**
* 工厂对接唯一标识
*/
private String shipNo;
/**
* 仓库
*/
private String warehouse;
/**
* 发运单号
*/
private String transportNo;
/**
* ys单号
*/
private String customOrderNo;
/**
* 包件明细 "[\"0-XD7P\", \"0-XI6H\"]"
*/
private String boxCodeList;
}

2
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/entity/DeliveryNoteEntity.java

@ -77,6 +77,8 @@ public class DeliveryNoteEntity extends BaseEntity {
private String flag;
@ApiModelProperty(name = "发运方式")
private String shipmentTypeDesc;
@ApiModelProperty(name = "品类")
private String type;
@ApiModelProperty(name = "预留1", notes = "")
private String reserve1;

2
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/impl/DeliveryNoteServiceImpl.java

@ -192,7 +192,7 @@ public class DeliveryNoteServiceImpl extends BaseServiceImpl<DeliveryNoteMapper,
advanceDetailEntity.setOrderCode(orderPackageDTO.getCrmSo());
advanceDetailEntity.setBrand(BrandEnums.OLO.getValue());
advanceDetailEntity.setSystemType("线上");
advanceDetailEntity.setFirstPackName(orderPackageDTO.getMaterialCategory());
advanceDetailEntity.setFirstPackName(orderPackageDTO.getType());
// 获取映射志邦映射品类信息
// 二级品类名称
advanceDetailEntity.setSecondPackName(orderPackageDTO.getMaterialCategory());

22
blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCheckListener.java

@ -458,6 +458,8 @@ public class WaybillCheckListener {
BigDecimal insuranceFee = Objects.isNull(waybillEntity.getInsuranceFee()) ? BigDecimal.ZERO : waybillEntity.getInsuranceFee();
BigDecimal otherFee = Objects.isNull(waybillEntity.getOtherFee()) ? BigDecimal.ZERO : waybillEntity.getOtherFee();
BigDecimal thirdOperationFee = Objects.isNull(waybillEntity.getThirdOperationFee()) ? BigDecimal.ZERO : waybillEntity.getThirdOperationFee();
BigDecimal sortingFee = Objects.isNull(waybillEntity.getSortingFee()) ? BigDecimal.ZERO : waybillEntity.getSortingFee();
BigDecimal deliveryFee = Objects.isNull(waybillEntity.getDeliveryFee()) ? BigDecimal.ZERO : waybillEntity.getDeliveryFee();
Integer totalCount = waybillEntity.getTotalCount();
// BigDecimal pickupPrice = pickupFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
@ -467,6 +469,8 @@ public class WaybillCheckListener {
BigDecimal insurancePrice = insuranceFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal otherPrice = otherFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal thirdOperationPrice = thirdOperationFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal sortingPrice = sortingFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal deliveryPrice = deliveryFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
//查询运单下所有的订单
@ -480,6 +484,14 @@ public class WaybillCheckListener {
.collect(Collectors.toMap(WarehouseWayBillDetail::getProductId, wayBillDetail -> wayBillDetail));
// wayBillDetailMapByProductId.keySet().forEach(productId -> {
// WarehouseWayBillDetail warehouseWayBillDetail = wayBillDetailMapByProductId.get(productId);
//
//
//
// });
//保存订单信息
List<StatisticsOrderInfoEntity> orderInfoEntities = new ArrayList<>();
@ -643,8 +655,8 @@ public class WaybillCheckListener {
warehousePackageEntity.setNum(1);
warehousePackageEntity.setWarehouseFee(warehousePrice.multiply(BigDecimal.ONE));
warehousePackageEntity.setWarehouseManageFee(warehouseManagementPrice.multiply(BigDecimal.ONE));
warehousePackageEntity.setWarehouseSortingFee(BigDecimal.ZERO);
warehousePackageEntity.setWarehouseOperatingFee(BigDecimal.ZERO);
warehousePackageEntity.setWarehouseSortingFee(sortingPrice.multiply(BigDecimal.ONE));
warehousePackageEntity.setWarehouseOperatingFee(handlingPrice.multiply(BigDecimal.ONE));
warehousePackageEntity.setGoodsType(1);
warehousePackageEntity.setOrderInfoId(orderId);
warehousePackageEntity.setBrandId(brandId);
@ -689,7 +701,7 @@ public class WaybillCheckListener {
distributionPackageEntity.setVolume(Objects.isNull(volume) ? BigDecimal.ZERO : volume);
distributionPackageEntity.setGoodsType(1);
distributionPackageEntity.setOrderInfoId(orderId);
distributionPackageEntity.setDeliveryLoadingFee(handlingPrice.multiply(BigDecimal.ONE));
distributionPackageEntity.setDeliveryLoadingFee(BigDecimal.ZERO);
distributionPackageEntity.setDeliverySortingFee(BigDecimal.ZERO);
distributionPackageEntity.setDeliveryUpfloorFee(BigDecimal.ZERO);
distributionPackageEntity.setDeliveryMoveFee(BigDecimal.ZERO);
@ -726,13 +738,13 @@ public class WaybillCheckListener {
} else if (systemDeliveryChargeType == 3) {
distributionPackageEntity.setSystemDeliveryFee(systemDeliveryPrice.multiply(packageWeight));
}
distributionPackageEntity.setDeliveryFee(BigDecimal.ZERO);
distributionPackageEntity.setDeliveryFee(deliveryPrice.multiply(BigDecimal.ONE));
} else {
distributionPackageEntity.setSystemDeliveryChargeType(1);
distributionPackageEntity.setDeliveryChargeType(1);
distributionPackageEntity.setSystemDeliveryFee(BigDecimal.ZERO);
distributionPackageEntity.setDeliveryFee(BigDecimal.ZERO);
distributionPackageEntity.setDeliveryFee(deliveryPrice.multiply(BigDecimal.ONE));
}
if (payWay.equals("1") || payWay.equals("2")) {

23
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java

@ -766,6 +766,7 @@ public class InComingServiceImpl implements IInComingService {
List<TrunklineAdvanceDetailEntity> sendAdvanceDetailEntityList = new ArrayList();
Set<Long> waybillIdSet = new HashSet<>();
Integer total = 0;
for (Long advanceId : advanceIds) {
QueryWrapper<TrunklineAdvanceDetailEntity> queryWrapper = new QueryWrapper<>();
@ -786,18 +787,9 @@ public class InComingServiceImpl implements IInComingService {
//把detailList通过waybillId分组
Map<Long, List<TrunklineAdvanceDetailEntity>> map = detailList.stream().filter(t -> Objects.nonNull(t.getWaybillId())).collect(Collectors.groupingBy(TrunklineAdvanceDetailEntity::getWaybillId));
Set<Long> waybillIdSet = map.keySet();
waybillIdSet.addAll(map.keySet());
if (CollUtil.isNotEmpty(waybillIdSet)) {
List<WarehouseWaybillEntity> waybillEntityList = warehouseWaybillClient.findListByWaybillIds(new ArrayList<>(waybillIdSet));
waybillEntityList.forEach(wb -> {
Integer totalCount = wb.getTotalCount();
Integer stockCount = wb.getStockCount();
openOrderAsyncService.saveLog(wb.getId(), wb.getWaybillNo(), "20", "已入库", "运单入库:" + stockCount + "/" + totalCount + ",入库类型:【" + IncomingTypeEnum.getValue(incomingType) + "】,入库时间:" + CommonUtil.dateToStringGeneral(new Date()), AuthUtil.getNickName(), AuthUtil.getUserId(), warehouseId, warehouseName);
});
}
//把waybillEntityList转化成id为key的Map
// Map<Long, WarehouseWaybillEntity> waybillEntityMap = waybillEntityList.stream().collect(Collectors.toMap(WarehouseWaybillEntity::getId, Function.identity()));
@ -825,6 +817,17 @@ public class InComingServiceImpl implements IInComingService {
}
if (CollUtil.isNotEmpty(waybillIdSet)) {
List<WarehouseWaybillEntity> waybillEntityList = warehouseWaybillClient.findListByWaybillIds(new ArrayList<>(waybillIdSet));
waybillEntityList.forEach(wb -> {
Integer totalCount = wb.getTotalCount();
Integer stockCount = wb.getStockCount();
openOrderAsyncService.saveLog(wb.getId(), wb.getWaybillNo(), "20", "已入库", "运单入库:" + stockCount + "/" + totalCount + ",入库类型:【" + IncomingTypeEnum.getValue(incomingType) + "】,入库时间:" + CommonUtil.dateToStringGeneral(new Date()), AuthUtil.getNickName(), AuthUtil.getUserId(), warehouseId, warehouseName);
});
}
if(CollUtil.isNotEmpty(sendAdvanceDetailEntityList)){
advanceDetailService.sendReportIncomingData(AuthUtil.getUserId(),AuthUtil.getNickName(),sendAdvanceDetailEntityList,warehouseId,warehouseName,incomingType);
}

31
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java

@ -598,6 +598,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
waybillEntity.setPickupFee(openOrderDTO.getPickupFee());
waybillEntity.setWarehouseManagementFee(openOrderDTO.getWarehouseManagementFee());
waybillEntity.setStorageFee(openOrderDTO.getStorageFee());
waybillEntity.setSortingFee(openOrderDTO.getSortingFee());
waybillEntity.setHandlingFee(openOrderDTO.getHandlingFee());
waybillEntity.setInstallFee(openOrderDTO.getInstallFee());
waybillEntity.setOtherFee(openOrderDTO.getOtherFee());
@ -928,6 +929,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
waybillEntity.setPickupFee(openOrderDTO.getPickupFee());
waybillEntity.setWarehouseManagementFee(openOrderDTO.getWarehouseManagementFee());
waybillEntity.setStorageFee(openOrderDTO.getStorageFee());
waybillEntity.setSortingFee(openOrderDTO.getSortingFee());
waybillEntity.setHandlingFee(openOrderDTO.getHandlingFee());
waybillEntity.setInstallFee(openOrderDTO.getInstallFee());
waybillEntity.setOtherFee(openOrderDTO.getOtherFee());
@ -4770,12 +4772,24 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
msgList.add(editOrderMsgVO);
}
BigDecimal newSortingFee = openOrderDTO.getSortingFee();
BigDecimal sortingFee = waybillEntity.getSortingFee();
if(sortingFee.compareTo(newSortingFee) != 0){
// stringBuilder.append("装卸费:").append(handlingFee).append("-->").append(newHandlingFee).append(";");
EditOrderMsgVO editOrderMsgVO = new EditOrderMsgVO();
editOrderMsgVO.setItemName("仓储操作费费");
editOrderMsgVO.setOldValue(sortingFee.toPlainString());
editOrderMsgVO.setNewValue(newSortingFee.toPlainString());
msgList.add(editOrderMsgVO);
}
BigDecimal newHandlingFee = openOrderDTO.getHandlingFee();
BigDecimal handlingFee = waybillEntity.getHandlingFee();
if(handlingFee.compareTo(newHandlingFee) != 0){
// stringBuilder.append("装卸费:").append(handlingFee).append("-->").append(newHandlingFee).append(";");
EditOrderMsgVO editOrderMsgVO = new EditOrderMsgVO();
editOrderMsgVO.setItemName("装卸费");
editOrderMsgVO.setItemName("仓储操作费费");
editOrderMsgVO.setOldValue(handlingFee.toPlainString());
editOrderMsgVO.setNewValue(newHandlingFee.toPlainString());
msgList.add(editOrderMsgVO);
@ -5315,10 +5329,17 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
waybillEntity.setStorageFee(newStorageFee);
}
BigDecimal newSortingFee = openOrderDTO.getSortingFee();
BigDecimal sortingFee = waybillEntity.getSortingFee();
if (sortingFee.compareTo(newSortingFee) != 0) {
stringBuilder.append("仓储分拣费:").append(sortingFee).append("-->").append(newSortingFee).append(";");
waybillEntity.setSortingFee(newSortingFee);
}
BigDecimal newHandlingFee = openOrderDTO.getHandlingFee();
BigDecimal handlingFee = waybillEntity.getHandlingFee();
if (handlingFee.compareTo(newHandlingFee) != 0) {
stringBuilder.append("装卸费:").append(handlingFee).append("-->").append(newHandlingFee).append(";");
stringBuilder.append("仓储操作费:").append(handlingFee).append("-->").append(newHandlingFee).append(";");
waybillEntity.setHandlingFee(newHandlingFee);
}
@ -5586,17 +5607,15 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
BasicdataClientEntity basicdataClientEntity = basicdataClientClient.findByName(unit);
if(Objects.isNull(basicdataClientEntity)){
basicdataClientEntity = new BasicdataClientEntity();
String finallyClientCode = basicdataClientClient.getFinallyClientCode();
basicdataClientEntity.setClientName(unit);
basicdataClientEntity.setClientCode(finallyClientCode);
basicdataClientEntity.setTypeService(2);
basicdataClientEntity.setTypeService(1);
basicdataClientEntity.setCargoControl(false);
basicdataClientEntity.setClientType(type);//1 工厂 2 商场 3装饰 4个人 5门店 6发货单位
basicdataClientEntity.setLinkman(linkman);
basicdataClientEntity.setPhone(linkPhone);
basicdataClientEntity.setDetailedly(linkAddress);
basicdataClientEntity.setIsNew(1);
clientId = basicdataClientClient.addReturnId(basicdataClientEntity);
clientId = basicdataClientClient.saveEntity(basicdataClientEntity);
}else{
clientId = basicdataClientEntity.getId();
}

181
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.xml

@ -174,12 +174,6 @@
lww.h_pay hPay,
lww.y_pay yPay,
lww.service_type serviceType,
IFNULL(lww.update_status,0) updateStatus,
IFNULL(lww.check_status,0) checkStatus,
lww.check_reson checkReson,
lww.check_remark checkRemark,
lww.check_user_name checkUserName,
lww.check_time checkTime,
lww.cancle_check_remark cancleCheckRemark,
lww.cancle_check_user_name cancleCheckUserName,
lww.cancle_check_time cancleCheckTime,
@ -189,39 +183,46 @@
lww.document_making_time documentMakingTime,
lww.create_time createTime,
GROUP_CONCAT(lwwd.product_name) goodsName,
GROUP_CONCAT(CONCAT(lwwd.product_name,'(',lwwd.num,')')) productNum,
GROUP_CONCAT(CONCAT(lwwd.product_name,'(',lwwd.price,')')) productPrice,
lww.total_count totalCount,
sum(lwwd.weight) totalWeight,
sum(lwwd.volume) totalVolume,
lww.x_pay+lww.d_pay+lww.h_pay+lww.y_pay totalFee,
sum(IFNULL(lwwd.freight_price,0)*lwwd.num+IFNULL(lwwd.pickup_price,0)*lwwd.num+IFNULL(lwwd.delivery_price,0)*lwwd.num) systemTotalFee,
lww.pickup_fee pickupFee,
lww.cost_piece costPiece,
lww.cost_zhang costZhang,
lww.cost_num costNum,
lww.total_freight totalFreight,
lww.storage_fee+lww.warehouse_management_fee warehouseServiceFee,
lww.delivery_fee deliveryFee,
lww.pickup_fee pickupFee,
lww.storage_fee storageFee,
lww.warehouse_management_fee warehouseManagementFee,
0.00 warehouseSortingFee,
0.00 warehouseOprationFee,
lww.delivery_fee+lww.handling_fee deliveryServiceFee,
lww.delivery_fee deliveryFee,
lww.sorting_fee sortingFee,
lww.handling_fee handlingFee,
0.00 deliverySortingFee,
0.00 deliveryUpfloorFee,
0.00 deliveryMoveFee,
0.00 deliveryLine,
0.00 deliveryLineFee,
lww.other_fee otherFee,
lww.install_fee installFee,
lww.insurance_fee insuranceFee,
lww.claiming_value claimingValue,
lww.rebate rebate,
lww.urgency urgency,
lww.receipt_num receiptNum,
lww.receipt receipt,
lww.transport_type transportType,
lww.third_operation_fee thirdOperationFee,
lww.pickup_complete_or_not pickupCompleteOrNot,
lww.trunkline_complete_or_not trunklineCompleteOrNot,
lww.freeze_status freezeStatus,
lww.freeze_user_name freezeUserName,
lww.freeze_time freezeTime,
lww.abolish_status abolishStatus,
lww.abolish_user_name abolishUserName,
lww.abolish_time abolishTime,
lww.sign_num signNum,
lww.sign_user_name signUserName,
lww.sign_time signTime,
lww.sign_check_user_name signCheckUserName,
lww.sign_check_time signCheckTime,
lww.rebate rebate,
GROUP_CONCAT(CONCAT(lwwd.product_name,'(',lwwd.num,')')) productNum,
GROUP_CONCAT(CONCAT(lwwd.product_name,'(',lwwd.price,')')) productPrice
IFNULL(lww.check_status,0) checkStatus,
lww.check_reson checkReson,
lww.check_remark checkRemark,
lww.check_user_name checkUserName,
lww.check_time checkTime
from logpm_warehouse_waybill lww
left join logpm_basicdata_client lbc on lbc.id = lww.consignee_id
left join logpm_warehouse_waybill_detail lwwd on lwwd.waybill_id = lww.id and lwwd.is_deleted = 0
@ -466,17 +467,17 @@
sum(lwwd.weight) totalWeight,
sum(lwwd.volume) totalVolume,
lww.x_pay+lww.d_pay+lww.h_pay+lww.y_pay totalFee,
sum(IFNULL(lwwd.freight_price,0)*lwwd.num+IFNULL(lwwd.pickup_price,0)*lwwd.num+IFNULL(lwwd.delivery_price,0)*lwwd.num) systemTotalFee,
sum(IFNULL(lwwd.freight_price,0)*lwwd.num+IF(lww.pickup_complete_or_not=1,IFNULL(lwwd.pickup_price,0)*lwwd.num,0)+IFNULL(lwwd.delivery_price,0)*lwwd.num) systemTotalFee,
lww.pickup_fee pickupFee,
lww.total_freight freightFee,
lww.storage_fee+lww.warehouse_management_fee warehouseServiceFee,
lww.storage_fee+lww.warehouse_management_fee+lww.sorting_fee+lww.handling_fee warehouseServiceFee,
lww.storage_fee warehouseFee,
lww.warehouse_management_fee warehouseManagementFee,
0.00 warehouseSortingFee,
0.00 warehouseOprationFee,
lww.delivery_fee+lww.handling_fee deliveryServiceFee,
lww.sorting_fee warehouseSortingFee,
lww.handling_fee warehouseOprationFee,
lww.delivery_fee deliveryServiceFee,
lww.delivery_fee deliveryFee,
lww.handling_fee deliveryHandlingFee,
0.00 deliveryHandlingFee,
0.00 deliverySortingFee,
0.00 deliveryUpfloorFee,
0.00 deliveryMoveFee,
@ -694,10 +695,10 @@
when lww.pay_way='5' then '内部结算'
when lww.pay_way='6' then '多笔付'
else '未知' end payWay,
lww.x_pay xPay,
lww.d_pay dPay,
lww.h_pay hPay,
lww.y_pay yPay,
lww.x_pay nowPay,
lww.d_pay arrivePay,
lww.h_pay backPay,
lww.y_pay monthPay,
case when lbc.type_service='1' then '商配'
when lbc.type_service='2' then '市配'
when lbc.type_service='3' then '自提'
@ -733,17 +734,17 @@
sum(lwwd.weight) totalWeight,
sum(lwwd.volume) totalVolume,
lww.x_pay+lww.d_pay+lww.h_pay+lww.y_pay totalFee,
sum(IFNULL(lwwd.freight_price,0)*lwwd.num+IFNULL(lwwd.pickup_price,0)*lwwd.num+IFNULL(lwwd.delivery_price,0)*lwwd.num) systemTotalFee,
sum(IFNULL(lwwd.freight_price,0)*lwwd.num+IF(lww.pickup_complete_or_not=1,IFNULL(lwwd.pickup_price,0)*lwwd.num,0)+IFNULL(lwwd.delivery_price,0)*lwwd.num) systemTotalFee,
lww.pickup_fee pickupFee,
lww.total_freight freightFee,
lww.storage_fee+lww.warehouse_management_fee warehouseServiceFee,
lww.storage_fee+lww.warehouse_management_fee+lww.sorting_fee+lww.handling_fee warehouseServiceFee,
lww.storage_fee warehouseFee,
lww.warehouse_management_fee warehouseManagementFee,
0.00 warehouseSortingFee,
0.00 warehouseOprationFee,
lww.delivery_fee+lww.handling_fee deliveryServiceFee,
lww.sorting_fee warehouseSortingFee,
lww.handling_fee warehouseOprationFee,
lww.delivery_fee deliveryServiceFee,
lww.delivery_fee deliveryFee,
lww.handling_fee deliveryHandlingFee,
0.00 deliveryHandlingFee,
0.00 deliverySortingFee,
0.00 deliveryUpfloorFee,
0.00 deliveryMoveFee,
@ -772,7 +773,7 @@
#{item}
</foreach>
</if>
<if test="param.warehouseId != null">
<if test="param.destinationWarehouseIds != null">
and lww.destination_warehouse_id in
<foreach collection="param.destinationWarehouseIds" item="item" open="(" separator="," close=")">
#{item}
@ -926,82 +927,74 @@
</select>
<select id="exportWaybillList" resultType="com.logpm.warehouse.vo.ExportWarehouseWaybillVO">
select lww.id id,
lww.brand brand,
select
lww.waybill_no waybillNo,
lww.order_no orderNo,
lww.remark remark,
lww.departure_warehouse_name departureWarehouseName,
lww.destination_warehouse_name destinationWarehouseName,
lww.customer_train customerTrain,
lww.brand brand,
lww.shipper shipper,
lww.shipper_name shipperName,
lww.shipper_mobile shipperMobile,
lww.shipper_address shipperAddress,
lww.consignee consignee,
lbc.client_code consigneeCode,
lww.consignee_name consigneeName,
lww.consignee_mobile consigneeMobile,
lww.consignee_address consigneeAddress,
lww.shipper shipper,
lww.shipper_name shipperName,
lww.shipper_mobile shipperMobile,
lww.shipper_address shipperAddress,
lww.destination destination,
lww.departure departure,
lww.departure_warehouse_name departureWarehouseName,
lww.destination_warehouse_name destinationWarehouseName,
lww.agent agent,
lww.delivery_way deliveryWay,
lww.customer_train customerTrain,
IFNULL(lww.return_status,0) returnStatus,
lww.remark remark,
lww.pay_type payType,
lww.pay_way payWay,
lww.x_pay nowPay,
lww.d_pay arrivePay,
lww.h_pay backPay,
lww.y_pay mouthPay,
lww.service_type serviceType,
IFNULL(lww.update_status,0) updateStatus,
IFNULL(lww.check_status,0) checkStatus,
lww.check_reson checkReson,
lww.check_remark checkRemark,
lww.check_user_name checkUserName,
lww.check_time checkTime,
lww.cancle_check_remark cancleCheckRemark,
lww.cancle_check_user_name cancleCheckUserName,
lww.cancle_check_time cancleCheckTime,
lww.waybill_status waybillStatus,
lww.waybill_type waybillType,
lww.document_making_time documentMakingTime,
lww.create_time createTime,
GROUP_CONCAT(lwwd.product_name) goodsName,
GROUP_CONCAT(CONCAT(lwwd.product_name,'(',lwwd.num,')')) productNum,
GROUP_CONCAT(CONCAT(lwwd.product_name,'(',lwwd.price,')')) productPrice,
lww.cost_piece costPiece,
lww.cost_zhang costZhang,
lww.cost_num costNum,
lww.total_count totalCount,
sum(lwwd.weight) totalWeight,
sum(lwwd.volume) totalVolume,
lww.x_pay+lww.d_pay+lww.h_pay+lww.y_pay totalFee,
sum(IFNULL(lwwd.freight_price,0)*lwwd.num+IFNULL(lwwd.pickup_price,0)*lwwd.num+IFNULL(lwwd.delivery_price,0)*lwwd.num) systemTotalFee,
lww.pickup_fee pickupFee,
lww.total_freight totalFreight,
lww.storage_fee+lww.warehouse_management_fee warehouseServiceFee,
lww.delivery_fee deliveryFee,
lww.pickup_fee pickupFee,
lww.storage_fee storageFee,
lww.warehouse_management_fee warehouseManagementFee,
0.00 warehouseSortingFee,
0.00 warehouseOprationFee,
lww.delivery_fee+lww.handling_fee deliveryServiceFee,
lww.delivery_fee deliveryFee,
lww.sorting_fee sortingFee,
lww.handling_fee handlingFee,
0.00 deliverySortingFee,
0.00 deliveryUpfloorFee,
0.00 deliveryMoveFee,
0.00 deliveryLine,
0.00 deliveryLineFee,
lww.other_fee otherFee,
lww.install_fee installFee,
lww.insurance_fee insuranceFee,
lww.claiming_value claimingValue,
lww.rebate rebate,
lww.pay_type payType,
lww.pay_way payWay,
lww.x_pay nowPay,
lww.d_pay arrivePay,
lww.h_pay backPay,
lww.y_pay mouthPay,
lww.third_operation_fee thirdOperationFee,
lww.delivery_way deliveryWay,
lww.transport_type transportType,
lww.urgency urgency,
lww.receipt_num receiptNum,
lww.agent agent,
lww.waybill_status waybillStatus,
lww.freeze_status freezeStatus,
lww.freeze_user_name freezeUserName,
lww.freeze_time freezeTime,
lww.check_status checkStatus,
lww.check_reson checkReson,
lww.check_remark checkRemark,
lww.check_user_name checkUserName,
lww.check_time checkTime,
lww.sign_num signNum,
lww.sign_user_name signUserName,
lww.sign_time signTime,
lww.sign_check_user_name signCheckUserName,
lww.sign_check_time signCheckTime,
lww.rebate rebate,
GROUP_CONCAT(CONCAT(lwwd.product_name,'(',lwwd.num,')')) productNum,
GROUP_CONCAT(CONCAT(lwwd.product_name,'(',lwwd.price,')')) productPrice
lww.abolish_status abolishStatus,
lww.abolish_user_name abolishUserName,
lww.abolish_time abolishTime,
lww.document_making_time documentMakingTime,
lww.create_time createTime
from logpm_warehouse_waybill lww
left join logpm_basicdata_client lbc on lbc.id = lww.consignee_id
left join logpm_warehouse_waybill_detail lwwd on lwwd.waybill_id = lww.id and lwwd.is_deleted = 0

Loading…
Cancel
Save