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 f10c2859b..e9f288efe 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 @@ -1,6 +1,7 @@ package com.logpm.distribution.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -12,10 +13,59 @@ import com.logpm.distribution.dto.DistributionStockArticleDTO; import com.logpm.distribution.dto.app.DistrilbutionloadingscanDTO; import com.logpm.distribution.dto.app.StockupDTO; import com.logpm.distribution.dto.app.StockupZeroDTO; -import com.logpm.distribution.entity.*; -import com.logpm.distribution.mapper.*; -import com.logpm.distribution.service.*; -import com.logpm.distribution.vo.*; +import com.logpm.distribution.entity.DisStockListDetailEntity; +import com.logpm.distribution.entity.DistributionBillLadingScanEntity; +import com.logpm.distribution.entity.DistributionDeliveryDetailsEntity; +import com.logpm.distribution.entity.DistributionDeliveryListEntity; +import com.logpm.distribution.entity.DistributionLoadscanEntity; +import com.logpm.distribution.entity.DistributionLoadscaninvnEntity; +import com.logpm.distribution.entity.DistributionParcelListEntity; +import com.logpm.distribution.entity.DistributionParcelNumberEntity; +import com.logpm.distribution.entity.DistributionReservationEntity; +import com.logpm.distribution.entity.DistributionReservationPackageEntity; +import com.logpm.distribution.entity.DistributionReservationStockarticleEntity; +import com.logpm.distribution.entity.DistributionReservationStocklistEntity; +import com.logpm.distribution.entity.DistributionReservationZeroPackageEntity; +import com.logpm.distribution.entity.DistributionSignforEntity; +import com.logpm.distribution.entity.DistributionStockArticleEntity; +import com.logpm.distribution.entity.DistributionStockEntity; +import com.logpm.distribution.entity.DistributionStockListEntity; +import com.logpm.distribution.entity.DistributionStockupEntity; +import com.logpm.distribution.entity.DistributionStockupInfoEntity; +import com.logpm.distribution.entity.DistrilbutionBillLadingEntity; +import com.logpm.distribution.entity.DistrilbutionBillPackageEntity; +import com.logpm.distribution.entity.DistrilbutionBillStockEntity; +import com.logpm.distribution.mapper.DistributionBillLadingScanMapper; +import com.logpm.distribution.mapper.DistributionDeliveryDetailsMapper; +import com.logpm.distribution.mapper.DistributionDeliveryListMapper; +import com.logpm.distribution.mapper.DistributionLoadscanMapper; +import com.logpm.distribution.mapper.DistributionLoadscaninvnMapper; +import com.logpm.distribution.mapper.DistributionParcelListMapper; +import com.logpm.distribution.mapper.DistributionReservationMapper; +import com.logpm.distribution.mapper.DistributionReservationPackageMapper; +import com.logpm.distribution.mapper.DistributionReservationStockarticleMapper; +import com.logpm.distribution.mapper.DistributionReservationStocklistMapper; +import com.logpm.distribution.mapper.DistributionSignforMapper; +import com.logpm.distribution.mapper.DistributionStockListMapper; +import com.logpm.distribution.mapper.DistributionStockMapper; +import com.logpm.distribution.mapper.DistributionStockupInfoMapper; +import com.logpm.distribution.mapper.DistributionStockupMapper; +import com.logpm.distribution.mapper.DistrilbutionBillLadingMapper; +import com.logpm.distribution.service.IDisStockListDetailService; +import com.logpm.distribution.service.IDistributionAsyncService; +import com.logpm.distribution.service.IDistributionDeliveryDetailsService; +import com.logpm.distribution.service.IDistributionParcelNumberService; +import com.logpm.distribution.service.IDistributionReservationStockarticleService; +import com.logpm.distribution.service.IDistributionReservationStocklistService; +import com.logpm.distribution.service.IDistributionReservationZeroPackageService; +import com.logpm.distribution.service.IDistributionStockArticleService; +import com.logpm.distribution.service.IDistrilbutionBillPackageService; +import com.logpm.distribution.service.IDistrilbutionBillStockService; +import com.logpm.distribution.vo.DistributionParcelNumberVO; +import com.logpm.distribution.vo.DistributionSignPrintVO; +import com.logpm.distribution.vo.DistributionStockPackageVO; +import com.logpm.distribution.vo.DistributionStockupSelfVO; +import com.logpm.distribution.vo.DistrilbutionBillStockVO; import com.logpm.factory.comfac.dto.OrderStatusDTO; import com.logpm.factory.mt.dto.MtReceiveContentDTO; import com.logpm.factory.mt.dto.MtReceiveDTO; @@ -23,9 +73,7 @@ import com.logpm.factory.mt.dto.MtReceiveImagesDTO; import com.logpm.factory.mt.feign.IMtOrderMainClinet; import com.logpm.factory.oupai.feign.IOuPaiFactoryClinet; import com.logpm.trunkline.dto.AddWaybillTrackDTO; -import com.logpm.trunkline.feign.ITrunklineWaybillOrderClient; import com.logpm.trunkline.feign.ITrunklineWaybillTrackClient; -import com.logpm.warehouse.entity.WarehouseWarehouseEntity; import com.logpm.warehouse.entity.WarehouseWaybillEntity; import com.logpm.warehouse.feign.IWarehouseUpdownTypeClient; import com.logpm.warehouse.feign.IWarehouseWaybillClient; @@ -46,11 +94,17 @@ import org.springblade.common.constant.orderpackage.OrderPackageLoadingStatusCon import org.springblade.common.constant.orderpackage.OrderPackageReservationStatusConstant; import org.springblade.common.constant.orderpackage.OrderPackageStatusConstant; import org.springblade.common.constant.orderpackage.OrderPackageStockupStatusConstant; -import org.springblade.common.constant.reservation.*; +import org.springblade.common.constant.reservation.ReservationInventoryLoadingStatusConstant; +import org.springblade.common.constant.reservation.ReservationInventorySigningStatusConstant; +import org.springblade.common.constant.reservation.ReservationInventoryStatusConstant; +import org.springblade.common.constant.reservation.ReservationLoadingStatusConstant; +import org.springblade.common.constant.reservation.ReservationOrderStatusConstant; +import org.springblade.common.constant.reservation.ReservationPackageStatusConstant; +import org.springblade.common.constant.reservation.ReservationSigningStatusConstant; +import org.springblade.common.constant.reservation.ReservationStockupStatusConstant; import org.springblade.common.constant.signing.SignforStatusConstant; import org.springblade.common.constant.stockup.StockupStatusConstant; import org.springblade.common.constant.stockup.StockupTypeConstant; -import org.springblade.common.exception.CustomerException; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.secure.BladeUser; import org.springblade.core.tool.utils.Func; @@ -60,7 +114,12 @@ import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; @@ -666,7 +725,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { distributionStockupSelfVO = distributionStockupMapper.stockupSelfOffShelf(stockupDTO); } else { //商 市 - log.info(">>>> find bug stockupDTO {}",stockupDTO); + log.info(">>>> find bug stockupDTO {}", stockupDTO); distributionStockupSelfVO = distributionStockupMapper.stockupOffShelf(stockupDTO); } //有 @@ -962,7 +1021,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { if (Func.isNotEmpty(parcelNumberEntityList)) { parcelNumberEntityList.forEach(p -> { DistributionParcelListEntity zeroParcelListEntity = distributionParcelListService.getById(p.getParcelListId()); - if (p.getOutboundQuantity() .equals(p.getQuantity()) && p.getOutboundQuantity() > 0) { + if (p.getOutboundQuantity().equals(p.getQuantity()) && p.getOutboundQuantity() > 0) { //出库数量和总数量一致,此时包件处于装车状态 zeroParcelListEntity.setOrderPackageLoadingStatus(OrderPackageLoadingStatusConstant.yizhuangche.getValue()); } @@ -1448,8 +1507,8 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { // } break; default: - log.info("开单其它品牌stockArticleEntity.getBrand() ={}",stockArticleEntity.getBrand()); - //其他..... + log.info("开单其它品牌stockArticleEntity.getBrand() ={}", stockArticleEntity.getBrand()); + //其他..... } } @@ -1506,6 +1565,11 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { List distributionSignPrintVOS = distributionSignforMapper.selectSignImgsUrl(distributionSignforEntity.getReservationId()); if (Func.isNotEmpty(distributionSignPrintVOS)) { for (DistributionSignPrintVO distributionSignPrintVO : distributionSignPrintVOS) { + if (StrUtil.isNotBlank(distributionSignPrintVO.getUrlRoute())) { + if (distributionSignPrintVO.getUrlRoute().startsWith("blob:")) { + continue; + } + } MtReceiveImagesDTO mtReceiveImagesDTO = new MtReceiveImagesDTO(); mtReceiveImagesDTO.setImage(distributionSignPrintVO.getUrlRoute()); mtReceiveImagesDTOS.add(mtReceiveImagesDTO); @@ -1525,8 +1589,8 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { log.info(">>>>>>>>>>>>>>> 文员复核推送 品牌 {} ", brand); - assert brand != null; - if (Func.isNotEmpty(brand.get("梦天"))) { + assert brand != null; + if (Func.isNotEmpty(brand.get("梦天"))) { mtReceiveDTO.setReceiveContentList(brand.get("梦天")); orderMainClinet.sendReceiveInfoByNewSystem(mtReceiveDTO); } @@ -1618,7 +1682,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { .filter(p -> p.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.weizhuancghe.getValue()) && !p.getOrderPackageStatus().equals(OrderPackageStatusConstant.yiqianshou.getValue())) .map(DistributionParcelListEntity::getOrderCode) .distinct().collect(Collectors.joining(",")); - log.info(method+"维护订制品订单:{}",orderCodes); + log.info(method + "维护订制品订单:{}", orderCodes); builder.append(orderCodes); log.info(">>>>>> updatePackageDeliveryStatus,{}, {}", reservationId, packageIds); @@ -1627,7 +1691,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { //维护预约订单状态 } List distributionParcelNumberDTOS = distributionReservationMapper.selectZeroPackageListByReservationId(reservationId); - if (Func.isNotEmpty(distributionParcelNumberDTOS)){ + if (Func.isNotEmpty(distributionParcelNumberDTOS)) { //查询此预约单下未进行装车且签收的零担包件 List packageIds = distributionParcelNumberDTOS.stream().map(DistributionParcelNumberDTO::getParcelListId).collect(Collectors.toList()); List loadscanEntityList = distributionLoadscanMapper.selectList(Wrappers.query().lambda() @@ -1635,22 +1699,22 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { .in(DistributionLoadscanEntity::getPackageId, packageIds) .ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()) ); - if (Func.isNotEmpty(loadscanEntityList)){ + if (Func.isNotEmpty(loadscanEntityList)) { //查看是否存在需要进行回库的零担 List collect = loadscanEntityList.stream().filter(f -> !packageIds.contains(f.getPackageId())).map(DistributionLoadscanEntity::getPackageId).collect(Collectors.toList()); - if (Func.isNotEmpty(collect)){ + if (Func.isNotEmpty(collect)) { String orderCode = distributionParcelNumberDTOS.stream().filter(f -> collect.contains(f.getParcelListId())).map(DistributionParcelNumberDTO::getOrderCode).collect(Collectors.joining(",")); - log.info(method+"维护零担订单:{}",orderCode); + log.info(method + "维护零担订单:{}", orderCode); builder.append(orderCode); //这些单子就是需要进行状态回退的零担包件 - reservationZeroPackageService.recoverZeroPackage(reservationId,collect); + reservationZeroPackageService.recoverZeroPackage(reservationId, collect); } - }else { + } else { //计划数量全部回退 String orderCode = distributionParcelNumberDTOS.stream().map(DistributionParcelNumberDTO::getOrderCode).distinct().collect(Collectors.joining(",")); - log.info(method+"维护零担订单:{}",orderCode); + log.info(method + "维护零担订单:{}", orderCode); builder.append(orderCode); - reservationZeroPackageService.recoverZeroPackage(reservationId,packageIds); + reservationZeroPackageService.recoverZeroPackage(reservationId, packageIds); } } distributionStockArticleService.maintenanceOrderInfo(builder.toString(), warehouseId); @@ -1690,54 +1754,52 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { * @param deliveryId */ @Override - public void sendTrunkineLog(Long deliveryId,Long reservationId, BladeUser user, BasicdataWarehouseEntity warehouse,Integer a) { - DistributionDeliveryListEntity distributionDeliveryListEntity = distributionDeliveryListMapper.selectById(deliveryId); + public void sendTrunkineLog(Long deliveryId, Long reservationId, BladeUser user, BasicdataWarehouseEntity warehouse, Integer a) { + DistributionDeliveryListEntity distributionDeliveryListEntity = distributionDeliveryListMapper.selectById(deliveryId); List distributionParcelListEntities = null; - if (1 ==a ){ + if (1 == a) { distributionParcelListEntities = distributionDeliveryListMapper.selectPackageListByDeliveryListId(deliveryId); - }else { + } else { distributionParcelListEntities = distributionReservationMapper.selectPackageListByReservationId(reservationId); } - //查询配送司机信息 - Map driverInfo = distributionDeliveryListMapper.selectDeliveryDriverInfo(distributionDeliveryListEntity.getId()); - if (Func.isNotEmpty(distributionParcelListEntities)){ - Map> listMap = distributionParcelListEntities.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getWaybillNumber)); - listMap.forEach((k, v) ->{ - StringBuilder builder = new StringBuilder(); - //统计已装车数量 - WarehouseWaybillEntity byWaybillNo = waybillClient.findByWaybillNo(k); - AddWaybillTrackDTO addWaybillTrackDTO = new AddWaybillTrackDTO(); - addWaybillTrackDTO.setWaybillId(byWaybillNo.getId()); - addWaybillTrackDTO.setWaybillNo(byWaybillNo.getWaybillNo()); - if (1 ==a){ - int sum = v.stream().filter(p -> OrderPackageLoadingStatusConstant.yizhuangche.getValue().equals(p.getOrderPackageLoadingStatus())).mapToInt(DistributionParcelListEntity::getQuantity).sum(); - addWaybillTrackDTO.setTrackType("90"); - addWaybillTrackDTO.setRefer("运单配送"); - String msg = "运单配送:"+sum+"/"+v.size()+"件"; - builder.append(msg); - //拼接配送信息 - String deliveryMsg = "车牌号:"+ driverInfo.get("vehicleNub")+","+"司机姓名:"+driverInfo.get("driverName")+",司机电话:"+driverInfo.get("driverPhone")+",配送时间:"+distributionDeliveryListEntity.getTaskTime(); - builder.append(deliveryMsg); - }else { - int sum = v.stream().filter(p -> OrderPackageStatusConstant.yiqianshou.getValue().equals(p.getOrderPackageStatus())).mapToInt(DistributionParcelListEntity::getQuantity).sum(); - addWaybillTrackDTO.setTrackType("100"); - addWaybillTrackDTO.setRefer("运单签收"); - String msg = "运单签收:"+sum+"/"+v.size()+"件"; - builder.append(msg); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.sss"); - String deliveryMsg = "最近操作人:"+user.getNickName()+simpleDateFormat.format(new Date()); - builder.append(deliveryMsg); - } - addWaybillTrackDTO.setNickName(user.getNickName()); - addWaybillTrackDTO.setUserId(user.getUserId()); - addWaybillTrackDTO.setWarehouseId(warehouse.getId()); - addWaybillTrackDTO.setWarehouseName(warehouse.getName()); - addWaybillTrackDTO.setOperationRemark(builder.toString()); - trunklineWaybillTrackClient.addWaybillLog(addWaybillTrackDTO); - }); - } - - + //查询配送司机信息 + Map driverInfo = distributionDeliveryListMapper.selectDeliveryDriverInfo(distributionDeliveryListEntity.getId()); + if (Func.isNotEmpty(distributionParcelListEntities)) { + Map> listMap = distributionParcelListEntities.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getWaybillNumber)); + listMap.forEach((k, v) -> { + StringBuilder builder = new StringBuilder(); + //统计已装车数量 + WarehouseWaybillEntity byWaybillNo = waybillClient.findByWaybillNo(k); + AddWaybillTrackDTO addWaybillTrackDTO = new AddWaybillTrackDTO(); + addWaybillTrackDTO.setWaybillId(byWaybillNo.getId()); + addWaybillTrackDTO.setWaybillNo(byWaybillNo.getWaybillNo()); + if (1 == a) { + int sum = v.stream().filter(p -> OrderPackageLoadingStatusConstant.yizhuangche.getValue().equals(p.getOrderPackageLoadingStatus())).mapToInt(DistributionParcelListEntity::getQuantity).sum(); + addWaybillTrackDTO.setTrackType("90"); + addWaybillTrackDTO.setRefer("运单配送"); + String msg = "运单配送:" + sum + "/" + v.size() + "件"; + builder.append(msg); + //拼接配送信息 + String deliveryMsg = "车牌号:" + driverInfo.get("vehicleNub") + "," + "司机姓名:" + driverInfo.get("driverName") + ",司机电话:" + driverInfo.get("driverPhone") + ",配送时间:" + distributionDeliveryListEntity.getTaskTime(); + builder.append(deliveryMsg); + } else { + int sum = v.stream().filter(p -> OrderPackageStatusConstant.yiqianshou.getValue().equals(p.getOrderPackageStatus())).mapToInt(DistributionParcelListEntity::getQuantity).sum(); + addWaybillTrackDTO.setTrackType("100"); + addWaybillTrackDTO.setRefer("运单签收"); + String msg = "运单签收:" + sum + "/" + v.size() + "件"; + builder.append(msg); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.sss"); + String deliveryMsg = "最近操作人:" + user.getNickName() + simpleDateFormat.format(new Date()); + builder.append(deliveryMsg); + } + addWaybillTrackDTO.setNickName(user.getNickName()); + addWaybillTrackDTO.setUserId(user.getUserId()); + addWaybillTrackDTO.setWarehouseId(warehouse.getId()); + addWaybillTrackDTO.setWarehouseName(warehouse.getName()); + addWaybillTrackDTO.setOperationRemark(builder.toString()); + trunklineWaybillTrackClient.addWaybillLog(addWaybillTrackDTO); + }); + } } @@ -2343,18 +2405,18 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { public void changeOrderReservationStatus(DistributionStockArticleDTO stockArticleDTO) { Long id = stockArticleDTO.getId(); DistributionStockArticleEntity stockArticleEntity = Func.copy(stockArticleDTO, DistributionStockArticleEntity.class); - assert stockArticleEntity != null; - if (stockArticleEntity.getIsZero().equals(IsOrNoConstant.no.getValue())) { + assert stockArticleEntity != null; + if (stockArticleEntity.getIsZero().equals(IsOrNoConstant.no.getValue())) { List parcelListEntityList = distributionParcelListService.getBaseMapper().selectList(Wrappers.query().lambda().eq(DistributionParcelListEntity::getStockArticleId, id)); boolean flag = parcelListEntityList.stream().allMatch(p -> p.getOrderPackageReservationStatus().equals(OrderPackageReservationStatusConstant.yiyueyue.getValue())); if (flag && stockArticleEntity.getTotalNumber() == parcelListEntityList.size()) { - stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue()); + stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue()); } else { flag = parcelListEntityList.stream().allMatch(p -> p.getOrderPackageReservationStatus().equals(OrderPackageReservationStatusConstant.daiyuyue.getValue())); if (flag) { - stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.daiyuyue.getValue()); + stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.daiyuyue.getValue()); } else { - stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue()); + stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue()); } } } else { @@ -2365,10 +2427,10 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { // parcelNumberEntities.forEach(p -> { // unavailableNum.getAndAdd(p.getOutboundQuantity() + p.getDeliveryQuantity()); // }); - if (Func.isNotEmpty(parcelNumberEntities)){ + if (Func.isNotEmpty(parcelNumberEntities)) { int sum = parcelNumberEntities.stream().mapToInt(p -> p.getOutboundQuantity() + p.getDeliveryQuantity()).sum(); unavailableNum.getAndAdd(sum); - log.info("################零担包件当前不可用数量:{}",sum); + log.info("################零担包件当前不可用数量:{}", sum); } if (unavailableNum.get() == stockArticleDTO.getHandQuantity()) { stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue()); @@ -2656,13 +2718,13 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { //修改 } } else { - distributionStockup.setId(stockupDTO.getStockupId()); - if (i == 0) { + distributionStockup.setId(stockupDTO.getStockupId()); + if (i == 0) { //修改备货状态 - distributionStockup.setStockupStatus(StockupStatusConstant.yibeihuo.getValue()); + distributionStockup.setStockupStatus(StockupStatusConstant.yibeihuo.getValue()); } else { //修改备货状态 - distributionStockup.setStockupStatus(StockupStatusConstant.beihuozhong.getValue()); + distributionStockup.setStockupStatus(StockupStatusConstant.beihuozhong.getValue()); } }