|
@@ -167,7 +167,7 @@ public class VoyageApiImpl implements VoyageApi {
|
|
|
//初定扣分销商库存
|
|
//初定扣分销商库存
|
|
|
//先返还初定扣的库存
|
|
//先返还初定扣的库存
|
|
|
preCancelReduceStockDistributor(reqDTO.getOrderId(), reqDTO.getType());
|
|
preCancelReduceStockDistributor(reqDTO.getOrderId(), reqDTO.getType());
|
|
|
- if(reqDTO.getOldOrderId() != null && reqDTO.getOldOrderId() != reqDTO.getOrderId()) {
|
|
|
|
|
|
|
+ if(reqDTO.getOldOrderId() != null && !reqDTO.getOldOrderId().equals(reqDTO.getOrderId())) {
|
|
|
preCancelReduceStockDistributor(reqDTO.getOldOrderId(), reqDTO.getType());
|
|
preCancelReduceStockDistributor(reqDTO.getOldOrderId(), reqDTO.getType());
|
|
|
}
|
|
}
|
|
|
//再去扣确定的库存
|
|
//再去扣确定的库存
|
|
@@ -629,64 +629,65 @@ public class VoyageApiImpl implements VoyageApi {
|
|
|
Long distributorId = voyageStockLogDO.getDistributorId();
|
|
Long distributorId = voyageStockLogDO.getDistributorId();
|
|
|
//找到初定时扣库存详情的记录
|
|
//找到初定时扣库存详情的记录
|
|
|
List<VoyageStockDetailLogDO> detailLogList = voyageStockDetailLogMapper.selectListByOrder(orderId);
|
|
List<VoyageStockDetailLogDO> detailLogList = voyageStockDetailLogMapper.selectListByOrder(orderId);
|
|
|
|
|
+ if(detailLogList.isEmpty()){
|
|
|
|
|
+ log.error("订单取消时,未找到对应的航次库存详情操作记录,订单ID:{}", orderId);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
Integer stockType = detailLogList.get(0).getStockType();
|
|
Integer stockType = detailLogList.get(0).getStockType();
|
|
|
- if (detailLogList != null && !detailLogList.isEmpty()) {
|
|
|
|
|
- log.info("进入初定还库存详情操作,使用库存的记录-detailLogList:"+ JSONArray.toJSONString(detailLogList));
|
|
|
|
|
- //退还航次库存详情
|
|
|
|
|
- List<VoyageStockDetailDO> stockDetailList = voyageStockDetailMapper.selectListByVoyageId(voyageId);
|
|
|
|
|
- Map<String, BigDecimal> realNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), VoyageStockDetailLogDO::getRealNum);
|
|
|
|
|
- Map<String, BigDecimal> virtualNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), VoyageStockDetailLogDO::getVirtualNum);
|
|
|
|
|
|
|
+ log.info("进入初定还库存详情操作,使用库存的记录-detailLogList:" + JSONArray.toJSONString(detailLogList));
|
|
|
|
|
+ //退还航次库存详情
|
|
|
|
|
+ List<VoyageStockDetailDO> stockDetailList = voyageStockDetailMapper.selectListByVoyageId(voyageId);
|
|
|
|
|
+ Map<String, BigDecimal> realNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), VoyageStockDetailLogDO::getRealNum);
|
|
|
|
|
+ Map<String, BigDecimal> virtualNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), VoyageStockDetailLogDO::getVirtualNum);
|
|
|
// Map<String, BigDecimal> shareNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), VoyageStockDetailLogDO::getShareNum);
|
|
// Map<String, BigDecimal> shareNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), VoyageStockDetailLogDO::getShareNum);
|
|
|
- Map<String, BigDecimal> totalNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), item -> item.getRealNum().add(item.getVirtualNum()));
|
|
|
|
|
-
|
|
|
|
|
- stockDetailList.forEach(item -> {
|
|
|
|
|
- String key = item.getRoomModelId() + "_" + item.getFloor();
|
|
|
|
|
- item.setBookNum(item.getBookNum().subtract(totalNumMap.get(key)));
|
|
|
|
|
- item.setCanSellNum(item.getCanSellNum().add(totalNumMap.get(key)));
|
|
|
|
|
- item.setRealTotalNum(item.getRealTotalNum().add(realNumMap.get(key)));
|
|
|
|
|
- item.setVirtualNum(item.getVirtualNum().add(virtualNumMap.get(key)));
|
|
|
|
|
- if(stockType == 1) {//共享库存要还回库存详情
|
|
|
|
|
- item.setShareNum(item.getShareNum().add(totalNumMap.get(key)));
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- voyageStockDetailMapper.updateBatch(stockDetailList);
|
|
|
|
|
- productRedisUtils.set(ProductRedisKeyConstants.STOCK_DETAIL_REDIS_KEY_PREFIX + voyageId, stockDetailList);
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- //2:还分销商库存
|
|
|
|
|
- if (stockType == 2) {
|
|
|
|
|
- //判断分销商库存是否存在
|
|
|
|
|
- VoyageStockDistributeNewDetailReqVO detailReqVO = new VoyageStockDistributeNewDetailReqVO();
|
|
|
|
|
- detailReqVO.setVoyageId(voyageId);
|
|
|
|
|
- detailReqVO.setType(type);
|
|
|
|
|
- detailReqVO.setObjectId(distributorId);
|
|
|
|
|
- List<VoyageStockDistributeNewRespVO> distributeNewRespList = voyageStockDistributeNewService.getDetail(detailReqVO);
|
|
|
|
|
- List<VoyageStockDistributeNewDO> list = BeanUtils.toBean(distributeNewRespList, VoyageStockDistributeNewDO.class);
|
|
|
|
|
- log.info("进入初定还分销商库存详情操作,分销商库存还之前详情-distributeNewRespList:"+ JSONArray.toJSONString(distributeNewRespList));
|
|
|
|
|
- if (list != null && !list.isEmpty()) {
|
|
|
|
|
- list.forEach(item -> {
|
|
|
|
|
- String key = item.getRoomModelId() + "_" + item.getFloor();
|
|
|
|
|
- if(item.getBookNum()==null){
|
|
|
|
|
- item.setBookNum(BigDecimal.ZERO);
|
|
|
|
|
- }
|
|
|
|
|
- if(item.getNum()==null){
|
|
|
|
|
- item.setNum(BigDecimal.ZERO);
|
|
|
|
|
- }
|
|
|
|
|
- item.setNum(item.getNum().add(totalNumMap.get(key)));
|
|
|
|
|
- item.setBookNum(item.getBookNum().subtract(totalNumMap.get(key)));
|
|
|
|
|
- if(item.getBookNum().compareTo(BigDecimal.ZERO)<0){
|
|
|
|
|
- item.setBookNum(BigDecimal.ZERO);
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- log.info("进入初定还分销商库存详情操作,分销商库存还之后详情-distributeNewRespList:"+ JSONArray.toJSONString(distributeNewRespList));
|
|
|
|
|
- voyageStockDistributeNewMapper.updateBatch(list);
|
|
|
|
|
- productRedisUtils.set(ProductRedisKeyConstants.STOCK_DISTRIBUTOR_REDIS_KEY_PREFIX + voyageId + "_" +distributorId, list);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ Map<String, BigDecimal> totalNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), item -> item.getRealNum().add(item.getVirtualNum()));
|
|
|
|
|
+
|
|
|
|
|
+ stockDetailList.forEach(item -> {
|
|
|
|
|
+ String key = item.getRoomModelId() + "_" + item.getFloor();
|
|
|
|
|
+ item.setBookNum(item.getBookNum().subtract(totalNumMap.get(key)));
|
|
|
|
|
+ item.setCanSellNum(item.getCanSellNum().add(totalNumMap.get(key)));
|
|
|
|
|
+ item.setRealTotalNum(item.getRealTotalNum().add(realNumMap.get(key)));
|
|
|
|
|
+ item.setVirtualNum(item.getVirtualNum().add(virtualNumMap.get(key)));
|
|
|
|
|
+ if(stockType == 1) {//共享库存要还回库存详情
|
|
|
|
|
+ item.setShareNum(item.getShareNum().add(totalNumMap.get(key)));
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ voyageStockDetailMapper.updateBatch(stockDetailList);
|
|
|
|
|
+ productRedisUtils.set(ProductRedisKeyConstants.STOCK_DETAIL_REDIS_KEY_PREFIX + voyageId, stockDetailList);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //2:还分销商库存
|
|
|
|
|
+ if (stockType == 2) {
|
|
|
|
|
+ //判断分销商库存是否存在
|
|
|
|
|
+ VoyageStockDistributeNewDetailReqVO detailReqVO = new VoyageStockDistributeNewDetailReqVO();
|
|
|
|
|
+ detailReqVO.setVoyageId(voyageId);
|
|
|
|
|
+ detailReqVO.setType(type);
|
|
|
|
|
+ detailReqVO.setObjectId(distributorId);
|
|
|
|
|
+ List<VoyageStockDistributeNewRespVO> distributeNewRespList = voyageStockDistributeNewService.getDetail(detailReqVO);
|
|
|
|
|
+ List<VoyageStockDistributeNewDO> list = BeanUtils.toBean(distributeNewRespList, VoyageStockDistributeNewDO.class);
|
|
|
|
|
+ log.info("进入初定还分销商库存详情操作,分销商库存还之前详情-distributeNewRespList:{}", JSONArray.toJSONString(distributeNewRespList));
|
|
|
|
|
+ if (list != null && !list.isEmpty()) {
|
|
|
|
|
+ list.forEach(item -> {
|
|
|
|
|
+ String key = item.getRoomModelId() + "_" + item.getFloor();
|
|
|
|
|
+ if(item.getBookNum()==null){
|
|
|
|
|
+ item.setBookNum(BigDecimal.ZERO);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(item.getNum()==null){
|
|
|
|
|
+ item.setNum(BigDecimal.ZERO);
|
|
|
|
|
+ }
|
|
|
|
|
+ item.setNum(item.getNum().add(totalNumMap.get(key)));
|
|
|
|
|
+ item.setBookNum(item.getBookNum().subtract(totalNumMap.get(key)));
|
|
|
|
|
+ if(item.getBookNum().compareTo(BigDecimal.ZERO)<0){
|
|
|
|
|
+ item.setBookNum(BigDecimal.ZERO);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ log.info("进入初定还分销商库存详情操作,分销商库存还之后详情-distributeNewRespList:{}", JSONArray.toJSONString(distributeNewRespList));
|
|
|
|
|
+ voyageStockDistributeNewMapper.updateBatch(list);
|
|
|
|
|
+ productRedisUtils.set(ProductRedisKeyConstants.STOCK_DISTRIBUTOR_REDIS_KEY_PREFIX + voyageId + "_" +distributorId, list);
|
|
|
}
|
|
}
|
|
|
- // 删除库存详情初定记录
|
|
|
|
|
- voyageStockDetailLogMapper.deleteByOrder(orderId);
|
|
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+ // 删除库存详情初定记录
|
|
|
|
|
+ voyageStockDetailLogMapper.deleteByOrder(orderId);
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|