|
|
|
@ -21,14 +21,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
import com.logpm.distribution.dto.DistributionDeliveryInfoDTO; |
|
|
|
|
import com.logpm.distribution.dto.app.DistributionAppDeliveryListDTO; |
|
|
|
|
import com.logpm.distribution.entity.DistributionDeliveryInfoEntity; |
|
|
|
|
import com.logpm.distribution.entity.DistributionLoadscanEntity; |
|
|
|
|
import com.logpm.distribution.entity.DistributionParcelListEntity; |
|
|
|
|
import com.logpm.distribution.entity.*; |
|
|
|
|
import com.logpm.distribution.excel.DistributionDeliveryInfoExcel; |
|
|
|
|
import com.logpm.distribution.mapper.DistributionDeliveryInfoMapper; |
|
|
|
|
import com.logpm.distribution.mapper.DistributionReservationMapper; |
|
|
|
|
import com.logpm.distribution.mapper.DistributionReservationPackageMapper; |
|
|
|
|
import com.logpm.distribution.mapper.DistributionReservationStockarticleMapper; |
|
|
|
|
import com.logpm.distribution.service.IDistributionDeliveryInfoService; |
|
|
|
|
import com.logpm.distribution.service.IDistributionLoadscanService; |
|
|
|
|
import com.logpm.distribution.service.IDistributionParcelListService; |
|
|
|
|
import com.logpm.distribution.service.IDistributionStockArticleService; |
|
|
|
|
import com.logpm.distribution.vo.DistributionDeliveryInfoVO; |
|
|
|
|
import com.logpm.distribution.vo.DistributionParcelListVO; |
|
|
|
|
import com.logpm.distribution.vo.DistributionStockArticleVO; |
|
|
|
@ -38,13 +40,21 @@ import com.logpm.distribution.vo.app.DistributionAppStockArticleVO;
|
|
|
|
|
import com.logpm.distribution.wrapper.DistributionParcelListWrapper; |
|
|
|
|
import com.logpm.distribution.wrapper.DistributionStockArticleWrapper; |
|
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.springblade.common.constant.loading.LoadingStatusConstant; |
|
|
|
|
import org.springblade.common.constant.reservation.ReservationOrderStatusConstant; |
|
|
|
|
import org.springblade.common.serviceConstant.ServiceConstant; |
|
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
|
import org.springblade.core.tool.utils.Func; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger; |
|
|
|
|
import java.util.function.Function; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 配送装车中间表 服务实现类 |
|
|
|
@ -54,13 +64,21 @@ import java.util.List;
|
|
|
|
|
*/ |
|
|
|
|
@Service |
|
|
|
|
@AllArgsConstructor |
|
|
|
|
@Slf4j |
|
|
|
|
public class DistributionDeliveryInfoServiceImpl extends BaseServiceImpl<DistributionDeliveryInfoMapper, DistributionDeliveryInfoEntity> implements IDistributionDeliveryInfoService { |
|
|
|
|
|
|
|
|
|
private DistributionReservationPackageMapper distributionReservationPackageMapper; |
|
|
|
|
|
|
|
|
|
private DistributionReservationStockarticleMapper distributionReservationStockarticleMapper; |
|
|
|
|
|
|
|
|
|
private IDistributionLoadscanService distributionLoadscanService; |
|
|
|
|
|
|
|
|
|
private DistributionReservationMapper distributionReservationMapper; |
|
|
|
|
|
|
|
|
|
private IDistributionParcelListService distributionParcelListService; |
|
|
|
|
|
|
|
|
|
private IDistributionStockArticleService distributionStockArticleService; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<DistributionDeliveryInfoVO> selectDistributionDeliveryInfoPage(IPage<DistributionDeliveryInfoVO> page, DistributionDeliveryInfoVO distributionDeliveryInfo) { |
|
|
|
|
List<DistributionDeliveryInfoVO> distributionDeliveryInfoVOS = baseMapper.selectDistributionDeliveryInfoPage(page, distributionDeliveryInfo); |
|
|
|
@ -142,49 +160,174 @@ public class DistributionDeliveryInfoServiceImpl extends BaseServiceImpl<Distrib
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<DistributionAppStockArticleVO> selectDistributionAppDeliveryorder(IPage<DistributionAppStockArticleVO> page, DistributionAppDeliveryListDTO distributionAppDeliveryListDTO) { |
|
|
|
|
|
|
|
|
|
//-------------------------------------2023-10-07 客户查看订单详情-----------------------------------------------------------------
|
|
|
|
|
// 这里先查询出客户的订单信息,然后查询订单的预约包件信息
|
|
|
|
|
long reservationId = Long.parseLong(distributionAppDeliveryListDTO.getReservationId()); |
|
|
|
|
List<DistributionStockArticleVO> stockArticleVOS = distributionReservationMapper.selectOrderInfoByReservationId(reservationId); |
|
|
|
|
// List<DistributionParcelListEntity> packageListByReservationId = distributionReservationMapper.selectPackageListByReservationId(Long.parseLong(distributionAppDeliveryListDTO.getReservationId()));
|
|
|
|
|
if (Func.isEmpty(stockArticleVOS)){ |
|
|
|
|
//错误数据
|
|
|
|
|
log.error("#################预约订单异常:{}",stockArticleVOS); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
List<DistributionAppStockArticleVO> distributionAppStockArticleVOS = new ArrayList<>(); |
|
|
|
|
List<DistributionLoadscanEntity> loadscanEntityList = distributionLoadscanService.list(Wrappers.<DistributionLoadscanEntity>query().lambda().eq(DistributionLoadscanEntity::getReservationId, distributionAppDeliveryListDTO.getReservationId()).ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue())); |
|
|
|
|
Map<Long, List<DistributionLoadscanEntity>> orderInfo = loadscanEntityList.stream().collect(Collectors.groupingBy(DistributionLoadscanEntity::getOrderId)); |
|
|
|
|
stockArticleVOS.forEach(ord->{ |
|
|
|
|
DistributionAppStockArticleVO distributionAppStockArticleVO = new DistributionAppStockArticleVO(); |
|
|
|
|
distributionAppStockArticleVO.setOrderCode(ord.getOrderCode()); |
|
|
|
|
distributionAppStockArticleVO.setReservationNum(ord.getReservationNum()); |
|
|
|
|
Map<Long, DistributionLoadscanEntity> loadingPackage = new HashMap<>(); |
|
|
|
|
if (ord.getIsHaveData().equals(ServiceConstant.ORDER_HAVE_DATA)){ |
|
|
|
|
List<DistributionParcelListEntity> parcelListEntities = distributionReservationMapper.selectPackageByReservationAndStockArticle(reservationId, ord.getId()); |
|
|
|
|
if (Func.isNotEmpty(orderInfo.get(ord.getId()))){ |
|
|
|
|
loadingPackage = orderInfo.get(ord.getId()).stream().collect(Collectors.toMap(DistributionLoadscanEntity::getPackageId, Function.identity(), (k1, k2) -> k2)); |
|
|
|
|
} |
|
|
|
|
List<DistributionAppParcelListVO> ks = new ArrayList<>(); |
|
|
|
|
AtomicInteger atomicInteger = new AtomicInteger(); |
|
|
|
|
// 装车数量
|
|
|
|
|
AtomicInteger loadingNum = new AtomicInteger(); |
|
|
|
|
for (DistributionParcelListEntity parcelListEntity : parcelListEntities) { |
|
|
|
|
DistributionAppParcelListVO appParcelListVO = Func.copy(parcelListEntity, DistributionAppParcelListVO.class); |
|
|
|
|
if (Func.isNotEmpty(loadingPackage.get(parcelListEntity.getId()))){ |
|
|
|
|
atomicInteger.getAndIncrement(); |
|
|
|
|
appParcelListVO.setScanStatus(2); |
|
|
|
|
appParcelListVO.setIsScan("已扫"); |
|
|
|
|
loadingPackage.remove(parcelListEntity.getId()); |
|
|
|
|
loadingNum.getAndAdd(parcelListEntity.getQuantity()); |
|
|
|
|
//这里就是表示计划中的包件装车了
|
|
|
|
|
//需要对该包件的装车数量进行统计
|
|
|
|
|
}else { |
|
|
|
|
//此时这个订单内还存在装车的包件,这些包件就是异常装车的包件了
|
|
|
|
|
appParcelListVO.setScanStatus(1); |
|
|
|
|
appParcelListVO.setIsScan("未扫"); |
|
|
|
|
} |
|
|
|
|
ks.add(appParcelListVO); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (Func.isNotEmpty(loadingPackage)){ |
|
|
|
|
//该订单存在有异常装车包件
|
|
|
|
|
loadingPackage.forEach((k,v)->{ |
|
|
|
|
DistributionParcelListEntity parcelListServiceById = distributionParcelListService.getById(v.getPackageId()); |
|
|
|
|
DistributionAppParcelListVO appParcelListVO = Func.copy(parcelListServiceById, DistributionAppParcelListVO.class); |
|
|
|
|
loadingNum.getAndAdd(v.getPackageNub()); |
|
|
|
|
appParcelListVO.setScanStatus(3); |
|
|
|
|
appParcelListVO.setIsScan("异常"); |
|
|
|
|
|
|
|
|
|
distributionAppStockArticleVOS = baseMapper.selectDistributionAppDeliveryOrderPage(page, distributionAppDeliveryListDTO); |
|
|
|
|
if (null != distributionAppDeliveryListDTO.getCompletecode()) { |
|
|
|
|
if (distributionAppDeliveryListDTO.getCompletecode() == 2) { |
|
|
|
|
distributionAppStockArticleVOS = baseMapper.selectDistributionAppDeliveryOrderCompletewPage(page, distributionAppDeliveryListDTO); |
|
|
|
|
} else if (distributionAppDeliveryListDTO.getCompletecode() == 1) { |
|
|
|
|
distributionAppStockArticleVOS = baseMapper.selectDistributionAppDeliveryOrderCompmletePage(page, distributionAppDeliveryListDTO); |
|
|
|
|
} else if (distributionAppDeliveryListDTO.getCompletecode() == 3) { |
|
|
|
|
distributionAppStockArticleVOS = baseMapper.selectDistributionAppDeliveryOrderCompcletePage(page, distributionAppDeliveryListDTO); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
//数量转换字典
|
|
|
|
|
distributionAppStockArticleVOS.forEach(e -> { |
|
|
|
|
// 需要根据当前的客户的ID查询对应的包件信息
|
|
|
|
|
List<DistributionAppParcelListVO> ks = distributionReservationPackageMapper.getOrderPackageListByOrderCode(e.getStockArticleId()); |
|
|
|
|
ks.forEach(k -> { |
|
|
|
|
List<DistributionLoadscanEntity> list = distributionLoadscanService.list(Wrappers.<DistributionLoadscanEntity>query().lambda() |
|
|
|
|
.eq(DistributionLoadscanEntity::getOrderPackageCode, k.getOrderPackageCode()) |
|
|
|
|
.eq(DistributionLoadscanEntity::getReservationId, k.getReservationId()) |
|
|
|
|
.apply("scan_status != 1") |
|
|
|
|
); |
|
|
|
|
if (!list.isEmpty()) { |
|
|
|
|
k.setScanStatus(2); |
|
|
|
|
k.setIsScan("已扫"); |
|
|
|
|
} else { |
|
|
|
|
k.setScanStatus(1); |
|
|
|
|
k.setIsScan("未扫"); |
|
|
|
|
ks.add(appParcelListVO); |
|
|
|
|
}); |
|
|
|
|
distributionAppStockArticleVO.setIsHaveAbnormalPackage(1); |
|
|
|
|
distributionAppStockArticleVO.setIsHaveAbnormalPackageName("异常"); |
|
|
|
|
} |
|
|
|
|
distributionAppStockArticleVO.setDistributionAppParcelListVOS(ks); |
|
|
|
|
distributionAppStockArticleVO.setLoadingNub(loadingNum.get()); |
|
|
|
|
if (atomicInteger.get() ==ord.getReservationNum()){ |
|
|
|
|
distributionAppStockArticleVO.setCompletecode(3); |
|
|
|
|
distributionAppStockArticleVO.setComplete("计划齐套"); |
|
|
|
|
}else if (atomicInteger.get()== 0 ){ |
|
|
|
|
distributionAppStockArticleVO.setCompletecode(1); |
|
|
|
|
distributionAppStockArticleVO.setComplete("计划未扫"); |
|
|
|
|
}else { |
|
|
|
|
distributionAppStockArticleVO.setCompletecode(2); |
|
|
|
|
distributionAppStockArticleVO.setComplete("部分扫"); |
|
|
|
|
} |
|
|
|
|
//此订单存在数据源
|
|
|
|
|
//查询该订单
|
|
|
|
|
}else { |
|
|
|
|
//TODO 无数据源订单...
|
|
|
|
|
} |
|
|
|
|
distributionAppStockArticleVOS.add(distributionAppStockArticleVO); |
|
|
|
|
if (Func.isNotEmpty(orderInfo.get(ord.getId()))){ |
|
|
|
|
orderInfo.remove(ord.getId()); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
e.setDistributionAppParcelListVOS(ks); |
|
|
|
|
|
|
|
|
|
if (e.getLoadingNub() == 0) { |
|
|
|
|
e.setComplete("未扫"); |
|
|
|
|
e.setCompletecode(1); |
|
|
|
|
} else if (e.getLoadingNub() < e.getReservationNum()) { |
|
|
|
|
e.setComplete("部分扫"); |
|
|
|
|
e.setCompletecode(2); |
|
|
|
|
} else { |
|
|
|
|
e.setComplete("齐套"); |
|
|
|
|
e.setCompletecode(3); |
|
|
|
|
if (Func.isNotEmpty(orderInfo)){ |
|
|
|
|
//整个订单都是异常装车
|
|
|
|
|
orderInfo.forEach((k,v)->{ |
|
|
|
|
AtomicInteger loadingNum = new AtomicInteger(); |
|
|
|
|
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(k); |
|
|
|
|
DistributionAppStockArticleVO appStockArticleVO = Func.copy(stockArticleEntity, DistributionAppStockArticleVO.class); |
|
|
|
|
List<DistributionAppParcelListVO> distributionAppParcelListVOS = new ArrayList<>(); |
|
|
|
|
for (DistributionLoadscanEntity loadscanEntity : v) { |
|
|
|
|
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(loadscanEntity.getPackageId()); |
|
|
|
|
DistributionAppParcelListVO parcelListVO = Func.copy(parcelListEntity, DistributionAppParcelListVO.class); |
|
|
|
|
parcelListVO.setScanStatus(3); |
|
|
|
|
parcelListVO.setIsScan("异常"); |
|
|
|
|
loadingNum.getAndAdd(parcelListEntity.getQuantity()); |
|
|
|
|
distributionAppParcelListVOS.add(parcelListVO); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
appStockArticleVO.setLoadingNub(loadingNum.get()); |
|
|
|
|
appStockArticleVO.setDistributionAppParcelListVOS(distributionAppParcelListVOS); |
|
|
|
|
appStockArticleVO.setReservationNum(0); |
|
|
|
|
distributionAppStockArticleVOS.add(appStockArticleVO); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// packageListByReservationId.stream().collect(Collectors.groupingBy())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// List<DistributionAppStockArticleVO> distributionAppStockArticleVOS = new ArrayList<>();
|
|
|
|
|
//
|
|
|
|
|
// distributionAppStockArticleVOS = baseMapper.selectDistributionAppDeliveryOrderPage(page, distributionAppDeliveryListDTO);
|
|
|
|
|
// if (null != distributionAppDeliveryListDTO.getCompletecode()) {
|
|
|
|
|
// if (distributionAppDeliveryListDTO.getCompletecode() == 2) {
|
|
|
|
|
// distributionAppStockArticleVOS = baseMapper.selectDistributionAppDeliveryOrderCompletewPage(page, distributionAppDeliveryListDTO);
|
|
|
|
|
// } else if (distributionAppDeliveryListDTO.getCompletecode() == 1) {
|
|
|
|
|
// distributionAppStockArticleVOS = baseMapper.selectDistributionAppDeliveryOrderCompmletePage(page, distributionAppDeliveryListDTO);
|
|
|
|
|
// } else if (distributionAppDeliveryListDTO.getCompletecode() == 3) {
|
|
|
|
|
// distributionAppStockArticleVOS = baseMapper.selectDistributionAppDeliveryOrderCompcletePage(page, distributionAppDeliveryListDTO);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// //数量转换字典
|
|
|
|
|
// distributionAppStockArticleVOS.forEach(e -> {
|
|
|
|
|
// // 需要根据当前的客户的ID查询对应的包件信息
|
|
|
|
|
// List<DistributionAppParcelListVO> ks = distributionReservationPackageMapper.getOrderPackageListByOrderCode(e.getStockArticleId());
|
|
|
|
|
// if (e.getIsHaveAbnormalPackage() == 2) {
|
|
|
|
|
// //查询异常装车的包件,此时异常装车包件不在计划中
|
|
|
|
|
// List<DistributionLoadscanEntity> distributionLoadscanEntities = distributionLoadscanService.list(Wrappers.<DistributionLoadscanEntity>query().lambda()
|
|
|
|
|
// .eq(DistributionLoadscanEntity::getReservationId, distributionAppDeliveryListDTO.getReservationId())
|
|
|
|
|
// .ne(DistributionLoadscanEntity::getScanStatus, "1"));
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
// ks.forEach(k -> {
|
|
|
|
|
// List<DistributionLoadscanEntity> list = distributionLoadscanService.list(Wrappers.<DistributionLoadscanEntity>query().lambda()
|
|
|
|
|
// .eq(DistributionLoadscanEntity::getOrderPackageCode, k.getOrderPackageCode())
|
|
|
|
|
// .eq(DistributionLoadscanEntity::getReservationId, k.getReservationId())
|
|
|
|
|
// .apply("scan_status != 1")
|
|
|
|
|
// );
|
|
|
|
|
// if (!list.isEmpty()) {
|
|
|
|
|
// k.setScanStatus(2);
|
|
|
|
|
// k.setIsScan("已扫");
|
|
|
|
|
// } else {
|
|
|
|
|
// k.setScanStatus(1);
|
|
|
|
|
// k.setIsScan("未扫");
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// e.setDistributionAppParcelListVOS(ks);
|
|
|
|
|
// if (e.getLoadingNub() == 0) {
|
|
|
|
|
// e.setComplete("未扫");
|
|
|
|
|
// e.setCompletecode(1);
|
|
|
|
|
// } else if (e.getLoadingNub() < e.getReservationNum()) {
|
|
|
|
|
// e.setComplete("部分扫");
|
|
|
|
|
// e.setCompletecode(2);
|
|
|
|
|
// } else {
|
|
|
|
|
// e.setComplete("齐套");
|
|
|
|
|
// e.setCompletecode(3);
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
return page.setRecords(distributionAppStockArticleVOS); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|