|
@@ -26,6 +26,7 @@ import com.fjhx.enums.stock.InTypeEnum;
|
|
|
import com.fjhx.enums.stock.QualityStatusEnum;
|
|
|
import com.fjhx.mapper.logistics.LogisticsInfoMapper;
|
|
|
import com.fjhx.params.logistics.*;
|
|
|
+import com.fjhx.params.quality.QualityDetailsVo;
|
|
|
import com.fjhx.params.stock.InStockAdd;
|
|
|
import com.fjhx.params.stock.StockChangeDto;
|
|
|
import com.fjhx.service.apply.ApplyPurchaseService;
|
|
@@ -159,6 +160,13 @@ public class LogisticsInfoServiceImpl extends ServiceImpl<LogisticsInfoMapper, L
|
|
|
Map<Long, BigDecimal> applyPurchaseQuantityMap = applyPurchaseService.list(ApplyPurchase::getPurchaseId, businessId)
|
|
|
.stream().collect(Collectors.toMap(BaseIdEntity::getId, ApplyPurchase::getQuantity, BigDecimal::add));
|
|
|
|
|
|
+
|
|
|
+ List<Long> applyPurchaseIds = details.stream().map(LogisticsDetails::getApplyPurchaseId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<QualityDetailsVo> qualityDetailsByApplyId = qualityDetailsService.getQualityDetailsByApplyId(applyPurchaseIds);
|
|
|
+ Map<Long, QualityDetailsVo> qualityDetailsVoMap = qualityDetailsByApplyId.stream().collect(Collectors.groupingBy(QualityDetailsVo::getApplyId,
|
|
|
+ Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
|
|
|
+
|
|
|
details = details.stream()
|
|
|
.filter(item -> ObjectUtil.defaultIfNull(item.getShipmentQuantity(), BigDecimal.ZERO).compareTo(BigDecimal.ZERO) > 0)
|
|
|
.peek(item -> {
|
|
@@ -166,13 +174,26 @@ public class LogisticsInfoServiceImpl extends ServiceImpl<LogisticsInfoMapper, L
|
|
|
Assert.notEmpty(applyPurchaseId, "申购id不能为空");
|
|
|
|
|
|
|
|
|
- BigDecimal deliverQuantity = ObjectUtil.defaultIfNull(deliverQuantityMap.get(applyPurchaseId), BigDecimal.ZERO);
|
|
|
+
|
|
|
|
|
|
- BigDecimal applyQuantity = ObjectUtil.defaultIfNull(applyPurchaseQuantityMap.get(applyPurchaseId), BigDecimal.ZERO);
|
|
|
+
|
|
|
|
|
|
|
|
|
- if (deliverQuantity.add(item.getShipmentQuantity()).compareTo(applyQuantity) > 0) {
|
|
|
- throw new ServiceException("发货总数量不能大于发货数量");
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ QualityDetailsVo qualityDetailsVo = qualityDetailsVoMap.get(applyPurchaseId);
|
|
|
+
|
|
|
+ BigDecimal qualifiedQuantity = BigDecimal.ZERO;
|
|
|
+ BigDecimal purchaseQuantity = BigDecimal.ZERO;
|
|
|
+ if(ObjectUtil.isNotEmpty(qualityDetailsVo)){
|
|
|
+ qualifiedQuantity = qualityDetailsVo.getQualifiedQuantity();
|
|
|
+ purchaseQuantity = qualityDetailsVo.getPurchaseQuantity();
|
|
|
+ }
|
|
|
+ if(item.getShipmentQuantity().add(qualifiedQuantity).compareTo(purchaseQuantity)> 0){
|
|
|
+ throw new ServiceException("发货数量 + 质检合格数量 不能大于“已采购数量”");
|
|
|
}
|
|
|
|
|
|
item.setLogisticsInfoId(logisticsInfoId);
|