Administrator 1 жил өмнө
parent
commit
228cf7997a

+ 10 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/statistics/StatisticsController.java

@@ -43,4 +43,14 @@ public class StatisticsController extends BaseController {
         AjaxResult loanMonth = statisticsService.loanMonth(loanApplication);
         return loanMonth;
     }
+
+    /**
+     * 后台首页统计季度数据
+     */
+    @PreAuthorize("@ss.hasPermi('system:statistics:loanQuarter')")
+    @PostMapping("/loanQuarter")
+    public AjaxResult loanQuarter(@RequestBody LoanApplication loanApplication) {
+        AjaxResult loanMonth = statisticsService.loanQuarter(loanApplication);
+        return loanMonth;
+    }
 }

+ 5 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java

@@ -54,6 +54,11 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return dateTimeNow(YYYY_MM_DD);
     }
 
+    public static String getYear()
+    {
+        return dateTimeNow(YYYY);
+    }
+
     public static final String getTime()
     {
         return dateTimeNow(YYYY_MM_DD_HH_MM_SS);

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/statistics/IStatisticsService.java

@@ -21,4 +21,11 @@ public interface IStatisticsService {
      * @return
      */
    AjaxResult loanMonth(LoanApplication loanApplication);
+
+    /**
+     * 季度数据
+     * @param loanApplication
+     * @return
+     */
+   AjaxResult loanQuarter(LoanApplication loanApplication);
 }

+ 113 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/statistics/impl/StatisticsServiceImpl.java

@@ -5,6 +5,7 @@ import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.system.domain.loan.LoanApplication;
 import com.ruoyi.system.mapper.LoanApplicationMapper;
 import com.ruoyi.system.service.statistics.IStatisticsService;
+import org.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -230,6 +231,118 @@ public class StatisticsServiceImpl implements IStatisticsService {
         return AjaxResult.success(map);
     }
 
+    /**
+     * 季度数据
+     *
+     * @param loanApplication
+     * @return
+     */
+    @Override
+    public AjaxResult loanQuarter(LoanApplication loanApplication) {
+        Map<String, Object> map = new HashMap<>(5);
+        Map<String, Object> params = loanApplication.getParams();
+        params.put("beginTime", DateUtils.getYear());
+        //查询本年度所有数据
+        loanApplication.setType(ONE);
+        loanApplication.setParams(params);
+        List<LoanApplication> loanApplications = loanApplicationMapper.selectLoanApplicationListStatistics(loanApplication);
+        List<Double> allList = new ArrayList();
+        allList.add(0D);
+        allList.add(0D);
+
+        List<Double> oneList = new ArrayList();
+        oneList.add(0D);
+        oneList.add(0D);
+
+        List<Double> twoList = new ArrayList();
+        twoList.add(0D);
+        twoList.add(0D);
+
+        List<Double> thrList = new ArrayList();
+        thrList.add(0D);
+        thrList.add(0D);
+
+        List<Double> forList = new ArrayList();
+        forList.add(0D);
+        forList.add(0D);
+
+        //获取每个季度对应的数据
+        if (loanApplications != null && loanApplications.size() > 0) {
+            SimpleDateFormat sdf = new SimpleDateFormat("MM");
+            //根据贷款申请状态先进行分组
+            Map<String, List<LoanApplication>> loanApplicationType = loanApplications.stream().collect(Collectors.groupingBy(LoanApplication::getLoanApplicationType));
+            List<LoanApplication> loanApplicationsTwo = loanApplicationType.get(TWO);
+            if (loanApplicationsTwo != null && loanApplicationsTwo.size() > 0) {
+                //总申请贷款金额
+                double sumDFK = loanApplicationsTwo.stream().mapToDouble(LoanApplication::getApplicationAmount).sum();
+                allList.add(0, sumDFK);
+                Map<Integer, List<LoanApplication>> collectMap = loanApplicationsTwo.stream().collect(Collectors.groupingBy(e -> (Integer.parseInt(sdf.format(e.getApplicationTime())) - 1) / 3 + 1));
+                if (collectMap != null && collectMap.size() > 0) {
+                    for (int i = 1; i < 5; i++) {
+                        List<LoanApplication> loanApplicationsI = collectMap.get(i);
+                        if (loanApplicationsI != null && loanApplicationsI.size() > 0) {
+                            double sum = loanApplicationsI.stream().mapToDouble(LoanApplication::getApplicationAmount).sum();
+                            switch (i) {
+                                case 1:
+                                    oneList.add(0, sum);
+                                    break;
+                                case 2:
+                                    twoList.add(0, sum);
+                                    break;
+                                case 3:
+                                    thrList.add(0, sum);
+                                    break;
+                                case 4:
+                                    forList.add(0, sum);
+                                    break;
+                                default:
+                                    break;
+                            }
+                        }
+                    }
+                }
+            }
+            List<LoanApplication> loanApplicationsFor = loanApplicationType.get(FOR);
+            if (loanApplicationsFor != null && loanApplicationsFor.size() > 0) {
+                //放贷金额
+                double sumYFK = loanApplicationsFor.stream().mapToDouble(LoanApplication::getApplicationAmount).sum();
+                allList.add(1, sumYFK);
+                Map<Integer, List<LoanApplication>> collectMap = loanApplicationsFor.stream().collect(Collectors.groupingBy(e -> (Integer.parseInt(sdf.format(e.getApplicationTime())) - 1) / 3 + 1));
+                if (collectMap != null && collectMap.size() > 0) {
+                    for (int i = 1; i < 5; i++) {
+                        List<LoanApplication> loanApplicationsI = collectMap.get(i);
+                        if (loanApplicationsI != null && loanApplicationsI.size() > 0) {
+                            double sum = loanApplicationsI.stream().mapToDouble(LoanApplication::getApplicationAmount).sum();
+                            switch (i) {
+                                case 1:
+                                    oneList.add(1, sum);
+                                    break;
+                                case 2:
+                                    twoList.add(1, sum);
+                                    break;
+                                case 3:
+                                    thrList.add(1, sum);
+                                    break;
+                                case 4:
+                                    forList.add(1, sum);
+                                    break;
+                                default:
+                                    break;
+                            }
+                        }
+                    }
+                }
+            }
+
+        }
+        map.put("all", allList);
+        map.put("one", oneList);
+        map.put("two", twoList);
+        map.put("thr", thrList);
+        map.put("for", forList);
+        return AjaxResult.success(map);
+    }
+
     //计算两个数的百分比和是上升还是下降
     public static Map<String, String> getNumPt(double a, double b, DecimalFormat df) {
         Map<String, String> map = new HashMap<>(2);