Forráskód Böngészése

各项目经营分析NC自动取数接口调用及导出功能

fyz 2 hete%!(EXTRA string=óta)
szülő
commit
1e749fb32a

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

@@ -1,5 +1,6 @@
 package com.malk.lanyun.Mapper;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.malk.lanyun.entity.ProjectAnalysis;
 import org.springframework.jdbc.core.RowMapper;
 
@@ -34,10 +35,13 @@ public class ProjectAnalysisMapper implements RowMapper<ProjectAnalysis> {
         projectAnalysis.setNetMargin(resultSet.getString("net_margin"));
 //        projectAnalysis.setFormat(resultSet.getString("format"));
 //        projectAnalysis.setCustomerSystem(resultSet.getString("customer_system"));
-//        projectAnalysis.setProfitLoss(resultSet.getString("profit_loss"));
+        projectAnalysis.setProfitLoss(resultSet.getString("profit_loss"));
 //        projectAnalysis.setApproachDate(resultSet.getString("approach_date"));
 //        projectAnalysis.setLevel(resultSet.getString("level"));
 //        projectAnalysis.setNotes(resultSet.getString("notes"));
+        if (ObjectUtil.isNotNull(resultSet.getString("monthString"))){
+            projectAnalysis.setMonthString(resultSet.getString("monthString"));
+        }
 
         return projectAnalysis;
     }

+ 14 - 1
mjava-lanyun/src/main/java/com/malk/lanyun/controller/TimerController.java

@@ -7,6 +7,7 @@ import com.malk.lanyun.service.TimerService;
 import com.malk.server.common.McR;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -102,7 +103,16 @@ public class TimerController {
     void exportAttendance(@RequestBody Map data, HttpServletResponse response, HttpServletRequest request) {
         timerService.execlExport(data,response,request);
     }
-
+    /**
+     * 各项目经营分析导出excel
+     * @param data 前端传入数据
+     * @param response 响应头
+     * @param request  请求头
+     */
+    @PostMapping("exportBusinessAnalysis")
+    void exportBusinessAnalysis(@RequestBody Map data, HttpServletResponse response, HttpServletRequest request) {
+        timerService.exportBusinessAnalysis(data,response,request);
+    }
     /**
      * 分组查询项目点经营分析报表
      *
@@ -232,6 +242,9 @@ public class TimerController {
         } else if ("2".equals(type)) {
             log.info("开始调用各项目分析报表插入数据库接口");
             timerService.insertAnalysisList();
+        } else if ("3".equals(type)) {
+            log.info("开始调用各项目分析报表自动化");
+            ncService.getProjectOperate();
         }
         return McR.success();
     }

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

@@ -35,5 +35,6 @@ public class ProjectAnalysis implements Serializable {
     private String approachDate;
     private String level;
     private String notes;
+    private String monthString;
 
 }

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

@@ -127,4 +127,6 @@ public interface TimerService {
     void updateYearPredict();
 
     void updateUseCar();
+
+    void exportBusinessAnalysis(Map data, HttpServletResponse response, HttpServletRequest request);
 }

+ 5 - 1
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/NCServiceImpl.java

@@ -16,6 +16,7 @@ import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.sql.*;
@@ -493,8 +494,10 @@ public class NCServiceImpl implements NCService {
     @Override
     public void getProjectOperate() {
         int year = lastMonth.getYear();
+        System.out.println(year);
         String month = String.format("%02d",lastMonth.getMonthValue()) ;
         String yearAndMonth = year +"-"+month;
+        log.info("年月:{}",yearAndMonth);
         LocalDate now = LocalDate.now();
         int thisYear = now.getYear();
         String thisStrMonth = String.format("%02d",now.getMonthValue());
@@ -1878,7 +1881,7 @@ public class NCServiceImpl implements NCService {
             }
         }
     }
-
+    @Async
     @Override
     public void getNcCollection(Map data) {
         String year = data.get("year").toString();
@@ -1991,6 +1994,7 @@ public class NCServiceImpl implements NCService {
         }
     }
 
+    @Async
     @Override
     public void getNcCollectionOld(Map data) {
 

+ 55 - 0
mjava-lanyun/src/main/java/com/malk/lanyun/service/impl/TimerServiceImpl.java

@@ -1718,4 +1718,59 @@ public class TimerServiceImpl implements TimerService {
             }
         });
     }
+
+    @Override
+    public void exportBusinessAnalysis(Map data, HttpServletResponse response, HttpServletRequest request) {
+        final String[] sql = {"SELECT " +
+                " `month`," +
+                "  project_name, " +
+                "  predict_income, " +
+                "  folding_repair, " +
+                "  `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," +
+                "  monthString," +
+                "  level, " +
+                "  status, " +
+                "  profit_loss, " +
+                "  format, " +
+                "  customer_system, " +
+                "  CONCAT(ROUND(net_margin*100,2),'%') net_margin  " +
+                "FROM " +
+                " lanyun_project_analysis_copy1 " +
+                " 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" ;
+
+            } else if (ObjectUtil.isNotNull(v) && k.equals("startDate")) {
+                sql[0] = sql[0] + " AND `month` >= \"" + v +"\"" ;
+            } else if (ObjectUtil.isNotNull(v) && k.equals("endDate")) {
+                sql[0] = sql[0] + " AND `month` <= \"" + v +"\"" ;
+            } else if (ObjectUtil.isNotNull(v) && !k.equals("low")){
+                sql[0] = sql[0] + " AND `" + k +"` = \"" + v +"\"" ;
+            }
+        });
+
+        List<ProjectAnalysis> analysisList = jdbcTemplate.query(sql[0], new ProjectAnalysisMapper());
+
+//        Map<String, String> dataMain = new HashMap<>();
+        String fileName = "各项目经营分析NC测试-"+data.get("startDate") + "至" + data.get("endDate");
+
+
+        UtilExcel.exportMapAndListByTemplate(response, null, analysisList, ProjectAnalysis.class, fileName, "NC.xlsx");
+    }
 }

BIN
mjava-lanyun/src/main/resources/templates/NC.xlsx


+ 6 - 2
mjava/src/main/java/com/malk/utils/UtilExcel.java

@@ -241,8 +241,12 @@ public class UtilExcel {
         WriteSheet sheet = EasyExcel.writerSheet().build();
         FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
         // 先单组数据填充,再多组数据填充
-        workBook.fill(dataList, fillConfig, sheet);
-        workBook.fill(dataMain, sheet);
+        if (ObjectUtil.isNotNull(dataList)){
+            workBook.fill(dataList, fillConfig, sheet);
+        }
+        if (ObjectUtil.isNotNull(dataMain)){
+            workBook.fill(dataMain, sheet);
+        }
         workBook.finish();
     }