|
|
@ -6097,6 +6097,190 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib |
|
|
|
return R.data(retentionScanVos); |
|
|
|
return R.data(retentionScanVos); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public R retentionPC(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO) { |
|
|
|
|
|
|
|
if (distrilbutionloadingscanDTO.getBarcode().isEmpty()) { |
|
|
|
|
|
|
|
log.error("参数缺失Barcode:{}", distrilbutionloadingscanDTO.getBarcode()); |
|
|
|
|
|
|
|
return R.fail(403, "数据错误"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//查询包件
|
|
|
|
|
|
|
|
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse(); |
|
|
|
|
|
|
|
if (Func.isEmpty(myCurrentWarehouse)) { |
|
|
|
|
|
|
|
return R.fail(403, "未授权!!!"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
List<String> barcode = Func.toStrList(distrilbutionloadingscanDTO.getBarcode()); |
|
|
|
|
|
|
|
List<DistributionParcelListEntity> parcelListEntities = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda() |
|
|
|
|
|
|
|
.in(DistributionParcelListEntity::getOrderPackageCode, barcode) |
|
|
|
|
|
|
|
.eq(DistributionParcelListEntity::getWarehouseId, myCurrentWarehouse.getId()) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
if (!parcelListEntities.isEmpty()) { |
|
|
|
|
|
|
|
boolean flag = parcelListEntities.stream().allMatch(a -> OrderPackageLoadingStatusConstant.yizhuangche.getValue().equals(a.getOrderPackageLoadingStatus()) && !OrderPackageStatusConstant.yiqianshou.getValue().equals(a.getOrderPackageStatus())); |
|
|
|
|
|
|
|
if (!flag){ |
|
|
|
|
|
|
|
String str = parcelListEntities.stream().filter(a -> OrderPackageLoadingStatusConstant.yizhuangche.getValue().equals(a.getOrderPackageLoadingStatus()) && !OrderPackageStatusConstant.yiqianshou.getValue().equals(a.getOrderPackageStatus())).map(DistributionParcelListEntity::getOrderCode).distinct().collect(Collectors.joining(",")); |
|
|
|
|
|
|
|
return R.fail(str+"不满足滞留"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
Integer retentionType = distrilbutionloadingscanDTO.getRetentionType(); |
|
|
|
|
|
|
|
Long deliveryId = null; |
|
|
|
|
|
|
|
if (Func.isEmpty(distrilbutionloadingscanDTO.getDeliveryId())) { |
|
|
|
|
|
|
|
//不在车次任务内进行扫描
|
|
|
|
|
|
|
|
//查询此包件属于哪个车次
|
|
|
|
|
|
|
|
List<DistributionLoadscanEntity> loadscanEntityList = distributionLoadscanService.list(Wrappers.<DistributionLoadscanEntity>query().lambda() |
|
|
|
|
|
|
|
.in(DistributionLoadscanEntity::getOrderPackageCode, barcode) |
|
|
|
|
|
|
|
.ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()) |
|
|
|
|
|
|
|
.ne(DistributionLoadscanEntity::getSignforState, LoadScanSigningStatusConstant.yiqianshou.getValue()) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
if (loadscanEntityList.isEmpty()) { |
|
|
|
|
|
|
|
//查询库存品
|
|
|
|
|
|
|
|
List<DistributionLoadscaninvnEntity> loadscaninvnEntityList = distributionLoadscaninvnService.list(Wrappers.<DistributionLoadscaninvnEntity>query().lambda() |
|
|
|
|
|
|
|
.in(DistributionLoadscaninvnEntity::getOrderPackageCode, barcode) |
|
|
|
|
|
|
|
.ne(DistributionLoadscaninvnEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()) |
|
|
|
|
|
|
|
.ne(DistributionLoadscaninvnEntity::getSignforState, LoadScanSigningStatusConstant.yiqianshou.getValue()) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
if (!loadscaninvnEntityList.isEmpty()) { |
|
|
|
|
|
|
|
deliveryId = loadscaninvnEntityList.stream().map(DistributionLoadscaninvnEntity::getDeliveryId).distinct().collect(Collectors.toList()).get(0); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
deliveryId = null; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
deliveryId = loadscanEntityList.stream().map(DistributionLoadscanEntity::getDeliveryId).distinct().collect(Collectors.toList()).get(0); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (deliveryId == null) { |
|
|
|
|
|
|
|
return Resp.scanFail("此包件无装车记录", "此包件无装车记录"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
deliveryId = distrilbutionloadingscanDTO.getDeliveryId(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
DistributionDeliveryListEntity deliveryListEntity = this.getById(deliveryId); |
|
|
|
|
|
|
|
List<DistributionRetentionScanVo> retentionScanVos = new ArrayList<>(); |
|
|
|
|
|
|
|
switch (retentionType) { |
|
|
|
|
|
|
|
case 1: |
|
|
|
|
|
|
|
//包件--库存品 和包件
|
|
|
|
|
|
|
|
List<DistributionLoadscanEntity> loadscanEntityList = distributionLoadscanService.list(Wrappers.<DistributionLoadscanEntity>query().lambda() |
|
|
|
|
|
|
|
.eq(DistributionLoadscanEntity::getOrderPackageCode, distrilbutionloadingscanDTO.getBarcode()) |
|
|
|
|
|
|
|
.ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()) |
|
|
|
|
|
|
|
.eq(DistributionLoadscanEntity::getWarehouseId, myCurrentWarehouse.getId()) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
if (Func.isNotEmpty(loadscanEntityList)) { |
|
|
|
|
|
|
|
if (loadscanEntityList.size() == 1) { |
|
|
|
|
|
|
|
//包件存在装车才能进行滞留
|
|
|
|
|
|
|
|
//通过配送任务和包件确定预约信息
|
|
|
|
|
|
|
|
DistributionLoadscanEntity distributionLoadscanEntity = loadscanEntityList.get(0); |
|
|
|
|
|
|
|
// if (2 == distributionLoadscanEntity.getIsAbnormalLoading()) {
|
|
|
|
|
|
|
|
// //异常装车未进行审核
|
|
|
|
|
|
|
|
// return Resp.scanFail("包件存在异常操作,请先处理异常", "包件存在异常操作,请先处理异常");
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
if (2 == distributionLoadscanEntity.getSignforState()) { |
|
|
|
|
|
|
|
log.info("滞留扫描失败,包件已签收>>>>>>>>>>>>>>>>>>>>>>>reservationId:{},packageCode:{}", distributionLoadscanEntity.getReservationId(), distributionLoadscanEntity.getOrderPackageCode()); |
|
|
|
|
|
|
|
return Resp.scanFail("包件已签收", "包件已签收"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
DistributionRetentionScanVo retentionScanVo = baseMapper.selectRetentionPackage(distributionLoadscanEntity.getOrderPackageCode(), distributionLoadscanEntity.getDeliveryId(), myCurrentWarehouse.getId()); |
|
|
|
|
|
|
|
if (Func.isEmpty(retentionScanVo)){ |
|
|
|
|
|
|
|
//不存在计划之中属于异常驳回的情况
|
|
|
|
|
|
|
|
retentionScanVo = new DistributionRetentionScanVo(); |
|
|
|
|
|
|
|
retentionScanVo.setDeliveryId(distributionLoadscanEntity.getDeliveryId()); |
|
|
|
|
|
|
|
retentionScanVo.setOrderId(distributionLoadscanEntity.getOrderId()); |
|
|
|
|
|
|
|
retentionScanVo.setReservationId(distributionLoadscanEntity.getReservationId()); |
|
|
|
|
|
|
|
retentionScanVo.setTrainNumber(distributionLoadscanEntity.getTrainNumber()); |
|
|
|
|
|
|
|
retentionScanVo.setConditions(1); |
|
|
|
|
|
|
|
retentionScanVo.setScanType(1); |
|
|
|
|
|
|
|
retentionScanVo.setRetentionQuantity(1); |
|
|
|
|
|
|
|
retentionScanVo.setOrderPackageId(distributionLoadscanEntity.getPackageId()); |
|
|
|
|
|
|
|
//查询包件
|
|
|
|
|
|
|
|
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(distributionLoadscanEntity.getPackageId()); |
|
|
|
|
|
|
|
retentionScanVo.setOrderCode(parcelListEntity.getOrderCode()); |
|
|
|
|
|
|
|
retentionScanVo.setOrderPackageStatus(parcelListEntity.getOrderPackageStatus()); |
|
|
|
|
|
|
|
retentionScanVo.setOrderPackageCode(parcelListEntity.getOrderPackageCode()); |
|
|
|
|
|
|
|
retentionScanVo.setWaybillNumber(parcelListEntity.getWaybillNumber()); |
|
|
|
|
|
|
|
retentionScanVo.setWaybillId(parcelListEntity.getWaybillId()); |
|
|
|
|
|
|
|
DistributionReservationEntity reservationEntity = distributionReservationMapper.selectById(distributionLoadscanEntity.getReservationId()); |
|
|
|
|
|
|
|
retentionScanVo.setReservationCode(reservationEntity.getReservationCode()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
retentionScanVo.setWarehouseId(myCurrentWarehouse.getId()); |
|
|
|
|
|
|
|
retentionScanVo.setWarehouseName(myCurrentWarehouse.getName()); |
|
|
|
|
|
|
|
retentionScanVo.setLoadingId(distributionLoadscanEntity.getId()); |
|
|
|
|
|
|
|
retentionScanVos.add(retentionScanVo); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
List<DistributionLoadscaninvnEntity> loadscaninvnEntityList = distributionLoadscaninvnService.list(Wrappers.<DistributionLoadscaninvnEntity>query().lambda() |
|
|
|
|
|
|
|
.eq(DistributionLoadscaninvnEntity::getOrderPackageCode, distrilbutionloadingscanDTO.getBarcode()) |
|
|
|
|
|
|
|
.ne(DistributionLoadscaninvnEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()) |
|
|
|
|
|
|
|
.eq(DistributionLoadscaninvnEntity::getWarehouseId, myCurrentWarehouse.getId()) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
if (Func.isNotEmpty(loadscaninvnEntityList)) { |
|
|
|
|
|
|
|
if (loadscaninvnEntityList.size() == 1) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//库存品存在装车数据才能进行滞留操作
|
|
|
|
|
|
|
|
DistributionLoadscaninvnEntity loadscaninvnEntity = loadscaninvnEntityList.get(0); |
|
|
|
|
|
|
|
if (2 == loadscaninvnEntity.getSignforState()) { |
|
|
|
|
|
|
|
return Resp.scanFail("包件已签收", "包件已签收"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
DistributionRetentionScanVo inventoryPackage = baseMapper.selectRetentionInventoryPackage(loadscaninvnEntity.getOrderPackageCode(), loadscaninvnEntity.getDeliveryId()); |
|
|
|
|
|
|
|
inventoryPackage.setWarehouseId(myCurrentWarehouse.getId()); |
|
|
|
|
|
|
|
inventoryPackage.setWarehouseName(myCurrentWarehouse.getName()); |
|
|
|
|
|
|
|
inventoryPackage.setLoadingId(loadscaninvnEntity.getId()); |
|
|
|
|
|
|
|
retentionScanVos.add(inventoryPackage); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case 2: |
|
|
|
|
|
|
|
List<DistributionRetentionScanVo> distributionRetentionScanVos = baseMapper.selectRetentionZeroPackage(distrilbutionloadingscanDTO.getDeliveryId(), distrilbutionloadingscanDTO.getBarcode()); |
|
|
|
|
|
|
|
if (Func.isNotEmpty(distributionRetentionScanVos)) { |
|
|
|
|
|
|
|
retentionScanVos.addAll(distributionRetentionScanVos); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (!Func.isEmpty(retentionScanVos)) { |
|
|
|
|
|
|
|
//查询此包件是否存在有异常未处理的数据
|
|
|
|
|
|
|
|
List<DistributionLoadscanAbnormalEntity> list = distributionLoadscanAbnormalService.list(Wrappers.<DistributionLoadscanAbnormalEntity>query().lambda() |
|
|
|
|
|
|
|
.eq(DistributionLoadscanAbnormalEntity::getPackageCode, distrilbutionloadingscanDTO.getBarcode()) |
|
|
|
|
|
|
|
.eq(DistributionLoadscanAbnormalEntity::getAuditingStatus, LoadingAbnormalAuditingStatusConstant.daishenhe.getValue()) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
if (!list.isEmpty()) { |
|
|
|
|
|
|
|
//存在异常进行是否均完成审核判断
|
|
|
|
|
|
|
|
Long finalDeliveryId = deliveryId; |
|
|
|
|
|
|
|
boolean AuditingStatusFlag = list.stream().anyMatch(f-> finalDeliveryId.equals(f.getDeliveryListId())); |
|
|
|
|
|
|
|
if (AuditingStatusFlag){ |
|
|
|
|
|
|
|
return Resp.scanFail("请先处理包件异常操作", "请先处理包件异常操作"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//如果均不存在则就该判断该货物是否属于当前的配送任务,如果属于则是未装车,如果不属于则此码无效
|
|
|
|
|
|
|
|
List<DistributionParcelListEntity> distributionParcelListEntities = baseMapper.selectPackageListByDeliveryListId(deliveryListEntity.getId()); |
|
|
|
|
|
|
|
boolean flag = false; |
|
|
|
|
|
|
|
if (Func.isNotEmpty(distributionParcelListEntities)) { |
|
|
|
|
|
|
|
List<DistributionParcelListEntity> isHave = distributionParcelListEntities.stream().filter(p -> p.getOrderPackageCode().equals(distrilbutionloadingscanDTO.getBarcode())).collect(Collectors.toList()); |
|
|
|
|
|
|
|
if (Func.isNotEmpty(isHave)) { |
|
|
|
|
|
|
|
flag = isHave.size() == 1; |
|
|
|
|
|
|
|
//判断是否存在有待处理的异常
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
List<DisStockListDetailEntity> disStockListDetailEntities = baseMapper.selectInventoryListByDeliveryListId(distrilbutionloadingscanDTO.getDeliveryId()); |
|
|
|
|
|
|
|
if (Func.isNotEmpty(disStockListDetailEntities)) { |
|
|
|
|
|
|
|
List<DisStockListDetailEntity> isHaveinven = disStockListDetailEntities.stream().filter(inven -> Func.isNotEmpty(inven.getStockPackageCode()) && inven.getStockPackageCode().equals(distrilbutionloadingscanDTO.getBarcode())).collect(Collectors.toList()); |
|
|
|
|
|
|
|
if (Func.isNotEmpty(isHaveinven)) { |
|
|
|
|
|
|
|
flag = isHaveinven.size() == 1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
List<WarehouseRetentionScanEntity> warehouseRetentionScanEntities = new ArrayList<>(); |
|
|
|
|
|
|
|
if (!retentionScanVos.isEmpty()) { |
|
|
|
|
|
|
|
retentionScanVos.forEach(r->{ |
|
|
|
|
|
|
|
WarehouseRetentionScanEntity warehouseRetntionScanEntity = Func.copy(r, WarehouseRetentionScanEntity.class); |
|
|
|
|
|
|
|
warehouseRetentionScanEntities.add(warehouseRetntionScanEntity); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (!warehouseRetentionScanEntities.isEmpty()) { |
|
|
|
|
|
|
|
//进行批量滞留
|
|
|
|
|
|
|
|
R r = warehouseRetentionScanClient.saveBatchRetentionScan(warehouseRetentionScanEntities); |
|
|
|
|
|
|
|
if (!Objects.equals(r.getCode(),200)){ |
|
|
|
|
|
|
|
throw new RuntimeException(r.getMsg()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return R.success("滞留操作成功"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public R getZeroPackageInfo(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO) { |
|
|
|
public R getZeroPackageInfo(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO) { |
|
|
|
List<DistributionReservationStockarticleEntity> reservationStockarticleEntityList = baseMapper.selectReservationStockByDeliveryId(distrilbutionloadingscanDTO.getDeliveryId()); |
|
|
|
List<DistributionReservationStockarticleEntity> reservationStockarticleEntityList = baseMapper.selectReservationStockByDeliveryId(distrilbutionloadingscanDTO.getDeliveryId()); |
|
|
@ -7787,16 +7971,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public R retentionSave(WarehouseRetentionScanEntity warehouseRetentionScanEntity) { |
|
|
|
|
|
|
|
R r = warehouseRetentionScanClient.saveRetentionScan(warehouseRetentionScanEntity); |
|
|
|
|
|
|
|
Integer code = r.getCode(); |
|
|
|
|
|
|
|
Integer aaa = new Integer(200); |
|
|
|
|
|
|
|
if (code.equals(aaa)){ |
|
|
|
|
|
|
|
return R.success("滞留成功"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return R.fail("滞留失败"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|