From 4f3b243a112bfd0f02e04db8c1e3d32c1ab33998 Mon Sep 17 00:00:00 2001 From: kilo Date: Wed, 1 Nov 2023 14:51:12 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A3=85=E8=BD=A6=E6=98=8E=E7=BB=86=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/DistributionStockListEntity.java | 5 + .../vo/app/DistributionAppDeliveryListVO.java | 12 +- .../DistributionDeliveryAppController.java | 8 +- .../IDistributionDeliveryListService.java | 4 +- .../DistributionDeliveryInfoServiceImpl.java | 20 ++- .../DistributionDeliveryListServiceImpl.java | 141 +++++++++++++++--- 6 files changed, 158 insertions(+), 32 deletions(-) diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockListEntity.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockListEntity.java index cd381e7a1..2ff7f4ef8 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockListEntity.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockListEntity.java @@ -39,6 +39,11 @@ import java.util.List; @EqualsAndHashCode(callSuper = true) public class DistributionStockListEntity extends TenantEntity { + /** + * 预留1 + */ + @ApiModelProperty(value = "预留1") + private Long id; /** * 预留1 */ diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppDeliveryListVO.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppDeliveryListVO.java index 9b3ce790f..0bd951461 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppDeliveryListVO.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppDeliveryListVO.java @@ -37,28 +37,28 @@ public class DistributionAppDeliveryListVO extends DistributionDeliveryListEntit /** * 装车件数 */ - @ApiModelProperty(value = "装车件数") + @ApiModelProperty(value = "计划装车件数") private Integer loadingNub; /** * 装车订单数 */ - @ApiModelProperty(value = "装车订单数") + @ApiModelProperty(value = "完成装车订单数") private Integer loadOrdNub; /** * 签收件数 */ - @ApiModelProperty(value = "签收件数") + @ApiModelProperty(value = "实际装车件数") private Integer signNub; /** * 签收完成件数 */ - @ApiModelProperty(value = "签收完成件数") + @ApiModelProperty(value = "装车完成件数") private Integer signNubSr; /** * 装车客户数 */ - @ApiModelProperty(value = "装车客户数") + @ApiModelProperty(value = "完成装车客户数") private Integer loadCusNub; /** @@ -136,6 +136,8 @@ public class DistributionAppDeliveryListVO extends DistributionDeliveryListEntit private List reservationList; + + /** * 包条数据 */ diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionDeliveryAppController.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionDeliveryAppController.java index 95a61c883..fbccbe226 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionDeliveryAppController.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionDeliveryAppController.java @@ -112,8 +112,8 @@ public class DistributionDeliveryAppController { @GetMapping("/wrap") @ApiOperationSupport(order = 5) @ApiOperation(value = "查看配送明细", notes = "DistributionAppDeliveryListDTO") - public R> wrap(DistributionAppDeliveryListDTO distributionAppDeliveryListDTO, Query query) { - IPage page = distributionDeliveryListService.selectDistributionAppDeliverywrap(Condition.getPage(query), distributionAppDeliveryListDTO); + public R wrap(DistributionAppDeliveryListDTO distributionAppDeliveryListDTO) { + DistributionAppDeliveryListVO page = distributionDeliveryListService.selectDistributionAppDeliverywrap(distributionAppDeliveryListDTO); return R.data(page); } @@ -123,8 +123,8 @@ public class DistributionDeliveryAppController { @GetMapping("/wrapIn") @ApiOperationSupport(order = 5) @ApiOperation(value = "查看配送明细", notes = "DistributionAppDeliveryListDTO") - public R> wrapIn(DistributionAppDeliveryListDTO distributionAppDeliveryListDTO, Query query) { - IPage page = distributionDeliveryListService.selectDistributionAppDeliverywrapIn(Condition.getPage(query), distributionAppDeliveryListDTO); + public R> wrapIn(DistributionAppDeliveryListDTO distributionAppDeliveryListDTO) { + List page = distributionDeliveryListService.selectDistributionAppDeliverywrapIn(distributionAppDeliveryListDTO); return R.data(page); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryListService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryListService.java index d20c50666..2666780af 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryListService.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryListService.java @@ -139,7 +139,7 @@ public interface IDistributionDeliveryListService extends BaseService selectDistributionAppDeliverywrap(IPage page, DistributionAppDeliveryListDTO distributionAppDeliveryListDTO); + DistributionAppDeliveryListVO selectDistributionAppDeliverywrap( DistributionAppDeliveryListDTO distributionAppDeliveryListDTO); /** * 查询配送任务详情 * @param id @@ -151,7 +151,7 @@ public interface IDistributionDeliveryListService extends BaseService getAppDeliveryreservationListPage(IPage page,DistributionAppDeliveryListDTO distributionDeliveryList); - IPage selectDistributionAppDeliverywrapIn(IPage page, DistributionAppDeliveryListDTO distributionAppDeliveryListDTO); + List selectDistributionAppDeliverywrapIn( DistributionAppDeliveryListDTO distributionAppDeliveryListDTO); /** * 修改配送任务 diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryInfoServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryInfoServiceImpl.java index a0fbe02a3..7a42654c6 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryInfoServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryInfoServiceImpl.java @@ -75,6 +75,8 @@ public class DistributionDeliveryInfoServiceImpl extends BaseServiceImpl selectDistributionDeliveryInfoPage(IPage page, DistributionDeliveryInfoVO distributionDeliveryInfo) { List distributionDeliveryInfoVOS = baseMapper.selectDistributionDeliveryInfoPage(page, distributionDeliveryInfo); @@ -393,8 +395,24 @@ public class DistributionDeliveryInfoServiceImpl extends BaseServiceImpl selectDistributionAppDeliveryInventory( DistributionAppDeliveryListDTO distributionAppDeliveryListDTO) { List inventoryList = distributionReservationMapper.selectInventoryListByReservation(Long.parseLong(distributionAppDeliveryListDTO.getReservationId())); + if (Func.isEmpty(inventoryList)){ + log.error("##########查询该客户库存品信息为null"); + return null; + } + List stockListIds = inventoryList.stream().map(DisStockListDetailEntity::getStockListId).distinct().collect(Collectors.toList()); + List distributionStockListEntities = distributionStockListService.listByIds(stockListIds); + Map stockListMap = distributionStockListEntities.stream().collect(Collectors.toMap(DistributionStockListEntity::getId, Function.identity(), (k1, k2) -> k2)); List disStockListDetailVOS = DistributionDisStockListWrapper.build().listVO(inventoryList); - + disStockListDetailVOS.stream().forEach(sd->{ + if (Func.isNotEmpty(stockListMap.get(sd.getStockListId()))){ + DistributionStockListEntity distributionStockListEntity = stockListMap.get(sd.getStockListId()); + sd.setMarketName(distributionStockListEntity.getMarketName()); + sd.setDescriptionGoods(distributionStockListEntity.getDescriptionGoods()); + sd.setCargoUnit(distributionStockListEntity.getCargoUnit()); + sd.setCargoNorms(distributionStockListEntity.getCargoNorms()); + sd.setCargoNumber(distributionStockListEntity.getCargoNumber()); + } + }); // List distributionAppStockArticleVOS = baseMapper.selectDistributionAppDeliveryInventoryPage(page, distributionAppDeliveryListDTO); return disStockListDetailVOS; } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java index fc2340a99..734a3a9fc 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java @@ -41,10 +41,7 @@ import com.logpm.distribution.service.*; import com.logpm.distribution.vo.*; import com.logpm.distribution.vo.app.*; import com.logpm.distribution.vo.print.PrintPreviewVO; -import com.logpm.distribution.wrapper.DistributionDeliveryListWrapper; -import com.logpm.distribution.wrapper.DistributionParcelListWrapper; -import com.logpm.distribution.wrapper.DistributionReservationWrapper; -import com.logpm.distribution.wrapper.DistributionStockArticleWrapper; +import com.logpm.distribution.wrapper.*; import com.logpm.warehouse.entity.WarehouseTrayGoodsEntity; import com.logpm.warehouse.feign.IWarehouseTrayTypeClient; import com.logpm.warehouse.feign.IWarehouseUpdownTypeClient; @@ -89,6 +86,7 @@ import org.springframework.data.redis.connection.ReactiveListCommands; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.math.BigDecimal; import java.text.SimpleDateFormat; @@ -141,6 +139,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl stockListDetailEntityList = disStockListDetailService.list(Wrappers.query().lambda() + .eq(DisStockListDetailEntity::getReservationId, distrilbutionloadingscanDTO.getReservationId()) + .ne(DisStockListDetailEntity::getStockPackageStatus, ReservationInventoryStatusConstant.quxiao.getValue())); + boolean inventoryLoadingFlag = stockListDetailEntityList.stream().allMatch(i -> i.getStockPackageStatus().equals(InventoryLoadingStatusConstant.yizhuangche.getValue())); + boolean inventoryStockUpFlag = stockListDetailEntityList.stream().anyMatch(l -> Func.isEmpty(l.getStockPackageCode())); + if (inventoryStockUpFlag) { + log.error("##################库存品未备货"); + return Resp.scanFail("操作失败","存在库存品未备货"); +// return R.fail("该客户存在库存品暂未备货 一键装车失败!!!"); + } Map> allStockArticle = reservationStockarticleEntityList.stream().filter(f -> Func.isNotEmpty(f.getIsZero())).collect(Collectors.groupingBy(DistributionReservationStockarticleEntity::getIsZero)); DistributionDeliverySelfEntity finalDistributionDeliverySelfEntity = distributionDeliverySelfEntity; allStockArticle.forEach((k, v) -> { @@ -1443,16 +1452,16 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl stockListDetailEntityList = disStockListDetailService.list(Wrappers.query().lambda() - .eq(DisStockListDetailEntity::getReservationId, distrilbutionloadingscanDTO.getReservationId()) - .ne(DisStockListDetailEntity::getStockPackageStatus, ReservationInventoryStatusConstant.quxiao.getValue())); - boolean inventoryLoadingFlag = stockListDetailEntityList.stream().allMatch(i -> i.getStockPackageStatus().equals(InventoryLoadingStatusConstant.yizhuangche.getValue())); - boolean inventoryStockUpFlag = stockListDetailEntityList.stream().anyMatch(l -> Func.isEmpty(l.getStockPackageCode())); - if (inventoryStockUpFlag) { - log.error("##################库存品未备货"); - throw new RuntimeException("该客户存在库存品暂未备货 一键装车失败!!!"); -// return R.fail("该客户存在库存品暂未备货 一键装车失败!!!"); - } +// List stockListDetailEntityList = disStockListDetailService.list(Wrappers.query().lambda() +// .eq(DisStockListDetailEntity::getReservationId, distrilbutionloadingscanDTO.getReservationId()) +// .ne(DisStockListDetailEntity::getStockPackageStatus, ReservationInventoryStatusConstant.quxiao.getValue())); +// boolean inventoryLoadingFlag = stockListDetailEntityList.stream().allMatch(i -> i.getStockPackageStatus().equals(InventoryLoadingStatusConstant.yizhuangche.getValue())); +// boolean inventoryStockUpFlag = stockListDetailEntityList.stream().anyMatch(l -> Func.isEmpty(l.getStockPackageCode())); +// if (inventoryStockUpFlag) { +// log.error("##################库存品未备货"); +// return Resp.scanFail("操作失败","存在库存品未备货"); +//// return R.fail("该客户存在库存品暂未备货 一键装车失败!!!"); +// } if (!inventoryLoadingFlag) { //存在库存品海为进行装车 for (DisStockListDetailEntity disStockListDetailEntity : stockListDetailEntityList) { @@ -2464,9 +2473,27 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl selectDistributionAppDeliverywrapIn(IPage page, DistributionAppDeliveryListDTO distributionAppDeliveryListDTO) { - List distributionAppStockListVOS = baseMapper.selectListbyink(page, distributionAppDeliveryListDTO.getId()); - return page.setRecords(distributionAppStockListVOS); + public List selectDistributionAppDeliverywrapIn(DistributionAppDeliveryListDTO distributionAppDeliveryListDTO) { + List detailEntities = baseMapper.selectInventoryListByDeliveryListId(distributionAppDeliveryListDTO.getId()); + if (Func.isEmpty(detailEntities)){ + return null; + } + List stockListIds = detailEntities.stream().map(DisStockListDetailEntity::getStockListId).distinct().collect(Collectors.toList()); + List distributionStockListEntities = distributionStockListService.listByIds(stockListIds); + Map stockListMap = distributionStockListEntities.stream().collect(Collectors.toMap(DistributionStockListEntity::getId, Function.identity(), (k1, k2) -> k2)); + List disStockListDetailVOS = DistributionDisStockListWrapper.build().listVO(detailEntities); + disStockListDetailVOS.stream().forEach(sd->{ + if (Func.isNotEmpty(stockListMap.get(sd.getStockListId()))){ + DistributionStockListEntity distributionStockListEntity = stockListMap.get(sd.getStockListId()); + sd.setMarketName(distributionStockListEntity.getMarketName()); + sd.setDescriptionGoods(distributionStockListEntity.getDescriptionGoods()); + sd.setCargoUnit(distributionStockListEntity.getCargoUnit()); + sd.setCargoNorms(distributionStockListEntity.getCargoNorms()); + sd.setCargoNumber(distributionStockListEntity.getCargoNumber()); + } + }); + + return disStockListDetailVOS; } @Override @@ -3619,7 +3646,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl selectDistributionAppDeliverywrap(IPage page, DistributionAppDeliveryListDTO distributionAppDeliveryListDTO) { + public DistributionAppDeliveryListVO selectDistributionAppDeliverywrap( DistributionAppDeliveryListDTO distributionAppDeliveryListDTO) { //查询配送 // DistributionDeliveryListEntity distributionDeliveryListEntity = baseMapper.selectById(distributionAppDeliveryListDTO.getId()); // DistributionAppDeliveryListVO distributionAppDeliveryListVO = new DistributionAppDeliveryListVO(); @@ -3633,10 +3660,84 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl=distributionAppStockArticleVO.getReservationNum()) {ordCount +=1;} // } + + DistributionDeliveryListEntity distributionDeliveryListEntity = baseMapper.selectById(distributionAppDeliveryListDTO.getId()); + DistributionAppDeliveryListVO distributionAppDeliveryListVO = Func.copy(distributionDeliveryListEntity, DistributionAppDeliveryListVO.class); //查询该配送所有包条 - List parcelListVOS = baseMapper.selectListbypack(page, distributionAppDeliveryListDTO); + List appParcelListVOS = new ArrayList<>(); + List reservationStockarticleEntityList = baseMapper.selectReservationStockByDeliveryId(distributionAppDeliveryListDTO.getId()); + List reservationEntityList = baseMapper.selectReservationByDeliveryListId(distributionAppDeliveryListDTO.getId()); + if (Func.isEmpty(reservationEntityList)){ + log.error("###################查询配送预约信息异常,deliveryID:{}",distributionAppDeliveryListDTO.getId()); + return null; + } + if (Func.isEmpty(reservationStockarticleEntityList)){ + return null; + } + //计划客户数 + Long customersNumber = reservationStockarticleEntityList.stream().map(DistributionReservationStockarticleEntity::getReservationId).count(); + Long orderNumber = reservationStockarticleEntityList.stream().map(DistributionReservationStockarticleEntity::getStockArticleId).count(); + int signNub = reservationEntityList.stream().mapToInt(DistributionReservationEntity::getReservationNum).sum() + reservationEntityList.stream().mapToInt(DistributionReservationEntity::getReservationStockListNum).sum(); + //维护计划数量 + distributionAppDeliveryListVO.setCustomersNumber(customersNumber.intValue()); + distributionAppDeliveryListVO.setOrderNumber(orderNumber.intValue()); + distributionAppDeliveryListVO.setSignNub(signNub); + //维护完成情况 + Long loadCusNub = reservationEntityList.stream().filter(r -> r.getLoadingStatus().equals(ReservationLoadingStatusConstant.yizhuangche.getValue())).count(); + distributionAppDeliveryListVO.setLoadCusNub(loadCusNub.intValue()); + AtomicInteger loadOrdNub = new AtomicInteger(); + AtomicInteger signNubSr = new AtomicInteger(); +// distributionLoadscanService.list(Wrappers.query().lambda().eq(DistributionLoadscanEntity::get)) + + reservationStockarticleEntityList.forEach(rs->{ + if (rs.getIsZero().equals(IsOrNoConstant.no.getValue())){ + + List parcelListEntityList = distributionReservationMapper.selectPackageByReservationAndStockArticle(rs.getReservationId(), rs.getStockArticleId()); + List packageLoadingList = distributionLoadscanService.list(Wrappers.query().lambda() + .eq(DistributionLoadscanEntity::getDeliveryId, distributionAppDeliveryListDTO.getId()) + .eq(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()) + .eq(DistributionLoadscanEntity::getReservationId, rs.getReservationId()) + .in(DistributionLoadscanEntity::getPackageId, parcelListEntityList.stream().map(DistributionParcelListEntity::getId).collect(Collectors.toList()))); + if (Func.isNotEmpty(packageLoadingList)){ + signNubSr.getAndAdd(packageLoadingList.stream().mapToInt(DistributionLoadscanEntity::getLoadedNub).sum()); + } + boolean packageFlag = parcelListEntityList.stream().allMatch(p -> p.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.yizhuangche.getValue())); + if (packageFlag){ + //完成订单累加 + loadOrdNub.getAndIncrement(); + } + for (DistributionParcelListEntity parcelListEntity : parcelListEntityList) { + DistributionAppParcelListVO appParcelListVO = Func.copy(parcelListEntity, DistributionAppParcelListVO.class); + appParcelListVOS.add(appParcelListVO); + } + }else if (rs.getIsZero().equals(IsOrNoConstant.yes.getValue())){ + List parcelNumberVOS = distributionReservationMapper.selectReservationZeroOrderDetail(rs.getStockArticleId(), rs.getReservationId()); + List loadscanEntities = distributionLoadscanService.list(Wrappers.query().lambda() + .eq(DistributionLoadscanEntity::getDeliveryId, distributionAppDeliveryListDTO.getId()) + .eq(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()) + .eq(DistributionLoadscanEntity::getReservationId, rs.getReservationId()) + .in(DistributionLoadscanEntity::getPackageId, parcelNumberVOS.stream().map(DistributionParcelNumberVO::getParcelListId).collect(Collectors.toList()))); + if (Func.isNotEmpty(loadscanEntities)){ + //统计装车数量 + signNubSr.getAndAdd(loadscanEntities.stream().mapToInt(DistributionLoadscanEntity::getLoadedNub).sum()); + int zeroPackageLoadingNum = loadscanEntities.stream().mapToInt(DistributionLoadscanEntity::getLoadedNub).sum(); + if (rs.getReservationNum() == zeroPackageLoadingNum){ + loadOrdNub.getAndIncrement(); + } + } + parcelNumberVOS.forEach(p->{ + DistributionAppParcelListVO appParcelListVO = Func.copy(p, DistributionAppParcelListVO.class); + appParcelListVOS.add(appParcelListVO); + }); + }else { + log.error("############reservation_stockarticle表isZero字段维护错误,reservationId:{}",rs.getReservationId()); + } + }); - return page.setRecords(parcelListVOS); + distributionAppDeliveryListVO.setLoadOrdNub(loadOrdNub.get()); + distributionAppDeliveryListVO.setSignNubSr(signNubSr.get()); +// List parcelListVOS = baseMapper.selectListbypack(page, distributionAppDeliveryListDTO); + return distributionAppDeliveryListVO; } @Override