|
@@ -1,15 +1,12 @@
|
|
|
package com.fjhx.wms.service.stock.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
-import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fjhx.common.utils.Assert;
|
|
|
import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
|
-import com.fjhx.wms.entity.arrival.po.ArrivalDetailPo;
|
|
|
-import com.fjhx.wms.entity.purchase.po.PurchaseDetailPo;
|
|
|
import com.fjhx.wms.entity.stock.dto.StockJournalDetailsDto;
|
|
|
import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
|
|
|
import com.fjhx.wms.entity.stock.dto.StockWaitDto;
|
|
@@ -31,12 +28,10 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
-import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@@ -202,61 +197,61 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
|
|
|
StockWait stockWait = getById(stockWaitDto.getId());
|
|
|
updateById(stockWait);
|
|
|
|
|
|
- //如果业务类型是 采购到货入库 计算结存单价[结存单价=(结存单价*库存数量+采购单价*入库数量)/(库存数量+入库数量)]
|
|
|
- if (StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType().equals(stockWait.getBusinessType())) {
|
|
|
- //获取待入库明细信息
|
|
|
- List<Long> swdId = stockWaitDetailsDtoList.stream().map(StockWaitDetails::getId).collect(Collectors.toList());
|
|
|
- List<StockWaitDetails> oldStockWaitDetailsList = stockWaitDetailsService.listByIds(swdId);
|
|
|
- Map<Long, StockWaitDetails> oldStockWaitDetailsMap = oldStockWaitDetailsList.stream()
|
|
|
- .collect(Collectors.toMap(StockWaitDetails::getId, Function.identity()));
|
|
|
-
|
|
|
- List<Long> productIds = oldStockWaitDetailsList.stream().map(StockWaitDetails::getProductId).collect(Collectors.toList());
|
|
|
- //获取库存消息
|
|
|
- Map<Long, Stock> stockMap = stockService.mapKEntity(Stock::getProductId, q -> q
|
|
|
- .eq(Stock::getWarehouseId, stockWaitDto.getWarehouseId())
|
|
|
- .in(Stock::getProductId, productIds));
|
|
|
- //获取到货明细信息
|
|
|
- List<Long> arrivalDetailsIds = oldStockWaitDetailsList.stream().map(StockWaitDetails::getBusinessDetailsId).collect(Collectors.toList());
|
|
|
- List<ArrivalDetailPo> arrivalDetailList = myPurchaseService.getArrivalDetailList(arrivalDetailsIds);
|
|
|
- Assert.notEmpty(arrivalDetailList, "到货明细信息为空");
|
|
|
- Map<Long, ArrivalDetailPo> arrivalDetailPoMap = arrivalDetailList.stream().collect(Collectors.toMap(ArrivalDetailPo::getId, Function.identity()));
|
|
|
- //获取采购明细信息
|
|
|
- List<Long> purchaseDetailIds = arrivalDetailList.stream().map(ArrivalDetailPo::getPurchaseDetailId).collect(Collectors.toList());
|
|
|
- List<PurchaseDetailPo> purchaseDetailList = myPurchaseService.getPurchaseDetailList(purchaseDetailIds);
|
|
|
- Assert.notEmpty(arrivalDetailList, "采购明细信息为空");
|
|
|
- Map<Long, PurchaseDetailPo> purchaseDetailPoMap = purchaseDetailList.stream().collect(Collectors.toMap(PurchaseDetailPo::getId, Function.identity()));
|
|
|
-
|
|
|
- List<Stock> stockList1 = new ArrayList<>();
|
|
|
- for (StockWaitDetails stockWaitDetails : stockWaitDetailsDtoList) {
|
|
|
- StockWaitDetails oldStockWaitDetails = oldStockWaitDetailsMap.get(stockWaitDetails.getId());
|
|
|
- Assert.notEmpty(oldStockWaitDetails, "查询不到待入库明细信息");
|
|
|
- //获取到货信息
|
|
|
- ArrivalDetailPo arrivalDetailPo = arrivalDetailPoMap.get(oldStockWaitDetails.getBusinessDetailsId());
|
|
|
- Assert.notEmpty(arrivalDetailPo, "查询不到到货明细信息");
|
|
|
- //获取采购信息
|
|
|
- PurchaseDetailPo purchaseDetailPo = purchaseDetailPoMap.get(arrivalDetailPo.getPurchaseDetailId());
|
|
|
- Assert.notEmpty(arrivalDetailPo, "查询不到采购明细信息");
|
|
|
- //获取库存信息
|
|
|
- Stock stock = stockMap.get(oldStockWaitDetails.getProductId());
|
|
|
- if (ObjectUtil.isEmpty(stock)) {
|
|
|
- stock = new Stock();
|
|
|
- stock.setWarehouseId(stockWaitDto.getWarehouseId());
|
|
|
- stock.setProductId(oldStockWaitDetails.getProductId());
|
|
|
- stock.setQuantity(BigDecimal.ZERO);
|
|
|
- stock.setUnitPrice(BigDecimal.ZERO);
|
|
|
- }
|
|
|
- //计算结存单价 结存单价=(结存单价*库存数量+采购单价*入库数量)/(库存数量+入库数量)
|
|
|
- BigDecimal multiply = stock.getUnitPrice().multiply(stock.getQuantity());//结存单价*库存数量
|
|
|
- BigDecimal multiply1 = purchaseDetailPo.getPrice().multiply(stockWaitDetails.getQuantity());//采购单价*入库数量
|
|
|
- BigDecimal add = multiply.add(multiply1);//(结存单价*库存数量+采购单价*入库数量)
|
|
|
- BigDecimal add1 = stock.getQuantity().add(stockWaitDetails.getQuantity());//库存数量+入库数量
|
|
|
- BigDecimal divide = add.divide(add1, 4, BigDecimal.ROUND_HALF_UP);//(结存单价*库存数量+采购单价*入库数量)/(库存数量+入库数量)
|
|
|
- stock.setUnitPrice(divide);
|
|
|
-
|
|
|
- stockList1.add(stock);
|
|
|
- }
|
|
|
- stockService.saveOrUpdateBatch(stockList1);
|
|
|
- }
|
|
|
+// //如果业务类型是 采购到货入库 计算结存单价[结存单价=(结存单价*库存数量+采购单价*入库数量)/(库存数量+入库数量)]
|
|
|
+// if (StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType().equals(stockWait.getBusinessType())) {
|
|
|
+// //获取待入库明细信息
|
|
|
+// List<Long> swdId = stockWaitDetailsDtoList.stream().map(StockWaitDetails::getId).collect(Collectors.toList());
|
|
|
+// List<StockWaitDetails> oldStockWaitDetailsList = stockWaitDetailsService.listByIds(swdId);
|
|
|
+// Map<Long, StockWaitDetails> oldStockWaitDetailsMap = oldStockWaitDetailsList.stream()
|
|
|
+// .collect(Collectors.toMap(StockWaitDetails::getId, Function.identity()));
|
|
|
+//
|
|
|
+// List<Long> productIds = oldStockWaitDetailsList.stream().map(StockWaitDetails::getProductId).collect(Collectors.toList());
|
|
|
+// //获取库存消息
|
|
|
+// Map<Long, Stock> stockMap = stockService.mapKEntity(Stock::getProductId, q -> q
|
|
|
+// .eq(Stock::getWarehouseId, stockWaitDto.getWarehouseId())
|
|
|
+// .in(Stock::getProductId, productIds));
|
|
|
+// //获取到货明细信息
|
|
|
+// List<Long> arrivalDetailsIds = oldStockWaitDetailsList.stream().map(StockWaitDetails::getBusinessDetailsId).collect(Collectors.toList());
|
|
|
+// List<ArrivalDetailPo> arrivalDetailList = myPurchaseService.getArrivalDetailList(arrivalDetailsIds);
|
|
|
+// Assert.notEmpty(arrivalDetailList, "到货明细信息为空");
|
|
|
+// Map<Long, ArrivalDetailPo> arrivalDetailPoMap = arrivalDetailList.stream().collect(Collectors.toMap(ArrivalDetailPo::getId, Function.identity()));
|
|
|
+// //获取采购明细信息
|
|
|
+// List<Long> purchaseDetailIds = arrivalDetailList.stream().map(ArrivalDetailPo::getPurchaseDetailId).collect(Collectors.toList());
|
|
|
+// List<PurchaseDetailPo> purchaseDetailList = myPurchaseService.getPurchaseDetailList(purchaseDetailIds);
|
|
|
+// Assert.notEmpty(arrivalDetailList, "采购明细信息为空");
|
|
|
+// Map<Long, PurchaseDetailPo> purchaseDetailPoMap = purchaseDetailList.stream().collect(Collectors.toMap(PurchaseDetailPo::getId, Function.identity()));
|
|
|
+//
|
|
|
+// List<Stock> stockList1 = new ArrayList<>();
|
|
|
+// for (StockWaitDetails stockWaitDetails : stockWaitDetailsDtoList) {
|
|
|
+// StockWaitDetails oldStockWaitDetails = oldStockWaitDetailsMap.get(stockWaitDetails.getId());
|
|
|
+// Assert.notEmpty(oldStockWaitDetails, "查询不到待入库明细信息");
|
|
|
+// //获取到货信息
|
|
|
+// ArrivalDetailPo arrivalDetailPo = arrivalDetailPoMap.get(oldStockWaitDetails.getBusinessDetailsId());
|
|
|
+// Assert.notEmpty(arrivalDetailPo, "查询不到到货明细信息");
|
|
|
+// //获取采购信息
|
|
|
+// PurchaseDetailPo purchaseDetailPo = purchaseDetailPoMap.get(arrivalDetailPo.getPurchaseDetailId());
|
|
|
+// Assert.notEmpty(arrivalDetailPo, "查询不到采购明细信息");
|
|
|
+// //获取库存信息
|
|
|
+// Stock stock = stockMap.get(oldStockWaitDetails.getProductId());
|
|
|
+// if (ObjectUtil.isEmpty(stock)) {
|
|
|
+// stock = new Stock();
|
|
|
+// stock.setWarehouseId(stockWaitDto.getWarehouseId());
|
|
|
+// stock.setProductId(oldStockWaitDetails.getProductId());
|
|
|
+// stock.setQuantity(BigDecimal.ZERO);
|
|
|
+// stock.setUnitPrice(BigDecimal.ZERO);
|
|
|
+// }
|
|
|
+// //计算结存单价 结存单价=(结存单价*库存数量+采购单价*入库数量)/(库存数量+入库数量)
|
|
|
+// BigDecimal multiply = stock.getUnitPrice().multiply(stock.getQuantity());//结存单价*库存数量
|
|
|
+// BigDecimal multiply1 = purchaseDetailPo.getPrice().multiply(stockWaitDetails.getQuantity());//采购单价*入库数量
|
|
|
+// BigDecimal add = multiply.add(multiply1);//(结存单价*库存数量+采购单价*入库数量)
|
|
|
+// BigDecimal add1 = stock.getQuantity().add(stockWaitDetails.getQuantity());//库存数量+入库数量
|
|
|
+// BigDecimal divide = add.divide(add1, 4, BigDecimal.ROUND_HALF_UP);//(结存单价*库存数量+采购单价*入库数量)/(库存数量+入库数量)
|
|
|
+// stock.setUnitPrice(divide);
|
|
|
+//
|
|
|
+// stockList1.add(stock);
|
|
|
+// }
|
|
|
+// stockService.saveOrUpdateBatch(stockList1);
|
|
|
+// }
|
|
|
|
|
|
//操作库存
|
|
|
List<Long> swdIds = stockWaitDetailsDtoList.stream().map(StockWaitDetails::getId).collect(Collectors.toList());
|