Browse Source

add:

发车节点
fix:
修改备货的数据
dist.1.3.0
pref_mail@163.com 7 months ago
parent
commit
6e1a8c27b5
  1. 10
      blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java
  2. 29
      blade-biz-common/src/main/java/org/springblade/common/model/CarStartVO.java
  3. 3
      blade-biz-common/src/main/java/org/springblade/common/model/DistributionSignforVO.java
  4. 28
      blade-biz-common/src/main/java/org/springblade/common/model/StockUpVO.java
  5. 15
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionNodeWorkService.java
  6. 4
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionReservationService.java
  7. 86
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
  8. 20
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionNodeWorkServiceImpl.java
  9. 35
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java
  10. 5
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java
  11. 23
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java

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

@ -213,6 +213,16 @@ public abstract class FanoutConstants {
}
}
interface DeliveryAndCarStart{
String EXCHANGE = "fanout.distribution.carstart" + ModuleNameConstant.DEVAUTH;
// main: {"id":"备货任务ID", "stockupCode":"备货编码", "typeService":"服务类型 1 商 2 市 3 自", "stockupDate":"备货时间"}
interface QUEUE {
}
}
/**
* 签收

29
blade-biz-common/src/main/java/org/springblade/common/model/CarStartVO.java

@ -0,0 +1,29 @@
package org.springblade.common.model;
import lombok.Data;
import java.io.Serializable;
/**
* 配送发车节点传输VO
*/
@Data
public class CarStartVO implements Serializable {
/**
* 车次号
*/
private String trainNumber;
/**
* 司机名
*/
private String driverName;
/**
* 车牌号
*/
private String vehicleName;
}

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

@ -4,6 +4,9 @@ import lombok.Data;
import java.io.Serializable;
/**
* 配送签收节点传输VO
*/
@Data
public class DistributionSignforVO implements Serializable {
/**

28
blade-biz-common/src/main/java/org/springblade/common/model/StockUpVO.java

@ -0,0 +1,28 @@
package org.springblade.common.model;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 配送备货节点传输VO
*/
@Data
public class StockUpVO implements Serializable {
/**
* 备货码
*/
private String stockupCode;
/**
* 备货服务类型
*/
private String typeService;
/**
* 备货日期
*/
private Date stockupDate;
}

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

@ -21,16 +21,25 @@ public interface IDistributionNodeWorkService {
*/
void planReservation(NodeFanoutMsg<ReservationVO> nodeFanoutMsg, BladeUser user);
/**
* 取消预约
* @param nodeFanoutMsg
* @param user
*/
void cancelReservation(NodeFanoutMsg<ReservationVO> nodeFanoutMsg, BladeUser user);
/**
* 配送计划/创建/修改
* @param nodeFanoutMsg
* @param user
*/
void planDelivery(NodeFanoutMsg<DistributionTaskVO> nodeFanoutMsg, BladeUser user);
/**
* 备货计划节点
*/
void planStock(NodeFanoutMsg nodeFanoutMsg, BladeUser user);
void planStock(NodeFanoutMsg<StockUpVO> nodeFanoutMsg, BladeUser user);
// 签收作业节点
/**
* 装车
@ -50,7 +59,7 @@ public interface IDistributionNodeWorkService {
/**
* 发车
*/
void carStart();
void carStart(NodeFanoutMsg<CarStartVO> nodeFanoutMsg, BladeUser user);
/**
* 配送到达

4
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionReservationService.java

@ -24,6 +24,8 @@ import com.logpm.distribution.dto.DistributionReservationDTO;
import com.logpm.distribution.entity.DistributionReservationEntity;
import com.logpm.distribution.excel.DistributionReservationExcel;
import com.logpm.distribution.vo.*;
import org.springblade.common.model.NodeFanoutMsg;
import org.springblade.common.model.ReservationVO;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
@ -205,6 +207,8 @@ public interface IDistributionReservationService extends BaseService<Distributio
*/
R insertAutonomouslyReservation(DistributionReservationDTO distributionReservationDTO);
NodeFanoutMsg<ReservationVO> buildNodeFanoutMsgByReservation(DistributionReservationEntity reservationEntity, Map<String, List> map);
/**
* 自提查询库存数量
* @param reservationId

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

@ -2659,6 +2659,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
//客户数量
AtomicInteger deliveryPackageTotal = new AtomicInteger();
Date reservationDate = new Date();
List<DistributionReservationPackageEntity> allPackageList = new ArrayList<>();
List<DistributionReservationZeroPackageEntity> allZeroPackageList = new ArrayList<>();
newClient.forEach((k, v) -> {
HashSet<String> orderNumber = new HashSet<>();
//运单号
@ -2709,6 +2711,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
reservationEntity.setLoadingStatus(ReservationLoadingStatusConstant.daizhuangche.getValue());
reservationEntity.setSigningStatus(ReservationSigningStatusConstant.daiqianshou.getValue());
reservationEntity.setStatus(1);
Map<String,List> map = new HashMap<>();
String waybillNumbers = v.stream().map(DistributionStockArticleEntity::getWaybillNumber).distinct().collect(Collectors.joining(","));
String storeCodes = v.stream().map(DistributionStockArticleEntity::getStoreCode).distinct().collect(Collectors.joining(","));
List<Long> waybillIds = v.stream().map(DistributionStockArticleEntity::getWaybillId).distinct().collect(Collectors.toList());
@ -2774,6 +2777,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
if (s.getIsZero().equals(IsOrNoConstant.no.getValue())) {
//现在前端进行订单提交必然会携带包件信息
List<DistributionParcelListDTO> packageListInfo = s.getPackageListInfo();
List<DistributionReservationPackageEntity> packageEntityList = new ArrayList<>();
reservationStockarticleEntity.setIsZero(s.getIsZero());
if (Func.isEmpty(packageListInfo)) {
//添加该订单下可操作包件至计划中
@ -2797,6 +2801,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
distributionReservationPackageEntity.setParceListId(dp.getId());
distributionReservationPackageEntity.setStockArticleId(s.getId());
distributionReservationPackageEntity.setPacketBarCode(dp.getOrderPackageCode());
packageEntityList.add(distributionReservationPackageEntity);
allPackageList.add(distributionReservationPackageEntity);
//维护订单下包件信息
distributionReservationPackageService.save(distributionReservationPackageEntity);
//此时订单下的所有包件都处于预约状态,可用数为0
@ -2823,6 +2829,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
reservationPackageEntity.setStockArticleId(s.getId());
reservationPackageEntity.setReservationId(reservationEntity.getId());
reservationPackageEntity.setParceListId(p.getId());
packageEntityList.add(reservationPackageEntity);
allPackageList.add(reservationPackageEntity);
distributionReservationPackageService.save(reservationPackageEntity);
p.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
distributionParcelListService.updateById(p);
@ -2835,10 +2843,14 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
logs.add(js);
});
}
if (!packageEntityList.isEmpty()) {
map.put("1", packageEntityList);
}
//维护订单信息
distributionStockArticleService.maintenanceOrderInfo(s.getOrderCode(), myCurrentWarehouse.getId());
} else if (s.getIsZero().equals(IsOrNoConstant.yes.getValue())) {
List<DistributionParcelNumberVO> parcelNumberVOS = s.getParcelNumberVOS();
List<DistributionReservationZeroPackageEntity> zeroPackageEntityList = new ArrayList<>();
reservationStockarticleEntity.setIsZero(s.getIsZero());
if (Func.isNotEmpty(parcelNumberVOS)) {
//这里需要先进行是否满足
@ -2853,6 +2865,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
distributionReservationZeroPackageEntity.setParcelListId(p.getParcelListId());
distributionReservationZeroPackageEntity.setCategoryName(p.getFirsts());
distributionReservationZeroPackageEntity.setRealityQuantity(0);
zeroPackageEntityList.add(distributionReservationZeroPackageEntity);
allZeroPackageList.add(distributionReservationZeroPackageEntity);
distributionReservationZeroPackageService.save(distributionReservationZeroPackageEntity);
p.setDeliveryQuantity(p.getDeliveryQuantity() + p.getReservationNum());
distributionParcelNumberService.updateById(p);
@ -2874,6 +2888,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
distributionReservationZeroPackageEntity.setParcelListId(l.getParcelListId());
distributionReservationZeroPackageEntity.setCategoryName(l.getFirsts());
distributionReservationZeroPackageEntity.setRealityQuantity(0);
zeroPackageEntityList.add(distributionReservationZeroPackageEntity);
allZeroPackageList.add(distributionReservationZeroPackageEntity);
distributionReservationZeroPackageService.save(distributionReservationZeroPackageEntity);
l.setDeliveryQuantity(l.getDeliveryQuantity() + l.getReservationNum());
distributionParcelNumberService.updateById(l);
@ -2887,6 +2903,9 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
throw new RuntimeException(s.getOrderCode() + "无可用数量");
}
}
if (!zeroPackageEntityList.isEmpty()) {
map.put("2",zeroPackageEntityList);
}
} else {
log.error("########################订单isZero字段错误,订单ID:{}", s.getId());
}
@ -2935,6 +2954,10 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
//预约添加订单数量
reservationEntity.setReservationNum(packageTotal.get());
distributionReservationMapper.updateById(reservationEntity);
//推送广播
//进行节点推送
NodeFanoutMsg<ReservationVO> nodeFanoutMsg = distributionReservationService.buildNodeFanoutMsgByReservation(reservationEntity,map);
distributionNodeWorkService.planReservation(nodeFanoutMsg, user);
deliveryWarehouseName.add(reservationEntity.getWarehouseName());
deliveryPackageTotal.getAndAdd(reservationEntity.getReservationNum());
//建立这个预约和配送任务之间的关系
@ -2952,15 +2975,12 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
stockupInfoEntity.setStockUpType("1");
distributionStockupInfoService.save(stockupInfoEntity);
} else {
//根据配送计划和运单号查询出该预约
DistributionReservationEntity reservationEntity = baseMapper.selectReservationByDeliveryListIdAndCustomerUnit(deliveryListEntityId, k);
DistributionSignforEntity signforEntity = distributionSignforService.getOne(Wrappers.<DistributionSignforEntity>query().lambda()
.eq(DistributionSignforEntity::getReservationId, reservationEntity.getId())
.eq(DistributionSignforEntity::getDeliveryId, deliveryListEntity.getId())
);
//查询出该预约下的订单信息
List<DistributionReservationStockarticleEntity> reservationStockarticleEntityList = distributionReservationStockarticleMapper.selectList(Wrappers.<DistributionReservationStockarticleEntity>query().lambda().eq(DistributionReservationStockarticleEntity::getReservationId, reservationEntity.getId()).ne(DistributionReservationStockarticleEntity::getStockArticleStatus, ReservationOrderStatusConstant.quxiao.getValue()));
Map<Long, List<DistributionReservationStockarticleEntity>> oldOrder = reservationStockarticleEntityList.stream().collect(Collectors.groupingBy(DistributionReservationStockarticleEntity::getStockArticleId));
@ -3026,6 +3046,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
reservationPackageEntity.setReservationId(reservationEntity.getId());
reservationPackageEntity.setParceListId(p.getId());
distributionReservationPackageService.save(reservationPackageEntity);
allPackageList.add(reservationPackageEntity);
p.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
distributionParcelListService.updateById(p);
packageLockIds.add(p.getId());
@ -3069,6 +3090,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
distributionReservationPackageEntity.setPacketBarCode(dp.getOrderPackageCode());
//维护订单下包件信息
distributionReservationPackageService.save(distributionReservationPackageEntity);
allPackageList.add(distributionReservationPackageEntity);
//此时订单下的所有包件都处于预约状态,可用数为0
orderPackageNum.getAndAdd(dp.getQuantity());
//修改订单下的包件状态
@ -3106,6 +3128,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
distributionReservationZeroPackageEntity.setParcelListId(p.getParcelListId());
distributionReservationZeroPackageEntity.setCategoryName(p.getFirsts());
distributionReservationZeroPackageEntity.setRealityQuantity(0);
allZeroPackageList.add(distributionReservationZeroPackageEntity);
distributionReservationZeroPackageService.save(distributionReservationZeroPackageEntity);
p.setDeliveryQuantity(p.getDeliveryQuantity() + p.getReservationNum());
distributionParcelNumberService.updateById(p);
@ -3127,6 +3150,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
distributionReservationZeroPackageEntity.setParcelListId(l.getParcelListId());
distributionReservationZeroPackageEntity.setCategoryName(l.getFirsts());
distributionReservationZeroPackageEntity.setRealityQuantity(0);
allZeroPackageList.add(distributionReservationZeroPackageEntity);
distributionReservationZeroPackageService.save(distributionReservationZeroPackageEntity);
l.setDeliveryQuantity(l.getDeliveryQuantity() + l.getReservationNum());
distributionParcelNumberService.updateById(l);
@ -3196,6 +3220,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
log.info(">>>>> 修改计划 验证包件是否存在 {}", isExit);
if (!isExit) {
list.add(reservationPackageEntity);
allPackageList.add(reservationPackageEntity);
distributionReservationPackageService.save(reservationPackageEntity);
distributionAsyncService.checkStockArticleReservationStatus(p);
packageLockIds.add(p.getId());
@ -3207,9 +3232,9 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
//包件数量累加
packageNum.getAndAdd(p.getQuantity());
}
} else {
//对原有包间进行继续推送
allPackageList.add(oldPackageList.get(p.getOrderPackageCode()).get(0));
//依然存在包件,
oldPackageList.remove(p.getOrderPackageCode());
//包件数量累加
@ -3285,6 +3310,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
distributionReservationZeroPackageEntity.setQuantity(pn.getReservationNum());
distributionParcelNumberService.updateById(parcelNumberEntity);
distributionReservationZeroPackageEntity.setZeroPackageStatus(ReservationPackageStatusConstant.zhengchang.getValue());
allZeroPackageList.add(distributionReservationZeroPackageEntity);
distributionReservationZeroPackageService.updateById(distributionReservationZeroPackageEntity);
packageNum.getAndAdd(distributionReservationZeroPackageEntity.getQuantity());
oldZeroPackageList.remove(pn.getParcelListId());
@ -3300,6 +3326,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
reservationZeroPackageEntity.setParcelListId(pn.getParcelListId());
reservationZeroPackageEntity.setCategoryName(pn.getFirsts());
reservationZeroPackageEntity.setRealityQuantity(0);
allZeroPackageList.add(reservationZeroPackageEntity);
distributionReservationZeroPackageService.save(reservationZeroPackageEntity);
distributionParcelListService.update(Wrappers.<DistributionParcelListEntity>update().lambda()
.eq(DistributionParcelListEntity::getId, parcelNumberEntity.getParcelListId())
@ -3600,9 +3627,9 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
List<Map<String, Object>> data = deliveryreBroadcastData.get("1");
if (data != null) {
for (Map<String, Object> map : data) {
PackageData packageData = BeanUtil.copy(map, PackageData.class);
assert packageData != null;
packageData.setBrand(Convert.toStr(map.get("brandName")));
PackageData packageData =new PackageData();
packageData.setPackageCode((String) map.get("packageCode"));
PackageTypeEnums type = PackageTypeEnums.CMP;
packageData.setPackageType(type);
packageDataList.add(packageData);
@ -3629,6 +3656,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
PackageData packageData = BeanUtil.copy(map, PackageData.class);
assert packageData != null;
packageData.setBrand(Convert.toStr(map.get("brandName")));
packageData.setNumber(Integer.parseInt(map.get("number").toString()));
PackageTypeEnums type = PackageTypeEnums.LTL;
packageData.setPackageType(type);
packageData.setProductName(Convert.toStr(map.get("productName")));
@ -4647,6 +4675,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
@Override
public R loadingStart(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO) {
BladeUser user = AuthUtil.getUser();
//获取当前用户司机
DistributionDeliveryListEntity distributionDeliveryListEntity = distributionDeliveryListMapper.selectById(distrilbutionloadingscanDTO.getDeliveryId());
if ("3".equals(distributionDeliveryListEntity.getDeliveryStatus())) {
@ -4708,7 +4737,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
}
distributionAsyncService.sendTrunkineLog(distributionDeliveryListEntity.getId(), null, AuthUtil.getUser(), warehouseClient.getMyCurrentWarehouse(), 1);
distributionAsyncService.sendTrunkineLog(distributionDeliveryListEntity.getId(), null, user, warehouseClient.getMyCurrentWarehouse(), 1);
Map mapState = new HashMap();
mapState.put("messageId", CommonUtil.getUUID());
@ -4724,10 +4753,49 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 消息推送失败~ 请联系管理员! ", customerException);
}
NodeFanoutMsg<CarStartVO> nodeFanoutMsg = builderNodeFanoutMsgByCarStart(distributionDeliveryListEntity,user);
distributionNodeWorkService.carStart(nodeFanoutMsg,user);
// 推送数据
return Resp.scanSuccess("发车成功", builder.toString());
}
private NodeFanoutMsg<CarStartVO> builderNodeFanoutMsgByCarStart(DistributionDeliveryListEntity distributionDeliveryListEntity, BladeUser user) {
NodeFanoutMsg<CarStartVO> nodeFanoutMsg = new NodeFanoutMsg<>();
nodeFanoutMsg.setBizOperation(BizOperationEnums.ADD);
nodeFanoutMsg.setNode(WorkNodeEnums.DISTRIBUTION_CAR_START);
nodeFanoutMsg.setWarehouse(distributionDeliveryListEntity.getWarehouseName());
nodeFanoutMsg.setWarehouseId(distributionDeliveryListEntity.getWarehouseId());
nodeFanoutMsg.setOperator(AuthUtil.getTenantId());
nodeFanoutMsg.setOperatorTime(distributionDeliveryListEntity.getUpdateTime());
List<PlanDriverbindCarVO> planDriverbindCarVOS = buildDeliveryCarDriverInfor(distributionDeliveryListEntity);
String driverName = distributionDeliveryListEntity.getDriverName();
String vehicleName = distributionDeliveryListEntity.getVehicleName();
// 如果是自主配送 需要去获取当前司机绑定的车牌
if ("1".equals(distributionDeliveryListEntity.getKind())) {
BasicdataDriverArteryEntity driverArteryById = basicdataDriverArteryClient.getDriverArteryById(AuthUtil.getUserId());
if (driverArteryById != null) {
for (int i = 0; i < planDriverbindCarVOS.size(); i++) {
if (planDriverbindCarVOS.get(i).getDriverName().equals(driverArteryById.getName())) {
driverName = planDriverbindCarVOS.get(i).getDriverName();
vehicleName = planDriverbindCarVOS.get(i).getCarPlate();
break;
}
}
}
}
CarStartVO carStartVO = new CarStartVO();
carStartVO.setTrainNumber(distributionDeliveryListEntity.getTrainNumber());
carStartVO.setDriverName(driverName);
carStartVO.setVehicleName(vehicleName);
nodeFanoutMsg.setMain(carStartVO);
return nodeFanoutMsg;
}
@Override
public R<?> cancelMarketDeliveryListTask(Map<String, Object> distributionDeliveryListDTO) {
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();

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

@ -50,7 +50,7 @@ public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkSer
@Override
public void planReservation(NodeFanoutMsg nodeFanoutMsg, BladeUser user) {
public void planReservation(NodeFanoutMsg<ReservationVO> nodeFanoutMsg, BladeUser user) {
try {
rabbitTemplate.convertAndSend(FanoutConstants.reservation.OwnReservation.EXCHANGE, null, com.alibaba.fastjson.JSONObject.toJSONString(nodeFanoutMsg));
@ -61,7 +61,7 @@ public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkSer
}
@Override
public void planDelivery(NodeFanoutMsg nodeFanoutMsg, BladeUser user) {
public void planDelivery(NodeFanoutMsg<DistributionTaskVO> nodeFanoutMsg, BladeUser user) {
try {
rabbitTemplate.convertAndSend(FanoutConstants.distribution.DeliveryAndPlan.EXCHANGE, null, com.alibaba.fastjson.JSONObject.toJSONString(nodeFanoutMsg));
} catch (AmqpException e) {
@ -69,6 +69,8 @@ public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkSer
}
}
@Override
public void cancelReservation(NodeFanoutMsg<ReservationVO> nodeFanoutMsg, BladeUser user) {
try {
@ -79,7 +81,7 @@ public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkSer
}
@Override
public void planStock(NodeFanoutMsg nodeFanoutMsg, BladeUser user) {
public void planStock(NodeFanoutMsg<StockUpVO> nodeFanoutMsg, BladeUser user) {
// 备货信息主表
try {
rabbitTemplate.convertAndSend(FanoutConstants.distribution.stock.EXCHANGE, null, com.alibaba.fastjson.JSONObject.toJSONString(nodeFanoutMsg));
@ -90,7 +92,7 @@ public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkSer
}
@Override
public void nodeLoading(NodeFanoutMsg nodeFanoutMsg, BladeUser user) {
public void nodeLoading(NodeFanoutMsg<DistributionLoadVO> nodeFanoutMsg, BladeUser user) {
try {
rabbitTemplate.convertAndSend(FanoutConstants.distribution.DeliveryAndLoading.EXCHANGE, null, com.alibaba.fastjson.JSONObject.toJSONString(nodeFanoutMsg));
} catch (AmqpException e) {
@ -99,7 +101,7 @@ public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkSer
}
@Override
public void abnormalLoading(NodeFanoutMsg nodeFanoutMsg, BladeUser user) {
public void abnormalLoading(NodeFanoutMsg<DistributionLoadVO> nodeFanoutMsg, BladeUser user) {
try {
rabbitTemplate.convertAndSend(FanoutConstants.distribution.DeliveryAndLoading.EXCHANGE, null, com.alibaba.fastjson.JSONObject.toJSONString(nodeFanoutMsg));
} catch (AmqpException e) {
@ -113,8 +115,12 @@ public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkSer
}
@Override
public void carStart() {
public void carStart(NodeFanoutMsg<CarStartVO> nodeFanoutMsg, BladeUser user) {
try {
rabbitTemplate.convertAndSend(FanoutConstants.distribution.DeliveryAndCarStart.EXCHANGE, null, com.alibaba.fastjson.JSONObject.toJSONString(nodeFanoutMsg));
} catch (AmqpException e) {
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 消息推送失败~ 请联系管理员! ", e);
}
}
@Override

35
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java

@ -16,7 +16,6 @@
*/
package com.logpm.distribution.service.impl;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -85,7 +84,6 @@ import org.springblade.common.constant.Inventory.InventoryTypeConstant;
import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.broadcast.FanoutConstants;
import org.springblade.common.constant.common.IsOrNoConstant;
import org.springblade.common.constant.delivery.DeliveryLoadingStatusConstant;
import org.springblade.common.constant.delivery.DeliveryStatusConstant;
@ -112,7 +110,6 @@ 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.BrandEnums;
import org.springblade.common.enums.PackageTypeEnums;
import org.springblade.common.exception.CustomerException;
import org.springblade.common.model.*;
@ -130,6 +127,7 @@ import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.cache.DictBizCache;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
@ -2244,6 +2242,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
HashSet<String> consigneeAddress = new HashSet<>();
//运单客户收货单位
HashSet<String> consignee = new HashSet<>();
Map<String,List> map = new HashMap<>();
v.forEach(s -> {
List<Long> packageLockIds = new ArrayList<>();
DistributionStockArticleDTO stockArticleDTO = Func.copy(s, DistributionStockArticleDTO.class);
@ -2291,6 +2290,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
DistributionReservationStockarticleEntity reservationStockarticleEntity = new DistributionReservationStockarticleEntity();
AtomicInteger reservationOrderNum = new AtomicInteger();
if (s.getIsZero().equals(IsOrNoConstant.no.getValue())) {
List<DistributionReservationPackageEntity> packageEntityList = new ArrayList<>();
//存在勾选包件的操作
if (Func.isNotEmpty(s.getPackageListInfo())) {
List<DistributionParcelListDTO> packageListInfo = s.getPackageListInfo();
@ -2302,6 +2302,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
reservationPackageEntity.setStockArticleId(s.getId());
reservationPackageEntity.setReservationId(reservationEntity.getId());
reservationPackageEntity.setParceListId(p.getId());
packageEntityList.add(reservationPackageEntity);
distributionReservationPackageService.save(reservationPackageEntity);
p.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
distributionParcelListService.updateById(p);
@ -2334,6 +2335,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
distributionReservationPackageEntity.setStockArticleId(s.getId());
distributionReservationPackageEntity.setPacketBarCode(dp.getOrderPackageCode());
//维护订单下包件信息
packageEntityList.add(distributionReservationPackageEntity);
distributionReservationPackageService.save(distributionReservationPackageEntity);
//此时订单下的所有包件都处于预约状态,可用数为0
reservationOrderNum.getAndAdd(dp.getQuantity());
@ -2350,10 +2352,15 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
});
}
if (!packageEntityList.isEmpty()) {
// distributionReservationPackageService.saveBatch(packageEntityList);
map.put("1",packageEntityList);
}
//维护订单信息
distributionStockArticleService.maintenanceOrderInfo(s.getOrderCode(), myCurrentWarehouse.getId());
} else {
//-----------------------------------------------------------2023-10-11--- 零担商配处理-----------------------------------------------------------------------
List<DistributionReservationZeroPackageEntity> reservationZeroPackageEntityList = new ArrayList<>();
List<DistributionParcelNumberVO> parcelNumberVOS = s.getParcelNumberVOS();
if (Func.isNotEmpty(parcelNumberVOS)) {
//进行了零担订单
@ -2368,6 +2375,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
distributionReservationZeroPackageEntity.setParcelListId(p.getParcelListId());
distributionReservationZeroPackageEntity.setCategoryName(p.getFirsts());
distributionReservationZeroPackageEntity.setRealityQuantity(0);
reservationZeroPackageEntityList.add(distributionReservationZeroPackageEntity);
distributionReservationZeroPackageService.save(distributionReservationZeroPackageEntity);
BigDecimal deliveryQuantity = new BigDecimal(p.getDeliveryQuantity());
BigDecimal reservationNum = new BigDecimal(p.getReservationNum());
@ -2397,6 +2405,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
distributionReservationZeroPackageEntity.setParcelListId(l.getParcelListId());
distributionReservationZeroPackageEntity.setCategoryName(l.getFirsts());
distributionReservationZeroPackageEntity.setRealityQuantity(0);
reservationZeroPackageEntityList.add(distributionReservationZeroPackageEntity);
distributionReservationZeroPackageService.save(distributionReservationZeroPackageEntity);
//计划冻结数
BigDecimal deliveryQuantity = new BigDecimal(distributionReservationZeroPackageEntity.getQuantity());
@ -2422,6 +2432,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
log.error("###########################零担订单查询品类错误,订单ID:{}", s.getId());
}
}
if (!reservationZeroPackageEntityList.isEmpty()) {
map.put("2",reservationZeroPackageEntityList);
}
}
stockArticleDTO.setHandQuantity(s.getHandQuantity());
reservationStockarticleEntity.setReservationNum(reservationOrderNum.get());
@ -2506,6 +2519,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
distributionSignforEntity.setWarehouseName(myCurrentWarehouse.getName());
distributionSignforService.save(distributionSignforEntity);
deliveryWarehouseName.add(reservationEntity.getWarehouseName());
//进行节点推送
NodeFanoutMsg<ReservationVO> nodeFanoutMsg = buildNodeFanoutMsgByReservation(reservationEntity,map);
distributionNodeWorkService.planReservation(nodeFanoutMsg, user);
});
//判断是否为自主配送
//车牌号拼接
@ -3453,7 +3469,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
return nodeFanoutMsg;
}
private NodeFanoutMsg<ReservationVO> buildNodeFanoutMsgByReservation(DistributionReservationEntity reservationEntity, Map<String, List> map) {
@Override
public NodeFanoutMsg<ReservationVO> buildNodeFanoutMsgByReservation(DistributionReservationEntity reservationEntity, Map<String, List> map) {
NodeFanoutMsg<ReservationVO> nodeFanoutMsg = new NodeFanoutMsg<>();
nodeFanoutMsg.setNode(WorkNodeEnums.PLANNED_RESERVATION);
@ -3495,7 +3512,14 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
DistributionParcelListEntity byId = distributionParcelListService.getById(distributionReservationZeroPackageEntity.getParcelListId());
if(Func.isNotEmpty(byId)){
packageData.setOrderCode(byId.getOrderCode());
packageData.setBrand(byId.getBrandName());
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(distributionReservationZeroPackageEntity.getCategoryName());
@ -3511,6 +3535,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
packageData.setPackageType(PackageTypeEnums.INV);
DistributionStockListEntity byId = distributionStockListService.getById(distributionReservationStocklistEntity.getStocklistId());
if (Func.isNotEmpty(byId)){
packageData.setMallName(StringUtil.isBlank(byId.getMallName())? byId.getMarketName():byId.getMallName());
packageData.setBrand(byId.getBrandName());
// packageData.setProductName(byId.getDescriptionGoods());
packageData.setMaterialCode(byId.getCargoNumber());

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

@ -97,6 +97,7 @@ import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.entity.User;
import org.springblade.system.feign.IDictBizClient;
@ -771,6 +772,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
packageData.setPackageCode(distributionLoadscaninvnEntity.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());
@ -2954,6 +2957,8 @@ 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.setProductName(byId.getDescriptionGoods());
packageData.setMaterialCode(byIds.getCargoNumber());
packageData.setMaterialName(byIds.getDescriptionGoods());

23
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java

@ -79,6 +79,7 @@ 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.StockUpVO;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
@ -3882,7 +3883,7 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
List<DistributionParcelListEntity> ls = new ArrayList<>();
ls.add(parcelListEntity);
// 备货作业节点
NodeFanoutMsg nodeFanoutMsg = buildStockUpNodeData(distributionStockupEntity, ls);
NodeFanoutMsg<StockUpVO> nodeFanoutMsg = buildStockUpNodeData(distributionStockupEntity, ls);
if (ObjectUtils.isNotNull(nodeFanoutMsg)) {
distributionNodeWorkService.planStock(nodeFanoutMsg, user);
}
@ -4329,10 +4330,10 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
return null;
}
private NodeFanoutMsg buildStockUpNodeData(DistributionStockupEntity distributionStockupEntity, List<DistributionParcelListEntity> parcelListEntitys) {
private NodeFanoutMsg<StockUpVO> buildStockUpNodeData(DistributionStockupEntity distributionStockupEntity, List<DistributionParcelListEntity> parcelListEntitys) {
try {
BladeUser user = AuthUtil.getUser();
NodeFanoutMsg nodeFanoutMsg = new NodeFanoutMsg();
NodeFanoutMsg<StockUpVO> nodeFanoutMsg = new NodeFanoutMsg<StockUpVO>();
nodeFanoutMsg.setBizOperation(BizOperationEnums.ADD);
nodeFanoutMsg.setNode(WorkNodeEnums.STOCKING_OPERATION);
BasicdataWarehouseEntity entityWarehouse = basicdataWarehouseClient.getEntityWarehouseId(distributionStockupEntity.getWarehouseId());
@ -4342,15 +4343,12 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
nodeFanoutMsg.setWarehouseId(distributionStockupEntity.getWarehouseId());
nodeFanoutMsg.setOperator(user.getTenantId());
nodeFanoutMsg.setOperatorTime(distributionStockupEntity.getCreateTime());
StockUpVO stockUpVO = new StockUpVO();
stockUpVO.setTypeService(distributionStockupEntity.getTypeService());
stockUpVO.setStockupDate(distributionStockupEntity.getStockupDate());
stockUpVO.setStockupCode(distributionStockupEntity.getStockupCode());
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", distributionStockupEntity.getId());
jsonObject.put("stockupCode", distributionStockupEntity.getStockupCode());
jsonObject.put("typeService", distributionStockupEntity.getTypeService());
jsonObject.put("stockupDate", distributionStockupEntity.getStockupDate());
String jsonString = jsonObject.toJSONString();
nodeFanoutMsg.setMain(jsonString);
nodeFanoutMsg.setMain(stockUpVO);
nodeFanoutMsg.setTenantId(AuthUtil.getTenantId());
List<PackageData> packageDataList = new ArrayList<>();
@ -4448,7 +4446,8 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
}
packageData.setBrand(stockListEntity.getBrandName());
packageData.setPackageCode(stockEntity.getCoding());
packageData.setMallName(stockListEntity.getMallName());
// packageData.setMallName(stockListEntity.getMallName());
packageData.setMallName(StringUtil.isBlank(stockListEntity.getMallName())? stockListEntity.getMarketName():stockListEntity.getMallName());
packageData.setMaterialCode(stockListEntity.getMarketCode());
packageData.setMaterialName(stockListEntity.getDescriptionGoods());
packageData.setOrderCode(stockListEntity.getOrderCode());

Loading…
Cancel
Save