Browse Source

相同产品次品数量异常问题处理

yzc 1 year ago
parent
commit
20011eed9f

+ 2 - 2
hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseMapper.java

@@ -7,7 +7,7 @@ import com.fjhx.purchase.entity.purchase.dto.PurchaseDto;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
-import com.fjhx.purchase.entity.quality.po.QualityDetail;
+import com.fjhx.purchase.entity.quality.vo.QualityDetailVo;
 import com.fjhx.wms.entity.PurchaseDetailPo;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.utils.wrapper.IWrapper;
@@ -71,7 +71,7 @@ public interface PurchaseMapper extends BaseMapper<Purchase> {
     /**
      * 获取采购次品数量
      */
-    List<QualityDetail> getPurchaseDisqualificationQuantity(@Param("purchaseId") Long purchaseId);
+    List<QualityDetailVo> getPurchaseDisqualificationQuantity(@Param("purchaseId") Long purchaseId);
 
     List<PurchaseDetailVo>getArrayInfoById(@Param("ew") IWrapper<Object> wrapper);
 }

+ 4 - 3
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java

@@ -49,6 +49,7 @@ import com.fjhx.purchase.entity.purchase.vo.PurchaseDocumentaryVo;
 import com.fjhx.purchase.entity.purchase.vo.PurchasePayRecordDetailVo;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
 import com.fjhx.purchase.entity.quality.po.QualityDetail;
+import com.fjhx.purchase.entity.quality.vo.QualityDetailVo;
 import com.fjhx.purchase.entity.subscribe.enums.SubscribeDetailStatusEnum;
 import com.fjhx.purchase.entity.subscribe.po.Subscribe;
 import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
@@ -444,9 +445,9 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
             Map<Long, List<ProductInfoVo>> productMap = productInfos.stream().distinct().collect(Collectors.groupingBy(ProductInfoVo::getId));
             //获取所有仓库次品数量
             Map<Long, List<Stock>> stockMap = stockService.mapKGroup(Stock::getProductId, q -> q.in(Stock::getProductId, productIds));
-            List<QualityDetail> purchaseDisqualificationQuantity = baseMapper.getPurchaseDisqualificationQuantity(id);
+            List<QualityDetailVo> purchaseDisqualificationQuantity = baseMapper.getPurchaseDisqualificationQuantity(id);
             Map<Long, BigDecimal> purchaseNoQuantityMap = purchaseDisqualificationQuantity
-                    .stream().collect(Collectors.toMap(QualityDetail::getBussinessId, QualityDetail::getNoQualifiedCount));
+                    .stream().collect(Collectors.toMap(QualityDetailVo::getPurchaseDetailId, QualityDetail::getNoQualifiedCount));
             if (MapUtils.isNotEmpty(productMap)) {
                 for (PurchaseDetail p : purchaseDetailList) {
                     //查询出到货总量
@@ -493,7 +494,7 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
                         p.setPurchaseQuantity(count);
                     }
                     //赋值本次采购次品数
-                    BigDecimal purchaseNoQuantity = purchaseNoQuantityMap.getOrDefault(p.getBussinessId(), BigDecimal.ZERO);
+                    BigDecimal purchaseNoQuantity = purchaseNoQuantityMap.getOrDefault(p.getId(), BigDecimal.ZERO);
                     p.setPurchaseNoQualifiedCount(purchaseNoQuantity);
                 }
             }

+ 9 - 8
hx-purchase/src/main/resources/mapper/purchase/PurchaseMapper.xml

@@ -134,20 +134,21 @@
         ${ew.customSqlSegment}
     </select>
     <select id="getPurchaseDisqualificationQuantity"
-            resultType="com.fjhx.purchase.entity.quality.po.QualityDetail">
+            resultType="com.fjhx.purchase.entity.quality.vo.QualityDetailVo">
         SELECT
+            ad.purchase_detail_id,
             qd.product_info_id AS bussinessId,
             sum( qd.disqualification_quantity ) AS noQualifiedCount
         FROM
-            purchase p
-                JOIN bytesailing_wms.stock_wait sw ON sw.business_id = p.id and sw.del_flag = 0
-                JOIN bytesailing_wms.arrival_stock_records asr ON asr.stock_wait_id = sw.id and asr.del_flag = 0
-                JOIN bytesailing_victoriatourist.quality_info qi ON qi.bussiness_id = asr.id and qi.del_flag = 0
-                JOIN bytesailing_victoriatourist.quality_details qd ON qd.quality_info_id = qi.id and qd.del_flag = 0
+            bytesailing_victoriatourist.quality_details qd
+                JOIN bytesailing_wms.arrival_stock_records_details asrd ON qd.arrival_stock_records_details_id = asrd.id
+                JOIN bytesailing_wms.stock_wait_details swd ON asrd.business_details_id = swd.id
+                JOIN bytesailing_purchase.arrival_detail ad ON swd.business_details_id = ad.id
+                JOIN bytesailing_purchase.arrival a ON ad.arrival_id = a.id
         WHERE
-            p.id = #{purchaseId}
+            a.purchase_id = #{purchaseId}
         GROUP BY
-            qd.product_info_id
+            ad.purchase_detail_id
     </select>
     <select id="getArrayInfoById" resultType="com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo">
         SELECT