Procházet zdrojové kódy

fix: 处理分销商库存问题

luofeiyun před 2 týdny
rodič
revize
816f171bbc

+ 1 - 3
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdetail/VoyageStockDetailServiceImpl.java

@@ -112,14 +112,12 @@ public class VoyageStockDetailServiceImpl implements VoyageStockDetailService {
         voyageStockMapper.updateById(stockDO);
         voyageStockMapper.updateById(stockDO);
         if(stockDistributeNewList != null && !stockDistributeNewList.isEmpty()) {
         if(stockDistributeNewList != null && !stockDistributeNewList.isEmpty()) {
             Map<String, BigDecimal> numMap = stockDistributeNewList.stream().collect(Collectors.groupingBy(item -> item.getRoomModelId() + "_" + item.getFloor(), Collectors.mapping(VoyageStockDistributeNewDO::getNum, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
             Map<String, BigDecimal> numMap = stockDistributeNewList.stream().collect(Collectors.groupingBy(item -> item.getRoomModelId() + "_" + item.getFloor(), Collectors.mapping(VoyageStockDistributeNewDO::getNum, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
-            Map<String, BigDecimal> totalNumMap = stockDistributeNewList.stream().collect(Collectors.groupingBy(item -> item.getRoomModelId() + "_" + item.getFloor(), Collectors.mapping(VoyageStockDistributeNewDO::getTotalNum, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
             List<VoyageStockDetailDO> list = voyageStockDetailMapper.selectListByVoyageId(voyageId);
             List<VoyageStockDetailDO> list = voyageStockDetailMapper.selectListByVoyageId(voyageId);
             list.stream().forEach(item -> {
             list.stream().forEach(item -> {
                 BigDecimal num = numMap.get(item.getRoomModelId() + "_" + item.getFloor());
                 BigDecimal num = numMap.get(item.getRoomModelId() + "_" + item.getFloor());
-                BigDecimal totalNum = totalNumMap.get(item.getRoomModelId() + "_" + item.getFloor());
                 if(num != null) {
                 if(num != null) {
                     //共享库存应该加上上次分出去的再减去这次分出去的
                     //共享库存应该加上上次分出去的再减去这次分出去的
-                    item.setShareNum(item.getShareNum().add(totalNum).subtract(num));
+                    item.setShareNum(item.getCanSellNum().subtract(num));
                 }
                 }
             });
             });
             voyageStockDetailMapper.updateBatch(list);
             voyageStockDetailMapper.updateBatch(list);

+ 2 - 10
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeNewServiceImpl.java

@@ -75,7 +75,6 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
     private VoyageStockRoomUsedMapper voyageStockRoomUsedMapper;
     private VoyageStockRoomUsedMapper voyageStockRoomUsedMapper;
 
 
 
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
     public void createVoyageStockDistributeNew(Long voyageId, Integer type, List<VoyageStockDistributeNewSaveReqVO> createReqVO) {
     public void createVoyageStockDistributeNew(Long voyageId, Integer type, List<VoyageStockDistributeNewSaveReqVO> createReqVO) {
         BigDecimal zero = BigDecimal.ZERO;
         BigDecimal zero = BigDecimal.ZERO;
@@ -96,17 +95,14 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
             voyageStockDistributeRoomService.createVoyageStockDistributeRoomBatch(roomList);
             voyageStockDistributeRoomService.createVoyageStockDistributeRoomBatch(roomList);
             //修改或插入库存表
             //修改或插入库存表
             List<VoyageStockDistributeNewDO> list = voyageStockDistributeNewMapper.selectListByVoyageId(voyageId, type);
             List<VoyageStockDistributeNewDO> list = voyageStockDistributeNewMapper.selectListByVoyageId(voyageId, type);
-            List<VoyageStockDistributeNewDO> totalList = new ArrayList<>();
             if(CollectionUtils.isAnyEmpty(list)) { // 为空则新增
             if(CollectionUtils.isAnyEmpty(list)) { // 为空则新增
                 list = BeanUtils.toBean(createReqVO, VoyageStockDistributeNewDO.class);
                 list = BeanUtils.toBean(createReqVO, VoyageStockDistributeNewDO.class);
                 list.stream().forEach(item -> {
                 list.stream().forEach(item -> {
                     item.setBookNum(zero);
                     item.setBookNum(zero);
-                    item.setTotalNum(zero);
                 });
                 });
                 if(!CollectionUtils.isAnyEmpty(list)) {
                 if(!CollectionUtils.isAnyEmpty(list)) {
                     voyageStockDistributeNewMapper.insertBatch(list);
                     voyageStockDistributeNewMapper.insertBatch(list);
                 }
                 }
-                totalList.addAll(list);
             }else {
             }else {
                 Map<String, BigDecimal> map = CollectionUtils.convertMap(createReqVO, item -> item.getObjectId() + "_" + item.getRoomModelId() + "_" + item.getFloor(), item -> item.getNum());
                 Map<String, BigDecimal> map = CollectionUtils.convertMap(createReqVO, item -> item.getObjectId() + "_" + item.getRoomModelId() + "_" + item.getFloor(), item -> item.getNum());
                 Map<String, VoyageStockDistributeNewSaveReqVO> mapVO = CollectionUtils.convertMap(createReqVO, item -> item.getObjectId() + "_" + item.getRoomModelId() + "_" + item.getFloor());
                 Map<String, VoyageStockDistributeNewSaveReqVO> mapVO = CollectionUtils.convertMap(createReqVO, item -> item.getObjectId() + "_" + item.getRoomModelId() + "_" + item.getFloor());
@@ -117,28 +113,24 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
                 map.keySet().stream().forEach(key -> {
                 map.keySet().stream().forEach(key -> {
                     if(existList.contains(key)) { //存在,做修改
                     if(existList.contains(key)) { //存在,做修改
                         VoyageStockDistributeNewDO voyageStockDistributeNewDO = existMap.get(key);
                         VoyageStockDistributeNewDO voyageStockDistributeNewDO = existMap.get(key);
-                        VoyageStockDistributeNewDO voyageStockDistributeNewDOBak = BeanUtils.toBean(existMap.get(key), VoyageStockDistributeNewDO.class);
-                        voyageStockDistributeNewDO.setTotalNum(voyageStockDistributeNewDOBak.getNum());
                         voyageStockDistributeNewDO.setNum(map.get(key));
                         voyageStockDistributeNewDO.setNum(map.get(key));
                         voyageStockDistributeNewDO.setRoomModelNum(mapVO.get(key).getRoomModelNum());
                         voyageStockDistributeNewDO.setRoomModelNum(mapVO.get(key).getRoomModelNum());
                         updateList.add(voyageStockDistributeNewDO);
                         updateList.add(voyageStockDistributeNewDO);
                     }else { //不存在,做插入
                     }else { //不存在,做插入
                         VoyageStockDistributeNewDO voyageStockDistributeNewDO = BeanUtils.toBean(mapVO.get(key), VoyageStockDistributeNewDO.class);
                         VoyageStockDistributeNewDO voyageStockDistributeNewDO = BeanUtils.toBean(mapVO.get(key), VoyageStockDistributeNewDO.class);
-                        voyageStockDistributeNewDO.setTotalNum(zero);
                         insertList.add(voyageStockDistributeNewDO);
                         insertList.add(voyageStockDistributeNewDO);
                     }
                     }
                 });
                 });
                 if(!CollectionUtils.isAnyEmpty(updateList)) {
                 if(!CollectionUtils.isAnyEmpty(updateList)) {
-                    totalList.addAll(updateList);
                     voyageStockDistributeNewMapper.updateBatch(updateList);
                     voyageStockDistributeNewMapper.updateBatch(updateList);
                 }
                 }
                 if(!CollectionUtils.isAnyEmpty(insertList)) {
                 if(!CollectionUtils.isAnyEmpty(insertList)) {
-                    totalList.addAll(insertList);
                     voyageStockDistributeNewMapper.insertBatch(insertList);
                     voyageStockDistributeNewMapper.insertBatch(insertList);
                 }
                 }
             }
             }
             BigDecimal distributeNum = getDistributeNum(voyageId);
             BigDecimal distributeNum = getDistributeNum(voyageId);
-            voyageStockDetailService.handleShareNum(voyageId, distributeNum, totalList);
+            List<VoyageStockDistributeNewDO> newList = voyageStockDistributeNewMapper.selectListByVoyageId(voyageId, type);
+            voyageStockDetailService.handleShareNum(voyageId,  distributeNum, newList);
         }finally {
         }finally {
             if(lock.isHeldByCurrentThread() && lock.isLocked()){
             if(lock.isHeldByCurrentThread() && lock.isLocked()){
                 lock.unlock();
                 lock.unlock();