|
|
|
@ -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<Distrib
|
|
|
|
|
private final IBasicdataWarehouseClient warehouseClient; |
|
|
|
|
private final IDisStockListDetailService disStockListDetailService; |
|
|
|
|
private final DistributionStockListMapper distributionStockListMapper; |
|
|
|
|
private final IDistributionStockListService distributionStockListService; |
|
|
|
|
private final IWarehouseUpdownTypeClient warehouseUpdownTypeClient; |
|
|
|
|
private final IBasicPrintTemplateClient basicPrintTemplateClient; |
|
|
|
|
private final IWarehouseTrayTypeClient warehouseTrayTypeClient; |
|
|
|
@ -1249,6 +1248,16 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
|
|
|
|
|
if (Func.isEmpty(reservationStockarticleEntityList)) { |
|
|
|
|
log.error("####################reservationStockarticleEntityList维护数据异常,reservationID:{}", distrilbutionloadingscanDTO.getReservationId()); |
|
|
|
|
} |
|
|
|
|
List<DisStockListDetailEntity> stockListDetailEntityList = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>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<String, List<DistributionReservationStockarticleEntity>> 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<Distrib
|
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
List<DisStockListDetailEntity> stockListDetailEntityList = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>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<DisStockListDetailEntity> stockListDetailEntityList = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>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<Distrib
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<DistributionAppStockArticleVO> selectDistributionAppDeliverywrapIn(IPage<DistributionAppStockArticleVO> page, DistributionAppDeliveryListDTO distributionAppDeliveryListDTO) { |
|
|
|
|
List<DistributionAppStockArticleVO> distributionAppStockListVOS = baseMapper.selectListbyink(page, distributionAppDeliveryListDTO.getId()); |
|
|
|
|
return page.setRecords(distributionAppStockListVOS); |
|
|
|
|
public List<DisStockListDetailVO> selectDistributionAppDeliverywrapIn(DistributionAppDeliveryListDTO distributionAppDeliveryListDTO) { |
|
|
|
|
List<DisStockListDetailEntity> detailEntities = baseMapper.selectInventoryListByDeliveryListId(distributionAppDeliveryListDTO.getId()); |
|
|
|
|
if (Func.isEmpty(detailEntities)){ |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
List<Long> stockListIds = detailEntities.stream().map(DisStockListDetailEntity::getStockListId).distinct().collect(Collectors.toList()); |
|
|
|
|
List<DistributionStockListEntity> distributionStockListEntities = distributionStockListService.listByIds(stockListIds); |
|
|
|
|
Map<Long, DistributionStockListEntity> stockListMap = distributionStockListEntities.stream().collect(Collectors.toMap(DistributionStockListEntity::getId, Function.identity(), (k1, k2) -> k2)); |
|
|
|
|
List<DisStockListDetailVO> 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<Distrib
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<DistributionAppParcelListVO> selectDistributionAppDeliverywrap(IPage<DistributionAppParcelListVO> 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<Distrib
|
|
|
|
|
// for (DistributionAppStockArticleVO distributionAppStockArticleVO : distributionAppStockArticleVOS) {
|
|
|
|
|
// if (distributionAppStockArticleVO.getLoadingNub() >=distributionAppStockArticleVO.getReservationNum()) {ordCount +=1;}
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
DistributionDeliveryListEntity distributionDeliveryListEntity = baseMapper.selectById(distributionAppDeliveryListDTO.getId()); |
|
|
|
|
DistributionAppDeliveryListVO distributionAppDeliveryListVO = Func.copy(distributionDeliveryListEntity, DistributionAppDeliveryListVO.class); |
|
|
|
|
//查询该配送所有包条
|
|
|
|
|
List<DistributionAppParcelListVO> parcelListVOS = baseMapper.selectListbypack(page, distributionAppDeliveryListDTO); |
|
|
|
|
List<DistributionAppParcelListVO> appParcelListVOS = new ArrayList<>(); |
|
|
|
|
List<DistributionReservationStockarticleEntity> reservationStockarticleEntityList = baseMapper.selectReservationStockByDeliveryId(distributionAppDeliveryListDTO.getId()); |
|
|
|
|
List<DistributionReservationEntity> 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<DistributionParcelListEntity> parcelListEntityList = distributionReservationMapper.selectPackageByReservationAndStockArticle(rs.getReservationId(), rs.getStockArticleId()); |
|
|
|
|
List<DistributionLoadscanEntity> packageLoadingList = distributionLoadscanService.list(Wrappers.<DistributionLoadscanEntity>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<DistributionParcelNumberVO> parcelNumberVOS = distributionReservationMapper.selectReservationZeroOrderDetail(rs.getStockArticleId(), rs.getReservationId()); |
|
|
|
|
List<DistributionLoadscanEntity> loadscanEntities = distributionLoadscanService.list(Wrappers.<DistributionLoadscanEntity>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<DistributionAppParcelListVO> parcelListVOS = baseMapper.selectListbypack(page, distributionAppDeliveryListDTO);
|
|
|
|
|
return distributionAppDeliveryListVO; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|