Quellcode durchsuchen

各项目经营分析报表NC取值

fyz vor 5 Monaten
Ursprung
Commit
9a530511c1

+ 11 - 0
mjava-lanyun/src/main/java/com/malk/lanyun/controller/TimerController.java

@@ -215,4 +215,15 @@ public class TimerController {
     public void testNC(){
         ncService.getProjectOperate();
     }
+    /**
+     * 分组查询项目点经营分析报表
+     *
+     * @param data 传参年月
+     * @return 返回封装McR
+     */
+    @PostMapping("testProjectAnalysisGroup")
+    McR testProjectAnalysisGroup(@RequestBody Map<String,Object> data) {
+        Map<String, Object> analysisGroup = timerService.testProjectAnalysisGroup(data);
+        return McR.success(analysisGroup);
+    }
 }

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

@@ -105,4 +105,11 @@ public interface TimerService {
      * @param
      */
     void updateDailyPrice(String formInstId);
+
+    /**
+     * 查询正式数据库NC测试表
+     * @param data
+     * @return
+     */
+    Map<String, Object> testProjectAnalysisGroup(Map<String, Object> data);
 }

Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 1
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/NCServiceImpl.java


+ 184 - 5
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/TimerServiceImpl.java

@@ -1199,8 +1199,187 @@ public class TimerServiceImpl implements TimerService {
             }
         }
     }
-}
-//实际金额小计
-//numberField_lwk4dwfe
-//采购金额小计
-//numberField_lr383i48
+
+    @Override
+    public Map<String, Object> testProjectAnalysisGroup(Map<String, Object> data) {
+
+        final String[] sql = {"","","","","",""};
+        /*分页*/
+        int pageStart = (parseInt(data.get("page").toString()) - 1) * (parseInt(data.get("num").toString())-1);
+        int pageSize = parseInt(data.get("num").toString()) - 1;
+        log.info("pageStart:{}",pageStart);
+        log.info("pageEnd:{}",pageSize);
+        data.remove("page");
+        data.remove("num");
+        if (!data.containsKey("month")){
+            /*sql获取第一层按月求和数据*/
+            sql[0] = "SELECT " +
+                    " `month`, " +
+                    " sum( predict_income ) predict_income," +
+                    " NULL as project_name, " +
+                    " SUM( `open` ) `open`, " +
+                    " SUM( income ) income, " +
+                    " SUM( person ) person, " +
+                    " SUM( person_cost ) person_cost, " +
+                    " SUM( material ) material, " +
+                    " SUM( other_cost ) other_cost, " +
+                    " SUM( cost_sum ) cost_sum, " +
+                    " SUM( taxes ) taxes, " +
+                    " SUM( gross_profit ) gross_profit, " +
+                    " CONCAT(ROUND(SUM( gross_profit )/ SUM( income )*100,2),'%') gross_margin, " +
+                    " SUM( overhead ) overhead, " +
+                    " SUM( corporate_income_tax ) corporate_income_tax, " +
+                    " SUM( net_profit ) net_profit, " +
+                    " CONCAT(ROUND(SUM( net_profit )/ SUM( income )*100,2),'%') net_margin  " +
+                    "FROM " +
+                    " lanyun_project_analysis  " +
+                    " WHERE 1=1 " ;
+            /*sql获取第一层合计数据*/
+            sql[1]= "SELECT " +
+                    " '总合计' as `month` , " +
+                    " sum( predict_income ) predict_income," +
+                    " NULL as project_name, " +
+                    " SUM( `open` ) `open`, " +
+                    " SUM( income ) income, " +
+                    " SUM( person ) person, " +
+                    " SUM( person_cost ) person_cost, " +
+                    " SUM( material ) material, " +
+                    " SUM( other_cost ) other_cost, " +
+                    " SUM( cost_sum ) cost_sum, " +
+                    " SUM( taxes ) taxes, " +
+                    " SUM( gross_profit ) gross_profit, " +
+                    " CONCAT(ROUND(SUM( gross_profit )/ SUM( income )*100,2),'%') gross_margin, " +
+                    " SUM( overhead ) overhead, " +
+                    " SUM( corporate_income_tax ) corporate_income_tax, " +
+                    " SUM( net_profit ) net_profit, " +
+                    " CONCAT(ROUND(SUM( net_profit )/ SUM( income )*100,2),'%') net_margin  " +
+                    "FROM " +
+                    " lanyun_project_analysis  " +
+                    "WHERE 1=1 " ;
+            /*sql获取第一层数据总数*/
+            sql[2] = "SELECT " +
+                    " COUNT(*) total_count  " +
+                    "FROM " +
+                    " ( SELECT `month` 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 + "," + pageSize;
+            sql[2] = sql[2] +
+                    "  GROUP BY `month` ) t1 ";
+            log.info("sql[0]:{}",sql[0]);
+            log.info("sql[1]:{}",sql[1]);
+        }else {
+            /*sql获取第二层月明细数据*/
+            sql[0] = "SELECT " +
+                    " `month`," +
+                    "  project_name, " +
+                    "  predict_income, " +
+                    "  `open`, " +
+                    "  income, " +
+                    "  person, " +
+                    "  person_cost, " +
+                    "  material, " +
+                    "  other_cost, " +
+                    "  cost_sum, " +
+                    "  taxes, " +
+                    "  gross_profit, " +
+                    "  CONCAT(ROUND(gross_margin*100,2),'%') gross_margin, " +
+                    "  overhead, " +
+                    "  corporate_income_tax, " +
+                    "  net_profit, " +
+                    "  CONCAT(ROUND(net_margin*100,2),'%') net_margin  " +
+                    "FROM " +
+                    " lanyun_project_analysis " +
+                    " WHERE 1=1";
+            /*sql获取第二层合计数据*/
+            sql[1] = "SELECT " +
+                    " '总合计' as `month`, " +
+                    " sum( predict_income ) predict_income," +
+                    " NULL as project_name, " +
+                    " SUM( `open` ) `open`, " +
+                    " SUM( income ) income, " +
+                    " SUM( person ) person, " +
+                    " SUM( person_cost ) person_cost, " +
+                    " SUM( material ) material, " +
+                    " SUM( other_cost ) other_cost, " +
+                    " SUM( cost_sum ) cost_sum, " +
+                    " SUM( taxes ) taxes, " +
+                    " SUM( gross_profit ) gross_profit, " +
+                    " CONCAT(ROUND(SUM( gross_profit )/ SUM( income )*100,2),'%') gross_margin, " +
+                    " SUM( overhead ) overhead, " +
+                    " SUM( corporate_income_tax ) corporate_income_tax, " +
+                    " SUM( net_profit ) net_profit, " +
+                    " CONCAT(ROUND(SUM( net_profit )/ SUM( income )*100,2),'%') net_margin " +
+                    " FROM " +
+                    " lanyun_project_analysis  " +
+                    " WHERE 1=1 ";
+            /*sql获取第二层数据总数*/
+            sql[2] = "SELECT " +
+                    " COUNT(*) total_count " +
+                    " FROM " +
+                    " lanyun_project_analysis  " +
+                    " WHERE 1=1 ";
+            if (data.containsKey("startDate") || data.containsKey("endDate")){
+                data.remove("month");
+            }
+            data.forEach((k,v)->{
+                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[0] = sql[0] +  "  order by `month` DESC LIMIT " + pageStart + "," + pageSize;
+            log.info("sql[0]:{}",sql[0]);
+            log.info("sql[2]:{}",sql[2]);
+        }
+        sql[3]="SELECT DISTINCT project_name FROM lanyun_project_analysis;";
+        sql[4]="SELECT DISTINCT format FROM lanyun_project_analysis;";
+        sql[5]="SELECT DISTINCT customer_system FROM lanyun_project_analysis;";
+
+        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 = parseInt(result.get(0).get("total_count").toString());
+        }
+        List<Map<String, Object>> projects = jdbcTemplate.queryForList(sql[3]);
+        projects.get(0).forEach((k,v)->{
+
+        });
+        List<Map<String, Object>> formats = jdbcTemplate.queryForList(sql[4]);
+        List<Map<String, Object>> customers = jdbcTemplate.queryForList(sql[5]);
+        analysisList.add(analysisSum.get(0));
+        log.info("results:{}",analysisList);
+        Map<String, Object> map = UtilMap.map("totalCount, data, projects, formats, customers", totalCount, analysisList,projects,formats,customers);
+        if (ObjectUtil.isNotNull(analysisList)&&analysisList.size()>0){
+            return map;
+        }
+        else {
+            return null;
+        }
+    }
+}

+ 2 - 2
mjava-lanyun/src/main/resources/application-dev.yml

@@ -6,11 +6,11 @@ server:
 
 # condition
 spel:
-  scheduling: true        # 定时任务是否执行
+  scheduling: false        # 定时任务是否执行
   multiSource: false       # 是否多数据源配置
 
 nc:
-  scheduling: true        # 定时任务是否执行
+  scheduling: false        # 定时任务是否执行
   multiSource: false       # 是否多数据源配置
 
 spring: