Kaynağa Gözat

维多利亚

24282 2 yıl önce
ebeveyn
işleme
0321f995bc

+ 5 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/stock/Stock.java

@@ -37,6 +37,11 @@ public class Stock extends BaseEntity {
     private BigDecimal frozenQuantity;
 
     /**
+     * 次品数量
+     */
+    private BigDecimal defectiveQuantity;
+
+    /**
      * 加权平均单价
      */
     private BigDecimal weightingAveragePrice;

+ 5 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/stock/PageByProductVo.java

@@ -49,4 +49,9 @@ public class PageByProductVo {
      */
     private BigDecimal frozenQuantity;
 
+    /**
+     * 次品数量
+     */
+    private BigDecimal defectiveQuantity;
+
 }

+ 5 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/stock/PageByWarehouseVo.java

@@ -64,4 +64,9 @@ public class PageByWarehouseVo {
      */
     private BigDecimal frozenQuantity;
 
+    /**
+     * 次品数量
+     */
+    private BigDecimal defectiveQuantity;
+
 }

+ 3 - 3
hx-service/basics/src/main/resources/application-prod.yml

@@ -6,7 +6,7 @@ server:
 spring:
   # 数据库
   datasource:
-    url: ${blade.datasource.storage.prod.url}
-    username: ${blade.datasource.storage.prod.username}
-    password: ${blade.datasource.storage.prod.password}
+    url: ${blade.datasource.basics.prod.url}
+    username: ${blade.datasource.basics.prod.username}
+    password: ${blade.datasource.basics.prod.password}
 

+ 3 - 3
hx-service/basics/src/main/resources/application-test.yml

@@ -6,6 +6,6 @@ server:
 spring:
   # 数据库
   datasource:
-    url: ${blade.datasource.storage.test.url}
-    username: ${blade.datasource.storage.test.username}
-    password: ${blade.datasource.storage.test.password}
+    url: ${blade.datasource.basics.test.url}
+    username: ${blade.datasource.basics.test.username}
+    password: ${blade.datasource.basics.test.password}

+ 11 - 9
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/stock/StockMapper.xml

@@ -24,7 +24,8 @@
                pi.specs      productSpecs,
                pi.unit       productUnit,
                s.quantity,
-               s.frozen_quantity
+               s.frozen_quantity,
+               s.defective_quantity
         from warehouse w
                  inner join stock s on w.id = s.warehouse_id
                  inner join product_info pi on s.goods_id = pi.id
@@ -40,14 +41,15 @@
     </select>
 
     <sql id="page">
-        select pi.definition          productDefinition,
-               pi.id                  productId,
-               pi.code                productCode,
-               pi.name                productName,
-               pi.specs               productSpecs,
-               pi.unit                productUnit,
-               sum(s.quantity)        quantity,
-               sum(s.frozen_quantity) frozenQuantity
+        select pi.definition             productDefinition,
+               pi.id                     productId,
+               pi.code                   productCode,
+               pi.name                   productName,
+               pi.specs                  productSpecs,
+               pi.unit                   productUnit,
+               sum(s.quantity)           quantity,
+               sum(s.frozen_quantity)    frozenQuantity,
+               sum(s.defective_quantity) defectiveQuantity
         from warehouse w
                  inner join stock s on w.id = s.warehouse_id
                  inner join product_info pi on s.goods_id = pi.id

+ 2 - 3
hx-service/victoriatourist/src/main/java/com/fjhx/service/jd/impl/JdBackServiceImpl.java

@@ -109,9 +109,8 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
             return jdBackExPage;
         }
 
-        warehouseService.attributeAssign(records, JdBack::getWarehouseId, (item, warehouse) -> {
-            item.setWarehouseName(warehouse.getName());
-        });
+        warehouseService.attributeAssign(records, JdBack::getWarehouseId,
+                (item, warehouse) -> item.setWarehouseName(warehouse.getName()));
 
         return jdBackExPage;
     }

+ 68 - 43
hx-service/victoriatourist/src/main/java/com/fjhx/service/quality/impl/QualityDetailsServiceImpl.java

@@ -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);
     }
 

+ 1 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockServiceImpl.java

@@ -172,6 +172,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 stock.setGoodsId(goodsId);
                 stock.setQuantity(BigDecimal.ZERO);
                 stock.setFrozenQuantity(BigDecimal.ZERO);
+                stock.setDefectiveQuantity(BigDecimal.ZERO);
                 stock.setWeightingAveragePrice(BigDecimal.ZERO);
                 map.put(key, stock);
             }