浏览代码

sql查询分页更新

fyz 11 月之前
父节点
当前提交
080be67113

+ 4 - 18
mjava-lanyun/src/main/java/com/malk/lanyun/controller/TimerController.java

@@ -1,32 +1,17 @@
 package com.malk.lanyun.controller;
 
-import com.alibaba.fastjson.JSON;
-import com.malk.lanyun.entity.ProjectAnalysis;
-import com.alibaba.fastjson.JSON;
 import com.malk.lanyun.entity.ProjectAnalysis;
 import com.malk.lanyun.service.NCService;
 import com.malk.lanyun.service.TimerService;
-import com.malk.server.common.McException;
 import com.malk.server.common.McR;
-import com.malk.service.dingtalk.DDClient;
-import com.malk.service.dingtalk.DDClient_Dedicated;
-import com.malk.utils.UtilDateTime;
-import com.malk.utils.UtilExcel;
-import com.malk.utils.UtilMap;
-import com.malk.utils.UtilString;
-import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * 错误抛出与拦截详见 CatchException
@@ -98,13 +83,14 @@ public class TimerController {
 
     /**
      * 分组查询项目点经营分析报表
+     *
      * @param data 传参年月
      * @return 返回封装McR
      */
     @PostMapping("projectAnalysisGroup")
-    McR<ProjectAnalysis> projectAnalysisGroup(@RequestBody Map<String,Object> data) {
-        List<ProjectAnalysis> projectAnalyses = timerService.projectAnalysisGroup(data);
-        return McR.success(projectAnalyses);
+    McR projectAnalysisGroup(@RequestBody Map<String,Object> data) {
+        Map<String, Object> analysisGroup = timerService.projectAnalysisGroup(data);
+        return McR.success(analysisGroup);
     }
 
 

+ 1 - 1
mjava-lanyun/src/main/java/com/malk/lanyun/service/TimerService.java

@@ -42,7 +42,7 @@ public interface TimerService {
      * 分组求和各项目经营分析
      * @param data 分组条件
      */
-    List<ProjectAnalysis> projectAnalysisGroup(Map<String, Object> data);
+    Map<String, Object> projectAnalysisGroup(Map<String, Object> data);
 
     /**
      * 每日同步各项目分析报表

+ 39 - 15
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/TimerServiceImpl.java

@@ -324,8 +324,8 @@ public class TimerServiceImpl implements TimerService {
 
     @SneakyThrows
     @Override
-    public List<ProjectAnalysis> projectAnalysisGroup(Map<String, Object> data){
-        final String[] sql = {"",""};
+    public  Map<String, Object> projectAnalysisGroup(Map<String, Object> data){
+        final String[] sql = {"","",""};
         int pageStart = (Integer.parseInt(data.get("page").toString()) - 1) * Integer.parseInt(data.get("num").toString());
         int pageEnd = Integer.parseInt(data.get("page").toString()) * Integer.parseInt(data.get("num").toString());
         data.remove("page");
@@ -352,17 +352,6 @@ public class TimerServiceImpl implements TimerService {
                     "FROM " +
                     " lanyun_project_analysis  " +
                     " WHERE 1=1 " ;
-            if (ObjectUtil.isNotNull(data.get("startDate"))) {
-                sql[0] = sql[0] + " AND `month` >= \"" + data.get("startDate") +"\" " ;
-                sql[1] = sql[1] + " AND `month` >= \"" + data.get("startDate") +"\" " ;
-            } else if (ObjectUtil.isNotNull(data.get("endDate"))) {
-                sql[0] = sql[0] + " AND `month` <= \"" + data.get("endDate") +"\" " ;
-                sql[1] = sql[1] + " AND `month` <= \"" + data.get("endDate") +"\" " ;
-            }
-            sql[0] = sql[0] +
-                    " GROUP BY " +
-                    " `month`" +
-                    " order by `month` DESC LIMIT " + pageStart + "," + pageEnd;
             sql[1]= "SELECT " +
                     " '合计' as `month` , " +
                     " sum( predict_income ) predict_income," +
@@ -383,6 +372,25 @@ public class TimerServiceImpl implements TimerService {
                     " SUM( net_profit )/ SUM( income ) net_margin  " +
                     "FROM " +
                     " lanyun_project_analysis  " ;
+            sql[2] = "SELECT " +
+                    " COUNT(*) total_count " +
+                    "FROM " +
+                    " lanyun_project_analysis  " +
+                    " WHERE 1=1 " ;
+            if (ObjectUtil.isNotNull(data.get("startDate"))) {
+                sql[0] = sql[0] + " AND `month` >= \"" + data.get("startDate") +"\" " ;
+                sql[1] = sql[1] + " AND `month` >= \"" + data.get("startDate") +"\" " ;
+                sql[2] = sql[2] + " AND `month` >= \"" + data.get("startDate") +"\" " ;
+            } else if (ObjectUtil.isNotNull(data.get("endDate"))) {
+                sql[0] = sql[0] + " AND `month` <= \"" + data.get("endDate") +"\" " ;
+                sql[1] = sql[1] + " AND `month` <= \"" + data.get("endDate") +"\" " ;
+                sql[2] = sql[2] + " AND `month` <= \"" + data.get("endDate") +"\" " ;
+            }
+            sql[0] = sql[0] +
+                    " GROUP BY " +
+                    " `month`" +
+                    " order by `month` DESC LIMIT " + pageStart + "," + pageEnd;
+
         }else {
             sql[0] = "SELECT " +
                     " `month`," +
@@ -426,7 +434,11 @@ public class TimerServiceImpl implements TimerService {
                     " FROM " +
                     " lanyun_project_analysis  " +
                     " WHERE 1=1 ";
-
+            sql[2] = "SELECT " +
+                    " COUNT(*) total_count " +
+                    " FROM " +
+                    " lanyun_project_analysis  " +
+                    " WHERE 1=1 ";
             if (data.containsKey("startDate") || data.containsKey("endDate")){
                 data.remove("month");
             }
@@ -434,29 +446,41 @@ public class TimerServiceImpl implements TimerService {
                 if (k.equals("low") && ObjectUtil.isNotNull(v)){
                     sql[0] = sql[0] + " AND `net_margin` < 0.05" ;
                     sql[1] = sql[1] + " AND `net_margin` < 0.05" ;
+                    sql[2] = sql[2] + " AND `net_margin` < 0.05" ;
                 } else if (ObjectUtil.isNotNull(v) && k.equals("startDate")) {
                     sql[0] = sql[0] + " AND `month` >= \"" + v +"\"" ;
                     sql[1] = sql[1] + " AND `month` >= \"" + v +"\"" ;
+                    sql[2] = sql[2] + " AND `month` >= \"" + v +"\"" ;
                 } else if (ObjectUtil.isNotNull(v) && k.equals("endDate")) {
                     sql[0] = sql[0] + " AND `month` <= \"" + v +"\"" ;
                     sql[1] = sql[1] + " AND `month` <= \"" + v +"\"" ;
+                    sql[2] = sql[2] + " AND `month` <= \"" + v +"\"" ;
                 } else if (ObjectUtil.isNotNull(v) && !k.equals("low")){
                     sql[0] = sql[0] + " AND `" + k +"` = \"" + v +"\"" ;
                     sql[1] = sql[1] + " AND `" + k +"` = \"" + v +"\"" ;
+                    sql[2] = sql[2] + " AND `" + k +"` = \"" + v +"\"" ;
                 }
             });
             sql[1] = sql[1] +  " GROUP BY `month` ";
             sql[0] = sql[0] +  "  order by `month` DESC LIMIT " + pageStart + "," + pageEnd;
+            sql[2] = sql[2] +  " GROUP BY `month` ";
+
         }
 //        Class.forName(driver);
 //        Connection connection = DriverManager.getConnection(url, username, password);
 //        Statement statement = connection.createStatement();
         List<ProjectAnalysis> analysisList = jdbcTemplate.query(sql[0], new ProjectAnalysisMapper());
         List<ProjectAnalysis> analysisSum= jdbcTemplate.query(sql[1], new ProjectAnalysisMapper());
+        List<Map<String, Object>> result = jdbcTemplate.queryForList(sql[2]);
+        int totalCount = 0;
+        if (result.size() >0) {
+            totalCount = Integer.parseInt(result.get(0).get("total_count").toString());
+        }
         analysisList.add(analysisSum.get(0));
         log.info("results:{}",analysisList);
+        Map<String, Object> map = UtilMap.map("totalCount, data", totalCount, analysisList);
         if (ObjectUtil.isNotNull(analysisList)&&analysisList.size()>0){
-            return analysisList;
+            return map;
         }
         else {
             return null;