Jelajahi Sumber

已采购统计修改

yzc 1 tahun lalu
induk
melakukan
8c3f260181

+ 3 - 2
hx-purchase/src/main/java/com/fjhx/purchase/controller/purchase/PurchaseController.java

@@ -39,12 +39,13 @@ public class PurchaseController {
     public Page<PurchaseVo> page(@RequestBody PurchaseSelectDto dto) {
         return purchaseService.getPage(dto);
     }
+
     /**
      * 统计头部
      */
     @PostMapping("/statisticsPurchaseHead")
-    public Map<String,Object> statisticsPurchaseHead() {
-        return purchaseService.statisticsPurchaseHead();
+    public Map<String, Object> statisticsPurchaseHead(@RequestBody PurchaseSelectDto dto) {
+        return purchaseService.statisticsPurchaseHead(dto);
     }
 
     /**

+ 10 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseVo.java

@@ -54,4 +54,14 @@ public class PurchaseVo extends Purchase {
      * 订单号
      */
     private String contractCode;
+
+    /**
+     * 采购数量
+     */
+    private BigDecimal purchaseCount;
+
+    /**
+     * 采购金额
+     */
+    private BigDecimal purchaseMoney;
 }

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

@@ -43,8 +43,15 @@ public interface PurchaseMapper extends BaseMapper<Purchase> {
 
     /**
      * 查询已付款金额
+     *
      * @param wrapper
      * @return
      */
     List<PurchaseDto> paidAmount(@Param("ew") QueryWrapper<Object> wrapper);
+
+
+    /**
+     * 获取采购头部统计
+     */
+    PurchaseVo getPurchaseHead(@Param("ew") IWrapper<Purchase> wrapper);
 }

+ 2 - 3
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseService.java

@@ -2,12 +2,10 @@ package com.fjhx.purchase.service.purchase;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.purchase.dto.PurchaseDto;
-import com.fjhx.purchase.entity.purchase.dto.PurchasePayRecordDto;
 import com.fjhx.purchase.entity.purchase.dto.PurchaseSelectDto;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
 import com.ruoyi.common.core.service.BaseService;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
@@ -88,7 +86,8 @@ public interface PurchaseService extends BaseService<Purchase> {
 
     /**
      * 采购头部统计
+     *
      * @return
      */
-    Map<String,Object> statisticsPurchaseHead();
+    Map<String, Object> statisticsPurchaseHead(PurchaseSelectDto dto);
 }

+ 33 - 34
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java

@@ -107,13 +107,9 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
     private PurchasePayRecordDetailService purchasePayRecordDetailService;
 
     /**
-     * 列表
-     *
-     * @param dto
-     * @return
+     * 分页过滤条件复制
      */
-    @Override
-    public Page<PurchaseVo> getPage(PurchaseSelectDto dto) {
+    private IWrapper<Purchase> getPageWrapper(PurchaseSelectDto dto) {
         IWrapper<Purchase> wrapper = getWrapper();
 
         wrapper.eq("p", Purchase::getPurchaseStatus, dto.getPurchaseStatus());
@@ -128,6 +124,18 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
         wrapper.le("p", Purchase::getCreateTime, dto.getEndTime());// 采购结束时间
 
         wrapper.orderByDesc("p", Purchase::getCreateTime);
+        return wrapper;
+    }
+
+    /**
+     * 列表
+     *
+     * @param dto
+     * @return
+     */
+    @Override
+    public Page<PurchaseVo> getPage(PurchaseSelectDto dto) {
+        IWrapper<Purchase> wrapper = getPageWrapper(dto);
 
         Page<PurchaseVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<PurchaseVo> list = page.getRecords();
@@ -371,7 +379,7 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
         if (StringUtils.isEmpty(supplyId)) {
             throw new ServiceException("供应商ID不能为空");
         }
-        List<Purchase> list = this.list(Wrappers.<Purchase>query().lambda().eq(Purchase::getSupplyId, supplyId).eq(Purchase::getPurchaseStatus, PurchaseStatusEnum.PASS.getKey()).ne(Purchase::getInvoiceType,"0"));
+        List<Purchase> list = this.list(Wrappers.<Purchase>query().lambda().eq(Purchase::getSupplyId, supplyId).eq(Purchase::getPurchaseStatus, PurchaseStatusEnum.PASS.getKey()).ne(Purchase::getInvoiceType, "0"));
         List<Long> ids = list.stream().distinct().map(Purchase::getId).collect(Collectors.toList());
         List<InvoiceDetailsVo> invoiceDetailsList = invoiceDetailsService.getSumMoneyByPurchaseIds(ids);
         Map<Long, BigDecimal> invoiceMap = invoiceDetailsList.stream().collect(Collectors.toMap(InvoiceDetailsVo::getPurchaseId, InvoiceDetailsVo::getSumMoney));
@@ -392,6 +400,7 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
 
         return list;
     }
+
     /**
      * 根据供应商查询无发票的采购合同
      *
@@ -535,12 +544,13 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
 
     /**
      * 批量查询
+     *
      * @param ids
      * @return
      */
     @Override
     public List<Purchase> getListInId(List<Long> ids) {
-        List<Purchase> list = this.list(Wrappers.<Purchase>query().lambda().in(Purchase::getId,ids));
+        List<Purchase> list = this.list(Wrappers.<Purchase>query().lambda().in(Purchase::getId, ids));
         return list;
     }
 
@@ -574,39 +584,28 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
 
     /**
      * 采购头部统计
+     *
      * @return
      */
     @Override
-    public Map<String, Object> statisticsPurchaseHead() {
-        long sumOrderCount = this.count(Wrappers.<Purchase>query().lambda().isNotNull(Purchase::getDataResourceId));
-        long noArrivalOrderCount = this.count(Wrappers.<Purchase>query().lambda().isNotNull(Purchase::getDataResourceId).eq(Purchase::getArrivalStatus,0));
-        long partArrivalOrderCount = this.count(Wrappers.<Purchase>query().lambda().isNotNull(Purchase::getDataResourceId).eq(Purchase::getArrivalStatus,10));
-        long alArrivalOrderCount = this.count(Wrappers.<Purchase>query().lambda().isNotNull(Purchase::getDataResourceId).eq(Purchase::getArrivalStatus,20));
-        BigDecimal sumPurchaseMoney = getSumMoney(-1);
-        BigDecimal noArrivalPurchaseMoney = getSumMoney(0);
-        BigDecimal partArrivalPurchaseMoney = getSumMoney(10);
-        BigDecimal alArrivalPurchaseMoney = getSumMoney(20);
+    public Map<String, Object> statisticsPurchaseHead(PurchaseSelectDto dto) {
+        PurchaseVo sumOrder = baseMapper.getPurchaseHead(getPageWrapper(dto));
+        PurchaseVo noArrivalOrder = baseMapper.getPurchaseHead(getPageWrapper(dto).eq(Purchase::getArrivalStatus, 0));
+        PurchaseVo partArrivalOrder = baseMapper.getPurchaseHead(getPageWrapper(dto).eq(Purchase::getArrivalStatus, 10));
+        PurchaseVo alArrivalOrder = baseMapper.getPurchaseHead(getPageWrapper(dto).eq(Purchase::getArrivalStatus, 20));
+
         //初始化MAP
         Map<String, Object> map = new HashMap<String, Object>() {{
-            put("sumOrderCount", sumOrderCount);
-            put("sumPurchaseMoney", sumPurchaseMoney);
-            put("noArrivalOrderCount", noArrivalOrderCount);
-            put("noArrivalPurchaseMoney", noArrivalPurchaseMoney);
-            put("partArrivalOrderCount",partArrivalOrderCount);
-            put("partArrivalPurchaseMoney", partArrivalPurchaseMoney);
-            put("alArrivalOrderCount", alArrivalOrderCount);
-            put("alArrivalPurchaseMoney", alArrivalPurchaseMoney);
+            put("sumOrderCount", sumOrder.getPurchaseCount());
+            put("sumPurchaseMoney", sumOrder.getPurchaseMoney());
+            put("noArrivalOrderCount", noArrivalOrder.getPurchaseCount());
+            put("noArrivalPurchaseMoney", noArrivalOrder.getPurchaseMoney());
+            put("partArrivalOrderCount", partArrivalOrder.getPurchaseCount());
+            put("partArrivalPurchaseMoney", partArrivalOrder.getPurchaseMoney());
+            put("alArrivalOrderCount", alArrivalOrder.getPurchaseCount());
+            put("alArrivalPurchaseMoney", alArrivalOrder.getPurchaseMoney());
         }};
         return map;
     }
 
-    public BigDecimal getSumMoney(int arrivalStatus){
-        QueryWrapper<Purchase> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("IFNULL(SUM(amount),0) as purchaseMoney");
-        if(arrivalStatus!=-1){
-            queryWrapper.eq("arrival_status",arrivalStatus);
-        }
-        BigDecimal purchaseMoney = (BigDecimal) this.getMap(queryWrapper).getOrDefault("purchaseMoney",BigDecimal.ZERO);
-        return purchaseMoney;
-    }
 }

+ 11 - 7
hx-purchase/src/main/resources/mapper/purchase/PurchaseMapper.xml

@@ -42,13 +42,17 @@
     </select>
 
     <select id="paidAmount" resultType="com.fjhx.purchase.entity.purchase.dto.PurchaseDto">
-        SELECT
-            sum(pd.money) amount,
-            p.currency,
-            pd.purchase_id id
-        FROM
-            pay_detail pd
-                LEFT JOIN pay p ON pd.pay_id = p.id
+        SELECT sum(pd.money)  amount,
+               p.currency,
+               pd.purchase_id id
+        FROM pay_detail pd
+                 LEFT JOIN pay p ON pd.pay_id = p.id
+            ${ew.customSqlSegment}
+    </select>
+    <select id="getPurchaseHead" resultType="com.fjhx.purchase.entity.purchase.vo.PurchaseVo">
+        SELECT IFNULL(count(1), 0)      AS purchaseCount,
+               IFNULL(sum(p.amount), 0) AS purchaseMoney
+        FROM purchase p
             ${ew.customSqlSegment}
     </select>