|
@@ -7,11 +7,8 @@ import com.fjhx.constants.StatusConstant;
|
|
|
import com.fjhx.entity.quality.QualityDetails;
|
|
|
import com.fjhx.entity.quality.QualityInfo;
|
|
|
import com.fjhx.entity.stock.Stock;
|
|
|
-import com.fjhx.enums.stock.OutTypeEnum;
|
|
|
import com.fjhx.enums.stock.QualityStatusEnum;
|
|
|
import com.fjhx.mapper.quality.QualityDetailsMapper;
|
|
|
-import com.fjhx.params.stock.InStockAdd;
|
|
|
-import com.fjhx.params.stock.StockChangeDto;
|
|
|
import com.fjhx.service.quality.QualityDetailsService;
|
|
|
import com.fjhx.service.quality.QualityInfoService;
|
|
|
import com.fjhx.service.stock.StockService;
|
|
@@ -55,10 +52,14 @@ public class QualityDetailsServiceImpl extends ServiceImpl<QualityDetailsMapper,
|
|
|
Long warehouseId = oldQualityDetailsList.get(0).getWarehouseId();
|
|
|
// 质检id
|
|
|
Long qualityInfoId = oldQualityDetailsList.get(0).getQualityInfoId();
|
|
|
- // map<产品id,库存变更数量>
|
|
|
- Map<Long, BigDecimal> map = new HashMap<>();
|
|
|
- // 不合格出库逻辑列表
|
|
|
- List<InStockAdd.InStockAddDetails> list = new ArrayList<>();
|
|
|
+
|
|
|
+ // 合格产品数
|
|
|
+ Map<Long, BigDecimal> qualifiedQuantityMap = new HashMap<>();
|
|
|
+ // 不合格产品数
|
|
|
+ Map<Long, BigDecimal> disqualificationQuantityMap = new HashMap<>();
|
|
|
+
|
|
|
+ // // 不合格出库逻辑列表
|
|
|
+ // List<InStockAdd.InStockAddDetails> list = new ArrayList<>();
|
|
|
// 是否完成质检标记
|
|
|
boolean qualityFlag = true;
|
|
|
// 质检结果标记
|
|
@@ -68,35 +69,45 @@ public class QualityDetailsServiceImpl extends ServiceImpl<QualityDetailsMapper,
|
|
|
QualityDetails oldQualityDetails = oldMap.get(qualityDetails.getId());
|
|
|
Long productInfoId = oldQualityDetails.getProductInfoId();
|
|
|
|
|
|
- // 改变不合格数量
|
|
|
- BigDecimal disqualificationQuantity = qualityDetails.getDisqualificationQuantity();
|
|
|
- if (disqualificationQuantity.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- InStockAdd.InStockAddDetails inStockAddDetails = new InStockAdd.InStockAddDetails();
|
|
|
- inStockAddDetails.setBusinessId(oldQualityDetails.getId());
|
|
|
- inStockAddDetails.setWarehouseId(oldQualityDetails.getWarehouseId());
|
|
|
- inStockAddDetails.setGoodsId(productInfoId);
|
|
|
- inStockAddDetails.setChangeQuantity(disqualificationQuantity);
|
|
|
- list.add(inStockAddDetails);
|
|
|
- }
|
|
|
+ // // 改变不合格数量
|
|
|
+ // BigDecimal disqualificationQuantity = qualityDetails.getDisqualificationQuantity();
|
|
|
+ // if (disqualificationQuantity.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ // InStockAdd.InStockAddDetails inStockAddDetails = new InStockAdd.InStockAddDetails();
|
|
|
+ // inStockAddDetails.setBusinessId(oldQualityDetails.getId());
|
|
|
+ // inStockAddDetails.setWarehouseId(oldQualityDetails.getWarehouseId());
|
|
|
+ // inStockAddDetails.setGoodsId(productInfoId);
|
|
|
+ // inStockAddDetails.setChangeQuantity(disqualificationQuantity);
|
|
|
+ // list.add(inStockAddDetails);
|
|
|
+ // }
|
|
|
|
|
|
- // 改变合格数量
|
|
|
+ // 合格数量
|
|
|
BigDecimal qualifiedQuantity = qualityDetails.getQualifiedQuantity();
|
|
|
- if (qualifiedQuantity.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- BigDecimal bigDecimal = ObjectUtil.defaultIfNull(map.get(productInfoId), BigDecimal.ZERO);
|
|
|
- map.put(productInfoId, bigDecimal.add(qualifiedQuantity));
|
|
|
- }
|
|
|
-
|
|
|
- BigDecimal newQualifiedQuantity = oldQualityDetails.getQualifiedQuantity().add(qualityDetails.getQualifiedQuantity());
|
|
|
- BigDecimal newDisqualificationQuantity = oldQualityDetails.getDisqualificationQuantity().add(qualityDetails.getDisqualificationQuantity());
|
|
|
+ // 不合格数量
|
|
|
+ BigDecimal disqualificationQuantity = qualityDetails.getDisqualificationQuantity();
|
|
|
+ // 判断合格数量加不合格数量是否大于总数量
|
|
|
+ BigDecimal newQualifiedQuantity = oldQualityDetails.getQualifiedQuantity().add(qualifiedQuantity);
|
|
|
+ BigDecimal newDisqualificationQuantity = oldQualityDetails.getDisqualificationQuantity().add(disqualificationQuantity);
|
|
|
qualityDetails.setQualifiedQuantity(newQualifiedQuantity);
|
|
|
qualityDetails.setDisqualificationQuantity(newDisqualificationQuantity);
|
|
|
int compareTo = newQualifiedQuantity.add(newDisqualificationQuantity).compareTo(oldQualityDetails.getTotalQuantity());
|
|
|
if (compareTo > 0) {
|
|
|
throw new ServiceException("合格数量加不合格数量不能大于需要质检的总数量");
|
|
|
}
|
|
|
+ // 统计合格从跑
|
|
|
+ if (qualifiedQuantity.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ BigDecimal bigDecimal = ObjectUtil.defaultIfNull(qualifiedQuantityMap.get(productInfoId), BigDecimal.ZERO);
|
|
|
+ qualifiedQuantityMap.put(productInfoId, bigDecimal.add(qualifiedQuantity));
|
|
|
+ }
|
|
|
+ // 统计不合格产品
|
|
|
+ if (disqualificationQuantity.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ BigDecimal bigDecimal = ObjectUtil.defaultIfNull(disqualificationQuantityMap.get(productInfoId), BigDecimal.ZERO);
|
|
|
+ disqualificationQuantityMap.put(productInfoId, bigDecimal.add(disqualificationQuantity));
|
|
|
+ }
|
|
|
+ // 判断质检是否合格
|
|
|
if (oldQualityDetails.getDisqualificationQuantity().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
resultTypeFlag = false;
|
|
|
}
|
|
|
+ // 判断质检是否完成
|
|
|
if (compareTo != 0) {
|
|
|
qualityFlag = false;
|
|
|
}
|
|
@@ -109,29 +120,43 @@ public class QualityDetailsServiceImpl extends ServiceImpl<QualityDetailsMapper,
|
|
|
qualityInfoService.updateById(qualityInfo);
|
|
|
|
|
|
// 质检不合格数量走出库,减少锁定库存
|
|
|
- if (list.size() > 0) {
|
|
|
- StockChangeDto stockChangeDto = new StockChangeDto();
|
|
|
- stockChangeDto.setTypeEnum(OutTypeEnum.UNQUALIFIED_QUALITY_INSPECTION);
|
|
|
- stockChangeDto.setDefaultRemarks("质检不合格出库");
|
|
|
- stockChangeDto.setChangeDetailsList(list);
|
|
|
- stockService.changeQuantity(stockChangeDto);
|
|
|
- }
|
|
|
+ // if (list.size() > 0) {
|
|
|
+ // StockChangeDto stockChangeDto = new StockChangeDto();
|
|
|
+ // stockChangeDto.setTypeEnum(OutTypeEnum.UNQUALIFIED_QUALITY_INSPECTION);
|
|
|
+ // stockChangeDto.setDefaultRemarks("质检不合格出库");
|
|
|
+ // stockChangeDto.setChangeDetailsList(list);
|
|
|
+ // stockService.changeQuantity(stockChangeDto);
|
|
|
+ // }
|
|
|
+
|
|
|
+ List<Long> productIdList = new ArrayList<>();
|
|
|
+ productIdList.addAll(qualifiedQuantityMap.keySet());
|
|
|
+ productIdList.addAll(disqualificationQuantityMap.keySet());
|
|
|
+ List<Stock> stockList = stockService.list(q -> q.eq(Stock::getWarehouseId, warehouseId).in(Stock::getGoodsId, productIdList));
|
|
|
+ for (Stock stock : stockList) {
|
|
|
+ // 产品id
|
|
|
+ Long goodsId = stock.getGoodsId();
|
|
|
|
|
|
- // 质检合格减少锁定库存,增加库存
|
|
|
- if (map.size() > 0) {
|
|
|
- List<Stock> stockList = stockService.list(q -> q.eq(Stock::getWarehouseId, warehouseId).in(Stock::getGoodsId, map.keySet()));
|
|
|
- for (Stock stock : stockList) {
|
|
|
- // 产品id
|
|
|
- Long goodsId = stock.getGoodsId();
|
|
|
- // 改变数量
|
|
|
- BigDecimal bigDecimal = map.get(goodsId);
|
|
|
+ // 质检合格
|
|
|
+ BigDecimal qualifiedQuantityBigDecimal = qualifiedQuantityMap.get(goodsId);
|
|
|
+ if (qualifiedQuantityBigDecimal != null) {
|
|
|
// 新增库存数量
|
|
|
- stock.setQuantity(stock.getQuantity().add(bigDecimal));
|
|
|
+ stock.setQuantity(stock.getQuantity().add(qualifiedQuantityBigDecimal));
|
|
|
// 减少锁定库存数量
|
|
|
- stock.setFrozenQuantity(stock.getFrozenQuantity().subtract(bigDecimal));
|
|
|
+ stock.setFrozenQuantity(stock.getFrozenQuantity().subtract(qualifiedQuantityBigDecimal));
|
|
|
}
|
|
|
- stockService.updateBatchById(stockList);
|
|
|
+
|
|
|
+ // 质检不合格
|
|
|
+ BigDecimal disqualificationQuantityBigDecimal = disqualificationQuantityMap.get(goodsId);
|
|
|
+ if (disqualificationQuantityBigDecimal != null) {
|
|
|
+ // 新增次品数量
|
|
|
+ stock.setDefectiveQuantity(stock.getDefectiveQuantity().add(qualifiedQuantityBigDecimal));
|
|
|
+ // 减少锁定库存数量
|
|
|
+ stock.setFrozenQuantity(stock.getFrozenQuantity().subtract(qualifiedQuantityBigDecimal));
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+ stockService.updateBatchById(stockList);
|
|
|
+
|
|
|
updateBatchById(qualityDetailsList);
|
|
|
}
|
|
|
|