@ -42,9 +42,11 @@ import com.logpm.warehouse.feign.IWarehouseGoodsAllocationClient;
import com.logpm.warehouse.feign.IWarehouseWaybillClient ;
import lombok.extern.slf4j.Slf4j ;
import org.apache.ibatis.javassist.runtime.Inner ;
import org.apache.logging.log4j.util.Strings ;
import org.springblade.common.constant.DictBizConstant ;
import org.springblade.common.constant.DistributionTypeConstant ;
import org.springblade.common.constant.Inventory.* ;
import org.springblade.common.constant.ModuleNameConstant ;
import org.springblade.common.constant.common.IsOrNoConstant ;
import org.springblade.common.constant.delivery.DeliveryLoadingStatusConstant ;
import org.springblade.common.constant.delivery.DeliveryStatusConstant ;
@ -1125,6 +1127,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
if ( Func . isEmpty ( myCurrentWarehouse ) ) {
return R . fail ( "无仓库信息!!!" ) ;
}
BladeUser user = AuthUtil . getUser ( ) ;
String reservationIds = allocationDTO . getReservationIds ( ) ;
//创建备货任务
DistributionStockupDTO stockup = allocationDTO . getStockup ( ) ;
@ -1179,6 +1183,12 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
StringBuilder driverNames = new StringBuilder ( ) ;
//查询根据预约ID查询这些预约的备货状态
List < DistributionReservationEntity > reservationEntityList = baseMapper . selectList ( Wrappers . < DistributionReservationEntity > query ( ) . lambda ( ) . in ( DistributionReservationEntity : : getId , ids ) ) ;
//判断是否存在预约进行了配送任务的提交
boolean match = reservationEntityList . stream ( ) . anyMatch ( r - > ReservationStatusConstant . daipeisong . getValue ( ) . equals ( r . getReservationStatus ( ) ) ) ;
if ( match ) {
String collect = reservationEntityList . stream ( ) . filter ( r - > ReservationStatusConstant . daipeisong . getValue ( ) . equals ( r . getReservationStatus ( ) ) ) . map ( DistributionReservationEntity : : getReservationCode ) . collect ( Collectors . joining ( "," ) ) ;
return R . fail ( collect + "已进行配送 请移除" ) ;
}
boolean flag = reservationEntityList . stream ( ) . anyMatch ( s - > s . getStockupStatus ( ) . equals ( ReservationStockupStatusConstant . weibeihuo . getValue ( ) ) ) ;
DistributionStockupEntity stockupEntity = null ;
if ( flag ) {
@ -1208,7 +1218,6 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
// }
// distributionStockupEntity.setStockupUser(user.getUserName());
// distributionStockupEntity.setStockupUserId(user.getUserId());
BladeUser user = AuthUtil . getUser ( ) ;
stockupEntity . setTypeService ( DistributionTypeConstant . shipie . getValue ( ) ) ;
//编码生成规则 BH+仓库编码+年月日+序号00001
stockupEntity . setStockupCode ( bianMa ( ) ) ;
@ -1219,8 +1228,16 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
distributionStockupService . save ( stockupEntity ) ;
}
HashSet < String > warehouseNames = new HashSet < > ( ) ;
StringBuilder builder = new StringBuilder ( ) ;
for ( int i = 0 ; i < ids . size ( ) ; i + + ) {
DistributionReservationEntity reservationEntity = this . getById ( ids . get ( i ) ) ;
String s = bladeRedis . get ( user . getTenantId ( ) + ":" + ModuleNameConstant . APPLICATION_DISTRIBUTION_NAME + ":reservationLock" + reservationEntity . getReservationCode ( ) ) ;
if ( Strings . isBlank ( s ) ) {
bladeRedis . setEx ( user . getTenantId ( ) + ":" + ModuleNameConstant . APPLICATION_DISTRIBUTION_NAME + ":reservationLock" + reservationEntity . getReservationCode ( ) , reservationEntity . getReservationCode ( ) , 60L * 60L ) ;
} else {
builder . append ( reservationEntity . getReservationCode ( ) + "," ) ;
continue ;
}
if ( Func . equals ( reservationEntity . getStockupStatus ( ) , ReservationStockupStatusConstant . weibeihuo . getValue ( ) ) ) {
//如果预约已经备货
DistributionStockupInfoEntity stockupInfoEntity = new DistributionStockupInfoEntity ( ) ;
@ -1319,6 +1336,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
} ) ;
}
}
if ( Func . isNotEmpty ( builder ) ) {
throw new RuntimeException ( builder . toString ( ) + "该预约单已进行配送请核对" ) ;
}
Long deliveryListId = distributionDeliveryListEntity . getId ( ) ;
//操作司机信息
DistributionDeliveryTripartiteDTO tripartite = allocationDTO . getTripartite ( ) ;
@ -1612,7 +1632,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
warehouseNames . add ( stockArticleEntity . getWarehouse ( ) ) ;
mallName . add ( stockArticleEntity . getMallName ( ) ) ;
mallId . add ( stockArticleEntity . getMallId ( ) ) ;
storeName . add ( stockArticleEntity . getStoreName ( ) ) ;
if ( Func . isNotEmpty ( stockArticleEntity . getStoreName ( ) ) ) {
storeName . add ( stockArticleEntity . getStoreName ( ) ) ;
}
receivingUnit . add ( distributionStockArticleDTO . getConsigneeUnit ( ) ) ;
// Integer integer = distributionStockArticleMapper.augmentDeliveryQuantity(reservationStockarticleEntity.getStockArticleId(), reservationStockarticleEntity.getReservationNum());
//维护订单信息
@ -1751,13 +1773,14 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
warehouseNames . add ( distributionStockArticleDTO . getWarehouse ( ) ) ;
mallName . add ( distributionStockArticleDTO . getMallName ( ) ) ;
mallId . add ( distributionStockArticleDTO . getMallId ( ) ) ;
storeName . add ( distributionStockArticleDTO . getStoreName ( ) ) ;
if ( Func . isNotEmpty ( distributionStockArticleDTO . getStoreName ( ) ) ) {
storeName . add ( distributionStockArticleDTO . getStoreName ( ) ) ;
}
receivingUnit . add ( distributionStockArticleDTO . getConsigneeUnit ( ) ) ;
// DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(distributionStockArticleDTO.getId());
// stockArticleEntity.setReservationStatus(status);
// distributionStockArticleService.updateById(stockArticleEntity);
}
} ) ;
@ -3068,6 +3091,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
s . setAllocation ( null ) ;
}
DistributionStockArticleDTO stockArticleDTO = Func . copy ( s , DistributionStockArticleDTO . class ) ;
DistributionReservationStockarticleEntity distributionReservationStockarticleEntity = new DistributionReservationStockarticleEntity ( ) ;
if ( s . getIsZero ( ) . equals ( "0" ) ) {
WarehouseWaybillEntity wayBillEntity = warehouseWaybillClient . findByWaybillNo ( s . getWaybillNumber ( ) ) ;
@ -3079,10 +3103,6 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
}
}
// storeName.add(s.getStoreName());
// mallName.add(s.getMallName());
// warehouseNames.add(s.getWarehouse());
// orderNumber.add(s.getOrderCode());
if ( Func . isNotBlank ( s . getServiceNumber ( ) ) ) {
serviceNumber . add ( s . getServiceNumber ( ) ) ;
}
@ -3108,8 +3128,6 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
waybillNo . add ( s . getWaybillNumber ( ) ) ;
}
// DistributionStockArticleEntity stockArticleEntity = Func.copy(s, DistributionStockArticleEntity.class);
DistributionReservationStockarticleEntity distributionReservationStockarticleEntity = new DistributionReservationStockarticleEntity ( ) ;
//预约订单数量
AtomicInteger packageNum = new AtomicInteger ( ) ;
List < DistributionParcelListDTO > packageList = s . getPackageListInfo ( ) ;
@ -3140,19 +3158,19 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
// p.setOrderPackageReservationStatus();
dp . setOrderPackageReservationStatus ( OrderPackageReservationStatusConstant . yiyueyue . getValue ( ) ) ;
distributionParcelListService . updateById ( dp ) ;
distributionAsyncService . checkStockArticleReservationStatus ( dp ) ;
// distributionAsyncService.checkStockArticleReservationStatus(dp);
}
}
// stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
} ) ;
s . setReservationStatus ( OrderReservationStatusConstant . yiyueyue . getValue ( ) ) ;
s . setAvailableQuantity ( 0 ) ;
if ( Func . isNotEmpty ( s . getAllocation ( ) ) ) {
s . setAllocation ( null ) ;
}
distributionStockArticleService . updateById ( s ) ;
// s.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
// s.setAvailableQuantity(0);
// if (Func.isNotEmpty(s.getAllocation())) {
// s.setAllocation(null);
// }
// distributionStockArticleService.updateById(s);
} else {
//维护选中的包件信息
@ -3169,7 +3187,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
p . setOrderPackageReservationStatus ( OrderPackageReservationStatusConstant . yiyueyue . getValue ( ) ) ;
// p.setBrandId(p.getBrandId());
distributionParcelListService . updateById ( p ) ;
distributionAsyncService . checkStockArticleReservationStatus ( p ) ;
// distributionAsyncService.checkStockArticleReservationStatus(p);
}
}
@ -3188,20 +3206,11 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
// }
}
distributionReservationStockarticleEntity . setReservationNum ( packageNum . get ( ) ) ;
Long stockArticleId = s . getId ( ) ;
distributionReservationStockarticleEntity . setReservationId ( reservationId ) ;
distributionReservationStockarticleEntity . setIsZero ( s . getIsZero ( ) ) ;
distributionReservationStockarticleEntity . setStockArticleId ( stockArticleId ) ;
distributionReservationStockarticleEntity . setStockArticleCode ( s . getStockArticleCode ( ) ) ;
distributionReservationStockarticleEntity . setIsHaveData ( s . getIsHaveData ( ) ) ;
distributionReservationStockarticleService . save ( distributionReservationStockarticleEntity ) ;
packageTotal . getAndAdd ( distributionReservationStockarticleEntity . getReservationNum ( ) ) ;
//维护对应订单的配送件数
// Integer i = distributionStockArticleMapper.augmentDeliveryQuantity(distributionReservationStockarticleEntity.getStockArticleId(),distributionReservationStockarticleEntity.getReservationNum());
distributionStockArticleService . maintenanceOrderInfo ( s . getOrderCode ( ) , myCurrentWarehouse . getId ( ) ) ;
// distributionStockArticleService.maintenanceOrderInfo(s.getOrderCode(),myCurrentWarehouse.getId());
} else if ( s . getIsZero ( ) . equals ( "1" ) ) {
//零担订单处理
DistributionReservationStockarticleEntity distributionReservationStockarticleEntity = new DistributionReservationStockarticleEntity ( ) ;
if ( Func . isNotBlank ( s . getServiceNumber ( ) ) ) {
serviceNumber . add ( s . getServiceNumber ( ) ) ;
}
@ -3247,7 +3256,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
DistributionParcelNumberEntity parcelNumberEntity = distributionParcelNumberService . getById ( p . getId ( ) ) ;
parcelNumberEntity . setDeliveryQuantity ( parcelNumberEntity . getDeliveryQuantity ( ) + distributionReservationZeroPackageEntity . getQuantity ( ) ) ;
distributionParcelNumberService . updateById ( parcelNumberEntity ) ;
distributionAsyncService . checkZeroStockArticleReservationStatus ( parcelNumberEntity ) ;
// distributionAsyncService.checkZeroStockArticleReservationStatus(parcelNumberEntity);
}
} ) ;
} else {
@ -3273,21 +3282,35 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
DistributionParcelNumberEntity parcelNumberEntity = distributionParcelNumberService . getById ( l . getId ( ) ) ;
parcelNumberEntity . setDeliveryQuantity ( parcelNumberEntity . getDeliveryQuantity ( ) + distributionReservationZeroPackageEntity . getQuantity ( ) ) ;
distributionParcelNumberService . updateById ( parcelNumberEntity ) ;
distributionAsyncService . checkZeroStockArticleReservationStatus ( parcelNumberEntity ) ;
// distributionAsyncService.checkZeroStockArticleReservationStatus(parcelNumberEntity);
}
} ) ;
}
distributionReservationStockarticleEntity . setIsZero ( IsOrNoConstant . yes . getValue ( ) ) ;
distributionReservationStockarticleEntity . setReservationId ( reservationId ) ;
distributionReservationStockarticleEntity . setStockArticleId ( s . getId ( ) ) ;
distributionReservationStockarticleEntity . setStockArticleStatus ( ReservationOrderStatusConstant . zhengchang . getValue ( ) ) ;
distributionReservationStockarticleEntity . setStockArticleCode ( s . getOrderCode ( ) ) ;
distributionReservationStockarticleEntity . setIsHaveData ( s . getIsHaveData ( ) ) ;
// distributionReservationStockarticleEntity.setIsZero(IsOrNoConstant.yes.getValue());
// distributionReservationStockarticleEntity.setReservationId(reservationId);
// distributionReservationStockarticleEntity.setStockArticleId(s.getId());
// distributionReservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.zhengchang.getValue());
// distributionReservationStockarticleEntity.setStockArticleCode(s.getOrderCode());
// distributionReservationStockarticleEntity.setIsHaveData(s.getIsHaveData());
distributionReservationStockarticleEntity . setReservationNum ( zeroPackageNum . get ( ) ) ;
distributionReservationStockarticleService . save ( distributionReservationStockarticleEntity ) ;
packageTotal . getAndAdd ( distributionReservationStockarticleEntity . getReservationNum ( ) ) ;
// distributionReservationStockarticleService.save(distributionReservationStockarticleEntity);
// packageTotal.getAndAdd(distributionReservationStockarticleEntity.getReservationNum());
}
distributionAsyncService . changeOrderReservationStatus ( stockArticleDTO ) ;
Long stockArticleId = s . getId ( ) ;
distributionReservationStockarticleEntity . setReservationId ( reservationId ) ;
distributionReservationStockarticleEntity . setIsZero ( s . getIsZero ( ) ) ;
distributionReservationStockarticleEntity . setStockArticleId ( s . getId ( ) ) ;
distributionReservationStockarticleEntity . setStockArticleCode ( s . getOrderCode ( ) ) ;
distributionReservationStockarticleEntity . setStockArticleStatus ( ReservationOrderStatusConstant . zhengchang . getValue ( ) ) ;
distributionReservationStockarticleEntity . setIsHaveData ( s . getIsHaveData ( ) ) ;
distributionReservationStockarticleService . save ( distributionReservationStockarticleEntity ) ;
packageTotal . getAndAdd ( distributionReservationStockarticleEntity . getReservationNum ( ) ) ;
// distributionAsyncService.changeOrderReservationStatus(stockArticleDTO);
distributionStockArticleService . maintenanceOrderInfo ( s . getOrderCode ( ) , s . getWarehouseId ( ) ) ;
// WarehouseWaybillEntity byWaybillNo = warehouseWaybillClient.findByWaybillNo();
// String consigneeMobile = byWaybillNo.getConsigneeMobile();
} ) ;
@ -3618,13 +3641,14 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
if ( Func . isEmpty ( myCurrentWarehouse ) ) {
return R . fail ( 403 , "未授权!!!" ) ;
}
if ( Func . isEmpty ( distributionCancelReservationPackageDTO . getPackageIds ( ) ) ) {
log . error ( method + "packageId参数缺失" ) ;
return R . fail ( "请联系管理员...." ) ;
}
List < Long > list = Func . toLongList ( distributionCancelReservationPackageDTO . getPackageIds ( ) ) ;
switch ( distributionCancelReservationPackageDTO . getType ( ) ) {
case 1 :
//取消包件
if ( Func . isEmpty ( distributionCancelReservationPackageDTO . getPackageIds ( ) ) ) {
log . error ( method + "packageId参数缺失" ) ;
return R . fail ( "请联系管理员...." ) ;
}
String [ ] split = distributionCancelReservationPackageDTO . getPackageIds ( ) . split ( "," ) ;
List < DistributionParcelListEntity > distributionParcelListEntities = distributionReservationMapper . selectPackageListByReservationId ( distributionCancelReservationPackageDTO . getReservationId ( ) ) ;
String orderCodes = distributionParcelListEntities . stream ( ) . map ( DistributionParcelListEntity : : getOrderCode ) . distinct ( ) . collect ( Collectors . joining ( "," ) ) ;
@ -3660,16 +3684,35 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
}
}
distributionStockArticleService . maintenanceOrderInfo ( orderCodes , myCurrentWarehouse . getId ( ) ) ;
//维护预约单状态
this . maintenanceReservationInfo ( distributionCancelReservationPackageDTO . getReservationId ( ) ) ;
//维护预约单数量
this . maintenanceReservationNum ( distributionCancelReservationPackageDTO . getReservationId ( ) ) ;
//维护配送任务状态
distributionDeliveryListService . maintenanceDeliveryInfo ( distributionCancelReservationPackageDTO . getDeliveryId ( ) ) ;
//维护配送任务数量
distributionDeliveryListService . maintenanceDeliveryNum ( distributionCancelReservationPackageDTO . getDeliveryId ( ) ) ;
break ;
case 2 :
//查询库存品包件
List < DisStockListDetailEntity > inventoryPackageList = disStockListDetailService . list ( Wrappers . < DisStockListDetailEntity > query ( ) . lambda ( )
. eq ( DisStockListDetailEntity : : getReservationId , distributionCancelReservationPackageDTO . getReservationId ( ) )
. in ( DisStockListDetailEntity : : getId , list )
. ne ( DisStockListDetailEntity : : getStockPackageStatus , ReservationPackageStatusConstant . quxiao . getValue ( ) )
) ;
//取消库存品包件
for ( DisStockListDetailEntity disStockListDetailEntity : inventoryPackageList ) {
disStockListDetailEntity . setStockPackageStatus ( ReservationPackageStatusConstant . quxiao . getValue ( ) ) ;
disStockListDetailService . updateById ( disStockListDetailEntity ) ;
//扣减库存品计划取消数量
log . info ( "##############扣减库存品计划数量:{}" , disStockListDetailEntity ) ;
int a = distributionReservationStocklistMapper . deductionStockListReservationNum ( disStockListDetailEntity . getReservationId ( ) , disStockListDetailEntity . getStockListId ( ) , disStockListDetailEntity . getNum ( ) ) ;
}
//维护对应库存品信息
distributionReservationStocklistService . maintenanceReservationStockList ( distributionCancelReservationPackageDTO . getReservationId ( ) ) ;
break ;
}
//维护预约单状态
this . maintenanceReservationInfo ( distributionCancelReservationPackageDTO . getReservationId ( ) ) ;
//维护预约单数量
this . maintenanceReservationNum ( distributionCancelReservationPackageDTO . getReservationId ( ) ) ;
//维护配送任务状态
distributionDeliveryListService . maintenanceDeliveryInfo ( distributionCancelReservationPackageDTO . getDeliveryId ( ) ) ;
//维护配送任务数量
distributionDeliveryListService . maintenanceDeliveryNum ( distributionCancelReservationPackageDTO . getDeliveryId ( ) ) ;
return R . status ( true ) ;
}