|
|
|
@ -16,6 +16,7 @@
|
|
|
|
|
*/ |
|
|
|
|
package com.logpm.distribution.service.impl; |
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
|
|
|
|
import com.logpm.distribution.dto.*; |
|
|
|
@ -72,6 +73,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
|
|
|
|
|
private final DistributionReservationMapper distributionReservationMapper; |
|
|
|
|
private final IDistributionReservationStockarticleService distributionReservationStockarticleService; |
|
|
|
|
private final IDistributionReservationPackageService distributionReservationPackageService; |
|
|
|
|
private final DistributionReservationPackageMapper distributionReservationPackageMapper; |
|
|
|
|
private final DistributionParcelListMapper distributionParcelListMapper; |
|
|
|
|
private final IDistributionParcelListService distributionParcelListService; |
|
|
|
|
private final DistributionLoadscanMapper distributionLoadscanMapper; |
|
|
|
@ -1110,6 +1112,11 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
|
|
|
|
|
List<DistributionStockArticleVO> stockArticleVOS = distributionDeliveryListMapper.getDeliveryStockArticleInfo(id); |
|
|
|
|
stockArticleVOS.forEach(s->{ |
|
|
|
|
//这里查询出订单选取的包件信息
|
|
|
|
|
DistributionReservationPackageDTO reservationPackageDTO = new DistributionReservationPackageDTO(); |
|
|
|
|
reservationPackageDTO.setReservationId(reservationVOS.getId()); |
|
|
|
|
reservationPackageDTO.setStockArticleId(s.getId()); |
|
|
|
|
List<DistributionParcelListEntity> parcelListEntities = distributionReservationPackageMapper.getDeliveryReservationPackage(deliveryListEntity.getId(),s.getId()); |
|
|
|
|
s.setParcelListVOS(parcelListEntities); |
|
|
|
|
}); |
|
|
|
|
deliveryListVO.setStockArticleList(stockArticleVOS); |
|
|
|
|
//2、查询出备货信息
|
|
|
|
@ -1161,7 +1168,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
@Transactional |
|
|
|
|
public R<?> UpdateDeliveryListInfo(DistributionDeliveryListDTO deliveryListDTO) { |
|
|
|
|
public R<?> updateDeliveryListInfo(DistributionDeliveryListDTO deliveryListDTO) { |
|
|
|
|
if ( Func.isEmpty(deliveryListDTO)){ |
|
|
|
|
log.error("deliveryListDTO参数异常+{"+deliveryListDTO+"}"); |
|
|
|
|
return R.fail("服务器正忙!!"); |
|
|
|
@ -1182,6 +1189,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
|
|
|
|
|
distributionDeliveryTripartiteMapper.deleteDeliveryTripartite(deliveryListEntity.getId()); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
//这里对司机配置信息进行判断,如果不存在该信息则为外协配送的方式
|
|
|
|
|
if (Func.isEmpty(allocationInfo)){ |
|
|
|
|
//这里就表示是三方配送
|
|
|
|
|
DistributionDeliveryTripartiteDTO tripartite = deliveryListDTO.getTripartite(); |
|
|
|
@ -1217,9 +1225,15 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
|
|
|
|
|
//根据门店进行分组
|
|
|
|
|
Map<String, List<DistributionStockArticleDTO>> storeClient = stockArticle.stream().collect(Collectors.groupingBy(DistributionStockArticleDTO::getStoreName)); |
|
|
|
|
List<DistributionStockArticleDTO> distributionStockArticleDTOS = storeClient.get(""); |
|
|
|
|
Map<String, List<DistributionStockArticleDTO>> mallClient = distributionStockArticleDTOS.stream().collect(Collectors.groupingBy(DistributionStockArticleDTO::getMallName)); |
|
|
|
|
Map<String, List<DistributionStockArticleDTO>> mallClient = null; |
|
|
|
|
if (!Func.isEmpty(distributionStockArticleDTOS)){ |
|
|
|
|
mallClient = distributionStockArticleDTOS.stream().collect(Collectors.groupingBy(DistributionStockArticleDTO::getMallName)); |
|
|
|
|
Map<String, List<DistributionStockArticleDTO>> finalMallClient = mallClient; |
|
|
|
|
storeClient.forEach((k, v)-> finalMallClient.merge(k,v,(v1, v2)->v2)); |
|
|
|
|
}else { |
|
|
|
|
mallClient = storeClient; |
|
|
|
|
} |
|
|
|
|
//3、维护订单和客户
|
|
|
|
|
storeClient.forEach((k,v)->mallClient.merge(k,v,(v1,v2)->v2)); |
|
|
|
|
//查询该配送任务下原有的客户
|
|
|
|
|
List<DistributionReservationEntity> reservationEntityList = distributionReservationMapper.getDeliveryReservation(deliveryListEntity.getId()); |
|
|
|
|
//将原客户和新的进行比对,如果有那么则进行客户修改,最后剩下的订单信息都属于是新客户
|
|
|
|
@ -1228,17 +1242,121 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
|
|
|
|
|
mallClient.forEach((k,v)->{ |
|
|
|
|
if (!k.equals("")){ |
|
|
|
|
if (Func.isNotEmpty(originalClient.get(k))){ |
|
|
|
|
//这里实际上就是包件发生了变化
|
|
|
|
|
//1、订单发生变化
|
|
|
|
|
//2、包件发生变化
|
|
|
|
|
//3、订单包件均发生变化
|
|
|
|
|
//查询原来这个客户下的所有订单信息
|
|
|
|
|
List<DistributionStockArticleEntity> stockArticleEntities = distributionReservationMapper.getStockArticleListInfo(k,deliveryListEntity.getId()); |
|
|
|
|
Map<Long, List<DistributionStockArticleEntity>> orderInfo = stockArticleEntities.stream().collect(Collectors.groupingBy(DistributionStockArticleEntity::getId)); |
|
|
|
|
v.forEach(o->{ |
|
|
|
|
//这里就需要判断这个订单是否存在原来的订单信息中
|
|
|
|
|
DistributionReservationEntity reservationEntity = distributionReservationMapper.selectByConsignee(k); |
|
|
|
|
if (Func.isEmpty(orderInfo.get(o.getId()))){ |
|
|
|
|
//从原来的客户信息中未查询到该订单信息,需要为该客户进行订单信息的维护
|
|
|
|
|
//根据客户进行预约信息的查询
|
|
|
|
|
DistributionReservationStockarticleEntity reservationStockarticleEntity = new DistributionReservationStockarticleEntity(); |
|
|
|
|
reservationStockarticleEntity.setReservationId(reservationEntity.getId()); |
|
|
|
|
reservationStockarticleEntity.setStockArticleId(o.getId()); |
|
|
|
|
reservationStockarticleEntity.setIsHaveData(o.getIsHaveData()); |
|
|
|
|
//这里需要考虑这个订单的包件问题,
|
|
|
|
|
//统计包件数量
|
|
|
|
|
AtomicInteger packageTotal = new AtomicInteger(); |
|
|
|
|
if (o.getPackageList().size()==0){ |
|
|
|
|
//进行包件全选的操作
|
|
|
|
|
//查询出该订单下的所有包件信息,进行包件信息的维护
|
|
|
|
|
LambdaQueryWrapper<DistributionParcelListEntity> qw = new QueryWrapper<DistributionParcelListEntity>().lambda().eq(DistributionParcelListEntity::getStockArticleId, o.getId()); |
|
|
|
|
List<DistributionParcelListEntity> parcelListEntities = distributionParcelListService.getBaseMapper().selectList(qw); |
|
|
|
|
parcelListEntities.forEach(p->{ |
|
|
|
|
DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity(); |
|
|
|
|
reservationPackageEntity.setReservationId(reservationEntity.getId()); |
|
|
|
|
reservationPackageEntity.setPacketBarCode(p.getPacketBarCode()); |
|
|
|
|
reservationPackageEntity.setStockArticleId(p.getStockArticleId()); |
|
|
|
|
reservationPackageEntity.setParceListId(p.getId()); |
|
|
|
|
distributionReservationPackageService.save(reservationPackageEntity); |
|
|
|
|
//统计包件的数量
|
|
|
|
|
packageTotal.getAndAdd(p.getQuantity()); |
|
|
|
|
//TODO 这里还需要对包件状态进行修改
|
|
|
|
|
}); |
|
|
|
|
}else { |
|
|
|
|
//进行选中包件的数据维护
|
|
|
|
|
List<DistributionParcelListEntity> packageList = o.getPackageList(); |
|
|
|
|
packageList.forEach(p->{ |
|
|
|
|
DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity(); |
|
|
|
|
reservationPackageEntity.setReservationId(reservationEntity.getId()); |
|
|
|
|
reservationPackageEntity.setPacketBarCode(p.getPacketBarCode()); |
|
|
|
|
reservationPackageEntity.setStockArticleId(p.getStockArticleId()); |
|
|
|
|
reservationPackageEntity.setParceListId(p.getId()); |
|
|
|
|
distributionReservationPackageService.save(reservationPackageEntity); |
|
|
|
|
//统计包件的数量
|
|
|
|
|
packageTotal.getAndAdd(p.getQuantity()); |
|
|
|
|
//TODO 这里还需要对包件状态进行修改
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
reservationStockarticleEntity.setReservationNum(packageTotal.get()); |
|
|
|
|
distributionReservationStockarticleService.save(reservationStockarticleEntity); |
|
|
|
|
}else { |
|
|
|
|
//查看该订单是否发生包件修改操作
|
|
|
|
|
AtomicInteger packageTotal = new AtomicInteger(); |
|
|
|
|
if (o.getIsUpdate()){ |
|
|
|
|
//订单发生修改包件的操作,先对该预约下的订单进行解绑
|
|
|
|
|
Integer i = distributionReservationPackageMapper.deletePackageByRidAndSid(reservationEntity.getId(),o.getId()); |
|
|
|
|
//构建新的
|
|
|
|
|
if (o.getPackageList().size()==0){ |
|
|
|
|
//订单全选
|
|
|
|
|
LambdaQueryWrapper<DistributionParcelListEntity> qw = new QueryWrapper<DistributionParcelListEntity>().lambda().eq(DistributionParcelListEntity::getStockArticleId, o.getId()); |
|
|
|
|
List<DistributionParcelListEntity> parcelListEntities = distributionParcelListService.getBaseMapper().selectList(qw); |
|
|
|
|
parcelListEntities.forEach(p->{ |
|
|
|
|
DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity(); |
|
|
|
|
reservationPackageEntity.setReservationId(reservationEntity.getId()); |
|
|
|
|
reservationPackageEntity.setPacketBarCode(p.getPacketBarCode()); |
|
|
|
|
reservationPackageEntity.setStockArticleId(p.getStockArticleId()); |
|
|
|
|
reservationPackageEntity.setParceListId(p.getId()); |
|
|
|
|
distributionReservationPackageService.save(reservationPackageEntity); |
|
|
|
|
//统计包件的数量
|
|
|
|
|
packageTotal.getAndAdd(p.getQuantity()); |
|
|
|
|
//TODO 这里还需要对包件状态进行修改
|
|
|
|
|
}); |
|
|
|
|
//需要修改该客户下的订单中间表信息
|
|
|
|
|
}else { |
|
|
|
|
//有选取订单的操作
|
|
|
|
|
List<DistributionParcelListEntity> packageList = o.getPackageList(); |
|
|
|
|
packageList.forEach(p->{ |
|
|
|
|
DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity(); |
|
|
|
|
reservationPackageEntity.setReservationId(reservationEntity.getId()); |
|
|
|
|
reservationPackageEntity.setPacketBarCode(p.getPacketBarCode()); |
|
|
|
|
reservationPackageEntity.setStockArticleId(p.getStockArticleId()); |
|
|
|
|
reservationPackageEntity.setParceListId(p.getId()); |
|
|
|
|
distributionReservationPackageService.save(reservationPackageEntity); |
|
|
|
|
//统计包件的数量
|
|
|
|
|
packageTotal.getAndAdd(p.getQuantity()); |
|
|
|
|
//TODO 这里还需要对包件状态进行修改
|
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
//修改预约订单中间表和客户信息
|
|
|
|
|
|
|
|
|
|
//修改客户预约信息
|
|
|
|
|
//为客户的订单进行修改操作
|
|
|
|
|
//这里就将该订单下的包件信息进行删除后重新进行数据添加维护
|
|
|
|
|
//删除原有的包件信息,
|
|
|
|
|
}else { |
|
|
|
|
//这里就不执行操作
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//这里如果获取不到说明增加了该客户下的一个订单
|
|
|
|
|
|
|
|
|
|
//执行新订单的维护,将原来的订单信息进行移除
|
|
|
|
|
List<DistributionParcelListEntity> packageList = o.getPackageList(); |
|
|
|
|
//删除原来订单和包件之间的关系,建立新的包件和订单之间的关系
|
|
|
|
|
//1、通过客户名称查询出预约信息
|
|
|
|
|
//2、通过预约信息解除该订单下原有的包件信息
|
|
|
|
|
//3、重新建立包件和预约的关联关系
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
originalClient.remove(k); |
|
|
|
|
}else { |
|
|
|
|
//必定是新增订单,且新增了客户
|
|
|
|
|
DistributionReservationDTO reservation = deliveryListDTO.getReservation(); |
|
|
|
|
DistributionReservationEntity reservationEntity = Func.copy(reservation, DistributionReservationEntity.class); |
|
|
|
|
reservationEntity.setReservationStatus(ServiceConstant.RESERVATION_STATE_WAIT_DELIVERY); |
|
|
|
@ -1278,6 +1396,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
|
|
|
|
|
reservationPackageEntity.setPacketBarCode(p.getPacketBarCode()); |
|
|
|
|
distributionReservationPackageService.save(reservationPackageEntity); |
|
|
|
|
packageTotal.getAndAdd(p.getQuantity()); |
|
|
|
|
//TODO 这里还需要对包件状态进行修改
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
}else { |
|
|
|
|
//查询出该订单下的所有包件,完成预约和包件的维护
|
|
|
|
@ -1292,6 +1412,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
|
|
|
|
|
reservationPackageEntity.setPacketBarCode(dp.getPacketBarCode()); |
|
|
|
|
distributionReservationPackageService.save(reservationPackageEntity); |
|
|
|
|
packageTotal.getAndAdd(dp.getQuantity()); |
|
|
|
|
//TODO 这里还需要对包件状态进行修改
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
//完成预约和订单之间数据关系
|
|
|
|
|