@ -37,12 +37,14 @@ import com.logpm.distribution.wrapper.DistributionStockArticleWrapper;
import com.logpm.distribution.wrapper.DistributionStockListWrapper ;
import com.logpm.warehouse.entity.WarehouseWaybillEntity ;
import com.logpm.warehouse.feign.IWarehouseWaybillClient ;
import lombok.extern.slf4j.Slf4j ;
import org.springblade.common.constant.DistributionTypeConstant ;
import org.springblade.common.constant.Inventory.* ;
import org.springblade.common.constant.delivery.DeliveryStatusConstant ;
import org.springblade.common.constant.order.OrderReservationStatusConstant ;
import org.springblade.common.constant.orderpackage.OrderPackageFreezeStatusConstant ;
import org.springblade.common.constant.orderpackage.OrderPackageReservationStatusConstant ;
import org.springblade.common.constant.orderpackage.OrderPackageStatusConstant ;
import org.springblade.common.constant.orderpackage.OrderPackageStockupStatusConstant ;
import org.springblade.common.constant.reservation.* ;
import org.springblade.common.constant.signing.SignforStatusConstant ;
@ -81,6 +83,7 @@ import java.util.stream.Collectors;
* @since 2023 - 06 - 12
* /
@Service
@Slf4j
public class DistributionReservationServiceImpl extends BaseServiceImpl < DistributionReservationMapper , DistributionReservationEntity > implements IDistributionReservationService {
@Autowired
@ -168,6 +171,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
@Autowired
private DisStockListDetailMapper disStockListDetailMapper ;
@Autowired
private DistributionStockupInfoMapper distributionStockupInfoMapper ;
@ -1205,7 +1211,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
Integer newQuantityOccupied = distributionStockListEntity . getQuantityOccupied ( ) - reservationNum ;
distributionStockListEntity . setQuantityOccupied ( newQuantityOccupied ) ;
distributionStockListService . updateById ( distributionStockListEntity ) ;
disStockListDetailMapper . deleteByReservation StockListId ( distributionReservationStocklistEntity . getId ( ) ) ;
disStockListDetailMapper . deleteInventoryBy StockListId ( distributionReservationStocklistEntity . getId ( ) ) ;
List < DisStockListDetailEntity > list = disStockListDetailService . list ( Wrappers . < DisStockListDetailEntity > query ( ) . lambda ( )
. eq ( DisStockListDetailEntity : : getReservationId , distributionReservationStocklistEntity . getReservationId ( ) ) . eq ( DisStockListDetailEntity : : getStockListId , distributionReservationStocklistEntity . getStocklistId ( ) ) ) ;
list . forEach ( l - > l . setStockPackageStatus ( InventoryPackageStatusConstant . quxiao . getValue ( ) ) ) ;
@ -1672,19 +1678,115 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
@Transactional
public boolean cancelReservation ( DistributionReservationDTO reservationDTO ) {
if ( Func . isEmpty ( reservationDTO ) ) {
log . error ( "参数异常allocationDTO+{" + reservationDTO + "}" ) ;
log . error ( "参数异常allocationDTO>>>{}" , reservationDTO ) ;
return false ;
}
DistributionReservationEntity reservationEntity = this . getById ( reservationDTO . getId ( ) ) ;
if ( Func . isEmpty ( reservationEntity ) ) {
log . error ( "参数异常reservationEntity+{" + reservationEntity + "}" ) ;
log . error ( "参数异常reservationEntity:{}" , reservationEntity ) ;
return false ;
}
boolean result = false ;
// ------------------------取消预约需要重新调整————————————————————————————————————————————————————
// 思路:查询该预约,此预约是否进行了备货操作,如果没有进行备货操作,这里则进行订单状态的还原
// 如果此预约进行了备货操作则需要对备货人任务进行判断,备货任务未执行标记备货任务取消 将包件状态进行恢复
// 备货任务开始,此时则只表示预约任务取消,不对订单等信息进行更新状态的操作
DistributionStockupEntity stockupEntity = distributionReservationMapper . selectStockup ( reservationEntity . getId ( ) ) ;
if ( Func . isEmpty ( stockupEntity ) | | stockupEntity . getAssignStatus ( ) . equals ( StockAssignStatusConstant . weizhipai . getValue ( ) ) ) {
if ( Func . isNotEmpty ( stockupEntity ) ) {
List < DistributionStockupInfoEntity > stockupInfoEntityList = distributionStockupInfoService . list ( Wrappers . < DistributionStockupInfoEntity > query ( ) . lambda ( ) . eq ( DistributionStockupInfoEntity : : getStockupId , stockupEntity . getId ( ) ) ) ;
boolean flag = stockupInfoEntityList . stream ( ) . allMatch ( info - > Func . equals ( info . getReservationId ( ) , reservationEntity . getId ( ) ) ) ;
if ( flag ) {
//删除中间表和备货表
DistributionStockupInfoEntity stockupInfoEntity = stockupInfoEntityList . get ( 0 ) ;
distributionStockupInfoMapper . deleteByReservationId ( stockupInfoEntity . getReservationId ( ) ) ;
distributionStockupMapper . deleteStockUpById ( stockupInfoEntity . getStockupId ( ) ) ;
} else {
//只删除中间表
distributionStockupInfoMapper . deleteByReservationId ( reservationEntity . getId ( ) ) ;
}
}
//这里取消还需要对订单、包件、库存品的数据进行维护
// -------------------------------------------维护订单——————————————————————————————————————————————————————————————————————————
List < DistributionReservationStockarticleEntity > reservationStockarticleEntityList = distributionReservationMapper . selectStockArticleByReservationId ( reservationEntity . getId ( ) ) ;
if ( Func . isNotEmpty ( reservationStockarticleEntityList ) & & reservationStockarticleEntityList . size ( ) > 0 ) {
List < DistributionStockArticleEntity > stockArticleList = distributionReservationMapper . getStockArticleList ( reservationEntity . getId ( ) ) ;
stockArticleList . forEach ( s - > {
s . setReservationStatus ( OrderReservationStatusConstant . daiyuyue . getValue ( ) ) ;
distributionStockArticleService . updateById ( s ) ;
} ) ;
reservationStockarticleEntityList . forEach ( rs - > {
rs . setStockArticleStatus ( ReservationOrderStatusConstant . quxiao . getValue ( ) ) ;
distributionReservationStockarticleService . updateById ( rs ) ;
} ) ;
}
// ----------------------------------------维护包件————————————————————————————————————————————————————————————————————————————————————
List < DistributionReservationPackageEntity > reservationPackageEntityList = distributionReservationMapper . selectReservationPackageByReservationId ( reservationEntity . getId ( ) ) ;
if ( Func . isNotEmpty ( reservationPackageEntityList ) & & reservationPackageEntityList . size ( ) > 0 ) {
List < DistributionParcelListEntity > parcelListEntities = distributionReservationMapper . selectPackageListByReservationId ( reservationEntity . getId ( ) ) ;
parcelListEntities . forEach ( p - > {
p . setOrderPackageReservationStatus ( OrderPackageReservationStatusConstant . daiyuyue . getValue ( ) ) ;
distributionParcelListService . updateById ( p ) ;
} ) ;
reservationPackageEntityList . forEach ( rp - > {
rp . setPacketBarStatus ( ReservationPackageStatusConstant . quxiao . getValue ( ) ) ;
distributionReservationPackageService . updateById ( rp ) ;
} ) ;
}
// ——————————————————————————————————————————————————维护库存品———————————————————————————————————————————————————————————————————————————
List < DistributionReservationStocklistEntity > distributionReservationStocklistEntities = distributionReservationMapper . selectStockListByReservationId ( reservationEntity . getId ( ) ) ;
if ( Func . isNotEmpty ( distributionReservationStocklistEntities ) & & distributionReservationStocklistEntities . size ( ) > 0 ) {
//进行库存品库存数量的维护
distributionReservationStocklistEntities . forEach ( i - > {
DistributionStockListEntity stockListEntity = distributionStockListService . getById ( i . getStocklistId ( ) ) ;
stockListEntity . setQuantityOccupied ( stockListEntity . getQuantityOccupied ( ) - i . getReservationNum ( ) ) ;
distributionStockListService . updateById ( stockListEntity ) ;
i . setStockListStatus ( ReservationInventoryStatusConstant . quxiao . getValue ( ) ) ;
distributionReservationStocklistService . updateById ( i ) ;
} ) ;
//执行物理删除
disStockListDetailMapper . deleteInventoryByReservationId ( reservationEntity . getId ( ) ) ;
}
} else {
//仅仅标注该客户的预约计划取消
// -------------------------------------------维护订单——————————————————————————————————————————————————————————————————————————
List < DistributionReservationStockarticleEntity > reservationStockarticleEntityList = distributionReservationMapper . selectStockArticleByReservationId ( reservationEntity . getId ( ) ) ;
if ( Func . isNotEmpty ( reservationStockarticleEntityList ) & & reservationStockarticleEntityList . size ( ) > 0 ) {
reservationStockarticleEntityList . forEach ( rs - > {
rs . setStockArticleStatus ( ReservationOrderStatusConstant . quxiao . getValue ( ) ) ;
distributionReservationStockarticleService . updateById ( rs ) ;
} ) ;
}
// ----------------------------------------维护包件————————————————————————————————————————————————————————————————————————————————————
List < DistributionReservationPackageEntity > reservationPackageEntityList = distributionReservationMapper . selectReservationPackageByReservationId ( reservationEntity . getId ( ) ) ;
if ( Func . isNotEmpty ( reservationPackageEntityList ) & & reservationPackageEntityList . size ( ) > 0 ) {
reservationPackageEntityList . forEach ( rp - > {
rp . setPacketBarStatus ( ReservationPackageStatusConstant . quxiao . getValue ( ) ) ;
distributionReservationPackageService . updateById ( rp ) ;
} ) ;
}
// ——————————————————————————————————————————————————维护库存品———————————————————————————————————————————————————————————————————————————
List < DistributionReservationStocklistEntity > distributionReservationStocklistEntities = distributionReservationMapper . selectStockListByReservationId ( reservationEntity . getId ( ) ) ;
if ( Func . isNotEmpty ( distributionReservationStocklistEntities ) & & distributionReservationStocklistEntities . size ( ) > 0 ) {
//进行库存品库存数量的维护
distributionReservationStocklistEntities . forEach ( i - > {
DistributionStockListEntity stockListEntity = distributionStockListService . getById ( i . getStocklistId ( ) ) ;
stockListEntity . setQuantityOccupied ( stockListEntity . getQuantityOccupied ( ) - i . getReservationNum ( ) ) ;
distributionStockListService . updateById ( stockListEntity ) ;
i . setStockListStatus ( ReservationInventoryStatusConstant . quxiao . getValue ( ) ) ;
distributionReservationStocklistService . updateById ( i ) ;
} ) ;
}
}
reservationEntity . setCancelReason ( reservationDTO . getCancelReason ( ) ) ;
reservationEntity . setReservationStatus ( ReservationStatusConstant . yiquexiao . getValue ( ) ) ;
result = this . updateById ( reservationEntity ) ;
return result ;
this . updateById ( reservationEntity ) ;
return true ;
}
@Override