@ -48,11 +48,14 @@ import lombok.extern.log4j.Log4j2;
import org.springblade.common.constant.DictBizConstant ;
import org.springblade.common.constant.Inventory.InventoryStockUpStatusConstant ;
import org.springblade.common.constant.billLading.BillLadingStatusConstant ;
import org.springblade.common.constant.common.IsOrNoConstant ;
import org.springblade.common.constant.order.OrderReservationStatusConstant ;
import org.springblade.common.constant.order.OrderStatusConstant ;
import org.springblade.common.constant.orderpackage.OrderPackageLoadingStatusConstant ;
import org.springblade.common.constant.orderpackage.OrderPackageReservationStatusConstant ;
import org.springblade.common.constant.orderpackage.OrderPackageStatusConstant ;
import org.springblade.common.constant.pda.PdaAudioLingoStatus ;
import org.springblade.common.constant.reservation.ReservationOrderStatusConstant ;
import org.springblade.common.constant.reservation.ReservationPackageStatusConstant ;
import org.springblade.common.constant.stockup.StockAssignStatusConstant ;
import org.springblade.common.constant.stockup.StockupStatusConstant ;
@ -68,6 +71,8 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil ;
import org.springblade.system.cache.DictBizCache ;
import org.springframework.beans.BeanUtils ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.context.annotation.Lazy ;
import org.springframework.stereotype.Service ;
import org.springframework.transaction.annotation.Transactional ;
@ -87,46 +92,58 @@ import java.util.stream.Collectors;
* @since 2023 - 06 - 14
* /
@Service
@AllArgsConstructor
@Log4j2
public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl < DistrilbutionBillLadingMapper , DistrilbutionBillLadingEntity > implements IDistrilbutionBillLadingService {
private final IDistributionDeliveryChargeService distributionDeliveryChargeService ;
private final IDistributionDeliveryDetailsService distributionDeliveryDetailsService ;
private final IDistributionReservationService distributionReservationService ;
private final IDistributionPrintService distributionPrintService ;
private final IDistributionStockArticleService distributionStockArticleService ;
private final IDistributionParcelListService distributionParcelListService ;
private final IDistributionBillLadingScanService distributionBillLadingScanService ;
private final IDistrilbutionBillStockService distrilbutionBillStockService ;
private final IDistributionStockupScanService distributionStockupScanService ;
private final IDistributionStockListService distributionStockListService ;
private final DistributionStockListMapper distributionStockListMapper ;
private final IDistributionAsyncService distributionAsyncService ;
private final IDistributionStockService distributionStockService ;
private final IDistributionStockupService distributionStockupService ;
private final IDistributionStockupInfoService distributionStockupInfoService ;
private final IBasicdataWarehouseClient basicdataWarehouseClient ;
private final IDistributionReservationZeroPackageService distributionZeroPackageService ; //零担配送记录
private final IDistributionParcelNumberService distributionParcelNumberService ; //零担配送数量记录
private final IDistrilbutionBillPackageService distrilbutionBillPackageService ;
private final IBasicdataWarehouseClient warehouseClient ;
private final IWarehouseUpdownTypeClient warehouseUpdownTypeClient ;
private final IDisStockListDetailService disStockListDetailService ;
private final BladeRedis redis ;
@Autowired
private IDistributionDeliveryChargeService distributionDeliveryChargeService ;
@Autowired
private IDistributionDeliveryDetailsService distributionDeliveryDetailsService ;
@Autowired
private IDistributionReservationService distributionReservationService ;
@Autowired
private IDistributionPrintService distributionPrintService ;
@Autowired
private IDistributionStockArticleService distributionStockArticleService ;
@Autowired
private IDistributionParcelListService distributionParcelListService ;
@Autowired
private IDistributionBillLadingScanService distributionBillLadingScanService ;
@Autowired
private IDistrilbutionBillStockService distrilbutionBillStockService ;
@Autowired
private IDistributionStockupScanService distributionStockupScanService ;
@Autowired
private IDistributionStockListService distributionStockListService ;
@Autowired
private DistributionStockListMapper distributionStockListMapper ;
@Autowired
private IDistributionAsyncService distributionAsyncService ;
@Autowired
private IDistributionStockService distributionStockService ;
@Autowired
@Lazy
private IDistributionStockupService distributionStockupService ;
@Autowired
private IDistributionStockupInfoService distributionStockupInfoService ;
@Autowired
private IBasicdataWarehouseClient basicdataWarehouseClient ;
@Autowired
private IDistributionReservationZeroPackageService distributionZeroPackageService ; //零担配送记录
@Autowired
private IDistributionParcelNumberService distributionParcelNumberService ; //零担配送数量记录
@Autowired
private IDistrilbutionBillPackageService distrilbutionBillPackageService ;
@Autowired
private IBasicdataWarehouseClient warehouseClient ;
@Autowired
private IWarehouseUpdownTypeClient warehouseUpdownTypeClient ;
@Autowired
private IDisStockListDetailService disStockListDetailService ;
@Autowired
private BladeRedis redis ;
@Override
@ -208,13 +225,13 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
private void updateStockBill ( DistrilbutionBillLadingDTO distrilbutionBillLading ) {
List < DistributionDeliveryDetailsEntity > list = distributionDeliveryDetailsService . list ( Wrappers . < DistributionDeliveryDetailsEntity > query ( ) . lambda ( )
. eq ( DistributionDeliveryDetailsEntity : : getBillLadingId , distrilbutionBillLading . getId ( ) )
. apply ( "inventory_status in ( 1 , 2 )" )
. apply ( "inventory_status in ( 1 , 3 )" )
) ;
List < DistributionStockListEntity > stockEntityList = new ArrayList < > ( ) ;
List < Long > dd = new ArrayList < > ( ) ;
if ( ! list . isEmpty ( ) ) {
list . forEach ( i - > {
if ( "2" . equals ( i . getConditions ( ) ) ) {
if ( "20 " . equals ( i . getConditions ( ) ) ) {
throw new ServiceException ( "包含已提货的库存品,无法取消!!!" ) ;
}
if ( "1" . equals ( i . getStockStatus ( ) ) ) {
@ -232,7 +249,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
//取消预约记录
LambdaUpdateWrapper < DistributionDeliveryDetailsEntity > updateWrapper = new LambdaUpdateWrapper < > ( ) ;
updateWrapper . in ( DistributionDeliveryDetailsEntity : : getId , dd ) ;
updateWrapper . set ( DistributionDeliveryDetailsEntity : : getInventoryStatus , "3 " ) ;
updateWrapper . set ( DistributionDeliveryDetailsEntity : : getInventoryStatus , "2 " ) ;
distributionDeliveryDetailsService . update ( updateWrapper ) ;
}
//修改库存品数据
@ -319,11 +336,25 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
}
//修改订单数据
if ( ! distrilbutionBillLading . getStockArticleList ( ) . isEmpty ( ) ) {
boolean order = getOrder ( distrilbutionBillLading . getStockArticleList ( ) , distrilbutionBillLading . getId ( ) ) ;
if ( ! order ) {
throw new ServiceException ( "修改失败!!" ) ;
// boolean order = getOrder(distrilbutionBillLading.getStockArticleList(), distrilbutionBillLading.getId());
// if (!order) {
// throw new ServiceException("修改失败!!");
// }
List < DistributionStockArticleEntity > stockArticleList = distrilbutionBillLading . getStockArticleList ( ) ;
if ( Func . isNotEmpty ( stockArticleList ) ) {
String orderCodes = stockArticleList . stream ( ) . map ( DistributionStockArticleEntity : : getOrderCode ) . collect ( Collectors . joining ( "," ) ) ;
List < Long > collect = stockArticleList . stream ( ) . map ( DistributionStockArticleEntity : : getWarehouseId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
if ( ! collect . isEmpty ( ) & & collect . size ( ) = = 1 ) {
distributionStockArticleService . maintenanceOrderInfo ( orderCodes , collect . get ( 0 ) ) ;
} else {
throw new ServiceException ( "修改失败!!" ) ;
}
}
}
/ * else {
updateOrder ( distrilbutionBillLading ) ;
}
@ -346,6 +377,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
//修改
listDetails . forEach ( i - > {
boolean b = distrilbutionBillLading . getStockDTOList ( ) . stream ( ) . anyMatch ( a - > i . getStockListId ( ) . equals ( a . getId ( ) ) ) ;
//查询是否存签收扫描数量
List < DistributionStockEntity > list1 = distributionStockService . list ( Wrappers . < DistributionStockEntity > query ( ) . lambda ( )
. eq ( DistributionStockEntity : : getBillLadingId , distrilbutionBillLading . getId ( ) )
. eq ( DistributionStockEntity : : getStockListId , i . getStockListId ( ) )
@ -353,6 +385,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
) ;
if ( b ) {
//有
Iterator < DistributionStockListDTO > iterator = distrilbutionBillLading . getStockDTOList ( ) . iterator ( ) ;
@ -372,7 +405,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
//修改库存占用数量
distributionAsyncService . getInventoryNumUpdate ( i . getStockListId ( ) , num , 1 ) ;
//kk备货
if ( i . getConditions ( ) . equals ( "2" ) ) {
if ( i . getConditions ( ) . equals ( "20 " ) ) {
//xiugai
DistributionDeliveryDetailsEntity d = new DistributionDeliveryDetailsEntity ( ) ;
d . setId ( i . getId ( ) ) ;
@ -387,7 +420,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
//有备货
} * /
if ( i . getConditions ( ) . equals ( "2" ) ) {
if ( i . getConditions ( ) . equals ( "20 " ) ) {
//todo 已完成
} else {
@ -426,7 +459,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
ids . forEach ( a - > {
DistributionDeliveryDetailsEntity deliveryDetails = new DistributionDeliveryDetailsEntity ( ) ;
deliveryDetails . setId ( a ) ;
deliveryDetails . setInventoryStatus ( "3 " ) ;
deliveryDetails . setInventoryStatus ( "2 " ) ;
distributionDeliveryDetailsService . updateById ( deliveryDetails ) ;
} ) ;
}
@ -434,6 +467,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
} else {
updateStockBill ( distrilbutionBillLading ) ;
}
} else {
//设置lockey
String lockKey = "lock:" + distrilbutionBillLading . getStockArticleId ( ) ;
@ -479,105 +513,312 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
throw new ServiceException ( "请选择仓库在操作!!!" ) ;
}
distrilbutionBillLading . setWarehouseId ( myCurrentWarehouse . getId ( ) ) ;
List < DistributionParcelListDTO > parcelLisList = distrilbutionBillLading . getParcelLisList ( ) ;
// List<DistributionParcelListDTO> parcelLisList = distrilbutionBillLading.getParcelLisList();
Map < Long , List < DistributionParcelListEntity > > packageMap = null ;
if ( Func . isNotEmpty ( distrilbutionBillLading . getBillPackageEntityList ( ) ) ) {
List < DistrilbutionBillPackageEntity > packageEntityList = distrilbutionBillLading . getBillPackageEntityList ( ) ;
List < Long > packageisd = packageEntityList . stream ( ) . map ( DistrilbutionBillPackageEntity : : getParceListId ) . collect ( Collectors . toList ( ) ) ;
List < DistributionParcelListEntity > distributionParcelListEntities = distributionParcelListService . listByIds ( packageisd ) ;
if ( Func . isNotEmpty ( distributionParcelListEntities ) ) {
packageMap = distributionParcelListEntities . stream ( ) . collect ( Collectors . groupingBy ( DistributionParcelListEntity : : getStockArticleId ) ) ;
}
}
Map < Long , List < DistributionParcelListDTO > > zeroPackageMap = null ;
if ( Func . isNotEmpty ( distrilbutionBillLading . getParcelLisList ( ) ) ) {
List < DistributionParcelListDTO > zeroPackageList = distrilbutionBillLading . getParcelLisList ( ) ;
zeroPackageMap = zeroPackageList . stream ( ) . collect ( Collectors . groupingBy ( DistributionParcelListDTO : : getStockArticleId ) ) ;
}
this . saveDistrilbutionBillLading ( distrilbutionBillLading ) ;
//修改订单状态
// if (StringUtils.isNotBlank(distrilbutionBillLading.getStockArticleId())) {
// String[] split = distrilbutionBillLading.getStockArticleId().split(",");
//// for (String s : split) {
//// //查询订单信息
//// DistributionStockArticleEntity byId = distributionStockArticleService.getById(s);
//// //查询是否创建过
//// DistributionStockArticleEntity distributionStockArticle = new DistributionStockArticleEntity();
//// //添加订单和提货单关联
//// DistrilbutionBillStockEntity distrilbutionBillStock = new DistrilbutionBillStockVO();
//// distrilbutionBillStock.setBillLadingId(distrilbutionBillLading.getId());
//// distrilbutionBillStock.setStockArticleId(Long.parseLong(s));
//// distrilbutionBillStock.setConditions(BillLadingStatusConstant.daitihuo.getValue());
//// distrilbutionBillStock.setOrderStatus("1");
//// distrilbutionBillStockService.save(distrilbutionBillStock);
//// List<DistrilbutionBillPackageEntity> packageEntityList = new ArrayList<>();
//// if (ObjectUtils.isNotNull(distrilbutionBillLading.getBillPackageEntityList())) {
//// //添加自提包件信息
////// List<DistrilbutionBillPackageEntity> collect = new ArrayList<>();
//// List<DistrilbutionBillPackageEntity> collect = distrilbutionBillLading.getBillPackageEntityList().stream().filter(qqq -> qqq.getStockArticleId().toString().equals(s)).collect(Collectors.toList());
//// if (!collect.isEmpty()) {
//// //有包件
//// collect.stream().forEach(ss -> {
//// DistrilbutionBillPackageEntity billPackageEntity = new DistrilbutionBillPackageEntity();
//// billPackageEntity.setBillLadingId(distrilbutionBillLading.getId());
//// billPackageEntity.setPacketBarCode(ss.getPacketBarCode());
//// billPackageEntity.setPacketBarStatus(1);
//// billPackageEntity.setParceListId(ss.getParceListId());
//// billPackageEntity.setStockArticleId(ss.getStockArticleId());
//// billPackageEntity.setPacketNumber(1);
//// billPackageEntity.setBillType(byId.getIsZero().equals("1") ? "2" : "1");
//// packageEntityList.add(billPackageEntity);
//// });
////
//// List<Long> collect1 = collect.stream().map(DistrilbutionBillPackageEntity::getParceListId).collect(Collectors.toList());
//// distributionAsyncService.updateParcelListReservation(collect1);
////
////// //判断是否全部修改
////// int i = byId.getHandQuantity() - collect.size();
////// if (i > 0) {
////// //部分
////// distributionStockArticle.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
////// }
//// } else {
//// //没有包件 查询包件信息
//// List<DistrilbutionBillPackageEntity> packageEntityList1 = billPackInfo(s, distrilbutionBillLading.getId(), parcelLisList, byId);
//// if (packageEntityList1.isEmpty()) {
//// throw new ServiceException(byId.getOrderCode() + "没有可用包件信息!");
//// }
//// packageEntityList.addAll(packageEntityList1);
////
////// distributionStockArticle.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
//// }
//// } else {
//// //没有包件 查询包件信息
//// List<DistrilbutionBillPackageEntity> packageEntityList1 = billPackInfo(s, distrilbutionBillLading.getId(), parcelLisList, byId);
//// if (packageEntityList1.isEmpty()) {
//// throw new ServiceException(byId.getOrderCode() + "没有可用包件信息!");
//// }
//// packageEntityList.addAll(packageEntityList1);
////
////// distributionStockArticle.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
//// }
////
////// int i1 = byId.getHandQuantity() + byId.getSigninQuantity(); //总数
//// if (byId.getCompleteSet() == 2) {
//// //全部
//// distributionStockArticle.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
////
//// } else {
//// //部分
//// distributionStockArticle.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
//// }
////
//// //判断是否改为已预约
//// List<DistributionParcelNumberEntity> parcelNumberList = distributionParcelNumberService.list(Wrappers.<DistributionParcelNumberEntity>query().lambda()
//// .eq(DistributionParcelNumberEntity::getStockArticleId, s)
//// );
//// if (!parcelNumberList.isEmpty()) {
//// //零担
//// int handQuantity = parcelNumberList.stream().mapToInt(DistributionParcelNumberEntity::getHandQuantity).sum(); //在库总数量
//// int sum = parcelNumberList.stream().mapToInt(DistributionParcelNumberEntity::getDeliveryQuantity).sum(); //配送数量
//// int i = handQuantity - sum;
//// if (i > 0) {
//// //部分
//// distributionStockArticle.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
//// } else if (i == 0) {
//// //全部
//// distributionStockArticle.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
//// }
//// }
//// distrilbutionBillPackageService.saveBatch(packageEntityList);
////// distributionStockArticle.setId(Long.parseLong(s));
////// distributionStockArticleService.updateById(distributionStockArticle);
//// distributionStockArticleService.maintenanceOrderInfo(distributionStockArticle.getOrderCode(),myCurrentWarehouse.getId());
//// }
// }
List < DistrilbutionBillPackageEntity > packageEntityList = new ArrayList < > ( ) ;
if ( StringUtils . isNotBlank ( distrilbutionBillLading . getStockArticleId ( ) ) ) {
String [ ] split = distrilbutionBillLading . getStockArticleId ( ) . split ( "," ) ;
for ( String s : split ) {
//查询订单信息
DistributionStockArticleEntity byId = distributionStockArticleService . getById ( s ) ;
//查询是否创建过
DistributionStockArticleEntity distributionStockArticle = new DistributionStockArticleEntity ( ) ;
//添加订单和提货单关联
DistrilbutionBillStockEntity distrilbutionBillStock = new DistrilbutionBillStockVO ( ) ;
//构建订单
List < Long > packageIds = new ArrayList < > ( ) ;
List < Long > zeroPackageIds = new ArrayList < > ( ) ;
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService . getById ( s ) ;
DistrilbutionBillStockEntity distrilbutionBillStock = new DistrilbutionBillStockEntity ( ) ;
distrilbutionBillStock . setBillLadingId ( distrilbutionBillLading . getId ( ) ) ;
distrilbutionBillStock . setStockArticleId ( Long . parseLong ( s ) ) ;
distrilbutionBillStock . setConditions ( BillLadingStatusConstant . daitihuo . getValue ( ) ) ;
distrilbutionBillStock . setOrderStatus ( "1" ) ;
distrilbutionBillStockService . save ( distrilbutionBillStock ) ;
List < DistrilbutionBillPackageEntity > packageEntityList = new ArrayList < > ( ) ;
if ( ObjectUtils . isNotNull ( distrilbutionBillLading . getBillPackageEntityList ( ) ) ) {
//添加自提包件信息
// List<DistrilbutionBillPackageEntity> collect = new ArrayList<>();
List < DistrilbutionBillPackageEntity > collect = distrilbutionBillLading . getBillPackageEntityList ( ) . stream ( ) . filter ( qqq - > qqq . getStockArticleId ( ) . toString ( ) . equals ( s ) ) . collect ( Collectors . toList ( ) ) ;
if ( ! collect . isEmpty ( ) ) {
//有包件
collect . stream ( ) . forEach ( ss - > {
DistrilbutionBillPackageEntity billPackageEntity = new DistrilbutionBillPackageEntity ( ) ;
billPackageEntity . setBillLadingId ( distrilbutionBillLading . getId ( ) ) ;
billPackageEntity . setPacketBarCode ( ss . getPacketBarCode ( ) ) ;
billPackageEntity . setPacketBarStatus ( 1 ) ;
billPackageEntity . setParceListId ( ss . getParceListId ( ) ) ;
billPackageEntity . setStockArticleId ( ss . getStockArticleId ( ) ) ;
billPackageEntity . setPacketNumber ( 1 ) ;
billPackageEntity . setBillType ( byId . getIsZero ( ) . equals ( "1" ) ? "2" : "1" ) ;
packageEntityList . add ( billPackageEntity ) ;
} ) ;
List < Long > collect1 = collect . stream ( ) . map ( DistrilbutionBillPackageEntity : : getParceListId ) . collect ( Collectors . toList ( ) ) ;
distributionAsyncService . updateParcelListReservation ( collect1 ) ;
//判断是否全部修改
int i = byId . getHandQuantity ( ) - collect . size ( ) ;
if ( i > 0 ) {
//部分
distributionStockArticle . setReservationStatus ( OrderReservationStatusConstant . bufenyuyue . getValue ( ) ) ;
if ( Func . isNotEmpty ( stockArticleEntity ) ) {
if ( IsOrNoConstant . no . getValue ( ) . equals ( stockArticleEntity . getIsZero ( ) ) ) {
//查询此订单是否能够从包件列表获取到信息
if ( Func . isNotEmpty ( packageMap ) ) {
if ( Func . isNotEmpty ( packageMap . get ( Long . parseLong ( s ) ) ) ) {
//存在勾选包件信息
for ( DistributionParcelListEntity distrilbutionBillPackageEntity : packageMap . get ( Long . parseLong ( s ) ) ) {
DistrilbutionBillPackageEntity aaa = new DistrilbutionBillPackageEntity ( ) ;
aaa . setBillLadingId ( distrilbutionBillLading . getId ( ) ) ;
aaa . setPacketBarStatus ( 1 ) ;
aaa . setBillType ( "1" ) ;
aaa . setPacketNumber ( distrilbutionBillPackageEntity . getQuantity ( ) ) ;
//进行包件的预约状态修改
packageEntityList . add ( aaa ) ;
packageIds . add ( aaa . getParceListId ( ) ) ;
}
} else {
//没有进行包件的勾选,默认添加所有可用包件至计划下
List < DistributionParcelListEntity > parcelListEntities = distributionParcelListService . list ( Wrappers . < DistributionParcelListEntity > query ( ) . lambda ( )
. eq ( DistributionParcelListEntity : : getOrderPackageReservationStatus , OrderPackageReservationStatusConstant . daiyuyue . getValue ( ) )
. eq ( DistributionParcelListEntity : : getOrderPackageLoadingStatus , OrderPackageLoadingStatusConstant . weizhuancghe . getValue ( ) )
. eq ( DistributionParcelListEntity : : getConditions , 1 )
. eq ( DistributionParcelListEntity : : getStockArticleId , Long . parseLong ( s ) )
. eq ( DistributionParcelListEntity : : getWarehouseId , myCurrentWarehouse . getId ( ) )
. ne ( DistributionParcelListEntity : : getOrderPackageStatus , OrderPackageStatusConstant . yiqianshou . getValue ( ) )
. ne ( DistributionParcelListEntity : : getOrderPackageStatus , OrderPackageStatusConstant . yichuku . getValue ( ) )
) ;
if ( ! Func . isEmpty ( parcelListEntities ) ) {
for ( DistributionParcelListEntity parcelListEntity : parcelListEntities ) {
DistrilbutionBillPackageEntity billPackageEntity = new DistrilbutionBillPackageEntity ( ) ;
billPackageEntity . setBillLadingId ( distrilbutionBillLading . getId ( ) ) ;
billPackageEntity . setPacketBarStatus ( 1 ) ;
billPackageEntity . setBillType ( "1" ) ;
billPackageEntity . setPacketNumber ( parcelListEntity . getQuantity ( ) ) ;
billPackageEntity . setParceListId ( parcelListEntity . getId ( ) ) ;
billPackageEntity . setStockArticleId ( parcelListEntity . getStockArticleId ( ) ) ;
billPackageEntity . setPacketBarCode ( parcelListEntity . getOrderPackageCode ( ) ) ;
packageEntityList . add ( billPackageEntity ) ;
packageIds . add ( parcelListEntity . getId ( ) ) ;
}
} else {
log . error ( "#####################自提计划订单无可用包件:{}" , s ) ;
throw new ServiceException ( stockArticleEntity . getOrderCode ( ) + "订单无可用包件!!!" ) ;
}
}
} else {
//没有进行包件的勾选,默认添加所有可用包件至计划下
List < DistributionParcelListEntity > parcelListEntities = distributionParcelListService . list ( Wrappers . < DistributionParcelListEntity > query ( ) . lambda ( )
. eq ( DistributionParcelListEntity : : getOrderPackageReservationStatus , OrderPackageReservationStatusConstant . daiyuyue . getValue ( ) )
. eq ( DistributionParcelListEntity : : getOrderPackageLoadingStatus , OrderPackageLoadingStatusConstant . weizhuancghe . getValue ( ) )
. eq ( DistributionParcelListEntity : : getConditions , 1 )
. eq ( DistributionParcelListEntity : : getStockArticleId , Long . parseLong ( s ) )
. eq ( DistributionParcelListEntity : : getWarehouseId , myCurrentWarehouse . getId ( ) )
. ne ( DistributionParcelListEntity : : getOrderPackageStatus , OrderPackageStatusConstant . yiqianshou . getValue ( ) )
. ne ( DistributionParcelListEntity : : getOrderPackageStatus , OrderPackageStatusConstant . yichuku . getValue ( ) )
) ;
if ( ! Func . isEmpty ( parcelListEntities ) ) {
for ( DistributionParcelListEntity parcelListEntity : parcelListEntities ) {
DistrilbutionBillPackageEntity billPackageEntity = new DistrilbutionBillPackageEntity ( ) ;
billPackageEntity . setBillLadingId ( distrilbutionBillLading . getId ( ) ) ;
billPackageEntity . setPacketBarStatus ( 1 ) ;
billPackageEntity . setBillType ( "1" ) ;
billPackageEntity . setPacketNumber ( parcelListEntity . getQuantity ( ) ) ;
billPackageEntity . setParceListId ( parcelListEntity . getId ( ) ) ;
billPackageEntity . setStockArticleId ( parcelListEntity . getStockArticleId ( ) ) ;
billPackageEntity . setPacketBarCode ( parcelListEntity . getOrderPackageCode ( ) ) ;
packageEntityList . add ( billPackageEntity ) ;
packageIds . add ( parcelListEntity . getId ( ) ) ;
}
} else {
log . error ( "#####################自提计划订单无可用包件:{}" , s ) ;
throw new ServiceException ( stockArticleEntity . getOrderCode ( ) + "订单无可用包件!!!" ) ;
}
}
} else {
//没有包件 查询包件信息
List < DistrilbutionBillPackageEntity > packageEntityList1 = billPackInfo ( s , distrilbutionBillLading . getId ( ) , parcelLisList , byId ) ;
if ( packageEntityList1 . isEmpty ( ) ) {
throw new ServiceException ( byId . getOrderCode ( ) + "没有可用包件信息!" ) ;
} else if ( IsOrNoConstant . yes . getValue ( ) . equals ( stockArticleEntity . getIsZero ( ) ) ) {
boolean a = false ;
if ( Func . isNotEmpty ( zeroPackageMap ) ) {
if ( Func . isNotEmpty ( zeroPackageMap . get ( Long . parseLong ( s ) ) ) ) {
a = true ;
}
}
if ( a ) {
//存在数量填写
for ( DistributionParcelListDTO distributionParcelListDTO : zeroPackageMap . get ( Long . parseLong ( s ) ) ) {
if ( distributionParcelListDTO . getQuantity ( ) > 0 | | Func . isEmpty ( distributionParcelListDTO . getQuantity ( ) ) ) {
DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity = new DistributionReservationZeroPackageEntity ( ) ;
distributionReservationZeroPackageEntity . setParcelListId ( distributionParcelListDTO . getId ( ) ) ;
distributionReservationZeroPackageEntity . setCategoryName ( distributionParcelListDTO . getFirsts ( ) ) ;
distributionReservationZeroPackageEntity . setQuantity ( distributionParcelListDTO . getTiQuantity ( ) ) ;
distributionReservationZeroPackageEntity . setType ( "3" ) ;
distributionReservationZeroPackageEntity . setReservationId ( distrilbutionBillLading . getId ( ) ) ;
distributionReservationZeroPackageEntity . setStockArticleId ( distributionParcelListDTO . getStockArticleId ( ) ) ;
distributionReservationZeroPackageEntity . setRealityQuantity ( 0 ) ;
distributionReservationZeroPackageEntity . setZeroPackageStatus ( "1" ) ;
distributionZeroPackageService . save ( distributionReservationZeroPackageEntity ) ;
zeroPackageIds . add ( distributionReservationZeroPackageEntity . getParcelListId ( ) ) ;
//维护对应零担包件的配送数量
DistributionParcelNumberEntity distributionParcelNumberEntity = distributionParcelNumberService . getOne ( Wrappers . < DistributionParcelNumberEntity > query ( ) . lambda ( )
. eq ( DistributionParcelNumberEntity : : getStockArticleId , distributionParcelListDTO . getStockArticleId ( ) )
. eq ( DistributionParcelNumberEntity : : getParcelListId , distributionParcelListDTO . getId ( ) )
) ;
int num = distributionParcelNumberEntity . getDeliveryQuantity ( ) + distributionParcelListDTO . getTiQuantity ( ) ;
distributionParcelNumberEntity . setDeliveryQuantity ( num ) ;
if ( ( distributionParcelNumberEntity . getHandQuantity ( ) - num ) < 0 ) {
throw new ServiceException ( stockArticleEntity . getOrderCode ( ) + "订单在库数量不足!!!" ) ;
}
distributionParcelNumberService . updateById ( distributionParcelNumberEntity ) ;
}
}
} else {
//查询此订单下可用零担数量
List < DistributionParcelNumberVO > zeroOrderDetail = distributionStockArticleService . getZeroOrderDetail ( Long . parseLong ( s ) ) ;
if ( Func . isNotEmpty ( zeroOrderDetail ) ) {
for ( DistributionParcelNumberVO distributionParcelNumberVO : zeroOrderDetail ) {
DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity = new DistributionReservationZeroPackageEntity ( ) ;
distributionReservationZeroPackageEntity . setRealityQuantity ( 0 ) ;
distributionReservationZeroPackageEntity . setReservationId ( distrilbutionBillLading . getId ( ) ) ;
distributionReservationZeroPackageEntity . setType ( "3" ) ;
distributionReservationZeroPackageEntity . setStockArticleId ( Long . parseLong ( s ) ) ;
int num = distributionParcelNumberVO . getHandQuantity ( ) - distributionParcelNumberVO . getDeliveryQuantity ( ) ;
distributionReservationZeroPackageEntity . setQuantity ( num ) ;
distributionReservationZeroPackageEntity . setParcelListId ( distributionParcelNumberVO . getParcelListId ( ) ) ;
distributionReservationZeroPackageEntity . setZeroPackageStatus ( "1" ) ;
distributionReservationZeroPackageEntity . setCategoryName ( distributionParcelNumberVO . getFirsts ( ) ) ;
distributionZeroPackageService . save ( distributionReservationZeroPackageEntity ) ;
//维护零担品类配送数量
DistributionParcelNumberEntity distributionParcelNumberEntity = new DistributionParcelNumberEntity ( ) ;
distributionParcelNumberEntity . setId ( distributionParcelNumberVO . getId ( ) ) ;
distributionParcelNumberEntity . setDeliveryQuantity ( distributionParcelNumberVO . getDeliveryQuantity ( ) + num ) ;
distributionParcelNumberService . updateById ( distributionParcelNumberEntity ) ;
zeroPackageIds . add ( distributionReservationZeroPackageEntity . getParcelListId ( ) ) ;
}
} else {
log . error ( "#####################订单无可用零担:{}" , s ) ;
throw new ServiceException ( stockArticleEntity . getOrderCode ( ) + "订单无在库零担!!!" ) ;
}
}
packageEntityList . addAll ( packageEntityList1 ) ;
// distributionStockArticle.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
}
} else {
//没有包件 查询包件信息
List < DistrilbutionBillPackageEntity > packageEntityList1 = billPackInfo ( s , distrilbutionBillLading . getId ( ) , parcelLisList , byId ) ;
if ( packageEntityList1 . isEmpty ( ) ) {
throw new ServiceException ( byId . getOrderCode ( ) + "没有可用包件信息!" ) ;
} else {
log . error ( "#####################订单isZero字段错误orderId:{}" , s ) ;
throw new ServiceException ( stockArticleEntity . getOrderCode ( ) + "订单数据错误!!!" ) ;
}
packageEntityList . addAll ( packageEntityList1 ) ;
// distributionStockArticle.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
} else {
log . error ( "#####################自提添加错误订单orderId:{}" , s ) ;
throw new ServiceException ( "订单数据错误!!!" ) ;
}
//构建自提订单中间表信息
distrilbutionBillStock . setBillLadingId ( distrilbutionBillLading . getId ( ) ) ;
distrilbutionBillStock . setStockArticleId ( Long . parseLong ( s ) ) ;
distrilbutionBillStock . setConditions ( "10" ) ;
distrilbutionBillStock . setOrderStatus ( ReservationOrderStatusConstant . zhengchang . getValue ( ) ) ;
distrilbutionBillStockService . save ( distrilbutionBillStock ) ;
//对计划包件进行批量预约状态修改
// int i1 = byId.getHandQuantity() + byId.getSigninQuantity(); //总数
if ( byId . getCompleteSet ( ) = = 2 ) {
//全部
distributionStockArticle . setReservationStatus ( OrderReservationStatusConstant . yiyueyue . getValue ( ) ) ;
} else {
//部分
distributionStockArticle . setReservationStatus ( OrderReservationStatusConstant . bufenyuyue . getValue ( ) ) ;
if ( Func . isNotEmpty ( zeroPackageIds ) ) {
List < DistributionParcelNumberEntity > parcelNumberEntityList = distributionParcelNumberService . list ( Wrappers . < DistributionParcelNumberEntity > query ( ) . lambda ( )
. in ( DistributionParcelNumberEntity : : getParcelListId , zeroPackageIds )
) ;
List < Long > ids = parcelNumberEntityList . stream ( ) . filter ( f - > f . getQuantity ( ) = = ( f . getOutboundQuantity ( ) + f . getDeliveryQuantity ( ) ) ) . map ( DistributionParcelNumberEntity : : getParcelListId ) . collect ( Collectors . toList ( ) ) ;
packageIds . addAll ( ids ) ;
}
//判断是否改为已预约
List < DistributionParcelNumberEntity > parcelNumberList = distributionParcelNumberService . list ( Wrappers . < DistributionParcelNumberEntity > query ( ) . lambda ( )
. eq ( DistributionParcelNumberEntity : : getStockArticleId , s )
) ;
if ( ! parcelNumberList . isEmpty ( ) ) {
//零担
int handQuantity = parcelNumberList . stream ( ) . mapToInt ( DistributionParcelNumberEntity : : getHandQuantity ) . sum ( ) ; //在库总数量
int sum = parcelNumberList . stream ( ) . mapToInt ( DistributionParcelNumberEntity : : getDeliveryQuantity ) . sum ( ) ; //配送数量
int i = handQuantity - sum ;
if ( i > 0 ) {
//部分
distributionStockArticle . setReservationStatus ( OrderReservationStatusConstant . bufenyuyue . getValue ( ) ) ;
} else if ( i = = 0 ) {
//全部
distributionStockArticle . setReservationStatus ( OrderReservationStatusConstant . yiyueyue . getValue ( ) ) ;
}
if ( ! Func . isEmpty ( packageIds ) ) {
distributionParcelListService . update ( new UpdateWrapper < DistributionParcelListEntity > ( ) . lambda ( )
. in ( DistributionParcelListEntity : : getId , packageIds )
. set ( DistributionParcelListEntity : : getOrderPackageReservationStatus , OrderPackageReservationStatusConstant . yiyueyue . getValue ( ) )
) ;
}
distributionStockArticleService . maintenanceOrderInfo ( stockArticleEntity . getOrderCode ( ) , stockArticleEntity . getWarehouseId ( ) ) ;
}
if ( Func . isNotEmpty ( packageEntityList ) ) {
distrilbutionBillPackageService . saveBatch ( packageEntityList ) ;
distributionStockArticle . setId ( Long . parseLong ( s ) ) ;
distributionStockArticleService . updateById ( distributionStockArticle ) ;
}
}
//操作图片
if ( ! distrilbutionBillLading . getPrintList ( ) . isEmpty ( ) ) {
addPrint ( distrilbutionBillLading ) ;
@ -759,6 +1000,15 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
}
}
/ * *
* @param reservationId
* @return
* /
@Override
public List < DistributionStockupOrderListVO > selectBillLadingZeroPackageList ( Long reservationId ) {
return baseMapper . selectBillLadingZeroPackageList ( reservationId ) ;
}
@Transactional
private Integer cancelBillLodingPackage ( List < Long > ids ) {
String method = "##########类DistrilbutionBillLadingServiceImpl执行方法cancelBillLoding," ;
@ -884,6 +1134,8 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
* @return
* /
public Boolean updateBillPackeg ( DistrilbutionBillLadingDTO distrilbutionBillLading ) {
List < Long > packageIds = new ArrayList < > ( ) ;
List < Long > finalPackageIds = packageIds ;
distrilbutionBillLading . getBillPackageEntityList ( ) . stream ( ) . collect ( Collectors . groupingBy ( DistrilbutionBillPackageEntity : : getStockArticleId ) )
. forEach ( ( k , v ) - > {
List < DistrilbutionBillPackageEntity > list = distrilbutionBillPackageService . list ( Wrappers . < DistrilbutionBillPackageEntity > query ( ) . lambda ( )
@ -918,7 +1170,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
billPackageEntity . setPacketNumber ( 1 ) ;
billPackageEntity . setPacketBarStatus ( 1 ) ;
packageEntityList . add ( billPackageEntity ) ;
finalPackageIds . add ( i . getParceListId ( ) ) ;
} ) ;
distrilbutionBillPackageService . saveBatch ( packageEntityList ) ;
List < Long > collect = packageEntityList . stream ( ) . map ( i - > i . getParceListId ( ) ) . collect ( Collectors . toList ( ) ) ;
@ -941,10 +1193,30 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
. in ( "id" , collect )
. set ( "order_package_reservation_status" , OrderPackageReservationStatusConstant . daiyuyue . getValue ( ) )
) ;
packageIds . addAll ( collect ) ;
if ( ! update ) {
throw new ServiceException ( "修改失败!!!" ) ;
}
}
//维护订单状态
if ( ! packageIds . isEmpty ( ) ) {
//查询所有的包件
packageIds = packageIds . stream ( ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
List < DistributionParcelListEntity > distributionParcelListEntities = distributionParcelListService . listByIds ( packageIds ) ;
String orderCodes = distributionParcelListEntities . stream ( ) . map ( DistributionParcelListEntity : : getOrderCode ) . collect ( Collectors . joining ( "," ) ) ;
List < Long > warehouseIds = distributionParcelListEntities . stream ( ) . map ( DistributionParcelListEntity : : getWarehouseId ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
if ( ! warehouseIds . isEmpty ( ) ) {
if ( warehouseIds . size ( ) = = 1 ) {
distributionStockArticleService . maintenanceOrderInfo ( orderCodes , warehouseIds . get ( 0 ) ) ;
} else {
log . error ( "#################自提订制品包件缺失warehouseId错误warehouseIds:{}" , warehouseIds ) ;
throw new ServiceException ( "修改失败!!!" ) ;
}
} else {
log . error ( "#################自提订制品包件缺失warehouseId信息packageIds:{}" , packageIds ) ;
throw new ServiceException ( "修改失败!!!" ) ;
}
}
return true ;
}
@ -958,7 +1230,13 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
public int updetaParcelNum ( DistrilbutionBillLadingDTO distrilbutionBillLadingDTO ) {
List < DistributionReservationZeroPackageEntity > list = distributionZeroPackageService . list ( Wrappers . < DistributionReservationZeroPackageEntity > query ( ) . lambda ( )
. eq ( DistributionReservationZeroPackageEntity : : getReservationId , distrilbutionBillLadingDTO . getId ( ) )
. ne ( DistributionReservationZeroPackageEntity : : getZeroPackageStatus , "2" )
. eq ( DistributionReservationZeroPackageEntity : : getType , "3" )
) ; //数据库的品分类数据
// List<Long> ids = null;
List < DistributionStockArticleEntity > stockArticleList = distrilbutionBillLadingDTO . getStockArticleList ( ) ;
Map < Long , List < DistributionStockArticleEntity > > collect = stockArticleList . stream ( ) . collect ( Collectors . groupingBy ( DistributionStockArticleEntity : : getId ) ) ;
List < DistributionParcelListDTO > parcelLisList = distrilbutionBillLadingDTO . getParcelLisList ( ) ; //品类信息
if ( ! list . isEmpty ( ) ) {
List < Long > longs = new ArrayList < > ( ) ;
@ -972,11 +1250,15 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
DistributionParcelListDTO next = iterator . next ( ) ;
if ( next . getId ( ) . equals ( i . getParcelListId ( ) ) ) {
if ( i . getRealityQuantity ( ) > 0 ) {
throw new ServiceException ( "已备货无法修改备货 数量!" ) ;
throw new ServiceException ( "已备货无法修改数量!" ) ;
}
//获取修改的数量
Integer quantity = i . getQuantity ( ) ; //原预约数量
Integer quantity1 = next . getQuantity ( ) ; //改变的数量
Integer quantity1 = next . getTiQuantity ( ) ; //改变的数量
if ( quantity1 = = 0 ) {
throw new ServiceException ( "输入错误的数量,请移除订单!" ) ;
}
int i1 = quantity - quantity1 ;
if ( i1 > 0 ) {
//减少了
@ -986,24 +1268,33 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
distributionParcelNumberService . updateBillNum ( i . getParcelListId ( ) , i1 , 2 ) ;
} else {
//不做操作!
iterator . remove ( ) ;
continue ;
}
//修改预约数量
DistributionReservationZeroPackageEntity zeroPackage = new DistributionReservationZeroPackageEntity ( ) ;
zeroPackage . setId ( i . getId ( ) ) ;
zeroPackage . setQuantity ( next . getQuantity ( ) ) ;
zeroPackage . setQuantity ( next . getTi Quantity ( ) ) ;
distributionZeroPackageService . updateById ( zeroPackage ) ;
iterator . remove ( ) ;
}
}
} else {
//不存在
longs . add ( i . getId ( ) ) ;
//此种物料不存在 判断是否还带有该订单 如果依然带有则无变化
if ( ! collect . isEmpty ( ) ) {
List < DistributionStockArticleEntity > distributionStockArticleEntities = collect . get ( i . getStockArticleId ( ) ) ;
if ( distributionStockArticleEntities . isEmpty ( ) ) {
longs . add ( i . getParcelListId ( ) ) ;
}
}
}
} ) ;
if ( ! longs . isEmpty ( ) ) {
distributionZeroPackageService . deleteLogic ( longs ) ;
// distributionZeroPackageService.deleteLogic(longs);
//进行零担在库数量恢复
distributionZeroPackageService . recoverZeroPackage ( distrilbutionBillLadingDTO . getId ( ) , longs ) ;
// distributionZeroPackageService.cancelZeroPackage(longs);
}
// TODo 添加新的品类
List < DistributionReservationZeroPackageEntity > packageEntityList = new ArrayList < > ( ) ;
@ -1173,7 +1464,12 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
List < Long > collect = myWatchWarehouse . stream ( )
. map ( BasicdataWarehouseEntity : : getId )
. collect ( Collectors . toList ( ) ) ;
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient . getMyCurrentWarehouse ( ) ;
distrilbutionBillLadingDTO . setWarehouseIdList ( collect ) ;
if ( Func . isNotEmpty ( myWatchWarehouse ) ) {
distrilbutionBillLadingDTO . setWarehouseIdList ( null ) ;
distrilbutionBillLadingDTO . setWarehouseId ( myCurrentWarehouse . getId ( ) ) ;
}
IPage < DistrilbutionBillLadingVO > distrilbutionBillLadingVOIPage = baseMapper . pageList ( page , distrilbutionBillLadingDTO ) ;
List < DistrilbutionBillLadingVO > records = distrilbutionBillLadingVOIPage . getRecords ( ) ;
records . forEach ( i - > {
@ -1721,12 +2017,43 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
List < DistrilbutionBillStockEntity > list = distrilbutionBillStockService . list ( Wrappers . < DistrilbutionBillStockEntity > query ( ) . lambda ( )
. eq ( DistrilbutionBillStockEntity : : getBillLadingId , distrilbutionBillLadingEntity . getId ( ) )
. eq ( DistrilbutionBillStockEntity : : getOrderStatus , "1" )
. or ( eq - > eq . eq ( DistrilbutionBillStockEntity : : getBillLadingId , distrilbutionBillLadingEntity . getId ( ) ) . eq ( DistrilbutionBillStockEntity : : getOrderStatus , "2 " ) )
. or ( eq - > eq . eq ( DistrilbutionBillStockEntity : : getBillLadingId , distrilbutionBillLadingEntity . getId ( ) ) . eq ( DistrilbutionBillStockEntity : : getOrderStatus , "3 " ) )
) ;
list . forEach ( i - > {
List < DistributionStockArticleEntity > list2 = distributionStockArticleService . list ( Wrappers . < DistributionStockArticleEntity > query ( ) . lambda ( ) . eq ( DistributionStockArticleEntity : : getId , i . getStockArticleId ( ) ) ) ;
if ( ! list2 . isEmpty ( ) ) {
list1 . addAll ( DistributionStockArticleWrapper . build ( ) . listVO ( list2 ) ) ;
List < DistributionStockArticleVO > distributionStockArticleVOS = DistributionStockArticleWrapper . build ( ) . listVO ( list2 ) ;
for ( DistributionStockArticleVO distributionStockArticleVO : distributionStockArticleVOS ) {
//查询自身订单的计划数量是多少
if ( IsOrNoConstant . no . getValue ( ) . equals ( distributionStockArticleVO . getIsZero ( ) ) ) {
//查询订制品数量
List < DistrilbutionBillPackageEntity > list3 = distrilbutionBillPackageService . list ( Wrappers . < DistrilbutionBillPackageEntity > query ( ) . lambda ( )
. eq ( DistrilbutionBillPackageEntity : : getBillLadingId , distrilbutionBillLadingEntity . getId ( ) )
. ne ( DistrilbutionBillPackageEntity : : getPacketBarStatus , "2" )
. ne ( DistrilbutionBillPackageEntity : : getStockArticleId , distributionStockArticleVO . getId ( ) )
) ;
if ( ! list3 . isEmpty ( ) ) {
distributionStockArticleVO . setReservationNum ( list3 . size ( ) ) ;
} else {
distributionStockArticleVO . setReservationNum ( 0 ) ;
}
} else {
List < DistributionReservationZeroPackageEntity > reservationZeroPackageEntities = distributionZeroPackageService . list ( Wrappers . < DistributionReservationZeroPackageEntity > query ( ) . lambda ( )
. eq ( DistributionReservationZeroPackageEntity : : getReservationId , distrilbutionBillLadingEntity . getId ( ) )
. eq ( DistributionReservationZeroPackageEntity : : getStockArticleId , distributionStockArticleVO . getId ( ) )
. ne ( DistributionReservationZeroPackageEntity : : getZeroPackageStatus , "2" )
. eq ( DistributionReservationZeroPackageEntity : : getType , "3" )
) ;
if ( ! reservationZeroPackageEntities . isEmpty ( ) ) {
distributionStockArticleVO . setReservationNum ( reservationZeroPackageEntities . stream ( ) . mapToInt ( DistributionReservationZeroPackageEntity : : getQuantity ) . sum ( ) ) ;
} else {
distributionStockArticleVO . setReservationNum ( 0 ) ;
}
}
}
list1 . addAll ( distributionStockArticleVOS ) ;
}
} ) ;
@ -1739,6 +2066,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
//查询库存品
List < DistributionDeliveryDetailsEntity > list3 = distributionDeliveryDetailsService . list ( Wrappers . < DistributionDeliveryDetailsEntity > query ( ) . lambda ( )
. eq ( DistributionDeliveryDetailsEntity : : getBillLadingId , distrilbutionBillLadingEntity . getId ( ) )
. ne ( DistributionDeliveryDetailsEntity : : getInventoryStatus , "2" )
) ;
if ( ! list3 . isEmpty ( ) ) {
list3 . forEach ( i - > {
@ -2344,60 +2672,60 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
isZeroType = true ;
}
this . save ( distrilbutionBillLading ) ;
if ( isZeroType ) {
if ( list . isEmpty ( ) ) {
throw new ServiceException ( "类型数据未填写!!!" ) ;
}
List < DistributionReservationZeroPackageEntity > zeroPackageEntityList = new ArrayList < > ( ) ;
List < DistributionParcelNumberEntity > parcelNumberEntityList = new ArrayList < > ( ) ;
AtomicInteger nu = new AtomicInteger ( ) ;
//是 添加物料信息
list . forEach ( i - > {
if ( i . getQuantity ( ) ! = 0 ) {
DistributionReservationZeroPackageEntity zeroPackageEntity = new DistributionReservationZeroPackageEntity ( ) ;
zeroPackageEntity . setQuantity ( i . getQuantity ( ) ) ;
zeroPackageEntity . setReservationId ( distrilbutionBillLading . getId ( ) ) ;
zeroPackageEntity . setType ( "3" ) ;
zeroPackageEntity . setCategoryName ( i . getFirsts ( ) ) ;
zeroPackageEntity . setZeroPackageStatus ( "1" ) ;
zeroPackageEntity . setStockArticleId ( i . getStockArticleId ( ) ) ;
zeroPackageEntity . setRealityQuantity ( 0 ) ;
//修改包件配送数量
//查询
DistributionStockArticleEntity byId = distributionStockArticleService . getById ( i . getStockArticleId ( ) ) ;
DistributionParcelNumberEntity one = distributionParcelNumberService . getOne ( Wrappers . < DistributionParcelNumberEntity > query ( ) . lambda ( ) . eq ( DistributionParcelNumberEntity : : getParcelListId , i . getId ( ) ) ) ;
int i1 = one . getDeliveryQuantity ( ) + i . getQuantity ( ) ;
//全部数据不能大于预约数
if ( ObjectUtils . isNotNull ( one ) & & i1 < = one . getHandQuantity ( ) ) {
nu . addAndGet ( i . getQuantity ( ) ) ;
DistributionParcelNumberEntity parcelNumberEntity = new DistributionParcelNumberEntity ( ) ;
parcelNumberEntity . setId ( one . getId ( ) ) ;
parcelNumberEntity . setDeliveryQuantity ( one . getDeliveryQuantity ( ) + i . getQuantity ( ) ) ;
parcelNumberEntity . setHandQuantity ( byId . getHandQuantity ( ) ) ;
parcelNumberEntityList . add ( parcelNumberEntity ) ;
zeroPackageEntity . setParcelListId ( one . getParcelListId ( ) ) ;
zeroPackageEntityList . add ( zeroPackageEntity ) ;
} else {
throw new ServiceException ( "配送数量大于在库数量!!" ) ;
}
}
} ) ;
if ( ! parcelNumberEntityList . isEmpty ( ) ) {
parcelNumberEntityList . forEach ( p - > {
if ( nu . get ( ) < = p . getHandQuantity ( ) ) {
p . setHandQuantity ( null ) ;
distributionParcelNumberService . updateById ( p ) ;
} else {
throw new ServiceException ( "预约数量大于在库数量!!" ) ;
}
} ) ;
} else {
throw new ServiceException ( "数据异常,请联系管理员!!" ) ;
}
distributionZeroPackageService . saveBatch ( zeroPackageEntityList ) ;
}
// if (isZeroType) {
// if (list.isEmpty()) {
// throw new ServiceException("类型数据未填写!!!");
// }
// List<DistributionReservationZeroPackageEntity> zeroPackageEntityList = new ArrayList<>();
// List<DistributionParcelNumberEntity> parcelNumberEntityList = new ArrayList<>();
// AtomicInteger nu = new AtomicInteger();
// //是 添加物料信息
// list.forEach(i -> {
// if (i.getQuantity() != 0) {
// DistributionReservationZeroPackageEntity zeroPackageEntity = new DistributionReservationZeroPackageEntity();
// zeroPackageEntity.setQuantity(i.getQuantity());
// zeroPackageEntity.setReservationId(distrilbutionBillLading.getId());
// zeroPackageEntity.setType("3");
// zeroPackageEntity.setCategoryName(i.getFirsts());
// zeroPackageEntity.setZeroPackageStatus("1");
// zeroPackageEntity.setStockArticleId(i.getStockArticleId());
// zeroPackageEntity.setRealityQuantity(0);
// //修改包件配送数量
// //查询
// DistributionStockArticleEntity byId = distributionStockArticleService.getById(i.getStockArticleId());
// DistributionParcelNumberEntity one = distributionParcelNumberService.getOne(Wrappers.<DistributionParcelNumberEntity>query().lambda().eq(DistributionParcelNumberEntity::getParcelListId, i.getId()));
//
// int i1 = one.getDeliveryQuantity() + i.getQuantity();
// //全部数据不能大于预约数
// if (ObjectUtils.isNotNull(one) && i1 <= one.getHandQuantity()) {
// nu.addAndGet(i.getQuantity());
// DistributionParcelNumberEntity parcelNumberEntity = new DistributionParcelNumberEntity();
// parcelNumberEntity.setId(one.getId());
// parcelNumberEntity.setDeliveryQuantity(one.getDeliveryQuantity() + i.getQuantity());
// parcelNumberEntity.setHandQuantity(byId.getHandQuantity());
// parcelNumberEntityList.add(parcelNumberEntity);
// zeroPackageEntity.setParcelListId(one.getParcelListId());
// zeroPackageEntityList.add(zeroPackageEntity);
// } else {
// throw new ServiceException("配送数量大于在库数量!!");
// }
//
// }
// });
// if (!parcelNumberEntityList.isEmpty()) {
// parcelNumberEntityList.forEach(p -> {
// if (nu.get() <= p.getHandQuantity()) {
// p.setHandQuantity(null);
// distributionParcelNumberService.updateById(p);
// } else {
// throw new ServiceException("预约数量大于在库数量!!");
// }
// });
// } else {
// throw new ServiceException("数据异常,请联系管理员!!");
// }
// distributionZeroPackageService.saveBatch(zeroPackageEntityList);
// }
// 创建备货任务
DistributionStockupEntity distributionStockupEntity = buildDistributionStockupEntityBydistrilbutionBillLading ( distrilbutionBillLading ) ;
@ -2475,6 +2803,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
List < DistributionReservationZeroPackageEntity > list = distributionZeroPackageService . list ( Wrappers . < DistributionReservationZeroPackageEntity > query ( ) . lambda ( )
. eq ( DistributionReservationZeroPackageEntity : : getReservationId , billLadingAppDTO . getBillLadingId ( ) )
. eq ( DistributionReservationZeroPackageEntity : : getIsDeleted , 0 )
. eq ( DistributionReservationZeroPackageEntity : : getStockArticleId , billLadingAppDTO . getStockArtieleld ( ) )
. in ( DistributionReservationZeroPackageEntity : : getZeroPackageStatus , "1" , "3" )
) ;
List < DistrilbutionAppBillLadingZeroVO > parcelListEntityList = new ArrayList < > ( ) ;
@ -2573,10 +2902,18 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
billLadingScan . setMaterialType ( "3" ) ;
billLadingScan . setQuantity ( i . getQuantity ( ) ) ;
billLadingScanList . add ( billLadingScan ) ;
//维护零担品类的出库数量
Integer integer = distributionParcelNumberService . augmentSignForNum ( i . getId ( ) , i . getStockArticleId ( ) , i . getQuantity ( ) ) ;
log . info ( "###############维护零担品类出库数量packageId:{},stockArticleId:{}," , i . getId ( ) , i . getStockArticleId ( ) ) ;
log . info ( "###############维护零担品类出库数量维护品类行数:{}" , integer ) ;
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService . getById ( k ) ;
//扣减订单在库数量
distributionStockArticleService . maintenanceOrderInfo ( stockArticleEntity . getOrderCode ( ) , stockArticleEntity . getWarehouseId ( ) ) ;
} ) ;
int sum = v . stream ( ) . mapToInt ( DistrilbutionAppBillLadingZeroVO : : getQuantity ) . sum ( ) ; //填写的签收数量
//修改订单签收钻状态
updateStockArticle ( sum , k ) ;
// updateStockArticle(sum, k);
//修改提货订单状态
updateBillStock ( sum , list , k , billLadingAppDTO . getBillLadingId ( ) ) ;
} ) ;
@ -2623,14 +2960,17 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
BeanUtils . copyProperties ( byId , zeroOrderVO ) ;
zeroOrderVO . setReservationQuantity ( sum ) ;
zeroOrderVO . setRealityQuantity ( sum1 ) ;
zeroOrderVO . setId ( k ) ;
//查询签收订单数量
List < DistributionBillLadingScanEntity > list1 = distributionBillLadingScanService . list ( Wrappers . < DistributionBillLadingScanEntity > query ( ) . lambda ( )
. eq ( DistributionBillLadingScanEntity : : getBillLadingId , billLadingAppDTO . getBillLadingId ( ) )
. eq ( DistributionBillLadingScanEntity : : getStockArticleId , k )
. eq ( DistributionBillLadingScanEntity : : getParcelListId , k )
// .eq(DistributionBillLadingScanEntity::getParcelListId, k)
) ;
if ( ! list1 . isEmpty ( ) ) {
zeroOrderVO . setSignforQuantity ( list1 . stream ( ) . mapToInt ( DistributionBillLadingScanEntity : : getQuantity ) . sum ( ) ) ;
} else {
zeroOrderVO . setSignforQuantity ( 0 ) ;
}
billLadingZeroOrderVOS . add ( zeroOrderVO ) ;
@ -2848,7 +3188,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
return distrilbutionBillStockService . update ( Wrappers . < DistrilbutionBillStockEntity > update ( )
. eq ( "bill_lading_id" , billLadingId )
. eq ( "stock_article_id" , stockArticleId )
. set ( "conditions" , 2 )
. set ( "conditions" , 20 )
) ;
}
return false ;