24282 11 meses atrás
pai
commit
614fb24cf8

+ 289 - 154
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/impl/DeliverGoodsServiceImpl.java

@@ -62,6 +62,7 @@ import com.fjhx.wms.service.stock.StockJournalDetailsService;
 import com.fjhx.wms.service.stock.StockJournalService;
 import com.fjhx.wms.service.stock.StockWaitDetailsService;
 import com.fjhx.wms.service.stock.StockWaitService;
+import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -70,8 +71,11 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -322,11 +326,10 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
     public PurchaseVo arrivalDetail(Long purchaseId) {
         Purchase purchase = purchaseService.getById(purchaseId);
         PurchaseVo result = BeanUtil.toBean(purchase, PurchaseVo.class);
-        //赋值供应商信息
-        SupplierInfo supplierInfo = supplierInfoService.getById(purchase.getSupplyId());
-        if (ObjectUtil.isNotEmpty(supplierInfo)) {
-            result.setSupplyName(supplierInfo.getName());
-        }
+
+        // 赋值供应商名称
+        setSupplyName(result, purchase.getSupplyId());
+
         //赋值采购明细
         DynamicDataSourceContextHolder.push(SourceConstant.PURCHASE);
         List<PurchaseDetailVo> purchaseDetailVoList = purchaseDetailMapper.getList(IWrapper.<PurchaseDetail>getWrapper()
@@ -334,216 +337,348 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
                 .orderByAsc("pi.name")
         );
         DynamicDataSourceContextHolder.poll();
-        //赋值质检信息
-        List<QualityDetailVo> qualityInfoByPurchaseId = baseMapper.getQualityInfoByPurchaseId(purchase.getId());
-        //赋值质检人名称
-        UserUtil.assignmentNickName(qualityInfoByPurchaseId, QualityDetailVo::getCreateUser, QualityDetailVo::setCreateUserName);
-
-        if (ObjectUtil.isNotEmpty(qualityInfoByPurchaseId)) {
-            Map<Long, List<QualityDetailVo>> qualityDetailsMap = qualityInfoByPurchaseId.stream().collect(Collectors.groupingBy(QualityDetailVo::getPurchaseDetailId));
-
-            for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
-                //根据产品id获取质检信息
-                List<QualityDetailVo> qualityDetails = qualityDetailsMap.get(purchaseDetailVo.getId());
-                if (ObjectUtil.isEmpty(qualityDetails)) {
-                    purchaseDetailVo.setQualifiedCount(BigDecimal.ZERO);
-                    purchaseDetailVo.setNoQualifiedCount(BigDecimal.ZERO);
-                    purchaseDetailVo.setQualityQuantity(BigDecimal.ZERO);
-                    continue;
-                }
 
-                BigDecimal qualifiedCount = qualityDetails.stream().map(QualityDetail::getQualifiedCount).reduce(BigDecimal.ZERO, BigDecimal::add);
-                BigDecimal noQualifiedCount = qualityDetails.stream().map(QualityDetail::getNoQualifiedCount).reduce(BigDecimal.ZERO, BigDecimal::add);
+        // 赋值质检信息
+        setQualityInfo(purchaseId, purchaseDetailVoList);
+
+        // 赋值发货信息
+        List<DeliverGoodsDetailsVo> list = setDeliverGoodsInfo(purchaseId, purchaseDetailVoList);
+
+        // 赋值到货信息
+        setArrivalDetailInfo(purchaseId, purchaseDetailVoList, list);
 
-                //赋值质检之和
-                purchaseDetailVo.setQualifiedCount(qualifiedCount);
-                purchaseDetailVo.setNoQualifiedCount(noQualifiedCount);
-                purchaseDetailVo.setQualityQuantity(qualifiedCount.add(noQualifiedCount));
+        // 赋值退货信息
+        setPurchaseBackInfo(purchaseId, purchaseDetailVoList);
 
-                purchaseDetailVo.setIsReject(noQualifiedCount.compareTo(BigDecimal.ZERO) > 0 ? 1 : 0);
+        // 赋值已入库记录
+        setWarehousingInfo(purchaseDetailVoList, list);
+
+        result.setPurchaseDetailVoList(purchaseDetailVoList);
+        return result;
+    }
+
+    @Override
+    public List<DeliverGoodsDetailsVo> listDeliverGoodsDetails(IWrapper<DeliverGoods> wrapper) {
+        return baseMapper.listDeliverGoodsDetails(wrapper);
+    }
+
+    /**
+     * 赋值供应商名称
+     */
+    private void setSupplyName(PurchaseVo result, Long supplyId) {
+        SupplierInfo supplierInfo = supplierInfoService.getById(supplyId);
+        if (ObjectUtil.isNotEmpty(supplierInfo)) {
+            result.setSupplyName(supplierInfo.getName());
+        }
+    }
+
+    /**
+     * 赋值质检信息
+     */
+    private void setQualityInfo(Long purchaseId, List<PurchaseDetailVo> purchaseDetailVoList) {
+
+        List<QualityDetailVo> qualityDetailVoList = baseMapper.getQualityInfoByPurchaseId(purchaseId);
+
+        if (ObjectUtil.isEmpty(qualityDetailVoList)) {
+            return;
+        }
+
+        //赋值质检人名称
+        UserUtil.assignmentNickName(qualityDetailVoList, QualityDetailVo::getCreateUser, QualityDetailVo::setCreateUserName);
+
+        Map<Long, List<QualityDetailVo>> qualityDetailsMap = qualityDetailVoList.stream()
+                .collect(Collectors.groupingBy(QualityDetailVo::getPurchaseDetailId));
+
+        for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
 
-                //过滤调质检数为0的明细数据 留下有质检数的数据
-                qualityDetails = qualityDetails.stream().filter(item -> {
-                    BigDecimal add = item.getQualifiedCount().add(item.getNoQualifiedCount());
-                    return add.compareTo(BigDecimal.ZERO) != 0;
-                }).collect(Collectors.toList());
+            //根据产品id获取质检信息
+            List<QualityDetailVo> qualityDetails = qualityDetailsMap.get(purchaseDetailVo.getId());
 
-                //赋值产品质检的明细
-                purchaseDetailVo.setQualityDetailsList(qualityDetails);
+            if (ObjectUtil.isEmpty(qualityDetails)) {
+                purchaseDetailVo.setQualifiedCount(BigDecimal.ZERO);
+                purchaseDetailVo.setNoQualifiedCount(BigDecimal.ZERO);
+                purchaseDetailVo.setQualityQuantity(BigDecimal.ZERO);
+                continue;
             }
+
+            BigDecimal qualifiedCount = qualityDetails.stream().map(QualityDetail::getQualifiedCount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal noQualifiedCount = qualityDetails.stream().map(QualityDetail::getNoQualifiedCount).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+            //赋值质检之和
+            purchaseDetailVo.setQualifiedCount(qualifiedCount);
+            purchaseDetailVo.setNoQualifiedCount(noQualifiedCount);
+            purchaseDetailVo.setQualityQuantity(qualifiedCount.add(noQualifiedCount));
+            purchaseDetailVo.setIsReject(noQualifiedCount.compareTo(BigDecimal.ZERO) > 0 ? 1 : 0);
+
+            //过滤调质检数为0的明细数据 留下有质检数的数据
+            qualityDetails = qualityDetails.stream()
+                    .filter(item -> item.getQualifiedCount().add(item.getNoQualifiedCount()).compareTo(BigDecimal.ZERO) != 0)
+                    .collect(Collectors.toList());
+
+            //赋值产品质检的明细
+            purchaseDetailVo.setQualityDetailsList(qualityDetails);
         }
-        //赋值发货信息
+    }
+
+    /**
+     * 赋值发货信息
+     */
+    private List<DeliverGoodsDetailsVo> setDeliverGoodsInfo(Long purchaseId, List<PurchaseDetailVo> purchaseDetailVoList) {
+
         IWrapper<DeliverGoods> wrapper = getWrapper();
         wrapper.eq("dg", DeliverGoods::getPurchaseId, purchaseId);
         List<DeliverGoodsDetailsVo> list = baseMapper.listDeliverGoodsDetails(wrapper);
-        if (ObjectUtil.isNotEmpty(list)) {
-            Map<Long, List<DeliverGoodsDetailsVo>> collect = list.stream().collect(Collectors.groupingBy(DeliverGoodsDetailsVo::getPurchaseDetailId));
-            for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
-                List<DeliverGoodsDetailsVo> list1 = collect.get(purchaseDetailVo.getId());
-                if (ObjectUtil.isEmpty(list1)) {
-                    purchaseDetailVo.setDeliverGoodsQuantity(BigDecimal.ZERO);
-                    continue;
-                }
-                //发货数量求和
-                BigDecimal dgdCount = list1.stream()
-                        .map(DeliverGoodsDetailsVo::getDeliverGoodsQuantity)
-                        .reduce(BigDecimal.ZERO, BigDecimal::add);
-                purchaseDetailVo.setDeliverGoodsQuantity(dgdCount);
-                purchaseDetailVo.setDeliverGoodsDetailList(BeanUtil.copyToList(list1, DeliverGoodsDetailsPoVo.class));
+
+        if (ObjectUtil.isEmpty(list)) {
+            return list;
+        }
+
+        Map<Long, List<DeliverGoodsDetailsVo>> deliverGoodsDetailsVoMap = list.stream()
+                .collect(Collectors.groupingBy(DeliverGoodsDetailsVo::getPurchaseDetailId));
+
+        for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
+
+            List<DeliverGoodsDetailsVo> itemList = deliverGoodsDetailsVoMap.get(purchaseDetailVo.getId());
+
+            if (ObjectUtil.isEmpty(itemList)) {
+                purchaseDetailVo.setDeliverGoodsQuantity(BigDecimal.ZERO);
+                continue;
             }
+
+            //发货数量求和
+            BigDecimal dgdCount = itemList.stream()
+                    .map(DeliverGoodsDetailsVo::getDeliverGoodsQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+            purchaseDetailVo.setDeliverGoodsQuantity(dgdCount);
+            purchaseDetailVo.setDeliverGoodsDetailList(BeanUtil.copyToList(itemList, DeliverGoodsDetailsPoVo.class));
         }
-        //赋值到货信息
-        IWrapper<ArrivalDetail> wrapper1 = arrivalDetailService.getWrapper();
-        wrapper1.eq("a.purchase_id", purchaseId);
-        List<ArrivalDetailVo> arrivalDetail = arrivalDetailService.getArrivalDetail(wrapper1);
-        if (ObjectUtil.isNotEmpty(arrivalDetail)) {
-            Map<Long, List<ArrivalDetailVo>> collect = arrivalDetail.stream().collect(Collectors.groupingBy(ArrivalDetailVo::getPurchaseDetailId));
-
-            Map<Long, String> dgdMap = list.stream().collect(Collectors.toMap(DeliverGoodsDetailsVo::getId, DeliverGoodsDetailsVo::getLogisticsCode));
-            for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
-                List<ArrivalDetailVo> list1 = collect.get(purchaseDetailVo.getId());
-                if (ObjectUtil.isEmpty(list1)) {
-                    purchaseDetailVo.setArrivalQuantity(BigDecimal.ZERO);
-                    continue;
-                }
 
-                //赋值发货单号
-                for (ArrivalDetailVo arrivalDetailVo : list1) {
-                    arrivalDetailVo.setLogisticsCode(dgdMap.get(arrivalDetailVo.getDeliverGoodsDetailsId()));
-                }
+        return list;
+    }
 
-                //到货数量求和
-                BigDecimal arrCount = list1.stream()
-                        .map(ArrivalDetailVo::getCount)
-                        .reduce(BigDecimal.ZERO, BigDecimal::add);
-                purchaseDetailVo.setArrivalQuantity(arrCount);
-                purchaseDetailVo.setArrivalDetailList(list1);
+    /**
+     * 赋值到货信息
+     */
+    private void setArrivalDetailInfo(Long purchaseId, List<PurchaseDetailVo> purchaseDetailVoList, List<DeliverGoodsDetailsVo> list) {
+        IWrapper<ArrivalDetail> wrapper = arrivalDetailService.getWrapper();
+        wrapper.eq("a.purchase_id", purchaseId);
+        List<ArrivalDetailVo> arrivalDetail = arrivalDetailService.getArrivalDetail(wrapper);
+
+        if (ObjectUtil.isEmpty(arrivalDetail)) {
+            return;
+        }
+
+        Map<Long, List<ArrivalDetailVo>> collect = arrivalDetail.stream().collect(Collectors.groupingBy(ArrivalDetailVo::getPurchaseDetailId));
+
+        Map<Long, String> dgdMap = list.stream().collect(Collectors.toMap(DeliverGoodsDetailsVo::getId, DeliverGoodsDetailsVo::getLogisticsCode));
+        for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
+            List<ArrivalDetailVo> list1 = collect.get(purchaseDetailVo.getId());
+            if (ObjectUtil.isEmpty(list1)) {
+                purchaseDetailVo.setArrivalQuantity(BigDecimal.ZERO);
+                continue;
             }
+
+            //赋值发货单号
+            for (ArrivalDetailVo arrivalDetailVo : list1) {
+                arrivalDetailVo.setLogisticsCode(dgdMap.get(arrivalDetailVo.getDeliverGoodsDetailsId()));
+            }
+
+            //到货数量求和
+            BigDecimal arrCount = list1.stream()
+                    .map(ArrivalDetailVo::getCount)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            purchaseDetailVo.setArrivalQuantity(arrCount);
+            purchaseDetailVo.setArrivalDetailList(list1);
         }
-        //赋值退货信息
-        List<PurchaseBack> list1 = purchaseBackService.list(q -> q.eq(PurchaseBack::getPurchaseId, purchaseId));
-        if (ObjectUtil.isNotEmpty(list1)) {
-            List<Long> ids = list1.stream().map(PurchaseBack::getId).collect(Collectors.toList());
-            Map<Long, List<PurchaseBackDetails>> longListMap = purchaseBackDetailsService.mapKGroup(PurchaseBackDetails::getPurchaseDetailsId, q -> q.in(PurchaseBackDetails::getPurchaseBackId, ids));
-
-            for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
-                List<PurchaseBackDetails> purchaseBackDetails = longListMap.get(purchaseDetailVo.getId());
-                List<PurchaseBackDetailsVo> purchaseBackDetailsVos = BeanUtil.copyToList(purchaseBackDetails, PurchaseBackDetailsVo.class);
-
-                if (ObjectUtil.isEmpty(purchaseBackDetailsVos)) {
-                    purchaseDetailVo.setPurchaseBackQuantity(BigDecimal.ZERO);
-                    continue;
-                }
-                //退货数量求和
-                BigDecimal backCount = purchaseBackDetailsVos.stream()
-                        .map(PurchaseBackDetails::getQuantity)
-                        .reduce(BigDecimal.ZERO, BigDecimal::add);
-                purchaseDetailVo.setPurchaseBackQuantity(backCount);
-                //已退数量
-                BigDecimal returnedQuantityCount = BigDecimal.ZERO;
-                //赋值已退货数量(已经出库的数量)
-                List<Long> pbdIds = purchaseBackDetailsVos.stream().map(PurchaseBackDetails::getId).collect(Collectors.toList());
-                Map<Long, StockWaitDetails> stockWaitDetailsMap = stockWaitDetailsService.mapKEntity(StockWaitDetails::getBusinessDetailsId,
-                        q -> q.in(StockWaitDetails::getBusinessDetailsId, pbdIds));
-                for (PurchaseBackDetailsVo purchaseBackDetailsVo : purchaseBackDetailsVos) {
-                    StockWaitDetails stockWaitDetails = stockWaitDetailsMap.get(purchaseBackDetailsVo.getId());
-                    BigDecimal returnedQuantity = BigDecimal.ZERO;
-                    if (ObjectUtil.isNotEmpty(stockWaitDetails)) {
-                        returnedQuantity = stockWaitDetails.getReceiptQuantity();
-                    }
-                    returnedQuantityCount = returnedQuantityCount.add(returnedQuantity);
-                    purchaseBackDetailsVo.setReturnedQuantity(returnedQuantity);
+    }
 
-                }
-                purchaseDetailVo.setPurchaseReturnedQuantity(returnedQuantityCount);
+    /**
+     * 赋值退货信息
+     */
+    private void setPurchaseBackInfo(Long purchaseId, List<PurchaseDetailVo> purchaseDetailVoList) {
+        List<PurchaseBack> list = purchaseBackService.list(q -> q.eq(PurchaseBack::getPurchaseId, purchaseId));
 
-                purchaseDetailVo.setPurchaseBackDetailsList(purchaseBackDetailsVos);
+        if (ObjectUtil.isEmpty(list)) {
+            return;
+        }
+
+        List<Long> ids = list.stream().map(PurchaseBack::getId).collect(Collectors.toList());
+        Map<Long, List<PurchaseBackDetails>> longListMap = purchaseBackDetailsService.mapKGroup(PurchaseBackDetails::getPurchaseDetailsId, q -> q.in(PurchaseBackDetails::getPurchaseBackId, ids));
+
+        //赋值已退货数量(已经出库的数量)
+        List<Long> pbdIds = longListMap.values().stream().flatMap(Collection::stream).map(PurchaseBackDetails::getId).collect(Collectors.toList());
+
+        Map<Long, StockWaitDetails> stockWaitDetailsMap = stockWaitDetailsService.mapKEntity(StockWaitDetails::getBusinessDetailsId,
+                q -> q.in(StockWaitDetails::getBusinessDetailsId, pbdIds));
+
+        for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
+            List<PurchaseBackDetails> purchaseBackDetails = longListMap.get(purchaseDetailVo.getId());
+            List<PurchaseBackDetailsVo> purchaseBackDetailsVos = BeanUtil.copyToList(purchaseBackDetails, PurchaseBackDetailsVo.class);
+
+            if (ObjectUtil.isEmpty(purchaseBackDetailsVos)) {
+                purchaseDetailVo.setPurchaseBackQuantity(BigDecimal.ZERO);
+                continue;
             }
+
+            //退货数量求和
+            BigDecimal backCount = purchaseBackDetailsVos.stream()
+                    .map(PurchaseBackDetails::getQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            purchaseDetailVo.setPurchaseBackQuantity(backCount);
+
+            //已退数量
+            BigDecimal returnedQuantityCount = BigDecimal.ZERO;
+
+            for (PurchaseBackDetailsVo purchaseBackDetailsVo : purchaseBackDetailsVos) {
+                StockWaitDetails stockWaitDetails = stockWaitDetailsMap.get(purchaseBackDetailsVo.getId());
+                BigDecimal returnedQuantity = BigDecimal.ZERO;
+                if (ObjectUtil.isNotEmpty(stockWaitDetails)) {
+                    returnedQuantity = stockWaitDetails.getReceiptQuantity();
+                }
+                returnedQuantityCount = returnedQuantityCount.add(returnedQuantity);
+                purchaseBackDetailsVo.setReturnedQuantity(returnedQuantity);
+            }
+
+            purchaseDetailVo.setPurchaseReturnedQuantity(returnedQuantityCount);
+            purchaseDetailVo.setPurchaseBackDetailsList(purchaseBackDetailsVos);
+        }
+
+    }
+
+    private void setWarehousingInfo(List<PurchaseDetailVo> purchaseDetailVoList, List<DeliverGoodsDetailsVo> list) {
+
+        if (purchaseDetailVoList.isEmpty()) {
+            return;
         }
-        //赋值已入库记录
+
+        //对入库已入库列表赋值发货单号
+        Map<Long, String> dgdMap = list.stream().collect(Collectors.toMap(DeliverGoodsDetailsVo::getId, DeliverGoodsDetailsVo::getLogisticsCode));
+
+        Set<Long> idSet = purchaseDetailVoList.stream().map(BaseIdPo::getId).collect(Collectors.toSet());
+        List<ArrivalDetail> arrivalDetailList = arrivalDetailService.list(q -> q.in(ArrivalDetail::getPurchaseDetailId, idSet));
+        Map<Long, List<ArrivalDetail>> arrivalDetailMap = arrivalDetailList.stream().collect(Collectors.groupingBy(ArrivalDetail::getPurchaseDetailId));
+
+        Set<Long> arrivalDetailIdSet = arrivalDetailList.stream().map(BaseIdPo::getId).collect(Collectors.toSet());
+        List<StockWaitDetails> stockWaitDetailsList = arrivalDetailIdSet.isEmpty() ? Collections.emptyList()
+                : stockWaitDetailsService.list(q -> q.in(StockWaitDetails::getBusinessDetailsId, arrivalDetailIdSet));
+
+        Set<Long> stockWaitIdSet = stockWaitDetailsList.stream().map(StockWaitDetails::getStockWaitId).collect(Collectors.toSet());
+        List<StockJournal> stockJournalList = stockWaitIdSet.isEmpty() ? Collections.emptyList()
+                : stockJournalService.list(q -> q.in(StockJournal::getBusinessId, stockWaitIdSet));
+
+        Set<Long> stockWaitDetailsIdSet = stockWaitDetailsList.stream().map(BaseIdPo::getId).collect(Collectors.toSet());
+        List<StockJournalDetails> stockJournalDetailsList = stockWaitDetailsIdSet.isEmpty() ? Collections.emptyList()
+                : stockJournalDetailsService.list(q -> q.in(StockJournalDetails::getBusinessDetailsId, stockWaitDetailsIdSet));
+
+        //Set<Long> stockJournalIdSet = stockJournalDetailsList.stream().map(StockJournalDetails::getStockJournalId).collect(Collectors.toSet());
+        //List<StockJournal> stockJournalList1 = stockJournalService.list(q -> q.in(StockJournal::getId, stockJournalIdSet));
+
+        Map<Long, StockJournal> stockJournalMap = stockJournalList.stream().collect(Collectors.toMap(StockJournal::getId, item -> item));
+
+        Map<Long, Map<Long, StockWaitDetails>> stockWaitDetailsMap = stockWaitDetailsList.stream()
+                .collect(Collectors.groupingBy(StockWaitDetails::getStockWaitId,
+                        Collectors.toMap(StockWaitDetails::getProductId, item -> item)));
+
+        Map<Long, ArrivalDetail> arrivalDetailIdMap = arrivalDetailList.stream().collect(Collectors.toMap(BaseIdPo::getId, item -> item));
+
+        List<ArrivalStockRecordsDetails> arrivalStockRecordsDetailsList = stockWaitDetailsIdSet.isEmpty() ? Collections.emptyList()
+                : arrivalStockRecordsDetailsService.list(q -> q.in(ArrivalStockRecordsDetails::getBusinessDetailsId, stockWaitDetailsIdSet));
+        Map<Long, List<ArrivalStockRecordsDetails>> arrivalStockRecordsDetailsMap = arrivalStockRecordsDetailsList.stream()
+                .collect(Collectors.groupingBy(ArrivalStockRecordsDetails::getBusinessDetailsId));
+
+        Set<Long> arrivalStockRecordsDetailsIdSet = arrivalStockRecordsDetailsList.stream().map(ArrivalStockRecordsDetails::getId).collect(Collectors.toSet());
+        List<QualityDetails> qualityDetailsList = arrivalStockRecordsDetailsIdSet.isEmpty() ? Collections.emptyList()
+                : qualityDetailsService.list(q -> q.in(QualityDetails::getArrivalStockRecordsDetailsId, arrivalStockRecordsDetailsIdSet));
+
         for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
+
             //根据采购明细id查到货明细
-            List<ArrivalDetail> arrivalDetailList = arrivalDetailService.list(q -> q.eq(ArrivalDetail::getPurchaseDetailId, purchaseDetailVo.getId()));
-            if (ObjectUtil.isEmpty(arrivalDetailList)) {
+            List<ArrivalDetail> tempArrivalDetailList = arrivalDetailMap.get(purchaseDetailVo.getId());
+            if (ObjectUtil.isEmpty(tempArrivalDetailList)) {
                 continue;
             }
+
             //根据到货明细id查待入库明细
-            List<Long> arrivalDetailIds = arrivalDetailList.stream().map(ArrivalDetail::getId).collect(Collectors.toList());
-            List<StockWaitDetails> stockWaitDetailsList = stockWaitDetailsService.list(q -> q.in(StockWaitDetails::getBusinessDetailsId, arrivalDetailIds));
-            if (ObjectUtil.isEmpty(stockWaitDetailsList)) {
+            Set<Long> arrivalDetailIds = tempArrivalDetailList.stream().map(ArrivalDetail::getId).collect(Collectors.toSet());
+            List<StockWaitDetails> tempStockWaitDetailsList = stockWaitDetailsList.stream()
+                    .filter(item -> arrivalDetailIds.contains(item.getBusinessDetailsId()))
+                    .collect(Collectors.toList());
+            if (ObjectUtil.isEmpty(tempStockWaitDetailsList)) {
                 continue;
             }
+
             //根据待入库id查出入库记录
-            List<Long> stockWaitIds = stockWaitDetailsList.stream().map(StockWaitDetails::getStockWaitId).collect(Collectors.toList());
-            List<Long> stockJournalIds = stockJournalService.listObject(StockJournal::getId, q -> q.in(StockJournal::getBusinessId, stockWaitIds));
+            List<Long> stockWaitIds = tempStockWaitDetailsList.stream().map(StockWaitDetails::getStockWaitId).collect(Collectors.toList());
+            List<Long> stockJournalIds = stockJournalList.stream()
+                    .filter(item -> stockWaitIds.contains(item.getBusinessId()))
+                    .map(StockJournal::getId)
+                    .collect(Collectors.toList());
             if (ObjectUtil.isEmpty(stockJournalIds)) {
                 continue;
             }
 
             //查出产品的出入库明细
-            List<Long> swdIds = stockWaitDetailsList.stream().map(StockWaitDetails::getId).collect(Collectors.toList());
-            List<StockJournalDetails> stockJournalDetailsList = stockJournalDetailsService.list(q -> q
-                    .in(StockJournalDetails::getBusinessDetailsId, swdIds)
-            );
-            if (ObjectUtil.isEmpty(stockJournalDetailsList)) {
+            List<Long> swdIds = tempStockWaitDetailsList.stream().map(StockWaitDetails::getId).collect(Collectors.toList());
+            List<StockJournalDetailsVo> stockJournalDetailsVos = stockJournalDetailsList.stream()
+                    .filter(item -> swdIds.contains(item.getBusinessDetailsId()))
+                    .map(item -> BeanUtil.toBean(item, StockJournalDetailsVo.class))
+                    .collect(Collectors.toList());
+
+            if (ObjectUtil.isEmpty(stockJournalDetailsVos)) {
                 continue;
             }
-            List<StockJournalDetailsVo> stockJournalDetailsVos = BeanUtil.copyToList(stockJournalDetailsList, StockJournalDetailsVo.class);
-            //对入库已入库列表赋值发货单号
-            Map<Long, String> dgdMap = list.stream().collect(Collectors.toMap(DeliverGoodsDetailsVo::getId, DeliverGoodsDetailsVo::getLogisticsCode));
 
             for (StockJournalDetailsVo stockJournalDetailsVo : stockJournalDetailsVos) {
-                StockJournal stockJournal = stockJournalService.getById(stockJournalDetailsVo.getStockJournalId());
-                StockWaitDetails stockWaitDetails = stockWaitDetailsService.getOne(q -> q
-                        .eq(StockWaitDetails::getStockWaitId, stockJournal.getBusinessId())
-                        .eq(StockWaitDetails::getProductId, stockJournalDetailsVo.getProductId())
-                );
+
+                StockJournal stockJournal = stockJournalMap.get(stockJournalDetailsVo.getStockJournalId());
+
+                StockWaitDetails stockWaitDetails = stockWaitDetailsMap.get(stockJournal.getBusinessId()).get(stockJournalDetailsVo.getProductId());
 
                 Long businessDetailsId = stockWaitDetails.getBusinessDetailsId();
-                ArrivalDetail arrivalDetail1 = arrivalDetailService.getById(businessDetailsId);
+                ArrivalDetail arrivalDetail1 = arrivalDetailIdMap.get(businessDetailsId);
 
                 //赋值发货单号
                 stockJournalDetailsVo.setLogisticsCode(dgdMap.get(arrivalDetail1.getDeliverGoodsDetailsId()));
 
                 //赋值是否有次品
                 stockJournalDetailsVo.setIsReject(0);
-                List<ArrivalStockRecordsDetails> arrivalStockRecordsDetailsList = arrivalStockRecordsDetailsService.list(
-                        q -> q.eq(ArrivalStockRecordsDetails::getBusinessDetailsId, stockWaitDetails.getId()));
-                if (ObjectUtil.isNotEmpty(arrivalStockRecordsDetailsList)) {
-                    List<Long> ids = arrivalStockRecordsDetailsList.stream().map(ArrivalStockRecordsDetails::getId)
-                            .collect(Collectors.toList());
-                    List<QualityDetails> qualityDetailsList = qualityDetailsService.list(
-                            q -> q.in(QualityDetails::getArrivalStockRecordsDetailsId, ids));
-                    if (ObjectUtil.isNotEmpty(qualityDetailsList)) {
-                        BigDecimal noQualityCount = qualityDetailsList.stream().map(QualityDetails::getDisqualificationQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
-                        if (noQualityCount.compareTo(BigDecimal.ZERO) > 0) {
-                            stockJournalDetailsVo.setIsReject(1);
-                        }
+
+                List<ArrivalStockRecordsDetails> tempArrivalStockRecordsDetailsList = arrivalStockRecordsDetailsMap.get(stockWaitDetails.getId());
+
+                if (ObjectUtil.isNotEmpty(tempArrivalStockRecordsDetailsList)) {
+
+                    List<Long> ids = tempArrivalStockRecordsDetailsList.stream().map(ArrivalStockRecordsDetails::getId).collect(Collectors.toList());
+
+                    BigDecimal noQualityCount = qualityDetailsList.stream()
+                            .filter(item -> ids.contains(item.getArrivalStockRecordsDetailsId()))
+                            .map(QualityDetails::getDisqualificationQuantity)
+                            .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                    if (noQualityCount.compareTo(BigDecimal.ZERO) > 0) {
+                        stockJournalDetailsVo.setIsReject(1);
                     }
+
                 }
+
                 //赋值入库状态
                 stockJournalDetailsVo.setReceiptStatus(1);//部分入库
+
                 if (stockWaitDetails.getReceiptQuantity().compareTo(stockWaitDetails.getQuantity()) >= 0) {
                     stockJournalDetailsVo.setReceiptStatus(2);//完全入库
                 }
+
             }
 
             //对数量求和
-            BigDecimal receiptQuantity = stockJournalDetailsList.stream()
+            BigDecimal receiptQuantity = stockJournalDetailsVos.stream()
                     .map(StockJournalDetails::getQuantity)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
+
             //赋值数量和记录
             purchaseDetailVo.setReceiptQuantity(receiptQuantity);
             purchaseDetailVo.setReceiptList(stockJournalDetailsVos);
         }
-
-        result.setPurchaseDetailVoList(purchaseDetailVoList);
-        return result;
-    }
-
-    @Override
-    public List<DeliverGoodsDetailsVo> listDeliverGoodsDetails(IWrapper<DeliverGoods> wrapper) {
-        return baseMapper.listDeliverGoodsDetails(wrapper);
     }
 
 }