@ -2874,6 +2874,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
//查询出该配送任务下的客户,并将这些客户根据运单号进行分组
List < DistributionReservationEntity > reservationEntityList = distributionReservationMapper . getDeliveryReservation ( deliveryListEntity . getId ( ) ) ;
Map < String , List < DistributionReservationEntity > > oldClient = reservationEntityList . stream ( ) . collect ( Collectors . groupingBy ( DistributionReservationEntity : : getReceivingUnit ) ) ;
String oldReservationCode = reservationEntityList . stream ( ) . map ( DistributionReservationEntity : : getReservationCode ) . collect ( Collectors . joining ( "," ) ) ;
//订单总数量
AtomicInteger orderTotal = new AtomicInteger ( ) ;
//配送任务仓库名称
@ -2885,6 +2886,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
Date reservationDate = new Date ( ) ;
List < DistributionReservationPackageEntity > allPackageList = new ArrayList < > ( ) ;
List < DistributionReservationZeroPackageEntity > allZeroPackageList = new ArrayList < > ( ) ;
StringBuilder saa = new StringBuilder ( ) ;
newClient . forEach ( ( k , v ) - > {
HashSet < String > orderNumber = new HashSet < > ( ) ;
//运单号
@ -2923,6 +2925,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
reservationEntity . setStockupStatus ( ReservationStockupStatusConstant . daibeihuo . getValue ( ) ) ;
reservationEntity . setWarehouseId ( myCurrentWarehouse . getId ( ) ) ;
reservationEntity . setReservationCode ( reservationMa ( ) ) ;
reservationEntity . setReceivingUnit ( k ) ;
reservationEntity . setMallName ( k ) ;
BladeUser user = AuthUtil . getUser ( ) ;
reservationEntity . setCreateUser ( user . getUserId ( ) ) ;
reservationEntity . setDeliveryWay ( reservation . getDeliveryWay ( ) ) ;
@ -2958,6 +2962,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
reservationEntity . setStoreId ( storeIds . get ( 0 ) ) ;
}
reservationEntity . setStatus ( 1 ) ;
saa . append ( reservationEntity . getReservationCode ( ) ) . append ( "," ) ;
distributionReservationMapper . insert ( reservationEntity ) ;
//新增一个客户
v . forEach ( s - > {
@ -3177,6 +3182,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
reservationEntity . setStoreName ( String . join ( "," , storeName ) ) ;
//预约添加订单数量
reservationEntity . setReservationNum ( packageTotal . get ( ) ) ;
distributionReservationService . handleCreatedReservationPlanLog ( reservationEntity , AuthUtil . getUser ( ) , myCurrentWarehouse ) ;
distributionReservationMapper . updateById ( reservationEntity ) ;
//推送广播
//进行节点推送
@ -3201,10 +3207,12 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
} else {
//根据配送计划和运单号查询出该预约
DistributionReservationEntity reservationEntity = baseMapper . selectReservationByDeliveryListIdAndCustomerUnit ( deliveryListEntityId , k ) ;
DistributionReservationEntity oldReservation = BeanUtil . copy ( reservationEntity , DistributionReservationEntity . class ) ;
DistributionSignforEntity signforEntity = distributionSignforService . getOne ( Wrappers . < DistributionSignforEntity > query ( ) . lambda ( )
. eq ( DistributionSignforEntity : : getReservationId , reservationEntity . getId ( ) )
. eq ( DistributionSignforEntity : : getDeliveryId , deliveryListEntity . getId ( ) )
) ;
saa . append ( reservationEntity . getReservationCode ( ) ) . append ( "," ) ;
//查询出该预约下的订单信息
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 ) ) ;
@ -3672,6 +3680,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
reservationEntity . setStoreName ( String . join ( "," , storeName ) ) ;
//预约添加订单数量
reservationEntity . setReservationNum ( packageTotal . get ( ) ) ;
distributionReservationService . compareReservation ( reservationEntity , oldReservation , AuthUtil . getUser ( ) , myCurrentWarehouse ) ;
distributionReservationMapper . updateById ( reservationEntity ) ;
deliveryPackageTotal . getAndAdd ( reservationEntity . getReservationNum ( ) ) ;
}
@ -3682,6 +3691,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
DistributionReservationEntity reservationEntity = baseMapper . selectReservationByDeliveryListIdAndCustomerUnit ( deliveryListEntity . getId ( ) , f ) ;
reservationEntity . setReservationStatus ( ReservationStatusConstant . yiquexiao . getValue ( ) ) ;
distributionReservationMapper . updateById ( reservationEntity ) ;
distributionReservationService . handleCancelReservationPlanLog ( reservationEntity , AuthUtil . getUser ( ) , myCurrentWarehouse , "商配取消所有订单" ) ;
//这里还需要将减少的预约单下的所有订单、包件进行取消状态
List < DistributionReservationStockarticleEntity > entities = distributionReservationStockarticleMapper . selectList ( Wrappers . < DistributionReservationStockarticleEntity > query ( ) . lambda ( ) . ne ( DistributionReservationStockarticleEntity : : getStockArticleStatus , "2" ) . eq ( DistributionReservationStockarticleEntity : : getReservationId , reservationEntity . getId ( ) ) ) ;
entities . forEach ( e - > {
@ -3810,7 +3820,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
//对配送进行更改
this . updateById ( deliveryListEntity ) ;
//对修改计划下的所有包件进行维护
//进行配送日志记录
handleUpdateDistributionLog ( deliveryListEntity , oldReservationCode , saa . deleteCharAt ( saa . lastIndexOf ( "," ) ) . toString ( ) , myCurrentWarehouse , AuthUtil . getUser ( ) ) ;
// 作业节点推送
// distributionNodeWorkService.planDelivery(deliveryListEntity, AuthUtil.getUser(), BizOperationEnums.MODIFY);
@ -4211,25 +4222,41 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
distributionAsyncService . recordsReservationDeliveryLog ( newReservationEntities , myCurrentWarehouse , AuthUtil . getUser ( ) , deliveryListEntity , WorkNodeEnums . PLAN_DISTRIBUTION . getCode ( ) , content ) ;
}
List < DistributionReservationEntity > oldReservationEntities = new ArrayList < > ( ) ;
oldReservation . forEach ( ( m , n ) - > {
//这里就是取消的预约单,进行状态回退
DistributionReservationEntity reservationEntity = n . get ( 0 ) ;
reservationEntity . setReservationStatus ( ReservationStatusConstant . yiqueren . getValue ( ) ) ;
reservationEntity . setStockupStatus ( ReservationStockupStatusConstant . weibeihuo . getValue ( ) ) ;
distributionReservationMapper . updateById ( reservationEntity ) ;
//删除配送预约中间表信息
distributionSignforMapper . deleteByReservationAndDeliveryId ( reservationEntity . getId ( ) , deliveryListEntity . getId ( ) ) ;
//删除Redis中的reservationCode
bladeRedis . del ( user . getTenantId ( ) + ":" + ModuleNameConstant . APPLICATION_DISTRIBUTION_NAME + ":reservationLock" + reservationEntity . getReservationCode ( ) ) ;
//取消备货中间表
distributionStockupInfoService . update ( Wrappers . < DistributionStockupInfoEntity > update ( ) . lambda ( )
. eq ( DistributionStockupInfoEntity : : getReservationId , reservationEntity . getId ( ) )
. set ( DistributionStockupInfoEntity : : getStockStatus , "4" )
) ;
oldReservationEntities . add ( reservationEntity ) ;
oldIds . add ( reservationEntity . getId ( ) ) ;
} ) ;
if ( ! oldReservation . isEmpty ( ) ) {
oldReservation . forEach ( ( m , n ) - > {
//这里就是取消的预约单,进行状态回退
DistributionReservationEntity reservationEntity = n . get ( 0 ) ;
reservationEntity . setReservationStatus ( ReservationStatusConstant . yiqueren . getValue ( ) ) ;
reservationEntity . setStockupStatus ( ReservationStockupStatusConstant . weibeihuo . getValue ( ) ) ;
distributionReservationMapper . updateById ( reservationEntity ) ;
//删除配送预约中间表信息
distributionSignforMapper . deleteByReservationAndDeliveryId ( reservationEntity . getId ( ) , deliveryListEntity . getId ( ) ) ;
//删除Redis中的reservationCode
bladeRedis . del ( user . getTenantId ( ) + ":" + ModuleNameConstant . APPLICATION_DISTRIBUTION_NAME + ":reservationLock" + reservationEntity . getReservationCode ( ) ) ;
//取消备货中间表
distributionStockupInfoService . update ( Wrappers . < DistributionStockupInfoEntity > update ( ) . lambda ( )
. eq ( DistributionStockupInfoEntity : : getReservationId , reservationEntity . getId ( ) )
. set ( DistributionStockupInfoEntity : : getStockStatus , "4" )
) ;
oldReservationEntities . add ( reservationEntity ) ;
oldIds . add ( reservationEntity . getId ( ) ) ;
} ) ;
}
if ( ! oldIds . isEmpty ( ) ) {
//查询这些计划是否存在有装车数
long packageCount = distributionLoadscanService . count ( Wrappers . < DistributionLoadscanEntity > query ( ) . lambda ( )
. in ( DistributionLoadscanEntity : : getReservationId , oldIds )
. ne ( DistributionLoadscanEntity : : getScanStatus , LoadingStatusConstant . quxiao . getValue ( ) )
) ;
long inventorycount = distributionLoadscaninvnService . count ( Wrappers . < DistributionLoadscaninvnEntity > query ( ) . lambda ( )
. in ( DistributionLoadscaninvnEntity : : getReservationId , oldIds )
. ne ( DistributionLoadscaninvnEntity : : getScanStatus , LoadingStatusConstant . quxiao . getValue ( ) )
) ;
if ( ( packageCount + inventorycount ) > 0 ) {
String s = oldReservationEntities . stream ( ) . filter ( f - > oldIds . contains ( f . getId ( ) ) ) . map ( DistributionReservationEntity : : getReservationCode ) . collect ( Collectors . joining ( "," ) ) ;
throw new CustomerException ( s + "存在装车或签收数据,无法移除" ) ;
}
String content = "包件在" + myCurrentWarehouse . getName ( ) + "由" + AuthUtil . getUser ( ) . getNickName ( ) + "取消配车计划,操作方式:车次移除预约计划,车次号:" + deliveryListEntity . getTrainNumber ( ) ;
distributionAsyncService . recordsReservationDeliveryLog ( oldReservationEntities , myCurrentWarehouse , AuthUtil . getUser ( ) , deliveryListEntity , WorkNodeEnums . CANCEL_DISTRIBUTION . getCode ( ) , content ) ;
}
@ -4385,6 +4412,23 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
}
}
private void handleUpdateDistributionLog ( DistributionDeliveryListEntity deliveryListEntity , String oldReservationCode , String newReservationCode , BasicdataWarehouseEntity myCurrentWarehouse , BladeUser user ) {
String distributionContent = user . getNickName ( ) + "在" + myCurrentWarehouse . getName ( )
+ "修改市配配送计划;车次号:" + deliveryListEntity . getTrainNumber ( )
+ "预约编号:[" + oldReservationCode + "]变更为-->[" + newReservationCode + "]" + "当前总件数:" + ( deliveryListEntity . getDeliveryNumber ( ) ) ;
DistributionPlanLogEntity distributionPlanLogEntity = new DistributionPlanLogEntity ( ) ;
distributionPlanLogEntity . setContent ( distributionContent ) ;
distributionPlanLogEntity . setRefId ( deliveryListEntity . getId ( ) ) ;
distributionPlanLogEntity . setRefCode ( deliveryListEntity . getTrainNumber ( ) ) ;
distributionPlanLogEntity . setWarehouseId ( myCurrentWarehouse . getId ( ) ) ;
distributionPlanLogEntity . setWarehouseName ( myCurrentWarehouse . getName ( ) ) ;
distributionPlanLogEntity . setOperator ( user . getNickName ( ) ) ;
distributionPlanLogEntity . setType ( 3 ) ;
distributionPlanLogService . save ( distributionPlanLogEntity ) ;
}
@Override
public IPage < DistributionParcelListVO > getPackageListByDeliverylistId ( IPage < DistributionParcelListEntity > page , Map < String , Object > distributionDeliveryInfoDTO ) throws ParseException {
if ( Func . isEmpty ( distributionDeliveryInfoDTO . get ( "deliveryId" ) ) ) {
@ -5190,9 +5234,16 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
if ( Objects . isNull ( myCurrentWarehouse ) ) {
return R . fail ( 403 , "未授权!!!" ) ;
}
if ( Objects . isNull ( distributionDeliveryListDTO . get ( "deliveryListId" ) ) ) {
return R . fail ( "deliveryListId参数缺失" ) ;
}
String deliveryListId = ( String ) distributionDeliveryListDTO . get ( "deliveryListId" ) ;
DistributionDeliveryListEntity deliveryListEntity = this . getById ( deliveryListId ) ;
Integer loadingNum = baseMapper . selectLoadingNum ( Long . parseLong ( deliveryListId ) ) ;
if ( loadingNum > 0 ) {
return R . fail ( "存在装车或签收数据无法进行配送取消!!!" ) ;
}
List < DistributionSignforEntity > distributionSignforEntities = distributionSignforServicer . getBaseMapper ( ) . selectList ( Wrappers . < DistributionSignforEntity > query ( ) . lambda ( ) . eq ( DistributionSignforEntity : : getDeliveryId , deliveryListEntity . getId ( ) ) ) ;
BladeUser user = AuthUtil . getUser ( ) ;
List < DistributionReservationEntity > reservationList = new ArrayList < > ( ) ;
@ -5213,7 +5264,6 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
List < DistributionReservationPackageEntity > reservationPackageEntityList = distributionReservationPackageMapper . selectList ( Wrappers . < DistributionReservationPackageEntity > query ( ) . lambda ( ) . eq ( DistributionReservationPackageEntity : : getReservationId , reservationEntity . getId ( ) ) . eq ( DistributionReservationPackageEntity : : getStockArticleId , o . getStockArticleId ( ) ) . ne ( DistributionReservationPackageEntity : : getPacketBarStatus , ReservationPackageStatusConstant . quxiao . getValue ( ) ) ) ;
reservationPackageEntityList . forEach ( p - > {
DistributionParcelListEntity parcelListEntity = distributionParcelListService . getById ( p . getParceListId ( ) ) ;
//TODO 这里取消应该有一个取消的任务
parcelListEntity . setOrderPackageLoadingStatus ( OrderPackageLoadingStatusConstant . weizhuancghe . getValue ( ) ) ;
parcelListEntity . setOrderPackageStatus ( OrderPackageStatusConstant . yiruku . getValue ( ) ) ;
distributionParcelListService . updateById ( parcelListEntity ) ;
@ -9031,7 +9081,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
warehouseUpdownTypeClient . downPackageOrDelTray ( parcelListEntity . getOrderPackageCode ( ) , myCurrentWarehouse . getId ( ) , "扫描装车进行下架、解托" ) ;
}
//检查是否存在有装车异常,进行处理
distributionSignforService . maintenanceSignfor ( reservationId ) ;
// distributionSignforService.maintenanceSignfor(reservationId);
distributionSignforMapper . autoDpdateSignfor ( reservationId ) ;
String content = "包件在" + myCurrentWarehouse . getName ( ) + "由" + loadscanEntity . getScanUser ( ) + "扫描装车,配送车次号:" + deliveryListEntity . getTrainNumber ( ) + "预约任务号:" + reservationEntity . getReservationCode ( ) ;
JSONObject packageLog = handleLogJSONObject ( myCurrentWarehouse , AuthUtil . getUser ( ) , parcelListEntity . getOrderPackageCode ( ) , content , WorkNodeEnums . DISTRIBUTION_LOADING . getCode ( ) ) ;
packageLogs . add ( packageLog ) ;
@ -9200,7 +9251,9 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
} else {
log . error ( "#######################查询预约订单信息错误,reservationID:{}" , distrilbutionloadingscanDTO . getReservationId ( ) ) ;
}
distributionSignforService . maintenanceSignfor ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
// distributionSignforService.maintenanceSignfor(distrilbutionloadingscanDTO.getReservationId());
distributionSignforMapper . autoDpdateSignfor ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
}
break ;
case 3 :