Browse Source

添加 往来款统计接口

yzc 2 years ago
parent
commit
a4a7095025

+ 40 - 0
bladex-saas-project/saas-business-tradeerp/src/main/java/com/fjhx/fundAccount/controller/FundAccountIntercourseController.java

@@ -0,0 +1,40 @@
+package com.fjhx.fundAccount.controller;
+
+import com.fjhx.fundAccount.service.IFundAccountIntercourseService;
+import lombok.AllArgsConstructor;
+import org.springblade.common.constant.ApiConstant;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.*;
+
+/**
+ * 资金账户往来款 控制器
+ *
+ * @author BladeX
+ * @since 2023-03-01
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping(ApiConstant.Project.SAAS_BUSINESS_TRADEERP_REQUEST_PREFIX + "/fundaccountintercourse")
+public class FundAccountIntercourseController extends BladeController {
+
+    IFundAccountIntercourseService fundAccountIntercourseService;
+
+    /**
+     * 往来款列表
+     *
+     * @param condition 查询条件
+     * @return
+     */
+    @PostMapping("/list")
+    public R getList(@RequestBody Map<String, Object> condition) {
+        return R.list(fundAccountIntercourseService.getFundAccountIntercourse());
+    }
+
+
+}

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

@@ -0,0 +1,17 @@
+package com.fjhx.fundAccount.entity;
+
+import lombok.Data;
+
+@Data
+public class FundAccountIntercourse {
+    /**
+     * 对方账号
+     */
+    private String accountName;
+    //收入
+    private double income;
+    //支出
+    private double expend;
+    //结余
+    private double surplus;
+}

+ 26 - 0
bladex-saas-project/saas-business-tradeerp/src/main/java/com/fjhx/fundAccount/service/IFundAccountIntercourseService.java

@@ -0,0 +1,26 @@
+package com.fjhx.fundAccount.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fjhx.company.entity.Company;
+import com.fjhx.fundAccount.FundAccount;
+import com.fjhx.fundAccount.FundAccountDetail;
+import com.fjhx.fundAccount.entity.FundAccountIntercourse;
+
+import java.util.*;
+
+public interface IFundAccountIntercourseService {
+    /**
+     * 根据资产账户id和对方账户名获取流水统计 type 1 收入 2 支出
+     *
+     * @param type
+     * @param fromFundAccountId
+     * @param toAccountName
+     * @return
+     */
+    double getMoney(int type, String fromFundAccountId, String toAccountName);
+
+    /**
+     * 往来款统计*/
+    List getFundAccountIntercourse();
+
+}

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

@@ -0,0 +1,101 @@
+package com.fjhx.fundAccount.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fjhx.company.entity.Company;
+import com.fjhx.company.service.ICompanyService;
+import com.fjhx.fundAccount.FundAccount;
+import com.fjhx.fundAccount.FundAccountDetail;
+import com.fjhx.fundAccount.entity.FundAccountIntercourse;
+import com.fjhx.fundAccount.service.IFundAccountDetailService;
+import com.fjhx.fundAccount.service.IFundAccountIntercourseService;
+import com.fjhx.fundAccount.service.IFundAccountService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+public class FundAccountIntercourseServiceImpl implements IFundAccountIntercourseService {
+    @Autowired
+    private IFundAccountDetailService fundAccountDetailService;
+    @Autowired
+    private IFundAccountService fundAccountService;
+    @Autowired
+    private ICompanyService companyService;
+
+
+    @Override
+    public double getMoney(int type, String fromFundAccountId, String toAccountName) {
+        QueryWrapper wrapper2 = new QueryWrapper();
+        wrapper2.select("sum(money) as money_sum");
+        wrapper2.eq("type", type);
+        wrapper2.eq("capital_matter ", "45");
+        wrapper2.eq("from_fund_account_id ", fromFundAccountId);
+        wrapper2.eq("account_name", toAccountName);
+        Map map = fundAccountDetailService.getMap(wrapper2);
+        return map == null ? 0 : Double.parseDouble(map.get("money_sum").toString());
+    }
+
+    @Override
+    public List getFundAccountIntercourse() {
+        List data = new ArrayList();
+        Map<String, Set<String>> companyMap = new HashMap();
+
+        QueryWrapper wrapper = new QueryWrapper();
+        wrapper.select("distinct from_fund_account_id");
+        wrapper.eq("capital_matter ", "45");
+        //获取所有有往来款的资产账户对应的公司并分组
+        List<FundAccountDetail> list = fundAccountDetailService.list(wrapper);
+        for (FundAccountDetail fundAccountDetail : list) {
+            List<FundAccountIntercourse> fundAccountIntercourses = new ArrayList<>();
+            String fromFundAccountId = fundAccountDetail.getFromFundAccountId();
+            FundAccount byId = fundAccountService.getById(fromFundAccountId);
+
+            Set accountSet = companyMap.get(byId.getCompanyId());
+            if (accountSet == null) {
+                accountSet = new HashSet<>();
+            }
+            accountSet.add(fromFundAccountId);
+            companyMap.put(byId.getCompanyId(), accountSet);
+        }
+
+        for (Map.Entry<String, Set<String>> entry : companyMap.entrySet()) {
+            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
+            Company company = companyService.getById(entry.getKey());
+            Map map0 = new HashMap();
+            map0.put("companyName", company.getNameChinese());
+
+            //遍历公司下的资产账户
+            List list1 = new ArrayList();
+            for (String fromFundAccountId : entry.getValue()) {
+                FundAccount byId = fundAccountService.getById(fromFundAccountId);
+                //------------------------------------------
+                List<FundAccountIntercourse> fundAccountIntercourses1 = new ArrayList<>();
+
+                QueryWrapper wrapper00 = new QueryWrapper();
+                wrapper00.eq("capital_matter ", "45");
+                wrapper00.eq("from_fund_account_id ", fromFundAccountId);
+                wrapper00.groupBy("account_name");
+                //根据资金账户查找往来账户
+                List<FundAccountDetail> list00 = fundAccountDetailService.list(wrapper00);
+                for (FundAccountDetail fundAccountDetail00 : list00) {
+                    FundAccountIntercourse fundAccountIntercourse = new FundAccountIntercourse();
+                    fundAccountIntercourse.setAccountName(fundAccountDetail00.getAccountName());
+                    fundAccountIntercourse.setIncome(getMoney(1, fromFundAccountId, fundAccountDetail00.getAccountName()));
+                    fundAccountIntercourse.setExpend(getMoney(2, fromFundAccountId, fundAccountDetail00.getAccountName()));
+                    fundAccountIntercourse.setSurplus(fundAccountIntercourse.getIncome() - fundAccountIntercourse.getExpend());
+                    fundAccountIntercourses1.add(fundAccountIntercourse);
+                }
+                //------------------------------------------
+                Map map = new HashMap();
+                map.put("name", byId.getName());//资产账号名
+                map.put("list", fundAccountIntercourses1);//对方账号列表
+                list1.add(map);
+            }
+            map0.put("list", list1);
+            data.add(map0);
+        }
+        return data;
+    }
+
+}