diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionReservationZeroPackageService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionReservationZeroPackageService.java index 497b97a17..5a40e53c4 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionReservationZeroPackageService.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionReservationZeroPackageService.java @@ -88,4 +88,13 @@ public interface IDistributionReservationZeroPackageService extends BaseService< * @param retentionQuantity */ void reduceNum(Long reservationId, Long orderId, Long orderPackageId, Integer retentionQuantity,Long loadingId); + + /** + * 计划指定数量释放 + * @param reservationId + * @param parcelListId + * @param recoverNum + * @param b + */ + void recoverZeroPackageByNum(Long reservationId, Long parcelListId, int recoverNum, boolean b); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java index 3f2be4e7c..ef7e9d2c7 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java @@ -1358,6 +1358,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { .eq(DistributionLoadscanEntity::getSignforState, 2) .ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()) ); + List recoverZeroPackageIds = new ArrayList<>(); for (DistributionParcelNumberDTO distributionParcelNumberDTO : distributionParcelNumberDTOS) { //判断是全部进行返回还是部分 if (!loadscanEntityList.isEmpty()) { @@ -1365,38 +1366,63 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { List zeroLoading = loadscanEntityList.stream().filter(f -> f.getPackageId().equals(distributionParcelNumberDTO.getParcelListId())).collect(Collectors.toList()); if (!zeroLoading.isEmpty()) { //存在签收数据,进行部分释放 + DistributionLoadscanEntity distributionLoadscanEntity = zeroLoading.get(0); + Integer receivedQuantity = distributionLoadscanEntity.getReceivedQuantity(); + if (!Objects.equals(receivedQuantity,distributionParcelNumberDTO.getReservationNum())){ + //未签收完成,进行释放指定数量 + int recoverNum = distributionParcelNumberDTO.getReservationNum() - receivedQuantity; + // + reservationZeroPackageService.recoverZeroPackageByNum(reservationId,distributionParcelNumberDTO.getParcelListId(),recoverNum,true); + } + } else { + String orderCode = distributionParcelNumberDTOS.stream().map(DistributionParcelNumberDTO::getOrderCode).distinct().collect(Collectors.joining(",")); + log.info(method + "维护零担订单:{}", orderCode); + if(Func.isNotEmpty(builder)){ + builder.append(","); + } + builder.append(orderCode); + //计划全部释放 } }else { - //进行全部释放 - - } - } - if (Func.isNotEmpty(loadscanEntityList)) { - //查看是否存在需要进行回库的零担 - List collect = loadscanEntityList.stream().filter(f -> packageIds.contains(f.getPackageId())).map(DistributionLoadscanEntity::getPackageId).collect(Collectors.toList()); - if (Func.isNotEmpty(collect)) { - String orderCode = distributionParcelNumberDTOS.stream().filter(f -> collect.contains(f.getParcelListId())).map(DistributionParcelNumberDTO::getOrderCode).collect(Collectors.joining(",")); + String orderCode = distributionParcelNumberDTOS.stream().map(DistributionParcelNumberDTO::getOrderCode).distinct().collect(Collectors.joining(",")); log.info(method + "维护零担订单:{}", orderCode); if(Func.isNotEmpty(builder)){ builder.append(","); } builder.append(orderCode); - //针对未签收完成零担进行回库操作 - - - //这些单子就是需要进行状态回退的零担包件 - reservationZeroPackageService.recoverZeroPackage(reservationId, collect,true); - } - } else { - //计划数量全部回退 - String orderCode = distributionParcelNumberDTOS.stream().map(DistributionParcelNumberDTO::getOrderCode).distinct().collect(Collectors.joining(",")); - log.info(method + "维护零担订单:{}", orderCode); - if(Func.isNotEmpty(builder)){ - builder.append(","); + //进行全部释放 + recoverZeroPackageIds.add(distributionParcelNumberDTO.getParcelListId()); } - builder.append(orderCode); - reservationZeroPackageService.recoverZeroPackage(reservationId, packageIds,true); } + if (!recoverZeroPackageIds.isEmpty()) { + reservationZeroPackageService.recoverZeroPackage(reservationId, recoverZeroPackageIds,true); + } + +// if (Func.isNotEmpty(loadscanEntityList)) { +// //查看是否存在需要进行回库的零担 +// List collect = loadscanEntityList.stream().filter(f -> packageIds.contains(f.getPackageId())).map(DistributionLoadscanEntity::getPackageId).collect(Collectors.toList()); +// if (Func.isNotEmpty(collect)) { +// String orderCode = distributionParcelNumberDTOS.stream().filter(f -> collect.contains(f.getParcelListId())).map(DistributionParcelNumberDTO::getOrderCode).collect(Collectors.joining(",")); +// log.info(method + "维护零担订单:{}", orderCode); +// if(Func.isNotEmpty(builder)){ +// builder.append(","); +// } +// builder.append(orderCode); +// //针对未签收完成零担进行回库操作 +// +// +// //这些单子就是需要进行状态回退的零担包件 +// reservationZeroPackageService.recoverZeroPackage(reservationId, collect,true); +// } +// } else { +// //计划数量全部回退 +// String orderCode = distributionParcelNumberDTOS.stream().map(DistributionParcelNumberDTO::getOrderCode).distinct().collect(Collectors.joining(",")); +// log.info(method + "维护零担订单:{}", orderCode); +// if(Func.isNotEmpty(builder)){ +// builder.append(","); +// } +// builder.append(orderCode); +// } } distributionStockArticleService.maintenanceOrderInfo(builder.toString(), warehouse.getId()); distributionReservationStockarticleService.maintenanceReservationStockArticle(reservationId, warehouse.getId()); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationZeroPackageServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationZeroPackageServiceImpl.java index 5183e82d0..34e64b242 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationZeroPackageServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationZeroPackageServiceImpl.java @@ -28,7 +28,6 @@ import com.logpm.distribution.mapper.DistributionReservationZeroPackageMapper; import com.logpm.distribution.service.*; import com.logpm.distribution.vo.DistributionReservationZeroPackageVO; import com.sun.org.apache.xpath.internal.operations.Bool; -import io.jsonwebtoken.lang.Objects; import lombok.extern.slf4j.Slf4j; import org.springblade.common.constant.DistributionTypeConstant; import org.springblade.common.constant.common.IsOrNoConstant; @@ -43,6 +42,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Objects; /** * 预约零担包件中间表 服务实现类 @@ -207,4 +207,37 @@ public class DistributionReservationZeroPackageServiceImpl extends BaseServiceIm } } + @Override + @Transactional + public void recoverZeroPackageByNum(Long reservationId, Long parcelListId, int recoverNum, boolean b) { + DistributionReservationZeroPackageEntity zeroPackageEntity = this.getOne(Wrappers.query().lambda() + .eq(DistributionReservationZeroPackageEntity::getReservationId, reservationId) + .eq(DistributionReservationZeroPackageEntity::getParcelListId, parcelListId) + .ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus, ReservationPackageStatusConstant.quxiao.getValue()) + ); + if (!Objects.isNull(zeroPackageEntity)){ + //存在此计划进行数量扣减 + DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity = new DistributionReservationZeroPackageEntity(); + distributionReservationZeroPackageEntity.setId(zeroPackageEntity.getId()); + distributionReservationZeroPackageEntity.setPlanNum(zeroPackageEntity.getQuantity()); + if (b) { + distributionReservationZeroPackageEntity.setCancelStatus(Integer.parseInt(IsOrNoConstant.yes.getValue())); + } + distributionReservationZeroPackageEntity.setQuantity(zeroPackageEntity.getQuantity() - recoverNum); + this.updateById(distributionReservationZeroPackageEntity); + //进行零担的配送数量扣减 + DistributionParcelNumberEntity distributionParcelNumberEntity = distributionParcelNumberService.getOne(Wrappers.query().lambda() + .eq(DistributionParcelNumberEntity::getParcelListId, parcelListId) + ); + if (!Objects.isNull(distributionParcelNumberEntity)){ + DistributionParcelNumberEntity parcelNumberEntity = new DistributionParcelNumberEntity(); + parcelNumberEntity.setId(distributionParcelNumberEntity.getId()); + parcelNumberEntity.setDeliveryQuantity(distributionParcelNumberEntity.getDeliveryQuantity() - recoverNum); + distributionParcelNumberService.updateById(parcelNumberEntity); + } + + } + + } + }