Bladeren bron

Merge remote-tracking branch 'origin/master'

24282 2 jaren geleden
bovenliggende
commit
82ee2247fa

+ 9 - 0
bladex-saas-project/saas-business-tradeerp/src/main/java/com/fjhx/fundAccount/entity/FundAccountIntercourse.java

@@ -3,9 +3,16 @@ package com.fjhx.fundAccount.entity;
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 @Data
 public class FundAccountIntercourse {
+    private Long id;
+    //公司名称
+    private String companyName;
+    private BigDecimal money;
+    private String type;
+
     private String fromFundAccountId;
     /**
      * 对方账号
@@ -17,4 +24,6 @@ public class FundAccountIntercourse {
     private BigDecimal expend;
     //结余
     private BigDecimal surplus;
+
+    List<FundAccountIntercourse> list;
 }

+ 16 - 0
bladex-saas-project/saas-business-tradeerp/src/main/java/com/fjhx/fundAccount/mapper/FundAccountIntercourseMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.fundAccount.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fjhx.fundAccount.entity.FundAccountIntercourse;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.core.tenant.annotation.TenantIgnore;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface FundAccountIntercourseMapper {
+    @TenantIgnore
+    List<FundAccountIntercourse> getIntercourseFunds(@Param("ew") QueryWrapper<Object> wrapper1);
+}

+ 17 - 0
bladex-saas-project/saas-business-tradeerp/src/main/java/com/fjhx/fundAccount/mapper/FundAccountIntercourseMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.fundAccount.mapper.FundAccountIntercourseMapper">
+
+    <select id="getIntercourseFunds" resultType="com.fjhx.fundAccount.entity.FundAccountIntercourse">
+        SELECT
+            t_erp_company_basics.name_chinese company_name,
+            t_erp_fund_account_detail.account_name,
+            t_erp_fund_account_detail.type,
+            t_erp_fund_account_detail.money
+        FROM
+            t_erp_fund_account_detail
+                JOIN t_erp_fund_account ON t_erp_fund_account_detail.from_fund_account_id = t_erp_fund_account.id
+                JOIN t_erp_company_basics on t_erp_fund_account.company_id = t_erp_company_basics.id
+            ${ew.customSqlSegment}
+    </select>
+</mapper>

+ 39 - 33
bladex-saas-project/saas-business-tradeerp/src/main/java/com/fjhx/fundAccount/service/impl/FundAccountIntercourseServiceImpl.java

@@ -9,10 +9,14 @@ import com.fjhx.fundAccount.FundAccountDetail;
 import com.fjhx.fundAccount.entity.FundAccountIntercourse;
 import com.fjhx.fundAccount.entity.MyCompanyBasics;
 import com.fjhx.fundAccount.entity.MyFundAccount;
+import com.fjhx.fundAccount.mapper.FundAccountIntercourseMapper;
 import com.fjhx.fundAccount.service.IFundAccountDetailService;
 import com.fjhx.fundAccount.service.IFundAccountIntercourseService;
 import com.fjhx.fundAccount.service.IFundAccountService;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.AesUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.annotation.AnnotationUtils;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -28,6 +32,9 @@ public class FundAccountIntercourseServiceImpl implements IFundAccountIntercours
     @Autowired
     private ICompanyBasicsService companyBasicsService;
 
+    @Autowired
+    FundAccountIntercourseMapper fundAccountIntercourseMapper;
+
 
     @Override
     public BigDecimal getMoney(int type, List<FundAccountDetail> fundAccountDetailList, FundAccountDetail fundAccountDetail) {
@@ -40,43 +47,42 @@ public class FundAccountIntercourseServiceImpl implements IFundAccountIntercours
 
     @Override
     public List getFundAccountIntercourse() {
-        QueryWrapper<FundAccountDetail> wrapper = Wrappers.query();
-        wrapper.eq("capital_matter ", "45");
-        //所有往来款记录
-        List<FundAccountDetail> fundAccountDetailList = fundAccountDetailService.list(wrapper);
-        //所有往来款记录账户信息
-        List<FundAccount> fundAccounts = fundAccountService.listByIds(fundAccountDetailList.stream().map(FundAccountDetail::getFromFundAccountId).distinct().collect(Collectors.toList()));
-        //所有往来款记录账户对应的公司信息
-        List<CompanyBasics> companyBasicss = companyBasicsService.listByIds(fundAccounts.stream().map(FundAccount::getCompanyId).distinct().collect(Collectors.toList()));
+        QueryWrapper<Object> wrapper1 = Wrappers.query();
+        wrapper1.eq("t_erp_fund_account_detail.capital_matter ", "45");
+        wrapper1.eq("t_erp_fund_account_detail.tenant_id", AuthUtil.getTenantId());
+        List<FundAccountIntercourse> fundAccountIntercourses = fundAccountIntercourseMapper.getIntercourseFunds(wrapper1);
+
+        List<FundAccountIntercourse> data = new ArrayList<>();
+        //根据公司分组
+        Map<String, List<FundAccountIntercourse>> collect = fundAccountIntercourses.stream().collect(Collectors.groupingBy(FundAccountIntercourse::getCompanyName));
+        for (Map.Entry<String, List<FundAccountIntercourse>> entry : collect.entrySet()) {
+            FundAccountIntercourse gs = new FundAccountIntercourse();
+            gs.setCompanyName(entry.getKey());
 
-        //将所有往来款根据账户id分组
-        Map<String, List<FundAccountIntercourse>> fundAccountDetailFromAccountIdList = fundAccountDetailList.stream().map(fundAccountDetail -> {
-            FundAccountIntercourse fundAccountIntercourse = new FundAccountIntercourse();
-            fundAccountIntercourse.setAccountName(fundAccountDetail.getAccountName());
-            fundAccountIntercourse.setIncome(getMoney(1,fundAccountDetailList,fundAccountDetail));
-            fundAccountIntercourse.setExpend(getMoney(2,fundAccountDetailList,fundAccountDetail));
-            fundAccountIntercourse.setSurplus(fundAccountIntercourse.getIncome().subtract(fundAccountIntercourse.getExpend()));
-            fundAccountIntercourse.setFromFundAccountId(fundAccountDetail.getFromFundAccountId());
-            return fundAccountIntercourse;
-        }).collect(Collectors.groupingBy(FundAccountIntercourse::getFromFundAccountId));
+            //根据目标账户分组
+            List<FundAccountIntercourse> value = entry.getValue();
+            Map<String, List<FundAccountIntercourse>> collect1 = value.stream().collect(Collectors.groupingBy(FundAccountIntercourse::getAccountName));
+            for (Map.Entry<String, List<FundAccountIntercourse>> entry1 : collect1.entrySet()) {
+                FundAccountIntercourse mb = new FundAccountIntercourse();
+                mb.setAccountName(entry1.getKey());
 
-        //将所有往来款账户根据公司id分组
-        Map<String, List<MyFundAccount>> fundAccountDetailFromCompanyIdList = fundAccounts.stream().map(fundAccount -> {
-            MyFundAccount myFundAccount = new MyFundAccount();
-            myFundAccount.setName(fundAccount.getName());
-            myFundAccount.setList(fundAccountDetailFromAccountIdList.get(fundAccount.getId()));
-            myFundAccount.setCompanyId(fundAccount.getCompanyId());
-            return myFundAccount;
-        }).collect(Collectors.groupingBy(MyFundAccount::getCompanyId));
+                //根据类型分组1收入2支出
+                Map<String, List<FundAccountIntercourse>> collect2 = entry1.getValue().stream().collect(Collectors.groupingBy(FundAccountIntercourse::getType));
+                BigDecimal income = collect2.get("1")==null?BigDecimal.ZERO:collect2.get("1").stream().map(FundAccountIntercourse::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal expend = collect2.get("2")==null?BigDecimal.ZERO:collect2.get("2").stream().map(FundAccountIntercourse::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal surplus = income.subtract(expend);
 
-        //将往来款所有信息组成树状
-        List<MyCompanyBasics> data = companyBasicss.stream().map(companyBasics -> {
-            MyCompanyBasics myCompanyBasics = new MyCompanyBasics();
-            myCompanyBasics.setCompanyName(companyBasics.getNameChinese());
-            myCompanyBasics.setList(fundAccountDetailFromCompanyIdList.get(companyBasics.getId()));
-            return myCompanyBasics;
-        }).collect(Collectors.toList());
+                mb.setIncome(income);
+                mb.setExpend(expend);
+                mb.setSurplus(surplus);
 
+                List<FundAccountIntercourse> list = gs.getList();
+                list = list == null ? new ArrayList<FundAccountIntercourse>() : list;
+                list.add(mb);
+                gs.setList(list);
+            }
+            data.add(gs);
+        }
         return data;
     }