fyz месяцев назад: 9
Родитель
Сommit
325305457a

+ 44 - 0
mjava-lanyun/src/main/java/com/malk/lanyun/Mapper/ProjectAnalysisMapper.java

@@ -0,0 +1,44 @@
+package com.malk.lanyun.Mapper;
+
+import com.malk.lanyun.entity.ProjectAnalysis;
+import org.springframework.jdbc.core.RowMapper;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+
+public class ProjectAnalysisMapper implements RowMapper<ProjectAnalysis> {
+    @Override
+    public ProjectAnalysis mapRow(ResultSet resultSet, int i) throws SQLException {
+        ProjectAnalysis projectAnalysis = new ProjectAnalysis();
+//        System.out.println(resultSet.findColumn("month"));
+        projectAnalysis.setProjectName(resultSet.getString("project_name"));
+//        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"));
+        projectAnalysis.setPerson(resultSet.getBigDecimal("person"));
+        projectAnalysis.setPersonCost(resultSet.getBigDecimal("person_cost"));
+        projectAnalysis.setMaterial(resultSet.getBigDecimal("material"));
+        projectAnalysis.setOtherCost(resultSet.getBigDecimal("other_cost"));
+        projectAnalysis.setCostSum(resultSet.getBigDecimal("cost_sum"));
+        projectAnalysis.setTaxes(resultSet.getBigDecimal("taxes"));
+        projectAnalysis.setGrossProfit(resultSet.getBigDecimal("gross_profit"));
+        projectAnalysis.setGrossMargin(resultSet.getBigDecimal("gross_margin"));
+        projectAnalysis.setOverhead(resultSet.getBigDecimal("overhead"));
+        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;
+    }
+}

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

@@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.sql.SQLException;
 import java.util.Map;
 
 /**
@@ -50,4 +51,8 @@ public class TimerController {
         timerService.execlExport(data,response,request);
     }
 
+    @PostMapping("projectAnalysisGroup")
+    void projectAnalysisGroup(@RequestBody Map<String,Object> data) {
+        timerService.projectAnalysisGroup(data);
+    }
 }

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

@@ -0,0 +1,39 @@
+package com.malk.lanyun.entity;
+
+import lombok.Data;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class ProjectAnalysis implements Serializable {
+    private String projectName;
+    private String belongProject;
+    private String month;
+    private String status;
+    private String dLevel;
+    private BigDecimal predictIncome;
+    private BigDecimal open;
+    private BigDecimal income;
+    private BigDecimal person;
+    private BigDecimal personCost;
+    private BigDecimal material;
+    private BigDecimal otherCost;
+    private BigDecimal costSum;
+    private BigDecimal taxes;
+    private BigDecimal grossProfit;
+    private BigDecimal grossMargin;
+    private BigDecimal overhead;
+    private BigDecimal corporateIncomeTax;
+    private BigDecimal netProfit;
+    private BigDecimal netMargin;
+    private String format;
+    private String customerSystem;
+    private String profitLoss;
+    private String approachDate;
+    private String level;
+    private String notes;
+
+}

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

@@ -1,7 +1,11 @@
 package com.malk.lanyun.service;
 
+import com.malk.lanyun.entity.ProjectAnalysis;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.sql.SQLException;
+import java.util.List;
 import java.util.Map;
 
 public interface TimerService {
@@ -33,4 +37,15 @@ public interface TimerService {
      * 每月月初发起风控绩效流程
      */
     void monthRiskMerits();
+
+    /**
+     * 分组求和各项目经营分析
+     * @param data 分组条件
+     */
+    List<ProjectAnalysis> projectAnalysisGroup(Map<String, Object> data);
+
+    /**
+     * 每日同步各项目分析报表
+     */
+    void insertProjectAnalysis();
 }

+ 91 - 2
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/TimerServiceImpl.java

@@ -5,6 +5,8 @@ import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.malk.lanyun.Mapper.ProjectAnalysisMapper;
+import com.malk.lanyun.entity.ProjectAnalysis;
 import com.malk.lanyun.service.TimerService;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
@@ -13,8 +15,11 @@ import com.malk.service.aliwork.YDService;
 import com.malk.utils.UtilDateTime;
 import com.malk.utils.UtilExcel;
 import com.malk.utils.UtilMap;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
@@ -26,7 +31,16 @@ import java.util.*;
 @Service
 @Slf4j
 public class TimerServiceImpl implements TimerService {
-
+    @Value("${spring.datasource.url}")
+    private String url;
+    @Value("${spring.datasource.username}")
+    private String username;
+    @Value("${spring.datasource.password}")
+    private String password;
+    @Value("${spring.datasource.driver-class-name}")
+    private String driver;
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
     @Autowired
     private YDService ydService;
 
@@ -181,7 +195,7 @@ public class TimerServiceImpl implements TimerService {
         log.info("小业主档案_测试, {}", dataList.size());
         dataList.forEach(e -> {
             log.info("e1:{}",e.toString());
-                List<Map> list = (List<Map>) e.get("tableField_lr3dmdpk");
+            List<Map> list = (List<Map>) e.get("tableField_lr3dmdpk");
             if (ObjectUtil.isNotNull(e.get("tableField_lr3dmdpk"))){
                 list.forEach(v->{
                     if (v.size()>3){
@@ -303,4 +317,79 @@ public class TimerServiceImpl implements TimerService {
                     .build(), YDConf.FORM_OPERATION.start);
         });
     }
+
+    @SneakyThrows
+    @Override
+    public List<ProjectAnalysis> projectAnalysisGroup(Map<String, Object> data){
+        String sql = "";
+        String month = String.valueOf(data.get("month"));
+        if (data.isEmpty()){
+            sql = "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, " +
+                    " 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  " +
+                    "GROUP BY " +
+                    " `month`";
+        }else {
+            sql = "SELECT " +
+                    " `month`," +
+                    "  project_name, " +
+                    "  predict_income, " +
+                    "  `open`, " +
+                    "  income, " +
+                    "  person, " +
+                    "  person_cost, " +
+                    "  material, " +
+                    "  other_cost, " +
+                    "  cost_sum, " +
+                    "  taxes, " +
+                    "  gross_profit, " +
+                    "  gross_margin, " +
+                    "  overhead, " +
+                    "  corporate_income_tax, " +
+                    "  net_profit, " +
+                    "  net_margin  " +
+                    "FROM " +
+                    " lanyun_project_analysis " +
+                    " WHERE " +
+                    " `month` = \""+month+"\"" ;
+        }
+//        Class.forName(driver);
+//        Connection connection = DriverManager.getConnection(url, username, password);
+//        Statement statement = connection.createStatement();
+        List<ProjectAnalysis> analysisList = jdbcTemplate.query(sql, new ProjectAnalysisMapper());
+        if (ObjectUtil.isNotNull(analysisList)&&analysisList.size()>0){
+            return analysisList;
+        }
+        else {
+            return null;
+        }
+    }
+
+    @Override
+    public void insertProjectAnalysis() {
+        List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
+                .appType("APP_ERBDTFS82HOVBPL3NFH0")
+                .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
+                .formUuid("FORM-954C78969A864D95A1BC0CE9F69299E8VI38")
+//                .searchFieldJson(JSON.toJSONString(UtilMap.map("selectField_lrnd0lxr", "小业主")))
+                .build());
+        String sql = "INSERT INTO `dingtalk`.`lanyun_project_analysis`(`id`, `project_name`, `belong_project`, `month`, `status`, `d_level`, `predict_income`, `open`, `income`, `person`, `person_cost`, `material`, `other_cost`, `cost_sum`, `taxes`, `gross_profit`, `gross_margin`, `overhead`, `corporate_income_tax`, `net_profit`, `net_margin`, `format`, `customer_system`, `profit_loss`, `approach_date`, `level`, `notes`) VALUES ();\n";
+    }
 }