Selaa lähdekoodia

已采购数量 只取审批中和审批通过的

yzc 1 vuosi sitten
vanhempi
commit
80e43ab33b

+ 3 - 1
hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseDetailMapper.java

@@ -1,8 +1,8 @@
 package com.fjhx.purchase.mapper.purchase;
 
-import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
@@ -40,4 +40,6 @@ public interface PurchaseDetailMapper extends BaseMapper<PurchaseDetail> {
      */
     List<PurchaseDetailVo> getSumCountInDataResourceIds(@Param("dataResourceIds")List<Long> dataResourceIds);
 
+    List<PurchaseDetailVo> getDetail(@Param("ew") IWrapper<PurchaseDetail> wrapper);
+
 }

+ 9 - 5
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseDetailService.java

@@ -1,11 +1,12 @@
 package com.fjhx.purchase.service.purchase;
 
-import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
-import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
-import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailSelectDto;
 import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailDto;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailSelectDto;
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
+import com.ruoyi.common.core.service.BaseService;
+import com.ruoyi.common.utils.wrapper.IWrapper;
 
 import java.util.List;
 
@@ -57,5 +58,8 @@ public interface PurchaseDetailService extends BaseService<PurchaseDetail> {
      */
     List<PurchaseDetailVo> getSumCountInDataResourceIds(List<Long> dataResourceIds);
 
-
+    /**
+     * 获取明细 关联到主表
+     */
+    List<PurchaseDetailVo> getDetail(IWrapper<PurchaseDetail> wrapper);
 }

+ 5 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseDetailServiceImpl.java

@@ -83,4 +83,9 @@ public class PurchaseDetailServiceImpl extends ServiceImpl<PurchaseDetailMapper,
         return baseMapper.getSumCountInDataResourceIds(dataResourceIds);
     }
 
+    @Override
+    public List<PurchaseDetailVo> getDetail(IWrapper<PurchaseDetail> wrapper){
+        return baseMapper.getDetail(wrapper);
+    }
+
 }

+ 8 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -15,7 +15,9 @@ import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.item.util.excel.util.ExcelUtil;
+import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
 import com.fjhx.purchase.entity.subscribe.SubscribeDetailExcelBo;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailDto;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailSelectDto;
@@ -167,7 +169,12 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
         //赋值已采购数量
         List<Long> subscribeDetailIds = list.stream().map(SubscribeDetail::getId).collect(Collectors.toList());
         if (ObjectUtil.isNotEmpty(subscribeDetailIds)) {
-            List<PurchaseDetail> purchaseDetailsList = purchaseDetailService.list(q -> q.in(PurchaseDetail::getSubscribeDetailId, subscribeDetailIds));
+            List<PurchaseDetailVo> purchaseDetailsList = purchaseDetailService.getDetail(IWrapper.<PurchaseDetail>getWrapper()
+                    .in("pd", PurchaseDetail::getSubscribeDetailId, subscribeDetailIds)
+                    .in("p", Purchase::getPurchaseStatus, 10, 30)
+            );
+
+
             Map<Long, List<PurchaseDetail>> purchaseDetailsMap = purchaseDetailsList.stream().collect(Collectors.groupingBy(PurchaseDetail::getSubscribeDetailId));
             for (SubscribeDetailVo subscribeDetailVo : list) {
                 List<PurchaseDetail> purchaseDetails = purchaseDetailsMap.get(subscribeDetailVo.getId());

+ 7 - 0
hx-purchase/src/main/resources/mapper/purchase/PurchaseDetailMapper.xml

@@ -58,4 +58,11 @@
         GROUP BY
             data_resource_id
     </select>
+    <select id="getDetail" resultType="com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo">
+        SELECT
+            *
+        FROM
+            purchase p
+                LEFT JOIN purchase_detail pd ON pd.purchase_id = p.id
+    </select>
 </mapper>

+ 29 - 24
hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlowByWdly.java

@@ -41,8 +41,6 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -168,27 +166,7 @@ public class PurchaseFlowByWdly extends FlowDelegate {
     public void end(Long flowId, Long businessId, JSONObject submitData) {
         //修改申购明细状态
         List<PurchaseDetail> purchaseDetailList = purchaseDetailService.list(Wrappers.<PurchaseDetail>query().lambda().eq(PurchaseDetail::getPurchaseId, businessId));
-        Map<Long, PurchaseDetail> purchaseDetailMap = purchaseDetailList.stream().collect(Collectors.toMap(PurchaseDetail::getSubscribeDetailId, Function.identity()));
-        List<Long> subscribeDetailIds = purchaseDetailList.stream().map(PurchaseDetail::getSubscribeDetailId).collect(Collectors.toList());
-        List<SubscribeDetail> subscribeDetails = subscribeDetailService.listByIds(subscribeDetailIds);
-        for (SubscribeDetail subscribeDetail : subscribeDetails) {
-            //获取申购明细下的所有采购记录 计算已采购数
-            List<PurchaseDetail> purchaseDetails = purchaseDetailService.list(q -> q.eq(PurchaseDetail::getSubscribeDetailId,
-                    subscribeDetail.getId()).eq(PurchaseDetail::getBussinessId, subscribeDetail.getBussinessId()));
-            BigDecimal count = purchaseDetails.stream()
-                    .map(PurchaseDetail::getCount)
-                    .reduce(BigDecimal.ZERO, BigDecimal::add);
-//            PurchaseDetail purchaseDetail = purchaseDetailMap.get(subscribeDetail.getId());
-            if (count.compareTo(subscribeDetail.getCount()) >= 0) {
-                //修改为已采购
-                subscribeDetail.setStatus(SubscribeDetailStatusEnum.PURCHASED.getKey());
-            } else {
-                //修改为部分采购
-                subscribeDetail.setStatus(SubscribeDetailStatusEnum.LITT_PAID_AMOUNT.getKey());
-            }
-        }
-        subscribeDetailService.updateBatchById(subscribeDetails);
-//        purchaseFlow.end(flowId,businessId,submitData);
+        updateSubscribeStatus(businessId);
 
         //通过业务ID查询采购数据
         Purchase purchase = purchaseService.getById(businessId);
@@ -196,7 +174,6 @@ public class PurchaseFlowByWdly extends FlowDelegate {
             throw new ServiceException("采购单不存在");
         }
         //查询采购产品
-//        List<PurchaseDetail> purchaseDetailList = purchaseDetailService.list(Wrappers.<PurchaseDetail>query().lambda().eq(PurchaseDetail::getPurchaseId,businessId));
         List<ContractProduct> upContractProduct = new ArrayList<>();
         for (PurchaseDetail p : purchaseDetailList) {
             if (ObjectUtils.isNotEmpty(p.getDataResourceId()) &&
@@ -250,6 +227,8 @@ public class PurchaseFlowByWdly extends FlowDelegate {
                 .set(BasePo::getUpdateTime, new Date())
                 .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
         );
+        //修改申购明细状态
+        updateSubscribeStatus(businessId);
     }
 
     /**
@@ -320,4 +299,30 @@ public class PurchaseFlowByWdly extends FlowDelegate {
         }
     }
 
+    /**
+     * 更新申购明细的待采购状态
+     */
+    private void updateSubscribeStatus(Long businessId) {
+        //修改申购明细状态
+        List<PurchaseDetail> purchaseDetailList = purchaseDetailService.list(Wrappers.<PurchaseDetail>query().lambda().eq(PurchaseDetail::getPurchaseId, businessId));
+        List<Long> subscribeDetailIds = purchaseDetailList.stream().map(PurchaseDetail::getSubscribeDetailId).collect(Collectors.toList());
+        List<SubscribeDetail> subscribeDetails = subscribeDetailService.listByIds(subscribeDetailIds);
+        for (SubscribeDetail subscribeDetail : subscribeDetails) {
+            //获取申购明细下的所有采购记录 计算已采购数
+            List<PurchaseDetail> purchaseDetails = purchaseDetailService.list(q -> q.eq(PurchaseDetail::getSubscribeDetailId,
+                    subscribeDetail.getId()).eq(PurchaseDetail::getBussinessId, subscribeDetail.getBussinessId()));
+            BigDecimal count = purchaseDetails.stream()
+                    .map(PurchaseDetail::getCount)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            if (count.compareTo(subscribeDetail.getCount()) >= 0) {
+                //修改为已采购
+                subscribeDetail.setStatus(SubscribeDetailStatusEnum.PURCHASED.getKey());
+            } else {
+                //修改为部分采购
+                subscribeDetail.setStatus(SubscribeDetailStatusEnum.LITT_PAID_AMOUNT.getKey());
+            }
+        }
+        subscribeDetailService.updateBatchById(subscribeDetails);
+    }
+
 }