|
@@ -37,8 +37,12 @@ import com.fjhx.mes.utils.code.CodeEnum;
|
|
|
import com.fjhx.socket.core.PushTypeEnum;
|
|
|
import com.fjhx.socket.core.WebSocketPush;
|
|
|
import com.fjhx.wms.entity.stock.emums.StockWaitType;
|
|
|
+import com.fjhx.wms.entity.stock.po.Stock;
|
|
|
+import com.fjhx.wms.entity.stock.po.StockFrozen;
|
|
|
import com.fjhx.wms.entity.stock.po.StockWait;
|
|
|
import com.fjhx.wms.entity.stock.po.StockWaitDetails;
|
|
|
+import com.fjhx.wms.service.stock.StockFrozenService;
|
|
|
+import com.fjhx.wms.service.stock.StockService;
|
|
|
import com.fjhx.wms.service.stock.StockWaitDetailsService;
|
|
|
import com.fjhx.wms.service.stock.StockWaitService;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
@@ -94,6 +98,10 @@ public class ProductionTaskServiceImpl extends ServiceImpl<ProductionTaskMapper,
|
|
|
private ProductionTaskDetailRecordService productionTaskDetailRecordService;
|
|
|
@Autowired
|
|
|
private ProductionTaskProcessesDetailService productionTaskProcessesDetailService;
|
|
|
+ @Autowired
|
|
|
+ private StockService stockService;
|
|
|
+ @Autowired
|
|
|
+ private StockFrozenService stockFrozenService;
|
|
|
|
|
|
@Override
|
|
|
public Page<ProductionTaskVo> getPage(ProductionTaskSelectDto dto) {
|
|
@@ -197,6 +205,42 @@ public class ProductionTaskServiceImpl extends ServiceImpl<ProductionTaskMapper,
|
|
|
stockWaitDetailsList.add(stockWaitDetails);
|
|
|
}
|
|
|
stockWaitDetailsService.saveBatch(stockWaitDetailsList);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ List<Long> productIds = bomDetailList.stream().map(BomDetail::getProductId).collect(Collectors.toList());
|
|
|
+ Map<Long, List<Stock>> productMap = stockService.mapKGroup(Stock::getProductId, q -> q.in(Stock::getProductId, productIds));
|
|
|
+ List<StockFrozen> stockFrozenList = new ArrayList<>();
|
|
|
+ for (BomDetail bomDetail : bomDetailList) {
|
|
|
+ Long productId = bomDetail.getProductId();
|
|
|
+
|
|
|
+ BigDecimal multiply = bomDetail.getQuantity().multiply(productionTaskDto.getQuantity());
|
|
|
+
|
|
|
+ List<Stock> stocks = productMap.get(productId);
|
|
|
+ if (ObjectUtil.isEmpty(stocks)) {
|
|
|
+ throw new ServiceException("物料库存不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal quantity = stocks.stream().map(Stock::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ Map<Long, StockFrozen> stockFrozenMap = stockFrozenService.mapKEntity(StockFrozen::getProductId, q -> q.in(StockFrozen::getProductId, productIds));
|
|
|
+ StockFrozen stockFrozen = stockFrozenMap.get(bomDetail.getProductId());
|
|
|
+ if (ObjectUtil.isEmpty(stockFrozen)) {
|
|
|
+ stockFrozen = new StockFrozen();
|
|
|
+ stockFrozen.setProductId(bomDetail.getProductId());
|
|
|
+ stockFrozen.setFrozenQuantity(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+ BigDecimal subtract = quantity.subtract(stockFrozen.getFrozenQuantity()).subtract(multiply);
|
|
|
+ if (subtract.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
+ throw new ServiceException("物料库存不足");
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal add = stockFrozen.getFrozenQuantity().add(multiply);
|
|
|
+ stockFrozen.setFrozenQuantity(add);
|
|
|
+
|
|
|
+ stockFrozenList.add(stockFrozen);
|
|
|
+ }
|
|
|
+ stockFrozenService.saveOrUpdateBatch(stockFrozenList);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|