@ -102,6 +102,8 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function ;
import java.util.stream.Collectors ;
import static net.sf.jsqlparser.util.validation.metadata.NamedObject.user ;
/ * *
* 签收管理 服务实现类
*
@ -112,84 +114,81 @@ import java.util.stream.Collectors;
@Slf4j
public class DistributionSignforServiceImpl extends BaseServiceImpl < DistributionSignforMapper , DistributionSignforEntity > implements IDistributionSignforService {
@Autowired
private DistributionLoadscanServiceImpl distributionLoadscanService ;
private DistributionLoadscanServiceImpl distributionLoadscanService ;
@Autowired
private DistributionLoadscaninvnServiceImpl distributionLoadscaninvnService ;
private DistributionLoadscaninvnServiceImpl distributionLoadscaninvnService ;
@Autowired
private IDistributionParcelListService distributionParcelListService ;
private IDistributionParcelListService distributionParcelListService ;
@Autowired
private IDistributionStockArticleService distributionStockArticleService ;
private IDistributionStockArticleService distributionStockArticleService ;
@Autowired
private DistributionLoadscanMapper distributionLoadscanMapper ;
private DistributionLoadscanMapper distributionLoadscanMapper ;
@Autowired
private DistributionLoadscaninvnMapper distributionLoadscaninvnMapper ;
private DistributionLoadscaninvnMapper distributionLoadscaninvnMapper ;
@Autowired
private DistributionDeliveryListMapper distributionDeliveryListMapper ;
private DistributionDeliveryListMapper distributionDeliveryListMapper ;
@Autowired
private DistributionDeliverySelfMapper distributionDeliverySelfMapper ;
private DistributionDeliverySelfMapper distributionDeliverySelfMapper ;
@Autowired
private DistributionDeliveryTripartiteMapper distributionDeliveryTripartiteMapper ;
private DistributionDeliveryTripartiteMapper distributionDeliveryTripartiteMapper ;
@Autowired
private DistributionSignforMapper distributionSignforMapper ;
private DistributionSignforMapper distributionSignforMapper ;
@Autowired
private DistributionStockMapper distributionStockMapper ;
private DistributionStockMapper distributionStockMapper ;
@Autowired
private IDictBizClient dictBizClient ;
private IDictBizClient dictBizClient ;
@Autowired
private IBasicdataDriverArteryClient iBasicdataDriverArteryClient ;
private IBasicdataDriverArteryClient iBasicdataDriverArteryClient ;
@Autowired
private IDistributionReservationPackageService reservationPackageService ;
private IDistributionReservationPackageService reservationPackageService ;
@Autowired
private IDistributionAsyncService distributionAsyncService ;
private IDistributionAsyncService distributionAsyncService ;
@Autowired
private IBasicdataWarehouseClient basicdataWarehouseClient ;
private IBasicdataWarehouseClient basicdataWarehouseClient ;
@Autowired
private DistributionReservationMapper distributionReservationMapper ;
private DistributionReservationMapper distributionReservationMapper ;
@Autowired
private IDisStockListDetailService disStockListDetailService ;
private IDisStockListDetailService disStockListDetailService ;
@Autowired
private IDistributionStockListService distributionStockListService ;
private IDistributionStockListService distributionStockListService ;
@Autowired
private DistributionStockListMapper distributionStockListMapper ;
private DistributionStockListMapper distributionStockListMapper ;
@Autowired
private DistributionAddvalueMapper distributionAddvalueMapper ;
private DistributionAddvalueMapper distributionAddvalueMapper ;
@Autowired
private IDistributionAddvalueService distributionAddvalueService ;
private IDistributionAddvalueService distributionAddvalueService ;
@Autowired
private IDistributionAddvaluePackageService distributionAddvaluePackageService ;
private IDistributionAddvaluePackageService distributionAddvaluePackageService ;
@Autowired
private IDistributionLoadscanAbnormalService distributionLoadscanAbnormalService ;
private IDistributionLoadscanAbnormalService distributionLoadscanAbnormalService ;
@Autowired
private IDistributionReservationStockarticleService distributionReservationStockarticleService ;
private IDistributionReservationStockarticleService distributionReservationStockarticleService ;
@Autowired
private IDistributionReservationPackageService distributionReservationPackageService ;
private IDistributionReservationPackageService distributionReservationPackageService ;
@Autowired
private IDistributionReservationZeroPackageService distributionReservationZeroPackageService ;
private IDistributionReservationZeroPackageService distributionReservationZeroPackageService ;
@Autowired
private IDistributionSignPrintService iDistributionSignPrintService ;
private IDistributionSignPrintService iDistributionSignPrintService ;
@Autowired
private IDistributionParcelNumberService distributionParcelNumberService ;
private IDistributionParcelNumberService distributionParcelNumberService ;
@Autowired
private IWarehouseUpdownTypeClient warehouseUpdownTypeClient ;
private IWarehouseUpdownTypeClient warehouseUpdownTypeClient ;
@Autowired
private DistributionStockArticleMapper distributionStockArticleMapper ;
private DistributionStockArticleMapper distributionStockArticleMapper ;
@Autowired
private IBasicdataClientClient basicdataClientClient ;
private IBasicdataClientClient basicdataClientClient ;
@Autowired
private DistributionParcelListMapper distributionParcelListMapper ;
private DistributionParcelListMapper distributionParcelListMapper ;
@Autowired
@Lazy
private IDistributionDeliveryListService distributionDeliveryListService ;
@Autowired
@Lazy
private IDistributionReservationService distributionReservationService ;
@Autowired
private RabbitTemplate rabbitTemplate ;
// private IBasicdataWarehouseClient warehouseUpdownTypeClient;
@Autowired
private IOuPaiFactoryClinet ouPaiFactoryClinet ;
@Autowired
private RabbitTemplate rabbitTemplate ;
// private IBasicdataWarehouseClient warehouseUpdownTypeClient;
@Override
public IPage < DistributionSignforVO > selectDistributionSignforPage ( IPage < DistributionSignforVO > page , DistributionSignforVO distributionSignfor ) {
@ -217,8 +216,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
int weiqianshoujianshu = 0 ;
int zhuangchejianshu = 0 ;
int qianshoujianshu = 0 ;
if ( Func . isNotEmpty ( distributionParcelListEntities ) ) {
weizhuangchejianshu + = distributionParcelListEntities . stream ( ) . filter ( f - > f . getOrderPackageLoadingStatus ( ) . equals ( OrderPackageLoadingStatusConstant . weizhuancghe . getValue ( ) ) ) . mapToInt ( DistributionParcelListEntity : : getQuantity ) . sum ( ) ;
if ( Func . isNotEmpty ( distributionParcelListEntities ) ) {
weizhuangchejianshu + = distributionParcelListEntities . stream ( ) . filter ( f - > f . getOrderPackageLoadingStatus ( ) . equals ( OrderPackageLoadingStatusConstant . weizhuancghe . getValue ( ) ) ) . mapToInt ( DistributionParcelListEntity : : getQuantity ) . sum ( ) ;
zhuangchejianshu + = distributionParcelListEntities . stream ( ) . filter ( f - > f . getOrderPackageLoadingStatus ( ) . equals ( OrderPackageLoadingStatusConstant . yizhuangche . getValue ( ) ) ) . mapToInt ( DistributionParcelListEntity : : getQuantity ) . sum ( ) ;
weiqianshoujianshu + = distributionParcelListEntities . stream ( ) . filter ( f - > ! f . getOrderPackageStatus ( ) . equals ( OrderPackageStatusConstant . yiqianshou . getValue ( ) ) ) . mapToInt ( DistributionParcelListEntity : : getQuantity ) . sum ( ) ;
qianshoujianshu + = distributionParcelListEntities . stream ( ) . filter ( f - > f . getOrderPackageStatus ( ) . equals ( OrderPackageStatusConstant . yiqianshou . getValue ( ) ) ) . mapToInt ( DistributionParcelListEntity : : getQuantity ) . sum ( ) ;
@ -231,9 +230,9 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
DistributionLoadingNumDTO reservationSigningNum = distributionReservationMapper . selectReservationSigningNum ( d . getReservationId ( ) ) ;
if ( d . getDeliveryType ( ) . equals ( DistributionTypeConstant . shipie . getValue ( ) ) ) {
if ( d . getDeliveryType ( ) . equals ( DistributionTypeConstant . shipie . getValue ( ) ) ) {
List < DisStockListDetailEntity > disStockListDetailEntities = distributionReservationMapper . selectInventoryListByReservation ( d . getReservationId ( ) ) ;
if ( Func . isNotEmpty ( disStockListDetailEntities ) ) {
if ( Func . isNotEmpty ( disStockListDetailEntities ) ) {
//查询库存品未装车数
int inventoryuweizhuancghe = disStockListDetailEntities . stream ( ) . filter ( f - > f . getStockLockingStatus ( ) . equals ( OrderPackageLoadingStatusConstant . weizhuancghe . getValue ( ) ) ) . mapToInt ( DisStockListDetailEntity : : getNum ) . sum ( ) ;
weizhuangchejianshu + = inventoryuweizhuancghe ;
@ -390,18 +389,18 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
. eq ( DistributionLoadscanEntity : : getIsAbnormalLoading , 2 )
. ne ( DistributionLoadscanEntity : : getScanStatus , LoadingStatusConstant . quxiao . getValue ( ) )
) ;
if ( Func . isNotEmpty ( loadscanEntities ) ) {
if ( Func . isNotEmpty ( loadscanEntities ) ) {
Map < Long , DistributionLoadscanEntity > packageLoadingMap = loadscanEntities . stream ( ) . collect ( Collectors . toMap ( DistributionLoadscanEntity : : getPackageId , Function . identity ( ) , ( k1 , k2 ) - > k2 ) ) ;
List < Long > packageIds = loadscanEntities . stream ( ) . distinct ( ) . map ( DistributionLoadscanEntity : : getPackageId ) . collect ( Collectors . toList ( ) ) ;
List < DistributionParcelListEntity > distributionParcelListEntities = distributionParcelListService . listByIds ( packageIds ) ;
List < DistributionParcelListVO > distributionParcelListVOS = DistributionParcelListWrapper . build ( ) . listVO ( distributionParcelListEntities ) ;
distributionParcelListVOS . forEach ( p - > {
distributionParcelListVOS . forEach ( p - > {
DistributionNumberDetailDTO detailDTO = Func . copy ( p , DistributionNumberDetailDTO . class ) ;
if ( Func . isNotEmpty ( packageLoadingMap . get ( p . getId ( ) ) ) ) {
if ( Func . isNotEmpty ( packageLoadingMap . get ( p . getId ( ) ) ) ) {
DistributionLoadscanEntity distributionLoadscanEntity = packageLoadingMap . get ( p . getId ( ) ) ;
detailDTO . setLoadingTime ( distributionLoadscanEntity . getScanTime ( ) ) ;
detailDTO . setLoadingStatusName ( OrderPackageLoadingStatusConstant . weizhuancghe . getName ( ) ) ;
if ( distributionLoadscanEntity . getSignforState ( ) . equals ( LoadScanSigningStatusConstant . yiqianshou . getValue ( ) ) ) {
if ( distributionLoadscanEntity . getSignforState ( ) . equals ( LoadScanSigningStatusConstant . yiqianshou . getValue ( ) ) ) {
//签收
detailDTO . setSigningTime ( distributionLoadscanEntity . getSigningTime ( ) ) ;
detailDTO . setSigningStatusName ( OrderPackageStatusConstant . yiqianshou . getName ( ) ) ;
@ -413,15 +412,15 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
. eq ( DistributionStockEntity : : getStockArticle , p . getStockArticleId ( ) )
. eq ( DistributionStockEntity : : getParcelListId , p . getId ( ) )
) ;
if ( Func . isNotEmpty ( distributionStockEntity ) ) {
if ( Func . isNotEmpty ( distributionStockEntity ) ) {
detailDTO . setStockupTime ( distributionStockEntity . getCreateTime ( ) ) ;
}
detailDTO . setStockupStatusName ( p . getOrderPackageStockupStatusName ( ) ) ;
if ( detailDTO . getConditions ( ) . equals ( 1 ) ) {
if ( detailDTO . getConditions ( ) . equals ( 1 ) ) {
detailDTO . setConditionsName ( "订制品" ) ;
} else if ( detailDTO . getConditions ( ) . equals ( 2 ) ) {
} else if ( detailDTO . getConditions ( ) . equals ( 2 ) ) {
detailDTO . setConditionsName ( "库存品" ) ;
} else {
} else {
detailDTO . setConditionsName ( "零担" ) ;
}
detailDTOS . add ( detailDTO ) ;
@ -497,6 +496,176 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
@Override
@Transactional
public R signforInPC ( DistrilbutionAppsignforDTO distrilbutionloadingscanDTO ) {
String method = "DistributionSignforServiceImpl类,signforInPC方法" ;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;
if ( Func . isEmpty ( distrilbutionloadingscanDTO . getReservationId ( ) ) ) {
log . error ( method + "reservationId参数缺失" ) ;
return R . fail ( "请联系管理员!!!" ) ;
}
if ( Func . isEmpty ( distrilbutionloadingscanDTO . getDeliveryId ( ) ) ) {
log . error ( method + "deliveryId参数缺失" ) ;
return R . fail ( "请联系管理员!!!" ) ;
}
if ( Func . isEmpty ( distrilbutionloadingscanDTO . getBarcodes ( ) ) ) {
log . error ( method + "barCode参数缺失" ) ;
return R . fail ( "此库存品暂未进行备货,请联系管理员!!!" ) ;
}
String [ ] split = distrilbutionloadingscanDTO . getBarcodes ( ) . split ( "," ) ;
List < DisStockListDetailEntity > detailEntities = distributionReservationMapper . selectInventoryListByReservation ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
if ( Func . isNotEmpty ( split ) ) {
for ( String s : split ) {
List < DisStockListDetailEntity > inventoryPackage = detailEntities . stream ( ) . filter ( f - > Func . isNotEmpty ( f . getStockPackageCode ( ) ) & & f . getStockPackageCode ( ) . equals ( s ) ) . collect ( Collectors . toList ( ) ) ;
if ( Func . isNotEmpty ( inventoryPackage ) & & inventoryPackage . size ( ) = = 1 ) {
//查看这个库存品是否进行装车,
DistributionLoadscaninvnEntity loadscaninvnEntity = distributionLoadscaninvnService . getOne ( Wrappers . < DistributionLoadscaninvnEntity > query ( ) . lambda ( )
. eq ( DistributionLoadscaninvnEntity : : getReservationId , distrilbutionloadingscanDTO . getReservationId ( ) )
. eq ( DistributionLoadscaninvnEntity : : getDeliveryId , distrilbutionloadingscanDTO . getDeliveryId ( ) )
. eq ( DistributionLoadscaninvnEntity : : getOrderPackageCode , s )
. ne ( DistributionLoadscaninvnEntity : : getScanStatus , 1 ) ) ;
BladeUser user = AuthUtil . getUser ( ) ;
if ( Func . isNotEmpty ( loadscaninvnEntity ) ) {
if ( loadscaninvnEntity . getSignforState ( ) . equals ( LoadScanSigningStatusConstant . yiqianshou . getValue ( ) ) ) {
log . error ( method + "库存品:" + s + "已经签收,无需重复签收" ) ;
throw new RuntimeException ( "库存品:" + s + "已经签收,无需重复签收" ) ;
}
//存在装车数据,进行状态变更即可
loadscaninvnEntity . setSigningUserId ( user . getUserId ( ) ) ;
loadscaninvnEntity . setSigningUser ( user . getNickName ( ) ) ;
loadscaninvnEntity . setReceivedQuantity ( inventoryPackage . get ( 0 ) . getNum ( ) ) ;
loadscaninvnEntity . setSignforState ( LoadScanSigningStatusConstant . yiqianshou . getValue ( ) ) ;
loadscaninvnEntity . setSigningTime ( simpleDateFormat . format ( new Date ( ) ) ) ;
loadscaninvnEntity . setOneQclick ( 1 ) ;
distributionLoadscaninvnService . updateById ( loadscaninvnEntity ) ;
//维护签收数量
Integer j = distributionSignforMapper . updateSignforNum ( loadscaninvnEntity . getDeliveryId ( ) , loadscaninvnEntity . getReservationId ( ) , loadscaninvnEntity . getPackageNub ( ) ) ;
//更新签收人
Integer i = distributionSignforMapper . updateSignUser ( loadscaninvnEntity . getDeliveryId ( ) , loadscaninvnEntity . getReservationId ( ) , user ) ;
} else {
//不存在装车数据,需要进行装车数据的补录
//库存品未进行装车
//这里装车的数据需要进行补录
DistributionDeliveryListEntity deliveryListEntity = distributionDeliveryListMapper . selectById ( distrilbutionloadingscanDTO . getDeliveryId ( ) ) ;
DistributionDeliverySelfEntity distributionDeliverySelfEntity = new DistributionDeliverySelfDTO ( ) ;
if ( deliveryListEntity . getKind ( ) . equals ( ServiceConstant . DELIVERLIST_KIND_SELF ) ) {
distributionDeliverySelfEntity = distributionDeliverySelfMapper . selectOne ( new QueryWrapper < DistributionDeliverySelfEntity > ( ) . lambda ( )
. eq ( DistributionDeliverySelfEntity : : getIsMaster , ServiceConstant . IS_MASTER_YES )
. eq ( DistributionDeliverySelfEntity : : getDeliveryId , distrilbutionloadingscanDTO . getDeliveryId ( ) )
) ;
} else {
DistributionDeliveryTripartiteEntity distributionDeliveryTripartiteEntity = distributionDeliveryTripartiteMapper . selectOne ( new QueryWrapper < DistributionDeliveryTripartiteEntity > ( ) . lambda ( )
. eq ( DistributionDeliveryTripartiteEntity : : getDeliveryId , distrilbutionloadingscanDTO . getDeliveryId ( ) ) ) ;
BeanUtils . copyProperties ( distributionDeliveryTripartiteEntity , distributionDeliverySelfEntity ) ;
}
DistributionLoadscaninvnEntity distributionLoadscaninvnEntity = new DistributionLoadscaninvnEntity ( ) ;
if ( Func . isNotEmpty ( distributionDeliverySelfEntity . getDriverId ( ) ) ) {
distributionLoadscaninvnEntity . setDriverId ( distributionDeliverySelfEntity . getDriverId ( ) ) ;
}
if ( Func . isNotEmpty ( distributionDeliverySelfEntity . getDriverName ( ) ) ) {
distributionLoadscaninvnEntity . setDriverName ( distributionDeliverySelfEntity . getDriverName ( ) ) ;
}
if ( Func . isNotEmpty ( distributionDeliverySelfEntity . getVehicleId ( ) ) ) {
distributionLoadscaninvnEntity . setVehicleId ( distributionDeliverySelfEntity . getVehicleId ( ) ) ;
}
if ( Func . isNotEmpty ( distributionDeliverySelfEntity . getVehicleNub ( ) ) ) {
distributionLoadscaninvnEntity . setVehicleName ( distributionDeliverySelfEntity . getVehicleNub ( ) ) ;
}
if ( Func . isNotEmpty ( distributionDeliverySelfEntity . getDriverPhone ( ) ) ) {
distributionLoadscaninvnEntity . setDriverPhone ( distributionDeliverySelfEntity . getDriverPhone ( ) ) ;
}
distributionLoadscaninvnEntity . setLoadingId ( distributionDeliverySelfEntity . getId ( ) . toString ( ) ) ;
distributionLoadscaninvnEntity . setOrderPackageCode ( inventoryPackage . get ( 0 ) . getStockPackageCode ( ) ) ;
distributionLoadscaninvnEntity . setInventoryId ( inventoryPackage . get ( 0 ) . getStockListId ( ) ) ;
distributionLoadscaninvnEntity . setInventoryPackageId ( inventoryPackage . get ( 0 ) . getId ( ) ) ;
distributionLoadscaninvnEntity . setDeliveryId ( distrilbutionloadingscanDTO . getDeliveryId ( ) ) ;
distributionLoadscaninvnEntity . setReservationId ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
distributionLoadscaninvnEntity . setScanUser ( user . getNickName ( ) ) ;
distributionLoadscaninvnEntity . setScanTime ( simpleDateFormat . format ( new Date ( ) ) ) ;
distributionLoadscaninvnEntity . setPackageNub ( inventoryPackage . get ( 0 ) . getNum ( ) ) ;
distributionLoadscaninvnEntity . setScanStatus ( LoadingStatusConstant . yijianzhuangche . getValue ( ) ) ;
distributionLoadscaninvnEntity . setIsInsert ( LoadingIsInsertConstant . bulu . getValue ( ) ) ;
distributionLoadscaninvnEntity . setScanType ( "1" ) ;
distributionLoadscaninvnEntity . setType ( 2 ) ;
distributionLoadscaninvnEntity . setSignforState ( LoadScanSigningStatusConstant . yiqianshou . getValue ( ) ) ;
distributionLoadscaninvnEntity . setIsSignfor ( 1 ) ;
distributionLoadscaninvnEntity . setReceivedQuantity ( inventoryPackage . get ( 0 ) . getNum ( ) ) ;
distributionLoadscaninvnEntity . setOneClick ( 1 ) ;
distributionLoadscaninvnEntity . setOneQclick ( 1 ) ;
distributionLoadscaninvnEntity . setLoadedNub ( 1 ) ;
distributionLoadscaninvnEntity . setSigningUser ( user . getNickName ( ) ) ;
distributionLoadscaninvnEntity . setSigningUserId ( user . getUserId ( ) ) ;
distributionLoadscaninvnEntity . setSigningTime ( simpleDateFormat . format ( new Date ( System . currentTimeMillis ( ) + ( 6 * 1000 ) ) ) ) ;
distributionLoadscaninvnService . save ( distributionLoadscaninvnEntity ) ;
//更新装车数量
Integer j = distributionSignforMapper . updateSignforNum ( distributionLoadscaninvnEntity . getDeliveryId ( ) , distributionLoadscaninvnEntity . getReservationId ( ) , distributionLoadscaninvnEntity . getPackageNub ( ) ) ;
//更新签收人
Integer i = distributionSignforMapper . updateSignUser ( distributionLoadscaninvnEntity . getDeliveryId ( ) , distributionLoadscaninvnEntity . getReservationId ( ) , AuthUtil . getUser ( ) ) ;
//扣减库存
distributionStockListMapper . deductionQuantityStock ( distributionLoadscaninvnEntity . getInventoryId ( ) , distributionLoadscaninvnEntity . getLoadedNub ( ) ) ;
}
//修改对应库存品包件的签收数量
DisStockListDetailEntity disStockListDetailEntity = inventoryPackage . get ( 0 ) ;
disStockListDetailEntity . setStockSignfoStatus ( InventorySigningStatusConstant . yiqianshou . getValue ( ) ) ;
disStockListDetailEntity . setStockLockingStatus ( InventoryLoadingStatusConstant . yizhuangche . getValue ( ) ) ;
disStockListDetailService . updateById ( disStockListDetailEntity ) ;
} else {
//出现不属于当前客户的库存品包件信息
log . error ( method + "库存品包件信息异常,请检查!!!:{}" , s ) ;
throw new RuntimeException ( "数据异常,请联系管理员!!!" ) ;
}
}
}
return R . status ( true ) ;
}
@Override
@Transactional
public void maintenanceSignfor ( Long reservationId ) {
//签收
DistributionSignforEntity signforEntity = this . getOne ( Wrappers . < DistributionSignforEntity > query ( ) . lambda ( )
. eq ( DistributionSignforEntity : : getReservationId , reservationId )
) ;
if ( Func . isEmpty ( signforEntity ) ) {
log . error ( "维护签收异常是否存在异常包件失败" ) ;
return ;
}
List < DistributionLoadscanAbnormalEntity > loadscanAbnormalEntityList = distributionLoadscanAbnormalService . list ( Wrappers . < DistributionLoadscanAbnormalEntity > query ( ) . lambda ( )
. eq ( DistributionLoadscanAbnormalEntity : : getReservationId , reservationId )
) ;
if ( Func . isNotEmpty ( loadscanAbnormalEntityList ) ) {
//查看当前客户是否都已经完成审核
boolean flag = loadscanAbnormalEntityList . stream ( ) . allMatch ( p - > p . getAuditingStatus ( ) . equals ( LoadingAbnormalAuditingStatusConstant . yishenhe . getValue ( ) ) ) ;
if ( flag ) {
signforEntity . setIsHaveAbnormalPackage ( 1 ) ;
} else {
signforEntity . setIsHaveAbnormalPackage ( 2 ) ;
}
}
//统计客户装车数
Integer lad = distributionLoadscanMapper . selectCount ( new QueryWrapper < DistributionLoadscanEntity > ( ) . lambda ( ) . eq ( DistributionLoadscanEntity : : getReservationId , signforEntity . getReservationId ( ) ) ) . intValue ( ) ;
Integer nad = distributionLoadscaninvnMapper . selectCount ( new QueryWrapper < DistributionLoadscaninvnEntity > ( ) . lambda ( ) . eq ( DistributionLoadscaninvnEntity : : getReservationId , signforEntity . getReservationId ( ) ) ) . intValue ( ) ;
signforEntity . setLoadedNumber ( lad ) ;
signforEntity . setLoadedinNumber ( nad ) ;
//统计客户签收数
Integer lsad = distributionLoadscanMapper . selectCount ( new QueryWrapper < DistributionLoadscanEntity > ( ) . lambda ( )
. eq ( DistributionLoadscanEntity : : getReservationId , signforEntity . getReservationId ( ) )
. eq ( DistributionLoadscanEntity : : getSignforState , LoadScanSigningStatusConstant . yiqianshou . getValue ( ) )
. ne ( DistributionLoadscanEntity : : getScanStatus , LoadingStatusConstant . quxiao . getValue ( ) ) ) . intValue ( ) ;
Integer nsad = distributionLoadscaninvnMapper . selectCount ( new QueryWrapper < DistributionLoadscaninvnEntity > ( ) . lambda ( )
. eq ( DistributionLoadscaninvnEntity : : getReservationId , signforEntity . getReservationId ( ) )
. eq ( DistributionLoadscaninvnEntity : : getSignforState , LoadScanSigningStatusConstant . yiqianshou . getValue ( ) )
. ne ( DistributionLoadscaninvnEntity : : getScanStatus , LoadingStatusConstant . quxiao . getValue ( ) ) ) . intValue ( ) ;
signforEntity . setReceivedQuantity ( lsad ) ;
signforEntity . setReceivedinQuantity ( nsad ) ;
this . updateById ( signforEntity ) ;
}
private boolean judgmentSignIsHavePackage ( Long reservationId ) {
boolean flag = false ;
List < DistributionParcelListEntity > distributionParcelListEntities = distributionReservationMapper . selectPackageListByReservationId ( reservationId ) ;
@ -857,8 +1026,20 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
@Override
@Transactional
public R signfor ( DistrilbutionAppsignforDTO distrilbutionloadingscanDTO ) {
String nickName = null ;
Long userId = null ;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;
try {
nickName = AuthUtil . getNickName ( ) ;
userId = AuthUtil . getUserId ( ) ;
} catch ( Exception e ) {
log . error ( ">>>>> 签收异常报错" , e ) ;
throw new CustomerException ( "当前登录信息不已失效,请重新登录" ) ;
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss.SSS" ) ;
// ---------------------------------2023-09-09 包件签收调整---------------------------------------------------------------
//思路: 在于一个客户下不会出现重复的包条码
@ -888,7 +1069,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
return Resp . scanFail ( "此码不是订制品" , "此码不是订制品" ) ;
}
String signingTime = simpleDateFormat . format ( new Date ( ) ) ;
List < DistributionParcelListEntity > parcelListEntityList = distributionReservationMapper . selectPackageListByReservationId ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
//查询该客户是否存在该包件信息
List < DistributionParcelListEntity > collect = parcelListEntityList . stream ( ) . filter ( p - > p . getOrderPackageCode ( ) . equals ( distrilbutionloadingscanDTO . getBarcode ( ) ) ) . collect ( Collectors . toList ( ) ) ;
@ -905,21 +1086,11 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
//存在装车记录,进行修改即可
//进行签收记录数据的维护
loadscanEntity . setSigningTime ( signingTime ) ;
loadscanEntity . setSigningTime ( simpleDateFormat . format ( new Date ( ) ) ) ;
loadscanEntity . setSignforState ( 2 ) ;
loadscanEntity . setReceivedQuantity ( loadscanEntity . getLoadedNub ( ) ) ;
String nickName = AuthUtil . getNickName ( ) ;
Long userId = AuthUtil . getUserId ( ) ;
try {
nickName = AuthUtil . getNickName ( ) ;
userId = AuthUtil . getUserId ( ) ;
} catch ( Exception e ) {
log . error ( ">>>>> 签收异常报错" , e ) ;
throw new CustomerException ( "当前登录信息不已失效,请重新登录" ) ;
}
loadscanEntity . setSigningUser ( nickName ) ;
loadscanEntity . setSigningUserId ( userId ) ;
@ -973,10 +1144,12 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
if ( StringUtils . isNotBlank ( distributionDeliverySelfEntity . getVehicleId ( ) ) ) {
distributionLoadscanEntity . setVehicleId ( distributionDeliverySelfEntity . getVehicleId ( ) ) ;
}
distributionLoadscanEntity . setScanTime ( signingTime ) ;
Date loadScanTime = new Date ( ) ;
distributionLoadscanEntity . setScanTime ( simpleDateFormat . format ( loadScanTime ) ) ;
distributionLoadscanEntity . setPackageId ( collect . get ( 0 ) . getId ( ) ) ;
distributionLoadscanEntity . setOrderPackageCode ( distrilbutionloadingscanDTO . getBarcode ( ) ) ;
distributionLoadscanEntity . setSigningTime ( signingTime ) ;
Date signingTime = new Date ( System . currentTimeMillis ( ) + ( 1000 * 60 ) ) ;
distributionLoadscanEntity . setSigningTime ( simpleDateFormat . format ( signingTime ) ) ;
distributionLoadscanEntity . setReceivedQuantity ( collect . get ( 0 ) . getQuantity ( ) ) ;
distributionLoadscanEntity . setReservationId ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
distributionLoadscanEntity . setIsSignfor ( 2 ) ;
@ -1007,9 +1180,12 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
updatePackage . setOrderPackageStatus ( OrderPackageStatusConstant . yiqianshou . getValue ( ) ) ;
distributionParcelListService . updateById ( updatePackage ) ;
//维护签收包件状态
distributionStockArticleService . maintenanceOrderInfo ( collect . get ( 0 ) . getOrderCode ( ) , myCurrentWarehouse . getId ( ) ) ;
distributionStockArticleService . maintenanceOrderInfo ( collect . get ( 0 ) . getOrderCode ( ) , myCurrentWarehouse . getId ( ) ) ;
//推送信息至工厂
distributionAsyncService . sendFactory ( collect . get ( 0 ) , signingTime , distributionReservationEntity . getId ( ) , distributionReservationEntity . getReservationCode ( ) , myCurrentWarehouse . getName ( ) ) ;
distributionAsyncService . sendFactory ( collect . get ( 0 ) , simpleDateFormat . format ( new Date ( ) ) , distributionReservationEntity . getId ( ) , distributionReservationEntity . getReservationCode ( ) , myCurrentWarehouse . getName ( ) , nickName ) ;
//TODO 这里就需要一个异步的包件状态维护方法
} else if ( Func . isEmpty ( collect ) ) {
//这里就需要对该包件信息是否属于该配送计划进行判定。如果属于该配送计划则是串货。不是那么则需要提示是否异常签收或者返回的操作
@ -1039,7 +1215,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
if ( flag ) {
return R . fail ( 3006 , "异常签收" ) ;
} else {
return Resp . scanFail ( "异常签收包 件" , "不满足签收条件" ) ;
return Resp . scanFail ( "不满足签收条 件" , "不满足签收条件" ) ;
}
}
} else {
@ -1051,36 +1227,191 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionReservationService . maintenanceReservationInfo ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
//维护配送任务
distributionDeliveryListService . maintenanceDeliveryInfo ( distrilbutionloadingscanDTO . getDeliveryId ( ) ) ;
//TODO 在调用出库接口 通知欧派 准备删除
//
// DistributionSignforEntity distributionSignforEntity = distributionSignforMapper.getByReservationId(distrilbutionloadingscanDTO.getReservationId());
//
//// Long reservationId = distributionSignfor.getReservationId();
//// DistributionSignforEntity distributionSignforEntity1 = distributionSignforMapper.getByReservationId(reservationId);
//
// BladeUser user = AuthUtil.getUser();
// OrderStatusDTO orderStatusDTO = new OrderStatusDTO();
// orderStatusDTO.setStatus("7");//状态
// orderStatusDTO.setOperationTime(simpleDateFormat.format(new Date()));//操作时间
// //orderStatusDTO.setUsername(distributionSignforEntity.getSigneeName()); //签收人(名称)
// orderStatusDTO.setUsername(user.getUserName()); //签收人(名称)
// orderStatusDTO.setUnitNo(distrilbutionloadingscanDTO.getBarcode()); //包条码
// orderStatusDTO.setCurrentWarehouse(String.valueOf(myCurrentWarehouse.getWarehouseCode())); //当前仓库ID
//
// DistributionStockArticleEntity distributionStockArticle = new DistributionStockArticleEntity();
// Long stockArticleId = parcelListEntity.getStockArticleId();
// distributionStockArticle.setId(stockArticleId); // 需要一个stock_article_id` bigint(20) DEFAULT NULL COMMENT '在库订单ID',
// DistributionStockArticleEntity distributionStockArticleEntity = distributionStockArticleService.getOne(Condition.getQueryWrapper(distributionStockArticle));
// String brand = distributionStockArticleEntity.getBrand();
//
// Map<String, Object> mapState = new HashMap<>();
// mapState.put("orderStatusDTO", orderStatusDTO);
// mapState.put("brand", brand);
// rabbitTemplate.convertAndSend(RabbitConstant.NEW_SYSTEM_RECEIVE_INFO_QUEUE, mapState);
return Resp . scanSuccess ( "签收成功" , str ) ;
}
@Override
@Transactional
public R signforPC ( DistrilbutionAppsignforDTO distrilbutionloadingscanDTO ) {
String nickName = null ;
Long userId = null ;
try {
nickName = AuthUtil . getNickName ( ) ;
userId = AuthUtil . getUserId ( ) ;
} catch ( Exception e ) {
log . error ( ">>>>> 签收异常报错" , e ) ;
throw new CustomerException ( "当前登录信息不已失效,请重新登录" ) ;
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss.SSS" ) ;
// ---------------------------------2023-09-09 包件签收调整---------------------------------------------------------------
//思路: 在于一个客户下不会出现重复的包条码
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient . getMyCurrentWarehouse ( ) ;
if ( Objects . isNull ( myCurrentWarehouse ) ) {
throw new CustomerException ( 403 , "仓库信息不能为空" ) ;
}
// DistributionParcelListEntity parcelListEntity = distributionParcelListService.selectByOrderPackageCode(distrilbutionloadingscanDTO.getBarcodes(), myCurrentWarehouse.getId());
// if (Func.isEmpty(parcelListEntity)) {
// return Resp.scanFail("包件信息不存在", "包件信息不存在");
// }
DistributionReservationEntity distributionReservationEntity = distributionReservationMapper . selectById ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
if ( Func . isEmpty ( distributionReservationEntity ) ) {
log . error ( "########无效的预约单,reservationId:{}" , distrilbutionloadingscanDTO . getReservationId ( ) ) ;
return R . fail ( "服务器正忙!!" ) ;
}
if ( Func . isEmpty ( distrilbutionloadingscanDTO . getBarcodes ( ) ) ) {
log . error ( "########缺失参数,barcodes:{}" , distrilbutionloadingscanDTO . getBarcodes ( ) ) ;
return R . fail ( "服务器正忙!!" ) ;
}
List < DistributionParcelListEntity > parcelListEntities = distributionParcelListService . list ( Wrappers . < DistributionParcelListEntity > query ( ) . lambda ( )
. in ( DistributionParcelListEntity : : getOrderPackageCode , distrilbutionloadingscanDTO . getBarcodes ( ) )
. eq ( DistributionParcelListEntity : : getWarehouseId , myCurrentWarehouse . getId ( ) )
) ;
if ( Func . isNotEmpty ( parcelListEntities ) ) {
boolean flag = parcelListEntities . stream ( ) . anyMatch ( p - > p . getOrderPackageStatus ( ) . equals ( OrderPackageStatusConstant . yiqianshou . getValue ( ) ) ) ;
if ( flag ) {
log . error ( "########缺失参数,barcodes:{}" , distrilbutionloadingscanDTO . getBarcodes ( ) ) ;
return R . fail ( "存在已签收包件!!" ) ;
}
}
List < DistributionParcelListEntity > parcelListEntityList = distributionReservationMapper . selectPackageListByReservationId ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
//查询该客户是否存在该包件信息
String [ ] orderPackageCodes = distrilbutionloadingscanDTO . getBarcodes ( ) . split ( "," ) ;
if ( Func . isEmpty ( orderPackageCodes ) ) {
//缺失包件码参数
log . error ( "PC签收缺失包件码参数" ) ;
return R . fail ( "请联系管理员!!!" ) ;
}
List < String > orderpackages = new ArrayList < > ( ) ;
for ( String orderPackageCode : orderPackageCodes ) {
List < DistributionParcelListEntity > collect = parcelListEntityList . stream ( ) . filter ( p - > p . getOrderPackageCode ( ) . equals ( orderPackageCode ) ) . collect ( Collectors . toList ( ) ) ;
if ( Func . isNotEmpty ( collect ) & & collect . size ( ) = = 1 ) {
//存在则查询该包件是否进行装车
DistributionLoadscanEntity loadscanEntity = distributionLoadscanMapper . selectOne ( Wrappers . < DistributionLoadscanEntity > query ( ) . lambda ( )
. ne ( DistributionLoadscanEntity : : getScanStatus , 1 )
. eq ( DistributionLoadscanEntity : : getReservationId , distrilbutionloadingscanDTO . getReservationId ( ) )
. eq ( DistributionLoadscanEntity : : getDeliveryId , distrilbutionloadingscanDTO . getDeliveryId ( ) )
. eq ( DistributionLoadscanEntity : : getOrderPackageCode , collect . get ( 0 ) . getOrderPackageCode ( ) ) ) ;
if ( Func . isNotEmpty ( loadscanEntity ) ) {
if ( loadscanEntity . getSignforState ( ) . equals ( 2 ) ) {
return Resp . scanFail ( "重复扫描" , "重复扫描" ) ;
}
//存在装车记录,进行修改即可
//进行签收记录数据的维护
loadscanEntity . setSigningTime ( simpleDateFormat . format ( new Date ( ) ) ) ;
loadscanEntity . setSignforState ( 2 ) ;
loadscanEntity . setReceivedQuantity ( loadscanEntity . getLoadedNub ( ) ) ;
loadscanEntity . setSigningUser ( nickName ) ;
loadscanEntity . setSigningUserId ( userId ) ;
distributionLoadscanService . updateById ( loadscanEntity ) ;
//缺少一个异步维护包件签收的方法
// distributionAsyncService.changeOrderSignforStatus(collect.get(0));
Integer j = distributionSignforMapper . updateSignforNum ( loadscanEntity . getDeliveryId ( ) , loadscanEntity . getReservationId ( ) , loadscanEntity . getPackageNub ( ) ) ;
//更新签收人
Integer m = distributionSignforMapper . updateSignUser ( loadscanEntity . getDeliveryId ( ) , loadscanEntity . getReservationId ( ) , AuthUtil . getUser ( ) ) ;
//下架解托
warehouseUpdownTypeClient . downPackageOrDelTray ( loadscanEntity . getOrderPackageCode ( ) , myCurrentWarehouse . getId ( ) ) ;
//维护订单状态
} else {
//这里装车的数据需要进行补录
DistributionDeliveryListEntity deliveryListEntity = distributionDeliveryListMapper . selectById ( distrilbutionloadingscanDTO . getDeliveryId ( ) ) ;
DistributionDeliverySelfEntity distributionDeliverySelfEntity = new DistributionDeliverySelfDTO ( ) ;
if ( deliveryListEntity . getKind ( ) . equals ( ServiceConstant . DELIVERLIST_KIND_SELF ) ) {
distributionDeliverySelfEntity = distributionDeliverySelfMapper . selectOne ( new QueryWrapper < DistributionDeliverySelfEntity > ( ) . lambda ( )
. eq ( DistributionDeliverySelfEntity : : getIsMaster , ServiceConstant . IS_MASTER_YES )
. eq ( DistributionDeliverySelfEntity : : getDeliveryId , distrilbutionloadingscanDTO . getDeliveryId ( ) )
) ;
} else {
DistributionDeliveryTripartiteEntity distributionDeliveryTripartiteEntity = distributionDeliveryTripartiteMapper . selectOne ( new QueryWrapper < DistributionDeliveryTripartiteEntity > ( ) . lambda ( )
. eq ( DistributionDeliveryTripartiteEntity : : getDeliveryId , distrilbutionloadingscanDTO . getDeliveryId ( ) ) ) ;
BeanUtils . copyProperties ( distributionDeliveryTripartiteEntity , distributionDeliverySelfEntity ) ;
}
DistributionDeliveryListEntity listEntity = distributionDeliveryListMapper . selectById ( distrilbutionloadingscanDTO . getDeliveryId ( ) ) ;
if ( Func . isEmpty ( listEntity ) ) {
log . error ( "##########配送计划异常:{}" , listEntity ) ;
return Resp . scanFail ( "服务器正忙..." , "服务器正忙" ) ;
}
//查询配送计划的计划司机
DistributionLoadscanEntity distributionLoadscanEntity = new DistributionLoadscanEntity ( ) ;
if ( StringUtils . isNotBlank ( distributionDeliverySelfEntity . getDriverPhone ( ) ) ) {
distributionLoadscanEntity . setDriverPhone ( distributionDeliverySelfEntity . getDriverPhone ( ) ) ;
}
if ( StringUtils . isNotBlank ( distributionDeliverySelfEntity . getVehicleNub ( ) ) ) {
distributionLoadscanEntity . setVehicleName ( distributionDeliverySelfEntity . getVehicleNub ( ) ) ;
}
if ( StringUtils . isNotBlank ( distributionDeliverySelfEntity . getDriverId ( ) ) ) {
distributionLoadscanEntity . setDriverId ( distributionDeliverySelfEntity . getDriverId ( ) ) ;
}
if ( Func . isNotEmpty ( distributionDeliverySelfEntity . getId ( ) ) ) {
distributionLoadscanEntity . setLoadingId ( distributionDeliverySelfEntity . getId ( ) . toString ( ) ) ;
}
if ( Func . isNotEmpty ( distributionDeliverySelfEntity . getDriverName ( ) ) ) {
distributionLoadscanEntity . setDriverName ( distributionDeliverySelfEntity . getDriverName ( ) ) ;
}
if ( StringUtils . isNotBlank ( distributionDeliverySelfEntity . getVehicleId ( ) ) ) {
distributionLoadscanEntity . setVehicleId ( distributionDeliverySelfEntity . getVehicleId ( ) ) ;
}
Date loadScanTime = new Date ( ) ;
distributionLoadscanEntity . setScanTime ( simpleDateFormat . format ( loadScanTime ) ) ;
distributionLoadscanEntity . setPackageId ( collect . get ( 0 ) . getId ( ) ) ;
distributionLoadscanEntity . setOrderPackageCode ( collect . get ( 0 ) . getOrderPackageCode ( ) ) ;
Date signingTime = new Date ( System . currentTimeMillis ( ) + ( 1000 * 60 ) ) ;
distributionLoadscanEntity . setSigningTime ( simpleDateFormat . format ( signingTime ) ) ;
distributionLoadscanEntity . setReceivedQuantity ( collect . get ( 0 ) . getQuantity ( ) ) ;
distributionLoadscanEntity . setReservationId ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
distributionLoadscanEntity . setIsSignfor ( 2 ) ;
distributionLoadscanEntity . setIsInsert ( 2 ) ;
distributionLoadscanEntity . setSignforState ( 2 ) ;
distributionLoadscanEntity . setPackageNub ( collect . get ( 0 ) . getQuantity ( ) ) ;
distributionLoadscanEntity . setOrderId ( collect . get ( 0 ) . getStockArticleId ( ) ) ;
distributionLoadscanEntity . setLoadedNub ( collect . get ( 0 ) . getQuantity ( ) ) ;
distributionLoadscanEntity . setReservationId ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
distributionLoadscanEntity . setDeliveryId ( distrilbutionloadingscanDTO . getDeliveryId ( ) ) ;
distributionLoadscanEntity . setScanUser ( AuthUtil . getUser ( ) . getNickName ( ) ) ;
distributionLoadscanEntity . setSigningUser ( AuthUtil . getUser ( ) . getNickName ( ) ) ;
distributionLoadscanEntity . setSigningUserId ( AuthUtil . getUser ( ) . getUserId ( ) ) ;
distributionLoadscanEntity . setScanStatus ( LoadingStatusConstant . buluzhuangche . getValue ( ) ) ;
distributionLoadscanService . save ( distributionLoadscanEntity ) ;
//进行签收数量的修改
Integer i = distributionDeliveryListMapper . updateloadingTimeById ( distrilbutionloadingscanDTO . getDeliveryId ( ) ) ;
//更新装车包件数和签收包件数
Integer j = distributionSignforMapper . updateSignforByReservationId ( distributionLoadscanEntity . getDeliveryId ( ) , distributionLoadscanEntity . getReservationId ( ) , distributionLoadscanEntity . getPackageNub ( ) ) ;
//更新签收人
Integer m = distributionSignforMapper . updateSignUser ( distributionLoadscanEntity . getDeliveryId ( ) , distributionLoadscanEntity . getReservationId ( ) , AuthUtil . getUser ( ) ) ;
// 包件解托下架
// warehouseUpdownTypeClient.downPackageOrDelTray(collect.get(0).getOrderPackageCode(), myCurrentWarehouse.getId());
}
//修改包件状态为装车、签收
DistributionParcelListEntity updatePackage = collect . get ( 0 ) ;
updatePackage . setOrderPackageLoadingStatus ( OrderPackageLoadingStatusConstant . yizhuangche . getValue ( ) ) ;
updatePackage . setOrderPackageStatus ( OrderPackageStatusConstant . yiqianshou . getValue ( ) ) ;
distributionParcelListService . updateById ( updatePackage ) ;
//维护签收包件状态
distributionStockArticleService . maintenanceOrderInfo ( collect . get ( 0 ) . getOrderCode ( ) , myCurrentWarehouse . getId ( ) ) ;
//推送信息至工厂
distributionAsyncService . sendFactory ( collect . get ( 0 ) , simpleDateFormat . format ( new Date ( ) ) , distributionReservationEntity . getId ( ) , distributionReservationEntity . getReservationCode ( ) , myCurrentWarehouse . getName ( ) , nickName ) ;
//收集包件
orderpackages . add ( collect . get ( 0 ) . getOrderPackageCode ( ) ) ;
} else {
//一个客户下出现重复包条码
log . error ( "############出现重复包条码:{}" , collect ) ;
throw new RuntimeException ( "包件数据异常,请联系管理员!!!" ) ;
}
}
//维护客户
distributionReservationService . maintenanceReservationInfo ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
//维护配送任务
distributionDeliveryListService . maintenanceDeliveryInfo ( distrilbutionloadingscanDTO . getDeliveryId ( ) ) ;
return R . data ( orderpackages , "签收成功" ) ;
}
private boolean judgmentClient ( DistributionReservationEntity distributionReservationEntity , Long stockArticleId ) {
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService . getById ( stockArticleId ) ;
switch ( distributionReservationEntity . getDeliveryType ( ) ) {
@ -1233,6 +1564,16 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
@Override
public R signforack ( DistributionSignforDTO distributionSignfor ) {
DistributionSignforEntity signforEntity = distributionSignforMapper . getByReservationId ( distributionSignfor . getReservationId ( ) ) ;
if ( Func . isEmpty ( signforEntity ) ) {
log . error ( "预约查询签收信息错误" ) ;
return R . fail ( "请联系管理员!!!" ) ;
}
if ( signforEntity . getReceivedQuantity ( ) < = 0 ) {
log . error ( "signforack############未进行签收上传图片" ) ;
return Resp . scanFail ( "请先进行签收扫描后上传图片" , "请先进行签收扫描后上传图片" ) ;
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ( "yyyy-MM-dd hh:mm:ss" ) ;
log . info ( "=============签收图片数据为:{}" , distributionSignfor . getMap ( ) ) ;
if ( ObjectUtils . isNotNull ( distributionSignfor . getMap ( ) ) ) {
@ -1287,7 +1628,6 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
//查询这个包件是否满足该客户的要求
DistributionReservationEntity reservationEntity = distributionReservationMapper . selectById ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService . getById ( parcelListEntity . getStockArticleId ( ) ) ;
DistributionSignforEntity signforEntity = distributionSignforMapper . getByReservationId ( reservationEntity . getId ( ) ) ;
DistributionDeliveryListEntity distributionDeliveryListEntity = distributionDeliveryListMapper . selectById ( distrilbutionloadingscanDTO . getDeliveryId ( ) ) ;
DistributionDeliverySelfEntity distributionDeliverySelfEntity = new DistributionDeliverySelfEntity ( ) ;
@ -1351,6 +1691,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscanEntity . setSignforState ( 2 ) ;
distributionLoadscanEntity . setPackageNub ( parcelListEntity . getQuantity ( ) ) ;
distributionLoadscanEntity . setIsAbnormalSigning ( 2 ) ;
distributionLoadscanEntity . setIsAbnormalLoading ( 2 ) ;
distributionLoadscanEntity . setOrderId ( parcelListEntity . getStockArticleId ( ) ) ;
distributionLoadscanEntity . setReservationId ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
distributionLoadscanEntity . setDeliveryId ( distrilbutionloadingscanDTO . getDeliveryId ( ) ) ;
@ -1422,10 +1763,10 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscanEntity . setScanUser ( AuthUtil . getUser ( ) . getUserName ( ) ) ;
distributionLoadscanEntity . setSigningUser ( AuthUtil . getUser ( ) . getUserName ( ) ) ;
distributionLoadscanEntity . setSigningUserId ( AuthUtil . getUser ( ) . getUserId ( ) ) ;
if ( Func . isEmpty ( loadscanEntity ) ) {
if ( Func . isEmpty ( loadscanEntity ) ) {
distributionLoadscanService . save ( distributionLoadscanEntity ) ;
Integer j = distributionSignforMapper . updateSignforNum ( distributionLoadscanEntity . getDeliveryId ( ) , distributionLoadscanEntity . getReservationId ( ) , distributionLoadscanEntity . getPackageNub ( ) ) ;
} else {
} else {
distributionLoadscanService . updateById ( distributionLoadscanEntity ) ;
Integer j = distributionSignforMapper . updateSignforNum ( distributionLoadscanEntity . getDeliveryId ( ) , distributionLoadscanEntity . getReservationId ( ) , distributionLoadscanEntity . getPackageNub ( ) ) ;
}
@ -1442,7 +1783,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
parcelListEntity . setOrderPackageStatus ( OrderPackageStatusConstant . yiqianshou . getValue ( ) ) ;
distributionParcelListService . updateById ( parcelListEntity ) ;
//维护订单信息
distributionStockArticleService . maintenanceOrderInfo ( parcelListEntity . getOrderCode ( ) , parcelListEntity . getWarehouseId ( ) ) ;
distributionStockArticleService . maintenanceOrderInfo ( parcelListEntity . getOrderCode ( ) , parcelListEntity . getWarehouseId ( ) ) ;
break ;
}
//查询一次是否进行了异常装车,如果没有进行异常装车数据进行审核
@ -1451,7 +1792,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
. eq ( DistributionLoadscanAbnormalEntity : : getDeliveryListId , distrilbutionloadingscanDTO . getDeliveryId ( ) )
. eq ( DistributionLoadscanAbnormalEntity : : getPackageCode , distrilbutionloadingscanDTO . getBarcode ( ) )
) ;
if ( Func . isEmpty ( list ) ) {
if ( Func . isEmpty ( list ) ) {
BladeUser user = AuthUtil . getUser ( ) ;
DistributionLoadscanAbnormalEntity distributionLoadscanAbnormalEntity = new DistributionLoadscanAbnormalEntity ( ) ;
distributionLoadscanAbnormalEntity . setAuditingStatus ( LoadingAbnormalAuditingStatusConstant . daishenhe . getValue ( ) ) ;
@ -1472,12 +1813,13 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscanAbnormalService . save ( distributionLoadscanAbnormalEntity ) ;
}
//修改对应的签收为可审核
DistributionSignforEntity signforEntity = distributionSignforMapper . getByReservationId ( reservationEntity . getId ( ) ) ;
signforEntity . setIsHaveAbnormalPackage ( 2 ) ;
this . updateById ( signforEntity ) ;
//修改包件的签收数量
distributionParcelListMapper . updateOrderPackageCodeById ( parcelListEntity . getId ( ) , OrderPackageStatusConstant . yiqianshou . getValue ( ) ) ;
distributionParcelListMapper . updateOrderPackageCodeById ( parcelListEntity . getId ( ) , OrderPackageStatusConstant . yiqianshou . getValue ( ) ) ;
//还需要维护包件状态
distributionAsyncService . maintenanceOrderStatus ( parcelListEntity . getOrderCode ( ) , parcelListEntity . getWarehouseId ( ) ) ;
distributionAsyncService . maintenanceOrderStatus ( parcelListEntity . getOrderCode ( ) , parcelListEntity . getWarehouseId ( ) ) ;
} else {
log . error ( "############出现相同的包件码:{}" , distrilbutionloadingscanDTO . getBarcode ( ) ) ;
return Resp . scanFail ( "操作失败" , "包件信息有误" ) ;
@ -1633,7 +1975,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
@Override
public List < DistributionAppSignforVO > getAppDeliveryreservationListPage ( DistributionAppDeliveryListDTO distributionDeliveryList ) {
public List < DistributionAppSignforVO > getAppDeliveryreservationListPage ( DistributionAppDeliveryListDTO distributionDeliveryList ) {
//查询客户
List < DistributionAppSignforVO > customList = baseMapper . selectAppcustomListPage ( distributionDeliveryList . getId ( ) ) ;
@ -1708,7 +2050,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
// 库存品进行装车,这里需要对库存品扫描数据进行签收的状态标记
loadscaninvnEntity . setSigningUserId ( user . getUserId ( ) ) ;
loadscaninvnEntity . setSigningUser ( user . getUser Name ( ) ) ;
loadscaninvnEntity . setSigningUser ( user . getNick Name ( ) ) ;
loadscaninvnEntity . setReceivedQuantity ( inventory . get ( 0 ) . getNum ( ) ) ;
loadscaninvnEntity . setSignforState ( LoadScanSigningStatusConstant . yiqianshou . getValue ( ) ) ;
loadscaninvnEntity . setSigningTime ( simpleDateFormat . format ( new Date ( ) ) ) ;
@ -1753,6 +2095,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscaninvnEntity . setLoadingId ( distributionDeliverySelfEntity . getId ( ) . toString ( ) ) ;
distributionLoadscaninvnEntity . setOrderPackageCode ( inventory . get ( 0 ) . getStockPackageCode ( ) ) ;
distributionLoadscaninvnEntity . setInventoryId ( inventory . get ( 0 ) . getStockListId ( ) ) ;
distributionLoadscaninvnEntity . setInventoryPackageId ( inventory . get ( 0 ) . getId ( ) ) ;
distributionLoadscaninvnEntity . setDeliveryId ( distrilbutionloadingscanDTO . getDeliveryId ( ) ) ;
distributionLoadscaninvnEntity . setReservationId ( distrilbutionloadingscanDTO . getReservationId ( ) ) ;
distributionLoadscaninvnEntity . setScanUser ( user . getUserName ( ) ) ;
@ -1946,7 +2289,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
int reservationTotal = reservationZeroPackageEntityList . stream ( ) . mapToInt ( DistributionReservationZeroPackageEntity : : getQuantity ) . sum ( ) ;
distributionAppStockArticleVO . setReservationNum ( reservationTotal ) ;
List < DistributionParcelNumberVO > parcelNumberVOS = distributionReservationMapper . selectReservationZeroOrderDetail ( orderId , Long . parseLong ( distributionDeliveryList . getReservationId ( ) ) ) ;
parcelNumberVOS . forEach ( p - > {
parcelNumberVOS . forEach ( p - > {
DistributionLoadscanEntity loadscanEntity = distributionLoadscanService . getOne ( Wrappers . < DistributionLoadscanEntity > query ( ) . lambda ( ) . eq ( DistributionLoadscanEntity : : getReservationId , distributionDeliveryList . getReservationId ( ) ) . eq ( DistributionLoadscanEntity : : getOrderId , orderId ) . eq ( DistributionLoadscanEntity : : getPackageId , p . getParcelListId ( ) ) . ne ( DistributionLoadscanEntity : : getScanStatus , LoadingStatusConstant . quxiao . getValue ( ) ) ) ;
p . setLoadingNum ( 0 ) ;
p . setSigningNum ( 0 ) ;
@ -1960,13 +2303,13 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
}
orderVos . add ( distributionAppStockArticleVO ) ;
}
orderVos . add ( distributionAppStockArticleVO ) ;
}
}
return orderVos ;
}
}
// Map<Long, List<DistributionLoadscanEntity>> orderMap = distributionLoadscanEntities.stream().collect(Collectors.groupingBy(DistributionLoadscanEntity::getOrderId));
@ -2286,6 +2629,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
@Override
@Transactional
public R oneclick ( DistributionSignforDTO distributionSignfor ) {
BladeUser user = AuthUtil . getUser ( ) ;
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient . getMyCurrentWarehouse ( ) ;
if ( Objects . isNull ( myCurrentWarehouse ) ) {
throw new CustomerException ( 403 , "仓库信息不能为空" ) ;
@ -2342,11 +2687,11 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;
if ( Func . equals ( distributionSignforEntity . getDriverSigning ( ) , SignforDriverSigningStatusConstant . yiqianshou . getValue ( ) ) ) {
log . error ( "###############重复签收+{" + distributionSignforEntity + "}" ) ;
return R . fail ( "签收失败" ) ;
}
BladeUser user = AuthUtil . getUser ( ) ;
//处理库存品
//查询出该客户下的库存品信息
List < DisStockListDetailEntity > detailEntities = distributionReservationMapper . selectInventoryListByReservation ( distributionSignforEntity . getReservationId ( ) ) ;
@ -2449,8 +2794,6 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
return R . fail ( "库存品未进行备货操作" ) ;
}
}
//查询出该签收任务下的客户对应的所有包件和库存品信息
List < DistributionParcelListEntity > parcelListEntityList = distributionReservationMapper . selectPackageListByReservationId ( distributionSignforEntity . getReservationId ( ) ) ;
//包件不需要考虑备货、装车直接可进行签收 过滤已装车的包件
@ -2489,7 +2832,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
} else if ( distributionLoadscanEntity . getSignforState ( ) . equals ( LoadScanSigningStatusConstant . weiqianshou . getValue ( ) ) ) {
if ( distributionLoadscanEntity . getLoadedNub ( ) = = parcelNumberEntity . getReservationNum ( ) ) {
if ( distributionLoadscanEntity . getLoadedNub ( ) . equals ( parcelNumberEntity . getReservationNum ( ) ) ) {
//装车数量和计划数量一致,这里进行签收数量的维护
//修改这里装车数量已经维护好了,只需要维护签收数量
distributionParcelNumberEntity . setSigninQuantity ( signinQuantity . add ( reservationNum ) . intValue ( ) ) ;
@ -2688,15 +3031,14 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionAsyncService . checkSignStatus ( loadscanEntities . getPackageId ( ) , loadscanEntities . getReservationId ( ) , loadscanEntities . getDeliveryId ( ) ) ;
}
}
distributionAsyncService . sendFactory ( parcelListEntity , signingTime , reservationEntity . getId ( ) , reservationEntity . getReservationCode ( ) , myCurrentWarehouse . getName ( ) ) ;
distributionAsyncService . sendFactory ( parcelListEntity , simpleDateFormat . format ( new Date ( ) ) , reservationEntity . getId ( ) , reservationEntity . getReservationCode ( ) , myCurrentWarehouse . getName ( ) , user . getNick Name ( ) ) ;
packageIds . add ( parcelListEntity . getId ( ) ) ;
orderCodes . add ( parcelListEntity . getOrderCode ( ) ) ;
}
//批量维护订单信息
if ( Func . isNotEmpty ( orderCodes ) ) {
if ( Func . isNotEmpty ( orderCodes ) ) {
String orderCode = orderCodes . stream ( ) . distinct ( ) . collect ( Collectors . joining ( "," ) ) ;
distributionStockArticleService . maintenanceOrderInfo ( orderCode , myCurrentWarehouse . getId ( ) ) ;
distributionStockArticleService . maintenanceOrderInfo ( orderCode , myCurrentWarehouse . getId ( ) ) ;
}
@ -2706,28 +3048,6 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionAsyncService . sendReviewFactory ( distributionSignforEntity . getId ( ) , myCurrentWarehouse . getName ( ) , myCurrentWarehouse . getId ( ) ) ;
}
}
//TODO 调用出库接口
// for (DistributionParcelListEntity distributionParcelListEntity : parcelListEntityList) {
// //根据ID获取品牌
// DistributionStockArticleEntity distributionStockArticle = new DistributionStockArticleEntity();
// distributionStockArticle.setId(distributionParcelListEntity.getStockArticleId());
// DistributionStockArticleEntity distributionStockArticleEntity = distributionStockArticleService.getOne(Condition.getQueryWrapper(distributionStockArticle));
// String brand = distributionStockArticleEntity.getBrand(); //获取品牌
//
// OrderStatusDTO orderStatusDTO = new OrderStatusDTO();
// orderStatusDTO.setStatus("7");//状态
// orderStatusDTO.setOperationTime(simpleDateFormat.format(new Date()));//操作时间
// orderStatusDTO.setUsername(user.getUserName()); //签收人(名称)
// orderStatusDTO.setUnitNo(distributionParcelListEntity.getOrderPackageCode()); //包条码
// orderStatusDTO.setCurrentWarehouse(String.valueOf(distributionParcelListEntity.getWarehouseId())); //当前仓库ID
// Map<String, Object> mapState = new HashMap<>();
// mapState.put("orderStatusDTO", orderStatusDTO);
// mapState.put("brand", brand);
// //rabbitTemplate.convertAndSend(RabbitConstant.NEW_SYSTEM_RECEIVE_INFO_QUEUE, mapState);
// rabbitTemplate.convertAndSend(RabbitConstant.NEW_SYSTEM_RECEIVE_INFO_EXCHANGE, RabbitConstant.NEW_SYSTEM_RECEIVE_INFO_ROUTING, mapState);
// System.out.println("发送消息成功");
// }
//维护客户信息状态
reservationEntity . setLoadingStatus ( ReservationLoadingStatusConstant . yizhuangche . getValue ( ) ) ;
@ -2762,6 +3082,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
@Override
public R offline ( String offlineJson ) {
return null ;
@ -2986,9 +3307,6 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
@Override
public R loadingAbnormalPackageListDetail ( Long id ) {
DistributionSignforEntity signforEntity = this . getById ( id ) ;
if ( ! Func . equals ( signforEntity . getIsHaveAbnormalPackage ( ) , 2 ) ) {
return R . fail ( 8000 , "客户无异常装车包件" ) ;
}
//这里就需要进行该客户的异常包件列表进行查询
List < DistributionLoadscanAbnormalVO > loadscanAbnormalVOS = baseMapper . selectAbnormalPackageList ( signforEntity . getReservationId ( ) , signforEntity . getDeliveryId ( ) ) ;
loadscanAbnormalVOS . forEach ( p - > {
@ -3063,6 +3381,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
@Override
@Transactional
public R loadingAbnormalPackageListAuditing ( String ids ) {
// ------------------------------------2023-09-27 异常装车包件审核----------------------------------------------
// 思路:
@ -3073,6 +3392,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
log . error ( "#############异常包件信息异常:{}" , distributionLoadscanAbnormalEntities ) ;
return R . fail ( 3000 , "审核失败" ) ;
}
List < Long > reservationId = distributionLoadscanAbnormalEntities . stream ( ) . distinct ( ) . map ( DistributionLoadscanAbnormalEntity : : getReservationId ) . collect ( Collectors . toList ( ) ) ;
if ( distributionLoadscanAbnormalEntities . size ( ) = = 1 ) {
DistributionLoadscanAbnormalEntity distributionLoadscanAbnormalEntity = distributionLoadscanAbnormalEntities . get ( 0 ) ;
//需要将该包件追加至该客户之下
@ -3114,7 +3434,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionParcelListService . updateById ( parcelListEntity ) ;
distributionLoadscanAbnormalEntity . setAuditingStatus ( 2 ) ;
distributionLoadscanAbnormalEntity . setAuditingTime ( new Date ( ) ) ;
distributionLoadscanAbnormalEntity . setAuditingUser ( AuthUtil . getUser ( ) . getUser Name ( ) ) ;
distributionLoadscanAbnormalEntity . setAuditingUser ( AuthUtil . getUser ( ) . getNick Name ( ) ) ;
distributionLoadscanAbnormalService . updateById ( distributionLoadscanAbnormalEntity ) ;
reservationEntity . setReservationNum ( reservationEntity . getReservationNum ( ) + distributionLoadscanAbnormalEntity . getLoadingQuantity ( ) ) ;
distributionReservationMapper . updateById ( reservationEntity ) ;
@ -3123,9 +3443,10 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
. eq ( DistributionLoadscanEntity : : getDeliveryId , distributionLoadscanAbnormalEntity . getDeliveryListId ( ) )
. eq ( DistributionLoadscanEntity : : getPackageId , distributionLoadscanAbnormalEntity . getPackageId ( ) )
. eq ( DistributionLoadscanEntity : : getOrderPackageCode , distributionLoadscanAbnormalEntity . getPackageCode ( ) )
. ne ( DistributionLoadscanEntity : : getScanStatus , LoadingStatusConstant . quxiao . getValue ( ) )
) ;
loadscanEntity . setIsAbnormalLoading ( 1 ) ;
if ( loadscanEntity . getSignforState ( ) . equals ( LoadScanSigningStatusConstant . yiqianshou . getValue ( ) ) ) {
if ( loadscanEntity . getSignforState ( ) . equals ( LoadScanSigningStatusConstant . yiqianshou . getValue ( ) ) ) {
//已经进行签收了 这里就需要将异常签收的状态变更为正常
loadscanEntity . setIsAbnormalSigning ( 1 ) ;
}
@ -3174,7 +3495,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionParcelListService . updateById ( parcelListEntity ) ;
a . setAuditingStatus ( 2 ) ;
a . setAuditingTime ( new Date ( ) ) ;
a . setAuditingUser ( AuthUtil . getUser ( ) . getUser Name ( ) ) ;
a . setAuditingUser ( AuthUtil . getUser ( ) . getNick Name ( ) ) ;
distributionLoadscanAbnormalService . updateById ( a ) ;
reservationEntity . setReservationNum ( reservationEntity . getReservationNum ( ) + a . getLoadingQuantity ( ) ) ;
distributionReservationMapper . updateById ( reservationEntity ) ;
@ -3182,8 +3503,24 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
} else {
return R . fail ( 3000 , "无需审批" ) ;
}
//批量审核
}
DistributionSignforEntity signforEntity = this . getOne ( Wrappers . < DistributionSignforEntity > query ( ) . lambda ( )
. eq ( DistributionSignforEntity : : getReservationId , reservationId . get ( 0 ) )
) ;
//维护签收的异常签收状态
this . maintenanceSignfor ( signforEntity . getReservationId ( ) ) ;
//维护预约单状态
distributionReservationService . maintenanceReservationInfo ( reservationId . get ( 0 ) ) ;
//维护预约单数量
distributionReservationService . maintenanceReservationNum ( reservationId . get ( 0 ) ) ;
//维护配送任务状态
distributionDeliveryListService . maintenanceDeliveryInfo ( signforEntity . getDeliveryId ( ) ) ;
//维护配送任务数量
distributionDeliveryListService . maintenanceDeliveryNum ( signforEntity . getDeliveryId ( ) ) ;
return R . success ( "操作成功" ) ;
}
@ -3201,6 +3538,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
@Override
public Boolean updatePicture ( DistributionSignforDTO distributionSignfor ) {
if ( ObjectUtils . isNotNull ( distributionSignfor . getMap ( ) ) ) {
List < DistributionSignPrintEntity > distributionSignPrintList = new ArrayList < > ( ) ;
distributionSignfor . getMap ( ) . forEach ( ( k , v ) - > {