Browse Source

Merge remote-tracking branch 'origin/dist.1.2.0' into dist.1.2.0

dist.1.3.0
汤建军 7 months ago
parent
commit
ee0debc20d
  1. 34
      blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java
  2. 4
      blade-biz-common/src/main/java/org/springblade/common/model/DistributionSignforVO.java
  3. 27
      blade-biz-common/src/main/java/org/springblade/common/model/workNode/DeliveryOfPickupPlanFeiVO.java
  4. 75
      blade-biz-common/src/main/java/org/springblade/common/model/workNode/DeliveryOfPickupPlanVO.java
  5. 21
      blade-biz-common/src/main/java/org/springblade/common/model/workNode/PickUpByScanVO.java
  6. 62
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/QualityDeliverEntity.java
  7. 303
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/QualityDeliverListener.java
  8. 8
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReservationPlanReportListener.java
  9. 27
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionNodeWorkService.java
  10. 7
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockListService.java
  11. 86
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionNodeWorkServiceImpl.java
  12. 215
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java
  13. 57
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockListServiceImpl.java
  14. 605
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java
  15. 67
      blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/NodeWorkHandler.java

34
blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java

@ -268,6 +268,9 @@ public abstract class FanoutConstants {
interface QUEUE {
String REPORT = "fanout.distribution.DeliveryAndSignfor.report" + ModuleNameConstant.DEVAUTH;
String FACTORY_NODE_WORK_DISTRIBUTION_SIGNFOR_QUERY = "fanout.factory.nodework.distribution.signforquery" + ModuleNameConstant.DEVAUTH;
}
}
@ -287,16 +290,39 @@ public abstract class FanoutConstants {
}
interface signfor {
String EXCHANGE = "fanout.distribution.signfor" + ModuleNameConstant.DEVAUTH;
}
/**
* 配送自提
*/
public interface DeliveryOfPickup {
/**
* @see org.springblade.common.model.workNode.DeliveryOfPickupPlanVO
*/
interface BillPlan {
String EXCHANGE = "fanout.distribution.billPlan" + ModuleNameConstant.DEVAUTH;
interface QUEUE {
String FACTORY_NODE_WORK_DISTRIBUTION_SIGNFOR_QUERY = "fanout.factory.nodework.distribution.signforquery" + ModuleNameConstant.DEVAUTH;
}
}
}
interface BillSign {
String EXCHANGE = "fanout.distribution.billscan" + ModuleNameConstant.DEVAUTH;
interface QUEUE {
}
}
}
}

4
blade-biz-common/src/main/java/org/springblade/common/model/DistributionSignforVO.java

@ -23,6 +23,10 @@ public class DistributionSignforVO implements Serializable {
* 签收车次
*/
private String trainNumber;
/**
* 预约单ID
*/
private Long reservationId;
/**
* 预约单号

27
blade-biz-common/src/main/java/org/springblade/common/model/workNode/DeliveryOfPickupPlanFeiVO.java

@ -0,0 +1,27 @@
package org.springblade.common.model.workNode;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class DeliveryOfPickupPlanFeiVO {
/**
* 费用
*/
private String cost;
/**
* 费用名称
*/
private String costName;
/**
* 金额
*/
private BigDecimal money;
}

75
blade-biz-common/src/main/java/org/springblade/common/model/workNode/DeliveryOfPickupPlanVO.java

@ -0,0 +1,75 @@
package org.springblade.common.model.workNode;
import lombok.Data;
import org.springblade.common.model.PackageData;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 作业节点 自提计划对象
*/
@Data
public class DeliveryOfPickupPlanVO implements Serializable {
/**
* 提货时间
*/
private Date pickUpTime;
/**
* 自提单号
*/
private String pickupBatch;
/**
* 提货人
*/
private String consignee;
/**
* 收货单位
*/
private String consigneeUnit;
/**
* 提货人电话
*/
private String consigneePhone;
/**
* 提货车牌
*/
private String pickUpPlate;
/**
* 证件类型
*/
private String certificateType;
/**
* 提货证件
*/
private String deliveryDocument;
/**
* 备注
*/
private String remark;
/**
* 自提费用组合
*/
private List<DeliveryOfPickupPlanFeiVO> deliveryOfPickupPlanFeiVOList;
/**
* 自提明细数据
*/
private List<PackageData> packageDataList;
}

21
blade-biz-common/src/main/java/org/springblade/common/model/workNode/PickUpByScanVO.java

@ -0,0 +1,21 @@
package org.springblade.common.model.workNode;
import lombok.Data;
import org.springblade.common.model.PackageData;
import java.util.List;
@Data
public class PickUpByScanVO {
/**
* 自提单号
*/
private String pickupBatch;
/**
* 自提明细数据
*/
private List<PackageData> packageDataList;
}

62
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/QualityDeliverEntity.java

@ -68,6 +68,11 @@ public class QualityDeliverEntity extends TenantEntity {
*/
@ApiModelProperty(value = "客户地址")
private String customAddress;
/**
* 运单发货单位id
*/
@ApiModelProperty(value = "运单发货单位id")
private Long shipperUnitId;
/**
* 运单发货单位
*/
@ -88,6 +93,11 @@ public class QualityDeliverEntity extends TenantEntity {
*/
@ApiModelProperty(value = "运单发货地址")
private String shipperAddress;
/**
* 运单收货单位id
*/
@ApiModelProperty(value = "运单收货单位id")
private Long consigneeUnitId;
/**
* 运单收货单位
*/
@ -123,6 +133,36 @@ public class QualityDeliverEntity extends TenantEntity {
*/
@ApiModelProperty(value = "商场ID")
private Long mallId;
/**
* 商场编号
*/
@ApiModelProperty(value = "商场编码")
private String mallCode;
/**
* 门店编号
*/
@ApiModelProperty(value = "门店编码")
private String storeCode;
/**
* 门店名称
*/
@ApiModelProperty(value = "门店名称")
private String storeName;
/**
* 服务号
*/
@ApiModelProperty(value = "服务号")
private String serviceNumber;
/**
* 经销商名称
*/
@ApiModelProperty(value = "经销商名称")
private String dealerName;
/**
* 经销商编码
*/
@ApiModelProperty(value = "经销商编码")
private String dealerCode;
/**
* 入库批次号
*/
@ -212,12 +252,27 @@ public class QualityDeliverEntity extends TenantEntity {
* 末端仓入库时间
*/
@ApiModelProperty(value = "末端仓入库时间")
private String endWarehouseInTime;
private Date endWarehouseInTime;
/**
* 计划预约单号 只有商市配自提采用自提车次号 三方中转采用三方中转车次号
*/
@ApiModelProperty(value = "计划预约单号 只有商市配,自提采用自提车次号 三方中转采用三方中转车次号")
private String planReservationCode;
/**
* 预约收货人
*/
@ApiModelProperty(value = "预约收货人")
private String reservationConsignee;
/**
* 预约收货人电话
*/
@ApiModelProperty(value = "预约收货人电话")
private String reservationConsigneePhone;
/**
* 预约收货人地址
*/
@ApiModelProperty(value = "预约收货人地址")
private String reservationConsigneeAddr;
/**
* 计划预约人
*/
@ -244,6 +299,11 @@ public class QualityDeliverEntity extends TenantEntity {
*/
@ApiModelProperty(value = "计划配送单号 包含配送车次和自提车次 直发商家 对应干线车次 三方中转 三方中转车次号")
private String planTrainNumber;
/**
* 服务类型
*/
@ApiModelProperty(value = "服务类型")
private String serviceType;
/**
* 配送日期
*/

303
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/QualityDeliverListener.java

@ -1,16 +1,29 @@
package com.logpm.distribution.receiver.report;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.entity.DistributionStockListEntity;
import com.logpm.distribution.entity.QualityDeliverEntity;
import com.logpm.distribution.service.IDistributionParcelListService;
import com.logpm.distribution.service.IDistributionStockArticleService;
import com.logpm.distribution.service.IDistributionStockListService;
import com.logpm.distribution.service.IQualityDeliverService;
import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import com.logpm.warehouse.feign.IWarehouseWaybillClient;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.Nullable;
import org.springblade.common.constant.report.ReportConstants;
import org.springblade.common.enums.PackageTypeEnums;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
@ -19,6 +32,8 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
/**
* 配送明细基础表处理类
@ -34,6 +49,21 @@ public class QualityDeliverListener {
@Resource
private IQualityDeliverService qualityDeliverService;
@Resource
private IBasicdataWarehouseClient warehouseClient;
@Resource
private IDistributionParcelListService parcelListService;
@Resource
private IDistributionStockArticleService stockArticleService;
@Resource
private IWarehouseWaybillClient warehouseWaybillClient;
@Resource
private IDistributionStockListService stockListService;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = ReportConstants.REPORT_QUALITY_DELIVER_QUEUE, durable = "true"),
exchange = @Exchange(name = ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE, type = ExchangeTypes.TOPIC),
@ -50,64 +80,21 @@ public class QualityDeliverListener {
switch (bean.getOperation()) {
case MODIFY:
Integer conditions = qualityDeliverEntity.getConditions();
if (1 == conditions) {
if (ObjectUtil.equals(PackageTypeEnums.CMP.getCode(), conditions)) {
// 定制品
QualityDeliverEntity entity = qualityDeliverService.getOne(Wrappers.<QualityDeliverEntity>lambdaQuery()
.eq(QualityDeliverEntity::getOrderPackageCode, qualityDeliverEntity.getOrderPackageCode())
.lt(QualityDeliverEntity::getBizStatus, 110));
if (ObjectUtil.isNotEmpty(entity)) {
qualityDeliverService.update(qualityDeliverEntity, Wrappers.<QualityDeliverEntity>lambdaUpdate()
.eq(QualityDeliverEntity::getOrderPackageCode, qualityDeliverEntity.getOrderPackageCode())
.lt(QualityDeliverEntity::getBizStatus, 110));
} else {
// 获取基础数据赋值
qualityDeliverService.save(qualityDeliverEntity);
}
} else if (3 == conditions) {
// 库存品
LambdaQueryWrapper<QualityDeliverEntity> wrapper = Wrappers.<QualityDeliverEntity>lambdaQuery()
.eq(QualityDeliverEntity::getOrderPackageCode, qualityDeliverEntity.getOrderPackageCode())
.lt(QualityDeliverEntity::getBizStatus, 110);
if (ObjectUtil.isNotEmpty(qualityDeliverEntity.getId())) {
// 库存品更新优先按id更新
wrapper.eq(QualityDeliverEntity::getId, qualityDeliverEntity.getId());
} else {
if (StrUtil.isNotEmpty(qualityDeliverEntity.getOrderPackageCode())) {
// 没有id,按包条码更新
wrapper.eq(QualityDeliverEntity::getOrderPackageCode, qualityDeliverEntity.getOrderPackageCode());
} else {
if (StrUtil.isEmpty(qualityDeliverEntity.getMallName())) {
// 没有id,没有包条码。没有商场,不处理。
return;
} else {
// 否则加上商场过滤
wrapper.eq(QualityDeliverEntity::getMallName, qualityDeliverEntity.getMallName());
}
if (StrUtil.isEmpty(qualityDeliverEntity.getMaterielCode()) && StrUtil.isEmpty(qualityDeliverEntity.getMaterielName())) {
// 没有id,没有包条码,没有商场,没有物料,不处理。
return;
}
if (StrUtil.isNotEmpty(qualityDeliverEntity.getMaterielCode())) {
// 优先按物料编码更新
wrapper.eq(QualityDeliverEntity::getMaterielCode, qualityDeliverEntity.getMaterielCode());
} else {
// 按物料名称更新
wrapper.eq(QualityDeliverEntity::getMaterielName, qualityDeliverEntity.getMaterielName());
}
}
}
if (StrUtil.isNotEmpty(qualityDeliverEntity.getPlanReservationCode())) {
// 有预约单号时加上预约单号过滤:存在同一个库存品在多个预约单中,只根据库存品本身的信息无法查询出对应的数据的情况。
wrapper.eq(QualityDeliverEntity::getPlanReservationCode, qualityDeliverEntity.getPlanReservationCode());
saveOrUpdate(wrapper, qualityDeliverEntity);
} else if (ObjectUtil.equals(PackageTypeEnums.INV.getCode(), conditions)) {
// 库存品
LambdaQueryWrapper<QualityDeliverEntity> wrapper = buildInvWrapper(qualityDeliverEntity);
if (wrapper == null) {
return;
}
// 查询不存在时更新,存在时修改
QualityDeliverEntity entity = qualityDeliverService.getOne(wrapper);
if (ObjectUtil.isNotEmpty(entity)) {
qualityDeliverService.update(qualityDeliverEntity, wrapper);
} else {
// 获取基础数据赋值
qualityDeliverService.save(qualityDeliverEntity);
}
} else if (2 == conditions) {
saveOrUpdate(wrapper, qualityDeliverEntity);
} else if (ObjectUtil.equals(PackageTypeEnums.LTL.getCode(), conditions)) {
// 零担
LambdaQueryWrapper<QualityDeliverEntity> wrapper = Wrappers.<QualityDeliverEntity>lambdaQuery()
.eq(QualityDeliverEntity::getOrderCode, qualityDeliverEntity.getOrderCode())
@ -116,13 +103,7 @@ public class QualityDeliverListener {
if (StrUtil.isNotEmpty(qualityDeliverEntity.getPlanReservationCode())) {
wrapper.eq(QualityDeliverEntity::getPlanReservationCode, qualityDeliverEntity.getPlanReservationCode());
}
QualityDeliverEntity entity = qualityDeliverService.getOne(wrapper);
if (ObjectUtil.isNotEmpty(entity)) {
qualityDeliverService.update(qualityDeliverEntity, wrapper);
} else {
// 获取基础数据赋值
qualityDeliverService.save(qualityDeliverEntity);
}
saveOrUpdate(wrapper, qualityDeliverEntity);
}
break;
default:
@ -130,4 +111,206 @@ public class QualityDeliverListener {
}
}
/**
* 构建库存品查询Wrapper
*
* @param qualityDeliverEntity
* @Return com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<com.logpm.distribution.entity.QualityDeliverEntity>
* @Author zqb 2024/9/10
**/
private static @Nullable LambdaQueryWrapper<QualityDeliverEntity> buildInvWrapper(QualityDeliverEntity qualityDeliverEntity) {
LambdaQueryWrapper<QualityDeliverEntity> wrapper = Wrappers.<QualityDeliverEntity>lambdaQuery()
.lt(QualityDeliverEntity::getBizStatus, 110);
if (ObjectUtil.isNotEmpty(qualityDeliverEntity.getId())) {
// 库存品更新优先按id更新
wrapper.eq(QualityDeliverEntity::getId, qualityDeliverEntity.getId());
} else {
if (StrUtil.isNotEmpty(qualityDeliverEntity.getOrderPackageCode())) {
// 没有id,按包条码更新
wrapper.eq(QualityDeliverEntity::getOrderPackageCode, qualityDeliverEntity.getOrderPackageCode());
} else {
if (StrUtil.isEmpty(qualityDeliverEntity.getMallName())) {
// 没有id,没有包条码。没有商场,不处理。
return null;
} else {
// 否则加上商场过滤
wrapper.eq(QualityDeliverEntity::getMallName, qualityDeliverEntity.getMallName());
}
if (StrUtil.isEmpty(qualityDeliverEntity.getMaterielCode()) && StrUtil.isEmpty(qualityDeliverEntity.getMaterielName())) {
// 没有id,没有包条码,没有商场,没有物料,不处理。
return null;
}
if (StrUtil.isNotEmpty(qualityDeliverEntity.getMaterielCode())) {
// 优先按物料编码更新
wrapper.eq(QualityDeliverEntity::getMaterielCode, qualityDeliverEntity.getMaterielCode());
} else {
// 按物料名称更新
wrapper.eq(QualityDeliverEntity::getMaterielName, qualityDeliverEntity.getMaterielName());
}
}
}
if (StrUtil.isNotEmpty(qualityDeliverEntity.getPlanReservationCode())) {
// 有预约单号时加上预约单号过滤:存在同一个库存品在多个预约单中,只根据库存品本身的信息无法查询出对应的数据的情况。
wrapper.eq(QualityDeliverEntity::getPlanReservationCode, qualityDeliverEntity.getPlanReservationCode());
}
return wrapper;
}
/**
* 修改或者新增
*
* @param wrapper
* @param qualityDeliverEntity
* @Return void
* @Author zqb 2024/9/10
**/
private void saveOrUpdate(LambdaQueryWrapper<QualityDeliverEntity> wrapper, QualityDeliverEntity qualityDeliverEntity) {
QualityDeliverEntity entity = qualityDeliverService.getOne(wrapper);
if (ObjectUtil.isNotEmpty(entity)) {
// 修改
qualityDeliverService.update(qualityDeliverEntity, wrapper);
} else {
// 新增
// 初始化基础数据
initBasicData(qualityDeliverEntity);
qualityDeliverService.save(qualityDeliverEntity);
}
}
private void initBasicData(QualityDeliverEntity qualityDeliverEntity) {
// 事业线 businessUnit
businessUnit(qualityDeliverEntity);
Integer conditions = qualityDeliverEntity.getConditions();
if (ObjectUtil.equals(PackageTypeEnums.CMP.getCode(), conditions)) {
// 订制品
// 构建订制品基础信息
buildCmpBasicInfo(qualityDeliverEntity);
}
if (ObjectUtil.equals(PackageTypeEnums.INV.getCode(), conditions)) {
// 库存品
buildInvBasicInfo(qualityDeliverEntity);
}
if (ObjectUtil.equals(PackageTypeEnums.LTL.getCode(), conditions)) {
// 零担
buildOrderInfo(qualityDeliverEntity, qualityDeliverEntity.getWarehouseId(), qualityDeliverEntity.getOrderCode());
}
}
private void buildInvBasicInfo(QualityDeliverEntity qualityDeliverEntity) {
DistributionStockListEntity stockListEntity = new DistributionStockListEntity();
stockListEntity.setIncomingBatch(qualityDeliverEntity.getIncomingBatch());
stockListEntity.setMallName(qualityDeliverEntity.getMallName());
stockListEntity.setCargoNumber((qualityDeliverEntity.getMaterielCode()));
stockListEntity.setDescriptionGoods(qualityDeliverEntity.getMaterielName());
stockListEntity.setWarehouseId(qualityDeliverEntity.getWarehouseId());
DistributionStockListEntity stockList = stockListService.findStockListByAttrAndWarehouseId(stockListEntity);
if (ObjectUtil.isNotEmpty(stockList)) {
String sourceType = stockList.getSourceType();
if (StrUtil.equals(sourceType, "1")) {
buildCmpBasicInfo(qualityDeliverEntity);
} else {
qualityDeliverEntity.setBrandName(stockList.getBrandName());
qualityDeliverEntity.setMallCode(stockList.getMarketCode());
qualityDeliverEntity.setStoreCode(stockList.getStoreCode());
qualityDeliverEntity.setStoreName(stockList.getStoreName());
qualityDeliverEntity.setEndWarehouseInTime(stockList.getWarehousingTime());
}
}
}
private void buildCmpBasicInfo(QualityDeliverEntity qualityDeliverEntity) {
DistributionParcelListEntity parcelListEntity = parcelListService.selectByOrderPackageCode(qualityDeliverEntity.getOrderPackageCode(), qualityDeliverEntity.getWarehouseId());
if (ObjectUtil.isNotEmpty(parcelListEntity)) {
// 品牌
qualityDeliverEntity.setBrandName(parcelListEntity.getBrandName());
// 商场id
// qualityDeliverEntity.setMallId(parcelListEntity.getMallId());
// 订制品的物料从包件上取
if (ObjectUtil.equals(PackageTypeEnums.CMP.getCode(), qualityDeliverEntity.getConditions())) {
// 物料名称
qualityDeliverEntity.setMaterielName(parcelListEntity.getMaterialName());
// 物料编码
qualityDeliverEntity.setMaterielCode(parcelListEntity.getMaterialCode());
}
// 订单号
qualityDeliverEntity.setOrderCode(parcelListEntity.getOrderCode());
// 工厂车次号
qualityDeliverEntity.setTrainNumber(parcelListEntity.getTrainNumber());
// 一级品
qualityDeliverEntity.setFirstsProduct(parcelListEntity.getFirsts());
// 二级品
qualityDeliverEntity.setSecondProduct(parcelListEntity.getSecond());
// 三级品
qualityDeliverEntity.setThirdProduct(parcelListEntity.getThirdProduct());
// 体积
qualityDeliverEntity.setVolume(parcelListEntity.getVolume());
// 重量
qualityDeliverEntity.setWeight(parcelListEntity.getWeight());
// 运单号
String waybillNumber = parcelListEntity.getWaybillNumber();
qualityDeliverEntity.setWaybillNumber(parcelListEntity.getWaybillNumber());
// 始发仓
qualityDeliverEntity.setBeginWarehouseName(parcelListEntity.getSendWarehouseName());
// 当前仓入库时间
qualityDeliverEntity.setEndWarehouseInTime(parcelListEntity.getWarehouseEntryTimeEnd());
// 构建运单相关信息
buildWaybillInfo(qualityDeliverEntity, waybillNumber);
// 构建订单相关信息
buildOrderInfo(qualityDeliverEntity, qualityDeliverEntity.getWarehouseId(), parcelListEntity.getOrderCode());
}
}
private void buildOrderInfo(QualityDeliverEntity qualityDeliverEntity, Long warehouseId, String orderCode) {
DistributionStockArticleEntity stockArticleEntity = stockArticleService.findStockArticleByOrderCodeAndWarehouseId(orderCode, warehouseId);
if (ObjectUtil.isNotEmpty(stockArticleEntity)) {
// 客户信息
qualityDeliverEntity.setCustomName(stockArticleEntity.getCustomerName());
qualityDeliverEntity.setCustomPhone(stockArticleEntity.getCustomerTelephone());
qualityDeliverEntity.setCustomAddress(stockArticleEntity.getCustomerAddress());
// 商场信息
qualityDeliverEntity.setMallName(stockArticleEntity.getMallName());
qualityDeliverEntity.setMallCode(stockArticleEntity.getMallName());
// 服务号
qualityDeliverEntity.setServiceNumber(stockArticleEntity.getServiceNumber());
// 经销商信息
qualityDeliverEntity.setDealerName(stockArticleEntity.getDealerName());
qualityDeliverEntity.setDealerCode(stockArticleEntity.getDealerCode());
// 门店信息
qualityDeliverEntity.setStoreCode(stockArticleEntity.getStoreCode());
qualityDeliverEntity.setStoreName(stockArticleEntity.getStoreName());
// 品牌
qualityDeliverEntity.setBrandName(stockArticleEntity.getBrand());
}
}
private void buildWaybillInfo(QualityDeliverEntity qualityDeliverEntity, String waybillNumber) {
if (StrUtil.isNotEmpty(waybillNumber)) {
WarehouseWaybillEntity byWaybillNo = warehouseWaybillClient.findByWaybillNo(waybillNumber);
if (ObjectUtil.isNotEmpty(byWaybillNo)) {
// 运单发货信息
qualityDeliverEntity.setShipperUnitId(byWaybillNo.getShipperId());
qualityDeliverEntity.setShipperUnit(byWaybillNo.getShipper());
qualityDeliverEntity.setShipperPerson(byWaybillNo.getShipperName());
qualityDeliverEntity.setShipperMobile(byWaybillNo.getShipperMobile());
qualityDeliverEntity.setShipperAddress(byWaybillNo.getShipperAddress());
// 运单收货信息
qualityDeliverEntity.setConsigneeUnitId(byWaybillNo.getConsigneeId());
qualityDeliverEntity.setConsigneeUnit(byWaybillNo.getConsignee());
qualityDeliverEntity.setConsigneePerson(byWaybillNo.getConsigneeName());
qualityDeliverEntity.setConsigneeMobile(byWaybillNo.getConsigneeMobile());
qualityDeliverEntity.setConsigneeAddress(byWaybillNo.getConsigneeAddress());
}
}
}
private void businessUnit(QualityDeliverEntity qualityDeliverEntity) {
List<BasicdataWarehouseEntity> warehouseEntities = warehouseClient.findWarehousesByIds(Arrays.asList(qualityDeliverEntity.getWarehouseId()));
if (CollUtil.isNotEmpty(warehouseEntities)) {
BasicdataWarehouseEntity warehouseEntity = warehouseEntities.get(0);
// 事业线
qualityDeliverEntity.setBusinessUnit(warehouseEntity.getBusinessLine());
}
}
}

8
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReservationPlanReportListener.java

@ -74,6 +74,10 @@ public class ReservationPlanReportListener {
.set(QualityDeliverEntity::getPlanReservationTime, null)
.set(QualityDeliverEntity::getPlanReservationUser, null)
.set(QualityDeliverEntity::getPlanNum, null)
.set(QualityDeliverEntity::getServiceType, null)
.set(QualityDeliverEntity::getReservationConsignee, null)
.set(QualityDeliverEntity::getReservationConsigneePhone, null)
.set(QualityDeliverEntity::getReservationConsigneeAddr, null)
.eq(QualityDeliverEntity::getPlanReservationCode, vo.getReservationCode())
.ne(QualityDeliverEntity::getBizStatus, 110);
qualityDeliverService.update(wrapper);
@ -89,6 +93,10 @@ public class ReservationPlanReportListener {
.planReservationTime(vo.getReservationDate())
.planReservationUser(bean.getOperator())
.planNum(detail.getNumber())
.serviceType(vo.getDeliveryType())
.reservationConsignee(vo.getConsignee())
.reservationConsigneePhone(vo.getDeliveryPhone())
.reservationConsigneeAddr(vo.getDeliveryAddress())
.build();
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) {
qualityDeliverEntity.setConditions(1);

27
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionNodeWorkService.java

@ -4,11 +4,13 @@ import com.logpm.distribution.entity.DistributionDeliveryListEntity;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.model.*;
import org.springblade.common.model.workNode.DeliveryOfPickupPlanVO;
import org.springblade.common.model.workNode.PickUpByScanVO;
import org.springblade.core.secure.BladeUser;
/**
* <p>
* 配送作业节点 推送服务
* 配送作业节点 推送服务
* </p>
*/
public interface IDistributionNodeWorkService {
@ -73,6 +75,11 @@ public interface IDistributionNodeWorkService {
void signFor(DistributionParcelListEntity parcelListEntity, Long taskId, String operationTime, String destinationWarehouse);
/**
* 签收节点
* @param nodeFanoutMsg
* @param user
*/
void signFor(NodeFanoutMsg<DistributionSignforVO> nodeFanoutMsg, BladeUser user);
@ -81,10 +88,24 @@ public interface IDistributionNodeWorkService {
*/
void signForCheck(NodeFanoutMsg<DistributionSignforVO> nodeFanoutMsg, BladeUser user);
/**
* 自提签收扫描
* 自提计划
* 创建
* 编辑
* 删除
*
*/
void planOfBill(NodeFanoutMsg<DeliveryOfPickupPlanVO> nodeFanoutMsg, BladeUser user);
/**
* 自提签收
* @param nodeFanoutMsg
* @param user
*/
void billofladingSignfor(DistributionParcelListEntity parcelListEntity,Long taskId,String operationTime, String destinationWarehouse);
void signByBill(NodeFanoutMsg<PickUpByScanVO> nodeFanoutMsg, BladeUser user);
/**
* 自提签收复核

7
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockListService.java

@ -214,6 +214,13 @@ public interface IDistributionStockListService extends BaseService<DistributionS
List<DistributionStockListExcel> exportStock(Map<String, Object> distributionStockList);
/**
* 根据属性查询库存品
* @param stockListEntity
* @Return com.logpm.distribution.entity.DistributionStockListEntity
* @Author zqb 2024/9/11
**/
DistributionStockListEntity findStockListByAttrAndWarehouseId(DistributionStockListEntity stockListEntity);
// /**

86
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionNodeWorkServiceImpl.java

@ -12,6 +12,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.broadcast.FanoutConstants;
import org.springblade.common.model.*;
import org.springblade.common.model.workNode.DeliveryOfPickupPlanVO;
import org.springblade.common.model.workNode.PickUpByScanVO;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springframework.amqp.AmqpException;
@ -123,28 +125,28 @@ public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkSer
try {
rabbitTemplate.convertAndSend(FanoutConstants.distribution.DeliveryAndSignfor.EXCHANGE, null, com.alibaba.fastjson.JSONObject.toJSONString(nodeFanoutMsg));
} catch (AmqpException e) {
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 消息推送失败~ 请联系管理员! ", e);
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 签收节点消息推送失败~ 请联系管理员! ", e);
}
}
@Override
public void signFor(DistributionParcelListEntity parcelListEntity, Long taskId, String operationTime, String destinationWarehouse) {
log.info(">>>>>>>>>> signFor 签收扫描 {}", parcelListEntity.getOrderPackageCode());
BroadcastNodeData broadcastNodeData = new BroadcastNodeData();
broadcastNodeData.put("orderPackageCode", parcelListEntity.getOrderPackageCode());
broadcastNodeData.put("distributionContactId", taskId);
// broadcastNodeData.put("distributionContactCode", distributionReservationEntity.getReservationCode());
broadcastNodeData.put("destinationWarehouse", destinationWarehouse);
broadcastNodeData.put("brand", parcelListEntity.getBrandName());
broadcastNodeData.setOperationTime(operationTime);
broadcastNodeData.setUserName(AuthUtil.getUserName());
broadcastNodeData.setTenantId(AuthUtil.getTenantId());
FanoutMsg build = FanoutMsg.builder().msg(broadcastNodeData.toJSONString())
.exchange(FanoutConstants.distribution.signfor.EXCHANGE).build();
sendFanoutMsg(build);
// log.info(">>>>>>>>>> signFor 签收扫描 {}", parcelListEntity.getOrderPackageCode());
// BroadcastNodeData broadcastNodeData = new BroadcastNodeData();
// broadcastNodeData.put("orderPackageCode", parcelListEntity.getOrderPackageCode());
// broadcastNodeData.put("distributionContactId", taskId);
//// broadcastNodeData.put("distributionContactCode", distributionReservationEntity.getReservationCode());
// broadcastNodeData.put("destinationWarehouse", destinationWarehouse);
// broadcastNodeData.put("brand", parcelListEntity.getBrandName());
// broadcastNodeData.setOperationTime(operationTime);
// broadcastNodeData.setUserName(AuthUtil.getUserName());
// broadcastNodeData.setTenantId(AuthUtil.getTenantId());
//
// FanoutMsg build = FanoutMsg.builder().msg(broadcastNodeData.toJSONString())
// .exchange(FanoutConstants.distribution.signfor.EXCHANGE).build();
//
// sendFanoutMsg(build);
try {
JSONObject main = new JSONObject();
main.set("boId", taskId.toString());
@ -177,52 +179,28 @@ public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkSer
try {
rabbitTemplate.convertAndSend(FanoutConstants.distribution.DeliveryAndrecheck.EXCHANGE, null, com.alibaba.fastjson.JSONObject.toJSONString(nodeFanoutMsg));
} catch (AmqpException e) {
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 消息推送失败~ 请联系管理员! ", e);
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 签收复核消息推送失败~ 请联系管理员! ", e);
}
}
@Override
public void billofladingSignfor(DistributionParcelListEntity parcelListEntity, Long taskId, String operationTime, String destinationWarehouse) {
log.info(">>>>>>>>>> billofladingSignfor 自提扫描 {}", parcelListEntity.getOrderPackageCode());
BroadcastNodeData broadcastNodeData = new BroadcastNodeData();
broadcastNodeData.put("orderPackageCode", parcelListEntity.getOrderPackageCode());
broadcastNodeData.put("distributionContactId", taskId);
// broadcastNodeData.put("distributionContactCode", distributionReservationEntity.getReservationCode());
broadcastNodeData.put("destinationWarehouse", destinationWarehouse);
broadcastNodeData.put("brand", parcelListEntity.getBrandName());
broadcastNodeData.setOperationTime(operationTime);
broadcastNodeData.setUserName(AuthUtil.getUserName());
broadcastNodeData.setTenantId(AuthUtil.getTenantId());
FanoutMsg build = FanoutMsg.builder().msg(broadcastNodeData.toJSONString())
.exchange(FanoutConstants.distribution.signfor.EXCHANGE).build();
@Override
public void planOfBill(NodeFanoutMsg<DeliveryOfPickupPlanVO> nodeFanoutMsg, BladeUser user) {
try {
rabbitTemplate.convertAndSend(FanoutConstants.DeliveryOfPickup.BillPlan.EXCHANGE, null, com.alibaba.fastjson.JSONObject.toJSONString(nodeFanoutMsg));
} catch (AmqpException e) {
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 自提计划消息推送失败~ 请联系管理员! ", e);
}
}
sendFanoutMsg(build);
@Override
public void signByBill(NodeFanoutMsg<PickUpByScanVO> nodeFanoutMsg, BladeUser user) {
try {
JSONObject main = new JSONObject();
main.set("boId", taskId.toString());
NodePushMsg nodePushMsg = NodePushMsg.builder()
.operator(AuthUtil.getNickName())
.operatorTime(new Date())
.warehouse(parcelListEntity.getWarehouse())
.startWarehouse(parcelListEntity.getSendWarehouseName())
.endWarehouse(parcelListEntity.getAcceptWarehouseName())
.address("在【" + parcelListEntity.getWarehouse() + "】签收")
.brand(BrandEnums.getByValue(parcelListEntity.getBrandName()))
.node(WorkNodeEnums.SIGN_BILLOFLADING)
.main(JSONUtil.toJsonStr(main))
.content(Collections.singletonList(PushData.builder()
.packageCode(parcelListEntity.getOrderPackageCode())
.warehouseName(parcelListEntity.getWarehouse())
.waybillNumber(parcelListEntity.getWaybillNumber())
.orderCode(parcelListEntity.getOrderCode())
.build()))
.build();
factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg);
} catch (Exception e) {
log.error("自提扫码广播:", e);
rabbitTemplate.convertAndSend(FanoutConstants.DeliveryOfPickup.BillSign.EXCHANGE, null, com.alibaba.fastjson.JSONObject.toJSONString(nodeFanoutMsg));
} catch (AmqpException e) {
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 自提签收消息推送失败~ 请联系管理员! ", e);
}
}

215
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java

@ -40,8 +40,8 @@ import com.logpm.distribution.entity.*;
import com.logpm.distribution.excel.*;
import com.logpm.distribution.mapper.*;
import com.logpm.distribution.service.*;
import com.logpm.distribution.vo.*;
import com.logpm.distribution.vo.DistributionSignforVO;
import com.logpm.distribution.vo.*;
import com.logpm.distribution.vo.app.*;
import com.logpm.distribution.wrapper.DistributionParcelListAppWrapper;
import com.logpm.distribution.wrapper.DistributionParcelListWrapper;
@ -261,7 +261,6 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
private ILogClient logClient;
@Autowired
private IBasicdataDriverArteryClient basicdataDriverArteryClient;
@ -757,6 +756,10 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
packageData.setPackageCode(distributionLoadscanEntity.getOrderPackageCode());
packageData.setPackageType(PackageTypeEnums.CMP);
packageData.setNumber(1);
DistributionParcelListEntity distributionParcelListEntity1 = distributionParcelListService.selectByOrderPackageCode(distributionLoadscanEntity.getOrderPackageCode(), distributionLoadscanEntity.getWarehouseId());
if (Func.isNotEmpty(distributionParcelListEntity1)) {
packageData.setBrand(distributionParcelListEntity1.getBrandName());
}
} else {
// 零担
packageData.setPackageType(PackageTypeEnums.LTL);
@ -2909,8 +2912,9 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
// 节点作业推送
sendNodeWorkDataBroadcast(parcelListEntity, distributionReservationEntity, singleTime, myCurrentWarehouse);
// 构建新作业节点回传
NodeFanoutMsg<org.springblade.common.model.DistributionSignforVO> nodeFanoutMsg = buildDistributionSignforVO(deliveryListEntity,distributionReservationEntity, pushList);
NodeFanoutMsg<org.springblade.common.model.DistributionSignforVO> nodeFanoutMsg = buildDistributionSignforVO(deliveryListEntity, distributionReservationEntity, pushList);
iDistributionNodeWorkService.signFor(nodeFanoutMsg, AuthUtil.getUser());
@ -2954,7 +2958,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
if (Func.isNotEmpty(byIds)) {
packageData.setPackageCode(distributionParcelListEntity.getOrderPackageCode());
packageData.setBrand(byIds.getBrandName());
packageData.setMallName(StringUtil.isBlank(byIds.getMallName())? byIds.getMarketName():byIds.getMallName());
packageData.setMallName(StringUtil.isBlank(byIds.getMallName()) ? byIds.getMarketName() : byIds.getMallName());
// packageData.setProductName(byId.getDescriptionGoods());
packageData.setMaterialCode(byIds.getCargoNumber());
packageData.setMaterialName(byIds.getDescriptionGoods());
@ -2974,7 +2978,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
private NodeFanoutMsg<org.springblade.common.model.DistributionSignforVO> buildDistributionSignforVO(DistributionDeliveryListEntity distributionDeliveryListEntity,DistributionReservationEntity distributionReservationEntity, List<DistributionLoadscanEntity> pushList) {
private NodeFanoutMsg<org.springblade.common.model.DistributionSignforVO> buildDistributionSignforVO(DistributionDeliveryListEntity distributionDeliveryListEntity, DistributionReservationEntity distributionReservationEntity, List<DistributionLoadscanEntity> pushList) {
NodeFanoutMsg<org.springblade.common.model.DistributionSignforVO> nodeFanoutMsg = new NodeFanoutMsg();
nodeFanoutMsg.setBizOperation(BizOperationEnums.ADD);
@ -2992,6 +2996,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadVO.setVehicleName(distributionLoadscanEntity.getVehicleName());
distributionLoadVO.setReservationCode(distributionReservationEntity.getReservationCode());
distributionLoadVO.setTrainNumber(distributionDeliveryListEntity.getTrainNumber());
distributionLoadVO.setReservationId(distributionReservationEntity.getId());
List<PackageData> data = new ArrayList<>();
@ -3001,6 +3006,10 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
packageData.setPackageCode(distributionParcelListEntity.getOrderPackageCode());
packageData.setPackageType(PackageTypeEnums.CMP);
packageData.setNumber(1);
DistributionParcelListEntity distributionParcelListEntity1 = distributionParcelListService.selectByOrderPackageCode(distributionParcelListEntity.getOrderPackageCode(), distributionParcelListEntity.getWarehouseId());
if (Func.isNotEmpty(distributionParcelListEntity1)) {
packageData.setBrand(distributionParcelListEntity.getBrandName());
}
data.add(packageData);
}
@ -3151,6 +3160,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
List<Long> packageLockIds = new ArrayList<>();
List<JSONObject> jsonObjects = new ArrayList<>();
List<JSONObject> aaa = new ArrayList<>();
List<DistributionLoadscanEntity> pushDatas = new ArrayList<>();
for (String orderPackageCode : orderPackageCodes) {
List<DistributionParcelListEntity> collect = parcelListEntityList.stream().filter(p -> p.getOrderPackageCode().equals(orderPackageCode)).collect(Collectors.toList());
String content = "";
@ -3180,6 +3190,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscanService.updateById(distributionLoadscanEntity);
packageLockIds.add(distributionLoadscanEntity.getPackageId());
pushDatas.add(distributionLoadscanEntity);
//缺少一个异步维护包件签收的方法
// distributionAsyncService.changeOrderSignforStatus(collect.get(0));
Integer j = distributionSignforMapper.updateSignforNum(distributionLoadscanEntity.getDeliveryId(), distributionLoadscanEntity.getReservationId(), distributionLoadscanEntity.getPackageNub());
@ -3262,6 +3273,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscanEntity.setSigningUserId(AuthUtil.getUser().getUserId());
distributionLoadscanEntity.setScanStatus(LoadingStatusConstant.buluzhuangche.getValue());
distributionLoadscanService.save(distributionLoadscanEntity);
pushDatas.add(distributionLoadscanEntity);
packageLockIds.add(distributionLoadscanEntity.getPackageId());
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", distributionLoadscanEntity.getOrderPackageCode());
@ -3341,6 +3353,15 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionReservationService.maintenanceReservationInfo(distrilbutionloadingscanDTO.getReservationId());
//维护配送任务
distributionDeliveryListService.maintenanceDeliveryInfo(distrilbutionloadingscanDTO.getDeliveryId());
// 推送作业节点
// 作业节点数据推送
NodeFanoutMsg<org.springblade.common.model.DistributionSignforVO> nodeFanoutMsg = buildDistributionSignforVO(deliveryListEntity, distributionReservationEntity, pushDatas);
iDistributionNodeWorkService.signFor(nodeFanoutMsg, AuthUtil.getUser());
return R.data(orderpackages, "签收成功");
} catch (Exception e) {
@ -3483,6 +3504,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
List<Long> packageLockIds = new ArrayList<>();
List<JSONObject> aaa = new ArrayList<>();
if (Func.isNotEmpty(parcelListEntityList) && parcelListEntityList.size() == 1) {
List<DistributionLoadscanEntity> pushList = new ArrayList<>();
DistributionParcelListEntity parcelListEntity = parcelListEntityList.get(0);
if (parcelListEntity.getOrderPackageStatus().equals(OrderPackageStatusConstant.yiqianshou.getValue())) {
return Resp.scanFail("操作失败", "该包件已签收");
@ -3623,6 +3646,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
if (Func.isEmpty(loadscanEntity.getId())) {
//更新装车包件数和签收包件数
distributionLoadscanService.save(distributionLoadscanEntity);
pushList.add(distributionLoadscanEntity);
loadingId = distributionLoadscanEntity.getId();
Integer j = distributionSignforMapper.updateSignforByReservationId(distributionLoadscanEntity.getDeliveryId(), distributionLoadscanEntity.getReservationId(), distributionLoadscanEntity.getPackageNub());
} else {
@ -3701,6 +3725,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
if (Func.isEmpty(loadscanEntity)) {
loadingId = distributionLoadscanEntity.getId();
distributionLoadscanService.save(distributionLoadscanEntity);
pushList.add(distributionLoadscanEntity);
} else {
loadingId = distributionLoadscanEntity.getId();
content = "包件在" + myCurrentWarehouse.getName() + "由" + loadscanEntity.getScanUser() + "扫描异常签收,装车方式:扫描装车,配送车次号:" + distributionDeliveryListEntity.getTrainNumber() + "预约任务号:" + reservationEntity.getReservationCode();
@ -3768,27 +3793,37 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
// distributionAsyncService.sendFactory(parcelListEntity, simpleDateFormat.format(new Date()), distributionReservationEntity.getId(), distributionReservationEntity.getReservationCode(), myCurrentWarehouse.getName(), nickName);
sendNodeWorkDataBroadcast(parcelListEntity, reservationEntity, simpleDateFormat.format(new Date()), myCurrentWarehouse);
} else {
log.error("############出现相同的包件码:{}", distrilbutionloadingscanDTO.getBarcode());
return Resp.scanFail("操作失败", "包件信息有误");
}
String s = checkAbnormalSignNum(distrilbutionloadingscanDTO);
if (!packageLockIds.isEmpty()) {
List<Long> a = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:");
if (Func.isNotEmpty(a)) {
boolean flag = a.stream().anyMatch(any -> packageLockIds.contains(any));
if (flag) {
//正在操作,请稍后重试
throw new CustomerException("该包件正在被操作,请稍后再试!!!");
String s = checkAbnormalSignNum(distrilbutionloadingscanDTO);
if (!packageLockIds.isEmpty()) {
List<Long> a = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:");
if (Func.isNotEmpty(a)) {
boolean flagT = a.stream().anyMatch(any -> packageLockIds.contains(any));
if (flagT) {
//正在操作,请稍后重试
throw new CustomerException("该包件正在被操作,请稍后再试!!!");
} else {
packageLockIds.addAll(a);
bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:", packageLockIds, 10L);
}
} else {
packageLockIds.addAll(a);
bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:", packageLockIds, 10L);
}
} else {
bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:", packageLockIds, 10L);
}
// 作业节点数据推送
NodeFanoutMsg<org.springblade.common.model.DistributionSignforVO> nodeFanoutMsg = buildDistributionSignforVO(distributionDeliveryListEntity, reservationEntity, pushList);
iDistributionNodeWorkService.signFor(nodeFanoutMsg, AuthUtil.getUser());
return Resp.scanSuccess("操作成功", s);
} else {
log.error("############出现相同的包件码:{}", distrilbutionloadingscanDTO.getBarcode());
return Resp.scanFail("操作失败", "包件信息有误");
}
return Resp.scanSuccess("操作成功", s);
}
/**
@ -4682,7 +4717,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
return Resp.scanSuccess("已打卡", "已打卡");
}
String positioning = distributionSignfor.getPositioning();
GAddressVo add =GaoDeApiUtil.getAdd(positioning);
GAddressVo add = GaoDeApiUtil.getAdd(positioning);
boolean update = this.update(new UpdateWrapper<DistributionSignforEntity>().lambda()
.eq(DistributionSignforEntity::getReservationId, distributionSignfor.getReservationId())
.eq(DistributionSignforEntity::getDeliveryId, distributionSignfor.getDeliveryId())
@ -4696,12 +4731,12 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
BladeUser user = AuthUtil.getUser();
NodeFanoutMsg<ConsigneeArriveVO> nodeFanoutMsg= buildConsigneeArriveVO(deliveryListEntity,reservationEntity,add,user);
iDistributionNodeWorkService.carArrived(nodeFanoutMsg,user);
NodeFanoutMsg<ConsigneeArriveVO> nodeFanoutMsg = buildConsigneeArriveVO(deliveryListEntity, reservationEntity, add, user);
iDistributionNodeWorkService.carArrived(nodeFanoutMsg, user);
return Resp.scanSuccess("打卡成功", "打卡成功");
}
private NodeFanoutMsg<ConsigneeArriveVO> buildConsigneeArriveVO(DistributionDeliveryListEntity deliveryListEntity, DistributionReservationEntity reservationEntity,GAddressVo add, BladeUser user) {
private NodeFanoutMsg<ConsigneeArriveVO> buildConsigneeArriveVO(DistributionDeliveryListEntity deliveryListEntity, DistributionReservationEntity reservationEntity, GAddressVo add, BladeUser user) {
NodeFanoutMsg<ConsigneeArriveVO> nodeFanoutMsg = new NodeFanoutMsg();
nodeFanoutMsg.setBizOperation(BizOperationEnums.ADD);
@ -4740,7 +4775,6 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
consigneeArriveVO.setPositioning(add.getPositioning());
consigneeArriveVO.setDriverName(driverName);
consigneeArriveVO.setVehicleName(vehicleName);
nodeFanoutMsg.setMain(consigneeArriveVO);
@ -4759,22 +4793,6 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
return R.fail(403, "仓库信息不能为空");
// throw new CustomerException(403, "仓库信息不能为/**/空");
}
// ------------------------------------2023-09-08 一键签收调整------------------------------------------
//1、查询本次一键签收操作是否有效 ---- > 这里一件签收针对的就是制定的任务下的包件和库存品
// 无效 -- > 直接提示该次操作无效 无效的场景快速点击操作两次签收的动作,司机已经进行了所有的包件签收扫描但是还未进行签收确认的动作
// 有效 -- >
// 查询该车次任务中装车的包件和库存品 此时一键签收就需要将该车次中的所有包件和库存品都进行签收
// 此时考虑多种场景:
// 1、存在库存品 库存品未进行备货操作无法进行一件装车,但是对于已备货的库存品可以进行装车
// 2、多个车次的配送任务进行一件签收状态、在没有进行装车操作的时候
//
// 3、对于已经装车的库存品或者包件在一件签收的时候需要进行过滤
// Map<String, List<DistributionSignPrintDTO>> map = distributionSignfor.getMap();
// if (Func.isEmpty(map)){
// log.error("#############无图片信息:{}", map);
// return R.fail("无图片信息");
// }
this.updatePicture(distributionSignfor);
//2、维护状态
DistributionReservationEntity reservationEntity = distributionReservationMapper.selectById(distributionSignfor.getReservationId());
@ -4796,6 +4814,9 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
Map<String, Object> map = new HashMap<>();
List<DistributionLoadscaninvnEntity> distributionLoadscaninvnEntityLists = new ArrayList<>();
List<DistributionLoadscanEntity> distributionLoadscanEntityLists = new ArrayList<>();
DistributionDeliverySelfEntity distributionDeliverySelfEntity = null;
if ("1".equals(distributionDeliveryListEntity.getKind())) {
//自主
@ -4845,6 +4866,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
loadscaninvnEntity.setReceivedQuantity(detailEntity.getNum());
loadscaninvnEntity.setSigningTime(simpleDateFormat.format(new Date()));
distributionLoadscaninvnService.updateById(loadscaninvnEntity);
distributionLoadscaninvnEntityLists.add(loadscaninvnEntity);
Integer i = distributionDeliveryListMapper.updateloadingTimeById(distributionDeliveryListEntity.getId());
Integer j = distributionSignforMapper.updatesignforByinvn(loadscaninvnEntity.getDeliveryId(), loadscaninvnEntity.getReservationId(), loadscaninvnEntity.getPackageNub());
//更新签收人
@ -4899,6 +4921,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
newLoadscaninvnEntity.setMsg("司机一键签收数据补录");
}
distributionLoadscaninvnService.save(newLoadscaninvnEntity);
distributionLoadscaninvnEntityLists.add(newLoadscaninvnEntity);
Integer i = distributionDeliveryListMapper.updateloadingTimeById(distributionDeliveryListEntity.getId());
//更新签收表的签收数量和装车数量
Integer j = distributionSignforMapper.updateLoadAndsignforByinvn(newLoadscaninvnEntity.getDeliveryId(), newLoadscaninvnEntity.getReservationId(), newLoadscaninvnEntity.getPackageNub());
@ -4986,6 +5009,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscanEntity.setMsg("司机一键签收数据补录");
}
distributionLoadscanService.updateById(distributionLoadscanEntity);
distributionLoadscanEntityLists.add(distributionLoadscanEntity);
distributionAsyncService.checkSignStatus(distributionLoadscanEntity.getPackageId(), distributionLoadscanEntity.getReservationId(), distributionLoadscanEntity.getDeliveryId());
//更新签收人
Integer m = distributionSignforMapper.updateSignUser(distributionLoadscanEntity.getDeliveryId(), distributionLoadscanEntity.getReservationId(), AuthUtil.getUser());
@ -5042,6 +5066,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
loadscanEntity.setMsg("司机一键签收数据补录");
}
distributionLoadscanService.save(loadscanEntity);
distributionLoadscanEntityLists.add(loadscanEntity);
distributionAsyncService.checkSignStatus(loadscanEntity.getPackageId(), loadscanEntity.getReservationId(), loadscanEntity.getDeliveryId());
Integer i = distributionDeliveryListMapper.updateloadingTimeById(distributionDeliveryListEntity.getId());
@ -5186,15 +5211,6 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
reservationEntity.setSigningStatus(ReservationSigningStatusConstant.yiqianshou.getValue());
distributionReservationMapper.updateById(reservationEntity);
//维护签收状态
// distributionAsyncService.checkDeliverySignStatusByReservation(distributionSignforEntity.getDeliveryId());
// distributionDeliveryListEntity.setDeliveryListLoadingStatus(ReservationLoadingStatusConstant.yizhuangche.getValue());
// if (distributionSignfor.getIsClerk()) {
// distributionDeliveryListEntity.setDeliveryStatus(DeliveryStatusConstant.peisongzhong.getValue());
// } else {
// distributionDeliveryListEntity.setDeliveryStatus(DeliveryStatusConstant.yiwancheng.getValue());
// }
// distributionDeliveryListMapper.updateById(distributionDeliveryListEntity);
LambdaUpdateWrapper<DistributionSignforEntity> set = new UpdateWrapper<DistributionSignforEntity>().lambda()
.eq(DistributionSignforEntity::getId, distributionSignforEntity.getId())
.set(StringUtils.isNotBlank(distributionSignfor.getDeliverySignPictures()), DistributionSignforEntity::getDeliverySignPictures, distributionSignfor.getDeliverySignPictures())
@ -5213,6 +5229,12 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
boolean update = this.update(set);
//维护配送信息
distributionDeliveryListService.maintenanceDeliveryInfo(distributionSignforEntity.getDeliveryId());
// 推送作业节点
NodeFanoutMsg<org.springblade.common.model.DistributionSignforVO> nodeFanoutMsg = buildNodeFanoutMsgByOneClick(distributionDeliveryListEntity, reservationEntity, distributionLoadscaninvnEntityLists, distributionLoadscanEntityLists);
iDistributionNodeWorkService.signFor(nodeFanoutMsg, AuthUtil.getUser());
return R.data(map);
}
@ -5246,6 +5268,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
//
// 3、对于已经装车的库存品或者包件在一件签收的时候需要进行过滤
this.updatePicture(distributionSignfor);
List<DistributionLoadscaninvnEntity> distributionLoadscaninvnEntityLists = new ArrayList<>();
List<DistributionLoadscanEntity> distributionLoadscanEntityLists = new ArrayList<>();
//2、维护状态
DistributionReservationEntity reservationEntity = distributionReservationMapper.selectById(distributionSignfor.getReservationId());
if (Func.isEmpty(reservationEntity)) {
@ -5335,6 +5359,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
//更新签收人
Integer m = distributionSignforMapper.updateSignUser(loadscaninvnEntity.getDeliveryId(), loadscaninvnEntity.getReservationId(), AuthUtil.getUser());
packageLockIds.add(loadscaninvnEntity.getInventoryPackageId());
distributionLoadscaninvnEntityLists.add(loadscaninvnEntity);
}
} else {
DistributionLoadscaninvnEntity newLoadscaninvnEntity = new DistributionLoadscaninvnEntity();
@ -5382,6 +5407,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
newLoadscaninvnEntity.setMsg("司机一键签收数据补录");
}
distributionLoadscaninvnService.save(newLoadscaninvnEntity);
distributionLoadscaninvnEntityLists.add(newLoadscaninvnEntity);
packageLockIds.add(newLoadscaninvnEntity.getInventoryPackageId());
Integer j = distributionSignforMapper.updatesignforByinvn(newLoadscaninvnEntity.getDeliveryId(), newLoadscaninvnEntity.getReservationId(), newLoadscaninvnEntity.getPackageNub());
@ -5411,7 +5437,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
return R.fail("库存品未进行备货操作");
}
}
//查询出该签收任务下的客户对应的所有包件和库存品信息
//查询出该签收任务下的客户对应的所有包件和零担
List<String> orderCodes = new ArrayList<>();
List<DistributionParcelListEntity> parcelListEntityList = distributionReservationMapper.selectPackageListByReservationId(distributionSignforEntity.getReservationId());
//包件不需要考虑备货、装车直接可进行签收 过滤已装车的包件
@ -5467,6 +5493,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscanEntity.setWarehouseId(myCurrentWarehouse.getId());
distributionLoadscanEntity.setWarehouseName(myCurrentWarehouse.getName());
distributionLoadscanService.updateById(distributionLoadscanEntity);
distributionLoadscanEntityLists.add(distributionLoadscanEntity);
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", parcelListEntity.getOrderPackageCode());
jsonObject.put("warehouseId", myCurrentWarehouse.getId());
@ -5528,6 +5555,9 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
loadscanEntity.setIsZero(1);
distributionLoadscanService.save(loadscanEntity);
distributionLoadscanEntityLists.add(loadscanEntity);
distributionLoadscanEntityLists.add(loadscanEntity);
num = loadscanEntity.getLoadedNub();
packageLockIds.add(loadscanEntity.getPackageId());
@ -5738,9 +5768,90 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
this.updateById(distributionSignforEntity);
bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "reservationId:", distributionSignfor.getReservationId(), 60L);
NodeFanoutMsg<org.springblade.common.model.DistributionSignforVO> nodeFanoutMsg = buildNodeFanoutMsgByOneClick(distributionDeliveryListEntity, reservationEntity, distributionLoadscaninvnEntityLists, distributionLoadscanEntityLists);
iDistributionNodeWorkService.signFor(nodeFanoutMsg, AuthUtil.getUser());
return R.status(true);
}
private NodeFanoutMsg<org.springblade.common.model.DistributionSignforVO> buildNodeFanoutMsgByOneClick(DistributionDeliveryListEntity distributionDeliveryListEntity, DistributionReservationEntity reservationEntity, List<DistributionLoadscaninvnEntity> distributionLoadscaninvnEntityLists, List<DistributionLoadscanEntity> distributionLoadscanEntityLists) {
NodeFanoutMsg<org.springblade.common.model.DistributionSignforVO> nodeFanoutMsg = new NodeFanoutMsg();
nodeFanoutMsg.setBizOperation(BizOperationEnums.ADD);
nodeFanoutMsg.setNode(WorkNodeEnums.DISTRIBUTION_SIGN_FOR);
nodeFanoutMsg.setWarehouse(distributionDeliveryListEntity.getWarehouseName());
nodeFanoutMsg.setWarehouseId(distributionDeliveryListEntity.getWarehouseId());
nodeFanoutMsg.setOperator(AuthUtil.getNickName());
nodeFanoutMsg.setOperatorTime(distributionDeliveryListEntity.getUpdateTime());
// DistributionTaskVO taskVO = buildDistributionTaskVO(distributionDeliveryListEntity, AuthUtil.getUserId());
org.springblade.common.model.DistributionSignforVO distributionLoadVO = new org.springblade.common.model.DistributionSignforVO();
DistributionLoadscanEntity distributionLoadscanEntity = distributionLoadscanEntityLists.get(0);
distributionLoadVO.setDriverName(distributionLoadscanEntity.getDriverName());
distributionLoadVO.setVehicleName(distributionLoadscanEntity.getVehicleName());
distributionLoadVO.setReservationCode(reservationEntity.getReservationCode());
distributionLoadVO.setTrainNumber(distributionDeliveryListEntity.getTrainNumber());
distributionLoadVO.setReservationId(reservationEntity.getId());
List<PackageData> data = new ArrayList<>();
for (DistributionLoadscanEntity distributionParcelListEntity : distributionLoadscanEntityLists) {
PackageData packageData = new PackageData();
if (1 == distributionParcelListEntity.getIsZero()) {
// 零担
packageData.setPackageType(PackageTypeEnums.LTL);
packageData.setNumber(distributionLoadscanEntity.getReceivedQuantity());
DistributionParcelListEntity byId = distributionParcelListService.getById(distributionLoadscanEntity.getPackageId());
if (Func.isNotEmpty(byId)) {
packageData.setOrderCode(byId.getOrderCode());
packageData.setBrand(byId.getBrandName());
packageData.setWaybillNumber(byId.getWaybillNumber());
packageData.setProductName(byId.getFirsts());
}
} else {
packageData.setPackageCode(distributionParcelListEntity.getOrderPackageCode());
packageData.setPackageType(PackageTypeEnums.CMP);
packageData.setNumber(1);
DistributionParcelListEntity distributionParcelListEntity1 = distributionParcelListService.selectByOrderPackageCode(distributionParcelListEntity.getOrderPackageCode(), distributionParcelListEntity.getWarehouseId());
if (Func.isNotEmpty(distributionParcelListEntity1)) {
packageData.setBrand(distributionParcelListEntity1.getBrandName());
}
}
data.add(packageData);
}
for (DistributionLoadscaninvnEntity distributionLoadscaninvnEntityList : distributionLoadscaninvnEntityLists) {
// 库制品
PackageData packageData = new PackageData();
DistributionStockListEntity byIds = distributionStockListService.getById(distributionLoadscaninvnEntityList.getInventoryId());
if (Func.isNotEmpty(byIds)) {
packageData.setPackageCode(distributionLoadscaninvnEntityList.getOrderPackageCode());
packageData.setBrand(byIds.getBrandName());
// packageData.setProductName(byId.getDescriptionGoods());
packageData.setMallName(StringUtil.isBlank(byIds.getMallName()) ? byIds.getMarketName() : byIds.getMallName());
packageData.setMaterialCode(byIds.getCargoNumber());
packageData.setMaterialName(byIds.getDescriptionGoods());
packageData.setPickupBatch(byIds.getIncomingBatch());
packageData.setPackageType(PackageTypeEnums.INV);
}
packageData.setNumber(1);
}
distributionLoadVO.setPackageDataList(data);
nodeFanoutMsg.setMain(distributionLoadVO);
return null;
}
@Override
public R offline(String offlineJson) {

57
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockListServiceImpl.java

@ -16,7 +16,10 @@
*/
package com.logpm.distribution.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@ -32,12 +35,26 @@ import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataClientClient;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.dto.DistributionStockListDTO;
import com.logpm.distribution.entity.*;
import com.logpm.distribution.entity.DisStockListDetailEntity;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionReservationEntity;
import com.logpm.distribution.entity.DistributionStockListEntity;
import com.logpm.distribution.entity.DistributionStockListInfoEntity;
import com.logpm.distribution.entity.DistributionUnpackingDetailsEntity;
import com.logpm.distribution.excel.DistributionStockListExcel;
import com.logpm.distribution.mapper.DistributionReservationMapper;
import com.logpm.distribution.mapper.DistributionStockListMapper;
import com.logpm.distribution.service.*;
import com.logpm.distribution.vo.*;
import com.logpm.distribution.service.IDisStockListDetailService;
import com.logpm.distribution.service.IDistributionParcelListService;
import com.logpm.distribution.service.IDistributionStockArticleService;
import com.logpm.distribution.service.IDistributionStockListInfoService;
import com.logpm.distribution.service.IDistributionStockListService;
import com.logpm.distribution.service.IDistributionUnpackingDetailsService;
import com.logpm.distribution.vo.DistributionStockListAllocationVO;
import com.logpm.distribution.vo.DistributionStockListVO;
import com.logpm.distribution.vo.DistributionStockupStockListInfoVO;
import com.logpm.distribution.vo.OrderPackgeCodeDataVO;
import com.logpm.distribution.vo.StockListInfoListVO;
import com.logpm.distribution.vo.app.DistributionMerchantStockListVO;
import com.logpm.distribution.vo.app.StockMallVO;
import com.logpm.trunkline.feign.ITrunklinePackageTrackLogClient;
@ -72,7 +89,13 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
@ -258,6 +281,32 @@ public class DistributionStockListServiceImpl extends BaseServiceImpl<Distributi
return excelList;
}
@Override
public DistributionStockListEntity findStockListByAttrAndWarehouseId(DistributionStockListEntity stockListEntity) {
LambdaQueryWrapper<DistributionStockListEntity> wrapper = Wrappers.<DistributionStockListEntity>lambdaQuery()
.eq(DistributionStockListEntity::getWarehouseId, stockListEntity.getWarehouseId());
if (StrUtil.isNotEmpty(stockListEntity.getIncomingBatch())) {
wrapper.eq(DistributionStockListEntity::getIncomingBatch, stockListEntity.getIncomingBatch());
}
if (StrUtil.isNotEmpty(stockListEntity.getMallName())) {
wrapper.eq(DistributionStockListEntity::getMarketName, stockListEntity.getMallName());
} else {
return null;
}
if (StrUtil.isEmpty(stockListEntity.getCargoNumber()) && StrUtil.isEmpty(stockListEntity.getDescriptionGoods())) {
return null;
}
if (StrUtil.isNotEmpty(stockListEntity.getCargoNumber())) {
wrapper.eq(DistributionStockListEntity::getCargoNumber, stockListEntity.getCargoNumber());
} else {
wrapper.eq(DistributionStockListEntity::getDescriptionGoods, stockListEntity.getDescriptionGoods());
}
List<DistributionStockListEntity> list = this.list(wrapper);
if (CollUtil.isNotEmpty(list)){
return list.get(0);
}
return null;
}
@Override

605
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java

@ -134,7 +134,14 @@ import org.springblade.common.constant.reservation.ReservationPackageStatusConst
import org.springblade.common.constant.stockup.StockAssignStatusConstant;
import org.springblade.common.constant.stockup.StockupStatusConstant;
import org.springblade.common.constant.stockup.StockupTypeConstant;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.enums.PackageTypeEnums;
import org.springblade.common.exception.CustomerException;
import org.springblade.common.model.NodeFanoutMsg;
import org.springblade.common.model.PackageData;
import org.springblade.common.model.workNode.DeliveryOfPickupPlanFeiVO;
import org.springblade.common.model.workNode.DeliveryOfPickupPlanVO;
import org.springblade.common.model.workNode.PickUpByScanVO;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
@ -159,18 +166,7 @@ import javax.annotation.Resource;
import java.io.Serializable;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
@ -396,6 +392,17 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
Boolean las = false;
List<JSONObject> logs = new ArrayList<>();
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
// 包条
List<DistrilbutionBillPackageEntity> packageEntityList = new ArrayList<>();
//库存品
List<DistributionDeliveryDetailsEntity> detailsEntities = new ArrayList<>();
// 零担
List<DistributionReservationZeroPackageEntity> zeroPackageEntityList = new ArrayList<>();
// 费用
List<DistributionDeliveryChargeEntity> listEntity = new ArrayList<>();
if (Func.isEmpty(myCurrentWarehouse)) {
log.error("自提操作未进行仓库选择");
return false;
@ -651,6 +658,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
//新增
// distrilbutionBillLading.setConditions("1");
distrilbutionBillLading.setStockupCode(distributionReservationService.bianMa());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String format = dateFormat.format(new Date());
distrilbutionBillLading.setPickupBatch("ZT" + format);//批次号
@ -661,8 +669,8 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
// List<DistributionParcelListDTO> parcelLisList = distrilbutionBillLading.getParcelLisList();
Map<Long, List<DistributionParcelListEntity>> packageMap = null;
if (Func.isNotEmpty(distrilbutionBillLading.getBillPackageEntityList())) {
List<DistrilbutionBillPackageEntity> packageEntityList = distrilbutionBillLading.getBillPackageEntityList();
List<Long> packageisd = packageEntityList.stream().map(DistrilbutionBillPackageEntity::getParceListId).collect(Collectors.toList());
List<DistrilbutionBillPackageEntity> packageEntityLists = distrilbutionBillLading.getBillPackageEntityList();
List<Long> packageisd = packageEntityLists.stream().map(DistrilbutionBillPackageEntity::getParceListId).collect(Collectors.toList());
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListService.listByIds(packageisd);
if (Func.isNotEmpty(distributionParcelListEntities)) {
packageMap = distributionParcelListEntities.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getStockArticleId));
@ -674,7 +682,6 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
zeroPackageMap = zeroPackageList.stream().collect(Collectors.groupingBy(DistributionParcelListDTO::getStockArticleId));
}
this.saveDistrilbutionBillLading(distrilbutionBillLading);
List<DistrilbutionBillPackageEntity> packageEntityList = new ArrayList<>();
if (StringUtils.isNotBlank(distrilbutionBillLading.getStockArticleId())) {
String[] split = distrilbutionBillLading.getStockArticleId().split(",");
for (String s : split) {
@ -781,6 +788,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
distributionReservationZeroPackageEntity.setRealityQuantity(0);
distributionReservationZeroPackageEntity.setZeroPackageStatus("1");
distributionZeroPackageService.save(distributionReservationZeroPackageEntity);
zeroPackageEntityList.add(distributionReservationZeroPackageEntity);
zeroPackageIds.add(distributionReservationZeroPackageEntity.getParcelListId());
//维护对应零担包件的配送数量
DistributionParcelNumberEntity distributionParcelNumberEntity = distributionParcelNumberService.getOne(Wrappers.<DistributionParcelNumberEntity>query().lambda()
@ -873,8 +881,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
log.info("自提添加库存品未填写数量>>>未填写库存品批次号:{}", collect);
throw new CustomerException("请填写正确的库存品数量");
}
//没有
List<DistributionDeliveryDetailsEntity> detailsEntities = new ArrayList<>();
Boolean finalLas = las;
distrilbutionBillLading.getStockDTOList().forEach(i -> {
DistributionDeliveryDetailsEntity details = new DistributionDeliveryDetailsEntity();
@ -918,7 +925,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
.eq(DistributionDeliveryChargeEntity::getBillLading, distrilbutionBillLading.getId())
.set(DistributionDeliveryChargeEntity::getIsDeleted, 1)
);
List<DistributionDeliveryChargeEntity> listEntity = new ArrayList<>();
distrilbutionBillLading.getFei().forEach((k, v) -> {
DistributionDeliveryChargeEntity distributionDeliveryCharge = new DistributionDeliveryChargeEntity();
distributionDeliveryCharge.setBillLading(distrilbutionBillLading.getId());
@ -932,9 +939,137 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
if (!logs.isEmpty()) {
trunklinePackageTrackLogClient.addPackageTrackLog(logs);
}
// 作业节点推送
NodeFanoutMsg<DeliveryOfPickupPlanVO> nodeFanoutMsg = buildNodeFanoutMsgForBill(distrilbutionBillLading, packageEntityList, detailsEntities, zeroPackageEntityList, listEntity);
iDistributionNodeWorkService.planOfBill(nodeFanoutMsg, AuthUtil.getUser());
return true;
}
private NodeFanoutMsg<DeliveryOfPickupPlanVO> buildNodeFanoutMsgForBill(DistrilbutionBillLadingDTO distrilbutionBillLading, List<DistrilbutionBillPackageEntity> packageEntityList, List<DistributionDeliveryDetailsEntity> detailsEntities, List<DistributionReservationZeroPackageEntity> zeroPackageEntityList, List<DistributionDeliveryChargeEntity> listEntity) {
if (distrilbutionBillLading.getId() == null) {
// 增加
return buildNodeFanoutMsgForBillByOption(distrilbutionBillLading, packageEntityList, detailsEntities, zeroPackageEntityList, listEntity, BizOperationEnums.ADD);
} else {
// 修改
return buildNodeFanoutMsgForBillByOption(distrilbutionBillLading, packageEntityList, detailsEntities, zeroPackageEntityList, listEntity, BizOperationEnums.MODIFY);
}
}
private NodeFanoutMsg<DeliveryOfPickupPlanVO> buildNodeFanoutMsgForBillByOption(DistrilbutionBillLadingDTO distrilbutionBillLading, List<DistrilbutionBillPackageEntity> packageEntityList, List<DistributionDeliveryDetailsEntity> detailsEntities, List<DistributionReservationZeroPackageEntity> zeroPackageEntityList, List<DistributionDeliveryChargeEntity> listEntity, BizOperationEnums bizOperation) {
NodeFanoutMsg<org.springblade.common.model.workNode.DeliveryOfPickupPlanVO> nodeFanoutMsg = new NodeFanoutMsg();
nodeFanoutMsg.setBizOperation(bizOperation);
nodeFanoutMsg.setNode(WorkNodeEnums.PLAN_BILLOFLADING);
nodeFanoutMsg.setWarehouse(distrilbutionBillLading.getWarehouse());
nodeFanoutMsg.setWarehouseId(distrilbutionBillLading.getWarehouseId());
nodeFanoutMsg.setOperator(AuthUtil.getNickName());
nodeFanoutMsg.setOperatorTime(new Date());
DeliveryOfPickupPlanVO deliveryOfPickupPlanVO = new DeliveryOfPickupPlanVO();
deliveryOfPickupPlanVO.setPickUpTime(distrilbutionBillLading.getPickUpTime());
deliveryOfPickupPlanVO.setConsignee(distrilbutionBillLading.getConsignee());
deliveryOfPickupPlanVO.setConsigneeUnit(distrilbutionBillLading.getConsigneeUnit());
deliveryOfPickupPlanVO.setConsigneePhone(distrilbutionBillLading.getConsigneePhone());
deliveryOfPickupPlanVO.setDeliveryDocument(distrilbutionBillLading.getDeliveryDocument());
deliveryOfPickupPlanVO.setPickUpPlate(distrilbutionBillLading.getPickUpPlate());
deliveryOfPickupPlanVO.setCertificateType(distrilbutionBillLading.getCertificateType());
deliveryOfPickupPlanVO.setRemark(distrilbutionBillLading.getRemark());
deliveryOfPickupPlanVO.setPickupBatch(deliveryOfPickupPlanVO.getPickupBatch());
List<PackageData> packageDataList = new ArrayList<>();
buildPackageByBillPackageExtracted(packageEntityList, packageDataList);
buildPackageDataByStockExtracted(detailsEntities, packageDataList);
builkPackageDataByZero(zeroPackageEntityList, packageDataList);
deliveryOfPickupPlanVO.setPackageDataList(packageDataList);
List<DeliveryOfPickupPlanFeiVO> deliveryOfPickupPlanFeiVOList = new ArrayList<>();
listEntity.forEach(t -> {
DeliveryOfPickupPlanFeiVO deliveryOfPickupPlanFeiVO = new DeliveryOfPickupPlanFeiVO();
deliveryOfPickupPlanFeiVO.setCost(t.getCost());
String deliveryType = DictBizCache.getValue("deliveryType", deliveryOfPickupPlanFeiVO.getCost());
deliveryOfPickupPlanFeiVO.setCostName(deliveryType);
deliveryOfPickupPlanFeiVO.setMoney(t.getMoney());
deliveryOfPickupPlanFeiVOList.add(deliveryOfPickupPlanFeiVO);
});
deliveryOfPickupPlanVO.setDeliveryOfPickupPlanFeiVOList(deliveryOfPickupPlanFeiVOList);
nodeFanoutMsg.setMain(deliveryOfPickupPlanVO);
return nodeFanoutMsg;
}
private void builkPackageDataByZero(List<DistributionReservationZeroPackageEntity> zeroPackageEntityList, List<PackageData> packageDataList) {
zeroPackageEntityList.forEach(t -> {
PackageData packageData = new PackageData();
packageData.setPackageType(PackageTypeEnums.LTL);
packageData.setNumber(t.getQuantity());
DistributionParcelListEntity byId = distributionParcelListService.getById(t.getParcelListId());
if (Func.isNotEmpty(byId)) {
packageData.setOrderCode(byId.getOrderCode());
if (Func.isEmpty(byId.getBrandName())) {
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(byId.getStockArticleId());
if (ObjectUtils.isNotNull(stockArticleEntity)) {
packageData.setBrand(stockArticleEntity.getBrand());
}
} else {
packageData.setBrand(byId.getBrandName());
}
packageData.setWaybillNumber(byId.getWaybillNumber());
}
packageData.setProductName(t.getCategoryName());
packageDataList.add(packageData);
});
}
private void buildPackageDataByStockExtracted(List<DistributionDeliveryDetailsEntity> detailsEntities, List<PackageData> packageDataList) {
detailsEntities.forEach(t -> {
PackageData packageData = new PackageData();
Long stockListId = t.getStockListId();
DistributionStockListEntity byId = distributionStockListService.getById(stockListId);
if (byId != null) {
packageData.setPickupBatch(byId.getIncomingBatch());
packageData.setBrand(byId.getBrandName());
packageData.setMaterialName(byId.getDescriptionGoods());
packageData.setMallName(byId.getMallName());
packageData.setMaterialCode(byId.getCargoNumber());
packageData.setNumber(t.getQuantity());
packageData.setPackageType(PackageTypeEnums.INV);
}
packageDataList.add(packageData);
});
}
private void buildPackageByBillPackageExtracted(List<DistrilbutionBillPackageEntity> packageEntityList, List<PackageData> packageDataList) {
packageEntityList.forEach(t -> {
PackageData packageData = new PackageData();
packageData.setPackageCode(t.getPacketBarCode());
packageData.setNumber(1);
packageData.setPackageType(PackageTypeEnums.CMP);
packageDataList.add(packageData);
});
}
private void sendFactoryPlan(List<DistributionParcelListEntity> parcelListEntities, BasicdataWarehouseEntity myCurrentWarehouse, DistrilbutionBillLadingDTO distrilbutionBillLading) {
// 包件按品牌分组
try {
@ -1184,7 +1319,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
List<String> orderPackageCodeList = ladingScanEntities.stream().map(DistributionBillLadingScanEntity::getPacketBarCode).collect(Collectors.toList());
for (String orderPackageCode : orderPackageCodeList) {
builder.append(orderPackageCode).append(",");
String content = "包件在" + myCurrentWarehouse.getName() + "由" + AuthUtil.getNickName() + "后台签收,自提任务号:" + billLadingEntity.getPickupBatch() ;
String content = "包件在" + myCurrentWarehouse.getName() + "由" + AuthUtil.getNickName() + "后台签收,自提任务号:" + billLadingEntity.getPickupBatch();
JSONObject aaa = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), orderPackageCode, content, WorkNodeEnums.SIGN_BILLOFLADING.getCode());
logList.add(aaa);
// orderPackageCodes.add(orderPackageCode);
@ -1198,10 +1333,10 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
// warehouseUpdownTypeClient.downPackageAndDelTrayAndIsUpdate(collect, myCurrentWarehouse.getId(), "后台PC自提签收下架", false);
}
if (Func.isNotEmpty(builder)){
if (Func.isNotEmpty(builder)) {
String string = builder.deleteCharAt(builder.length() - 1).toString();
if(StringUtils.isNotBlank(string)){
if (StringUtils.isNotBlank(string)) {
warehouseUpdownTypeClient.downPackageOrDelTray(string, myCurrentWarehouse.getId(), "签收下架解托");
}
}
@ -1277,7 +1412,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
// 转换仓库ID
// modifyWarehouseId(delivery);
Map<String,Object> map = oldSystemDataPushClient.pushOldSystemSignInfo(delivery);
Map<String, Object> map = oldSystemDataPushClient.pushOldSystemSignInfo(delivery);
Boolean flag = (Boolean) map.get("result");
return flag;
} catch (Exception e) {
@ -1468,7 +1603,8 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
// ---------------------------------2023-09-09 包件签收调整---------------------------------------------------------------
String singleTime = simpleDateFormat.format(new Date());
// 推送自提作业节点数据
sendNodeWorkDataBroadcast(parcelListEntity, id, singleTime, myCurrentWarehouse);
billLog(parcelListEntity, id, singleTime, myCurrentWarehouse.getName());
packageLockIds.add(parcelListEntity.getId());
}
break;
@ -2417,7 +2553,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
records.forEach(i -> {
if (groupedEntities != null) {
List<DistributionDeliveryChargeEntity> list = groupedEntities.get(i.getId());
if (!Func.isEmpty(groupedEntities.get(i.getId()))){
if (!Func.isEmpty(groupedEntities.get(i.getId()))) {
list.forEach(ii -> ii.setCostName(DictBizCache.getValue(DictBizConstant.DELIVERY_COST, ii.getCost())));
i.setList(list);
}
@ -3146,7 +3282,6 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
distributionBillLadingScan.setScanUser(AuthUtil.getUser().getNickName());
return processScan(type, distributionBillLadingScan.getBillLadingId(), coding, distributionBillLadingScan, myCurrentWarehouse, billLadingEntity1.getPickupBatch());
// return Resp.scanSuccess("签收成功", "签收成功");
@ -3191,6 +3326,12 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
List<DistrilbutionBillLadingInventoryAppVO> inventoryAppVO = distributionDeliveryDetailsService.listCode(String.valueOf(billLadingId));
List<JSONObject> aaa = new ArrayList<>();
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
if (ObjectUtils.isNull(myCurrentWarehouse)) {
return Resp.scanFail("请选择仓库!", "请选择仓库!");
}
DistrilbutionBillLadingEntity billLadingEntity = this.getById((Serializable) billLadingId);
if (inventoryAppVO == null) {
return Resp.scanFail("包件信息不存在", "包件信息不存在");
}
@ -3224,6 +3365,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
if (matchedPackage == null) {
return Resp.scanFail("系统无此编码!", "系统无此编码");
}
List<DistributionBillLadingScanEntity> billLadingScanEntities = new ArrayList<>();
distributionBillLadingScan.setPacketBarCode(coding);
distributionBillLadingScan.setStockListId(matchedPackage.getStockListId());
@ -3234,6 +3376,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
trunklinePackageTrackLogClient.addPackageTrackLog(aaa);
distributionBillLadingScanService.save(distributionBillLadingScan);
billLadingScanEntities.add(distributionBillLadingScan);
distributionStockListMapper.deductionQuantityStock(matchedPackage.getStockListId(), matchedPackage.getNum());
Map<Long, List<DistrilbutionBillLadingInventoryAppVO>> stockListMap = inventoryAppVO.stream().collect(Collectors.groupingBy(DistrilbutionBillLadingInventoryAppVO::getStockListId));
@ -3257,6 +3400,11 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
distributionAsyncService.getInventorySelfPickup(distrilbutionBillLadingInventoryAppVO.getStockArticleId());
}
BladeUser user = AuthUtil.getUser();
// 推送作业节点
NodeFanoutMsg<PickUpByScanVO> nodeFanoutMsg = buildNodeFanoutMsgBySign(billLadingEntity, billLadingScanEntities, user, myCurrentWarehouse);
iDistributionNodeWorkService.signByBill(nodeFanoutMsg, user);
// 其他逻辑...
return Resp.scanSuccess("签收成功", "签收成功");
}
@ -3264,6 +3412,9 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
private Resp handleInventoryProduct(String type, Long billLadingId, String coding, DistributionBillLadingScanEntity distributionBillLadingScan) {
List<DistributionBillLadingScanEntity> billLadingScanEntities = new ArrayList<>();
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
if (ObjectUtils.isNull(myCurrentWarehouse)) {
return Resp.scanFail("请选择仓库!", "请选择仓库!");
@ -3360,7 +3511,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
//查询订单包件数量签收的信息
DistributionStockArticleEntity one = distributionStockArticleEntityList.stream().filter(s -> s.getId().equals(so.getStockArticleId())).findFirst().orElse(null);
DistributionStockArticleEntity upObj =new DistributionStockArticleEntity();
DistributionStockArticleEntity upObj = new DistributionStockArticleEntity();
upObj.setId(so.getStockArticleId());
@ -3413,22 +3564,8 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
packageLockIds.add(distributionParcelListEntity.getId());
String signTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.sss").format(new Date());
sendNodeWorkDataBroadcast(distributionParcelListEntity, billLadingId, signTime, myCurrentWarehouse);
billLog(distributionParcelListEntity, billLadingId, signTime, myCurrentWarehouse.getName());
//推送梦天
// if (distributionParcelListEntity.getBrandName().equals("梦天")){
// Map<String, Object> pushMap = new HashMap<>();
// pushMap.put("orderPackageCode", coding);
// pushMap.put("operationTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
// pushMap.put("distributionContactId", billLadingId);
// pushMap.put("destinationWarehouse", myCurrentWarehouse.getName());
//
// rabbitTemplate.convertAndSend(RabbitConstant.MT_BUSINESS_DATA_2_FACTORY_EXCHANGE, RabbitConstant.MT_BUSINESS_DATA_2_FACTORY_ROUTING, pushMap, message -> {
// message.getMessageProperties()
// .setHeader("x-delay", 3000);
// return message;
// });
// }
}
@ -3437,16 +3574,15 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
if (n.get()) {
distributionBillLadingScanService.save(distributionBillLadingScan);
billLadingScanEntities.add(distributionBillLadingScan);
//进行下架解托
if(StringUtils.isNotBlank(distributionBillLadingScan.getPacketBarCode())){
warehouseUpdownTypeClient.downPackageOrDelTray(distributionBillLadingScan.getPacketBarCode(),myCurrentWarehouse.getId(),"自提下架解托");
if (StringUtils.isNotBlank(distributionBillLadingScan.getPacketBarCode())) {
warehouseUpdownTypeClient.downPackageOrDelTray(distributionBillLadingScan.getPacketBarCode(), myCurrentWarehouse.getId(), "自提下架解托");
}
String content = "包件在" + myCurrentWarehouse.getName() + "由" + AuthUtil.getNickName() + "扫描签收,自提任务号:" + billLadingEntity.getPickupBatch() ;
String content = "包件在" + myCurrentWarehouse.getName() + "由" + AuthUtil.getNickName() + "扫描签收,自提任务号:" + billLadingEntity.getPickupBatch();
//日志记录
List<JSONObject> logList = new ArrayList<>();
JSONObject aaa = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), distributionBillLadingScan.getPacketBarCode(), content, WorkNodeEnums.SIGN_BILLOFLADING.getCode());
@ -3481,24 +3617,108 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
redis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "pickupBatch:" + billLadingEntity.getPickupBatch() + "orderPackageCode:", packageLockIds, 60L);
}
}
BladeUser user = AuthUtil.getUser();
// 推送作业节点
NodeFanoutMsg<PickUpByScanVO> nodeFanoutMsg = buildNodeFanoutMsgBySign(billLadingEntity, billLadingScanEntities, user, myCurrentWarehouse);
iDistributionNodeWorkService.signByBill(nodeFanoutMsg, user);
return Resp.scanSuccess("签收成功", "签收成功");
}
/**
* 自提签收节点作业推送
*
* @param parcelListEntity
* @param billLadingId
* @param singleTime
* @param myCurrentWarehouse
*/
private void sendNodeWorkDataBroadcast(DistributionParcelListEntity parcelListEntity, Long billLadingId, String singleTime, BasicdataWarehouseEntity myCurrentWarehouse) {
private NodeFanoutMsg<PickUpByScanVO> buildNodeFanoutMsgBySign(DistrilbutionBillLadingEntity billLadingEntity, List<DistributionBillLadingScanEntity> billLadingScanEntities, BladeUser user, BasicdataWarehouseEntity myCurrentWarehouse) {
NodeFanoutMsg<org.springblade.common.model.workNode.PickUpByScanVO> nodeFanoutMsg = new NodeFanoutMsg();
nodeFanoutMsg.setBizOperation(BizOperationEnums.ADD);
nodeFanoutMsg.setNode(WorkNodeEnums.SIGN_BILLOFLADING);
nodeFanoutMsg.setWarehouse(myCurrentWarehouse.getName());
nodeFanoutMsg.setWarehouseId(myCurrentWarehouse.getId());
nodeFanoutMsg.setOperator(AuthUtil.getNickName());
nodeFanoutMsg.setOperatorTime(new Date());
nodeFanoutMsg.setTenantId(myCurrentWarehouse.getTenantId());
PickUpByScanVO pickUpByScanVO = new PickUpByScanVO();
pickUpByScanVO.setPickupBatch(billLadingEntity.getPickupBatch());
List<PackageData> packageDataList = new ArrayList<>();
pickUpByScanVO.setPackageDataList(packageDataList);
billLadingScanEntities.forEach(t -> {
PackageData packageData = new PackageData();
if ("1".equals(t.getMaterialType())) {
// 库存
Long stockListId = t.getStockListId();
DistributionStockListEntity byId = distributionStockListService.getById(stockListId);
if (byId != null) {
packageData.setPickupBatch(byId.getIncomingBatch());
packageData.setBrand(byId.getBrandName());
packageData.setMaterialName(byId.getDescriptionGoods());
packageData.setMallName(byId.getMallName());
packageData.setMaterialCode(byId.getCargoNumber());
packageData.setNumber(t.getQuantity());
packageData.setPackageType(PackageTypeEnums.INV);
}
} else if ("2".equals(t.getMaterialType())) {
//定制品
packageData.setPackageCode(t.getPacketBarCode());
packageData.setNumber(1);
packageData.setPackageType(PackageTypeEnums.CMP);
} else {
// 零担
packageData.setPackageType(PackageTypeEnums.LTL);
packageData.setNumber(t.getQuantity());
DistributionParcelListEntity byId = distributionParcelListService.getById(t.getParcelListId());
if (Func.isNotEmpty(byId)) {
packageData.setOrderCode(byId.getOrderCode());
if (Func.isEmpty(byId.getBrandName())) {
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(byId.getStockArticleId());
if (ObjectUtils.isNotNull(stockArticleEntity)) {
packageData.setBrand(stockArticleEntity.getBrand());
}
} else {
packageData.setBrand(byId.getBrandName());
}
packageData.setWaybillNumber(byId.getWaybillNumber());
packageData.setProductName(byId.getFirsts());
}
}
packageDataList.add(packageData);
});
nodeFanoutMsg.setMain(pickUpByScanVO);
return nodeFanoutMsg;
}
private void billLog(DistributionParcelListEntity parcelListEntity, Long taskId, String operationTime, String destinationWarehouse) {
try {
iDistributionNodeWorkService.billofladingSignfor(parcelListEntity, billLadingId, singleTime, myCurrentWarehouse.getName());
cn.hutool.json.JSONObject main = new cn.hutool.json.JSONObject();
main.set("boId", taskId.toString());
NodePushMsg nodePushMsg = NodePushMsg.builder()
.operator(AuthUtil.getNickName())
.operatorTime(new Date())
.warehouse(parcelListEntity.getWarehouse())
.startWarehouse(parcelListEntity.getSendWarehouseName())
.endWarehouse(parcelListEntity.getAcceptWarehouseName())
.address("在【" + parcelListEntity.getWarehouse() + "】签收")
.brand(BrandEnums.getByValue(parcelListEntity.getBrandName()))
.node(WorkNodeEnums.SIGN_BILLOFLADING)
.main(JSONUtil.toJsonStr(main))
.content(Collections.singletonList(PushData.builder()
.packageCode(parcelListEntity.getOrderPackageCode())
.warehouseName(parcelListEntity.getWarehouse())
.waybillNumber(parcelListEntity.getWaybillNumber())
.orderCode(parcelListEntity.getOrderCode())
.build()))
.build();
factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg);
} catch (Exception e) {
// throw new RuntimeException(e);
log.error(">>>> 自提签收作业节点广播报错", e);
log.error("自提扫码广播:", e);
}
}
/**
@ -3573,137 +3793,137 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
String[] split = ids.split(",");
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
if (Func.isEmpty(myCurrentWarehouse)) {
return R.fail(403,"未授权!!!");
return R.fail(403, "未授权!!!");
}
Set<Long> parcelListIds = new HashSet<>();
for (int i = 0; i < split.length; i++) {
String s = split[i];
//查询是不是上传图片
List<DistributionPrintEntity> list1 = distributionPrintService.list(Wrappers.<DistributionPrintEntity>query().lambda()
.eq(DistributionPrintEntity::getBillLadingId, s)
);
if (list1.isEmpty()) {
return R.fail("请上传签收图片!!");
}
int count = (int) list1.stream().filter(ii -> "1".equals(ii.getGenre().toString())).count();
int count1 = (int) list1.stream().filter(ii -> "2".equals(ii.getGenre().toString())).count();
int count2 = (int) list1.stream().filter(ii -> "3".equals(ii.getGenre().toString())).count();
if (count1 < 1 || count < 1 || count2 < 1) {
return R.fail("请上传完整签收图片!!");
}
List<DistributionBillLadingScanEntity> ladingScanEntities = distributionBillLadingScanService.list(Wrappers.<DistributionBillLadingScanEntity>query().lambda()
.eq(DistributionBillLadingScanEntity::getBillLadingId, Long.parseLong(s))
);
if (ladingScanEntities.isEmpty()){
return R.fail("无签收数据!!");
}
for (int i = 0; i < split.length; i++) {
String s = split[i];
//查询是不是上传图片
List<DistributionPrintEntity> list1 = distributionPrintService.list(Wrappers.<DistributionPrintEntity>query().lambda()
.eq(DistributionPrintEntity::getBillLadingId, s)
);
if (list1.isEmpty()) {
return R.fail("请上传签收图片!!");
}
int count = (int) list1.stream().filter(ii -> "1".equals(ii.getGenre().toString())).count();
int count1 = (int) list1.stream().filter(ii -> "2".equals(ii.getGenre().toString())).count();
int count2 = (int) list1.stream().filter(ii -> "3".equals(ii.getGenre().toString())).count();
if (count1 < 1 || count < 1 || count2 < 1) {
return R.fail("请上传完整签收图片!!");
}
List<DistributionBillLadingScanEntity> ladingScanEntities = distributionBillLadingScanService.list(Wrappers.<DistributionBillLadingScanEntity>query().lambda()
.eq(DistributionBillLadingScanEntity::getBillLadingId, Long.parseLong(s))
);
if (ladingScanEntities.isEmpty()) {
return R.fail("无签收数据!!");
}
//修改提货状态
DistrilbutionBillLadingEntity billLadingEntity = new DistrilbutionBillLadingEntity();
billLadingEntity.setConditions(BillLadingStatusConstant.yiqianshou.getValue());
billLadingEntity.setId(Long.parseLong(s));
billLadingEntity.setExamineUserName(AuthUtil.getNickName());
billLadingEntity.setExamineUserId(AuthUtil.getUserId());
this.updateById(billLadingEntity);
DistrilbutionBillLadingEntity distrilbutionBillLadingEntity = baseMapper.selectById(billLadingEntity.getId());
//完成备货状态
distributionStockupInfoService.maintenanceStockUp(Long.parseLong(s), 2);
//查询自提单是否完成扫描
Integer integer = this.selectBillLadingPlanNum(Long.parseLong(s));
if (Func.isNotEmpty(ladingScanEntities)) {
int sum = ladingScanEntities.stream().filter(f->f.getMaterialType().equals("2")).mapToInt(DistributionBillLadingScanEntity::getQuantity).sum();
//修改提货状态
DistrilbutionBillLadingEntity billLadingEntity = new DistrilbutionBillLadingEntity();
billLadingEntity.setConditions(BillLadingStatusConstant.yiqianshou.getValue());
billLadingEntity.setId(Long.parseLong(s));
billLadingEntity.setExamineUserName(AuthUtil.getNickName());
billLadingEntity.setExamineUserId(AuthUtil.getUserId());
this.updateById(billLadingEntity);
DistrilbutionBillLadingEntity distrilbutionBillLadingEntity = baseMapper.selectById(billLadingEntity.getId());
//完成备货状态
distributionStockupInfoService.maintenanceStockUp(Long.parseLong(s), 2);
//查询自提单是否完成扫描
Integer integer = this.selectBillLadingPlanNum(Long.parseLong(s));
if (Func.isNotEmpty(ladingScanEntities)) {
int sum = ladingScanEntities.stream().filter(f -> f.getMaterialType().equals("2")).mapToInt(DistributionBillLadingScanEntity::getQuantity).sum();
// if (sum == 0){
// //未进行任何签收扫描的操作这里需要进行拦截
// throw new ServiceException("无签收数据");
//
// }
if (integer != sum) {
//存在资源释放操作
releaseBillLadingResource(Long.parseLong(s), myCurrentWarehouse,distrilbutionBillLadingEntity.getPickupBatch());
}
try {
if (sum > 0){
parcelListIds.addAll(ladingScanEntities.stream().map(DistributionBillLadingScanEntity::getParcelListId).collect(Collectors.toSet()));
List<DistributionParcelListEntity> listByOrderPackageCode = distributionParcelListService.findListByOrderPackageCode(ladingScanEntities.stream().map(DistributionBillLadingScanEntity::getPacketBarCode).collect(Collectors.toList()), myCurrentWarehouse.getId());
// 根据品牌分组
Map<String, List<DistributionParcelListEntity>> collect = listByOrderPackageCode.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getBrandName));
for (Map.Entry<String, List<DistributionParcelListEntity>> entry : collect.entrySet()) {
String brand = entry.getKey();
List<DistributionParcelListEntity> list = entry.getValue();
// 按订单分组
Map<String, List<DistributionParcelListEntity>> collect1 = list.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getOrderCode));
for (Map.Entry<String, List<DistributionParcelListEntity>> stringListEntry : collect1.entrySet()) {
String orderCode = stringListEntry.getKey();
List<DistributionParcelListEntity> list2 = stringListEntry.getValue();
JSONObject js = new JSONObject();
js.put("boId", billLadingEntity.getId());
js.put("consignee", distrilbutionBillLadingEntity.getConsignee());
js.put("images", list1.stream().map(m -> m.getSite()).collect(Collectors.toList()));
NodePushMsg msg = new NodePushMsg();
msg.setNode(WorkNodeEnums.CLERK_REVIEW);
msg.setBrand(BrandEnums.getByValue(brand));
msg.setWarehouse(myCurrentWarehouse.getName());
msg.setOperator(AuthUtil.getNickName());
msg.setOperatorTime(new Date());
msg.setContent(list2.stream().map(pushData->{
return PushData.builder()
.packageCode(pushData.getOrderPackageCode())
.warehouseName(myCurrentWarehouse.getName())
.waybillNumber(pushData.getWaybillNumber())
.orderCode(pushData.getOrderCode())
.build();
}).collect(Collectors.toList()));
msg.setMain(JSONUtil.toJsonStr(js));
log.info("推送工厂数据:{}", JSONUtil.toJsonStr(msg));
factoryDataMessageSender.sendNodeDataByBrand(msg);
}
if (integer != sum) {
//存在资源释放操作
releaseBillLadingResource(Long.parseLong(s), myCurrentWarehouse, distrilbutionBillLadingEntity.getPickupBatch());
}
try {
if (sum > 0) {
parcelListIds.addAll(ladingScanEntities.stream().map(DistributionBillLadingScanEntity::getParcelListId).collect(Collectors.toSet()));
List<DistributionParcelListEntity> listByOrderPackageCode = distributionParcelListService.findListByOrderPackageCode(ladingScanEntities.stream().map(DistributionBillLadingScanEntity::getPacketBarCode).collect(Collectors.toList()), myCurrentWarehouse.getId());
// 根据品牌分组
Map<String, List<DistributionParcelListEntity>> collect = listByOrderPackageCode.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getBrandName));
for (Map.Entry<String, List<DistributionParcelListEntity>> entry : collect.entrySet()) {
String brand = entry.getKey();
List<DistributionParcelListEntity> list = entry.getValue();
// 按订单分组
Map<String, List<DistributionParcelListEntity>> collect1 = list.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getOrderCode));
for (Map.Entry<String, List<DistributionParcelListEntity>> stringListEntry : collect1.entrySet()) {
String orderCode = stringListEntry.getKey();
List<DistributionParcelListEntity> list2 = stringListEntry.getValue();
JSONObject js = new JSONObject();
js.put("boId", billLadingEntity.getId());
js.put("consignee", distrilbutionBillLadingEntity.getConsignee());
js.put("images", list1.stream().map(m -> m.getSite()).collect(Collectors.toList()));
NodePushMsg msg = new NodePushMsg();
msg.setNode(WorkNodeEnums.CLERK_REVIEW);
msg.setBrand(BrandEnums.getByValue(brand));
msg.setWarehouse(myCurrentWarehouse.getName());
msg.setOperator(AuthUtil.getNickName());
msg.setOperatorTime(new Date());
msg.setContent(list2.stream().map(pushData -> {
return PushData.builder()
.packageCode(pushData.getOrderPackageCode())
.warehouseName(myCurrentWarehouse.getName())
.waybillNumber(pushData.getWaybillNumber())
.orderCode(pushData.getOrderCode())
.build();
}).collect(Collectors.toList()));
msg.setMain(JSONUtil.toJsonStr(js));
log.info("推送工厂数据:{}", JSONUtil.toJsonStr(msg));
factoryDataMessageSender.sendNodeDataByBrand(msg);
}
}
}catch (Exception e){
log.error("推送失败:{}", e);
}
for (DistributionBillLadingScanEntity ladingScanEntity : ladingScanEntities) {
// 签收发送消息到工厂
pushFactoryOrderData(myCurrentWarehouse.getId(), ladingScanEntity.getParcelListId().toString(), ladingScanEntity.getOrderSelfNumbering());
}
} catch (Exception e) {
log.error("推送失败:{}", e);
}
//修改订单状态
List<DistrilbutionBillStockEntity> list = distrilbutionBillStockService.list(Wrappers.<DistrilbutionBillStockEntity>query().lambda()
.eq(DistrilbutionBillStockEntity::getBillLadingId, s)
.apply("order_status in ( '1' , '3')")
// .or(ew -> ew.eq(DistrilbutionBillStockEntity::getBillLadingId, s).apply(DistrilbutionBillStockEntity::getOrderStatus, "2"))
);
if (!list.isEmpty()) {
list.forEach(li -> {
DistributionStockArticleEntity stockArticleEntity = new DistributionStockArticleEntity();
stockArticleEntity.setId(li.getStockArticleId());
List<DistributionParcelListEntity> list2 = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda()
.eq(DistributionParcelListEntity::getStockArticleId, li.getStockArticleId())
.apply("order_package_status != 70 ")
);
if (list2.isEmpty()) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.qianshou.getValue());
} else {
stockArticleEntity.setOrderStatus(OrderStatusConstant.bufenqianshou.getValue());
}
//回退包件数据
Integer i1 = updatePack(li.getStockArticleId(), Long.valueOf(s));
if (i1 > 0) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.bufenqianshou.getValue());
}
distributionStockArticleService.updateById(stockArticleEntity);
});
distributionAsyncService.sendFactorySignforInfo(s, myCurrentWarehouse, AuthUtil.getUser());
for (DistributionBillLadingScanEntity ladingScanEntity : ladingScanEntities) {
// 签收发送消息到工厂
pushFactoryOrderData(myCurrentWarehouse.getId(), ladingScanEntity.getParcelListId().toString(), ladingScanEntity.getOrderSelfNumbering());
}
//处理库存品签收数据
updateStock(s);
}
//修改订单状态
List<DistrilbutionBillStockEntity> list = distrilbutionBillStockService.list(Wrappers.<DistrilbutionBillStockEntity>query().lambda()
.eq(DistrilbutionBillStockEntity::getBillLadingId, s)
.apply("order_status in ( '1' , '3')")
// .or(ew -> ew.eq(DistrilbutionBillStockEntity::getBillLadingId, s).apply(DistrilbutionBillStockEntity::getOrderStatus, "2"))
);
if (!list.isEmpty()) {
// 回传老系统自提数据
sendOldSystem(Long.parseLong(s));
//整理运单信息
handletrunklineWaybillSignLog(billLadingEntity.getId());
list.forEach(li -> {
DistributionStockArticleEntity stockArticleEntity = new DistributionStockArticleEntity();
stockArticleEntity.setId(li.getStockArticleId());
List<DistributionParcelListEntity> list2 = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda()
.eq(DistributionParcelListEntity::getStockArticleId, li.getStockArticleId())
.apply("order_package_status != 70 ")
);
if (list2.isEmpty()) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.qianshou.getValue());
} else {
stockArticleEntity.setOrderStatus(OrderStatusConstant.bufenqianshou.getValue());
}
//回退包件数据
Integer i1 = updatePack(li.getStockArticleId(), Long.valueOf(s));
if (i1 > 0) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.bufenqianshou.getValue());
}
distributionStockArticleService.updateById(stockArticleEntity);
});
distributionAsyncService.sendFactorySignforInfo(s, myCurrentWarehouse, AuthUtil.getUser());
}
//处理库存品签收数据
updateStock(s);
// 回传老系统自提数据
sendOldSystem(Long.parseLong(s));
//整理运单信息
handletrunklineWaybillSignLog(billLadingEntity.getId());
}
// 回传工厂数据
sendFactory(myCurrentWarehouse, parcelListIds);
@ -3743,7 +3963,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
}
}
public void releaseBillLadingResource(Long l, BasicdataWarehouseEntity warehouse,String pickupBatch) {
public void releaseBillLadingResource(Long l, BasicdataWarehouseEntity warehouse, String pickupBatch) {
List<DistrilbutionBillPackageEntity> list = distrilbutionBillPackageService.list(Wrappers.<DistrilbutionBillPackageEntity>query().lambda()
.eq(DistrilbutionBillPackageEntity::getBillLadingId, l)
.ne(DistrilbutionBillPackageEntity::getPacketBarStatus, 2)
@ -4158,24 +4378,9 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
.eq(DistributionReservationZeroPackageEntity::getIsDeleted, 0)
.in(DistributionReservationZeroPackageEntity::getZeroPackageStatus, "1", "3")
);
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
//添加自提签收数据
List<DistributionBillLadingScanEntity> billLadingScanList = new ArrayList<>();
// billLadingAppDTO.getList().forEach(i ->{
// //判断是否大于总件数的数量
// DistributionParcelListEntity byId = distributionParcelListService.getById(i.getId());
// if(i.getQuantity() > byId.getQuantity()){
// throw new ServiceException("签收数量大于订单数量!!");
// }
// DistributionBillLadingScanEntity billLadingScan = new DistributionBillLadingScanEntity();
// billLadingScan.setScanType(2);
// billLadingScan.setParcelListId(i.getId());
// billLadingScan.setOrderSelfNumbering(i.getOrderCode());
// billLadingScan.setStockArticleId(i.getStockArticleId());
// billLadingScan.setBillLadingId(billLadingAppDTO.getBillLadingId());
// billLadingScan.setMaterialType("3");
// billLadingScan.setQuantity(i.getQuantity());
// billLadingScanList.add(billLadingScan);
// });
//查询
//修改签收状态
billLadingAppDTO.getList().stream().collect(Collectors.groupingBy(DistrilbutionAppBillLadingZeroVO::getStockArticleId))
@ -4223,6 +4428,13 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
if (!billLadingScanList.isEmpty()) {
distributionBillLadingScanService.saveBatch(billLadingScanList);
distributionAsyncService.getStockUPstate(billLadingAppDTO.getBillLadingId());
BladeUser user = AuthUtil.getUser();
// 推送作业节点
NodeFanoutMsg<PickUpByScanVO> nodeFanoutMsg = buildNodeFanoutMsgBySign(billLadingEntity, billLadingScanList, user, myCurrentWarehouse);
iDistributionNodeWorkService.signByBill(nodeFanoutMsg, user);
return Resp.scanSuccess("签收成功!", "签收成功!");
}
billLadingEntity.setConditions(BillLadingStatusConstant.yitihuo.getValue());
@ -4296,6 +4508,8 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
public R zeroBillPack(BillLadingAppDTO billLadingAppDTO) {
DistrilbutionAppBillLadingZeroVO i = billLadingAppDTO.getBillLadingZeroVO();
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
List<DistributionBillLadingScanEntity> billLadingScanEntities = new ArrayList<>();
String lockKey = "lock:" + i.getStockArticleId() + i.getId();
log.info("#################zeroBillPack:获取redisson对象开始");
// RLock lock = redisson.getLock(lockKey);
@ -4370,8 +4584,17 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
//添加签收记录
distributionBillLadingScanService.save(billLadingScan);
billLadingScanEntities.add(billLadingScan);
//修改提货状态
distributionAsyncService.getStockUPstate(billLadingAppDTO.getBillLadingId());
DistrilbutionBillLadingEntity billLadingEntity = this.getById(billLadingAppDTO.getBillLadingId());
BladeUser user = AuthUtil.getUser();
// 推送作业节点
NodeFanoutMsg<PickUpByScanVO> nodeFanoutMsg = buildNodeFanoutMsgBySign(billLadingEntity, billLadingScanEntities, user, myCurrentWarehouse);
iDistributionNodeWorkService.signByBill(nodeFanoutMsg, user);
return Resp.scanSuccess("签收成功!", "签收成功!");
}

67
blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/NodeWorkHandler.java

@ -2,10 +2,18 @@ package com.logpm.factory.receiver;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.logpm.factory.mt.service.IMtFactoryDataService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.broadcast.FanoutConstants;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.enums.PackageTypeEnums;
import org.springblade.common.exception.CustomerException;
import org.springblade.common.model.DistributionSignforVO;
import org.springblade.common.model.NodeFanoutMsg;
import org.springblade.common.model.PackageData;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
@ -13,6 +21,9 @@ import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.security.NoSuchAlgorithmException;
import java.util.List;
/**
* 作业节点数据监听
*/
@ -23,27 +34,49 @@ public class NodeWorkHandler {
private final IMtFactoryDataService mtFactoryDataService;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = FanoutConstants.distribution.signfor.QUEUE.FACTORY_NODE_WORK_DISTRIBUTION_SIGNFOR_QUERY),
exchange = @Exchange(name = FanoutConstants.distribution.signfor.EXCHANGE, type = ExchangeTypes.FANOUT)
value = @Queue(name = FanoutConstants.distribution.DeliveryAndSignfor.QUEUE.FACTORY_NODE_WORK_DISTRIBUTION_SIGNFOR_QUERY),
exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndSignfor.EXCHANGE, type = ExchangeTypes.FANOUT)
))
public void distributionSignforQuery(String message) {
try {
JSONObject jsonObject = JSONUtil.parseObj(message);
String orderPackageCode = jsonObject.getStr("orderPackageCode");
String operationTime = jsonObject.getStr("operationTime");
String distributionContactId = jsonObject.getStr("distributionContactId");
String destinationWarehouse = jsonObject.getStr("destinationWarehouse");
// 获取品牌BrandEnums.MTMM.getValue()
String o = jsonObject.getStr("brand");
switch (o) {
case "梦天" :
log.info("工厂节点数据监听:1");
mtFactoryDataService.qianshouScanForNewSystem(orderPackageCode, operationTime, distributionContactId, destinationWarehouse);
break;
default:
log.info("签收扫描没有找到品牌: {}",o);
}
NodeFanoutMsg bean = JSONUtil.toBean(message, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
DistributionSignforVO vo = JSONUtil.toBean(entries, DistributionSignforVO.class);
List<PackageData> details = vo.getPackageDataList();
details.forEach(t->{
if(t.getPackageType().equals(PackageTypeEnums.CMP)){
String orderPackageCode = t.getPackageCode();
String operationTime = DateUtil.format(bean.getOperatorTime(),"yyyy-MM-dd hh:mm:ss");
Long distributionContactId = vo.getReservationId();
String destinationWarehouse = bean.getWarehouse();
// 获取品牌BrandEnums.MTMM.getValue()
String o = t.getBrand();
switch (o) {
case "梦天" :
log.info("工厂节点数据监听:1");
try {
mtFactoryDataService.qianshouScanForNewSystem(orderPackageCode, operationTime, distributionContactId+"", destinationWarehouse);
} catch (Exception e) {
throw new CustomerException("服务器异常"+e.getMessage());
}
break;
default:
log.info("签收扫描没有找到品牌: {}",o);
}
}
});
// JSONObject jsonObject = JSONUtil.parseObj(message);
}catch (Exception e){
log.error("工厂节点数据监听异常", e);
}

Loading…
Cancel
Save