Commit eda18c424b84b43669891b97649ef0475996ec52

Authored by baishou_zjx
1 parent f06e2b0e
Exists in master

晨检机器人移动端接口初步完成

Showing 23 changed files with 460 additions and 72 deletions   Show diff stats
springboot/morning-check/src/main/java/com/sincere/morningcheck/MorningCheckApplication.java
1 1 package com.sincere.morningcheck;
2 2  
3   -import org.mybatis.spring.annotation.MapperScan;
4 3 import org.springframework.boot.SpringApplication;
5   -import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
6 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
7 5 import org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration;
8 6 import org.springframework.context.annotation.Bean;
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/common/MD5.java
... ... @@ -30,6 +30,7 @@ public class MD5 {
30 30 public static boolean verify(String text, String key, String md5) throws Exception {
31 31 //根据传入的密钥进行验证
32 32 String md5Text = md5(text, key);
  33 + System.out.println("签名:"+md5Text);
33 34 if(md5Text.equalsIgnoreCase(md5))
34 35 {
35 36 return true;
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/config/CustomConfiguration.java 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +package com.sincere.morningcheck.config;
  2 +
  3 +
  4 +import org.springframework.beans.factory.annotation.Autowired;
  5 +import org.springframework.context.annotation.Configuration;
  6 +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  7 +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  8 +
  9 +@Configuration
  10 +public class CustomConfiguration implements WebMvcConfigurer {
  11 + @Autowired
  12 + private MessageProperties config; //用来获取file-message.properties配置文件中的信息
  13 + public void addResourceHandlers(ResourceHandlerRegistry registry) {
  14 + //上传的图片在D盘下的E:/MorningRobot/UploadData/images/目录下,访问路径如:http://localhost:8081/images/1.jpg
  15 + //其中images表示访问的前缀。"file:E:/MorningRobot/UploadData/images/"是文件真实的存储路径
  16 + registry.addResourceHandler("/images/**").addResourceLocations("file:"+config.getUpPath());
  17 + }
  18 +}
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/config/Swagger2.java
... ... @@ -28,7 +28,7 @@ public class Swagger2 {
28 28 private ApiInfo apiInfo() {
29 29 return new ApiInfoBuilder()
30 30 .title("晨检机使用的WebApi说明文档")
31   - .contact(new Contact("Ziv","localhost:8080/swagger-ui.html",""))
  31 + .contact(new Contact("Ziv","localhost:8999/swagger-ui.html",""))
32 32 .description("")
33 33 .termsOfServiceUrl("")
34 34 .version("2.0")
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/controller/CheckReportController.java 0 → 100644
... ... @@ -0,0 +1,34 @@
  1 +package com.sincere.morningcheck.controller;
  2 +
  3 +import com.sincere.morningcheck.common.ServerResponse;
  4 +import com.sincere.morningcheck.model.ApiStudentCheckReport;
  5 +import com.sincere.morningcheck.service.StudentCheckReportService;
  6 +import io.swagger.annotations.Api;
  7 +import io.swagger.annotations.ApiImplicitParam;
  8 +import io.swagger.annotations.ApiOperation;
  9 +
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.web.bind.annotation.GetMapping;
  12 +import org.springframework.web.bind.annotation.RequestMapping;
  13 +import org.springframework.web.bind.annotation.RequestParam;
  14 +import org.springframework.web.bind.annotation.RestController;
  15 +
  16 +
  17 +@RestController
  18 +@RequestMapping("check_report")
  19 +@Api(value = "CheckReportController",tags = "晨检机检查报告接口")
  20 +public class CheckReportController {
  21 +
  22 +
  23 + @Autowired
  24 + StudentCheckReportService studentCheckReportService;
  25 + @ApiOperation(value = "根据学生的用户ID获取学生晨检报告")
  26 + @ApiImplicitParam(name="stuUserId",value = "学生用户ID",required = true)
  27 + @GetMapping("getCheckReport")
  28 + public ServerResponse<ApiStudentCheckReport> getCheckReport(@RequestParam String stuUserId){
  29 +
  30 + return studentCheckReportService.getCheckReport(stuUserId);
  31 + }
  32 +
  33 +
  34 +}
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/controller/MorningCheckController.java
... ... @@ -5,8 +5,10 @@ import com.sincere.morningcheck.common.MD5;
5 5 import com.sincere.morningcheck.common.ServerResponse;
6 6 import com.sincere.morningcheck.model.School;
7 7 import com.sincere.morningcheck.model.Student;
  8 +import com.sincere.morningcheck.model.StudentCheckReport;
8 9 import com.sincere.morningcheck.model.User;
9 10 import com.sincere.morningcheck.service.FileUpAndDownService;
  11 +import com.sincere.morningcheck.service.StudentCheckReportService;
10 12 import com.sincere.morningcheck.service.StudentService;
11 13 import com.sincere.morningcheck.service.UserServer;
12 14 import com.sincere.morningcheck.service.impl.FileUpAndDownServiceImpl;
... ... @@ -22,6 +24,9 @@ import org.springframework.beans.factory.annotation.Value;
22 24 import org.springframework.web.bind.annotation.*;
23 25 import org.springframework.web.multipart.MultipartFile;
24 26  
  27 +import javax.servlet.http.HttpServletRequest;
  28 +import javax.servlet.http.HttpServletResponse;
  29 +import javax.servlet.http.HttpSession;
25 30 import java.text.ParseException;
26 31 import java.text.SimpleDateFormat;
27 32 import java.util.Calendar;
... ... @@ -39,7 +44,6 @@ public class MorningCheckController {
39 44 @Value("${salt}")
40 45 private String salt;
41 46  
42   - EhcacheUtil ehcacheUtil = new EhcacheUtil();
43 47 @Autowired
44 48 UserServer userServer;
45 49  
... ... @@ -49,6 +53,9 @@ public class MorningCheckController {
49 53 @Autowired
50 54 FileUpAndDownService fileUpAndDownService;
51 55  
  56 + @Autowired
  57 + StudentCheckReportService studentCheckReportService;
  58 +
52 59 @ApiOperation("设备请求登陆接口")
53 60 @ApiImplicitParams ({
54 61 @ApiImplicitParam(name = "deviceNo", value = "设备号", dataType = "String",required = true,paramType = "query"),
... ... @@ -56,9 +63,8 @@ public class MorningCheckController {
56 63 @ApiImplicitParam(name = "authSign", value = "签名", dataType = "String",required = true,paramType = "query"),
57 64 })
58 65 @PostMapping("login")
59   - public ServerResponse login(@RequestParam String deviceNo, @RequestParam String password,@RequestParam String authSign){
  66 + public ServerResponse login(HttpServletRequest request,@RequestParam String deviceNo, @RequestParam String password,@RequestParam String authSign){
60 67  
61   -// System.out.println("传入的参数:设备号"+deviceNo+",密码:"+password+",签名"+authSign);
62 68 ServerResponse serverResponse = null;
63 69  
64 70 Map map = new HashMap();
... ... @@ -72,14 +78,15 @@ public class MorningCheckController {
72 78 System.out.println(signUrl);
73 79 // String md5 = MD5.md5(signUrl, salt);
74 80 boolean verify = MD5.verify(signUrl,salt,authSign);
75   - System.out.println("签名是否正确"+verify);
76 81  
77 82 if(verify) {
78 83  
79 84 User user = userServer.getDeviceUser(deviceNo);
80 85 user.setParameter("0");
81 86 user.setToken(token);
82   - ehcacheUtil.set("deviceId",user.getDeviceId());
  87 + HttpSession session = request.getSession();
  88 + session.setAttribute("deviceId",user.getDeviceId());
  89 + session.setMaxInactiveInterval(-1);//从不过期
83 90 serverResponse = ServerResponse.createBySuccess("success",user);
84 91  
85 92 }else{
... ... @@ -148,9 +155,8 @@ public class MorningCheckController {
148 155 "时间格式为 : yyyy-MM-dd-HH-mm-ss", dataType = "String",paramType = "query")
149 156 })
150 157 @PostMapping("signByCard")
151   - public ServerResponse swipeCard(@RequestParam String token,@RequestParam String cardNo,@RequestParam Integer imageId,@RequestParam String authSign,@RequestParam(required = false) String date){
  158 + public ServerResponse swipeCard(HttpServletRequest request,@RequestParam String token,@RequestParam String cardNo,@RequestParam Integer imageId,@RequestParam String authSign,@RequestParam(required = false) String date){
152 159  
153   -// System.out.println("刷卡签到传入的参数:卡号"+cardNo+",图片ID:"+imageId+",签名"+authSign);
154 160 LogUtil.printInfoLog("刷卡签到传入的参数:卡号"+cardNo+",图片ID:"+imageId+",签名"+authSign);
155 161 ServerResponse serverResponse = null;
156 162  
... ... @@ -185,21 +191,16 @@ public class MorningCheckController {
185 191 boolean verify = MD5.verify(signUrl,salt,authSign);
186 192 System.out.println("签名是否正确"+verify);
187 193 if(verify) {
188   - int index = imageId -1;
189   - if(FileUpAndDownServiceImpl.globalFileEntities.size()>0) {
190   - System.out.println("对应图像地址:" + FileUpAndDownServiceImpl.globalFileEntities.get(index).getImgObPath());
191   - }
192   - //卡号,图片,刷卡时间(如果没有, 当前时间),设备号
193   - System.out.println("卡号:"+cardNo+",图片ID"+imageId+",设备标识:"+ehcacheUtil.get("deviceId")+",当前时间"+date+",刷进设备的卡号是:"+card);
194   -
  194 + HttpSession session = request.getSession();
  195 + String deviceId = session.getAttribute("deviceId").toString();
195 196 Map<String,Object> hashMap = new HashMap<>();
196 197 //设备编号
197   - hashMap.put("att_id",ehcacheUtil.get("deviceId"));
  198 + hashMap.put("att_id",deviceId);
198 199 hashMap.put("card_num",card);
199 200 hashMap.put("func_no","08");
200 201 hashMap.put("flag",0);
201 202 hashMap.put("intime",dateIn);
202   - System.out.println(dateIn);
  203 + System.out.println(deviceId);
203 204  
204 205 studentService.swipeCard(hashMap);
205 206 System.out.println("集合数量:"+hashMap.size());
... ... @@ -232,9 +233,8 @@ public class MorningCheckController {
232 233 @ApiImplicitParam(name = "authSign", value = "签名", dataType = "String",required = true,paramType = "query")
233 234 })
234 235 @PostMapping("signOutByCard")
235   - public ServerResponse signOutByCard(@RequestParam String token,@RequestParam String cardNo,@RequestParam Integer imageId,@RequestParam String authSign){
  236 + public ServerResponse signOutByCard(HttpServletRequest request,@RequestParam String token,@RequestParam String cardNo,@RequestParam Integer imageId,@RequestParam String authSign){
236 237  
237   -// System.out.println("离园签到传入的参数:卡号"+cardNo+",图片ID:"+imageId+",签名"+authSign);
238 238 ServerResponse serverResponse = null;
239 239 LogUtil.printInfoLog("离园签到传入的参数:卡号"+cardNo+",图片ID:"+imageId+",签名"+authSign);
240 240  
... ... @@ -251,15 +251,10 @@ public class MorningCheckController {
251 251 boolean verify = MD5.verify(signUrl,salt,authSign);
252 252 System.out.println("签名是否正确"+verify);
253 253 if(verify) {
254   -
255   - int index = imageId -1;
256   - if(FileUpAndDownServiceImpl.globalFileEntities.size()>0) {
257   - System.out.println("对应图像地址:" + FileUpAndDownServiceImpl.globalFileEntities.get(index).getImgObPath());
258   - }
259   - //卡号,图片,刷卡时间(如果没有, 当前时间),设备号
260   - System.out.println("卡号:"+cardNo+",图片ID"+imageId+",设备标识:"+ehcacheUtil.get("deviceId")+",刷进设备的卡号是:"+card);
  254 + HttpSession session = request.getSession();
  255 + String deviceId = session.getAttribute("deviceId").toString();
261 256 Map<String,Object> hashMap = new HashMap<>();
262   - hashMap.put("att_id",ehcacheUtil.get("deviceId"));
  257 + hashMap.put("att_id",deviceId);
263 258 hashMap.put("card_num",card);
264 259 hashMap.put("func_no","08");
265 260 hashMap.put("flag",0);
... ... @@ -272,8 +267,7 @@ public class MorningCheckController {
272 267 String msg = String.format("学生%s你好",student.getStuName());
273 268 serverResponse = ServerResponse.createBySuccessMessage(msg);
274 269 }else{
275   -
276   - serverResponse = ServerResponse.createByErrorMessage("签名失败");
  270 + serverResponse = ServerResponse.createByErrorMessage("签名校验失败");
277 271 }
278 272 }
279 273 catch (Exception ex){
... ... @@ -293,11 +287,7 @@ public class MorningCheckController {
293 287 })
294 288 public ServerResponse moreFileUpload(@RequestParam(value = "file", required = false) MultipartFile[] file, @RequestParam(value = "token") String token, @RequestParam(value="type") String type,@RequestParam String authSign) {
295 289  
296   -
297 290 LogUtil.printInfoLog("上传多个文件传入的类型:"+type+",签名:"+authSign);
298   -// System.out.println("上传多个文件传入的类型:"+type+",签名:"+authSign);
299   -
300   - System.out.println("文件数量:"+file.length);
301 291  
302 292 ServerResponse serverResponse = null;
303 293 Map map = new HashMap();
... ... @@ -306,24 +296,22 @@ public class MorningCheckController {
306 296  
307 297 String[] fileNames = type.split("_");
308 298 if(fileNames.length != file.length){
309   - System.out.println("类型数量和文件数量不一致,程序中断");
310 299 return ServerResponse.createByErrorMessage("类型数量和文件数量不一致,程序中断");
311   - }else {
312   - System.out.println("类型数量和文件数量一致,文件已经上传");
313 300 }
  301 +
314 302 String queryUrl = DataConvertHelper.mapAscSortToUrl(map);
315 303 try {
316 304 String signUrl = queryUrl.replace("&","");
317 305 // String md5 = MD5.md5(signUrl, salt);
318 306 boolean verify = MD5.verify(signUrl,salt,authSign);
319   - System.out.println("签名是否正确"+verify);
320 307 if(verify) {
321 308 try {
322 309 serverResponse = fileUpAndDownService.uploadPicture(file,fileNames);
323 310 } catch (Exception e) {
324   - System.out.println(">>>>>>图片上传异常,ex="+e.getMessage());
325 311 serverResponse = ServerResponse.createByErrorMessage(String.format(">>>>>>图片上传异常,e=%s", e.getMessage()));
326 312 }
  313 + }else{
  314 + serverResponse = ServerResponse.createByErrorMessage("签名校验失败");
327 315 }
328 316 }
329 317 catch (Exception ex){
... ... @@ -351,14 +339,9 @@ public class MorningCheckController {
351 339 @PostMapping("uploadCheckReport")
352 340 public ServerResponse uploadCheckReport(@RequestParam String token,@RequestParam String cardNo,@RequestParam String result,@RequestParam String robotResult,@RequestParam String access,@RequestParam String temperature,@RequestParam(required = false) String handImgId,@RequestParam(required = false) String mouthImgId,@RequestParam(required = false) String eyeImgId,@RequestParam String authSign){
353 341  
354   -// System.out.println("传入的参数:卡号"+cardNo+",检查结果:"+result+",检查机判断结果:"+robotResult+",签名"+authSign);
355   - LogUtil.printInfoLog("传入的参数:卡号"+cardNo+",检查结果:"+result+",检查机判断结果:"+robotResult+",签名"+authSign);
356   - System.out.println("嘴部异常图片ID:"+mouthImgId);
357   - System.out.println("手部异常图片ID:"+handImgId);
358   - System.out.println("眼部异常图片ID:"+eyeImgId);
359   - System.out.println("入园许可。 Y : 入园 N:离园:入园情况:"+access);
  342 + LogUtil.printInfoLog("传入的参数:卡号"+cardNo+",检查结果:"+result+",检查机判断结果:"+robotResult+",签名"+authSign+"入园许可。 Y : 入园 N:离园:入园情况:"+access);
360 343  
361   - ServerResponse serverResponse = null;
  344 + ServerResponse serverResponse;
362 345  
363 346 String card = DataConvertHelper.distToX(Long.valueOf(cardNo));
364 347  
... ... @@ -377,20 +360,26 @@ public class MorningCheckController {
377 360 try {
378 361 String signUrl = queryUrl.replace("&","");
379 362 boolean verify = MD5.verify(signUrl,salt,authSign);
380   - System.out.println("签名是否正确"+verify);
381 363 if(verify) {
  364 + StudentCheckReport studentCheckReport = new StudentCheckReport();
  365 + studentCheckReport.setAccess(access);
  366 + studentCheckReport.setCardNo(card);
  367 + studentCheckReport.setCheckResult(result);
  368 + studentCheckReport.setRobotResult(robotResult);
  369 + java.sql.Date checkDate = new java.sql.Date(new Date().getTime());
  370 + studentCheckReport.setCheckTime(checkDate);
  371 + studentCheckReport.setInTime(checkDate);
  372 + studentCheckReport.setTemperature(temperature);
  373 + studentCheckReport.setEyeImgId(eyeImgId);
  374 + studentCheckReport.setHandImgId(handImgId);
  375 + studentCheckReport.setMouthImgId(mouthImgId);
382 376  
383   -// int index = handImgId -1;
384   -// System.out.println("手部异常图像地址:"+FileUpAndDownServiceImpl.globalFileEntities.get(index).getImgObPath());
385   -// index = mouthImgId -1;
386   -// System.out.println("嘴部异常图像地址:"+FileUpAndDownServiceImpl.globalFileEntities.get(index).getImgObPath());
387   -// index = eyeImgId -1;
388   -// System.out.println("眼部异常图像地址:"+FileUpAndDownServiceImpl.globalFileEntities.get(index).getImgObPath());
389   - //卡号,图片,刷卡时间(如果没有, 当前时间),设备号
390   - System.out.println("卡号:"+cardNo+",图片ID"+handImgId+",设备标识:"+ehcacheUtil.get("deviceId")+",刷进设备的卡号是:"+card);
391 377 //message: 学生姓名你好
392 378 Student student = studentService.getStudentByCardNo(card);
393 379 String msg = String.format("学生%s你好,你的晨检报告已经自动生成",student.getStuName());
  380 + studentCheckReport.setStudent_id(student.getStuId());
  381 + studentCheckReportService.insert(studentCheckReport);
  382 +
394 383 serverResponse = ServerResponse.createBySuccessMessage(msg);
395 384 }else{
396 385  
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/dao/FileDao.java 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +package com.sincere.morningcheck.dao;
  2 +
  3 +import com.sincere.morningcheck.model.FileEntity;
  4 +import org.apache.ibatis.annotations.Mapper;
  5 +import org.springframework.stereotype.Repository;
  6 +
  7 +@Mapper
  8 +@Repository
  9 +public interface FileDao {
  10 +
  11 + int insert(FileEntity fileEntity);
  12 +}
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/dao/StudentCheckReportDao.java 0 → 100644
... ... @@ -0,0 +1,15 @@
  1 +package com.sincere.morningcheck.dao;
  2 +
  3 +import com.sincere.morningcheck.model.StudentCheckReport;
  4 +import org.apache.ibatis.annotations.Mapper;
  5 +import org.apache.ibatis.annotations.Param;
  6 +import org.springframework.stereotype.Repository;
  7 +
  8 +@Mapper
  9 +@Repository
  10 +public interface StudentCheckReportDao {
  11 +
  12 + int insert(StudentCheckReport studentCheckReport);
  13 +
  14 + StudentCheckReport getCheckReport(@Param("studentId") Integer studentId);
  15 +}
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/dao/StudentDao.java
... ... @@ -17,6 +17,8 @@ public interface StudentDao {
17 17  
18 18 Student getStudentByCardNo(@Param("cardNo") String cardNo);
19 19  
  20 + Student getStudentByStuUserId(@Param("sUserId") String sUserId);
  21 +
20 22 /**
21 23 * 传入的参数和返回的结果都在map集合参数params中
22 24 * @param params
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/model/ApiStudentCheckReport.java 0 → 100644
... ... @@ -0,0 +1,36 @@
  1 +package com.sincere.morningcheck.model;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +
  7 +import java.sql.Date;
  8 +
  9 +/**
  10 + * 接口使用类 检查报告
  11 + */
  12 +@Data
  13 +@ApiModel
  14 +public class ApiStudentCheckReport {
  15 +
  16 + @ApiModelProperty(name="id",value = "检查报告标识")
  17 + private Integer id;
  18 +
  19 + @ApiModelProperty(name="isMorningCheck",value = "判断是否有晨检")
  20 + private Boolean isMorningCheck;
  21 +
  22 + @ApiModelProperty(name="student_id",value = "学生标识")
  23 + private Integer student_id;
  24 +
  25 + @ApiModelProperty(name="cardNo",value = "学生卡号")
  26 + private String cardNo;
  27 +
  28 + @ApiModelProperty(name="temperature",value = "温度")
  29 + private String temperature; //json字符串
  30 +
  31 + @ApiModelProperty(name="CheckTime",value = "检查报告时间")
  32 + private String checkTime;
  33 +
  34 + @ApiModelProperty(name="checkResultObj",value = "检查报告")
  35 + private CheckResult checkResultObj;
  36 +}
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/model/CheckResult.java 0 → 100644
... ... @@ -0,0 +1,49 @@
  1 +package com.sincere.morningcheck.model;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +
  7 +/**
  8 + * 人为判断结果
  9 + */
  10 +@Data
  11 +@ApiModel
  12 +public class CheckResult {
  13 +
  14 + @ApiModelProperty(name = "handNoEx",value = "00位,手足是否正常,true正常,false不正常")
  15 + private Boolean handNoEx;
  16 +
  17 + @ApiModelProperty(name = "mouthNoEx",value = "01位,口腔是否正常,true正常,false不正常")
  18 + private Boolean mouthNoEx;
  19 +
  20 + @ApiModelProperty(name = "noRedEye",value = "02位,true正常,false红眼")
  21 + private Boolean noRedEye;
  22 +
  23 + @ApiModelProperty(name = "noFever",value = "03位,true正常,false发烧")
  24 + private Boolean noFever;
  25 +
  26 + @ApiModelProperty(name = "noCrotchBig",value = "04位,true正常,false腮部肿大")
  27 + private Boolean noCrotchBig;
  28 +
  29 + @ApiModelProperty(name = "noPoorSpirit",value = "05,true正常,false精神不佳")
  30 + private Boolean noPoorSpirit;
  31 +
  32 + @ApiModelProperty(name = "noPharyngitis",value = "06,true正常,false咽炎")
  33 + private Boolean noPharyngitis;
  34 +
  35 + @ApiModelProperty(name = "noTrauma",value = "07,true正常,false外伤")
  36 + private Boolean noTrauma;
  37 +
  38 + @ApiModelProperty(name = "noCough",value = "08,true正常,false咳嗽")
  39 + private Boolean noCough;
  40 +
  41 + @ApiModelProperty(name = "noNail",value = "09,true正常,false过长")
  42 + private Boolean noNail;
  43 +
  44 + @ApiModelProperty(name = "noToothDecay",value = "10,true正常,false蛀牙")
  45 + private Boolean noToothDecay;
  46 +
  47 + @ApiModelProperty(name = "other",value = "true正常,false不正常")
  48 + private Boolean other;
  49 +}
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/model/FileEntity.java
... ... @@ -3,6 +3,8 @@ package com.sincere.morningcheck.model;
3 3 import com.sincere.morningcheck.common.ImgType;
4 4 import lombok.Data;
5 5  
  6 +import java.sql.Date;
  7 +
6 8 @Data
7 9 public class FileEntity {
8 10  
... ... @@ -11,9 +13,9 @@ public class FileEntity {
11 13 */
12 14 private Integer photoId;
13 15 /**
14   - * 头像存储的位置(对路径)
  16 + * 头像存储的位置(对路径)
15 17 */
16   - private String imgObPath;
  18 + private String imgRePath;
17 19 /**
18 20 * 文件新名称
19 21 */
... ... @@ -26,4 +28,6 @@ public class FileEntity {
26 28 * 文件旧名称
27 29 */
28 30 private String oldFileName;
  31 +
  32 + private Date inTime;
29 33 }
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/model/StudentCheckReport.java 0 → 100644
... ... @@ -0,0 +1,41 @@
  1 +package com.sincere.morningcheck.model;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.sql.Date;
  6 +
  7 +@Data
  8 +public class StudentCheckReport {
  9 +
  10 +
  11 + private Integer id;
  12 +
  13 + private Integer student_id;
  14 +
  15 + private String cardNo;
  16 +
  17 + /**
  18 + * 人为判别结果
  19 + */
  20 + private String checkResult; //json字符串
  21 +
  22 + /**
  23 + * 机器判别结果
  24 + */
  25 + private String robotResult; //json字符串
  26 +
  27 + private Date checkTime;
  28 +
  29 + private Date inTime;
  30 +
  31 + private String access;
  32 +
  33 + private String temperature;
  34 +
  35 + private String handImgId;
  36 +
  37 + private String mouthImgId;
  38 +
  39 + private String eyeImgId;
  40 +
  41 +}
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/service/FileUpAndDownService.java
1 1 package com.sincere.morningcheck.service;
2 2  
3 3 import com.sincere.morningcheck.common.ServerResponse;
  4 +import com.sincere.morningcheck.model.FileEntity;
4 5 import org.springframework.web.multipart.MultipartFile;
5 6  
6 7  
7 8 public interface FileUpAndDownService {
8 9  
9 10 ServerResponse uploadPicture(MultipartFile[] file, String[] file_Types) throws Exception;
  11 +
  12 + ServerResponse<Integer> insert(FileEntity fileEntity);
10 13 }
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/service/StudentCheckReportService.java 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +package com.sincere.morningcheck.service;
  2 +
  3 +
  4 +import com.sincere.morningcheck.common.ServerResponse;
  5 +import com.sincere.morningcheck.model.ApiStudentCheckReport;
  6 +import com.sincere.morningcheck.model.StudentCheckReport;
  7 +
  8 +public interface StudentCheckReportService {
  9 +
  10 + int insert(StudentCheckReport studentCheckReport);
  11 +
  12 + ServerResponse<ApiStudentCheckReport> getCheckReport(String stuUserId);
  13 +}
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/service/impl/FileUpAndDownServiceImpl.java
... ... @@ -3,6 +3,7 @@ package com.sincere.morningcheck.service.impl;
3 3 import com.sincere.morningcheck.common.ImgType;
4 4 import com.sincere.morningcheck.common.ServerResponse;
5 5 import com.sincere.morningcheck.config.MessageProperties;
  6 +import com.sincere.morningcheck.dao.FileDao;
6 7 import com.sincere.morningcheck.model.FileEntity;
7 8 import com.sincere.morningcheck.model.Photo;
8 9 import com.sincere.morningcheck.service.FileUpAndDownService;
... ... @@ -21,19 +22,19 @@ public class FileUpAndDownServiceImpl implements FileUpAndDownService {
21 22 @Autowired
22 23 private MessageProperties config; //用来获取file-message.properties配置文件中的信息
23 24  
24   - static Integer photoId = 0;
25   - public static List<FileEntity> globalFileEntities = new LinkedList<>();
  25 + @Autowired
  26 + private FileDao fileDao;
  27 +
26 28 @Override
27 29 public ServerResponse uploadPicture(MultipartFile[] files, String[] file_types) throws Exception {
28 30  
29   - System.out.println("进入上传文件方法。");
30 31 List<FileEntity> fileEntities = new LinkedList<>();
31 32 int i = 0;
32 33 for(MultipartFile file : files) {
33 34 System.out.println(file.getOriginalFilename());
34 35  
35 36 try {
36   - photoId++; //每进一次方法自增一次,模拟主键自增
  37 +
37 38 Map<String, Object> resMap = new HashMap<>();
38 39 String[] IMAGE_TYPE = config.getImageType().split(",");
39 40 String path = null;
... ... @@ -54,11 +55,13 @@ public class FileUpAndDownServiceImpl implements FileUpAndDownService {
54 55 String suffix = oldFileName.substring(oldFileName.lastIndexOf("."));//带逗号,不带逗号加1
55 56 // 新名称
56 57 String imgType = file_types[i];
57   - String newFileName = imgType + "_photoId"+photoId+suffix;
  58 + UUID uuid = UUID.randomUUID();
  59 + String newFileName = imgType+ "_" + uuid.toString().replace("-","") +suffix;
58 60 i++;
59 61 // 年月日文件夹
60 62 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
61 63 String basedir = sdf.format(new Date());
  64 + String rePath = "/images/" + basedir + "/" + newFileName;
62 65 // 进行压缩(大于4M)
63 66 if (file.getSize() > config.getFileSize()) {
64 67 path = config.getUpPath() + "/" + basedir + "/" + newFileName;
... ... @@ -82,16 +85,18 @@ public class FileUpAndDownServiceImpl implements FileUpAndDownService {
82 85 }
83 86  
84 87 FileEntity fileEntity = new FileEntity();
85   - fileEntity.setPhotoId(photoId);
  88 +
86 89 fileEntity.setFileName(newFileName);
87   - fileEntity.setImgObPath(path);
  90 + fileEntity.setImgRePath(rePath);
88 91 fileEntity.setOldFileName(oldFileName);
89 92 fileEntity.setImgType(ImgType.valueOf(imgType));
90 93  
  94 + fileEntity.setInTime( new java.sql.Date(new Date().getTime()));
  95 + fileEntity.setPhotoId(0);
  96 + insert(fileEntity);
91 97 fileEntities.add(fileEntity);
92 98  
93 99 } else {
94   - System.out.println("result:图片格式不正确,支持png|jpg|jpeg");
95 100 return ServerResponse.createByErrorMessage("result:图片格式不正确,支持png|jpg|jpeg");
96 101 }
97 102 } catch (Exception e) {
... ... @@ -99,7 +104,8 @@ public class FileUpAndDownServiceImpl implements FileUpAndDownService {
99 104 throw new Exception(e.getMessage());
100 105 }
101 106 }
102   - globalFileEntities.addAll(fileEntities);
  107 +
  108 + //返回结果
103 109 Map<String,Object> map = new HashMap<>();
104 110  
105 111 List<Photo> photoIds = new ArrayList<>();
... ... @@ -112,4 +118,12 @@ public class FileUpAndDownServiceImpl implements FileUpAndDownService {
112 118 map.put("photoIds",photoIds);
113 119 return ServerResponse.createBySuccess(map);
114 120 }
  121 +
  122 + @Override
  123 + public ServerResponse<Integer> insert(FileEntity fileEntity) {
  124 +
  125 + int result = fileDao.insert(fileEntity);
  126 + return ServerResponse.createBySuccess(result);
  127 + }
  128 +
115 129 }
... ...
springboot/morning-check/src/main/java/com/sincere/morningcheck/service/impl/StudentCheckReportServiceImpl.java 0 → 100644
... ... @@ -0,0 +1,86 @@
  1 +package com.sincere.morningcheck.service.impl;
  2 +
  3 +import com.sincere.morningcheck.common.ServerResponse;
  4 +import com.sincere.morningcheck.dao.StudentCheckReportDao;
  5 +import com.sincere.morningcheck.dao.StudentDao;
  6 +import com.sincere.morningcheck.model.ApiStudentCheckReport;
  7 +import com.sincere.morningcheck.model.CheckResult;
  8 +import com.sincere.morningcheck.model.Student;
  9 +import com.sincere.morningcheck.model.StudentCheckReport;
  10 +import com.sincere.morningcheck.service.StudentCheckReportService;
  11 +import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.stereotype.Service;
  13 +
  14 +import java.text.SimpleDateFormat;
  15 +
  16 +@Service
  17 +public class StudentCheckReportServiceImpl implements StudentCheckReportService {
  18 +
  19 + @Autowired
  20 + StudentCheckReportDao studentCheckReportDao;
  21 +
  22 + @Autowired
  23 + StudentDao studentDao;
  24 +
  25 + @Override
  26 + public int insert(StudentCheckReport studentCheckReport) {
  27 + return studentCheckReportDao.insert(studentCheckReport);
  28 + }
  29 +
  30 + @Override
  31 + public ServerResponse<ApiStudentCheckReport> getCheckReport(String stuUserId) {
  32 +
  33 + StudentCheckReport studentCheckReport;
  34 +
  35 + Student student = studentDao.getStudentByStuUserId(stuUserId);
  36 + studentCheckReport = studentCheckReportDao.getCheckReport(student.getStuId());
  37 + Boolean isMorningCheck;
  38 + if(studentCheckReport == null){
  39 + isMorningCheck = false;
  40 + }else{
  41 + isMorningCheck = true;
  42 + }
  43 +
  44 + ApiStudentCheckReport apiStudentCheckReport = getApiStudentReport(studentCheckReport,isMorningCheck);
  45 + return ServerResponse.createBySuccess(apiStudentCheckReport);
  46 + }
  47 +
  48 + private ApiStudentCheckReport getApiStudentReport(StudentCheckReport studentCheckReport,Boolean isMorningCheck){
  49 +
  50 + ApiStudentCheckReport apiStudentCheckReport = new ApiStudentCheckReport();
  51 + if(isMorningCheck) {
  52 + apiStudentCheckReport.setCardNo(studentCheckReport.getCardNo());
  53 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
  54 + apiStudentCheckReport.setCheckTime(simpleDateFormat.format(studentCheckReport.getCheckTime()));
  55 + apiStudentCheckReport.setStudent_id(studentCheckReport.getStudent_id());
  56 + apiStudentCheckReport.setTemperature(studentCheckReport.getTemperature());
  57 + char[] chs = studentCheckReport.getCheckResult().toCharArray();
  58 + CheckResult checkResult = new CheckResult();
  59 +
  60 + //前12位
  61 + checkResult.setHandNoEx(isJudge(Character.toString(chs[0])));
  62 + checkResult.setMouthNoEx(isJudge(Character.toString(chs[1])));
  63 + checkResult.setNoRedEye(isJudge(Character.toString(chs[2])));
  64 + checkResult.setNoFever(isJudge(Character.toString(chs[3])));
  65 + checkResult.setNoCrotchBig(isJudge(Character.toString(chs[4])));
  66 + checkResult.setNoPoorSpirit(isJudge(Character.toString(chs[5])));
  67 + checkResult.setNoPharyngitis(isJudge(Character.toString(chs[6])));
  68 + checkResult.setNoTrauma(isJudge(Character.toString(chs[7])));
  69 + checkResult.setNoCough(isJudge(Character.toString(chs[8])));
  70 + checkResult.setNoNail(isJudge(Character.toString(chs[9])));
  71 + checkResult.setNoToothDecay(isJudge(Character.toString(chs[10])));
  72 + checkResult.setOther(isJudge(Character.toString(chs[11])));
  73 + apiStudentCheckReport.setCheckResultObj(checkResult);
  74 + }
  75 + apiStudentCheckReport.setIsMorningCheck(isMorningCheck);
  76 + return apiStudentCheckReport;
  77 + }
  78 +
  79 + private Boolean isJudge(String yesOrNo){
  80 +
  81 + if(yesOrNo.equals("Y")){
  82 + return true;
  83 + }
  84 + return false;
  85 + }
  86 +}
... ...
springboot/morning-check/src/main/resources/application.properties
... ... @@ -2,9 +2,15 @@ salt = sincere
2 2  
3 3 server.port=8999
4 4  
5   -spring.datasource.username=szjxtuser
6   -spring.datasource.password=RQminVCJota3H1u8bBYH
7   -spring.datasource.url=jdbc:sqlserver://116.62.155.137:33419;database=smartcampus
  5 +#正式站点数据库
  6 +#spring.datasource.username=szjxtuser
  7 +#spring.datasource.password=RQminVCJota3H1u8bBYH
  8 +#spring.datasource.url=jdbc:sqlserver://116.62.155.137:33419;database=smartcampus
  9 +
  10 +#测试站点数据库
  11 +spring.datasource.username=SZJXTUSER
  12 +spring.datasource.password=xst200919
  13 +spring.datasource.url=jdbc:sqlserver://60.190.202.57:14333;Database=SmartCampusSZ
8 14 spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
9 15  
10 16 mybatis.mapper-locations=classpath:/mapper/*.xml
... ...
springboot/morning-check/src/main/resources/file-message.properties
1 1 #文件压缩大小(大于5兆压缩)
2 2 message.fileSize=5242880
3 3 #图片保存路径
4   -message.upPath=D:\\MorningRobot\\UploadData\\images
  4 +message.upPath=E:/MorningRobot/UploadData/images/
5 5 #压缩比例
6 6 message.scaleRatio=0.90f
7 7 #图片类型
... ...
springboot/morning-check/src/main/resources/mapper/StudentCheckReport.xml 0 → 100644
... ... @@ -0,0 +1,37 @@
  1 +<?xml version="1.0" encoding="UTF-8" ?>
  2 +<!DOCTYPE mapper
  3 + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4 + "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5 +<mapper namespace="com.sincere.morningcheck.dao.StudentCheckReportDao">
  6 +
  7 + <!--声明返回结果参数-->
  8 + <resultMap id="BaseResultMap" type="com.sincere.morningcheck.model.StudentCheckReport">
  9 + <!-- id:指定查询列中的唯 一标识,即主键,可配置多个-->
  10 + <id 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="checkResult" property="checkResult" jdbcType="VARCHAR" javaType="java.lang.String"/>
  13 + <result column="robotResult" property="robotResult" jdbcType="VARCHAR" javaType="java.lang.String"/>
  14 + <result column="String" property="String" jdbcType="VARCHAR" javaType="java.lang.String"/>
  15 + <result column="intime" property="inTime" jdbcType="DATE" javaType="java.sql.Date"/>
  16 + <result column="checkTime" property="checkTime" jdbcType="DATE" javaType="java.sql.Date"/>
  17 + <result column="temperature" property="temperature" jdbcType="VARCHAR" javaType="java.lang.String"/>
  18 + <result column="handImgId" property="handImgId" jdbcType="VARCHAR" javaType="java.lang.String"/>
  19 + <result column="mouthImgId" property="mouthImgId" jdbcType="VARCHAR" javaType="java.lang.String"/>
  20 + <result column="eyeImgId" property="eyeImgId" jdbcType="VARCHAR" javaType="java.lang.String"/>
  21 + </resultMap>
  22 +
  23 + <sql id="Base_Column_List">
  24 + student_id,cardNo,checkTime,checkResult,robotResult,intime,access,temperature,handImgId,mouthImgId,eyeImgId
  25 + </sql>
  26 +
  27 + <insert id="insert" 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 +values(#{student_id,jdbcType=VARCHAR}, #{cardNo,jdbcType=VARCHAR}, #{checkResult,jdbcType=VARCHAR}, #{robotResult,jdbcType=VARCHAR},#{inTime,jdbcType=DATE},#{checkTime,jdbcType=DATE},#{access,jdbcType=VARCHAR},#{temperature,jdbcType=VARCHAR},#{handImgId,jdbcType=VARCHAR},#{mouthImgId,jdbcType=VARCHAR},#{eyeImgId,jdbcType=VARCHAR})
  30 +</insert>
  31 +
  32 + <select id="getCheckReport" resultMap="BaseResultMap">
  33 + 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)
  35 + </select>
  36 +
  37 +</mapper>
0 38 \ No newline at end of file
... ...
springboot/morning-check/src/main/resources/mapper/filemapper.xml 0 → 100644
... ... @@ -0,0 +1,25 @@
  1 +<?xml version="1.0" encoding="UTF-8" ?>
  2 +<!DOCTYPE mapper
  3 + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4 + "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5 +<mapper namespace="com.sincere.morningcheck.dao.FileDao">
  6 +
  7 + <!--声明返回结果参数-->
  8 + <resultMap id="BaseResultMap" type="com.sincere.morningcheck.model.FileEntity">
  9 + <!-- id:指定查询列中的唯 一标识,即主键,可配置多个-->
  10 + <id column="id" property="photoId" jdbcType="INTEGER" javaType="java.lang.Integer"/>
  11 + <result column="imgRePath" property="imgRePath" jdbcType="VARCHAR" javaType="java.lang.String"/>
  12 + <result column="fileName" property="fileName" jdbcType="INTEGER" javaType="java.lang.Integer"/>
  13 + <result column="imgType" property="imgType" jdbcType="VARCHAR" javaType="com.sincere.morningcheck.common.ImgType"/>
  14 + <result column="oldFileName" property="oldFileName" jdbcType="VARCHAR" javaType="java.lang.String"/>
  15 + <result column="intime" property="inTime" jdbcType="DATE" javaType="java.sql.Date"/>
  16 + </resultMap>
  17 +
  18 +
  19 +<!--useGeneratedKeys="true" keyProperty="photoId" 配置属性是用来获取插入返回的-->
  20 +<insert id="insert" useGeneratedKeys="true" keyProperty="photoId" parameterType="com.sincere.morningcheck.model.FileEntity" >
  21 + insert xiaoan.dbo.SZ_MorningCheckFile(imgRePath,fileName,imgType,oldFileName,intime)
  22 +values(#{imgRePath,jdbcType=VARCHAR}, #{fileName,jdbcType=VARCHAR}, #{imgType,jdbcType=VARCHAR}, #{oldFileName,jdbcType=VARCHAR},#{inTime,jdbcType=DATE})
  23 +</insert>
  24 +
  25 +</mapper>
0 26 \ No newline at end of file
... ...
springboot/morning-check/src/main/resources/mapper/studentmapper.xml
... ... @@ -33,6 +33,11 @@
33 33 where vs.role_state=1
34 34 </select>
35 35  
  36 + <select id="getStudentByStuUserId" resultMap="BaseResultMap">
  37 + select top 1 vs.name,vs.student_id,vs.class_id,vs.class_name,Cards=vs.student_num from SZ_V_School_Student vs
  38 + where user_id=#{sUserId}
  39 + </select>
  40 +
36 41 <select id="swipeCard" statementType="CALLABLE" resultType="java.util.Map">
37 42 {call xiaoan.dbo.AttendanceService(
38 43 #{att_id, mode=IN},
... ...
springboot/src/main/java/com/sincre/springboot/controller/TuYaYunController.java
... ... @@ -465,7 +465,7 @@ public class TuYaYunController {
465 465 return ServerResponse.createByErrorCodeMessage(400,"参数错误");
466 466 }
467 467 else{
468   - if(StringUtils.isBlank(tuYaAirCondition.getRemote_id())||StringUtils.isBlank(tuYaAirCondition.getRemote_index())){
  468 + if(StringUtils.isBlank(tuYaAirCondition.getRemote_index())){
469 469 return ServerResponse.createByErrorCodeMessage(400,"参数错误");
470 470 }
471 471 }
... ...