ソースを参照

各项目经营分析报表更新

fyz 11 ヶ月 前
コミット
8bdea3aeb4

+ 10 - 1
mjava-lanyun/src/main/java/com/malk/lanyun/Mapper/ProjectAnalysisMapper.java

@@ -12,7 +12,10 @@ public class ProjectAnalysisMapper implements RowMapper<ProjectAnalysis> {
     public ProjectAnalysis mapRow(ResultSet resultSet, int i) throws SQLException {
         ProjectAnalysis projectAnalysis = new ProjectAnalysis();
         projectAnalysis.setProjectName(resultSet.getString("project_name"));
-        projectAnalysis.setMonth(resultSet.getLong("month"));
+//        projectAnalysis.setBelongProject(resultSet.getString("belong_name"));
+        projectAnalysis.setMonth(resultSet.getString("month"));
+//        projectAnalysis.setStatus(resultSet.getString("status"));
+//        projectAnalysis.setDLevel(resultSet.getString("d_level"));
         projectAnalysis.setPredictIncome(resultSet.getBigDecimal("predict_income"));
         projectAnalysis.setOpen(resultSet.getBigDecimal("open"));
         projectAnalysis.setIncome(resultSet.getBigDecimal("income"));
@@ -28,6 +31,12 @@ public class ProjectAnalysisMapper implements RowMapper<ProjectAnalysis> {
         projectAnalysis.setCorporateIncomeTax(resultSet.getBigDecimal("corporate_income_tax"));
         projectAnalysis.setNetProfit(resultSet.getBigDecimal("net_profit"));
         projectAnalysis.setNetMargin(resultSet.getBigDecimal("net_margin"));
+//        projectAnalysis.setFormat(resultSet.getString("format"));
+//        projectAnalysis.setCustomerSystem(resultSet.getString("customer_system"));
+//        projectAnalysis.setProfitLoss(resultSet.getString("profit_loss"));
+//        projectAnalysis.setApproachDate(resultSet.getString("approach_date"));
+//        projectAnalysis.setLevel(resultSet.getString("level"));
+//        projectAnalysis.setNotes(resultSet.getString("notes"));
 
         return projectAnalysis;
     }

+ 1 - 1
mjava-lanyun/src/main/java/com/malk/lanyun/entity/ProjectAnalysis.java

@@ -11,7 +11,7 @@ import java.math.BigDecimal;
 public class ProjectAnalysis implements Serializable {
     private String projectName;
     private String belongProject;
-    private Long month;
+    private String month;
     private String status;
     private String dLevel;
     private BigDecimal predictIncome;

+ 69 - 8
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/TimerServiceImpl.java

@@ -325,11 +325,9 @@ public class TimerServiceImpl implements TimerService {
     @SneakyThrows
     @Override
     public List<ProjectAnalysis> projectAnalysisGroup(Map<String, Object> data){
-        String sql = "";
-        String month = String.valueOf(data.get("month"));
-        log.info(month);
+        final String[] sql = {"",""};
         if (data.isEmpty()){
-            sql = "SELECT " +
+            sql[0] = "SELECT " +
                     " `month`, " +
                     " sum( predict_income ) predict_income," +
                     " NULL as project_name, " +
@@ -351,8 +349,28 @@ public class TimerServiceImpl implements TimerService {
                     " lanyun_project_analysis  " +
                     "GROUP BY " +
                     " `month`";
+            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, " +
+                    " SUM( gross_profit )/ SUM( income ) gross_margin, " +
+                    " SUM( overhead ) overhead, " +
+                    " SUM( corporate_income_tax ) corporate_income_tax, " +
+                    " SUM( net_profit ) net_profit, " +
+                    " SUM( net_profit )/ SUM( income ) net_margin  " +
+                    "FROM " +
+                    " lanyun_project_analysis  " ;
         }else {
-            sql = "SELECT " +
+            sql[0] = "SELECT " +
                     " `month`," +
                     "  project_name, " +
                     "  predict_income, " +
@@ -372,13 +390,46 @@ public class TimerServiceImpl implements TimerService {
                     "  net_margin  " +
                     "FROM " +
                     " lanyun_project_analysis " +
-                    " WHERE 1=1" +
-                    " AND `month` = \""+month+"\"" ;
+                    " WHERE 1=1";
+            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, " +
+                    " SUM( gross_profit )/ SUM( income ) gross_margin, " +
+                    " SUM( overhead ) overhead, " +
+                    " SUM( corporate_income_tax ) corporate_income_tax, " +
+                    " SUM( net_profit ) net_profit, " +
+                    " SUM( net_profit )/ SUM( income ) net_margin  " +
+                    " FROM " +
+                    " lanyun_project_analysis  " +
+                    " WHERE 1=1 ";
+
+            data.forEach((k,v)->{
+                if (k.equals("low")){
+                    sql[0] = sql[0] + " AND `net_margin` < 0.05" ;
+                    sql[1] = sql[1] + " AND `net_margin` < 0.05" ;
+                }else {
+                    sql[0] = sql[0] + " AND `" + k +"` = \"" + v +"\"" ;
+                    sql[1] = sql[1] + " AND `" + k +"` = \"" + v +"\"" ;
+                }
+            });
+            sql[1] = sql[1] +  " GROUP BY `month` ";
         }
 //        Class.forName(driver);
 //        Connection connection = DriverManager.getConnection(url, username, password);
 //        Statement statement = connection.createStatement();
-        List<ProjectAnalysis> analysisList = jdbcTemplate.query(sql, new ProjectAnalysisMapper());
+        List<ProjectAnalysis> analysisList = jdbcTemplate.query(sql[0], new ProjectAnalysisMapper());
+        List<ProjectAnalysis> analysisSum= jdbcTemplate.query(sql[1], new ProjectAnalysisMapper());
+        analysisList.add(analysisSum.get(0));
         log.info("results:{}",analysisList);
         if (ObjectUtil.isNotNull(analysisList)&&analysisList.size()>0){
             return analysisList;
@@ -396,6 +447,16 @@ public class TimerServiceImpl implements TimerService {
                 .formUuid("FORM-954C78969A864D95A1BC0CE9F69299E8VI38")
                 .searchFieldJson(JSON.toJSONString(UtilMap.map("radioField_m0dkcxod", "否")))
                 .build());
+        dataList.forEach(e->{
+            ydClient.operateData(YDParam.builder()
+                    .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                    .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                    .formInstanceId(UtilMap.getString(e, "formInstanceId"))
+//                    .useLatestVersion(true)
+//                    .updateFormDataJson(JSONObject.toJSONString(new HashMap<>()))
+                    .updateFormDataJson(JSON.toJSONString(UtilMap.map("radioField_m0dkcxod", "是")))
+                    .build(), YDConf.FORM_OPERATION.update);
+        });
         Connection connection = null;
         PreparedStatement ps = null;
         try {