@ -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 ;
@ -2404,6 +2407,21 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
if ( Objects . isNull ( myCurrentWarehouse ) ) {
return R . fail ( 403 , "配送任务错误" ) ;
}
//查询是否完成复核
DistributionSignforEntity signforEntity = this . getOne ( Wrappers . < DistributionSignforEntity > query ( ) . lambda ( )
. eq ( DistributionSignforEntity : : getReservationId , distrilbutionloadingscanDTO . getReservationId ( ) )
) ;
if ( Objects . isNull ( signforEntity ) ) {
//查询签收信息错误
log . error ( "签收扫描查询签收表信息错误reservationId:{}" , distrilbutionloadingscanDTO . getReservationId ( ) ) ;
return R . fail ( 403 , "配送任务错误" ) ;
}
if ( SignforStatusConstant . yiqianshou . getValue ( ) . equals ( signforEntity . getSigningStatus ( ) ) ) {
return Resp . scanFail ( "此任务已完成复核" , "此任务已完成复核" ) ;
}
List < Long > packageLockIds = new ArrayList < > ( ) ;
try {
@ -2665,6 +2683,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 +2698,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 +3773,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 +3802,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 ( ) ) ;
distributionAppStockArticleVO . setLoadingNub ( 0 ) ;
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 +3857,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 +3867,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 +3880,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 +3913,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 +3947,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<>();