|
@@ -2,6 +2,9 @@ package com.fjhx.purchase.service.pay.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fjhx.account.entity.account.po.AccountPayment;
|
|
@@ -32,9 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@@ -77,9 +78,26 @@ public class PayServiceImpl extends ServiceImpl<PayMapper, Pay> implements PaySe
|
|
|
public Page<PayVo> getPage(PaySelectDto dto) {
|
|
|
IWrapper<Pay> wrapper = getWrapper();
|
|
|
wrapper.orderByDesc("p", Pay::getCreateTime);
|
|
|
+
|
|
|
+ //供应商ID
|
|
|
+ wrapper.eq("p",Pay::getSupplyId,dto.getSupplyId());
|
|
|
+
|
|
|
+ //付款方式
|
|
|
+ wrapper.eq("p",Pay::getPayType,dto.getPayType());
|
|
|
+
|
|
|
+ //申请金额
|
|
|
+ wrapper.ge("p",Pay::getAmount,dto.getStartAmount());
|
|
|
+ wrapper.le("p",Pay::getAmount,dto.getEndAmount());
|
|
|
+
|
|
|
+ //申请时间
|
|
|
+ wrapper.ge("p", Pay::getCreateTime,dto.getBeginTime());
|
|
|
+ wrapper.le("p",Pay::getCreateTime,dto.getEndTime());
|
|
|
+
|
|
|
+ //审批状态
|
|
|
if (StringUtils.isNotEmpty(dto.getStatus())) {
|
|
|
wrapper.eq("p", Pay::getStatus, dto.getStatus());
|
|
|
}
|
|
|
+ //付款状态
|
|
|
if (StringUtils.isNotEmpty(dto.getPayStatus())) {
|
|
|
wrapper.eq("p", Pay::getPayStatus, dto.getPayStatus());
|
|
|
}
|
|
@@ -188,4 +206,47 @@ public class PayServiceImpl extends ServiceImpl<PayMapper, Pay> implements PaySe
|
|
|
this.removeById(id);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 采购付款统计
|
|
|
+ * @param dto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> payStatistics(PaySelectDto dto) {
|
|
|
+ List<Integer> statusList = Arrays.asList(0,1,2);//付款状态 0未付款 1部分付款 2已付款'
|
|
|
+
|
|
|
+ //存放付款统计数据
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+
|
|
|
+ //存放付款统计详情列表
|
|
|
+ List<Map<String, Object>> list = new ArrayList<>();
|
|
|
+
|
|
|
+ //查询付款详情
|
|
|
+ QueryWrapper<Pay> query = Wrappers.query();
|
|
|
+ query.select("ifnull(pay_status,-1) payStatus,ifnull(amount,0) amount");
|
|
|
+ query.groupBy("pay_status");
|
|
|
+ List<Pay> pays = baseMapper.selectList(query);
|
|
|
+ Map<String, List<Pay>> payMap = pays.stream().collect(Collectors.groupingBy(Pay::getPayStatus));
|
|
|
+
|
|
|
+ //计算合计金额
|
|
|
+ BigDecimal amount = pays.stream().map(Pay::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ map.put("amount",amount);
|
|
|
+
|
|
|
+ //赋值每个付款状态的金额
|
|
|
+ for (Integer status : statusList) {
|
|
|
+ //赋初始值
|
|
|
+ Map<String,Object> statusMap = new HashMap<>();
|
|
|
+ statusMap.put("payStatus",status);
|
|
|
+ statusMap.put("payAmount",0);
|
|
|
+ //赋值
|
|
|
+ List<Pay> payList = payMap.get(status);
|
|
|
+ if (CollectionUtils.isNotEmpty(payList)){
|
|
|
+ statusMap.put("payAmount",payList.get(0).getAmount());
|
|
|
+ }
|
|
|
+ list.add(statusMap);
|
|
|
+ }
|
|
|
+ map.put("payList",list);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
}
|