Browse Source

后台导出Excel。

lighter 4 years ago
parent
commit
3563b07ba9

+ 8 - 1
src/main/java/thyyxxk/webserver/controller/examinations/CovidExamController.java

@@ -11,7 +11,9 @@ import thyyxxk.webserver.pojo.examinations.covidexam.CovidExamResult;
 import thyyxxk.webserver.pojo.examinations.covidexam.QueryCovidExamParam;
 import thyyxxk.webserver.service.examinations.CovidExamService;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
+import java.util.Map;
 
 @RestController
 @RequestMapping("/covidExamReport")
@@ -24,7 +26,12 @@ public class CovidExamController {
     }
 
     @PostMapping("/queryResult")
-    public ResultVo<List<CovidExamResult>> queryResult(@RequestBody @Validated QueryCovidExamParam param) {
+    public ResultVo<Map<String, Object>> queryResult(@RequestBody @Validated QueryCovidExamParam param) {
         return service.queryResult(param);
     }
+
+    @PostMapping("/exportExcel")
+    public void exportExcel(HttpServletResponse response, @RequestBody @Validated QueryCovidExamParam param) {
+        service.exportExcel(response, param);
+    }
 }

+ 3 - 4
src/main/java/thyyxxk/webserver/dao/lis/CovidExamDao.java

@@ -1,12 +1,11 @@
 package thyyxxk.webserver.dao.lis;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import thyyxxk.webserver.pojo.examinations.covidexam.CovidExamResult;
 
-import java.util.List;
-
 @Mapper
 public interface CovidExamDao {
 
@@ -20,7 +19,7 @@ public interface CovidExamDao {
             "and (c.itm_id = 1855) " +
             "and (b.ordr_create_date >= #{start} and b.ordr_create_date < #{end}) " +
             "order by ordr_create_date, REPLICATE(0,20-len(b.smpl_num))+b.smpl_num")
-    List<CovidExamResult> selectHstResult(@Param("start") String start, @Param("end") String end);
+    IPage<CovidExamResult> selectHstResult(IPage<CovidExamResult> iPage, @Param("start") String start, @Param("end") String end);
 
     @Select("select " +
             "a.ptnt_name as ptntName, a.id_card as idCard, c.itm_str_value as itmStrValue, " +
@@ -32,5 +31,5 @@ public interface CovidExamDao {
             "and (c.itm_id in ( 1865,1870,1871)) " +
             "and (b.ordr_create_date >= #{start} and b.ordr_create_date < #{end}) " +
             "order by ordr_create_date, REPLICATE(0,20-len(b.smpl_num))+b.smpl_num")
-    List<CovidExamResult> selectKtResult(@Param("start") String start, @Param("end") String end);
+    IPage<CovidExamResult> selectKtResult(IPage<CovidExamResult> iPage, @Param("start") String start, @Param("end") String end);
 }

+ 4 - 0
src/main/java/thyyxxk/webserver/pojo/examinations/covidexam/QueryCovidExamParam.java

@@ -14,4 +14,8 @@ public class QueryCovidExamParam {
     // 1:核酸检测 2:抗体检测
     @NotNull(message = "检测类型不能为空。")
     private Integer type;
+    @NotNull(message = "当前页码不能为空。")
+    private Integer currentPage;
+    @NotNull(message = "单页数据量不能为空。")
+    private Integer pageSize;
 }

+ 38 - 5
src/main/java/thyyxxk/webserver/service/examinations/CovidExamService.java

@@ -1,15 +1,23 @@
 package thyyxxk.webserver.service.examinations;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import thyyxxk.webserver.dao.lis.CovidExamDao;
 import thyyxxk.webserver.pojo.ResultVo;
 import thyyxxk.webserver.pojo.examinations.covidexam.CovidExamResult;
 import thyyxxk.webserver.pojo.examinations.covidexam.QueryCovidExamParam;
+import thyyxxk.webserver.utils.DateUtil;
+import thyyxxk.webserver.utils.ExcelUtil;
 import thyyxxk.webserver.utils.ResultVoUtil;
 
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Slf4j
 @Service
@@ -21,12 +29,37 @@ public class CovidExamService {
         this.dao = dao;
     }
 
-    public ResultVo<List<CovidExamResult>> queryResult(QueryCovidExamParam param) {
-        log.info("查询新冠检测结果:{}", param);
+    public ResultVo<Map<String, Object>> queryResult(QueryCovidExamParam param) {
+        log.info("查询新冠检测结果:{}", JSON.toJSONString(param));
+        Map<String, Object> map = new HashMap<>();
+        IPage<CovidExamResult> iPage = getCovidExamResultIPage(param);
+        map.put("totalSize", iPage.getTotal());
+        map.put("list", iPage.getRecords());
+        return ResultVoUtil.success(map);
+    }
+
+    public void exportExcel(HttpServletResponse response, QueryCovidExamParam param) {
+        log.info("导出新冠检测Excel: {}", JSON.toJSONString(param));
+        IPage<CovidExamResult> iPage = getCovidExamResultIPage(param);
+        List<CovidExamResult> list = iPage.getRecords();
+        String[] title = {"姓名","身份证","检测结果","送检时间"};
+        String[][] content = new String[list.size()][];
+        for (int i = 0; i < list.size(); i++) {
+            content[i] = new String[title.length];
+            CovidExamResult result = list.get(i);
+            content[i][0] = result.getPtntName();
+            content[i][1] = result.getIdCard();
+            content[i][2] = result.getItmStrValue();
+            content[i][3] = DateUtil.formatDatetime(result.getOrdrCreateDate());
+        }
+        ExcelUtil.exportExcel(response, title, content);
+    }
+
+    private IPage<CovidExamResult> getCovidExamResultIPage(QueryCovidExamParam param) {
+        IPage<CovidExamResult> iPage = new Page<>(param.getCurrentPage(), param.getPageSize());
         if (param.getType() == 1) {
-            return ResultVoUtil.success(dao.selectHstResult(param.getStart(), param.getEnd()));
-        } else {
-            return ResultVoUtil.success(dao.selectKtResult(param.getStart(), param.getEnd()));
+            return dao.selectHstResult(iPage, param.getStart(), param.getEnd());
         }
+        return dao.selectKtResult(iPage, param.getStart(), param.getEnd());
     }
 }