|
|
|
@ -16,6 +16,8 @@
|
|
|
|
|
*/ |
|
|
|
|
package com.logpm.distribution.service.impl; |
|
|
|
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
|
import cn.hutool.json.JSONUtil; |
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
@ -43,6 +45,7 @@ import com.logpm.distribution.vo.app.*;
|
|
|
|
|
import com.logpm.distribution.wrapper.DistributionParcelListAppWrapper; |
|
|
|
|
import com.logpm.distribution.wrapper.DistributionParcelListWrapper; |
|
|
|
|
import com.logpm.distribution.wrapper.DistributionStockArticleWrapper; |
|
|
|
|
import com.logpm.factory.comfac.dto.OrderStatusDTO; |
|
|
|
|
import com.logpm.oldproject.dto.SignPushDataContactDTO; |
|
|
|
|
import com.logpm.oldproject.dto.SignPushDataDTO; |
|
|
|
|
import com.logpm.oldproject.dto.SignPushDataUnitDTO; |
|
|
|
@ -2665,6 +2668,14 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
|
|
|
|
|
distributionDeliveryListService.maintenanceDeliveryInfo(distrilbutionloadingscanDTO.getDeliveryId()); |
|
|
|
|
|
|
|
|
|
trunklinePackageTrackLogClient.addPackageTrackLog(aaa); |
|
|
|
|
|
|
|
|
|
// 推送
|
|
|
|
|
sendMessage(distrilbutionloadingscanDTO.getBarcode(), distributionReservationEntity.getReservationCode(), |
|
|
|
|
deliveryListEntity.getTrainNumber(),deliveryListEntity.getVehicleName(),deliveryListEntity.getDriverName(), |
|
|
|
|
AuthUtil.getUserName(),myCurrentWarehouse.getId(),AuthUtil.getTenantId()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return Resp.scanSuccessWithData("签收成功", str, orderPackageCodes); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error(">>>>> 签收异常报错", e); |
|
|
|
@ -2672,6 +2683,49 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* |
|
|
|
|
* @param orderPackageCode |
|
|
|
|
* @param reservationCode |
|
|
|
|
* @param distrCarNumber |
|
|
|
|
* @param vehicleName |
|
|
|
|
* @param driverName |
|
|
|
|
* @param userName |
|
|
|
|
* @param warehouseId |
|
|
|
|
* @param tenantId 当前的租户 |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
private void sendMessage(String orderPackageCode, |
|
|
|
|
String reservationCode, |
|
|
|
|
String distrCarNumber, |
|
|
|
|
String vehicleName, |
|
|
|
|
String driverName, |
|
|
|
|
String userName, |
|
|
|
|
Long warehouseId, |
|
|
|
|
String tenantId |
|
|
|
|
){ |
|
|
|
|
try { |
|
|
|
|
JSONObject jsonObject = new JSONObject(); |
|
|
|
|
jsonObject.put("orderPackageCode",orderPackageCode); |
|
|
|
|
jsonObject.put("reservationCode",reservationCode); |
|
|
|
|
jsonObject.put("distrCarNumber",distrCarNumber); |
|
|
|
|
jsonObject.put("vehicleName",vehicleName); |
|
|
|
|
jsonObject.put("driverName",driverName); |
|
|
|
|
jsonObject.put("userName",userName); |
|
|
|
|
jsonObject.put("warehouseId",warehouseId); |
|
|
|
|
jsonObject.put("tenantId",tenantId); |
|
|
|
|
// 发送入库消息
|
|
|
|
|
Map mapState = new HashMap(); |
|
|
|
|
mapState.put("messageId", CommonUtil.getUUID()); |
|
|
|
|
mapState.put("createTime", System.currentTimeMillis()); |
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
map.put("messageData", jsonObject); |
|
|
|
|
rabbitTemplate.convertAndSend(RabbitConstant.BUSINESS_IN_CONVERSION_DATA_EXCHANGE, RabbitConstant.BUSINESS_IN_CONVERSION_DATA_ROUTING, map); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("签收商家推送:{}", e); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
public R signforPC(DistrilbutionAppsignforDTO distrilbutionloadingscanDTO) { |
|
|
|
@ -3704,8 +3758,10 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public List<DistributionAppStockArticleVO> getAppDeliveryorderListPage(DistributionAppDeliveryListDTO distributionDeliveryList) { |
|
|
|
|
List<DistributionAppStockArticleVO> orderVos = new ArrayList<>(); |
|
|
|
|
if (Func.isEmpty(distributionDeliveryList.getReservationId())) { |
|
|
|
|
log.error("参数缺失reservationId:{}", distributionDeliveryList.getReservationId()); |
|
|
|
|
return orderVos; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//查询该客户装车
|
|
|
|
@ -3731,32 +3787,40 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
|
|
|
|
|
} |
|
|
|
|
Map<Long, List<DistributionReservationStockarticleEntity>> reservationOrderMap = reservationStockarticleEntityList.stream().collect(Collectors.groupingBy(DistributionReservationStockarticleEntity::getStockArticleId)); |
|
|
|
|
Map<Long, List<DistributionLoadscanEntity>> loadingOrderMap = distributionLoadscanEntities.stream().collect(Collectors.groupingBy(DistributionLoadscanEntity::getOrderId)); |
|
|
|
|
List<DistributionAppStockArticleVO> orderVos = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
if (Func.isNotEmpty(orderIds)) { |
|
|
|
|
orderIds = orderIds.stream().distinct().collect(Collectors.toList()); |
|
|
|
|
for (Long orderId : orderIds) { |
|
|
|
|
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(orderId); |
|
|
|
|
DistributionAppStockArticleVO distributionAppStockArticleVO = Func.copy(stockArticleEntity, DistributionAppStockArticleVO.class); |
|
|
|
|
distributionAppStockArticleVO.setTotalNumber(stockArticleEntity.getTotalNumber()); |
|
|
|
|
distributionAppStockArticleVO.setStockArticleId(stockArticleEntity.getId()); |
|
|
|
|
|
|
|
|
|
List<DistributionStockArticleEntity> distributionStockArticleEntities = distributionStockArticleService.listByIds(orderIds); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<DistributionReservationStockarticleEntity> reservationOrders = distributionReservationStockarticleService.list(Wrappers.<DistributionReservationStockarticleEntity>query().lambda() |
|
|
|
|
.eq(DistributionReservationStockarticleEntity::getReservationId, distributionDeliveryList.getReservationId()) |
|
|
|
|
.in(DistributionReservationStockarticleEntity::getStockArticleId, orderIds) |
|
|
|
|
.ne(DistributionReservationStockarticleEntity::getStockArticleStatus, ReservationOrderStatusConstant.quxiao.getValue()) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
for (DistributionStockArticleEntity distributionStockArticleEntity : distributionStockArticleEntities) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(orderId);
|
|
|
|
|
DistributionAppStockArticleVO distributionAppStockArticleVO = Func.copy(distributionStockArticleEntity, DistributionAppStockArticleVO.class); |
|
|
|
|
assert distributionAppStockArticleVO != null; |
|
|
|
|
distributionAppStockArticleVO.setLoadingNub(0); |
|
|
|
|
distributionAppStockArticleVO.setSignforNub(0); |
|
|
|
|
distributionAppStockArticleVO.setReservationNum(0); |
|
|
|
|
//查询预约该订单计划数量
|
|
|
|
|
DistributionReservationStockarticleEntity reservationOrder = distributionReservationStockarticleService.getOne(Wrappers.<DistributionReservationStockarticleEntity>query().lambda() |
|
|
|
|
.eq(DistributionReservationStockarticleEntity::getReservationId, distributionDeliveryList.getReservationId()) |
|
|
|
|
.eq(DistributionReservationStockarticleEntity::getStockArticleId, orderId) |
|
|
|
|
.ne(DistributionReservationStockarticleEntity::getStockArticleStatus, ReservationOrderStatusConstant.quxiao.getValue()) |
|
|
|
|
); |
|
|
|
|
DistributionReservationStockarticleEntity reservationOrder = findReservationOrders(reservationOrders, distributionStockArticleEntity.getId()); |
|
|
|
|
if (Func.isNotEmpty(reservationOrder)) { |
|
|
|
|
distributionAppStockArticleVO.setReservationNum(reservationOrder.getReservationNum()); |
|
|
|
|
} |
|
|
|
|
if (stockArticleEntity.getIsZero().equals(IsOrNoConstant.no.getValue())) { |
|
|
|
|
if (distributionStockArticleEntity.getIsZero().equals(IsOrNoConstant.no.getValue())) { |
|
|
|
|
//判断此订单是是否是异常装车
|
|
|
|
|
|
|
|
|
|
if (Func.isEmpty(reservationOrderMap.get(orderId))) { |
|
|
|
|
if (Func.isEmpty(reservationOrderMap.get(distributionStockArticleEntity.getId()))) { |
|
|
|
|
//不存在计划之中的订单装车
|
|
|
|
|
List<DistributionLoadscanEntity> loadscanEntityList = loadingOrderMap.get(orderId); |
|
|
|
|
List<DistributionLoadscanEntity> loadscanEntityList = loadingOrderMap.get(distributionStockArticleEntity.getId()); |
|
|
|
|
List<Long> abnormalPackageIds = loadscanEntityList.stream().map(DistributionLoadscanEntity::getPackageId).collect(Collectors.toList()); |
|
|
|
|
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListService.listByIds(abnormalPackageIds); |
|
|
|
|
List<DistributionAppParcelListVO> distributionAppParcelListVOS = DistributionParcelListAppWrapper.build().listVO(distributionParcelListEntities); |
|
|
|
@ -3778,7 +3842,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
|
|
|
|
|
//查询此预约该订单下的包件信息
|
|
|
|
|
List<DistributionReservationPackageEntity> reservationPackage = distributionReservationPackageService.list(Wrappers.<DistributionReservationPackageEntity>query().lambda() |
|
|
|
|
.eq(DistributionReservationPackageEntity::getReservationId, distributionDeliveryList.getReservationId()) |
|
|
|
|
.eq(DistributionReservationPackageEntity::getStockArticleId, orderId) |
|
|
|
|
.eq(DistributionReservationPackageEntity::getStockArticleId, distributionStockArticleEntity.getId()) |
|
|
|
|
.ne(DistributionReservationPackageEntity::getPacketBarStatus, ReservationPackageStatusConstant.quxiao.getValue()) |
|
|
|
|
); |
|
|
|
|
List<Long> packageIds = new ArrayList<>(); |
|
|
|
@ -3788,8 +3852,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Map<Long, DistributionLoadscanEntity> collect = null; |
|
|
|
|
if (Func.isNotEmpty(loadingOrderMap.get(orderId))) { |
|
|
|
|
List<DistributionLoadscanEntity> loadscanEntityList = loadingOrderMap.get(orderId); |
|
|
|
|
if (Func.isNotEmpty(loadingOrderMap.get(distributionStockArticleEntity.getId()))) { |
|
|
|
|
List<DistributionLoadscanEntity> loadscanEntityList = loadingOrderMap.get(distributionStockArticleEntity.getId()); |
|
|
|
|
List<Long> loadingPackageIds = loadscanEntityList.stream().map(DistributionLoadscanEntity::getPackageId).collect(Collectors.toList()); |
|
|
|
|
packageIds.addAll(loadingPackageIds); |
|
|
|
|
collect = loadscanEntityList.stream().collect(Collectors.toMap(DistributionLoadscanEntity::getPackageId, Function.identity(), (k1, k2) -> k2)); |
|
|
|
@ -3801,11 +3865,13 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
|
|
|
|
|
List<DistributionAppParcelListVO> packageVOS = new ArrayList<>(); |
|
|
|
|
if (Func.isNotEmpty(packageIds)) { |
|
|
|
|
packageIds = packageIds.stream().distinct().collect(Collectors.toList()); |
|
|
|
|
for (Long packageId : packageIds) { |
|
|
|
|
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(packageId); |
|
|
|
|
|
|
|
|
|
List<DistributionParcelListEntity> parcelListEntitys = distributionParcelListService.listByIds(packageIds); |
|
|
|
|
for (DistributionParcelListEntity parcelListEntity : parcelListEntitys) { |
|
|
|
|
// DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(packageId);
|
|
|
|
|
DistributionAppParcelListVO distributionAppParcelListVO = DistributionParcelListAppWrapper.build().entityVO(parcelListEntity); |
|
|
|
|
if (Func.isNotEmpty(collect)) { |
|
|
|
|
DistributionLoadscanEntity distributionLoadscanEntity = collect.get(packageId); |
|
|
|
|
DistributionLoadscanEntity distributionLoadscanEntity = collect.get(parcelListEntity.getId()); |
|
|
|
|
if (Func.isNotEmpty(distributionLoadscanEntity)) { |
|
|
|
|
distributionAppParcelListVO.setMaterialName(parcelListEntity.getMaterialName()); |
|
|
|
|
if (distributionLoadscanEntity.getIsAbnormalLoading().equals(2)) { |
|
|
|
@ -3832,16 +3898,16 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
|
|
|
|
|
|
|
|
|
|
List<DistributionReservationZeroPackageEntity> reservationZeroPackageEntityList = distributionReservationZeroPackageService.list(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda() |
|
|
|
|
.eq(DistributionReservationZeroPackageEntity::getReservationId, distributionDeliveryList.getReservationId()) |
|
|
|
|
.eq(DistributionReservationZeroPackageEntity::getStockArticleId, orderId) |
|
|
|
|
.eq(DistributionReservationZeroPackageEntity::getStockArticleId, distributionStockArticleEntity.getId()) |
|
|
|
|
.ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus, ReservationPackageStatusConstant.quxiao.getValue())); |
|
|
|
|
if (Func.isNotEmpty(reservationZeroPackageEntityList)) { |
|
|
|
|
int reservationTotal = reservationZeroPackageEntityList.stream().mapToInt(DistributionReservationZeroPackageEntity::getQuantity).sum(); |
|
|
|
|
distributionAppStockArticleVO.setReservationNum(reservationTotal); |
|
|
|
|
List<DistributionParcelNumberVO> parcelNumberVOS = distributionReservationMapper.selectReservationZeroOrderDetail(orderId, Long.parseLong(distributionDeliveryList.getReservationId())); |
|
|
|
|
List<DistributionParcelNumberVO> parcelNumberVOS = distributionReservationMapper.selectReservationZeroOrderDetail(distributionStockArticleEntity.getId(), Long.parseLong(distributionDeliveryList.getReservationId())); |
|
|
|
|
distributionAppStockArticleVO.setSignforNub(0); |
|
|
|
|
if (Func.isNotEmpty(parcelNumberVOS)) { |
|
|
|
|
parcelNumberVOS.forEach(p -> { |
|
|
|
|
DistributionLoadscanEntity loadscanEntity = distributionLoadscanService.getOne(Wrappers.<DistributionLoadscanEntity>query().lambda().eq(DistributionLoadscanEntity::getReservationId, distributionDeliveryList.getReservationId()).eq(DistributionLoadscanEntity::getOrderId, orderId).eq(DistributionLoadscanEntity::getPackageId, p.getParcelListId()).ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue())); |
|
|
|
|
DistributionLoadscanEntity loadscanEntity = distributionLoadscanService.getOne(Wrappers.<DistributionLoadscanEntity>query().lambda().eq(DistributionLoadscanEntity::getReservationId, distributionDeliveryList.getReservationId()).eq(DistributionLoadscanEntity::getOrderId, distributionStockArticleEntity.getId()).eq(DistributionLoadscanEntity::getPackageId, p.getParcelListId()).ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue())); |
|
|
|
|
p.setLoadingNum(0); |
|
|
|
|
p.setSigningNum(0); |
|
|
|
|
if (Func.isNotEmpty(loadscanEntity)) { |
|
|
|
@ -3866,6 +3932,16 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 寻找预约单中订单 |
|
|
|
|
* @param reservationOrders |
|
|
|
|
* @param id |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
private DistributionReservationStockarticleEntity findReservationOrders(List<DistributionReservationStockarticleEntity> reservationOrders , Long id) { |
|
|
|
|
return reservationOrders.stream().filter(f -> f.getStockArticleId().equals(id)).findFirst().orElse(null); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Map<Long, List<DistributionLoadscanEntity>> orderMap = distributionLoadscanEntities.stream().collect(Collectors.groupingBy(DistributionLoadscanEntity::getOrderId));
|
|
|
|
|
// List<DistributionAppStockArticleVO> distributionAppStockArticleVOS = new ArrayList<>();
|
|
|
|
|