|
|
|
@ -187,7 +187,6 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
List<DistributionStockArticleEntity> stockArticleList = distributionReservationDTO.getStockArticleList(); |
|
|
|
|
List<DistributionStockListEntity> inventoryList = distributionReservationDTO.getInventoryList(); |
|
|
|
|
AtomicInteger stockArticleCount = new AtomicInteger(); |
|
|
|
|
AtomicInteger stockListCount = new AtomicInteger(); |
|
|
|
|
List<String> arrayList = new ArrayList<>(); |
|
|
|
|
//服务号拼接
|
|
|
|
|
HashSet serviceNumber = new HashSet(); |
|
|
|
@ -217,7 +216,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
//维护订单下包件信息
|
|
|
|
|
distributionReservationPackageService.save(distributionReservationPackageEntity); |
|
|
|
|
//此时订单下的所有包件都处于预约状态,可用数为0
|
|
|
|
|
packageNum.getAndIncrement(); |
|
|
|
|
packageNum.getAndAdd(p.getQuantity()); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
s.setAvailableQuantity(0); |
|
|
|
@ -229,7 +228,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
distributionReservationPackageEntity.setParceListId(p.getId()); |
|
|
|
|
distributionReservationPackageEntity.setStockArticleId(s.getId()); |
|
|
|
|
distributionReservationPackageMapper.insert(distributionReservationPackageEntity); |
|
|
|
|
packageNum.getAndIncrement(); |
|
|
|
|
packageNum.getAndAdd(p.getQuantity()); |
|
|
|
|
}); |
|
|
|
|
//设置订单可用数量为
|
|
|
|
|
s.setAvailableQuantity(s.getHandQuantity() - s.getReservationNum()); |
|
|
|
@ -244,14 +243,14 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
arrayList.add(s.getOrderSelfNumbering()); |
|
|
|
|
//拼接服务号
|
|
|
|
|
serviceNumber.add(s.getServiceNumber()); |
|
|
|
|
//订单增值服务费
|
|
|
|
|
initTotal.accumulateAndGet(new BigDecimal(s.getFee().toString()), BigDecimal::add); |
|
|
|
|
//订单协商费用
|
|
|
|
|
initTotal.accumulateAndGet(new BigDecimal(s.getRate().toString()), BigDecimal::add); |
|
|
|
|
//订单到付费用
|
|
|
|
|
initTotal.accumulateAndGet(new BigDecimal(s.getCollectFee().toString()), BigDecimal::add); |
|
|
|
|
//仓储费用
|
|
|
|
|
initTotal.accumulateAndGet(new BigDecimal(s.getStorageFee().toString()), BigDecimal::add); |
|
|
|
|
// //订单增值服务费
|
|
|
|
|
// initTotal.accumulateAndGet(new BigDecimal(s.getFee().toString()), BigDecimal::add);
|
|
|
|
|
// //订单协商费用
|
|
|
|
|
// initTotal.accumulateAndGet(new BigDecimal(s.getRate().toString()), BigDecimal::add);
|
|
|
|
|
// //订单到付费用
|
|
|
|
|
// initTotal.accumulateAndGet(new BigDecimal(s.getCollectFee().toString()), BigDecimal::add);
|
|
|
|
|
// //仓储费用
|
|
|
|
|
// initTotal.accumulateAndGet(new BigDecimal(s.getStorageFee().toString()), BigDecimal::add);
|
|
|
|
|
Long stockArticleId = s.getId(); |
|
|
|
|
distributionReservationStockarticleEntity.setReservationId(reservationId); |
|
|
|
|
distributionReservationStockarticleEntity.setStockArticleId(stockArticleId); |
|
|
|
@ -261,6 +260,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
//存在库存品构建预约库存品关联信息
|
|
|
|
|
AtomicInteger stockListCount = new AtomicInteger(); |
|
|
|
|
if (!Func.isEmpty(inventoryList)) { |
|
|
|
|
inventoryList.forEach(i -> { |
|
|
|
|
//如果库存品存在占用数量,这里就直接进行累加
|
|
|
|
@ -273,6 +273,12 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
DistributionReservationStocklistEntity distributionReservationStocklistEntity = new DistributionReservationStocklistEntity(); |
|
|
|
|
distributionReservationStocklistEntity.setReservationId(reservationId); |
|
|
|
|
distributionReservationStocklistEntity.setStocklistId(stocklistId); |
|
|
|
|
distributionReservationStocklistEntity.setUnit(i.getUnit()); |
|
|
|
|
if (Func.isBlank(i.getPid().toString())){ |
|
|
|
|
distributionReservationStocklistEntity.setIsUnpackProduct(ServiceConstant.ORDER_NOT_HAVE_DATA); |
|
|
|
|
}else { |
|
|
|
|
distributionReservationStocklistEntity.setIsUnpackProduct(ServiceConstant.ORDER_HAVE_DATA); |
|
|
|
|
} |
|
|
|
|
distributionReservationStocklistEntity.setReservationNum(i.getReservationNum()); |
|
|
|
|
distributionReservationStocklistService.save(distributionReservationStocklistEntity); |
|
|
|
|
stockListCount.getAndAdd(distributionReservationStocklistEntity.getReservationNum()); |
|
|
|
@ -288,7 +294,6 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
//统计数量
|
|
|
|
|
BigDecimal fee = initTotal.get().add(reservationEntity.getOtherFee()); |
|
|
|
|
reservationEntity.setFee(fee); |
|
|
|
|
int count = stockArticleCount.get() + stockListCount.get(); |
|
|
|
|
String random = Func.random(13, RandomType.ALL); |
|
|
|
|
reservationEntity.setReservationCode(random); |
|
|
|
|
//设置预约为市配
|
|
|
|
@ -296,7 +301,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
//设置预约配送方式为送货
|
|
|
|
|
reservationEntity.setDeliveryWay(ServiceConstant.DELIVERY_GOODS_WAY); |
|
|
|
|
reservationEntity.setServiceNumber(String.join(",", serviceNumber)); |
|
|
|
|
reservationEntity.setReservationNum(count); |
|
|
|
|
reservationEntity.setReservationNum(stockArticleCount.get() ); |
|
|
|
|
reservationEntity.setReservationStockListNum(stockListCount.get() ); |
|
|
|
|
distributionReservationMapper.updateById(reservationEntity); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
@ -395,14 +401,17 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
String reservationIds = allocationDTO.getReservationIds(); |
|
|
|
|
//创建备货任务
|
|
|
|
|
DistributionStockupDTO stockup = allocationDTO.getStockup(); |
|
|
|
|
boolean flag = Func.isEmpty(stockup); |
|
|
|
|
DistributionStockupEntity distributionStockupEntity = Func.copy(stockup, DistributionStockupEntity.class); |
|
|
|
|
distributionStockupEntity.setAssignStatus(ServiceConstant.STOCkUP_ASSIGNSTATUS_ALREADY); |
|
|
|
|
distributionStockupEntity.setAssignTime(new Date()); |
|
|
|
|
distributionStockupEntity.setForkliftId(stockup.getForkliftId()); |
|
|
|
|
distributionStockupEntity.setStockupUser(AuthUtil.getUserId().toString()); |
|
|
|
|
distributionStockupEntity.setStockupStatus(ServiceConstant.STOCkUP_STATE_NOT_EXECUTION); |
|
|
|
|
distributionStockupEntity.setTypeService(ServiceConstant.DELIVERY_TYPE_CUSTOMER); |
|
|
|
|
distributionStockupService.save(distributionStockupEntity); |
|
|
|
|
if (flag){ |
|
|
|
|
distributionStockupEntity.setAssignStatus(ServiceConstant.STOCkUP_ASSIGNSTATUS_ALREADY); |
|
|
|
|
distributionStockupEntity.setAssignTime(new Date()); |
|
|
|
|
distributionStockupEntity.setForkliftId(stockup.getForkliftId()); |
|
|
|
|
distributionStockupEntity.setStockupUser(AuthUtil.getUserId().toString()); |
|
|
|
|
distributionStockupEntity.setStockupStatus(ServiceConstant.STOCkUP_STATE_NOT_EXECUTION); |
|
|
|
|
distributionStockupEntity.setTypeService(ServiceConstant.DELIVERY_TYPE_CUSTOMER); |
|
|
|
|
distributionStockupService.save(distributionStockupEntity); |
|
|
|
|
} |
|
|
|
|
DistributionDeliveryListEntity distributionDeliveryListEntity = new DistributionDeliveryListEntity(); |
|
|
|
|
//设置车次号
|
|
|
|
|
String today = DateUtil.today(); |
|
|
|
@ -434,26 +443,28 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
map.put("reservationId", i); |
|
|
|
|
QueryWrapper<DistributionStockupInfoEntity> qw = Condition.getQueryWrapper(map, DistributionStockupInfoEntity.class); |
|
|
|
|
DistributionStockupInfoEntity distributionStockupInfoEntity = distributionStockupInfoService.getOne(qw); |
|
|
|
|
if (Func.isEmpty(distributionStockupInfoEntity)) { |
|
|
|
|
//1、预约单不存在备货任务
|
|
|
|
|
//利用中间表建立起预约和备货表之间的关系
|
|
|
|
|
DistributionStockupInfoEntity stockupInfoEntity = new DistributionStockupInfoEntity(); |
|
|
|
|
stockupInfoEntity.setReservationId(i); |
|
|
|
|
stockupInfoEntity.setStockupId(stockupEntityId); |
|
|
|
|
distributionStockupInfoService.save(stockupInfoEntity); |
|
|
|
|
} else { |
|
|
|
|
//TODO 这里还需要考虑一个备货任务下只有一条记录
|
|
|
|
|
//获取备货任务编号
|
|
|
|
|
Long stockupId = distributionStockupInfoEntity.getStockupId(); |
|
|
|
|
DistributionStockupEntity stockupEntity = distributionStockupService.getById(stockupId); |
|
|
|
|
//2、预约单存在备货任务还未指派
|
|
|
|
|
if (Func.equals(stockupEntity.getAssignStatus(), ServiceConstant.STOCkUP_ASSIGNSTATUS_ABSENCE)) { |
|
|
|
|
//对原有的备货关系进行修改
|
|
|
|
|
distributionStockupInfoEntity.setStockupId(stockupEntityId); |
|
|
|
|
distributionStockupInfoService.updateById(distributionStockupInfoEntity); |
|
|
|
|
if (flag){ |
|
|
|
|
if (Func.isEmpty(distributionStockupInfoEntity)) { |
|
|
|
|
//1、预约单不存在备货任务
|
|
|
|
|
//利用中间表建立起预约和备货表之间的关系
|
|
|
|
|
DistributionStockupInfoEntity stockupInfoEntity = new DistributionStockupInfoEntity(); |
|
|
|
|
stockupInfoEntity.setReservationId(i); |
|
|
|
|
stockupInfoEntity.setStockupId(stockupEntityId); |
|
|
|
|
distributionStockupInfoService.save(stockupInfoEntity); |
|
|
|
|
} else { |
|
|
|
|
//TODO 这里还需要考虑一个备货任务下只有一条记录
|
|
|
|
|
//获取备货任务编号
|
|
|
|
|
Long stockupId = distributionStockupInfoEntity.getStockupId(); |
|
|
|
|
DistributionStockupEntity stockupEntity = distributionStockupService.getById(stockupId); |
|
|
|
|
//2、预约单存在备货任务还未指派
|
|
|
|
|
if (Func.equals(stockupEntity.getAssignStatus(), ServiceConstant.STOCkUP_ASSIGNSTATUS_ABSENCE)) { |
|
|
|
|
//对原有的备货关系进行修改
|
|
|
|
|
distributionStockupInfoEntity.setStockupId(stockupEntityId); |
|
|
|
|
distributionStockupInfoService.updateById(distributionStockupInfoEntity); |
|
|
|
|
} |
|
|
|
|
//3、预约单存在备货任务且已指派备货
|
|
|
|
|
//不执行操作
|
|
|
|
|
} |
|
|
|
|
//3、预约单存在备货任务且已指派备货
|
|
|
|
|
//不执行操作
|
|
|
|
|
} |
|
|
|
|
DistributionReservationEntity reservationEntity = this.getById(i); |
|
|
|
|
DistributionSignforEntity distributionSignforEntity = new DistributionSignforEntity(); |
|
|
|
@ -468,9 +479,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
orderNum.getAndAdd(reservationEntity.getStockArticleId().split(",").length); |
|
|
|
|
//统计包件数量
|
|
|
|
|
packageNum.getAndAdd(reservationEntity.getReservationNum()); |
|
|
|
|
|
|
|
|
|
//TODO 设置是否齐套
|
|
|
|
|
|
|
|
|
|
this.updateById(reservationEntity); |
|
|
|
|
//订单自编号拼接
|
|
|
|
|
QueryWrapper<DistributionReservationStockarticleEntity> q = Condition.getQueryWrapper(new HashMap<String, Object>(), DistributionReservationStockarticleEntity.class); |
|
|
|
@ -491,38 +500,6 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
orderIds.append(stockArticleEntity.getId()).append(","); |
|
|
|
|
//拼接订单自编号
|
|
|
|
|
hashSet.add(stockArticleEntity.getOrderSelfNumbering()); |
|
|
|
|
//判断订单是否存在有数据来源
|
|
|
|
|
// if (Func.equals(stockArticleEntity.getIsHaveData(),ServiceConstant.ORDER_HAVE_DATA)){
|
|
|
|
|
// //没有数据来源,维护订单和配送的关系
|
|
|
|
|
// // TODO 订单存在数据源,维护包件和配送之间的关系
|
|
|
|
|
// //根据中间表查询出预约单所选订单下的包件信息
|
|
|
|
|
//// DistributionLoadscanEntity distributionLoadscanEntity = Func.copy(stockArticleEntity, DistributionLoadscanEntity.class);
|
|
|
|
|
// //每一个订单的维度进行插入
|
|
|
|
|
// reservationPackageEntityList.forEach(p->{
|
|
|
|
|
// //这里就应该将包件信息进行维护
|
|
|
|
|
// DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(p.getParceListId());
|
|
|
|
|
// DistributionLoadscanEntity distributionLoadscanEntity = new DistributionLoadscanEntity();
|
|
|
|
|
// //满足订单的包件信息
|
|
|
|
|
// distributionLoadscanEntity.setDeliveryId(distributionDeliveryListEntity.getId());
|
|
|
|
|
// distributionLoadscanEntity.setReservationId(reservationEntity.getId());
|
|
|
|
|
// distributionLoadscanEntity.setTrainNumber(distributionDeliveryListEntity.getTrainNumber());
|
|
|
|
|
// distributionLoadscanEntity.setOrderId(stockArticleEntity.getId());
|
|
|
|
|
// if (Func.equals(p.getStockArticle(),stockArticleEntity.getId())){
|
|
|
|
|
// distributionLoadscanEntity.setPackageId(p.getParceListId());
|
|
|
|
|
// distributionLoadscanEntity.setPacketBarCode(parcelListEntity.getPacketBarCode());
|
|
|
|
|
// }
|
|
|
|
|
// distributionLoadscanService.save(distributionLoadscanEntity);
|
|
|
|
|
// });
|
|
|
|
|
// }else {
|
|
|
|
|
// //订单无数据来源
|
|
|
|
|
// DistributionLoadscanEntity distributionLoadscanEntity = new DistributionLoadscanEntity();
|
|
|
|
|
// distributionLoadscanEntity.setDeliveryId(distributionDeliveryListEntity.getId());
|
|
|
|
|
// distributionLoadscanEntity.setReservationId(reservationEntity.getId());
|
|
|
|
|
// distributionLoadscanEntity.setTrainNumber(distributionDeliveryListEntity.getTrainNumber());
|
|
|
|
|
// distributionLoadscanEntity.setOrderId(stockArticleEntity.getId());
|
|
|
|
|
// //按照订单的维度进行配送订单信息维护
|
|
|
|
|
// distributionLoadscanService.save(distributionLoadscanEntity);
|
|
|
|
|
// }
|
|
|
|
|
//存在数据来源,维护订单、包件和配送的关系
|
|
|
|
|
if (stockArticleEntity.getHandQuantity() > r.getReservationNum()) { |
|
|
|
|
//这里表示订单下的包件没有进行全部配送
|
|
|
|
@ -604,10 +581,14 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
} |
|
|
|
|
//对配送信息进行修改
|
|
|
|
|
distributionDeliveryListEntity.setState(ServiceConstant.DELIVERY_TYPE_CUSTOMER); |
|
|
|
|
distributionDeliveryListEntity.setLoadingTeamName(stockup.getLoaderName()); |
|
|
|
|
distributionDeliveryListEntity.setForkliftName(stockup.getForkliftName()); |
|
|
|
|
distributionDeliveryListEntity.setForkliftId(stockup.getForkliftId().toString()); |
|
|
|
|
distributionDeliveryListEntity.setLoadingTeamId(stockup.getLoaderId()); |
|
|
|
|
if (flag){ |
|
|
|
|
distributionDeliveryListEntity.setLoadingTeamName(stockup.getLoaderName()); |
|
|
|
|
distributionDeliveryListEntity.setForkliftName(stockup.getForkliftName()); |
|
|
|
|
distributionDeliveryListEntity.setForkliftId(stockup.getForkliftId().toString()); |
|
|
|
|
distributionDeliveryListEntity.setLoadingTeamId(stockup.getLoaderId()); |
|
|
|
|
distributionDeliveryListEntity.setLeadTime(allocationDTO.getStockup().getStockupDate()); |
|
|
|
|
distributionDeliveryListEntity.setLoadingTeamType(stockup.getLoadAndUnload()); |
|
|
|
|
} |
|
|
|
|
distributionDeliveryListEntity.setCustomersNumber(reservationIds.split(",").length); |
|
|
|
|
distributionDeliveryListEntity.setOrderNumber(orderNum.get()); |
|
|
|
|
distributionDeliveryListEntity.setType(ServiceConstant.DELIVERY_TYPE_CUSTOMER); |
|
|
|
@ -618,8 +599,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
distributionDeliveryListEntity.setReservationId(reservationIds); |
|
|
|
|
distributionDeliveryListEntity.setDeliveryNumber(packageNum.get()); |
|
|
|
|
distributionDeliveryListEntity.setType(ServiceConstant.DELIVERY_TYPE_CUSTOMER); |
|
|
|
|
distributionDeliveryListEntity.setLeadTime(allocationDTO.getStockup().getStockupDate()); |
|
|
|
|
distributionDeliveryListEntity.setLoadingTeamType(stockup.getLoadAndUnload()); |
|
|
|
|
|
|
|
|
|
distributionDeliveryListService.updateById(distributionDeliveryListEntity); |
|
|
|
|
return R.status(true); |
|
|
|
|
} |
|
|
|
@ -699,8 +679,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
reservationStocklistEntityList.forEach(r1 -> { |
|
|
|
|
Long stocklistId = r1.getStocklistId(); |
|
|
|
|
DistributionStockListEntity stockListEntity = distributionStockListService.getById(stocklistId); |
|
|
|
|
stockListEntity.setQuantityOccupied(stockListEntity.getQuantityOccupied() - r1.getReservationNum()); |
|
|
|
|
stockListEntity.setQuantityOccupied(stockListEntity.getQuantityOccupied() + r1.getReservationNum()); |
|
|
|
|
int num = stockListEntity.getQuantityOccupied() - r1.getReservationNum(); |
|
|
|
|
stockListEntity.setQuantityOccupied(num); |
|
|
|
|
// stockListEntity.setQuantityOccupied(stockListEntity.getQuantityOccupied() + r1.getReservationNum());
|
|
|
|
|
//这里对原表进行物理删除
|
|
|
|
|
distributionStockListService.updateById(stockListEntity); |
|
|
|
|
distributionReservationStocklistMapper.deleteReservationStocklist(distributionReservationDTO.getId()); |
|
|
|
@ -776,8 +757,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
List<DistributionStockListEntity> inventoryList = distributionReservationDTO.getInventoryList(); |
|
|
|
|
AtomicInteger stockListNum = new AtomicInteger(); |
|
|
|
|
if (!Func.isEmpty(inventoryList)) { |
|
|
|
|
//重新构建备货信息
|
|
|
|
|
//重新构建预约和库存之间的关系
|
|
|
|
|
inventoryList.forEach(i -> { |
|
|
|
|
DistributionStockListEntity stockListEntity = distributionStockListService.getById(i.getId()); |
|
|
|
|
int count = stockListEntity.getQuantityOccupied() + i.getReservationNum(); |
|
|
|
@ -788,14 +770,15 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
|
|
|
|
|
distributionReservationStocklistEntity.setReservationNum(i.getReservationNum()); |
|
|
|
|
distributionReservationStocklistEntity.setStocklistId(i.getId()); |
|
|
|
|
distributionReservationStocklistService.save(distributionReservationStocklistEntity); |
|
|
|
|
packageCount.getAndAdd(i.getReservationNum()); |
|
|
|
|
hashSet.add(i.getOrderSelfNumbering()); |
|
|
|
|
stockListNum.getAndAdd(distributionReservationStocklistEntity.getReservationNum()); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
String orderId = String.join(",", hashSet); |
|
|
|
|
distributionReservationEntity.setFee(initTotal.get()); |
|
|
|
|
distributionReservationEntity.setReservationNum(packageCount.get()); |
|
|
|
|
distributionReservationEntity.setStockArticleId(orderId); |
|
|
|
|
distributionReservationEntity.setReservationStockListNum(stockListNum.get()); |
|
|
|
|
distributionReservationMapper.updateById(distributionReservationEntity); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|