Commit aceb80c1341e6e827311f1cce3cad7f744881bac

Authored by baishou_zjx
1 parent 5556ee02
Exists in master

机器人接口对接完成

springboot/morning-check/pom.xml
@@ -115,6 +115,11 @@ @@ -115,6 +115,11 @@
115 <version>2.0.0</version> 115 <version>2.0.0</version>
116 </dependency> 116 </dependency>
117 117
  118 + <dependency>
  119 + <groupId>org.apache.poi</groupId>
  120 + <artifactId>poi</artifactId>
  121 + <version>4.0.0</version>
  122 + </dependency>
118 </dependencies> 123 </dependencies>
119 124
120 <build> 125 <build>
springboot/morning-check/src/main/java/com/sincere/morningcheck/controller/CheckReportController.java
1 package com.sincere.morningcheck.controller; 1 package com.sincere.morningcheck.controller;
2 2
3 import com.sincere.morningcheck.common.ServerResponse; 3 import com.sincere.morningcheck.common.ServerResponse;
  4 +import com.sincere.morningcheck.model.ApiStudent;
4 import com.sincere.morningcheck.model.ApiStudentCheckReport; 5 import com.sincere.morningcheck.model.ApiStudentCheckReport;
5 import com.sincere.morningcheck.service.StudentCheckReportService; 6 import com.sincere.morningcheck.service.StudentCheckReportService;
  7 +import com.sincere.morningcheck.utils.ExcelUtils;
6 import io.swagger.annotations.Api; 8 import io.swagger.annotations.Api;
7 import io.swagger.annotations.ApiImplicitParam; 9 import io.swagger.annotations.ApiImplicitParam;
8 import io.swagger.annotations.ApiImplicitParams; 10 import io.swagger.annotations.ApiImplicitParams;
9 import io.swagger.annotations.ApiOperation; 11 import io.swagger.annotations.ApiOperation;
10 12
  13 +import org.apache.poi.hssf.usermodel.HSSFWorkbook;
11 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.web.bind.annotation.GetMapping; 15 import org.springframework.web.bind.annotation.GetMapping;
13 import org.springframework.web.bind.annotation.RequestMapping; 16 import org.springframework.web.bind.annotation.RequestMapping;
14 import org.springframework.web.bind.annotation.RequestParam; 17 import org.springframework.web.bind.annotation.RequestParam;
15 import org.springframework.web.bind.annotation.RestController; 18 import org.springframework.web.bind.annotation.RestController;
16 19
  20 +import javax.servlet.http.HttpServletResponse;
  21 +import java.util.ArrayList;
  22 +import java.util.List;
  23 +
17 24
18 @RestController 25 @RestController
19 @RequestMapping("check_report") 26 @RequestMapping("check_report")
@@ -48,9 +55,129 @@ public class CheckReportController { @@ -48,9 +55,129 @@ public class CheckReportController {
48 @ApiImplicitParam(name = "gradeId",value = "年级标识",required = true) 55 @ApiImplicitParam(name = "gradeId",value = "年级标识",required = true)
49 }) 56 })
50 @GetMapping("getCheckExReportByGrade") 57 @GetMapping("getCheckExReportByGrade")
51 - public ServerResponse getCheckExReportByGrade(@RequestParam Integer schoolId,@RequestParam Integer gradeId){ 58 + public ServerResponse getCheckExReportByGrade(@RequestParam Integer schoolId,@RequestParam Integer gradeId,@RequestParam String checkTime){
  59 +
  60 + return studentCheckReportService.getCheckExReportByGrade(schoolId,gradeId,checkTime);
  61 + }
  62 +
  63 + @ApiOperation(value = "学生晨检报告报表")
  64 + @ApiImplicitParams({
  65 + @ApiImplicitParam(name = "schoolId",value = "学校ID",required = true),
  66 + @ApiImplicitParam(name = "checkTime",value = "检查报告的时间,格式为yyyy-MM-dd",required = true),
  67 + @ApiImplicitParam(name = "gradeId",value = "年级ID",defaultValue = "0")
  68 + })
  69 + @GetMapping("getCheckReportData")
  70 + public ServerResponse getCheckReportData(@RequestParam Integer schoolId,@RequestParam String checkTime,@RequestParam(name = "gradeId",required = false) Integer gradeId){
52 71
53 - return studentCheckReportService.getCheckExReportByGrade(schoolId,gradeId); 72 + return studentCheckReportService.getCheckReportData(schoolId,checkTime,gradeId);
54 } 73 }
55 74
  75 +
  76 + @ApiOperation("导出报表")
  77 + @ApiImplicitParams({
  78 + @ApiImplicitParam(name = "schoolId",value = "学校ID",required = true),
  79 + @ApiImplicitParam(name = "checkTime",value = "检查报告的时间,格式为yyyy-MM-dd",required = true),
  80 + @ApiImplicitParam(name = "gradeId",value = "年级ID",defaultValue = "0")
  81 + })
  82 + @GetMapping("excelCheckReportData")
  83 + public void excelCheckReportData(HttpServletResponse response, @RequestParam Integer schoolId, @RequestParam String checkTime,@RequestParam(name = "gradeId",required = false) Integer gradeId){
  84 +
  85 + //查询出需要导出的数据
  86 + List<ApiStudent> apiStudentList=studentCheckReportService.getCheckReportData(schoolId,checkTime,gradeId).getData();
  87 + //创建报表数据头
  88 + List<String> head = new ArrayList<>();
  89 + head.add("姓名");
  90 + head.add("班级");
  91 + head.add("入园时间");
  92 + head.add("手检");
  93 + head.add("眼检");
  94 + head.add("口腔");
  95 + head.add("喉咙");
  96 + head.add("体温");
  97 + head.add("腮部");
  98 + head.add("外表");
  99 + head.add("外伤情况");
  100 + head.add("指甲");
  101 + head.add("牙齿");
  102 + head.add("其他");
  103 + head.add("处理情况");
  104 + //创建报表体
  105 + List<List<String>> body = new ArrayList<>();//模拟二维集合
  106 + if(apiStudentList!=null) {
  107 + for (ApiStudent stu : apiStudentList) {
  108 + List<String> bodyValue = new ArrayList<>();
  109 + bodyValue.add(String.valueOf(stu.getStuName()));
  110 + bodyValue.add(stu.getClassName());
  111 + bodyValue.add(String.valueOf(stu.getCheckTime()));
  112 + if (stu.getCheckResultObj().getHandNoEx()) {
  113 + bodyValue.add("正常");
  114 + } else {
  115 + bodyValue.add("异常cellStyle");
  116 + }
  117 + if (stu.getCheckResultObj().getNoRedEye()) {
  118 + bodyValue.add("正常");
  119 + } else {
  120 + bodyValue.add("红眼cellStyle");
  121 + }
  122 + if (stu.getCheckResultObj().getMouthNoEx()) {
  123 + bodyValue.add("正常");
  124 + } else {
  125 + bodyValue.add("异常cellStyle");
  126 + }
  127 + if (stu.getCheckResultObj().getNoPharyngitis()&&stu.getCheckResultObj().getNoCough()) {
  128 + bodyValue.add("正常");
  129 + } else {
  130 + String desc = "";
  131 + if(!stu.getCheckResultObj().getNoPharyngitis()){
  132 + desc = desc + "咽炎、" ;
  133 + }
  134 + if(!stu.getCheckResultObj().getNoCough()){
  135 + desc = desc + "咳嗽" ;
  136 + }
  137 + bodyValue.add(desc+"cellStyle");
  138 + }
  139 + if (stu.getCheckResultObj().getNoFever()) {
  140 + bodyValue.add("正常");
  141 + } else {
  142 + bodyValue.add("发烧cellStyle");
  143 + }
  144 + if (stu.getCheckResultObj().getNoCrotchBig()) {
  145 + bodyValue.add("正常");
  146 + } else {
  147 + bodyValue.add("腮部肿大cellStyle");
  148 + }
  149 + if (stu.getCheckResultObj().getNoPoorSpirit()) {
  150 + bodyValue.add("正常");
  151 + } else {
  152 + bodyValue.add("精神不佳cellStyle");
  153 + }
  154 + if (stu.getCheckResultObj().getNoTrauma()) {
  155 + bodyValue.add("正常");
  156 + } else {
  157 + bodyValue.add("外伤cellStyle");
  158 + }
  159 + if (stu.getCheckResultObj().getNoNail()) {
  160 + bodyValue.add("正常");
  161 + } else {
  162 + bodyValue.add("过长cellStyle");
  163 + }
  164 + if (stu.getCheckResultObj().getNoToothDecay()) {
  165 + bodyValue.add("正常");
  166 + } else {
  167 + bodyValue.add("蛀牙cellStyle");
  168 + }
  169 + if (stu.getCheckResultObj().getOther()) {
  170 + bodyValue.add("正常");
  171 + } else {
  172 + bodyValue.add("异常cellStyle");
  173 + }
  174 + bodyValue.add("");
  175 + //将数据添加到报表体中
  176 + body.add(bodyValue);
  177 + }
  178 + }
  179 + String fileName = checkTime+"_学生晨检报告.xls";
  180 + HSSFWorkbook excel = ExcelUtils.expExcel(head,body);
  181 + ExcelUtils.outFileStream(excel,fileName,response);
  182 + }
56 } 183 }
springboot/morning-check/src/main/java/com/sincere/morningcheck/controller/MorningCheckController.java
@@ -3,10 +3,7 @@ package com.sincere.morningcheck.controller; @@ -3,10 +3,7 @@ package com.sincere.morningcheck.controller;
3 import com.sincere.morningcheck.common.EhcacheUtil; 3 import com.sincere.morningcheck.common.EhcacheUtil;
4 import com.sincere.morningcheck.common.MD5; 4 import com.sincere.morningcheck.common.MD5;
5 import com.sincere.morningcheck.common.ServerResponse; 5 import com.sincere.morningcheck.common.ServerResponse;
6 -import com.sincere.morningcheck.model.School;  
7 -import com.sincere.morningcheck.model.Student;  
8 -import com.sincere.morningcheck.model.StudentCheckReport;  
9 -import com.sincere.morningcheck.model.User; 6 +import com.sincere.morningcheck.model.*;
10 import com.sincere.morningcheck.service.FileUpAndDownService; 7 import com.sincere.morningcheck.service.FileUpAndDownService;
11 import com.sincere.morningcheck.service.StudentCheckReportService; 8 import com.sincere.morningcheck.service.StudentCheckReportService;
12 import com.sincere.morningcheck.service.StudentService; 9 import com.sincere.morningcheck.service.StudentService;
@@ -366,7 +363,6 @@ public class MorningCheckController { @@ -366,7 +363,6 @@ public class MorningCheckController {
366 studentCheckReport.setCardNo(card); 363 studentCheckReport.setCardNo(card);
367 studentCheckReport.setCheckResult(result); 364 studentCheckReport.setCheckResult(result);
368 studentCheckReport.setRobotResult(robotResult); 365 studentCheckReport.setRobotResult(robotResult);
369 - //java.sql.Date checkDate = new java.sql.Date(new Date().getTime());  
370 Date checkDate = new Date(); 366 Date checkDate = new Date();
371 studentCheckReport.setCheckTime(checkDate); 367 studentCheckReport.setCheckTime(checkDate);
372 studentCheckReport.setInTime(checkDate); 368 studentCheckReport.setInTime(checkDate);
@@ -379,8 +375,29 @@ public class MorningCheckController { @@ -379,8 +375,29 @@ public class MorningCheckController {
379 Student student = studentService.getStudentByCardNo(card); 375 Student student = studentService.getStudentByCardNo(card);
380 String msg = String.format("学生%s你好,你的晨检报告已经自动生成",student.getStuName()); 376 String msg = String.format("学生%s你好,你的晨检报告已经自动生成",student.getStuName());
381 studentCheckReport.setStudent_id(student.getStuId()); 377 studentCheckReport.setStudent_id(student.getStuId());
382 - studentCheckReportService.insert(studentCheckReport);  
383 378
  379 + StudentCheckReport studentCheckReportEntity= studentCheckReportService.getCheckReport(student.getStuId());
  380 + if(studentCheckReportEntity==null){
  381 + studentCheckReportService.insert(studentCheckReport);
  382 + }else{
  383 + studentCheckReport.setId(studentCheckReportEntity.getId());
  384 + int updateCount = studentCheckReportService.updateByStudent(studentCheckReport);
  385 + }
  386 +
  387 + StudentCheckReportHis studentCheckReportHis = new StudentCheckReportHis();
  388 + studentCheckReportHis.setAccess(studentCheckReport.getAccess());
  389 + studentCheckReportHis.setCardNo(studentCheckReport.getCardNo());
  390 + studentCheckReportHis.setCheck_id(studentCheckReport.getId());
  391 + studentCheckReportHis.setCheckResult(studentCheckReport.getCheckResult());
  392 + studentCheckReportHis.setRobotResult(studentCheckReport.getRobotResult());
  393 + studentCheckReportHis.setInTime(studentCheckReport.getInTime());
  394 + studentCheckReportHis.setCheckTime(studentCheckReport.getCheckTime());
  395 + studentCheckReportHis.setTemperature(studentCheckReport.getTemperature());
  396 + studentCheckReportHis.setEyeImgId(studentCheckReport.getEyeImgId());
  397 + studentCheckReportHis.setHandImgId(studentCheckReport.getHandImgId());
  398 + studentCheckReportHis.setMouthImgId(studentCheckReport.getMouthImgId());
  399 + studentCheckReportHis.setStudent_id(studentCheckReport.getStudent_id());
  400 + studentCheckReportService.insertCheckHis(studentCheckReportHis);
384 serverResponse = ServerResponse.createBySuccessMessage(msg); 401 serverResponse = ServerResponse.createBySuccessMessage(msg);
385 }else{ 402 }else{
386 403
springboot/morning-check/src/main/java/com/sincere/morningcheck/dao/StudentCheckReportDao.java
@@ -2,6 +2,7 @@ package com.sincere.morningcheck.dao; @@ -2,6 +2,7 @@ package com.sincere.morningcheck.dao;
2 2
3 import com.sincere.morningcheck.model.ClassExReport; 3 import com.sincere.morningcheck.model.ClassExReport;
4 import com.sincere.morningcheck.model.StudentCheckReport; 4 import com.sincere.morningcheck.model.StudentCheckReport;
  5 +import com.sincere.morningcheck.model.StudentCheckReportHis;
5 import org.apache.ibatis.annotations.Mapper; 6 import org.apache.ibatis.annotations.Mapper;
6 import org.apache.ibatis.annotations.Param; 7 import org.apache.ibatis.annotations.Param;
7 import org.springframework.stereotype.Repository; 8 import org.springframework.stereotype.Repository;
@@ -14,11 +15,20 @@ public interface StudentCheckReportDao { @@ -14,11 +15,20 @@ public interface StudentCheckReportDao {
14 15
15 int insert(StudentCheckReport studentCheckReport); 16 int insert(StudentCheckReport studentCheckReport);
16 17
  18 + int insertCheckHis(StudentCheckReportHis studentCheckReportHis);
  19 +
  20 + /**
  21 + * 根据卡号和学生标识修改学生检查报告信息
  22 + * @param studentCheckReport
  23 + * @return
  24 + */
  25 + int updateByStudent(StudentCheckReport studentCheckReport);
  26 +
17 List<StudentCheckReport> getCheckReport(@Param("studentId") Integer studentId); 27 List<StudentCheckReport> getCheckReport(@Param("studentId") Integer studentId);
18 28
19 int getCheckStuCountBySchoolId(@Param("schoolId")Integer schoolId,@Param("checkTime") String checkTime); 29 int getCheckStuCountBySchoolId(@Param("schoolId")Integer schoolId,@Param("checkTime") String checkTime);
20 30
21 List<StudentCheckReport> getCheckReportBySchoolId(@Param("schoolId")Integer schoolId,@Param("checkTime") String checkTime); 31 List<StudentCheckReport> getCheckReportBySchoolId(@Param("schoolId")Integer schoolId,@Param("checkTime") String checkTime);
22 32
23 - List<ClassExReport> getCheckExReportByGrade(@Param("schoolId")Integer schoolId,@Param("gradeId") Integer gradeId); 33 + List<ClassExReport> getCheckExReportByGrade(@Param("schoolId")Integer schoolId,@Param("gradeId") Integer gradeId,@Param("checkTime") String checkTime);
24 } 34 }
springboot/morning-check/src/main/java/com/sincere/morningcheck/model/ApiStudent.java 0 → 100644
@@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
  1 +package com.sincere.morningcheck.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +@Data
  6 +/**
  7 + * 用于报表导出
  8 + */
  9 +public class ApiStudent extends ApiStudentCheckReport {
  10 + private Integer classId;
  11 + private String stuName;
  12 + private String className;
  13 +
  14 +}
springboot/morning-check/src/main/java/com/sincere/morningcheck/model/CheckResult.java
@@ -38,7 +38,7 @@ public class CheckResult { @@ -38,7 +38,7 @@ public class CheckResult {
38 @ApiModelProperty(name = "noCough",value = "08,true正常,false咳嗽") 38 @ApiModelProperty(name = "noCough",value = "08,true正常,false咳嗽")
39 private Boolean noCough; 39 private Boolean noCough;
40 40
41 - @ApiModelProperty(name = "noNail",value = "09,true正常,false过长") 41 + @ApiModelProperty(name = "noNail",value = "09,true正常,false指甲过长")
42 private Boolean noNail; 42 private Boolean noNail;
43 43
44 @ApiModelProperty(name = "noToothDecay",value = "10,true正常,false蛀牙") 44 @ApiModelProperty(name = "noToothDecay",value = "10,true正常,false蛀牙")
springboot/morning-check/src/main/java/com/sincere/morningcheck/model/ClassExReport.java
@@ -7,9 +7,9 @@ public class ClassExReport { @@ -7,9 +7,9 @@ public class ClassExReport {
7 7
8 private Integer class_id; 8 private Integer class_id;
9 9
10 - private String className; 10 + private String name;
11 11
12 private Integer count; 12 private Integer count;
13 13
14 - private float exRate; 14 + private float value;
15 } 15 }
springboot/morning-check/src/main/java/com/sincere/morningcheck/model/StudentCheckReportHis.java 0 → 100644
@@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
  1 +package com.sincere.morningcheck.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.util.Date;
  6 +
  7 +@Data
  8 +/**
  9 + * 检查报告历史记录表
  10 + */
  11 +public class StudentCheckReportHis {
  12 + private Integer id;
  13 +
  14 + /**
  15 + * 检查报告表ID
  16 + */
  17 + private Integer check_id;
  18 +
  19 + private Integer student_id;
  20 +
  21 + private String cardNo;
  22 +
  23 + /**
  24 + * 人为判别结果
  25 + */
  26 + private String checkResult; //json字符串
  27 +
  28 + /**
  29 + * 机器判别结果
  30 + */
  31 + private String robotResult; //json字符串
  32 +
  33 + private Date checkTime;
  34 +
  35 + private Date inTime;
  36 +
  37 + private String access;
  38 +
  39 + private String temperature;
  40 +
  41 + private String handImgId;
  42 +
  43 + private String mouthImgId;
  44 +
  45 + private String eyeImgId;
  46 +}
springboot/morning-check/src/main/java/com/sincere/morningcheck/service/StudentCheckReportService.java
@@ -2,16 +2,33 @@ package com.sincere.morningcheck.service; @@ -2,16 +2,33 @@ package com.sincere.morningcheck.service;
2 2
3 3
4 import com.sincere.morningcheck.common.ServerResponse; 4 import com.sincere.morningcheck.common.ServerResponse;
  5 +import com.sincere.morningcheck.model.ApiStudent;
5 import com.sincere.morningcheck.model.ApiStudentCheckReport; 6 import com.sincere.morningcheck.model.ApiStudentCheckReport;
6 import com.sincere.morningcheck.model.StudentCheckReport; 7 import com.sincere.morningcheck.model.StudentCheckReport;
  8 +import com.sincere.morningcheck.model.StudentCheckReportHis;
  9 +
  10 +import java.util.List;
7 11
8 public interface StudentCheckReportService { 12 public interface StudentCheckReportService {
9 13
10 int insert(StudentCheckReport studentCheckReport); 14 int insert(StudentCheckReport studentCheckReport);
11 15
  16 + int insertCheckHis(StudentCheckReportHis studentCheckReportHis);
  17 +
  18 + /**
  19 + * 根据卡号和学生标识修改学生检查报告信息
  20 + * @param studentCheckReport
  21 + * @return
  22 + */
  23 + int updateByStudent(StudentCheckReport studentCheckReport);
  24 +
  25 + StudentCheckReport getCheckReport(Integer studentId);
  26 +
12 ServerResponse<ApiStudentCheckReport> getCheckReport(String stuUserId); 27 ServerResponse<ApiStudentCheckReport> getCheckReport(String stuUserId);
13 28
14 ServerResponse getCheckReportBySchool(Integer schoolId,String checkTime); 29 ServerResponse getCheckReportBySchool(Integer schoolId,String checkTime);
15 30
16 - ServerResponse getCheckExReportByGrade(Integer schoolId,Integer gradeId); 31 + ServerResponse getCheckExReportByGrade(Integer schoolId,Integer gradeId,String checkTime);
  32 +
  33 + ServerResponse<List<ApiStudent>> getCheckReportData(Integer schoolId, String checkTime,int gradeId);
17 } 34 }
springboot/morning-check/src/main/java/com/sincere/morningcheck/service/impl/StudentCheckReportServiceImpl.java
@@ -5,6 +5,7 @@ import com.sincere.morningcheck.dao.StudentCheckReportDao; @@ -5,6 +5,7 @@ import com.sincere.morningcheck.dao.StudentCheckReportDao;
5 import com.sincere.morningcheck.dao.StudentDao; 5 import com.sincere.morningcheck.dao.StudentDao;
6 import com.sincere.morningcheck.model.*; 6 import com.sincere.morningcheck.model.*;
7 import com.sincere.morningcheck.service.StudentCheckReportService; 7 import com.sincere.morningcheck.service.StudentCheckReportService;
  8 +import org.apache.commons.lang3.StringUtils;
8 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.stereotype.Service; 10 import org.springframework.stereotype.Service;
10 11
@@ -27,6 +28,25 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService @@ -27,6 +28,25 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService
27 } 28 }
28 29
29 @Override 30 @Override
  31 + public int insertCheckHis(StudentCheckReportHis studentCheckReportHis) {
  32 + return studentCheckReportDao.insertCheckHis(studentCheckReportHis);
  33 + }
  34 +
  35 + @Override
  36 + public int updateByStudent(StudentCheckReport studentCheckReport) {
  37 + return studentCheckReportDao.updateByStudent(studentCheckReport);
  38 + }
  39 +
  40 + @Override
  41 + public StudentCheckReport getCheckReport(Integer studentId) {
  42 + List<StudentCheckReport> studentCheckReports = studentCheckReportDao.getCheckReport(studentId);
  43 + if(studentCheckReports!=null&&studentCheckReports.size()>0){
  44 + return studentCheckReports.get(0);
  45 + }
  46 + return null;
  47 + }
  48 +
  49 + @Override
30 public ServerResponse<ApiStudentCheckReport> getCheckReport(String stuUserId) { 50 public ServerResponse<ApiStudentCheckReport> getCheckReport(String stuUserId) {
31 51
32 List<StudentCheckReport> studentCheckReports = new ArrayList<>(); 52 List<StudentCheckReport> studentCheckReports = new ArrayList<>();
@@ -160,9 +180,9 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService @@ -160,9 +180,9 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService
160 } 180 }
161 181
162 @Override 182 @Override
163 - public ServerResponse getCheckExReportByGrade(Integer schoolId, Integer gradeId) { 183 + public ServerResponse getCheckExReportByGrade(Integer schoolId, Integer gradeId,String checkTime) {
164 184
165 - List<ClassExReport> classExReports = studentCheckReportDao.getCheckExReportByGrade(schoolId,gradeId); 185 + List<ClassExReport> classExReports = studentCheckReportDao.getCheckExReportByGrade(schoolId,gradeId,checkTime);
166 float count = 0; 186 float count = 0;
167 for(ClassExReport classExReport : classExReports){ 187 for(ClassExReport classExReport : classExReports){
168 count = count + classExReport.getCount(); 188 count = count + classExReport.getCount();
@@ -170,7 +190,7 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService @@ -170,7 +190,7 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService
170 190
171 if(count>0){ 191 if(count>0){
172 for(ClassExReport classExReport : classExReports){ 192 for(ClassExReport classExReport : classExReports){
173 - classExReport.setExRate((classExReport.getCount()/count)*100); 193 + classExReport.setValue((classExReport.getCount()/count)*100);
174 } 194 }
175 }else { 195 }else {
176 return ServerResponse.createByErrorCodeMessage(10,"暂无数据"); 196 return ServerResponse.createByErrorCodeMessage(10,"暂无数据");
@@ -178,6 +198,39 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService @@ -178,6 +198,39 @@ public class StudentCheckReportServiceImpl implements StudentCheckReportService
178 return ServerResponse.createBySuccess(classExReports); 198 return ServerResponse.createBySuccess(classExReports);
179 } 199 }
180 200
  201 + @Override
  202 + public ServerResponse<List<ApiStudent>> getCheckReportData(Integer schoolId, String checkTime,int gradeId) {
  203 + List<StudentCheckReport> studentCheckReports = studentCheckReportDao.getCheckReportBySchoolId(schoolId,checkTime);
  204 +
  205 + List<ApiStudent> apiStudents = new ArrayList<>();
  206 + for(StudentCheckReport item : studentCheckReports){
  207 + ApiStudent apiStudent = new ApiStudent();
  208 + apiStudent.setCardNo(item.getCardNo());
  209 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm");
  210 + apiStudent.setCheckTime(simpleDateFormat.format(item.getCheckTime()));
  211 + apiStudent.setTemperature(item.getTemperature());
  212 + if(StringUtils.isNotBlank(item.getCheckResult())){
  213 + char[] chs = item.getCheckResult().toCharArray();
  214 + apiStudent.setCheckResultObj(getCheckResult(chs));
  215 + }
  216 + if(StringUtils.isNotBlank(item.getCardNo())){
  217 + Student student = studentDao.getStudentByCardNo(item.getCardNo());
  218 + apiStudent.setClassName(student.getClassName());
  219 + apiStudent.setStudent_id(student.getStuId());
  220 + apiStudent.setStuName(student.getStuName());
  221 + apiStudent.setClassId(student.getClassId());
  222 + }
  223 + apiStudents.add(apiStudent);
  224 + }
  225 + if(gradeId>0) {
  226 + apiStudents = apiStudents.stream().filter(n -> n.getClassId() == gradeId).collect(Collectors.toList());
  227 + }
  228 + if(apiStudents.size()<=0){
  229 + return ServerResponse.createByErrorCodeMessage(10,"暂无数据");
  230 + }
  231 + return ServerResponse.createBySuccess(apiStudents);
  232 + }
  233 +
181 private ApiStudentCheckReport getApiStudentReport(StudentCheckReport studentCheckReport,Boolean isMorningCheck){ 234 private ApiStudentCheckReport getApiStudentReport(StudentCheckReport studentCheckReport,Boolean isMorningCheck){
182 235
183 ApiStudentCheckReport apiStudentCheckReport = new ApiStudentCheckReport(); 236 ApiStudentCheckReport apiStudentCheckReport = new ApiStudentCheckReport();
springboot/morning-check/src/main/java/com/sincere/morningcheck/utils/ExcelUtils.java 0 → 100644
@@ -0,0 +1,149 @@ @@ -0,0 +1,149 @@
  1 +package com.sincere.morningcheck.utils;
  2 +
  3 +import org.apache.poi.hssf.usermodel.*;
  4 +import org.apache.poi.ss.usermodel.BorderStyle;
  5 +import org.apache.poi.ss.usermodel.FillPatternType;
  6 +import org.apache.poi.ss.usermodel.IndexedColors;
  7 +
  8 +import javax.servlet.http.HttpServletResponse;
  9 +import java.io.*;
  10 +import java.net.URLEncoder;
  11 +import java.text.SimpleDateFormat;
  12 +import java.util.Date;
  13 +import java.util.List;
  14 +
  15 +public class ExcelUtils {
  16 +
  17 + static final BorderStyle borderpx = BorderStyle.THIN;
  18 +
  19 + /**
  20 + * 导出excel表格
  21 + * @param head
  22 + * @param body
  23 + * @return
  24 + */
  25 + public static HSSFWorkbook expExcel(List<String> head, List<List<String>> body) {
  26 + HSSFWorkbook workbook = new HSSFWorkbook();
  27 + HSSFSheet sheet = workbook.createSheet("Sheet1");
  28 + HSSFRow row = sheet.createRow(0);
  29 + HSSFCell cell= null;
  30 + HSSFCellStyle cellStyle = workbook.createCellStyle();
  31 + setBorderStyle(cellStyle, borderpx);
  32 + cellStyle.setFont(setFontStyle(workbook, "黑体", (short) 14));
  33 + sheet.createFreezePane(0,1,0,1);
  34 +
  35 + for (int i = 0; i<head.size(); i++) {
  36 + cell = row.createCell(i);
  37 + cell.setCellValue(head.get(i));
  38 + cell.setCellStyle(cellStyle);
  39 + }
  40 +
  41 + HSSFCellStyle cellStyle2 = workbook.createCellStyle();
  42 + HSSFCellStyle cellStyleEx = workbook.createCellStyle();
  43 + setBorderStyle(cellStyle2, borderpx);
  44 + setBorderStyle(cellStyleEx, borderpx);
  45 + cellStyle2.setFont(setFontStyle(workbook, "宋体", (short) 12));
  46 + for (int i = 0; i < body.size(); i++) {
  47 + row = sheet.createRow(i + 1);
  48 + List<String> paramList = body.get(i);
  49 + for (int p = 0; p < paramList.size(); p++) {
  50 + cell = row.createCell(p);
  51 + String value = paramList.get(p);
  52 + if(value.contains("cellStyle")){
  53 + cellStyleEx.setFillForegroundColor(IndexedColors.RED.index);//是设置前景色不是背景色
  54 + cellStyleEx.setFillPattern(FillPatternType.SOLID_FOREGROUND);
  55 + value = value.replace("cellStyle","");
  56 + cell.setCellValue(value);
  57 + cell.setCellStyle(cellStyleEx);
  58 + }else{
  59 + cell.setCellValue(value);
  60 + cell.setCellStyle(cellStyle2);
  61 + }
  62 +
  63 + }
  64 + }
  65 + for (int i = 0, isize = head.size(); i < isize; i++) {
  66 + sheet.autoSizeColumn(i); //设置自动列宽
  67 + }
  68 +
  69 + return workbook;
  70 + }
  71 +
  72 + /**
  73 + * 以网络流的形势输出文件
  74 + * @author LiuYang
  75 + * @param workbook 填充好的workbook
  76 + */
  77 + public static void outFileStream(HSSFWorkbook workbook,String filename,HttpServletResponse response) {
  78 + try {
  79 + response.addHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(filename, "UTF-8"));
  80 + response.setContentType("application/vnd.ms-excel;charset=utf-8");//设置文本编码格式
  81 + workbook.write(response.getOutputStream());//直接把内容写在响应流中
  82 + } catch (FileNotFoundException e1) {
  83 + e1.printStackTrace();
  84 + } catch (IOException e) {
  85 + e.printStackTrace();
  86 + }
  87 + }
  88 + /**
  89 + * 文件输出
  90 + * @author LiuYang
  91 + * @param workbook 填充好的workbook
  92 + * @param path 存放的位置
  93 + */
  94 + public static void outFile(HSSFWorkbook workbook,String path,HttpServletResponse response) {
  95 + SimpleDateFormat fDate=new SimpleDateFormat("yyyyMMdd-HH点mm分");
  96 + path = path.substring(0, path.lastIndexOf(".")) + fDate.format(new Date()) + path.substring(path.lastIndexOf("."));
  97 + OutputStream os=null;
  98 + File file = null;
  99 + try {
  100 + file = new File(path); //首先保存到自己的文件路径下面
  101 + String filename = file.getName();
  102 + os = new FileOutputStream(file);
  103 + response.addHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(filename, "UTF-8"));
  104 + os= new BufferedOutputStream(response.getOutputStream());
  105 + response.setContentType("application/vnd.ms-excel;charset=utf-8");
  106 + workbook.write(os);
  107 + } catch (FileNotFoundException e1) {
  108 + e1.printStackTrace();
  109 + } catch (IOException e) {
  110 + e.printStackTrace();
  111 + }
  112 + try {
  113 + os.flush();
  114 + os.close();
  115 + System.gc();
  116 + System.out.println(file.delete());
  117 + } catch (IOException e) {
  118 + e.printStackTrace();
  119 + }
  120 + }
  121 + /**
  122 + * 设置字体样式
  123 + * @author LiuYang
  124 + * @param workbook 工作簿
  125 + * @param name 字体类型
  126 + * @param height 字体大小
  127 + * @return HSSFFont
  128 + */
  129 + private static HSSFFont setFontStyle(HSSFWorkbook workbook, String name, short height) {
  130 + HSSFFont font = workbook.createFont();
  131 + font.setFontHeightInPoints(height);
  132 + font.setFontName(name);
  133 + return font;
  134 + }
  135 +
  136 + /**
  137 + * 设置单元格样式
  138 + * @author LiuYang
  139 + * @param cellStyle 工作簿
  140 + * @param border border样式
  141 + */
  142 + private static void setBorderStyle(HSSFCellStyle cellStyle, BorderStyle border) {
  143 +
  144 + cellStyle.setBorderBottom(border); // 下边框
  145 + cellStyle.setBorderLeft(border);// 左边框
  146 + cellStyle.setBorderTop(border);// 上边框
  147 + cellStyle.setBorderRight(border);// 右边框
  148 + }
  149 +}
springboot/morning-check/src/main/resources/mapper/StudentCheckReport.xml
@@ -7,7 +7,8 @@ @@ -7,7 +7,8 @@
7 <!--声明返回结果参数--> 7 <!--声明返回结果参数-->
8 <resultMap id="BaseResultMap" type="com.sincere.morningcheck.model.StudentCheckReport"> 8 <resultMap id="BaseResultMap" type="com.sincere.morningcheck.model.StudentCheckReport">
9 <!-- id:指定查询列中的唯 一标识,即主键,可配置多个--> 9 <!-- id:指定查询列中的唯 一标识,即主键,可配置多个-->
10 - <id column="student_id" property="student_id" jdbcType="INTEGER" javaType="java.lang.Integer"/> 10 + <id column="id" property="id" jdbcType="INTEGER" javaType="java.lang.Integer"/>
  11 + <result column="student_id" property="student_id" jdbcType="INTEGER" javaType="java.lang.Integer"/>
11 <result column="cardNo" property="cardNo" jdbcType="VARCHAR" javaType="java.lang.String"/> 12 <result column="cardNo" property="cardNo" jdbcType="VARCHAR" javaType="java.lang.String"/>
12 <result column="checkResult" property="checkResult" jdbcType="VARCHAR" javaType="java.lang.String"/> 13 <result column="checkResult" property="checkResult" jdbcType="VARCHAR" javaType="java.lang.String"/>
13 <result column="robotResult" property="robotResult" jdbcType="VARCHAR" javaType="java.lang.String"/> 14 <result column="robotResult" property="robotResult" jdbcType="VARCHAR" javaType="java.lang.String"/>
@@ -21,14 +22,27 @@ @@ -21,14 +22,27 @@
21 </resultMap> 22 </resultMap>
22 23
23 <sql id="Base_Column_List"> 24 <sql id="Base_Column_List">
24 - student_id,cardNo,checkTime,checkResult,robotResult,intime,access,temperature,handImgId,mouthImgId,eyeImgId 25 + id,student_id,cardNo,checkTime,checkResult,robotResult,intime,access,temperature,handImgId,mouthImgId,eyeImgId
25 </sql> 26 </sql>
26 27
27 - <insert id="insert" parameterType="com.sincere.morningcheck.model.StudentCheckReport" > 28 + <insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.sincere.morningcheck.model.StudentCheckReport" >
28 insert xiaoan.dbo.SZ_StudentCheckReport(student_id,cardNo,checkResult,robotResult,intime,checkTime,access,temperature,handImgId,mouthImgId,eyeImgId) 29 insert xiaoan.dbo.SZ_StudentCheckReport(student_id,cardNo,checkResult,robotResult,intime,checkTime,access,temperature,handImgId,mouthImgId,eyeImgId)
29 -values(#{student_id,jdbcType=VARCHAR}, #{cardNo,jdbcType=VARCHAR}, #{checkResult,jdbcType=VARCHAR}, #{robotResult,jdbcType=VARCHAR},#{inTime,jdbcType=TIMESTAMP},#{checkTime,jdbcType=TIMESTAMP},#{access,jdbcType=VARCHAR},#{temperature,jdbcType=VARCHAR},#{handImgId,jdbcType=VARCHAR},#{mouthImgId,jdbcType=VARCHAR},#{eyeImgId,jdbcType=VARCHAR}) 30 +values(#{student_id,jdbcType=INTEGER}, #{cardNo,jdbcType=VARCHAR}, #{checkResult,jdbcType=VARCHAR}, #{robotResult,jdbcType=VARCHAR},#{inTime,jdbcType=TIMESTAMP},#{checkTime,jdbcType=TIMESTAMP},#{access,jdbcType=VARCHAR},#{temperature,jdbcType=VARCHAR},#{handImgId,jdbcType=VARCHAR},#{mouthImgId,jdbcType=VARCHAR},#{eyeImgId,jdbcType=VARCHAR})
30 </insert> 31 </insert>
31 32
  33 + <insert id="insertCheckHis" parameterType="com.sincere.morningcheck.model.StudentCheckReportHis" >
  34 + insert xiaoan.dbo.SZ_StudentCheckReportHistory(check_id,student_id,cardNo,checkResult,robotResult,intime,checkTime,access,temperature,handImgId,mouthImgId,eyeImgId)
  35 +values(#{check_id,jdbcType=INTEGER},#{student_id,jdbcType=INTEGER}, #{cardNo,jdbcType=VARCHAR}, #{checkResult,jdbcType=VARCHAR}, #{robotResult,jdbcType=VARCHAR},#{inTime,jdbcType=TIMESTAMP},#{checkTime,jdbcType=TIMESTAMP},#{access,jdbcType=VARCHAR},#{temperature,jdbcType=VARCHAR},#{handImgId,jdbcType=VARCHAR},#{mouthImgId,jdbcType=VARCHAR},#{eyeImgId,jdbcType=VARCHAR})
  36 +</insert>
  37 +
  38 + <update id="updateByStudent" parameterType="com.sincere.morningcheck.model.StudentCheckReport" >
  39 + update xiaoan.dbo.SZ_StudentCheckReport
  40 + <set>checkResult=#{checkResult,jdbcType=VARCHAR},robotResult=#{robotResult,jdbcType=VARCHAR},intime=#{inTime,jdbcType=TIMESTAMP},checkTime=#{checkTime,jdbcType=TIMESTAMP},access=#{access,jdbcType=VARCHAR},temperature=#{temperature,jdbcType=VARCHAR},handImgId=#{handImgId,jdbcType=VARCHAR},mouthImgId=#{mouthImgId,jdbcType=VARCHAR},eyeImgId=#{eyeImgId,jdbcType=VARCHAR}
  41 + </set>
  42 + where id=#{id,jdbcType=INTEGER}
  43 +
  44 + </update>
  45 +
32 <select id="getCheckReport" resultMap="BaseResultMap"> 46 <select id="getCheckReport" resultMap="BaseResultMap">
33 select <include refid="Base_Column_List"/> from xiaoan.[dbo].[SZ_StudentCheckReport] 47 select <include refid="Base_Column_List"/> from xiaoan.[dbo].[SZ_StudentCheckReport]
34 where student_id = #{studentId} and CONVERT(varchar(10),checkTime,23) = CONVERT(varchar(10),getdate(),23) 48 where student_id = #{studentId} and CONVERT(varchar(10),checkTime,23) = CONVERT(varchar(10),getdate(),23)
@@ -45,9 +59,9 @@ values(#{student_id,jdbcType=VARCHAR}, #{cardNo,jdbcType=VARCHAR}, #{checkResult @@ -45,9 +59,9 @@ values(#{student_id,jdbcType=VARCHAR}, #{cardNo,jdbcType=VARCHAR}, #{checkResult
45 </select> 59 </select>
46 60
47 <select id="getCheckExReportByGrade" resultType="com.sincere.morningcheck.model.ClassExReport"> 61 <select id="getCheckExReportByGrade" resultType="com.sincere.morningcheck.model.ClassExReport">
48 - select a.class_id,className=a.class_name,count = count(a.class_id) from SZ_V_School_Student a join SZ_Class b on a.class_id=b.class_id  
49 -left join xiaoan.[dbo].[SZ_StudentCheckReport] c on a.student_id = c.student_id  
50 -where a.school_id=#{schoolId} and state=1 and grade=#{gradeId} and CHARINDEX('N',checkResult)>0 62 + select a.class_id,name=a.class_name,count = count(a.class_id) from SZ_V_School_Student a join SZ_Class b on a.class_id=b.class_id
  63 +join xiaoan.[dbo].[SZ_StudentCheckReport] c on a.student_id = c.student_id
  64 +where a.school_id=#{schoolId} and state=1 and grade=#{gradeId} and CHARINDEX('N',checkResult)>0 and CONVERT(varchar,checkTime,23)=#{checkTime}
51 group by a.class_id,a.class_name 65 group by a.class_id,a.class_name
52 </select> 66 </select>
53 </mapper> 67 </mapper>
54 \ No newline at end of file 68 \ No newline at end of file