Your Name il y a 2 ans
Parent
révision
9c70de35d8

+ 1
- 1
pom.xml Voir le fichier

@@ -85,7 +85,7 @@
85 85
 		<dependency>
86 86
 			<groupId>com.alibaba</groupId>
87 87
 			<artifactId>easyexcel</artifactId>
88
-			<version>2.0.4</version>
88
+			<version>3.1.2</version>
89 89
 		</dependency>
90 90
 		<!--excel end-->
91 91
 

+ 39
- 0
src/main/java/com/yunzhi/nanyang/common/ExcelUtils.java Voir le fichier

@@ -1,10 +1,17 @@
1 1
 package com.yunzhi.nanyang.common;
2 2
 
3 3
 import com.alibaba.excel.EasyExcel;
4
+import com.alibaba.excel.ExcelWriter;
5
+import com.alibaba.excel.write.metadata.WriteSheet;
6
+import com.alibaba.excel.write.metadata.fill.FillConfig;
7
+import org.springframework.core.io.ClassPathResource;
4 8
 
5 9
 import javax.servlet.http.HttpServletResponse;
10
+import java.io.File;
6 11
 import java.io.IOException;
12
+import java.io.InputStream;
7 13
 import java.util.List;
14
+import java.util.function.BiConsumer;
8 15
 
9 16
 public class ExcelUtils {
10 17
 
@@ -23,4 +30,36 @@ public class ExcelUtils {
23 30
 
24 31
         EasyExcel.write(response.getOutputStream(), dataClass).sheet("sheet1").doWrite(data);
25 32
     }
33
+
34
+    /**
35
+     * 模板导出
36
+     * @param response
37
+     * @param tpl
38
+     * @param data
39
+     * @param fileName
40
+     * @param callback
41
+     * @throws IOException
42
+     */
43
+    public static void tplExport(HttpServletResponse response, String tpl, List data, String fileName, BiConsumer<ExcelWriter, WriteSheet> callback) throws IOException {
44
+        response.setContentType("application/vnd.ms-excel");
45
+        response.setCharacterEncoding("utf-8");
46
+        response.setHeader("Content-disposition", "attachment;filename="+StringUtils.urlEncode(fileName)+".xlsx");
47
+
48
+        ClassPathResource tplResource = new ClassPathResource(tpl);
49
+        InputStream tplResourceInputStream = tplResource.getInputStream();
50
+
51
+        ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(tplResourceInputStream).build();
52
+        WriteSheet writeSheet = EasyExcel.writerSheet().build();
53
+        // 这里注意 入参用了forceNewRow 代表在写入list的时候不管list下面有没有空行 都会创建一行,然后下面的数据往后移动。默认 是false,会直接使用下一行,如果没有则创建。
54
+        // forceNewRow 如果设置了true,有个缺点 就是他会把所有的数据都放到内存了,所以慎用
55
+        // 简单的说 如果你的模板有list,且list不是最后一行,下面还有数据需要填充 就必须设置 forceNewRow=true 但是这个就会把所有数据放到内存 会很耗内存
56
+        // 如果数据量大 list不是最后一行 参照下一个
57
+        FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
58
+        excelWriter.fill(data, fillConfig, writeSheet);
59
+
60
+        // 回填部分数据
61
+        callback.accept(excelWriter, writeSheet);
62
+
63
+        excelWriter.finish();
64
+    }
26 65
 }

+ 63
- 5
src/main/java/com/yunzhi/nanyang/controller/TaDeviceJobController.java Voir le fichier

@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 4
 import com.baomidou.mybatisplus.core.metadata.IPage;
5 5
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 6
 import com.yunzhi.nanyang.common.BaseController;
7
+import com.yunzhi.nanyang.common.ExcelUtils;
7 8
 import com.yunzhi.nanyang.common.ResponseBean;
8 9
 
9 10
 import java.util.HashMap;
10 11
 import java.util.List;
12
+import java.util.Map;
11 13
 
12 14
 import com.yunzhi.nanyang.common.StringUtils;
13 15
 import io.swagger.annotations.Api;
@@ -18,6 +20,8 @@ import org.springframework.web.bind.annotation.*;
18 20
 import com.yunzhi.nanyang.entity.TaDeviceJob;
19 21
 import com.yunzhi.nanyang.service.TaDeviceJobService;
20 22
 
23
+import javax.servlet.http.HttpServletResponse;
24
+
21 25
 /**
22 26
  * 设备作业表;(ta_device_job)表控制层
23 27
  *
@@ -45,7 +49,7 @@ public class TaDeviceJobController extends BaseController {
45 49
 //    }
46 50
 
47 51
     /**
48
-     * 分页查询
52
+     * 设备作业列表
49 53
      *
50 54
      * @param pageNum  当前页码
51 55
      * @param pageSize 每页条数
@@ -70,21 +74,21 @@ public class TaDeviceJobController extends BaseController {
70 74
 
71 75
 
72 76
     /**
73
-     * 分页查询
77
+     * 设备作业统计
74 78
      *
75 79
      * @param pageNum  当前页码
76 80
      * @param pageSize 每页条数
77 81
      * @return 查询结果
78 82
      */
79
-    @ApiOperation("设备作业列表")
83
+    @ApiOperation("设备作业统计")
80 84
     @GetMapping("/device-job/by-org")
81 85
     public ResponseBean statis(@ApiParam("页码") @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
82 86
                                @ApiParam("单页数据量") @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
83 87
                                @ApiParam("合作社名称") @RequestParam(value = "orgName", required = false) String orgName,
84 88
                                @ApiParam("设备分类") @RequestParam(value = "deviceKind", required = false) String deviceKind,
85 89
                                @ApiParam("设备编号") @RequestParam(value = "deviceNo", required = false) String deviceNo,
86
-                               @ApiParam(value = "开始时间", example = "2022-10-01") @RequestParam(value = "startDate", required = false) String startDate,
87
-                               @ApiParam(value = "结束时间", example = "2022-10-31") @RequestParam(value = "endDate", required = false) String endDate) throws Exception {
90
+                               @ApiParam(value = "开始时间", example = "2022-10-01") @RequestParam(value = "startDate") String startDate,
91
+                               @ApiParam(value = "结束时间", example = "2022-10-31") @RequestParam(value = "endDate") String endDate) throws Exception {
88 92
 
89 93
         IPage<TaDeviceJob> pg = new Page<>(pageNum, pageSize);
90 94
         IPage<TaDeviceJob> list = taDeviceJobService.statisOrgBy(pg, orgName, deviceKind, deviceNo, startDate, endDate);
@@ -96,6 +100,60 @@ public class TaDeviceJobController extends BaseController {
96 100
         }});
97 101
     }
98 102
 
103
+    /**
104
+     * 设备作业统计-导出
105
+     * @param orgName
106
+     * @param deviceKind
107
+     * @param deviceNo
108
+     * @param startDate
109
+     * @param endDate
110
+     * @param response
111
+     * @return
112
+     * @throws Exception
113
+     */
114
+    @ApiOperation("设备作业统计-导出")
115
+    @GetMapping("/device-job/by-org/export")
116
+    public ResponseBean export(@ApiParam("合作社名称") @RequestParam(value = "orgName", required = false) String orgName,
117
+                               @ApiParam("设备分类") @RequestParam(value = "deviceKind", required = false) String deviceKind,
118
+                               @ApiParam("设备编号") @RequestParam(value = "deviceNo", required = false) String deviceNo,
119
+                               @ApiParam(value = "开始时间", example = "2022-10-01") @RequestParam(value = "startDate") String startDate,
120
+                               @ApiParam(value = "结束时间", example = "2022-10-31") @RequestParam(value = "endDate") String endDate,
121
+                               HttpServletResponse response) throws Exception {
122
+
123
+        List<TaDeviceJob> list = taDeviceJobService.listOrgBy(orgName, deviceKind, deviceNo, startDate, endDate);
124
+
125
+        Double total = 0.0;
126
+        if (list != null || list.size() > 0) {
127
+            for (TaDeviceJob item : list) {
128
+                if ("shensong".equals(item.getDeviceKind())) {
129
+                    item.setDeviceKind("深松机");
130
+                } else {
131
+                    item.setDeviceKind("无人机");
132
+                }
133
+
134
+                if (null != item.getJobArea()) {
135
+                    total += item.getJobArea();
136
+                }
137
+            }
138
+        }
139
+
140
+        try {
141
+            String date = String.format("%s 至 %s", startDate, endDate);
142
+            Double finalTotal = total;
143
+            ExcelUtils.tplExport(response, "job.xlsx", list, "作业统计", (excelWriter, writeSheet) -> {
144
+                Map<String, Object> map = new HashMap<>();
145
+                map.put("date", date);
146
+                map.put("total", finalTotal);
147
+                excelWriter.fill(map, writeSheet);
148
+            });
149
+
150
+            return null;
151
+        } catch (Exception e) {
152
+            e.printStackTrace();
153
+        }
154
+        return ResponseBean.error("导出失败, 请重试");
155
+    }
156
+
99 157
 //    /**
100 158
 //     * 新增数据
101 159
 //     *

+ 9
- 1
src/main/java/com/yunzhi/nanyang/mapper/TaDeviceJobMapper.java Voir le fichier

@@ -6,7 +6,9 @@ import org.apache.ibatis.annotations.Mapper;
6 6
 import org.apache.ibatis.annotations.Param;
7 7
 import com.yunzhi.nanyang.entity.TaDeviceJob;
8 8
 
9
- /**
9
+import java.util.List;
10
+
11
+/**
10 12
  * 设备作业表;(ta_device_job)表数据库访问层
11 13
  * @author : http://njyunzhi.com
12 14
  * @date : 2022-11-3
@@ -26,4 +28,10 @@ public interface TaDeviceJobMapper  extends BaseMapper<TaDeviceJob>{
26 28
                             @Param("deviceNo") String deviceNo,
27 29
                             @Param("startDate") String startDate,
28 30
                             @Param("endDate") String endDate);
31
+
32
+     List<TaDeviceJob> listOrgBy(@Param("orgName") String orgName,
33
+                                 @Param("deviceKind") String deviceKind,
34
+                                 @Param("deviceNo") String deviceNo,
35
+                                 @Param("startDate") String startDate,
36
+                                 @Param("endDate") String endDate);
29 37
  }

+ 5
- 1
src/main/java/com/yunzhi/nanyang/service/TaDeviceJobService.java Voir le fichier

@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
4 4
 import com.baomidou.mybatisplus.extension.service.IService;
5 5
 import com.yunzhi.nanyang.entity.TaDeviceJob;
6 6
 
7
- /**
7
+import java.util.List;
8
+
9
+/**
8 10
  * 设备作业表;(ta_device_job)表服务接口
9 11
  * @author : http://njyunzhi.com
10 12
  * @date : 2022-11-3
@@ -14,4 +16,6 @@ public interface TaDeviceJobService extends IBaseService<TaDeviceJob> {
14 16
      IPage<TaDeviceJob> statisOrgBy(IPage<TaDeviceJob> pg, String orgName, String deviceKind, String deviceNo, String startDate, String endDate);
15 17
 
16 18
      Double statisTotalArea(String orgName, String deviceKind, String deviceNo, String startDate, String endDate);
19
+
20
+     List<TaDeviceJob> listOrgBy(String orgName, String deviceKind, String deviceNo, String startDate, String endDate);
17 21
  }

+ 7
- 0
src/main/java/com/yunzhi/nanyang/service/impl/TaDeviceJobServiceImpl.java Voir le fichier

@@ -7,6 +7,8 @@ import com.yunzhi.nanyang.entity.TaDeviceJob;
7 7
 import com.yunzhi.nanyang.mapper.TaDeviceJobMapper;
8 8
 import com.yunzhi.nanyang.service.TaDeviceJobService;
9 9
 
10
+import java.util.List;
11
+
10 12
 /**
11 13
  * 设备作业表;(ta_device_job)表服务实现类
12 14
  *
@@ -25,4 +27,9 @@ public class TaDeviceJobServiceImpl extends BaseServiceImpl<TaDeviceJobMapper, T
25 27
     public Double statisTotalArea(String orgName, String deviceKind, String deviceNo, String startDate, String endDate) {
26 28
         return baseMapper.statisTotalArea(orgName, deviceKind, deviceNo, startDate, endDate);
27 29
     }
30
+
31
+    @Override
32
+    public List<TaDeviceJob> listOrgBy(String orgName, String deviceKind, String deviceNo, String startDate, String endDate) {
33
+        return baseMapper.listOrgBy(orgName, deviceKind, deviceNo, startDate, endDate);
34
+    }
28 35
 }

BIN
src/main/resources/job.xlsx Voir le fichier


+ 7
- 0
src/main/resources/mapper/TaDeviceJobMapper.xml Voir le fichier

@@ -37,4 +37,11 @@
37 37
         SELECT SUM(t.job_area)
38 38
         <include refid="statisOrg"></include>
39 39
     </select>
40
+    <select id="listOrgBy" resultType="com.yunzhi.nanyang.entity.TaDeviceJob">
41
+        SELECT
42
+            m.`name` AS org_name,
43
+            s.`name` AS machinery_name,
44
+            t.*
45
+        <include refid="statisOrg"></include>
46
+    </select>
40 47
 </mapper>