|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|