|
|
@@ -1,12 +1,15 @@
|
|
|
package com.yc.ship.module.product.service.voyagestockdetail;
|
|
|
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
+import com.yc.ship.framework.common.util.collection.CollectionUtils;
|
|
|
import com.yc.ship.module.product.controller.admin.voyagestockdetail.vo.VoyageStockDetailBatchSaveReqVO;
|
|
|
import com.yc.ship.module.product.controller.admin.voyagestockdetail.vo.VoyageStockDetailRespNewVO;
|
|
|
import com.yc.ship.module.product.controller.admin.voyagestockdetail.vo.VoyageStockDetailSaveReqVO;
|
|
|
import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
|
|
|
import com.yc.ship.module.product.dal.dataobject.voyagestock.VoyageStockDO;
|
|
|
import com.yc.ship.module.product.dal.dataobject.voyagestockdetail.VoyageStockDetailDO;
|
|
|
+import com.yc.ship.module.product.dal.dataobject.voyagestockdetail.VoyageStockDetailLogDO;
|
|
|
+import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeNewDO;
|
|
|
import com.yc.ship.module.product.dal.mysql.voyagestock.VoyageStockMapper;
|
|
|
import com.yc.ship.module.product.dal.mysql.voyagestockdistribute.VoyageStockDistributeNewMapper;
|
|
|
import com.yc.ship.module.product.enums.ProductStockStaticsName;
|
|
|
@@ -32,6 +35,7 @@ import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
@@ -78,7 +82,7 @@ public class VoyageStockDetailServiceImpl implements VoyageStockDetailService {
|
|
|
VoyageStockDO stockDO = BeanUtils.toBean(item, VoyageStockDO.class);
|
|
|
voyageStockMapper.updateById(stockDO);
|
|
|
BigDecimal distributeNum = voyageStockDistributeNewMapper.selectTotalDistributeNum(voyageId);
|
|
|
- handleShareNum(voyageId, distributeNum);
|
|
|
+ handleShareNum(voyageId, distributeNum, null);
|
|
|
}else {
|
|
|
insertList.add(item);
|
|
|
}
|
|
|
@@ -95,15 +99,29 @@ public class VoyageStockDetailServiceImpl implements VoyageStockDetailService {
|
|
|
* 处理共享库存
|
|
|
* @param voyageId
|
|
|
* @param distributeNum 已分配给分销商
|
|
|
+ * stockDistributeNewDOS 分销商库存详情
|
|
|
*/
|
|
|
@Override
|
|
|
- public void handleShareNum(Long voyageId, BigDecimal distributeNum) {
|
|
|
+ public void handleShareNum(Long voyageId, BigDecimal distributeNum, List<VoyageStockDistributeNewDO> stockDistributeNewDOS) {
|
|
|
VoyageStockDO stockDO = voyageStockMapper.selectById(voyageId);
|
|
|
if(distributeNum == null) {
|
|
|
distributeNum = BigDecimal.ZERO;
|
|
|
}
|
|
|
stockDO.setShareNum(stockDO.getCanSellNum().subtract(distributeNum));
|
|
|
voyageStockMapper.updateById(stockDO);
|
|
|
+ if(stockDistributeNewDOS != null && !stockDistributeNewDOS.isEmpty()) {
|
|
|
+ Map<String, BigDecimal> numMap = CollectionUtils.convertMap(stockDistributeNewDOS, item -> item.getRoomModelId() + "_" + item.getFloor(), item -> item.getNum());
|
|
|
+ Map<String, BigDecimal> totalNumMap = CollectionUtils.convertMap(stockDistributeNewDOS, item -> item.getRoomModelId() + "_" + item.getFloor(), item -> item.getTotalNum());
|
|
|
+ List<VoyageStockDetailDO> list = voyageStockDetailMapper.selectListByVoyageId(voyageId);
|
|
|
+ list.stream().forEach(item -> {
|
|
|
+ BigDecimal num = numMap.get(item.getRoomModelId() + "_" + item.getFloor());
|
|
|
+ BigDecimal totalNum = totalNumMap.get(item.getRoomModelId() + "_" + item.getFloor());
|
|
|
+ if(num != null) {
|
|
|
+ item.setShareNum(item.getShareNum().subtract(totalNum).add(num));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ voyageStockDetailMapper.updateBatch(list);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|