Browse Source

批量签收维护装车、签收数量,增加异常签收无法批量限制

pull/31/head
汤建军 10 months ago
parent
commit
b9076feaca
  1. 164
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java

164
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java

@ -1330,18 +1330,18 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
@Override
public R cancelZeroPackage(DistrilbutionAppsignforDTO distrilbutionloadingscanDTO) {
String method = "####################DistributionSignforImpl.cancelZeroPackage";
if (Func.isNotEmpty(distrilbutionloadingscanDTO.getZeroPackageIds())){
log.error(method+"ZeroPackageIds参数缺失");
if (Func.isNotEmpty(distrilbutionloadingscanDTO.getZeroPackageIds())) {
log.error(method + "ZeroPackageIds参数缺失");
return R.fail("请联系管理员维护!!!");
}
if (Func.isNotEmpty(distrilbutionloadingscanDTO.getReservationId())){
log.error(method+"ReservationId参数缺失");
if (Func.isNotEmpty(distrilbutionloadingscanDTO.getReservationId())) {
log.error(method + "ReservationId参数缺失");
return R.fail("请联系管理员维护!!!");
}
if (Func.isNotEmpty(distrilbutionloadingscanDTO.getDeliveryId())){
log.error(method+"DeliveryId参数缺失");
if (Func.isNotEmpty(distrilbutionloadingscanDTO.getDeliveryId())) {
log.error(method + "DeliveryId参数缺失");
return R.fail("请联系管理员维护!!!");
}
List<Long> list = Func.toLongList(distrilbutionloadingscanDTO.getZeroPackageIds());
@ -1352,12 +1352,12 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
.in(DistributionLoadscanEntity::getPackageId, list)
.ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue())
);
if (Func.isNotEmpty(loadscanEntityList)){
if (Func.isNotEmpty(loadscanEntityList)) {
List<Long> orderIds = loadscanEntityList.stream().map(DistributionLoadscanEntity::getOrderId).distinct().collect(Collectors.toList());
List<DistributionStockArticleEntity> distributionStockArticleEntities = distributionStockArticleService.listByIds(orderIds);
String orderCodes = distributionStockArticleEntities.stream().map(DistributionStockArticleEntity::getOrderCode).collect(Collectors.joining(","));
log.error(method+"取消零担失败,已进行装车或签收orderCodes:{}",orderCodes);
return R.fail(orderCodes+"已进行装车或签收");
log.error(method + "取消零担失败,已进行装车或签收orderCodes:{}", orderCodes);
return R.fail(orderCodes + "已进行装车或签收");
}
//剩下的满足取消条件,进行计划内的资源释放即可
List<DistributionReservationZeroPackageEntity> planZeroPackageEntities = distributionReservationZeroPackageService.list(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda()
@ -1365,35 +1365,59 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
.ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus, ReservationPackageStatusConstant.quxiao.getValue())
);
Map<Long, List<DistributionReservationZeroPackageEntity>> planMap;
if (Func.isNotEmpty(planZeroPackageEntities)){
planMap = planZeroPackageEntities.stream().collect(Collectors.groupingBy(DistributionReservationZeroPackageEntity::getStockArticleId));
if (Func.isNotEmpty(planZeroPackageEntities)) {
planMap = planZeroPackageEntities.stream().collect(Collectors.groupingBy(DistributionReservationZeroPackageEntity::getStockArticleId));
} else {
planMap = null;
}
planMap = null;
}
List<DistributionReservationZeroPackageEntity> reservationZeroPackageEntities = distributionReservationZeroPackageService.list(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda()
List<DistributionReservationZeroPackageEntity> reservationZeroPackageEntities = distributionReservationZeroPackageService.list(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda()
.eq(DistributionReservationZeroPackageEntity::getReservationId, distrilbutionloadingscanDTO.getReservationId())
.ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus, ReservationPackageStatusConstant.quxiao.getValue())
.in(DistributionReservationZeroPackageEntity::getParcelListId, list)
);
if (Func.isNotEmpty(planMap)){
if (Func.isNotEmpty(planMap)) {
Map<Long, List<DistributionReservationZeroPackageEntity>> cancelMap = reservationZeroPackageEntities.stream().collect(Collectors.groupingBy(DistributionReservationZeroPackageEntity::getStockArticleId));
cancelMap.forEach((k,v)->{
if (!planMap.get(k).isEmpty()){
//统计取消的零担数量,对计划进行维护
AtomicReference<Integer> num = new AtomicReference<>(0);
AtomicReference<Integer> orderNum = new AtomicReference<>(0);
cancelMap.forEach((k, v) -> {
if (!planMap.get(k).isEmpty()) {
List<Long> ids = v.stream().map(DistributionReservationZeroPackageEntity::getParcelListId).collect(Collectors.toList());
distributionReservationZeroPackageService.recoverZeroPackage(distrilbutionloadingscanDTO.getReservationId(),ids);
if (planMap.get(k).size() == ids.size()){
num.updateAndGet(v1 -> v1 + v.stream().mapToInt(DistributionReservationZeroPackageEntity::getQuantity).sum());
distributionReservationZeroPackageService.recoverZeroPackage(distrilbutionloadingscanDTO.getReservationId(), ids);
if (planMap.get(k).size() == ids.size()) {
orderNum.getAndSet(1);
distributionReservationStockarticleService.update(new UpdateWrapper<DistributionReservationStockarticleEntity>().lambda()
.eq(DistributionReservationStockarticleEntity::getReservationId,distrilbutionloadingscanDTO.getReservationId())
.in(DistributionReservationStockarticleEntity::getStockArticleId,k)
.ne(DistributionReservationStockarticleEntity::getStockArticleStatus,ReservationOrderStatusConstant.quxiao.getValue())
.set(DistributionReservationStockarticleEntity::getStockArticleStatus,ReservationOrderStatusConstant.quxiao.getValue())
.eq(DistributionReservationStockarticleEntity::getReservationId, distrilbutionloadingscanDTO.getReservationId())
.in(DistributionReservationStockarticleEntity::getStockArticleId, k)
.ne(DistributionReservationStockarticleEntity::getStockArticleStatus, ReservationOrderStatusConstant.quxiao.getValue())
.set(DistributionReservationStockarticleEntity::getStockArticleStatus, ReservationOrderStatusConstant.quxiao.getValue())
);
}
}
});
}else {
log.error(method+"查询原计划零担信息错误reservationId:{},ids:{}",distrilbutionloadingscanDTO.getReservationId(),list);
Integer consingee = 0;
//查询预约信息
DistributionReservationEntity reservationEntity = distributionReservationService.getById(distrilbutionloadingscanDTO.getReservationId());
int reservationNum = reservationEntity.getReservationNum() - num.get();
if (reservationNum + reservationEntity.getReservationStockListNum() == 0){
reservationEntity.setCancelReason("取消配送货物,系统判定取消预约");
reservationEntity.setReservationStatus(ReservationStatusConstant.yiquexiao.getValue());
consingee += 1;
}
distributionReservationService.updateById(reservationEntity);
//维护整体配送任务状态
DistributionDeliveryListEntity deliveryListEntity = distributionDeliveryListService.getById(distrilbutionloadingscanDTO.getDeliveryId());
Integer newDeliveryNumber = deliveryListEntity.getDeliveryNumber() - num.get();
Integer newOrderDeliveryNumber = deliveryListEntity.getOrderNumber() - orderNum.get();
Integer newCustomersNumber = deliveryListEntity.getCustomersNumber() - consingee;
} else {
log.error(method + "查询原计划零担信息错误reservationId:{},ids:{}", distrilbutionloadingscanDTO.getReservationId(), list);
return R.fail("计划查询错误");
}
return R.success("操作成功");
@ -4385,6 +4409,11 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
.eq(DistributionSignforEntity::getDeliveryId, distributionSignfor.getDeliveryId())
.eq(DistributionSignforEntity::getReservationId, distributionSignfor.getReservationId())
);
if (2 ==distributionSignforEntity.getIsHaveAbnormalPackage()){
//存在异常包件 无法进行批量签收
log.error(method + "批量签收存在异常包件:{}", reservationEntity);
return R.fail("存在异常包件,请联系文员审核后操作");
}
//获取计划配送用户司机
DistributionDeliveryListEntity distributionDeliveryListEntity = distributionDeliveryListMapper.selectById(distributionSignfor.getDeliveryId());
@ -4551,8 +4580,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
parcelNumberServiceById.setOutboundQuantity(parcelNumberServiceById.getOutboundQuantity() - distributionLoadscanEntity.getLoadedNub() + parcelNumberEntity.getReservationNum());
//维护签收数量
parcelNumberServiceById.setSigninQuantity(parcelNumberServiceById.getSigninQuantity() - distributionLoadscanEntity.getLoadedNub() + parcelNumberEntity.getReservationNum());
loadingPackageNum += (parcelNumberEntity.getReservationNum()- distributionLoadscanEntity.getLoadedNub());
signingPackageNum += (parcelNumberEntity.getReservationNum()- distributionLoadscanEntity.getLoadedNub());
loadingPackageNum += (parcelNumberEntity.getReservationNum() - distributionLoadscanEntity.getLoadedNub());
signingPackageNum += (parcelNumberEntity.getReservationNum() - distributionLoadscanEntity.getLoadedNub());
Integer loadedNub = distributionLoadscanEntity.getLoadedNub();
Integer receivedQuantity = distributionLoadscanEntity.getReceivedQuantity();
distributionLoadscanEntity.setOneClick(1);
@ -4625,8 +4654,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
parcelNumberServiceById.setOutboundQuantity(parcelNumberServiceById.getOutboundQuantity() + parcelNumberEntity.getReservationNum());
//维护签收数量
parcelNumberServiceById.setSigninQuantity(parcelNumberServiceById.getSigninQuantity() + parcelNumberEntity.getReservationNum());
loadingPackageNum += parcelNumberEntity.getReservationNum();
signingPackageNum += parcelNumberEntity.getReservationNum();
loadingPackageNum += parcelNumberEntity.getReservationNum();
signingPackageNum += parcelNumberEntity.getReservationNum();
}
//维护出库数量和签收数量
@ -4782,12 +4811,11 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
}
distributionSignforEntity.setLoadedNumber(distributionSignforEntity.getLoadedNumber() + loadingPackageNum );
distributionSignforEntity.setReceivedQuantity(distributionSignforEntity.getReceivedQuantity() + signingPackageNum );
distributionSignforEntity.setLoadedinNumber(distributionSignforEntity.getLoadedinNumber() + loadingInventoryNum );
distributionSignforEntity.setReceivedinQuantity(distributionSignforEntity.getReceivedinQuantity() + signingInventoryNum );
distributionSignforEntity.setReceivedinQuantity(distributionSignforEntity.getReceivedinQuantity() + signingInventoryNum );
if (Func.isNotEmpty(distributionSignfor.getDriverRemarks())){
distributionSignforEntity.setLoadedNumber(reservationEntity.getReservationNum());
distributionSignforEntity.setReceivedQuantity(reservationEntity.getReservationNum());
distributionSignforEntity.setLoadedinNumber(reservationEntity.getReservationStockListNum());
distributionSignforEntity.setReceivedinQuantity(reservationEntity.getReservationStockListNum());
if (Func.isNotEmpty(distributionSignfor.getDriverRemarks())) {
distributionSignforEntity.setDriverRemarks(distributionSignfor.getDriverRemarks());
}
this.updateById(distributionSignforEntity);
@ -5372,8 +5400,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
log.error("##########配送计划异常:{}", deliveryListEntity);
return Resp.scanFail("服务器正忙...", "服务器正忙");
}
Integer loadingNumber = 0 ;
Integer signingNumber = 0 ;
Integer loadingNumber = 0;
Integer signingNumber = 0;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
// DistributionDeliverySelfEntity finalDistributionDeliverySelfEntity = distributionDeliverySelfEntity;
List<String> orderCodes = new ArrayList<>();
@ -5383,7 +5411,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
.eq(DistributionSignforEntity::getReservationId, distrilbutionloadingscanDTO.getReservationId()));
//查询零担装车
if (!parcelNumberDTOS.isEmpty()){
if (!parcelNumberDTOS.isEmpty()) {
List<Long> packageIds = parcelNumberDTOS.stream().map(DistributionParcelNumberDTO::getParcelListId).collect(Collectors.toList());
List<DistributionLoadscanEntity> loadscanEntityList = distributionLoadscanService.list(Wrappers.<DistributionLoadscanEntity>query().lambda()
.eq(DistributionLoadscanEntity::getReservationId, distrilbutionloadingscanDTO.getReservationId())
@ -5393,7 +5421,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
.ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()));
Map<Long, List<DistributionLoadscanEntity>> loadingMap = null;
Map<Long, List<DistributionReservationZeroPackageEntity>> reservationMap = null;
if (!loadscanEntityList.isEmpty()){
if (!loadscanEntityList.isEmpty()) {
loadingNumber = signforEntity.getLoadedNumber() - loadscanEntityList.stream().mapToInt(DistributionLoadscanEntity::getLoadedNub).sum();
signingNumber = signforEntity.getReceivedQuantity() - loadscanEntityList.stream().mapToInt(DistributionLoadscanEntity::getReceivedQuantity).sum();
loadingMap = loadscanEntityList.stream().collect(Collectors.groupingBy(DistributionLoadscanEntity::getPackageId));
@ -5403,8 +5431,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
.eq(DistributionReservationZeroPackageEntity::getReservationId, distrilbutionloadingscanDTO.getReservationId())
.in(DistributionReservationZeroPackageEntity::getParcelListId, packageIds)
.ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus, ReservationPackageStatusConstant.quxiao.getValue()));
if (!reservationZeroPackageEntity.isEmpty()){
reservationMap = reservationZeroPackageEntity.stream().collect(Collectors.groupingBy(DistributionReservationZeroPackageEntity::getParcelListId));
if (!reservationZeroPackageEntity.isEmpty()) {
reservationMap = reservationZeroPackageEntity.stream().collect(Collectors.groupingBy(DistributionReservationZeroPackageEntity::getParcelListId));
}
int sum = parcelNumberDTOS.stream().mapToInt(DistributionParcelNumberDTO::getSigningNum).sum();
@ -5416,23 +5444,23 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(parcelNumberDTO.getParcelListId());
orderCodes.add(parcelListEntity.getOrderCode());
packageLockIds.add(parcelListEntity.getId());
if (zeroPackageEntities.size() == 1){
if (zeroPackageEntities.size() == 1) {
DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity = zeroPackageEntities.get(0);
//查询是否存在装车
Integer deliveryNumber = 0 ;
Integer handQuantity = 0 ;
Integer outboundQuantity = 0 ;
Integer signinQuantity = 0 ;
Integer deliveryNumber = 0;
Integer handQuantity = 0;
Integer outboundQuantity = 0;
Integer signinQuantity = 0;
if (Func.isNotEmpty(loadingMap)){
if (Func.isNotEmpty(loadingMap)) {
//存在装车数据,进行是否签收判断
List<DistributionLoadscanEntity> entityList = loadingMap.get(parcelNumberDTO.getParcelListId());
if (entityList.size() == 1){
if (entityList.size() == 1) {
DistributionLoadscanEntity distributionLoadscanEntity = entityList.get(0);
if (parcelNumberDTO.getSigningNum() > distributionReservationZeroPackageEntity.getQuantity()){
log.info("#############零担签收超过计划数量ParcelListId:{},计划:{}录入,:{}",parcelNumberDTO.getParcelListId(),distributionReservationZeroPackageEntity.getQuantity(),parcelNumberDTO.getSigningNum());
if (parcelNumberDTO.getSigningNum() > distributionReservationZeroPackageEntity.getQuantity()) {
log.info("#############零担签收超过计划数量ParcelListId:{},计划:{}录入,:{}", parcelNumberDTO.getParcelListId(), distributionReservationZeroPackageEntity.getQuantity(), parcelNumberDTO.getSigningNum());
}
if (distributionLoadscanEntity.getLoadedNub() < parcelNumberDTO.getSigningNum()){
if (distributionLoadscanEntity.getLoadedNub() < parcelNumberDTO.getSigningNum()) {
//将装车和签收进行统一数量
distributionLoadscanEntity.setLoadedNub(parcelNumberDTO.getSigningNum());
distributionLoadscanEntity.setPackageNub(parcelNumberDTO.getSigningNum());
@ -5452,10 +5480,10 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
signingNumber += distributionLoadscanEntity.getReceivedQuantity();
//进行签收数量的统计
distributionLoadscanService.updateById(distributionLoadscanEntity);
}else {
log.info("#############零担签收存在多个装车记录ParcelListId:{}",parcelNumberDTO.getParcelListId());
} else {
log.info("#############零担签收存在多个装车记录ParcelListId:{}", parcelNumberDTO.getParcelListId());
}
}else {
} else {
//签收装车数据一起进行补录
DistributionLoadscanEntity loadscanEntity = new DistributionLoadscanEntity();
loadscanEntity.setPackageId(distributionParcelNumberEntity.getParcelListId());
@ -5501,20 +5529,20 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
loadingNumber += loadscanEntity.getLoadedNub();
signingNumber += loadscanEntity.getReceivedQuantity();
//维护零担品类信息
deliveryNumber = distributionParcelNumberEntity.getDeliveryQuantity() - parcelNumberDTO.getSigningNum();
handQuantity = distributionParcelNumberEntity.getHandQuantity() - parcelNumberDTO.getSigningNum();
outboundQuantity = distributionParcelNumberEntity.getOutboundQuantity() + parcelNumberDTO.getSigningNum();
signinQuantity = distributionParcelNumberEntity.getSigninQuantity() + parcelNumberDTO.getSigningNum();
deliveryNumber = distributionParcelNumberEntity.getDeliveryQuantity() - parcelNumberDTO.getSigningNum();
handQuantity = distributionParcelNumberEntity.getHandQuantity() - parcelNumberDTO.getSigningNum();
outboundQuantity = distributionParcelNumberEntity.getOutboundQuantity() + parcelNumberDTO.getSigningNum();
signinQuantity = distributionParcelNumberEntity.getSigninQuantity() + parcelNumberDTO.getSigningNum();
}
//维护订单
if (outboundQuantity == distributionParcelNumberEntity.getQuantity()){
if (outboundQuantity == distributionParcelNumberEntity.getQuantity()) {
parcelListEntity.setOrderPackageLoadingStatus(OrderPackageLoadingStatusConstant.yizhuangche.getValue());
}
if (handQuantity == 0){
if (handQuantity == 0) {
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
}
if (signingNumber == distributionParcelNumberEntity.getQuantity()){
if (signingNumber == distributionParcelNumberEntity.getQuantity()) {
parcelListEntity.setOrderPackageStatus(OrderPackageStatusConstant.yiqianshou.getValue());
}
distributionParcelListService.updateById(parcelListEntity);
@ -5526,13 +5554,13 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
parcelNumberEntity.setSigninQuantity(signinQuantity);
parcelNumberEntity.setHandQuantity(handQuantity);
distributionParcelNumberService.updateById(parcelNumberEntity);
}else {
log.info("#############零担签收查询计划错误ParcelListId:{}",parcelNumberDTO.getParcelListId());
} else {
log.info("#############零担签收查询计划错误ParcelListId:{}", parcelNumberDTO.getParcelListId());
}
}
}
signforEntity.setLoadedNumber( loadingNumber);
signforEntity.setReceivedQuantity( signingNumber);
signforEntity.setLoadedNumber(loadingNumber);
signforEntity.setReceivedQuantity(signingNumber);
distributionSignforMapper.updateById(signforEntity);
if (!packageLockIds.isEmpty()) {
List<Long> a = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:");
@ -5549,9 +5577,9 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:", packageLockIds, 10L);
}
}
if (!orderCodes.isEmpty()){
if (!orderCodes.isEmpty()) {
String collect = orderCodes.stream().collect(Collectors.joining(","));
distributionStockArticleService.maintenanceOrderInfo(collect,myCurrentWarehouse.getId());
distributionStockArticleService.maintenanceOrderInfo(collect, myCurrentWarehouse.getId());
}
String str = checkSignNum(distrilbutionloadingscanDTO);
return Resp.scanSuccess("签收成功", str);
@ -5566,7 +5594,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
distributionSignfor.setSigningTime(sdf.format(date));
boolean isSuccess = this.updatePicture(distributionSignfor);
log.info(">>>> updateSign isSuccess ={}",isSuccess);
log.info(">>>> updateSign isSuccess ={}", isSuccess);
buildArgsToPushMq(distributionSignfor);
if (isSuccess) {
this.updateById(distributionSignfor);

Loading…
Cancel
Save