@ -75,13 +75,15 @@ import com.logpm.oldproject.feign.IOldSignPushClient;
import com.logpm.trunkline.dto.WaybillLogDTO ;
import com.logpm.trunkline.feign.ITrunklinePackageTrackLogClient ;
import com.logpm.trunkline.feign.ITrunklineWaybillTrackClient ;
import com.logpm.warehouse.entity.WarehouseConfigEntity ;
import com.logpm.warehouse.feign.IWarehouseConfigClient ;
import com.logpm.warehouse.feign.IWarehouseUpdownTypeClient ;
import com.sun.org.apache.xpath.internal.operations.Bool ;
import lombok.extern.log4j.Log4j2 ;
import org.apache.logging.log4j.util.Strings ;
import org.jetbrains.annotations.NotNull ;
import org.springblade.common.constant.* ;
import org.springblade.common.constant.Inventory.InventoryStockUpStatusConstant ;
import org.springblade.common.constant.Inventory.* ;
import org.springblade.common.constant.billLading.BillLadingStatusConstant ;
import org.springblade.common.constant.common.IsOrNoConstant ;
import org.springblade.common.constant.order.OrderReservationStatusConstant ;
@ -220,6 +222,9 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
@Autowired
private IDistributionPlanLogService distributionPlanLogService ;
@Autowired
private IWarehouseConfigClient warehouseConfigClient ;
@Override
public IPage < DistrilbutionBillLadingVO > selectDistrilbutionBillLadingPage ( IPage < DistrilbutionBillLadingVO > page , DistrilbutionBillLadingVO distrilbutionBillLading ) {
@ -585,7 +590,9 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
updateStockBill ( distrilbutionBillLading ) ;
}
//修改自提单信息
//进行自提单的修改日志记录
Integer integer = baseMapper . selectBillLadingPlanNum ( distrilbutionBillLading . getId ( ) ) ;
handleUpdateDistributionPlanLog ( billLadingEntity , distrilbutionBillLading , AuthUtil . getUser ( ) , myCurrentWarehouse , integer ) ;
} else {
//设置lockey
String lockKey = "lock:" + distrilbutionBillLading . getStockArticleId ( ) ;
@ -645,7 +652,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
List < DistributionParcelListDTO > zeroPackageList = distrilbutionBillLading . getParcelLisList ( ) ;
zeroPackageMap = zeroPackageList . stream ( ) . collect ( Collectors . groupingBy ( DistributionParcelListDTO : : getStockArticleId ) ) ;
}
this . saveDistrilbutionBillLading ( distrilbutionBillLading , myCurrentWarehouse ) ;
this . saveDistrilbutionBillLading ( distrilbutionBillLading , myCurrentWarehouse ) ;
// List<DistrilbutionBillPackageEntity> packageEntityList = new ArrayList<>();
if ( StringUtils . isNotBlank ( distrilbutionBillLading . getStockArticleId ( ) ) ) {
String [ ] split = distrilbutionBillLading . getStockArticleId ( ) . split ( "," ) ;
@ -880,7 +887,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
distributionDeliveryDetailsService . saveBatch ( detailsEntities ) ;
}
Integer integer = baseMapper . selectBillLadingPlanNum ( distrilbutionBillLading . getId ( ) ) ;
handleCreatedReserva tionPlanLog ( distrilbutionBillLading , AuthUtil . getUser ( ) , myCurrentWarehouse , integer ) ;
handleCreatedDistribu tionPlanLog ( distrilbutionBillLading , AuthUtil . getUser ( ) , myCurrentWarehouse , integer ) ;
}
//添加库存品信息
//添加费用
@ -911,13 +918,13 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
return true ;
}
private void handleCreatedReserva tionPlanLog ( DistrilbutionBillLadingEntity billLadingEntity , BladeUser user , BasicdataWarehouseEntity warehouse , Integer planNum ) {
private void handleCreatedDistribu tionPlanLog ( DistrilbutionBillLadingEntity billLadingEntity , BladeUser user , BasicdataWarehouseEntity warehouse , Integer planNum ) {
String planContent = user . getNickName ( ) + "在" + warehouse . getName ( )
+ "创建自提计划;自提计划编号:" + billLadingEntity . getPickupBatch ( )
+ ";收货单位:" + billLadingEntity . getConsigneeUnit ( )
+ ",提货人:" + billLadingEntity . getConsignee ( )
+ ",提货车牌:" + billLadingEntity . getPickUpPlate ( )
+ ",提货证件:" + billLadingEntity . getDeliveryDocument ( ) ! = null ? billLadingEntity . getDeliveryDocument ( ) : "未填写"
+ ",提货证件:" + ( billLadingEntity . getDeliveryDocument ( ) ! = null ? billLadingEntity . getDeliveryDocument ( ) : "未填写" )
+ ",计划件数:" + planNum ;
DistributionPlanLogEntity distributionPlanLogEntity = new DistributionPlanLogEntity ( ) ;
distributionPlanLogEntity . setContent ( planContent ) ;
@ -926,10 +933,60 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
distributionPlanLogEntity . setWarehouseId ( warehouse . getId ( ) ) ;
distributionPlanLogEntity . setWarehouseName ( warehouse . getName ( ) ) ;
distributionPlanLogEntity . setOperator ( user . getNickName ( ) ) ;
distributionPlanLogEntity . setType ( 1 ) ;
distributionPlanLogEntity . setType ( 2 ) ;
distributionPlanLogService . save ( distributionPlanLogEntity ) ;
}
private void handleUpdateDistributionPlanLog ( DistrilbutionBillLadingEntity oldEntity , DistrilbutionBillLadingEntity newEntity , BladeUser user , BasicdataWarehouseEntity warehouse , Integer planNum ) {
if ( StringUtils . isBlank ( oldEntity . getDeliveryDocument ( ) ) ) {
oldEntity . setDeliveryDocument ( "未填写" ) ;
}
if ( StringUtils . isBlank ( newEntity . getDeliveryDocument ( ) ) ) {
newEntity . setDeliveryDocument ( "未填写" ) ;
}
String planContent = user . getNickName ( ) + "在" + warehouse . getName ( )
+ "修改自提计划;自提计划编号:" + oldEntity . getPickupBatch ( )
+ ";收货单位:" + ( oldEntity . getConsigneeUnit ( ) . equals ( newEntity . getConsigneeUnit ( ) ) ? oldEntity . getConsigneeUnit ( ) : "由" + oldEntity . getConsigneeUnit ( ) + "变更为-->" + newEntity . getConsigneeUnit ( ) )
+ ",提货人:" + ( oldEntity . getConsignee ( ) . equals ( newEntity . getConsignee ( ) ) ? oldEntity . getConsignee ( ) : "由" + oldEntity . getConsignee ( ) + "变更为-->" + newEntity . getConsignee ( ) )
+ ",提货车牌:" + ( oldEntity . getPickUpPlate ( ) . equals ( newEntity . getPickUpPlate ( ) ) ? oldEntity . getPickUpPlate ( ) : "由" + oldEntity . getPickUpPlate ( ) + "变更为-->" + newEntity . getPickUpPlate ( ) )
+ ",提货证件:" + ( oldEntity . getDeliveryDocument ( ) . equals ( newEntity . getDeliveryDocument ( ) ) ? oldEntity . getDeliveryDocument ( ) : "由" + oldEntity . getDeliveryDocument ( ) + "变更为-->" + newEntity . getDeliveryDocument ( ) )
+ ",计划件数:" + planNum ;
DistributionPlanLogEntity distributionPlanLogEntity = new DistributionPlanLogEntity ( ) ;
distributionPlanLogEntity . setContent ( planContent ) ;
distributionPlanLogEntity . setRefId ( oldEntity . getId ( ) ) ;
distributionPlanLogEntity . setRefCode ( oldEntity . getPickupBatch ( ) ) ;
distributionPlanLogEntity . setWarehouseId ( warehouse . getId ( ) ) ;
distributionPlanLogEntity . setWarehouseName ( warehouse . getName ( ) ) ;
distributionPlanLogEntity . setOperator ( user . getNickName ( ) ) ;
distributionPlanLogEntity . setType ( 2 ) ;
distributionPlanLogService . save ( distributionPlanLogEntity ) ;
}
private List < DistributionPlanLogEntity > handleCancelDistributionPlanLog ( List < Long > ids , BladeUser user , BasicdataWarehouseEntity warehouse ) {
List < DistributionPlanLogEntity > logsList = new ArrayList < > ( ) ;
if ( ! ids . isEmpty ( ) ) {
List < DistrilbutionBillLadingEntity > distrilbutionBillLadingEntities = this . listByIds ( ids ) ;
for ( DistrilbutionBillLadingEntity distrilbutionBillLadingEntity : distrilbutionBillLadingEntities ) {
String planContent = user . getNickName ( ) + "在" + warehouse . getName ( )
+ "取消自提计划;自提计划编号:" + distrilbutionBillLadingEntity . getPickupBatch ( ) ;
DistributionPlanLogEntity distributionPlanLogEntity = new DistributionPlanLogEntity ( ) ;
distributionPlanLogEntity . setContent ( planContent ) ;
distributionPlanLogEntity . setRefId ( distrilbutionBillLadingEntity . getId ( ) ) ;
distributionPlanLogEntity . setRefCode ( distrilbutionBillLadingEntity . getPickupBatch ( ) ) ;
distributionPlanLogEntity . setWarehouseId ( warehouse . getId ( ) ) ;
distributionPlanLogEntity . setWarehouseName ( warehouse . getName ( ) ) ;
distributionPlanLogEntity . setOperator ( user . getNickName ( ) ) ;
distributionPlanLogEntity . setType ( 2 ) ;
logsList . add ( distributionPlanLogEntity ) ;
}
}
if ( ! logsList . isEmpty ( ) ) {
return logsList ;
}
return null ;
}
private NodeFanoutMsg < DeliveryOfPickupPlanVO > buildNodeFanoutMsgForBill ( DistrilbutionBillLadingDTO distrilbutionBillLading , List < DistrilbutionBillPackageEntity > packageEntityList , List < DistributionDeliveryDetailsEntity > detailsEntities , List < DistributionReservationZeroPackageEntity > zeroPackageEntityList , List < DistributionDeliveryChargeEntity > listEntity ) {
@ -1143,6 +1200,10 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
log . error ( method + "存在已提货或签收自提单:{}" , errorBillLading ) ;
return R . fail ( errorBillLading + "已提货或已签收!!!" ) ;
}
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient . getMyCurrentWarehouse ( ) ;
if ( Objects . isNull ( myCurrentWarehouse ) ) {
return R . fail ( 403 , "未授权!!!" ) ;
}
//查询是否存在自提扫描的有效包件
List < DistributionBillLadingScanEntity > ladingScanEntities = distributionBillLadingScanService . list ( Wrappers . < DistributionBillLadingScanEntity > query ( ) . lambda ( )
. in ( DistributionBillLadingScanEntity : : getBillLadingId , ids )
@ -1156,6 +1217,8 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
Integer a = this . cancelBillLodingPackage ( ids ) ;
switch ( a ) {
case 0 :
//日志记录
List < DistributionPlanLogEntity > cancelLogList = handleCancelDistributionPlanLog ( ids , AuthUtil . getUser ( ) , myCurrentWarehouse ) ;
//进行自提单的取消
this . removeBatchByIds ( ids ) ;
//取消备货任务
@ -1173,6 +1236,10 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
}
//对自提所有的包件进行状态恢复
distributionAsyncService . maintenanceCancelBillLading ( ids ) ;
//取消日志记录
if ( ! cancelLogList . isEmpty ( ) ) {
distributionPlanLogService . saveBatch ( cancelLogList ) ;
}
return R . status ( true ) ;
case 1 :
return R . fail ( "未授权!!!" ) ;
@ -1320,7 +1387,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
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 ( ) , "签收下架解托" ) ;
}
}
@ -1396,7 +1463,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 ) {
@ -2537,7 +2604,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 ) ;
}
@ -3238,8 +3305,6 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
Object billLadingId = distributionBillLading . get ( "id" ) ;
String coding = distributionBillLading . get ( "coding" ) . toString ( ) ;
String type = distributionBillLading . get ( "type" ) . toString ( ) ;
try {
DistrilbutionBillLadingEntity billLadingEntity1 = baseMapper . selectById ( ( Serializable ) billLadingId ) ;
DistrilbutionAppBillLadingOrderMainVO billLadingOrderMainVO = baseMapper . getBillLadingOrderMainVO ( Long . parseLong ( billLadingId . toString ( ) ) ) ;
@ -3266,7 +3331,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("签收成功", "签收成功");
@ -3350,6 +3414,11 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
if ( matchedPackage = = null ) {
return Resp . scanFail ( "系统无此编码!" , "系统无此编码" ) ;
}
DisStockListDetailEntity disStockListDetailEntity = new DisStockListDetailEntity ( ) ;
disStockListDetailEntity . setId ( matchedPackage . getId ( ) ) ;
disStockListDetailEntity . setStockLockingStatus ( InventoryLoadingStatusConstant . yizhuangche . getValue ( ) ) ;
disStockListDetailEntity . setStockSignfoStatus ( InventorySigningStatusConstant . yiqianshou . getValue ( ) ) ;
disStockListDetailService . updateById ( disStockListDetailEntity ) ;
List < DistributionBillLadingScanEntity > billLadingScanEntities = new ArrayList < > ( ) ;
distributionBillLadingScan . setPacketBarCode ( coding ) ;
@ -3496,7 +3565,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 ( ) ) ;
@ -3798,8 +3867,17 @@ 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 , "未授权!!!" ) ;
}
Integer isAutoRelease ;
WarehouseConfigEntity warehouseConfig = warehouseConfigClient . getWarehouseConfig ( myCurrentWarehouse . getId ( ) ) ;
if ( ! Objects . isNull ( warehouseConfig ) ) {
isAutoRelease = warehouseConfig . getIsAutoRelease ( ) ! = null ? warehouseConfig . getIsAutoRelease ( ) : 0 ;
} else {
isAutoRelease = 0 ;
}
Set < Long > parcelListIds = new HashSet < > ( ) ;
for ( int i = 0 ; i < split . length ; i + + ) {
String s = split [ i ] ;
@ -3824,6 +3902,14 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
if ( ladingScanEntities . isEmpty ( ) ) {
return R . fail ( "无签收数据!!" ) ;
}
if ( Objects . equals ( isAutoRelease , Integer . parseInt ( IsOrNoConstant . no . getValue ( ) ) ) ) {
//检查是否进行签收完毕
Integer planNum = baseMapper . selectBillLadingPlanNum ( Long . valueOf ( s ) ) ;
Integer sum = ladingScanEntities . stream ( ) . mapToInt ( DistributionBillLadingScanEntity : : getQuantity ) . sum ( ) ;
if ( ! Objects . equals ( planNum , sum ) ) {
return R . fail ( "当前任务未签收完成!!!" ) ;
}
}
//修改提货状态
DistrilbutionBillLadingEntity billLadingEntity = new DistrilbutionBillLadingEntity ( ) ;
billLadingEntity . setConditions ( BillLadingStatusConstant . yiqianshou . getValue ( ) ) ;
@ -3838,98 +3924,117 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
Integer integer = this . selectBillLadingPlanNum ( Long . parseLong ( s ) ) ;
if ( Func . isNotEmpty ( ladingScanEntities ) ) {
int sum = ladingScanEntities . stream ( ) . filter ( f - > "2" . equals ( f . getMaterialType ( ) ) ) . 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 > list2 = entry . getValue ( ) ;
// 按订单分组
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 > list2 = 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 ) ;
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 ) ;
}
}
for ( DistributionBillLadingScanEntity ladingScanEntity : ladingScanEntities ) {
if ( ladingScanEntity . getStockArticleId ( ) ! = null ) {
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService . getById ( ladingScanEntity . getStockArticleId ( ) ) ;
if ( stockArticleEntity ! = null ) {
// 签收发送消息到工厂
pushFactoryOrderData ( myCurrentWarehouse . getId ( ) , ladingScanEntity . getParcelListId ( ) . toString ( ) , stockArticleEntity . getOrderCode ( ) ) ;
}
} catch ( Exception e ) {
log . error ( "推送失败:{}" , e ) ;
}
for ( DistributionBillLadingScanEntity ladingScanEntity : ladingScanEntities ) {
if ( ladingScanEntity . getStockArticleId ( ) ! = null ) {
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService . getById ( ladingScanEntity . getStockArticleId ( ) ) ;
if ( stockArticleEntity ! = null ) {
// 签收发送消息到工厂
pushFactoryOrderData ( myCurrentWarehouse . getId ( ) , ladingScanEntity . getParcelListId ( ) . toString ( ) , stockArticleEntity . getOrderCode ( ) ) ;
}
}
}
//修改订单状态
List < DistrilbutionBillStockEntity > list = distrilbutionBillStockService . list ( Wrappers . < DistrilbutionBillStockEntity > query ( ) . lambda ( )
. eq ( DistrilbutionBillStockEntity : : getBillLadingId , s )
. apply ( "order_status in ( '1' , '3')" )
}
//修改订单状态
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"))
) ;
List < String > orderCode = new ArrayList < > ( ) ;
List < Long > orderIds = new ArrayList < > ( ) ;
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 ( ) ) ;
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService . getById ( li . getStockArticleId ( ) ) ;
if ( IsOrNoConstant . no . getValue ( ) . equals ( stockArticleEntity . getIsZero ( ) ) ) {
//开启自动释放才可以进行 否则这里无法进行复核
if ( Integer . parseInt ( IsOrNoConstant . yes . getValue ( ) ) = = ( isAutoRelease ) ) {
Integer i1 = updatePack ( li . getStockArticleId ( ) , Long . valueOf ( s ) ) ;
if ( i1 > 0 ) {
//存在释放 需要对订单状态进行维护
orderCode . add ( stockArticleEntity . getOrderCode ( ) ) ;
orderIds . add ( stockArticleEntity . getId ( ) ) ;
}
}
} else {
stockArticleEntity . setOrderStatus ( OrderStatusConstant . bufenqianshou . getValue ( ) ) ;
}
//回退包件数据
Integer i1 = updatePack ( li . getStockArticleId ( ) , Long . valueOf ( s ) ) ;
if ( i1 > 0 ) {
stockArticleEntity . setOrderStatus ( OrderStatusConstant . bufenqianshou . getValue ( ) ) ;
if ( Integer . parseInt ( IsOrNoConstant . yes . getValue ( ) ) = = ( isAutoRelease ) ) {
//释放零担
Integer i2 = updateZeroPack ( li . getStockArticleId ( ) , Long . valueOf ( s ) ) ;
switch ( i2 ) {
case 1 :
orderCode . add ( stockArticleEntity . getOrderCode ( ) ) ;
orderIds . add ( stockArticleEntity . getId ( ) ) ;
break ;
case 0 :
throw new CustomerException ( "查询零担信息错误" ) ;
default :
log . error ( "updateZeroPack>>>>>>>>>>>>>未知返回值" ) ;
}
}
}
distributionStockArticleService . updateById ( stockArticleEntity ) ;
} ) ;
distributionAsyncService . sendFactorySignforInfo ( s , myCurrentWarehouse , AuthUtil . getUser ( ) ) ;
if ( ! orderIds . isEmpty ( ) ) {
//维护计划内进行释放订单状态
distrilbutionBillStockService . maintenancePlanOrderStatus ( orderIds , billLadingEntity . getId ( ) ) ;
}
}
//处理库存品签收数据
updateStock ( s , scanEntityList ) ;
if ( ! orderCode . isEmpty ( ) ) {
String collect = orderCode . stream ( ) . distinct ( ) . collect ( Collectors . joining ( "," ) ) ;
distributionStockArticleService . maintenanceOrderInfo ( collect , myCurrentWarehouse . getId ( ) ) ;
}
if ( Integer . parseInt ( IsOrNoConstant . yes . getValue ( ) ) = = ( isAutoRelease ) ) {
//释放库存品
updateStock ( s , scanEntityList ) ;
}
Integer num = baseMapper . selectBillLadingLoading ( billLadingEntity . getId ( ) ) ;
//自提复核日志
handleDExamineDistributionPlanLog ( billLadingEntity , AuthUtil . getUser ( ) , myCurrentWarehouse , num ) ;
// 回传老系统自提数据
sendOldSystem ( Long . parseLong ( s ) ) ;
//整理运单信息
@ -3938,6 +4043,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
NodeFanoutMsg < PickUpByReCheckVO > nodeFanoutMsg = buildPickUpByReCheckVO ( billLadingEntity , ladingScanEntities , myCurrentWarehouse ) ;
iDistributionNodeWorkService . billofladingSignforCheck ( nodeFanoutMsg , AuthUtil . getUser ( ) ) ;
}
// 回传工厂数据
// sendFactory(myCurrentWarehouse, parcelListIds);
@ -3945,6 +4051,102 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
return R . success ( "操作成功" ) ;
}
private void handleDExamineDistributionPlanLog ( DistrilbutionBillLadingEntity billLadingEntity , BladeUser user , BasicdataWarehouseEntity myCurrentWarehouse , Integer num ) {
String planContent = user . getNickName ( ) + "在" + myCurrentWarehouse . getName ( )
+ "完成自提计划;自提计划编号:" + billLadingEntity . getPickupBatch ( )
+ ",签收件数:" + num ;
DistributionPlanLogEntity distributionPlanLogEntity = new DistributionPlanLogEntity ( ) ;
distributionPlanLogEntity . setContent ( planContent ) ;
distributionPlanLogEntity . setRefId ( billLadingEntity . getId ( ) ) ;
distributionPlanLogEntity . setRefCode ( billLadingEntity . getPickupBatch ( ) ) ;
distributionPlanLogEntity . setWarehouseId ( myCurrentWarehouse . getId ( ) ) ;
distributionPlanLogEntity . setWarehouseName ( myCurrentWarehouse . getName ( ) ) ;
distributionPlanLogEntity . setOperator ( user . getNickName ( ) ) ;
distributionPlanLogEntity . setType ( 2 ) ;
distributionPlanLogService . save ( distributionPlanLogEntity ) ;
}
private Integer updateZeroPack ( Long stockArticleId , Long billId ) {
//查询零担计划信息
List < DistributionReservationZeroPackageEntity > reservationZeroPackageEntities = distributionZeroPackageService . list ( Wrappers . < DistributionReservationZeroPackageEntity > query ( ) . lambda ( )
. eq ( DistributionReservationZeroPackageEntity : : getReservationId , billId )
. eq ( DistributionReservationZeroPackageEntity : : getStockArticleId , stockArticleId )
. eq ( DistributionReservationZeroPackageEntity : : getType , "3" )
. ne ( DistributionReservationZeroPackageEntity : : getZeroPackageStatus , ReservationPackageStatusConstant . quxiao . getValue ( ) )
) ;
List < DistributionReservationZeroPackageEntity > recoveryReservationZeroPackageEntities = new ArrayList < > ( ) ;
List < DistributionReservationZeroPackageEntity > updateReservationZeroPackageEntities = new ArrayList < > ( ) ;
if ( ! reservationZeroPackageEntities . isEmpty ( ) ) {
List < Long > zeropackageIds = reservationZeroPackageEntities . stream ( ) . map ( DistributionReservationZeroPackageEntity : : getParcelListId ) . collect ( Collectors . toList ( ) ) ;
//查询此品类的签收数量
List < DistributionBillLadingScanEntity > ladingScanEntities = distributionBillLadingScanService . list ( Wrappers . < DistributionBillLadingScanEntity > query ( ) . lambda ( )
. eq ( DistributionBillLadingScanEntity : : getBillLadingId , billId )
. eq ( DistributionBillLadingScanEntity : : getStockArticleId , stockArticleId )
. in ( DistributionBillLadingScanEntity : : getParcelListId , zeropackageIds )
) ;
if ( ! ladingScanEntities . isEmpty ( ) ) {
//收集需要进行恢复的数据
Map < Long , List < DistributionBillLadingScanEntity > > loadingPackageMap = ladingScanEntities . stream ( ) . collect ( Collectors . groupingBy ( DistributionBillLadingScanEntity : : getParcelListId ) ) ;
for ( DistributionReservationZeroPackageEntity reservationZeroPackageEntity : reservationZeroPackageEntities ) {
if ( ! Objects . isNull ( loadingPackageMap . get ( reservationZeroPackageEntity . getParcelListId ( ) ) ) ) {
//进行签收的数量比对
DistributionBillLadingScanEntity ladingScanEntity = loadingPackageMap . get ( reservationZeroPackageEntity . getParcelListId ( ) ) . get ( 0 ) ;
if ( ! Objects . equals ( reservationZeroPackageEntity . getQuantity ( ) , ladingScanEntity . getQuantity ( ) ) ) {
//存在数据差异
int i = reservationZeroPackageEntity . getQuantity ( ) - ladingScanEntity . getQuantity ( ) ;
DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity = new DistributionReservationZeroPackageEntity ( ) ;
distributionReservationZeroPackageEntity . setParcelListId ( reservationZeroPackageEntity . getParcelListId ( ) ) ;
distributionReservationZeroPackageEntity . setQuantity ( i ) ;
recoveryReservationZeroPackageEntities . add ( distributionReservationZeroPackageEntity ) ;
reservationZeroPackageEntity . setQuantity ( ladingScanEntity . getQuantity ( ) ) ;
updateReservationZeroPackageEntities . add ( reservationZeroPackageEntity ) ;
}
//计划和签收一致 不进行处理
} else {
DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity = new DistributionReservationZeroPackageEntity ( ) ;
distributionReservationZeroPackageEntity . setParcelListId ( reservationZeroPackageEntity . getParcelListId ( ) ) ;
distributionReservationZeroPackageEntity . setQuantity ( reservationZeroPackageEntity . getQuantity ( ) ) ;
recoveryReservationZeroPackageEntities . add ( distributionReservationZeroPackageEntity ) ;
reservationZeroPackageEntity . setQuantity ( 0 ) ;
reservationZeroPackageEntity . setZeroPackageStatus ( ReservationPackageStatusConstant . quxiao . getValue ( ) ) ;
//进行整个品类释放
updateReservationZeroPackageEntities . add ( reservationZeroPackageEntity ) ;
}
}
} else {
recoveryReservationZeroPackageEntities . addAll ( reservationZeroPackageEntities ) ;
reservationZeroPackageEntities . stream ( ) . forEach ( rz - > {
rz . setZeroPackageStatus ( ReservationPackageStatusConstant . quxiao . getValue ( ) ) ;
rz . setQuantity ( 0 ) ;
} ) ;
//进行整个品类释放
updateReservationZeroPackageEntities . addAll ( reservationZeroPackageEntities ) ;
}
} else {
return 0 ;
}
if ( ! recoveryReservationZeroPackageEntities . isEmpty ( ) ) {
//存在需要释放的
for ( DistributionReservationZeroPackageEntity recoveryReservationZeroPackageEntity : recoveryReservationZeroPackageEntities ) {
DistributionParcelNumberEntity distributionParcelNumberEntity = distributionParcelNumberService . getOne ( Wrappers . < DistributionParcelNumberEntity > query ( ) . lambda ( )
. eq ( DistributionParcelNumberEntity : : getParcelListId , recoveryReservationZeroPackageEntity . getParcelListId ( ) )
) ;
distributionParcelNumberEntity . setDeliveryQuantity ( distributionParcelNumberEntity . getDeliveryQuantity ( ) - recoveryReservationZeroPackageEntity . getQuantity ( ) ) ;
distributionParcelNumberService . updateById ( distributionParcelNumberEntity ) ;
distributionParcelListService . maintenanceZerpPackageInfo ( recoveryReservationZeroPackageEntity . getParcelListId ( ) ) ;
}
}
if ( ! updateReservationZeroPackageEntities . isEmpty ( ) ) {
//存在需要修改计划的
distributionZeroPackageService . updateBatchById ( updateReservationZeroPackageEntities ) ;
}
return 1 ;
}
private NodeFanoutMsg < PickUpByReCheckVO > buildPickUpByReCheckVO ( DistrilbutionBillLadingEntity billLadingEntity , List < DistributionBillLadingScanEntity > ladingScanEntities , BasicdataWarehouseEntity myCurrentWarehouse ) {
NodeFanoutMsg < org . springblade . common . model . workNode . PickUpByReCheckVO > nodeFanoutMsg = new NodeFanoutMsg ( ) ;
nodeFanoutMsg . setBizOperation ( BizOperationEnums . ADD ) ;
@ -4041,7 +4243,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 )
@ -4146,23 +4348,52 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
* /
public void updateStock ( String billId , List < DistributionBillLadingScanEntity > scanEntityList ) {
List < DisStockListDetailEntity > list = disStockListDetailService . list ( Wrappers . < DisStockListDetailEntity > query ( ) . lambda ( )
. eq ( DisStockListDetailEntity : : getReservationId , billId ) ) ;
. eq ( DisStockListDetailEntity : : getReservationId , billId )
. ne ( DisStockListDetailEntity : : getStockPackageStatus , InventoryPackageStatusConstant . quxiao . getValue ( ) )
) ;
if ( ObjectUtils . isNotNull ( list ) ) {
//处理库存
list . stream ( ) . filter ( i - > "10" . equals ( i . getStockSignfoStatus ( ) ) ) . forEach ( i - > {
//添加自提库存品记录
DistributionBillLadingScanEntity billLadingScan = new DistributionBillLadingScanEntity ( ) ;
billLadingScan . setMaterialType ( "1" ) ;
billLadingScan . setScanType ( 2 ) ;
billLadingScan . setBillLadingId ( Long . valueOf ( billId ) ) ;
billLadingScan . setQuantity ( 1 ) ;
billLadingScan . setStockListId ( i . getStockListId ( ) ) ;
billLadingScan . setPacketBarCode ( i . getStockPackageCode ( ) ) ;
scanEntityList . add ( billLadingScan ) ;
} ) ;
if ( ! scanEntityList . isEmpty ( ) ) {
distributionBillLadingScanService . saveBatch ( scanEntityList ) ;
// //处理库存
// list.stream().filter(i -> "10".equals(i.getStockSignfoStatus())).forEach(i -> {
// //添加自提库存品记录
// DistributionBillLadingScanEntity billLadingScan = new DistributionBillLadingScanEntity();
// billLadingScan.setMaterialType("1");
// billLadingScan.setScanType(2);
// billLadingScan.setBillLadingId(Long.valueOf(billId));
// billLadingScan.setQuantity(1);
// billLadingScan.setStockListId(i.getStockListId());
// billLadingScan.setPacketBarCode(i.getStockPackageCode());
// scanEntityList.add(billLadingScan);
// });
// if (!scanEntityList.isEmpty()) {
// distributionBillLadingScanService.saveBatch(scanEntityList);
// }
List < DisStockListDetailEntity > cancelList = new ArrayList < > ( ) ;
List < DisStockListDetailEntity > recoveryInventoryPackageList = list . stream ( ) . filter ( f - > InventorySigningStatusConstant . weiqianshou . getValue ( ) . equals ( f . getStockSignfoStatus ( ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( ! recoveryInventoryPackageList . isEmpty ( ) ) {
Map < Long , List < DisStockListDetailEntity > > recoveryInventoryPackageGroupByMap = recoveryInventoryPackageList . stream ( ) . collect ( Collectors . groupingBy ( DisStockListDetailEntity : : getStockListId ) ) ;
recoveryInventoryPackageGroupByMap . forEach ( ( k , v ) - > {
//进行指定库存品的冻结数量进行释放
DistributionStockListEntity stockListEntity = distributionStockListService . getById ( k ) ;
if ( Objects . isNull ( stockListEntity ) ) {
log . error ( "查询库存品信息错误>>>>>>>>>>>>>>>>>updateStock,id:{}" , k ) ;
throw new CustomerException ( "查询库存品信息错误" ) ;
}
//维护库存品的冻结数量
distributionStockListMapper . decreaseStockListQuantityOccupied ( k , v . stream ( ) . mapToInt ( DisStockListDetailEntity : : getNum ) . sum ( ) ) ;
cancelList . addAll ( v ) ;
} ) ;
}
if ( ! cancelList . isEmpty ( ) ) {
cancelList . stream ( ) . forEach ( c - > c . setStockPackageStatus ( InventoryPackageStatusConstant . quxiao . getValue ( ) ) ) ;
List < DisStockListDetailEntity > packageList = cancelList . stream ( ) . filter ( p - > InventoryStockTypeStatusConstant . caiji . getValue ( ) . equals ( p . getStockType ( ) ) & & InventoryStockUpStatusConstant . yibeihuo . getValue ( ) . equals ( p . getStockStatus ( ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( ! packageList . isEmpty ( ) ) {
//TODO这是包件转的库存品进行包件的
//对此包件进行取消备货标识,增加此包件的日志记录
}
disStockListDetailService . updateBatchById ( cancelList ) ;
}
//维护此自提下的所有库存品信息
distributionDeliveryDetailsService . maintainInvnetory ( Long . parseLong ( billId ) ) ;
}
@ -4176,7 +4407,6 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
* /
@Transactional ( rollbackFor = Exception . class )
public Integer updatePack ( Long ids , Long billId ) {
List < DistrilbutionBillPackageEntity > list = distrilbutionBillPackageService . list ( Wrappers . < DistrilbutionBillPackageEntity > query ( ) . lambda ( )
. eq ( DistrilbutionBillPackageEntity : : getBillLadingId , billId )
. eq ( DistrilbutionBillPackageEntity : : getStockArticleId , ids )
@ -4193,7 +4423,6 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
DistrilbutionBillPackageEntity next = iterator . next ( ) ;
if ( ObjectUtils . isNotNull ( next . getParceListId ( ) ) ) {
boolean b = list1 . stream ( ) . anyMatch ( q - > {
if ( ObjectUtils . isNotNull ( q . getParcelListId ( ) ) ) {
return q . getParcelListId ( ) . equals ( next . getParceListId ( ) ) ;
}
@ -4203,10 +4432,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
//删除包件
iterator . remove ( ) ;
}
}
}
//回退包件信息
list . forEach ( i - > {
@ -4255,7 +4481,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
}
@Transactional ( rollbackFor = Exception . class )
public void saveDistrilbutionBillLading ( DistrilbutionBillLadingDTO distrilbutionBillLading , BasicdataWarehouseEntity warehouse ) {
public void saveDistrilbutionBillLading ( DistrilbutionBillLadingDTO distrilbutionBillLading , BasicdataWarehouseEntity warehouse ) {
//判断是不是零担
List < DistributionParcelListDTO > list = new ArrayList < > ( ) ;
boolean isZeroType = false ;