Browse Source

后台导出Excel。

lighter 4 years ago
parent
commit
b8918efbb4

+ 9 - 3
src/main/java/thyyxxk/webserver/controller/clockin/ClockinController.java

@@ -1,16 +1,17 @@
 package thyyxxk.webserver.controller.clockin;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import thyyxxk.webserver.pojo.ResultVo;
-import thyyxxk.webserver.pojo.clockin.ClockinViewPojo;
 import thyyxxk.webserver.pojo.clockin.QueryFromDbParam;
 import thyyxxk.webserver.service.clockin.ClockinService;
 
-import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
 
 @RestController
 @RequestMapping("/clockin")
@@ -23,8 +24,13 @@ public class ClockinController {
     }
 
     @PostMapping("/getClockinDataFromDb")
-    public ResultVo<List<ClockinViewPojo>> getClockinDataFromDb(@RequestBody QueryFromDbParam param) {
+    public ResultVo<Map<String, Object>> getClockinDataFromDb(@RequestBody QueryFromDbParam param) {
         return service.getClockinDataFromDb(param);
     }
 
+    @PostMapping("/exportExcel")
+    public void exportExcel(HttpServletResponse response, @RequestBody @Validated QueryFromDbParam param) {
+        service.exportExcel(response, param);
+    }
+
 }

+ 4 - 14
src/main/java/thyyxxk/webserver/dao/his/clockin/ClockinDao.java

@@ -1,11 +1,14 @@
 package thyyxxk.webserver.dao.his.clockin;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Insert;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import thyyxxk.webserver.pojo.clockin.ClockinPojo;
 import thyyxxk.webserver.pojo.clockin.QueryFromDbParam;
 
+import java.util.Date;
 import java.util.List;
 
 @Mapper
@@ -30,23 +33,10 @@ public interface ClockinDao {
             "</script>")
     void insertIntoTable(List<ClockinPojo> list);
 
-    @Select("<script>" +
-            "select a.*, rtrim(b.name) name, rtrim(c.name) dept " +
-            "from clock_in a, a_employee_mi b, zd_unit_code c " +
-            "where a.checkin_time &gt; #{start} and a.checkin_time &lt; #{end} " +
-            "and a.userid = b.code_rs and isnull(b.del_flag, 0)!=1 and c.code=b.dept_code " +
-            "and userid in " +
-            "<foreach collection='userList' item='userid' open='(' separator=',' close=')'>" +
-            "#{userid}" +
-            "</foreach> " +
-            "order by checkin_time,userid" +
-            "</script>")
-    List<ClockinPojo> getClockInDataFromDb(QueryFromDbParam param);
-
     @Select("select a.*, rtrim(b.name) name, rtrim(c.name) dept " +
             "from clock_in a, a_employee_mi b, zd_unit_code c " +
             "where a.checkin_time>#{start} and a.checkin_time<#{end} " +
             "and a.userid = b.code_rs and isnull(b.del_flag, 0)!=1 " +
             "and c.code=b.dept_code order by checkin_date,userid")
-    List<ClockinPojo> getAllClockInDataFromDb(QueryFromDbParam param);
+    IPage<ClockinPojo> getAllClockInDataFromDb(IPage<ClockinPojo> iPage, @Param("start") Date start, @Param("end") Date end);
 }

+ 5 - 1
src/main/java/thyyxxk/webserver/pojo/clockin/QueryFromDbParam.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import javax.validation.constraints.NotNull;
 import java.util.Date;
 import java.util.List;
 
@@ -15,5 +16,8 @@ public class QueryFromDbParam {
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date end;
-    private List<String> userList;
+    @NotNull(message = "当前页码不能为空。")
+    private Integer currentPage;
+    @NotNull(message = "单页数据量不能为空。")
+    private Integer pageSize;
 }

+ 45 - 4
src/main/java/thyyxxk/webserver/service/clockin/ClockinService.java

@@ -1,5 +1,8 @@
 package thyyxxk.webserver.service.clockin;
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -8,8 +11,11 @@ import thyyxxk.webserver.pojo.ResultVo;
 import thyyxxk.webserver.pojo.clockin.ClockinPojo;
 import thyyxxk.webserver.pojo.clockin.ClockinViewPojo;
 import thyyxxk.webserver.pojo.clockin.QueryFromDbParam;
+import thyyxxk.webserver.utils.DateUtil;
+import thyyxxk.webserver.utils.ExcelUtil;
 import thyyxxk.webserver.utils.ResultVoUtil;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -25,10 +31,45 @@ public class ClockinService {
         this.dao = dao;
     }
 
-    public ResultVo<List<ClockinViewPojo>> getClockinDataFromDb(QueryFromDbParam param) {
-        List<ClockinPojo> origin = (null == param.getUserList() || param.getUserList().isEmpty()) ?
-                dao.getAllClockInDataFromDb(param) : dao.getClockInDataFromDb(param);
-        return ResultVoUtil.success(combineData(origin));
+    public ResultVo<Map<String, Object>> getClockinDataFromDb(QueryFromDbParam param) {
+        Map<String, Object> map = new HashMap<>();
+        IPage<ClockinPojo> iPage = getClockinIPage(param);
+        map.put("totalSize", iPage.getTotal());
+        map.put("list", combineData(iPage.getRecords()));
+        return ResultVoUtil.success(map);
+    }
+
+    public void exportExcel(HttpServletResponse response, QueryFromDbParam param) {
+        log.info("导出打卡数据Excel: {}", JSON.toJSONString(param));
+        IPage<ClockinPojo> iPage = getClockinIPage(param);
+        List<ClockinViewPojo> list = combineData(iPage.getRecords());
+        String[] title = {"日期","姓名","工号","科室", "打卡次数", "工作时长", "上班打卡时间", "上班打卡地点",
+                "上班打卡状态", "上班打卡备注", "下班打卡时间", "下班打卡地点", "下班打卡状态", "下班打卡备注"};
+        String[][] content = new String[list.size()][];
+        for (int i = 0; i < list.size(); i++) {
+            content[i] = new String[title.length];
+            ClockinViewPojo pojo = list.get(i);
+            content[i][0] = pojo.getCheckinDate();
+            content[i][1] = pojo.getName();
+            content[i][2] = pojo.getUserid();
+            content[i][3] = pojo.getDept();
+            content[i][4] = String.valueOf(pojo.getTimes());
+            content[i][5] = pojo.getWorktime();
+            content[i][6] = pojo.getCheckinHourOn();
+            content[i][7] = pojo.getCheckinAddrOn();
+            content[i][8] = pojo.getCheckinStateOn();
+            content[i][9] = pojo.getNotesOn();
+            content[i][10] = pojo.getCheckinHourOff();
+            content[i][11] = pojo.getCheckinAddrOff();
+            content[i][12] = pojo.getCheckinStateOff();
+            content[i][13] = pojo.getNotesOff();
+        }
+        ExcelUtil.exportExcel(response, title, content);
+    }
+
+    private IPage<ClockinPojo> getClockinIPage(QueryFromDbParam param) {
+        IPage<ClockinPojo> iPage = new Page<>(param.getCurrentPage(), param.getPageSize());
+        return dao.getAllClockInDataFromDb(iPage, param.getStart(), param.getEnd());
     }
 
     private List<ClockinViewPojo> combineData(List<ClockinPojo> origin) {