|
@@ -0,0 +1,498 @@
|
|
|
+package com.huyi.service.common.report.controller;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.huyi.service.common.report.service.ReportCreditService;
|
|
|
+import com.keao.tianhu.starter.mybatis.plus.entity.QueryRequest;
|
|
|
+import com.tianhu.common.core.utils.AmtUtil;
|
|
|
+import com.tianhu.common.core.utils.CommonUtil;
|
|
|
+import com.tianhu.common.core.utils.DateUtils;
|
|
|
+import com.tianhu.common.core.web.controller.BaseController;
|
|
|
+import com.tianhu.common.core.web.domain.AjaxResult;
|
|
|
+import com.tianhu.common.security.service.TokenService;
|
|
|
+import com.tianhu.system.api.domain.SysUser;
|
|
|
+import com.tianhu.system.api.model.LoginUser;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.GetMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * 统计管理 -- 融信
|
|
|
+ * @author dudm@minpay.cc
|
|
|
+ * 2021-08-30
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@RequestMapping("/report/credit")
|
|
|
+public class ReportCreditController extends BaseController {
|
|
|
+ @Autowired
|
|
|
+ private TokenService tokenService;
|
|
|
+ @Autowired
|
|
|
+ private ReportCreditService reportCreditService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 企业类型 00平台
|
|
|
+ */
|
|
|
+ private static String COMPANYTYPE_TERRACE = "00";
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 企业类型 01核心企业
|
|
|
+ */
|
|
|
+ private static String COMPANYTYPE_CORE = "01";
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 企业类型 02供应商
|
|
|
+ */
|
|
|
+ private static String COMPANYTYPE_SUPPLIER = "02";
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 企业类型 03资金方
|
|
|
+ */
|
|
|
+ private static String COMPANYTYPE_MANAGEMENT = "03";
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询企业持有融信额度
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/getCreditLineAll")
|
|
|
+ public AjaxResult getCreditLineAll()
|
|
|
+ {
|
|
|
+ //获取当前企业的编号
|
|
|
+ LoginUser userInfo = tokenService.getLoginUser();
|
|
|
+ SysUser use = userInfo.getSysUser();
|
|
|
+ Map<String,String> map = new HashMap<>();
|
|
|
+ //获取企业
|
|
|
+ String companyId = use.getCompanyId();
|
|
|
+ //获取企业类型
|
|
|
+ String type = use.getCompanyType();
|
|
|
+ //融信额度
|
|
|
+ String allAmount = "0";
|
|
|
+ if(COMPANYTYPE_TERRACE.equals(type)){
|
|
|
+ //平台
|
|
|
+ allAmount = reportCreditService.getCreditLineAll(map);
|
|
|
+ }else if(COMPANYTYPE_CORE.equals(type)){
|
|
|
+ //核心企业
|
|
|
+ map.put("coreCompanyId", companyId);
|
|
|
+ allAmount = reportCreditService.getCreditLineAll(map);
|
|
|
+ }else if(COMPANYTYPE_SUPPLIER.equals(type)){
|
|
|
+ //供应商
|
|
|
+ map.put("supplierCompanyId", companyId);
|
|
|
+ allAmount = reportCreditService.getSupplierCreditLineAll(map);
|
|
|
+ }else if(COMPANYTYPE_MANAGEMENT.equals(type)){
|
|
|
+ //资金方
|
|
|
+ map.put("managementCompanyId", companyId);
|
|
|
+ allAmount = reportCreditService.getCreditLineAll(map);
|
|
|
+ }
|
|
|
+ Map m = new HashMap();
|
|
|
+ m.put("allAmount",allAmount);
|
|
|
+ return AjaxResult.success(m);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 企业融资中额度
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/getAvailableBalance")
|
|
|
+ public AjaxResult getAvailableBalance()
|
|
|
+ {
|
|
|
+ //获取当前企业的编号
|
|
|
+ LoginUser userInfo = tokenService.getLoginUser();
|
|
|
+ SysUser use = userInfo.getSysUser();
|
|
|
+ Map<String,String> map = new HashMap<>();
|
|
|
+ //获取企业
|
|
|
+ String companyId = use.getCompanyId();
|
|
|
+ //获取企业类型
|
|
|
+ String type = use.getCompanyType();
|
|
|
+ if(COMPANYTYPE_CORE.equals(type)){
|
|
|
+ //核心企业
|
|
|
+ map.put("coreCompanyId", companyId);
|
|
|
+ }else if(COMPANYTYPE_SUPPLIER.equals(type)){
|
|
|
+ //供应商
|
|
|
+ map.put("supplierCompanyId", companyId);
|
|
|
+ }else if(COMPANYTYPE_MANAGEMENT.equals(type)){
|
|
|
+ //资金方
|
|
|
+ map.put("managementCompanyId", companyId);
|
|
|
+ }
|
|
|
+ String allAmount = reportCreditService.getAvailableBalance(map);
|
|
|
+ Map m = new HashMap();
|
|
|
+ m.put("allAmount",allAmount);
|
|
|
+ return AjaxResult.success(m);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 企业已融资额度
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/getFinancedBalance")
|
|
|
+ public AjaxResult getFinancedBalance()
|
|
|
+ {
|
|
|
+ //获取当前企业的编号
|
|
|
+ LoginUser userInfo = tokenService.getLoginUser();
|
|
|
+ SysUser use = userInfo.getSysUser();
|
|
|
+ Map<String,String> map = new HashMap<>();
|
|
|
+ //获取企业
|
|
|
+ String companyId = use.getCompanyId();
|
|
|
+ //获取企业类型
|
|
|
+ String type = use.getCompanyType();
|
|
|
+ if(COMPANYTYPE_CORE.equals(type)){
|
|
|
+ //核心企业
|
|
|
+ map.put("coreCompanyId", companyId);
|
|
|
+ }else if(COMPANYTYPE_SUPPLIER.equals(type)){
|
|
|
+ //供应商
|
|
|
+ map.put("supplierCompanyId", companyId);
|
|
|
+ }else if(COMPANYTYPE_MANAGEMENT.equals(type)){
|
|
|
+ //资金方
|
|
|
+ map.put("managementCompanyId", companyId);
|
|
|
+ }
|
|
|
+ String allAmount = reportCreditService.getFinancedBalance(map);
|
|
|
+ Map m = new HashMap();
|
|
|
+ m.put("allAmount",allAmount);
|
|
|
+ return AjaxResult.success(m);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 企业融信30天到期额度
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/getExpiredBalance")
|
|
|
+ public AjaxResult getExpiredBalance()
|
|
|
+ {
|
|
|
+ //获取当前企业的编号
|
|
|
+ LoginUser userInfo = tokenService.getLoginUser();
|
|
|
+ SysUser use = userInfo.getSysUser();
|
|
|
+ Map<String,String> map = new HashMap<>();
|
|
|
+ //获取企业
|
|
|
+ String companyId = use.getCompanyId();
|
|
|
+ //获取企业类型
|
|
|
+ String type = use.getCompanyType();
|
|
|
+ //开始时间 当天
|
|
|
+ String startDate = DateUtils.dateTimeNow("yyyy-MM-dd");
|
|
|
+ //结束时间 30后
|
|
|
+ String endDate = DateUtils.getFetureDate(30);
|
|
|
+ map.put("startDate",startDate);
|
|
|
+ map.put("endDate",endDate);
|
|
|
+ //融信额度
|
|
|
+ String allAmount = "0";
|
|
|
+ if(COMPANYTYPE_TERRACE.equals(type)){
|
|
|
+ //平台
|
|
|
+ allAmount = reportCreditService.getCreditLineAll(map);
|
|
|
+ }else if(COMPANYTYPE_CORE.equals(type)){
|
|
|
+ //核心企业
|
|
|
+ map.put("coreCompanyId", companyId);
|
|
|
+ allAmount = reportCreditService.getCreditLineAll(map);
|
|
|
+ }else if(COMPANYTYPE_SUPPLIER.equals(type)){
|
|
|
+ //供应商
|
|
|
+ map.put("supplierCompanyId", companyId);
|
|
|
+ allAmount = reportCreditService.getSupplierCreditLineAll(map);
|
|
|
+ }else if(COMPANYTYPE_MANAGEMENT.equals(type)){
|
|
|
+ //资金方
|
|
|
+ map.put("managementCompanyId", companyId);
|
|
|
+ allAmount = reportCreditService.getCreditLineAll(map);
|
|
|
+ }
|
|
|
+ Map m = new HashMap();
|
|
|
+ m.put("allAmount",allAmount);
|
|
|
+ return AjaxResult.success(m);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询核心企业融信授权额度 -- 饼图
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/getCoreCreditLine")
|
|
|
+ public AjaxResult getCoreCreditLine()
|
|
|
+ {
|
|
|
+ //获取当前企业的编号
|
|
|
+ LoginUser userInfo = tokenService.getLoginUser();
|
|
|
+ SysUser use = userInfo.getSysUser();
|
|
|
+ Map<String,String> map = new HashMap<>();
|
|
|
+ //获取企业
|
|
|
+ String companyId = use.getCompanyId();
|
|
|
+ //获取企业类型
|
|
|
+ String type = use.getCompanyType();
|
|
|
+// //融信额度
|
|
|
+// String allAmount = "0";
|
|
|
+// //已用融信
|
|
|
+// String availableAmount = "0";
|
|
|
+ if(COMPANYTYPE_CORE.equals(type)){
|
|
|
+ //核心企业
|
|
|
+ map.put("coreCompanyId", companyId);
|
|
|
+ }
|
|
|
+ //融信额度
|
|
|
+ String allAmount = reportCreditService.getCreditLineAll(map);
|
|
|
+ //已用融信
|
|
|
+ String availableAmount = reportCreditService.getAvailableBalance(map);
|
|
|
+ //可用融信
|
|
|
+ String subAmount = AmtUtil.subtract(allAmount,availableAmount);
|
|
|
+ //返回图形数组
|
|
|
+ List list = new ArrayList();
|
|
|
+ //已用额度图形对象
|
|
|
+ Map availableMap = new HashMap();
|
|
|
+ availableMap.put("name","已用");
|
|
|
+ availableMap.put("value",availableAmount);
|
|
|
+ list.add(availableMap);
|
|
|
+ //可用额度图形对象
|
|
|
+ Map subMap = new HashMap();
|
|
|
+ subMap.put("name","可用");
|
|
|
+ subMap.put("value",subAmount);
|
|
|
+ list.add(subMap);
|
|
|
+ return AjaxResult.success(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询企业渠道融信授权额度 -- 列表
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/getCreditLineList")
|
|
|
+ public AjaxResult getCreditLineList(QueryRequest request)
|
|
|
+ {
|
|
|
+ //获取当前企业的编号
|
|
|
+ LoginUser userInfo = tokenService.getLoginUser();
|
|
|
+ SysUser use = userInfo.getSysUser();
|
|
|
+ Map<String,String> map = new HashMap<>();
|
|
|
+ //获取企业
|
|
|
+ String companyId = use.getCompanyId();
|
|
|
+ //获取企业类型
|
|
|
+ String type = use.getCompanyType();
|
|
|
+ if(COMPANYTYPE_CORE.equals(type)){
|
|
|
+ //核心企业
|
|
|
+ map.put("coreCompanyId", companyId);
|
|
|
+ }
|
|
|
+ IPage<Map> list = reportCreditService.getCreditLineList(map,request);
|
|
|
+ for (Map map1 : list.getRecords()) {
|
|
|
+ //渠道id
|
|
|
+ String managementCompanyId = CommonUtil.objToString(map1.get("managementCompanyId"));
|
|
|
+ //已用额度
|
|
|
+ String availableAmount = CommonUtil.objToString(map1.get("allAmount"));
|
|
|
+ map1.put("availableAmount",availableAmount);
|
|
|
+ Map availableMap = new HashMap();
|
|
|
+ map.put("managementCompanyId", managementCompanyId);
|
|
|
+ //总额度
|
|
|
+ String allAmount = reportCreditService.getCreditLineGroup(map);
|
|
|
+ map1.put("allAmount",allAmount);
|
|
|
+ //可用融信
|
|
|
+ String subAmount = AmtUtil.subtract(allAmount,availableAmount);
|
|
|
+ map1.put("subAmount",subAmount);
|
|
|
+ }
|
|
|
+ return AjaxResult.success(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询企业渠道融信开立数量 -- 列表
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/getCreditLineNumList")
|
|
|
+ public AjaxResult getCreditLineNumList(QueryRequest request)
|
|
|
+ {
|
|
|
+ //获取当前企业的编号
|
|
|
+ LoginUser userInfo = tokenService.getLoginUser();
|
|
|
+ SysUser use = userInfo.getSysUser();
|
|
|
+ Map<String,String> map = new HashMap<>();
|
|
|
+ //获取企业
|
|
|
+ String companyId = use.getCompanyId();
|
|
|
+ //获取企业类型
|
|
|
+ String type = use.getCompanyType();
|
|
|
+ if(COMPANYTYPE_CORE.equals(type)){
|
|
|
+ //核心企业
|
|
|
+ map.put("coreCompanyId", companyId);
|
|
|
+ }
|
|
|
+ IPage<Map> list = reportCreditService.getCreditLineNumList(map,request);
|
|
|
+ return AjaxResult.success(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 融资开立月度统计 -- 柱状图
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/financeRecordMonth")
|
|
|
+ public AjaxResult financeRecordMonth(){
|
|
|
+ //获取当前企业的编号
|
|
|
+ LoginUser userInfo = tokenService.getLoginUser();
|
|
|
+ SysUser use = userInfo.getSysUser();
|
|
|
+ //企业id
|
|
|
+ String companyId = use.getCompanyId();
|
|
|
+ //获取企业类型
|
|
|
+ String type = use.getCompanyType();
|
|
|
+ //默认当年
|
|
|
+ String year = DateUtils.getDate().substring(0,4);
|
|
|
+ //月份集合
|
|
|
+ List<String> dateList = getMonth();
|
|
|
+ //数据集合
|
|
|
+ List<Map> dataList = new ArrayList<>();
|
|
|
+ //开立额度
|
|
|
+ List<String> data = new ArrayList<>();
|
|
|
+ for (String date : dateList) {
|
|
|
+ date = year.concat("-").concat(date).replace("月","");
|
|
|
+ Map map = new HashMap();
|
|
|
+ if(COMPANYTYPE_CORE.equals(type)){
|
|
|
+ //核心企业
|
|
|
+ map.put("coreCompanyId", companyId);
|
|
|
+ }
|
|
|
+ map.put("date",date);
|
|
|
+ //报销所含项目
|
|
|
+ String amt = reportCreditService.financeRecordMonth(map);
|
|
|
+ data.add(amt);
|
|
|
+ }
|
|
|
+ //开立额度数据对象
|
|
|
+ Map dataMap = new HashMap();
|
|
|
+ dataMap.put("name","开立额度");
|
|
|
+ dataMap.put("data",data);
|
|
|
+ dataList.add(dataMap);
|
|
|
+ //还款额度
|
|
|
+ List<String> returnData = new ArrayList<>();
|
|
|
+ for (String date : dateList) {
|
|
|
+ date = year.concat("-").concat(date).replace("月","");
|
|
|
+ Map map = new HashMap();
|
|
|
+ if(COMPANYTYPE_CORE.equals(type)){
|
|
|
+ //核心企业
|
|
|
+ map.put("coreCompanyId", companyId);
|
|
|
+ }
|
|
|
+ map.put("returnDate",date);
|
|
|
+ map.put("applyStatus","01");
|
|
|
+ //报销所含项目
|
|
|
+ String amt = reportCreditService.financeRecordMonth(map);
|
|
|
+ returnData.add(amt);
|
|
|
+ }
|
|
|
+ //开立额度数据对象
|
|
|
+ Map returnDataMap = new HashMap();
|
|
|
+ returnDataMap.put("name","还款额度");
|
|
|
+ returnDataMap.put("data",returnData);
|
|
|
+ dataList.add(returnDataMap);
|
|
|
+ Map result = new HashMap();
|
|
|
+ result.put("dataList",dataList);
|
|
|
+ result.put("dateList",dateList);
|
|
|
+ return AjaxResult.success(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 融资开立最近30天统计 -- 柱状图
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/financeRecord")
|
|
|
+ public AjaxResult financeRecord(){
|
|
|
+ //获取当前企业的编号
|
|
|
+ LoginUser userInfo = tokenService.getLoginUser();
|
|
|
+ SysUser use = userInfo.getSysUser();
|
|
|
+ //企业id
|
|
|
+ String companyId = use.getCompanyId();
|
|
|
+ //获取企业类型
|
|
|
+ String type = use.getCompanyType();
|
|
|
+ //默认当年
|
|
|
+ //月份集合
|
|
|
+ List<String> dateList = findDaysStr(DateUtils.getPastDate(30),DateUtils.dateTimeNow("yyyy-MM-dd"));
|
|
|
+ //数据集合
|
|
|
+ List<Map> dataList = new ArrayList<>();
|
|
|
+ //开立额度
|
|
|
+ List<String> data = new ArrayList<>();
|
|
|
+ for (String date : dateList) {
|
|
|
+ Map map = new HashMap();
|
|
|
+ if(COMPANYTYPE_CORE.equals(type)){
|
|
|
+ //核心企业
|
|
|
+ map.put("coreCompanyId", companyId);
|
|
|
+ }
|
|
|
+ map.put("date",date);
|
|
|
+ //报销所含项目
|
|
|
+ String amt = reportCreditService.financeRecordMonth(map);
|
|
|
+ data.add(amt);
|
|
|
+ }
|
|
|
+ //开立额度数据对象
|
|
|
+ Map dataMap = new HashMap();
|
|
|
+ dataMap.put("name","开立额度");
|
|
|
+ dataMap.put("data",data);
|
|
|
+ dataList.add(dataMap);
|
|
|
+ //还款额度
|
|
|
+ List<String> returnData = new ArrayList<>();
|
|
|
+ for (String date : dateList) {
|
|
|
+ Map map = new HashMap();
|
|
|
+ if(COMPANYTYPE_CORE.equals(type)){
|
|
|
+ //核心企业
|
|
|
+ map.put("coreCompanyId", companyId);
|
|
|
+ }
|
|
|
+ map.put("returnDate",date);
|
|
|
+ map.put("applyStatus","01");
|
|
|
+ //报销所含项目
|
|
|
+ String amt = reportCreditService.financeRecordMonth(map);
|
|
|
+ returnData.add(amt);
|
|
|
+ }
|
|
|
+ //还款额度数据对象
|
|
|
+ Map returnDataMap = new HashMap();
|
|
|
+ returnDataMap.put("name","还款额度");
|
|
|
+ returnDataMap.put("data",returnData);
|
|
|
+ dataList.add(returnDataMap);
|
|
|
+ //未开立额度
|
|
|
+ List<String> closeData = new ArrayList<>();
|
|
|
+ for (String date : dateList) {
|
|
|
+ Map map = new HashMap();
|
|
|
+ if(COMPANYTYPE_CORE.equals(type)){
|
|
|
+ //核心企业
|
|
|
+ map.put("coreCompanyId", companyId);
|
|
|
+ }
|
|
|
+ map.put("returnDate",date);
|
|
|
+ map.put("status","00");
|
|
|
+ //报销所含项目
|
|
|
+ String amt = reportCreditService.financeRecordMonth(map);
|
|
|
+ closeData.add(amt);
|
|
|
+ }
|
|
|
+ //未开立额度数据对象
|
|
|
+ Map closeDataMap = new HashMap();
|
|
|
+ closeDataMap.put("name","未开立额度");
|
|
|
+ closeDataMap.put("data",closeData);
|
|
|
+ dataList.add(closeDataMap);
|
|
|
+ Map result = new HashMap();
|
|
|
+ result.put("dataList",dataList);
|
|
|
+ result.put("dateList",dateList);
|
|
|
+ return AjaxResult.success(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取月份集合
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<String> getMonth(){
|
|
|
+ List<String> dateList = new ArrayList<>();
|
|
|
+ //循环添加所有月份
|
|
|
+ for(int i = 1; i < 13; i++){
|
|
|
+ dateList.add(i + "月");
|
|
|
+ }
|
|
|
+ return dateList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取某时间段内的每一天
|
|
|
+ * @param begintTime 开始日期
|
|
|
+ * @param endTime 结束日期
|
|
|
+ * @return
|
|
|
+ * @throws ParseException
|
|
|
+ */
|
|
|
+ public static List<String> findDaysStr(String begintTime, String endTime) {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Date dBegin = null;
|
|
|
+ Date dEnd = null;
|
|
|
+ try {
|
|
|
+ dBegin = sdf.parse(begintTime);
|
|
|
+ dEnd = sdf.parse(endTime);
|
|
|
+ } catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ List<String> daysStrList = new ArrayList<String>();
|
|
|
+ daysStrList.add(sdf.format(dBegin));
|
|
|
+ Calendar calBegin = Calendar.getInstance();
|
|
|
+ calBegin.setTime(dBegin);
|
|
|
+ Calendar calEnd = Calendar.getInstance();
|
|
|
+ calEnd.setTime(dEnd);
|
|
|
+ while (dEnd.after(calBegin.getTime())) {
|
|
|
+ calBegin.add(Calendar.DAY_OF_MONTH, 1);
|
|
|
+ String dayStr = sdf.format(calBegin.getTime());
|
|
|
+ daysStrList.add(dayStr);
|
|
|
+ }
|
|
|
+ return daysStrList;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+
|
|
|
+ System.out.println(findDaysStr(DateUtils.getPastDate(30),DateUtils.dateTimeNow("yyyy-MM-dd")));
|
|
|
+ }
|
|
|
+}
|