Commit acd712a65d52689f4378d7958eeb83c874f6db8e
1 parent
a2a3d070
Exists in
master
增加网关负载
Showing
51 changed files
with
2386 additions
and
1073 deletions
Show diff stats
cloud/dahua/src/main/java/com/example/dahua/MyTask.java
| 1 | 1 | package com.example.dahua; |
| 2 | 2 | |
| 3 | -import com.example.dahua.Gate.Gate; | |
| 4 | -import com.example.dahua.alarmListen.AlarmListenModule; | |
| 5 | 3 | import com.example.dahua.bean.CardBean; |
| 6 | 4 | import com.example.dahua.bean.DeviceInfoBean; |
| 7 | 5 | import com.example.dahua.bean.TeacherBean; |
| ... | ... | @@ -14,9 +12,7 @@ import com.example.dahua.module.AutoRegisterModule; |
| 14 | 12 | import com.example.dahua.module.GateModule; |
| 15 | 13 | import com.example.dahua.module.LoginModule; |
| 16 | 14 | import com.example.dahua.service.AttendanceService; |
| 17 | -import com.example.dahua.utils.FileUtils; | |
| 18 | 15 | import com.example.dahua.xiananDao.SendRecordDao; |
| 19 | -import com.sun.jna.NativeLong; | |
| 20 | 16 | import com.sun.jna.Pointer; |
| 21 | 17 | import org.springframework.beans.factory.annotation.Autowired; |
| 22 | 18 | import org.springframework.boot.ApplicationArguments; |
| ... | ... | @@ -25,7 +21,6 @@ import org.springframework.stereotype.Component; |
| 25 | 21 | import org.springframework.util.StringUtils; |
| 26 | 22 | |
| 27 | 23 | import javax.imageio.ImageIO; |
| 28 | -import java.awt.*; | |
| 29 | 24 | import java.awt.image.BufferedImage; |
| 30 | 25 | import java.io.ByteArrayInputStream; |
| 31 | 26 | import java.io.File; | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java
| ... | ... | @@ -190,7 +190,7 @@ public class MyScheduledTask { |
| 190 | 190 | File file = new File(filePath); |
| 191 | 191 | try { |
| 192 | 192 | if (!file.exists()) { |
| 193 | - System.out.println("文件不存在:" + filePath); | |
| 193 | +// System.out.println("文件不存在:" + filePath); | |
| 194 | 194 | return; |
| 195 | 195 | } |
| 196 | 196 | FileInputStream fileInputStream = new FileInputStream(file); | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/bean/PermissionBean.java
| 1 | 1 | package com.example.dahua.bean; |
| 2 | 2 | |
| 3 | +import io.swagger.annotations.ApiModelProperty; | |
| 4 | + | |
| 3 | 5 | import java.io.Serializable; |
| 4 | 6 | import java.util.List; |
| 5 | 7 | |
| 6 | 8 | public class PermissionBean implements Serializable { |
| 7 | 9 | |
| 10 | + @ApiModelProperty(value = "设备id",required = true) | |
| 8 | 11 | private List<String> deviceIds; |
| 9 | 12 | |
| 10 | 13 | private List<WeekDay> weekDays; |
| 11 | 14 | |
| 15 | + @ApiModelProperty("用逗号隔开,1:通校生,2:住校生,3:全部") | |
| 16 | + private String studentType; | |
| 17 | + | |
| 18 | + public String getStudentType() { | |
| 19 | + return studentType; | |
| 20 | + } | |
| 21 | + | |
| 22 | + public void setStudentType(String studentType) { | |
| 23 | + this.studentType = studentType; | |
| 24 | + } | |
| 25 | + | |
| 12 | 26 | public List<String> getDeviceIds() { |
| 13 | 27 | return deviceIds; |
| 14 | 28 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/bean/PermissionFaceBean.java
0 → 100644
| ... | ... | @@ -0,0 +1,108 @@ |
| 1 | +package com.example.dahua.bean; | |
| 2 | + | |
| 3 | +import com.fasterxml.jackson.annotation.JsonInclude; | |
| 4 | +import io.swagger.annotations.ApiModelProperty; | |
| 5 | +import org.apache.ibatis.annotations.Result; | |
| 6 | + | |
| 7 | +import java.io.Serializable; | |
| 8 | + | |
| 9 | +/** | |
| 10 | + * 人脸设备权限表 | |
| 11 | + * create table PermissionFace ( | |
| 12 | + * id int not null PRIMARY KEY , | |
| 13 | + * permissionJSON varchar(max) not null , | |
| 14 | + * schoolId int not null , | |
| 15 | + * perrmissName varchar(50) not null , | |
| 16 | + * createTime varchar(50) not null , | |
| 17 | + * updateTime varchar(50) not null , | |
| 18 | + * ) | |
| 19 | + */ | |
| 20 | +@JsonInclude(JsonInclude.Include.NON_EMPTY) | |
| 21 | +public class PermissionFaceBean implements Serializable { | |
| 22 | + | |
| 23 | + @ApiModelProperty(value = "删除和编辑时需要传") | |
| 24 | + private int id; | |
| 25 | + | |
| 26 | + @ApiModelProperty(required = true) | |
| 27 | + private PermissionBean permissionBean; | |
| 28 | + | |
| 29 | + @ApiModelProperty(required = true) | |
| 30 | + private int schoolId; | |
| 31 | + | |
| 32 | + @ApiModelProperty(value = "权限模板名称",required = true) | |
| 33 | + private String perrmissName; | |
| 34 | + | |
| 35 | + private String createTime; | |
| 36 | + | |
| 37 | + private String updateTime; | |
| 38 | + | |
| 39 | + @ApiModelProperty(notes = "备用字段,不用传") | |
| 40 | + private String permissionJson; | |
| 41 | + | |
| 42 | + @ApiModelProperty(value = "0-新增;1-编辑;2-删除",required = true) | |
| 43 | + private int type; | |
| 44 | + | |
| 45 | + public int getType() { | |
| 46 | + return type; | |
| 47 | + } | |
| 48 | + | |
| 49 | + public void setType(int type) { | |
| 50 | + this.type = type; | |
| 51 | + } | |
| 52 | + | |
| 53 | + public int getId() { | |
| 54 | + return id; | |
| 55 | + } | |
| 56 | + | |
| 57 | + public void setId(int id) { | |
| 58 | + this.id = id; | |
| 59 | + } | |
| 60 | + | |
| 61 | + public PermissionBean getPermissionBean() { | |
| 62 | + return permissionBean; | |
| 63 | + } | |
| 64 | + | |
| 65 | + public void setPermissionBean(PermissionBean permissionBean) { | |
| 66 | + this.permissionBean = permissionBean; | |
| 67 | + } | |
| 68 | + | |
| 69 | + public int getSchoolId() { | |
| 70 | + return schoolId; | |
| 71 | + } | |
| 72 | + | |
| 73 | + public void setSchoolId(int schoolId) { | |
| 74 | + this.schoolId = schoolId; | |
| 75 | + } | |
| 76 | + | |
| 77 | + public String getPerrmissName() { | |
| 78 | + return perrmissName; | |
| 79 | + } | |
| 80 | + | |
| 81 | + public void setPerrmissName(String perrmissName) { | |
| 82 | + this.perrmissName = perrmissName; | |
| 83 | + } | |
| 84 | + | |
| 85 | + public String getCreateTime() { | |
| 86 | + return createTime; | |
| 87 | + } | |
| 88 | + | |
| 89 | + public void setCreateTime(String createTime) { | |
| 90 | + this.createTime = createTime; | |
| 91 | + } | |
| 92 | + | |
| 93 | + public String getUpdateTime() { | |
| 94 | + return updateTime; | |
| 95 | + } | |
| 96 | + | |
| 97 | + public void setUpdateTime(String updateTime) { | |
| 98 | + this.updateTime = updateTime; | |
| 99 | + } | |
| 100 | + | |
| 101 | + public String getPermissionJson() { | |
| 102 | + return permissionJson; | |
| 103 | + } | |
| 104 | + | |
| 105 | + public void setPermissionJson(String permissionJson) { | |
| 106 | + this.permissionJson = permissionJson; | |
| 107 | + } | |
| 108 | +} | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/bean/PermissionHKBean.java
0 → 100644
| ... | ... | @@ -0,0 +1,48 @@ |
| 1 | +package com.example.dahua.bean; | |
| 2 | + | |
| 3 | +import java.util.List; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * 海康人脸请求参数 | |
| 7 | + */ | |
| 8 | +public class PermissionHKBean { | |
| 9 | + private List<String> deviceIds; | |
| 10 | + | |
| 11 | + private String schoolId; | |
| 12 | + | |
| 13 | + private String userType;//学生类型 | |
| 14 | + | |
| 15 | + private List<WeekDay> weekDays; | |
| 16 | + | |
| 17 | + public List<String> getDeviceIds() { | |
| 18 | + return deviceIds; | |
| 19 | + } | |
| 20 | + | |
| 21 | + public void setDeviceIds(List<String> deviceIds) { | |
| 22 | + this.deviceIds = deviceIds; | |
| 23 | + } | |
| 24 | + | |
| 25 | + public String getSchoolId() { | |
| 26 | + return schoolId; | |
| 27 | + } | |
| 28 | + | |
| 29 | + public void setSchoolId(String schoolId) { | |
| 30 | + this.schoolId = schoolId; | |
| 31 | + } | |
| 32 | + | |
| 33 | + public String getUserType() { | |
| 34 | + return userType; | |
| 35 | + } | |
| 36 | + | |
| 37 | + public void setUserType(String userType) { | |
| 38 | + this.userType = userType; | |
| 39 | + } | |
| 40 | + | |
| 41 | + public List<WeekDay> getWeekDays() { | |
| 42 | + return weekDays; | |
| 43 | + } | |
| 44 | + | |
| 45 | + public void setWeekDays(List<WeekDay> weekDays) { | |
| 46 | + this.weekDays = weekDays; | |
| 47 | + } | |
| 48 | +} | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/bean/ResponseBean.java
0 → 100644
| ... | ... | @@ -0,0 +1,34 @@ |
| 1 | +package com.example.dahua.bean; | |
| 2 | + | |
| 3 | +public class ResponseBean<T> { | |
| 4 | + | |
| 5 | + private int status; | |
| 6 | + | |
| 7 | + private String message; | |
| 8 | + | |
| 9 | + private T data; | |
| 10 | + | |
| 11 | + public int getStatus() { | |
| 12 | + return status; | |
| 13 | + } | |
| 14 | + | |
| 15 | + public void setStatus(int status) { | |
| 16 | + this.status = status; | |
| 17 | + } | |
| 18 | + | |
| 19 | + public String getMessage() { | |
| 20 | + return message; | |
| 21 | + } | |
| 22 | + | |
| 23 | + public void setMessage(String message) { | |
| 24 | + this.message = message; | |
| 25 | + } | |
| 26 | + | |
| 27 | + public T getData() { | |
| 28 | + return data; | |
| 29 | + } | |
| 30 | + | |
| 31 | + public void setData(T data) { | |
| 32 | + this.data = data; | |
| 33 | + } | |
| 34 | +} | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/bean/ResponseBeanList.java
0 → 100644
| ... | ... | @@ -0,0 +1,37 @@ |
| 1 | +package com.example.dahua.bean; | |
| 2 | + | |
| 3 | +import java.io.Serializable; | |
| 4 | +import java.util.List; | |
| 5 | + | |
| 6 | +public class ResponseBeanList<T> implements Serializable { | |
| 7 | + | |
| 8 | + private int status; | |
| 9 | + | |
| 10 | + private String message; | |
| 11 | + | |
| 12 | + private List<T> data; | |
| 13 | + | |
| 14 | + public int getStatus() { | |
| 15 | + return status; | |
| 16 | + } | |
| 17 | + | |
| 18 | + public void setStatus(int status) { | |
| 19 | + this.status = status; | |
| 20 | + } | |
| 21 | + | |
| 22 | + public String getMessage() { | |
| 23 | + return message; | |
| 24 | + } | |
| 25 | + | |
| 26 | + public void setMessage(String message) { | |
| 27 | + this.message = message; | |
| 28 | + } | |
| 29 | + | |
| 30 | + public List<T> getData() { | |
| 31 | + return data; | |
| 32 | + } | |
| 33 | + | |
| 34 | + public void setData(List<T> data) { | |
| 35 | + this.data = data; | |
| 36 | + } | |
| 37 | +} | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/bean/UserAndPermission.java
0 → 100644
| ... | ... | @@ -0,0 +1,58 @@ |
| 1 | +package com.example.dahua.bean; | |
| 2 | + | |
| 3 | +import java.io.Serializable; | |
| 4 | +import java.util.List; | |
| 5 | + | |
| 6 | +public class UserAndPermission implements Serializable { | |
| 7 | + | |
| 8 | + private List<String> deviceIds; | |
| 9 | + | |
| 10 | + private int userType; | |
| 11 | + | |
| 12 | + private String userIds; | |
| 13 | + | |
| 14 | + private List<WeekDay> weekDays; | |
| 15 | + | |
| 16 | + private String schoolId; | |
| 17 | + | |
| 18 | + | |
| 19 | + public List<String> getDeviceIds() { | |
| 20 | + return deviceIds; | |
| 21 | + } | |
| 22 | + | |
| 23 | + public void setDeviceIds(List<String> deviceIds) { | |
| 24 | + this.deviceIds = deviceIds; | |
| 25 | + } | |
| 26 | + | |
| 27 | + public int getUserType() { | |
| 28 | + return userType; | |
| 29 | + } | |
| 30 | + | |
| 31 | + public void setUserType(int userType) { | |
| 32 | + this.userType = userType; | |
| 33 | + } | |
| 34 | + | |
| 35 | + public String getUserIds() { | |
| 36 | + return userIds; | |
| 37 | + } | |
| 38 | + | |
| 39 | + public void setUserIds(String userIds) { | |
| 40 | + this.userIds = userIds; | |
| 41 | + } | |
| 42 | + | |
| 43 | + public List<WeekDay> getWeekDays() { | |
| 44 | + return weekDays; | |
| 45 | + } | |
| 46 | + | |
| 47 | + public void setWeekDays(List<WeekDay> weekDays) { | |
| 48 | + this.weekDays = weekDays; | |
| 49 | + } | |
| 50 | + | |
| 51 | + public String getSchoolId() { | |
| 52 | + return schoolId; | |
| 53 | + } | |
| 54 | + | |
| 55 | + public void setSchoolId(String schoolId) { | |
| 56 | + this.schoolId = schoolId; | |
| 57 | + } | |
| 58 | +} | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/bean/WeekDay.java
| 1 | 1 | package com.example.dahua.bean; |
| 2 | 2 | |
| 3 | +import io.swagger.annotations.ApiModelProperty; | |
| 4 | + | |
| 3 | 5 | import java.io.Serializable; |
| 4 | 6 | import java.util.List; |
| 5 | 7 | |
| 6 | 8 | public class WeekDay implements Serializable { |
| 7 | 9 | |
| 8 | - private int weekDay; | |
| 10 | + @ApiModelProperty("用逗号隔开,1:男,2:女") | |
| 11 | + private String sex; | |
| 12 | + | |
| 13 | + @ApiModelProperty("用逗号隔开,0-6表示周日到周六") | |
| 14 | + private String weekDay; | |
| 9 | 15 | |
| 10 | 16 | private List<WeekTime> weekTimes; |
| 11 | 17 | |
| 12 | - public int getWeekDay() { | |
| 18 | + public String getSex() { | |
| 19 | + return sex; | |
| 20 | + } | |
| 21 | + | |
| 22 | + public void setSex(String sex) { | |
| 23 | + this.sex = sex; | |
| 24 | + } | |
| 25 | + | |
| 26 | + public String getWeekDay() { | |
| 13 | 27 | return weekDay; |
| 14 | 28 | } |
| 15 | 29 | |
| 16 | - public void setWeekDay(int weekDay) { | |
| 30 | + public void setWeekDay(String weekDay) { | |
| 17 | 31 | this.weekDay = weekDay; |
| 18 | 32 | } |
| 19 | 33 | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/bean/WeekTime.java
| 1 | 1 | package com.example.dahua.bean; |
| 2 | 2 | |
| 3 | +import io.swagger.annotations.ApiModelProperty; | |
| 4 | + | |
| 3 | 5 | import java.io.Serializable; |
| 4 | 6 | |
| 5 | 7 | public class WeekTime implements Serializable { |
| 6 | 8 | |
| 9 | + @ApiModelProperty("例: 10:00:00") | |
| 7 | 10 | private String startTime; |
| 8 | 11 | |
| 12 | + @ApiModelProperty("例: 10:00:00") | |
| 9 | 13 | private String endTime; |
| 10 | 14 | |
| 11 | 15 | public String getStartTime() { | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/control/FaceUnifyController.java
0 → 100644
| ... | ... | @@ -0,0 +1,47 @@ |
| 1 | +package com.example.dahua.control; | |
| 2 | + | |
| 3 | +import com.alibaba.fastjson.JSON; | |
| 4 | +import com.example.dahua.bean.PermissionBean; | |
| 5 | +import com.example.dahua.bean.PermissionFaceBean; | |
| 6 | +import com.example.dahua.bean.ResponseBean; | |
| 7 | +import com.example.dahua.bean.ResponseBeanList; | |
| 8 | +import com.example.dahua.service.PermissFaceService; | |
| 9 | +import io.swagger.annotations.Api; | |
| 10 | +import io.swagger.annotations.ApiOperation; | |
| 11 | +import lombok.extern.slf4j.Slf4j; | |
| 12 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 13 | +import org.springframework.web.bind.annotation.*; | |
| 14 | + | |
| 15 | +import java.io.UnsupportedEncodingException; | |
| 16 | + | |
| 17 | +@Api(tags = "人脸统一处理接口") | |
| 18 | +@RestController | |
| 19 | +@RequestMapping(value = "faceUnify/*",produces = "text/plain;charset=UTF-8") | |
| 20 | +@Slf4j | |
| 21 | +public class FaceUnifyController { | |
| 22 | + | |
| 23 | + @Autowired | |
| 24 | + PermissFaceService permissFaceService; | |
| 25 | + | |
| 26 | + @RequestMapping(value = "sendPermission",method = RequestMethod.POST) | |
| 27 | + @ApiOperation("添加/编辑/删除权限") | |
| 28 | + public String sendPermission(@RequestBody PermissionFaceBean permissionFaceBean) throws UnsupportedEncodingException { | |
| 29 | + return JSON.toJSONString(permissFaceService.addPermissionFace(permissionFaceBean)); | |
| 30 | + } | |
| 31 | + | |
| 32 | + | |
| 33 | + @RequestMapping(value = "getPermissionDetail",method = RequestMethod.POST) | |
| 34 | + @ApiOperation("获取权限详情") | |
| 35 | + @ResponseBody | |
| 36 | + public String getPermissionDetail(@RequestParam("permissionId")int permissionId) throws UnsupportedEncodingException { | |
| 37 | + log.error("{}",JSON.toJSONString(permissFaceService.getPermissionDetail(permissionId))); | |
| 38 | + return JSON.toJSONString(permissFaceService.getPermissionDetail(permissionId)); | |
| 39 | + } | |
| 40 | + | |
| 41 | + @RequestMapping(value = "getPermissions",method = RequestMethod.POST) | |
| 42 | + @ApiOperation("获取权限列表") | |
| 43 | + public String getPermissions(@RequestParam("schoolId")int schoolId) throws UnsupportedEncodingException { | |
| 44 | + return JSON.toJSONString(permissFaceService.getPermissions(schoolId)); | |
| 45 | + } | |
| 46 | + | |
| 47 | +} | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java
| ... | ... | @@ -4,12 +4,14 @@ import com.example.dahua.MyTask; |
| 4 | 4 | import com.example.dahua.async.SendUserInfoTask; |
| 5 | 5 | import com.example.dahua.attendance.Attendance; |
| 6 | 6 | import com.example.dahua.bean.AttendanceBean; |
| 7 | +import com.example.dahua.bean.PermissionBean; | |
| 7 | 8 | import com.example.dahua.bean.TeacherBean; |
| 8 | 9 | import com.example.dahua.bean.UploadImg; |
| 9 | 10 | import com.example.dahua.dao.UserDao; |
| 10 | 11 | import com.example.dahua.lib.ToolKits; |
| 11 | 12 | import com.example.dahua.module.GateModule; |
| 12 | 13 | import com.example.dahua.service.UserService; |
| 14 | +import com.example.dahua.utils.HttpUtils; | |
| 13 | 15 | import com.sun.jna.Memory; |
| 14 | 16 | import io.swagger.annotations.Api; |
| 15 | 17 | import io.swagger.annotations.ApiOperation; |
| ... | ... | @@ -63,6 +65,12 @@ public class FileControl { |
| 63 | 65 | return "0"; |
| 64 | 66 | } |
| 65 | 67 | |
| 68 | + @RequestMapping(value = "sendPermission", method = RequestMethod.POST) | |
| 69 | + @ApiOperation(value = "设置权限") | |
| 70 | + public boolean sendPermission(@RequestBody PermissionBean permissionBean) { | |
| 71 | + userService.sendPermission(permissionBean); | |
| 72 | + return true; | |
| 73 | + } | |
| 66 | 74 | |
| 67 | 75 | @RequestMapping(method = RequestMethod.POST, value = "uploadImgToDev") |
| 68 | 76 | public String uploadImgToDev(@RequestParam("file") MultipartFile file, @RequestParam("schoolId") String schoolId, @RequestParam("studentCode") String studentCode, | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/control/UserControl.java
| ... | ... | @@ -4,6 +4,7 @@ import com.example.dahua.MyTask; |
| 4 | 4 | import com.example.dahua.async.ImageUtils; |
| 5 | 5 | import com.example.dahua.async.SendUserInfoTask; |
| 6 | 6 | import com.example.dahua.bean.PermissionBean; |
| 7 | +import com.example.dahua.bean.UserAndPermission; | |
| 7 | 8 | import com.example.dahua.lib.CompressPic; |
| 8 | 9 | import com.example.dahua.service.UserService; |
| 9 | 10 | import com.example.dahua.utils.*; |
| ... | ... | @@ -22,6 +23,7 @@ import org.springframework.http.MediaType; |
| 22 | 23 | import org.springframework.http.ResponseEntity; |
| 23 | 24 | import org.springframework.util.LinkedMultiValueMap; |
| 24 | 25 | import org.springframework.util.MultiValueMap; |
| 26 | +import org.springframework.util.StringUtils; | |
| 25 | 27 | import org.springframework.web.bind.annotation.*; |
| 26 | 28 | import org.springframework.web.client.RestTemplate; |
| 27 | 29 | import org.springframework.web.multipart.MultipartFile; |
| ... | ... | @@ -60,11 +62,9 @@ public class UserControl { |
| 60 | 62 | @RequestMapping(value = "sendPermission", method = RequestMethod.POST) |
| 61 | 63 | @ApiOperation(value = "设置权限") |
| 62 | 64 | public boolean sendPermission(@RequestBody PermissionBean permissionBean) { |
| 63 | - userService.sendPermission(permissionBean); | |
| 64 | - return true; | |
| 65 | + return HttpUtils.sendPermission(permissionBean); | |
| 65 | 66 | } |
| 66 | 67 | |
| 67 | - | |
| 68 | 68 | @RequestMapping(value = "imgsSend", method = RequestMethod.GET) |
| 69 | 69 | @ApiOperation(value = "照片下放") |
| 70 | 70 | public boolean imgsSend(@RequestParam("schoolId") String schoolId, @RequestParam("type") int type) { | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/dao/PermissionFaceDao.java
0 → 100644
| ... | ... | @@ -0,0 +1,26 @@ |
| 1 | +package com.example.dahua.dao; | |
| 2 | + | |
| 3 | +import com.example.dahua.bean.PermissionFaceBean; | |
| 4 | +import org.apache.ibatis.annotations.Mapper; | |
| 5 | +import org.apache.ibatis.annotations.Param; | |
| 6 | +import org.springframework.stereotype.Repository; | |
| 7 | + | |
| 8 | +import java.util.List; | |
| 9 | + | |
| 10 | +@Repository | |
| 11 | +public interface PermissionFaceDao { | |
| 12 | + | |
| 13 | + | |
| 14 | + public int addPermissionFace(PermissionFaceBean permissionFaceBean); | |
| 15 | + | |
| 16 | + public int updatePermissionFace(PermissionFaceBean permissionFaceBean); | |
| 17 | + | |
| 18 | + public int deletePermissionFace(PermissionFaceBean permissionFaceBean); | |
| 19 | + | |
| 20 | + public PermissionFaceBean getPerFaceWithId(@Param("id")int id); | |
| 21 | + | |
| 22 | + public List<PermissionFaceBean> getPermissFaces(@Param("schoolId") int schoolId); | |
| 23 | + | |
| 24 | + public List<PermissionFaceBean> getPermissionDetail(@Param("permissionId") int permissionId); | |
| 25 | + | |
| 26 | +} | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java
| 1 | 1 | package com.example.dahua.module; |
| 2 | 2 | |
| 3 | 3 | import java.io.UnsupportedEncodingException; |
| 4 | +import java.util.ArrayList; | |
| 5 | +import java.util.HashMap; | |
| 4 | 6 | import java.util.List; |
| 7 | +import java.util.Map; | |
| 5 | 8 | |
| 6 | 9 | import com.example.dahua.bean.PermissionBean; |
| 7 | 10 | import com.example.dahua.bean.WeekDay; |
| ... | ... | @@ -189,8 +192,8 @@ public class GateModule { |
| 189 | 192 | accessCardInfo.sznDoors[0] = 0; |
| 190 | 193 | accessCardInfo.sznDoors[1] = 1; |
| 191 | 194 | accessCardInfo.nTimeSectionNum = 2; // 与门数对应 |
| 192 | - accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效 | |
| 193 | - accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效 | |
| 195 | + accessCardInfo.sznTimeSectionNo[0] = 120; // 表示第一个门全天有效 | |
| 196 | + accessCardInfo.sznTimeSectionNo[1] = 120; // 表示第二个门全天有效 | |
| 194 | 197 | |
| 195 | 198 | // 卡状态 |
| 196 | 199 | accessCardInfo.emStatus = cardStatus; |
| ... | ... | @@ -254,61 +257,151 @@ public class GateModule { |
| 254 | 257 | * 门禁刷卡时间段设置 |
| 255 | 258 | */ |
| 256 | 259 | public static void setAccessTimeSchedule(LLong lLong, PermissionBean permissionBean) { |
| 260 | + try { | |
| 257 | 261 | |
| 258 | - CFG_ACCESS_TIMESCHEDULE_INFO msg = new CFG_ACCESS_TIMESCHEDULE_INFO(); | |
| 259 | - String strCmd = NetSDKLib.CFG_CMD_ACCESSTIMESCHEDULE; | |
| 260 | - int nChannel = 120; // 通道号 | |
| 261 | - | |
| 262 | + CFG_ACCESS_TIMESCHEDULE_INFO msg = new CFG_ACCESS_TIMESCHEDULE_INFO(); | |
| 263 | + String strCmd = NetSDKLib.CFG_CMD_ACCESSTIMESCHEDULE; | |
| 264 | + int nChannel = 120; // 通道号 | |
| 262 | 265 | // msg.stuTimeWeekDay[0].stuTimeSection[0].dwRecordMask |
| 263 | - String name = "权限模板"; | |
| 264 | - System.arraycopy(name.getBytes(), 0, msg.szName, 0, name.getBytes().length); | |
| 265 | - | |
| 266 | - List<WeekDay> weekDays = permissionBean.getWeekDays(); | |
| 267 | - | |
| 268 | - for (WeekDay weekDay : | |
| 269 | - weekDays) { | |
| 270 | - List<WeekTime> weekTimes = weekDay.getWeekTimes(); | |
| 271 | - for (int i = 0; i < weekTimes.size(); i++) { | |
| 272 | - WeekTime weekTime = weekTimes.get(i); | |
| 273 | - String startTime = weekTime.getStartTime(); | |
| 274 | - String endTime = weekTime.getEndTime(); | |
| 275 | - msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nBeginHour = Integer.parseInt(startTime.split(":")[0]); | |
| 276 | - msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nBeginMin = Integer.parseInt(startTime.split(":")[1]); | |
| 277 | - msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nBeginSec = 0; | |
| 278 | - | |
| 279 | - msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nEndHour = Integer.parseInt(endTime.split(":")[0]); | |
| 280 | - msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nEndMin = Integer.parseInt(endTime.split(":")[1]); | |
| 281 | - msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nEndSec = 0; | |
| 282 | - | |
| 266 | + String name = "3"; | |
| 267 | + System.arraycopy(name.getBytes(), 0, msg.szName, 0, name.getBytes().length); | |
| 268 | + msg.bEnable = 1; | |
| 269 | + | |
| 270 | + List<WeekDay> weekDays = permissionBean.getWeekDays(); | |
| 271 | + Map<Integer, List<WeekTime>> map = new HashMap<>(); | |
| 272 | + | |
| 273 | + for (WeekDay weekDay : | |
| 274 | + weekDays) { | |
| 275 | + //整理时间 | |
| 276 | + initWeedayAndTimes(weekDay, map); | |
| 277 | + //设置周计划信息 | |
| 278 | + for (Map.Entry<Integer, List<WeekTime>> entry : | |
| 279 | + map.entrySet()) { | |
| 280 | + | |
| 281 | + int weekDayIndex = entry.getKey(); | |
| 282 | + | |
| 283 | + List<WeekTime> weekTimes = entry.getValue(); | |
| 284 | + | |
| 285 | + for (int i = 0; i < weekTimes.size(); i++) { | |
| 286 | + WeekTime weekTime = weekTimes.get(i); | |
| 287 | + String startTime = weekTime.getStartTime(); | |
| 288 | + String endTime = weekTime.getEndTime(); | |
| 289 | + msg.stuTimeWeekDay[weekDayIndex].stuTimeSection[i].nBeginHour = Integer.parseInt(startTime.split(":")[0]); | |
| 290 | + msg.stuTimeWeekDay[weekDayIndex].stuTimeSection[i].nBeginMin = Integer.parseInt(startTime.split(":")[1]); | |
| 291 | + msg.stuTimeWeekDay[weekDayIndex].stuTimeSection[i].nBeginSec = 0; | |
| 292 | + | |
| 293 | + msg.stuTimeWeekDay[weekDayIndex].stuTimeSection[i].nEndHour = Integer.parseInt(endTime.split(":")[0]); | |
| 294 | + msg.stuTimeWeekDay[weekDayIndex].stuTimeSection[i].nEndMin = Integer.parseInt(endTime.split(":")[1]); | |
| 295 | + msg.stuTimeWeekDay[weekDayIndex].stuTimeSection[i].nEndSec = 0; | |
| 296 | + } | |
| 297 | + | |
| 298 | + } | |
| 283 | 299 | } |
| 284 | - } | |
| 300 | + | |
| 301 | + | |
| 302 | + /* for (WeekDay weekDay : | |
| 303 | + weekDays) { | |
| 304 | + List<WeekTime> weekTimes = weekDay.getWeekTimes(); | |
| 305 | + for (int i = 0; i < weekTimes.size(); i++) { | |
| 306 | + WeekTime weekTime = weekTimes.get(i); | |
| 307 | + String startTime = weekTime.getStartTime(); | |
| 308 | + String endTime = weekTime.getEndTime(); | |
| 309 | + msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nBeginHour = Integer.parseInt(startTime.split(":")[0]); | |
| 310 | + msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nBeginMin = Integer.parseInt(startTime.split(":")[1]); | |
| 311 | + msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nBeginSec = 0; | |
| 312 | + | |
| 313 | + msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nEndHour = Integer.parseInt(endTime.split(":")[0]); | |
| 314 | + msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nEndMin = Integer.parseInt(endTime.split(":")[1]); | |
| 315 | + msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nEndSec = 0; | |
| 316 | + | |
| 317 | + } | |
| 318 | + }*/ | |
| 285 | 319 | |
| 286 | 320 | // 获取 |
| 287 | 321 | // if (ToolKits.GetDevConfig(lLong, nChannel, strCmd, msg)) { |
| 288 | - System.out.println("Enable:" + msg.bEnable); | |
| 289 | - try { | |
| 290 | - System.out.println("自定义名称:" + new String(msg.szName, "UTF-8").trim()); | |
| 291 | - } catch (UnsupportedEncodingException e) { | |
| 322 | +// System.out.println("Enable:" + msg.bEnable); | |
| 323 | +// try { | |
| 324 | +// System.out.println("自定义名称:" + new String(msg.szName, "UTF-8").trim()); | |
| 325 | +// } catch (UnsupportedEncodingException e) { | |
| 326 | +// e.printStackTrace(); | |
| 327 | +// } | |
| 328 | +// for (int i = 0; i < 7; i++) { | |
| 329 | +// for (int j = 0; j < 4; j++) { | |
| 330 | +// System.out.println("dwRecordMask:" + msg.stuTimeWeekDay[i].stuTimeSection[j].dwRecordMask); | |
| 331 | +// System.out.println(msg.stuTimeWeekDay[i].stuTimeSection[j].startTime() + "-" + msg.stuTimeWeekDay[i].stuTimeSection[j].endTime() + "\n"); | |
| 332 | +// } | |
| 333 | +// } | |
| 334 | +// msg.write(); | |
| 335 | + boolean set = ToolKits.SetDevConfig(lLong, nChannel, strCmd, msg); | |
| 336 | +// msg.read(); | |
| 337 | + // 设置 | |
| 338 | + if (set) { | |
| 339 | + System.out.println("Set AccessTimeSchedule Succeed!"); | |
| 340 | + } else { | |
| 341 | + System.err.println("Set AccessTimeSchedule Failed!" + ToolKits.getErrorCodePrint()); | |
| 342 | + } | |
| 343 | +// } else { | |
| 344 | +// System.err.println("Get AccessTimeSchedule Failed!" + ToolKits.getErrorCodePrint()); | |
| 345 | +// } | |
| 346 | + } catch (Exception e) { | |
| 292 | 347 | e.printStackTrace(); |
| 293 | 348 | } |
| 294 | - for (int i = 0; i < 7; i++) { | |
| 295 | - for (int j = 0; j < 4; j++) { | |
| 296 | - System.out.println("dwRecordMask:" + msg.stuTimeWeekDay[i].stuTimeSection[j].dwRecordMask); | |
| 297 | - System.out.println(msg.stuTimeWeekDay[i].stuTimeSection[j].startTime() + "-" + msg.stuTimeWeekDay[i].stuTimeSection[j].endTime() + "\n"); | |
| 349 | + } | |
| 350 | + | |
| 351 | + private static void initWeedayAndTimes(WeekDay weekDay, Map<Integer, List<WeekTime>> map) { | |
| 352 | + | |
| 353 | + String weekDayStr = weekDay.getWeekDay(); | |
| 354 | + String[] weekDays = weekDayStr.split(","); | |
| 355 | + | |
| 356 | + List<WeekTime> weekTimes = weekDay.getWeekTimes(); | |
| 357 | + | |
| 358 | + for (int i = 0; i < weekDays.length; i++) { | |
| 359 | + int weekDayIndex = Integer.parseInt(weekDays[i]); | |
| 360 | + if (map.containsKey(weekDayIndex)) {//周已经有时间段 | |
| 361 | + List<WeekTime> weekTimeList = map.get(weekDayIndex); | |
| 362 | + for (WeekTime wee : | |
| 363 | + weekTimes) { | |
| 364 | + weekTimeList.add(wee); | |
| 365 | + } | |
| 366 | + map.put(weekDayIndex, weekTimeList); | |
| 367 | + } else { | |
| 368 | + List<WeekTime> weekTimes1 = new ArrayList<>(); | |
| 369 | + weekTimes1.addAll(weekTimes); | |
| 370 | + map.put(weekDayIndex, weekTimes1); | |
| 298 | 371 | } |
| 299 | 372 | } |
| 300 | - msg.write(); | |
| 301 | - boolean set = ToolKits.SetDevConfig(lLong, nChannel, strCmd, msg); | |
| 302 | - msg.read(); | |
| 303 | - // 设置 | |
| 304 | - if (set) { | |
| 305 | - System.out.println("Set AccessTimeSchedule Succeed!"); | |
| 373 | + | |
| 374 | + } | |
| 375 | + | |
| 376 | + public static void getAccessTimeSchedule1(LLong lLong) { | |
| 377 | + CFG_ACCESS_TIMESCHEDULE_INFO msg = new CFG_ACCESS_TIMESCHEDULE_INFO(); | |
| 378 | + String strCmd = NetSDKLib.CFG_CMD_ACCESSTIMESCHEDULE; | |
| 379 | + int nChannel = 120; // 通道号 | |
| 380 | + | |
| 381 | + // 获取 | |
| 382 | + if (ToolKits.GetDevConfig(lLong, nChannel, strCmd, msg)) { | |
| 383 | + System.out.println("Enable:" + msg.bEnable); | |
| 384 | + try { | |
| 385 | + System.out.println("自定义名称:" + new String(msg.szName, "utf-8").trim()); | |
| 386 | + } catch (UnsupportedEncodingException e) { | |
| 387 | + e.printStackTrace(); | |
| 388 | + } | |
| 389 | + for (int i = 0; i < 7; i++) { | |
| 390 | + for (int j = 0; j < 4; j++) { | |
| 391 | + System.out.println("dwRecordMask:" + msg.stuTimeWeekDay[i].stuTimeSection[j].dwRecordMask); | |
| 392 | + System.out.println(msg.stuTimeWeekDay[i].stuTimeSection[j].startTime() + "-" + | |
| 393 | + msg.stuTimeWeekDay[i].stuTimeSection[j].endTime() + "\n"); | |
| 394 | + } | |
| 395 | + } | |
| 396 | + // 设置 | |
| 397 | + if (ToolKits.SetDevConfig(lLong, nChannel, strCmd, msg)) { | |
| 398 | + System.out.println("Set AccessTimeSchedule Succeed!"); | |
| 399 | + } else { | |
| 400 | + System.err.println("Set AccessTimeSchedule Failed!" + ToolKits.getErrorCodePrint()); | |
| 401 | + } | |
| 306 | 402 | } else { |
| 307 | - System.err.println("Set AccessTimeSchedule Failed!" + ToolKits.getErrorCodePrint()); | |
| 403 | + System.err.println("Get AccessTimeSchedule Failed!" + ToolKits.getErrorCodePrint()); | |
| 308 | 404 | } |
| 309 | -// } else { | |
| 310 | -// System.err.println("Get AccessTimeSchedule Failed!" + ToolKits.getErrorCodePrint()); | |
| 311 | -// } | |
| 312 | 405 | } |
| 313 | 406 | |
| 314 | 407 | /** |
| ... | ... | @@ -450,8 +543,8 @@ public class GateModule { |
| 450 | 543 | accessCardInfo.sznDoors[0] = 0; |
| 451 | 544 | accessCardInfo.sznDoors[1] = 1; |
| 452 | 545 | accessCardInfo.nTimeSectionNum = 2; // 与门数对应 |
| 453 | - accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效 | |
| 454 | - accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效 | |
| 546 | + accessCardInfo.sznTimeSectionNo[0] = 120; // 表示第一个门全天有效 | |
| 547 | + accessCardInfo.sznTimeSectionNo[1] = 120; // 表示第二个门全天有效 | |
| 455 | 548 | |
| 456 | 549 | // 卡状态 |
| 457 | 550 | accessCardInfo.emStatus = cardStatus; | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/service/AttendanceImp.java
| ... | ... | @@ -1,70 +0,0 @@ |
| 1 | -package com.example.dahua.service; | |
| 2 | - | |
| 3 | -import com.example.dahua.bean.AttendanceBean; | |
| 4 | -import org.springframework.beans.factory.annotation.Autowired; | |
| 5 | -import org.springframework.jdbc.core.BeanPropertyRowMapper; | |
| 6 | -import org.springframework.jdbc.core.JdbcTemplate; | |
| 7 | -import org.springframework.stereotype.Service; | |
| 8 | - | |
| 9 | -import java.util.List; | |
| 10 | - | |
| 11 | -@Service | |
| 12 | -public class AttendanceImp implements AttendanceService { | |
| 13 | - | |
| 14 | - @Autowired | |
| 15 | - JdbcTemplate jdbcTemplate; | |
| 16 | - | |
| 17 | - @Override | |
| 18 | - public int insert(String clint_id, String clint_type, String ip, String port, String intime, String school_id, String state) { | |
| 19 | - try { | |
| 20 | - String selectSql = String.format("select * from SZ_Attendance where clint_id =\'%s\'", clint_id); | |
| 21 | - List<AttendanceBean> attendanceBeans = jdbcTemplate.query(selectSql, new Object[]{}, new BeanPropertyRowMapper<AttendanceBean>(AttendanceBean.class)); | |
| 22 | - if (attendanceBeans.size() == 0) {//设备不存在 | |
| 23 | -// insert SZ_Attendance(clint_id, clint_type, ip, port, intime, school_id, state) | |
| 24 | -// * values(@clint_id,@clint_type,@ip,@port,GETDATE(),-1,1) | |
| 25 | - String insertSql = String.format("insert into SZ_Attendance(clint_id, clint_type, ip, port, intime, school_id, state,isConnection) values ('%s','%s','%s','%s','%s','%s','%s','%s')", clint_id, clint_type, ip, port, intime, school_id, state, 1); | |
| 26 | - return jdbcTemplate.update(insertSql); | |
| 27 | - } else {//设备 已经存在,更新在线状态 | |
| 28 | - updateConnectStateWithDevid(1, clint_id); | |
| 29 | - } | |
| 30 | - } catch (Exception e) { | |
| 31 | - e.printStackTrace(); | |
| 32 | - } | |
| 33 | - return 0; | |
| 34 | - } | |
| 35 | - | |
| 36 | - /** | |
| 37 | - * @param isConnection 连接状态 | |
| 38 | - * @param ip | |
| 39 | - * @param port | |
| 40 | - * @return | |
| 41 | - */ | |
| 42 | - @Override | |
| 43 | - public int updateConnectState(int isConnection, String ip, String port) { | |
| 44 | - | |
| 45 | - int index = 0; | |
| 46 | - try { | |
| 47 | - String updateSql = String.format(" update SZ_Attendance set isConnection = %d where ip = '%s' and port = '%s' ", isConnection, ip, port); | |
| 48 | - index = jdbcTemplate.update(updateSql); | |
| 49 | -// System.out.println("updateIndex:"+index+" isConnection:"+isConnection+"updateSql:"+updateSql); | |
| 50 | - } catch (Exception e) { | |
| 51 | - e.printStackTrace(); | |
| 52 | - } | |
| 53 | - | |
| 54 | - return index; | |
| 55 | - } | |
| 56 | - | |
| 57 | - @Override | |
| 58 | - public int updateConnectStateWithDevid(int isConnection, String clint_id) { | |
| 59 | - int index = 0; | |
| 60 | - try { | |
| 61 | - String updateSql = String.format(" update SZ_Attendance set isConnection = %d where clint_id = '%s' ", isConnection, clint_id); | |
| 62 | - index = jdbcTemplate.update(updateSql); | |
| 63 | -// System.out.println("updateIndex:"+index+" isConnection:"+isConnection+"updateSql:"+updateSql); | |
| 64 | - } catch (Exception e) { | |
| 65 | - e.printStackTrace(); | |
| 66 | - } | |
| 67 | - | |
| 68 | - return index; | |
| 69 | - } | |
| 70 | -} |
cloud/dahua/src/main/java/com/example/dahua/service/DeviceServiceImp.java
| ... | ... | @@ -1,23 +0,0 @@ |
| 1 | -package com.example.dahua.service; | |
| 2 | - | |
| 3 | -import com.example.dahua.MyTask; | |
| 4 | -import com.example.dahua.module.DeviceControlModule; | |
| 5 | -import org.springframework.stereotype.Repository; | |
| 6 | -import org.springframework.stereotype.Service; | |
| 7 | - | |
| 8 | -@Repository | |
| 9 | -@Service | |
| 10 | -public class DeviceServiceImp implements DeviceService { | |
| 11 | - | |
| 12 | - @Override | |
| 13 | - public boolean restart(String deviceId) { | |
| 14 | - return DeviceControlModule.reboot(MyTask.lLongMap.get(deviceId)); | |
| 15 | - } | |
| 16 | - | |
| 17 | - @Override | |
| 18 | - public boolean setDVRIPConfig(String deviceId, String ip, int port) { | |
| 19 | - | |
| 20 | - return DeviceControlModule.setDVRIPConfig(deviceId, ip, port); | |
| 21 | - } | |
| 22 | - | |
| 23 | -} |
cloud/dahua/src/main/java/com/example/dahua/service/PermissFaceService.java
0 → 100644
| ... | ... | @@ -0,0 +1,19 @@ |
| 1 | +package com.example.dahua.service; | |
| 2 | + | |
| 3 | +import com.example.dahua.bean.PermissionFaceBean; | |
| 4 | +import com.example.dahua.bean.ResponseBean; | |
| 5 | +import com.example.dahua.bean.ResponseBeanList; | |
| 6 | + | |
| 7 | +import java.util.List; | |
| 8 | + | |
| 9 | +public interface PermissFaceService { | |
| 10 | + | |
| 11 | + | |
| 12 | + public ResponseBean<PermissionFaceBean> addPermissionFace(PermissionFaceBean permissionFaceBean); | |
| 13 | + | |
| 14 | + public ResponseBeanList<PermissionFaceBean> getPermissions(int schoolId); | |
| 15 | + | |
| 16 | + public ResponseBeanList<PermissionFaceBean> getPermissionDetail(int permissionId); | |
| 17 | + | |
| 18 | + | |
| 19 | +} | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java
| ... | ... | @@ -1,117 +0,0 @@ |
| 1 | -package com.example.dahua.service; | |
| 2 | - | |
| 3 | -import com.example.dahua.MyTask; | |
| 4 | -import com.example.dahua.async.SendUserInfoTask; | |
| 5 | -import com.example.dahua.bean.*; | |
| 6 | -import com.example.dahua.dao.UserDao; | |
| 7 | -import com.example.dahua.lib.NetSDKLib; | |
| 8 | -import com.example.dahua.module.GateModule; | |
| 9 | -import org.apache.commons.lang.StringUtils; | |
| 10 | -import org.springframework.beans.factory.annotation.Autowired; | |
| 11 | -import org.springframework.stereotype.Repository; | |
| 12 | -import org.springframework.stereotype.Service; | |
| 13 | - | |
| 14 | -import java.util.List; | |
| 15 | - | |
| 16 | -@Repository | |
| 17 | -@Service | |
| 18 | -public class UserServiceImp implements UserService { | |
| 19 | - | |
| 20 | - @Autowired | |
| 21 | - UserDao userDao; | |
| 22 | - | |
| 23 | - @Autowired | |
| 24 | - SendUserInfoTask myTask; | |
| 25 | - | |
| 26 | - @Override | |
| 27 | - public List<AttendanceBean> getAttendanceBeans(String schoolId, String clint_type, String devid) { | |
| 28 | - | |
| 29 | - if (!StringUtils.isEmpty(devid)) return userDao.getAttendanceBeanWithId(schoolId, clint_type, devid); | |
| 30 | - | |
| 31 | - return userDao.getAttendanceBeans(schoolId, clint_type); | |
| 32 | - } | |
| 33 | - | |
| 34 | - @Override | |
| 35 | - public UserInfoBean getUserInfo(String schoolId, String studentCode) { | |
| 36 | - return userDao.getUserInfo(schoolId, studentCode); | |
| 37 | - } | |
| 38 | - | |
| 39 | - /** | |
| 40 | - * 单个用户信息下发 | |
| 41 | - * | |
| 42 | - * @param file | |
| 43 | - * @param schoolId | |
| 44 | - * @param studentCode | |
| 45 | - * @param clint_type | |
| 46 | - * @return | |
| 47 | - */ | |
| 48 | - @Override | |
| 49 | - public boolean uploadImgAndUserInfo(String file, String schoolId, String studentCode, String clint_type, int userType, String devid) { | |
| 50 | - List<AttendanceBean> attendanceBeans = getAttendanceBeans(schoolId, clint_type, devid);//获取学校下的大华设备 | |
| 51 | - System.out.println("设备数量:" + attendanceBeans.size()); | |
| 52 | - UserInfoBean userInfoBean = null; | |
| 53 | - try { | |
| 54 | - if (userType == 2) { | |
| 55 | - //根据文件命名来判断学籍号 | |
| 56 | - String studentCodes = file.split("\\.")[0]; | |
| 57 | - String[] studentInfo = studentCodes.split("_"); | |
| 58 | - | |
| 59 | - if (studentInfo.length > 1) {//附属卡 | |
| 60 | - | |
| 61 | - String studentCodeF = studentInfo[0]; | |
| 62 | - String CardType = studentInfo[1]; | |
| 63 | - userInfoBean = getUserInfo(schoolId, studentCodeF); | |
| 64 | - String cardNum = userDao.getCardNum(userInfoBean.getStudent_id(), CardType); | |
| 65 | - userInfoBean.setStudent_num(cardNum); | |
| 66 | - | |
| 67 | - } else { | |
| 68 | - | |
| 69 | - userInfoBean = getUserInfo(schoolId, studentCode);//获取用户信息 | |
| 70 | - | |
| 71 | - } | |
| 72 | - } else if (userType == 1) { | |
| 73 | - TeacherBean teacher = userDao.getTeacher(schoolId, studentCode); | |
| 74 | - if (null != teacher) { | |
| 75 | - userInfoBean = new UserInfoBean(); | |
| 76 | - userInfoBean.setStudent_num(teacher.getTeacher_num()); | |
| 77 | - userInfoBean.setName(teacher.getName()); | |
| 78 | - userInfoBean.setUser_id(teacher.getUser_id()); | |
| 79 | - userInfoBean.setStudentcode(teacher.getNum()); | |
| 80 | - userInfoBean.setStudent_id(teacher.getTeacher_id()); | |
| 81 | - } | |
| 82 | - } | |
| 83 | - | |
| 84 | - myTask.doTaskOne(file, attendanceBeans, userInfoBean, schoolId, -1, userType); | |
| 85 | - } catch (Exception e) { | |
| 86 | - e.printStackTrace(); | |
| 87 | - } | |
| 88 | - return true; | |
| 89 | - } | |
| 90 | - | |
| 91 | - /** | |
| 92 | - * 照片下放 | |
| 93 | - * | |
| 94 | - * @param schoolId | |
| 95 | - * @param clint_type | |
| 96 | - * @param type 0:主卡 1:副卡 | |
| 97 | - */ | |
| 98 | - @Override | |
| 99 | - public void sendUserInfos(String schoolId, String clint_type, int type) { | |
| 100 | - myTask.doTaskSendUserInfos(schoolId, clint_type, type, -1); | |
| 101 | - } | |
| 102 | - | |
| 103 | - @Override | |
| 104 | - public boolean sendPermission(PermissionBean permissionBean) { | |
| 105 | - | |
| 106 | - List<String> deviceIds = permissionBean.getDeviceIds(); | |
| 107 | - for (String deviceId : | |
| 108 | - deviceIds) { | |
| 109 | - NetSDKLib.LLong loginHandleLong = MyTask.lLongMap.get(deviceId); | |
| 110 | - GateModule.setAccessTimeSchedule(loginHandleLong,permissionBean); | |
| 111 | - } | |
| 112 | - | |
| 113 | - | |
| 114 | - return false; | |
| 115 | - } | |
| 116 | - | |
| 117 | -} |
cloud/dahua/src/main/java/com/example/dahua/service/imp/AttendanceImp.java
0 → 100644
| ... | ... | @@ -0,0 +1,71 @@ |
| 1 | +package com.example.dahua.service.imp; | |
| 2 | + | |
| 3 | +import com.example.dahua.bean.AttendanceBean; | |
| 4 | +import com.example.dahua.service.AttendanceService; | |
| 5 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 6 | +import org.springframework.jdbc.core.BeanPropertyRowMapper; | |
| 7 | +import org.springframework.jdbc.core.JdbcTemplate; | |
| 8 | +import org.springframework.stereotype.Service; | |
| 9 | + | |
| 10 | +import java.util.List; | |
| 11 | + | |
| 12 | +@Service | |
| 13 | +public class AttendanceImp implements AttendanceService { | |
| 14 | + | |
| 15 | + @Autowired | |
| 16 | + JdbcTemplate jdbcTemplate; | |
| 17 | + | |
| 18 | + @Override | |
| 19 | + public int insert(String clint_id, String clint_type, String ip, String port, String intime, String school_id, String state) { | |
| 20 | + try { | |
| 21 | + String selectSql = String.format("select * from SZ_Attendance where clint_id =\'%s\'", clint_id); | |
| 22 | + List<AttendanceBean> attendanceBeans = jdbcTemplate.query(selectSql, new Object[]{}, new BeanPropertyRowMapper<AttendanceBean>(AttendanceBean.class)); | |
| 23 | + if (attendanceBeans.size() == 0) {//设备不存在 | |
| 24 | +// insert SZ_Attendance(clint_id, clint_type, ip, port, intime, school_id, state) | |
| 25 | +// * values(@clint_id,@clint_type,@ip,@port,GETDATE(),-1,1) | |
| 26 | + String insertSql = String.format("insert into SZ_Attendance(clint_id, clint_type, ip, port, intime, school_id, state,isConnection) values ('%s','%s','%s','%s','%s','%s','%s','%s')", clint_id, clint_type, ip, port, intime, school_id, state, 1); | |
| 27 | + return jdbcTemplate.update(insertSql); | |
| 28 | + } else {//设备 已经存在,更新在线状态 | |
| 29 | + updateConnectStateWithDevid(1, clint_id); | |
| 30 | + } | |
| 31 | + } catch (Exception e) { | |
| 32 | + e.printStackTrace(); | |
| 33 | + } | |
| 34 | + return 0; | |
| 35 | + } | |
| 36 | + | |
| 37 | + /** | |
| 38 | + * @param isConnection 连接状态 | |
| 39 | + * @param ip | |
| 40 | + * @param port | |
| 41 | + * @return | |
| 42 | + */ | |
| 43 | + @Override | |
| 44 | + public int updateConnectState(int isConnection, String ip, String port) { | |
| 45 | + | |
| 46 | + int index = 0; | |
| 47 | + try { | |
| 48 | + String updateSql = String.format(" update SZ_Attendance set isConnection = %d where ip = '%s' and port = '%s' ", isConnection, ip, port); | |
| 49 | + index = jdbcTemplate.update(updateSql); | |
| 50 | +// System.out.println("updateIndex:"+index+" isConnection:"+isConnection+"updateSql:"+updateSql); | |
| 51 | + } catch (Exception e) { | |
| 52 | + e.printStackTrace(); | |
| 53 | + } | |
| 54 | + | |
| 55 | + return index; | |
| 56 | + } | |
| 57 | + | |
| 58 | + @Override | |
| 59 | + public int updateConnectStateWithDevid(int isConnection, String clint_id) { | |
| 60 | + int index = 0; | |
| 61 | + try { | |
| 62 | + String updateSql = String.format(" update SZ_Attendance set isConnection = %d where clint_id = '%s' ", isConnection, clint_id); | |
| 63 | + index = jdbcTemplate.update(updateSql); | |
| 64 | +// System.out.println("updateIndex:"+index+" isConnection:"+isConnection+"updateSql:"+updateSql); | |
| 65 | + } catch (Exception e) { | |
| 66 | + e.printStackTrace(); | |
| 67 | + } | |
| 68 | + | |
| 69 | + return index; | |
| 70 | + } | |
| 71 | +} | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/service/imp/DeviceServiceImp.java
0 → 100644
| ... | ... | @@ -0,0 +1,24 @@ |
| 1 | +package com.example.dahua.service.imp; | |
| 2 | + | |
| 3 | +import com.example.dahua.MyTask; | |
| 4 | +import com.example.dahua.module.DeviceControlModule; | |
| 5 | +import com.example.dahua.service.DeviceService; | |
| 6 | +import org.springframework.stereotype.Repository; | |
| 7 | +import org.springframework.stereotype.Service; | |
| 8 | + | |
| 9 | +@Repository | |
| 10 | +@Service | |
| 11 | +public class DeviceServiceImp implements DeviceService { | |
| 12 | + | |
| 13 | + @Override | |
| 14 | + public boolean restart(String deviceId) { | |
| 15 | + return DeviceControlModule.reboot(MyTask.lLongMap.get(deviceId)); | |
| 16 | + } | |
| 17 | + | |
| 18 | + @Override | |
| 19 | + public boolean setDVRIPConfig(String deviceId, String ip, int port) { | |
| 20 | + | |
| 21 | + return DeviceControlModule.setDVRIPConfig(deviceId, ip, port); | |
| 22 | + } | |
| 23 | + | |
| 24 | +} | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/service/imp/PermissFaceServiceImp.java
0 → 100644
| ... | ... | @@ -0,0 +1,152 @@ |
| 1 | +package com.example.dahua.service.imp; | |
| 2 | + | |
| 3 | +import com.alibaba.fastjson.JSON; | |
| 4 | +import com.example.dahua.bean.*; | |
| 5 | +import com.example.dahua.dao.PermissionFaceDao; | |
| 6 | +import com.example.dahua.dao.UserDao; | |
| 7 | +import com.example.dahua.service.PermissFaceService; | |
| 8 | +import com.example.dahua.utils.HttpUtils; | |
| 9 | +import lombok.extern.slf4j.Slf4j; | |
| 10 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 11 | +import org.springframework.stereotype.Service; | |
| 12 | +import org.springframework.util.StringUtils; | |
| 13 | + | |
| 14 | +import java.util.List; | |
| 15 | + | |
| 16 | +@Slf4j | |
| 17 | +@Service | |
| 18 | +public class PermissFaceServiceImp implements PermissFaceService { | |
| 19 | + | |
| 20 | + @Autowired | |
| 21 | + PermissionFaceDao permissionFaceDao; | |
| 22 | + | |
| 23 | + @Autowired | |
| 24 | + UserDao userDao; | |
| 25 | + | |
| 26 | + @Override | |
| 27 | + public ResponseBean<PermissionFaceBean> addPermissionFace(PermissionFaceBean permissionFaceBean) { | |
| 28 | + ResponseBean<PermissionFaceBean> responseBean = new ResponseBean<>(); | |
| 29 | + try { | |
| 30 | + int id = permissionFaceBean.getId(); | |
| 31 | + | |
| 32 | + String permissName = permissionFaceBean.getPerrmissName(); | |
| 33 | + | |
| 34 | + int schoolId = permissionFaceBean.getSchoolId(); | |
| 35 | + | |
| 36 | + PermissionBean permissionBean = permissionFaceBean.getPermissionBean(); | |
| 37 | + | |
| 38 | + int type = permissionFaceBean.getType(); | |
| 39 | + if (null != permissionBean) | |
| 40 | + permissionFaceBean.setPermissionJson(JSON.toJSON(permissionBean).toString()); | |
| 41 | + | |
| 42 | + if ((type == 0 || type == 1) && (StringUtils.isEmpty(permissName) || schoolId == 0 || (null != permissionBean && permissionBean.getWeekDays().size() == 0))) { | |
| 43 | + | |
| 44 | + responseBean.setStatus(0); | |
| 45 | + responseBean.setMessage("传入的参数错误"); | |
| 46 | + responseBean.setData(null); | |
| 47 | + return responseBean; | |
| 48 | + } | |
| 49 | + switch (type) { | |
| 50 | + case 0://新增 | |
| 51 | + permissionFaceDao.addPermissionFace(permissionFaceBean); | |
| 52 | + responseBean.setMessage("添加权限模板成功"); | |
| 53 | + responseBean.setData(null); | |
| 54 | + sendPermiss2Dev(permissionFaceBean); | |
| 55 | + responseBean.setStatus(1); | |
| 56 | + break; | |
| 57 | + case 1://编辑 | |
| 58 | + if (null == permissionFaceDao.getPerFaceWithId(id)) { | |
| 59 | + responseBean.setMessage("模板不存在"); | |
| 60 | + } else { | |
| 61 | + responseBean.setMessage("编辑权限模板成功"); | |
| 62 | + permissionFaceDao.updatePermissionFace(permissionFaceBean); | |
| 63 | + } | |
| 64 | + responseBean.setData(null); | |
| 65 | + sendPermiss2Dev(permissionFaceBean); | |
| 66 | + responseBean.setStatus(1); | |
| 67 | + break; | |
| 68 | + case 2://删除 | |
| 69 | + if (null == permissionFaceDao.getPerFaceWithId(id)) { | |
| 70 | + responseBean.setMessage("模板不存在"); | |
| 71 | + } else { | |
| 72 | + permissionFaceDao.deletePermissionFace(permissionFaceBean); | |
| 73 | + responseBean.setMessage("删除权限模板成功"); | |
| 74 | + } | |
| 75 | + responseBean.setData(null); | |
| 76 | + responseBean.setStatus(1); | |
| 77 | + break; | |
| 78 | + } | |
| 79 | + } catch (Exception e) { | |
| 80 | + e.printStackTrace(); | |
| 81 | + responseBean.setStatus(0); | |
| 82 | + responseBean.setMessage(e.getMessage()); | |
| 83 | + responseBean.setData(null); | |
| 84 | + } | |
| 85 | + return responseBean; | |
| 86 | + } | |
| 87 | + | |
| 88 | + /** | |
| 89 | + * 下发权限到设备 | |
| 90 | + * | |
| 91 | + * @param permissionFaceBean | |
| 92 | + */ | |
| 93 | + private void sendPermiss2Dev(PermissionFaceBean permissionFaceBean) { | |
| 94 | + int schoolId = permissionFaceBean.getSchoolId(); | |
| 95 | + | |
| 96 | + PermissionBean permissionBean = permissionFaceBean.getPermissionBean(); | |
| 97 | + | |
| 98 | + //查询海康人脸权限一体机 | |
| 99 | + List<AttendanceBean> attendanceBeanList = userDao.getAttendanceBeans(schoolId + "", "28"); | |
| 100 | + | |
| 101 | + //查询大华人脸权限一体机 | |
| 102 | + List<AttendanceBean> attendanceBeanList1 = userDao.getAttendanceBeans(schoolId + "", "29"); | |
| 103 | + | |
| 104 | + if (null != attendanceBeanList && attendanceBeanList.size() > 0) { | |
| 105 | + if (null != permissionBean) | |
| 106 | + HttpUtils.sendPermission2HK(permissionFaceBean); | |
| 107 | + } | |
| 108 | + | |
| 109 | + if (null != attendanceBeanList1 && attendanceBeanList1.size() > 0) { | |
| 110 | + if (null != permissionBean) | |
| 111 | + HttpUtils.sendPermission(permissionBean); | |
| 112 | + } | |
| 113 | + | |
| 114 | + } | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + @Override | |
| 120 | + public ResponseBeanList<PermissionFaceBean> getPermissions(int schoolId) { | |
| 121 | + ResponseBeanList responseBeanList = new ResponseBeanList(); | |
| 122 | + try { | |
| 123 | + | |
| 124 | + List<PermissionFaceBean> permissionFaceBeans = permissionFaceDao.getPermissFaces(schoolId); | |
| 125 | + | |
| 126 | + responseBeanList.setData(permissionFaceBeans); | |
| 127 | + | |
| 128 | + responseBeanList.setMessage(""); | |
| 129 | + responseBeanList.setStatus(1); | |
| 130 | + } catch (Exception e) { | |
| 131 | + e.printStackTrace(); | |
| 132 | + } | |
| 133 | + return responseBeanList; | |
| 134 | + } | |
| 135 | + | |
| 136 | + @Override | |
| 137 | + public ResponseBeanList<PermissionFaceBean> getPermissionDetail(int permissionId) { | |
| 138 | + ResponseBeanList responseBeanList = new ResponseBeanList(); | |
| 139 | + try { | |
| 140 | + | |
| 141 | + List<PermissionFaceBean> permissionFaceBeans = permissionFaceDao.getPermissionDetail(permissionId); | |
| 142 | + | |
| 143 | + responseBeanList.setData(permissionFaceBeans); | |
| 144 | + | |
| 145 | + responseBeanList.setMessage(""); | |
| 146 | + responseBeanList.setStatus(1); | |
| 147 | + } catch (Exception e) { | |
| 148 | + e.printStackTrace(); | |
| 149 | + } | |
| 150 | + return responseBeanList; | |
| 151 | + } | |
| 152 | +} | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/service/imp/UserServiceImp.java
0 → 100644
| ... | ... | @@ -0,0 +1,120 @@ |
| 1 | +package com.example.dahua.service.imp; | |
| 2 | + | |
| 3 | +import com.example.dahua.MyTask; | |
| 4 | +import com.example.dahua.async.SendUserInfoTask; | |
| 5 | +import com.example.dahua.bean.*; | |
| 6 | +import com.example.dahua.dao.UserDao; | |
| 7 | +import com.example.dahua.lib.NetSDKLib; | |
| 8 | +import com.example.dahua.module.GateModule; | |
| 9 | +import com.example.dahua.service.UserService; | |
| 10 | +import org.apache.commons.lang.StringUtils; | |
| 11 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 12 | +import org.springframework.stereotype.Repository; | |
| 13 | +import org.springframework.stereotype.Service; | |
| 14 | + | |
| 15 | +import java.util.List; | |
| 16 | + | |
| 17 | +@Repository | |
| 18 | +@Service | |
| 19 | +public class UserServiceImp implements UserService { | |
| 20 | + | |
| 21 | + @Autowired | |
| 22 | + UserDao userDao; | |
| 23 | + | |
| 24 | + @Autowired | |
| 25 | + SendUserInfoTask myTask; | |
| 26 | + | |
| 27 | + @Override | |
| 28 | + public List<AttendanceBean> getAttendanceBeans(String schoolId, String clint_type, String devid) { | |
| 29 | + | |
| 30 | + if (!StringUtils.isEmpty(devid)) return userDao.getAttendanceBeanWithId(schoolId, clint_type, devid); | |
| 31 | + | |
| 32 | + return userDao.getAttendanceBeans(schoolId, clint_type); | |
| 33 | + } | |
| 34 | + | |
| 35 | + @Override | |
| 36 | + public UserInfoBean getUserInfo(String schoolId, String studentCode) { | |
| 37 | + return userDao.getUserInfo(schoolId, studentCode); | |
| 38 | + } | |
| 39 | + | |
| 40 | + /** | |
| 41 | + * 单个用户信息下发 | |
| 42 | + * | |
| 43 | + * @param file | |
| 44 | + * @param schoolId | |
| 45 | + * @param studentCode | |
| 46 | + * @param clint_type | |
| 47 | + * @return | |
| 48 | + */ | |
| 49 | + @Override | |
| 50 | + public boolean uploadImgAndUserInfo(String file, String schoolId, String studentCode, String clint_type, int userType, String devid) { | |
| 51 | + List<AttendanceBean> attendanceBeans = getAttendanceBeans(schoolId, clint_type, devid);//获取学校下的大华设备 | |
| 52 | + System.out.println("设备数量:" + attendanceBeans.size()); | |
| 53 | + UserInfoBean userInfoBean = null; | |
| 54 | + try { | |
| 55 | + if (userType == 2) { | |
| 56 | + //根据文件命名来判断学籍号 | |
| 57 | + String studentCodes = file.split("\\.")[0]; | |
| 58 | + String[] studentInfo = studentCodes.split("_"); | |
| 59 | + | |
| 60 | + if (studentInfo.length > 1) {//附属卡 | |
| 61 | + | |
| 62 | + String studentCodeF = studentInfo[0]; | |
| 63 | + String CardType = studentInfo[1]; | |
| 64 | + userInfoBean = getUserInfo(schoolId, studentCodeF); | |
| 65 | + String cardNum = userDao.getCardNum(userInfoBean.getStudent_id(), CardType); | |
| 66 | + userInfoBean.setStudent_num(cardNum); | |
| 67 | + | |
| 68 | + } else { | |
| 69 | + | |
| 70 | + userInfoBean = getUserInfo(schoolId, studentCode);//获取用户信息 | |
| 71 | + | |
| 72 | + } | |
| 73 | + } else if (userType == 1) { | |
| 74 | + TeacherBean teacher = userDao.getTeacher(schoolId, studentCode); | |
| 75 | + if (null != teacher) { | |
| 76 | + userInfoBean = new UserInfoBean(); | |
| 77 | + userInfoBean.setStudent_num(teacher.getTeacher_num()); | |
| 78 | + userInfoBean.setName(teacher.getName()); | |
| 79 | + userInfoBean.setUser_id(teacher.getUser_id()); | |
| 80 | + userInfoBean.setStudentcode(teacher.getNum()); | |
| 81 | + userInfoBean.setStudent_id(teacher.getTeacher_id()); | |
| 82 | + } | |
| 83 | + } | |
| 84 | + | |
| 85 | + myTask.doTaskOne(file, attendanceBeans, userInfoBean, schoolId, -1, userType); | |
| 86 | + } catch (Exception e) { | |
| 87 | + e.printStackTrace(); | |
| 88 | + } | |
| 89 | + return true; | |
| 90 | + } | |
| 91 | + | |
| 92 | + /** | |
| 93 | + * 照片下放 | |
| 94 | + * | |
| 95 | + * @param schoolId | |
| 96 | + * @param clint_type | |
| 97 | + * @param type 0:主卡 1:副卡 | |
| 98 | + */ | |
| 99 | + @Override | |
| 100 | + public void sendUserInfos(String schoolId, String clint_type, int type) { | |
| 101 | + myTask.doTaskSendUserInfos(schoolId, clint_type, type, -1); | |
| 102 | + } | |
| 103 | + | |
| 104 | + @Override | |
| 105 | + public boolean sendPermission(PermissionBean permissionBean) { | |
| 106 | + | |
| 107 | + List<String> deviceIds = permissionBean.getDeviceIds(); | |
| 108 | + if (null != deviceIds) | |
| 109 | + for (String deviceId : | |
| 110 | + deviceIds) { | |
| 111 | + NetSDKLib.LLong loginHandleLong = MyTask.lLongMap.get(deviceId); | |
| 112 | + GateModule.setAccessTimeSchedule(loginHandleLong, permissionBean); | |
| 113 | + GateModule.getAccessTimeSchedule1(loginHandleLong); | |
| 114 | + } | |
| 115 | + | |
| 116 | + | |
| 117 | + return false; | |
| 118 | + } | |
| 119 | + | |
| 120 | +} | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java
| 1 | 1 | package com.example.dahua.utils; |
| 2 | 2 | |
| 3 | +import com.example.dahua.bean.PermissionBean; | |
| 4 | +import com.example.dahua.bean.PermissionFaceBean; | |
| 5 | +import com.example.dahua.bean.PermissionHKBean; | |
| 3 | 6 | import com.example.dahua.lib.CompressPic; |
| 4 | 7 | import com.example.dahua.lib.FilePath; |
| 5 | 8 | import org.springframework.core.io.FileSystemResource; |
| ... | ... | @@ -69,4 +72,52 @@ public class HttpUtils { |
| 69 | 72 | } |
| 70 | 73 | |
| 71 | 74 | |
| 75 | + public static boolean sendPermission(PermissionBean permissionBean) { | |
| 76 | + String url = "http://121.40.109.21:8991/file/sendPermission"; | |
| 77 | + RestTemplate restTemplate = new RestTemplate(); | |
| 78 | + | |
| 79 | + HttpHeaders headers = new HttpHeaders(); | |
| 80 | + | |
| 81 | + MediaType mediaType = MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE); | |
| 82 | + | |
| 83 | + headers.setContentType(mediaType); | |
| 84 | + | |
| 85 | + HttpEntity<PermissionBean> httpEntity = new HttpEntity<>(permissionBean, headers); | |
| 86 | + | |
| 87 | + ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); | |
| 88 | + | |
| 89 | + System.out.println("大华设备下发权限:" + responseEntity.getBody()); | |
| 90 | + return responseEntity.getBody().equals("1"); | |
| 91 | + } | |
| 92 | + | |
| 93 | + public static void sendPermission2HK(PermissionFaceBean permissionFaceBean) { | |
| 94 | + String url = "http://114.55.30.100:8089/facereco/sendPermiss"; | |
| 95 | + PermissionBean permissionBean = permissionFaceBean.getPermissionBean(); | |
| 96 | + | |
| 97 | + if (null!=permissionBean){ | |
| 98 | + | |
| 99 | + PermissionHKBean permissionHKBean = new PermissionHKBean(); | |
| 100 | + | |
| 101 | + permissionHKBean.setDeviceIds(permissionBean.getDeviceIds()); | |
| 102 | + permissionHKBean.setSchoolId(permissionFaceBean.getSchoolId()+""); | |
| 103 | + permissionHKBean.setUserType("2"); | |
| 104 | + permissionHKBean.setWeekDays(permissionBean.getWeekDays()); | |
| 105 | + | |
| 106 | + RestTemplate restTemplate = new RestTemplate(); | |
| 107 | + | |
| 108 | + HttpHeaders headers = new HttpHeaders(); | |
| 109 | + | |
| 110 | + MediaType mediaType = MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE); | |
| 111 | + | |
| 112 | + headers.setContentType(mediaType); | |
| 113 | + | |
| 114 | + HttpEntity<PermissionHKBean> httpEntity = new HttpEntity<>(permissionHKBean, headers); | |
| 115 | + | |
| 116 | + ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); | |
| 117 | + | |
| 118 | + System.out.println("海康设备下发权限:" + responseEntity.getBody()); | |
| 119 | + | |
| 120 | + } | |
| 121 | + | |
| 122 | + } | |
| 72 | 123 | } | ... | ... |
cloud/dahua/src/main/resources/application.yml
| ... | ... | @@ -14,10 +14,10 @@ spring: |
| 14 | 14 | password: RQminVCJota3H1u8bBYH |
| 15 | 15 | jdbc-url: jdbc:sqlserver://116.62.155.137:33419;database=SmartCampus |
| 16 | 16 | driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver |
| 17 | - # username: SZJXTUSER | |
| 18 | - # password: xst200919 | |
| 19 | - # jdbc-url: jdbc:sqlserver://60.190.202.57:14333;database=SmartCampusSZ | |
| 20 | - # driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver | |
| 17 | +# username: SZJXTUSER | |
| 18 | +# password: xst200919 | |
| 19 | +# jdbc-url: jdbc:sqlserver://60.190.202.57:14333;database=SmartCampusSZ | |
| 20 | +# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver | |
| 21 | 21 | xiaoan: |
| 22 | 22 | jdbc-url: jdbc:sqlserver://116.62.241.27:33419;database=xiaoanhxy |
| 23 | 23 | username: szjxtuser | ... | ... |
cloud/dahua/src/main/resources/mapper/PermissionFaceMapper.xml
0 → 100644
| ... | ... | @@ -0,0 +1,55 @@ |
| 1 | +<?xml version="1.0" encoding="UTF-8" ?> | |
| 2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > | |
| 3 | +<mapper namespace="com.example.dahua.dao.PermissionFaceDao"> | |
| 4 | + | |
| 5 | +<!-- create table PermissionFace (--> | |
| 6 | +<!-- id int not null PRIMARY KEY ,--> | |
| 7 | +<!-- permissionJSON varchar(max) not null ,--> | |
| 8 | +<!-- schoolId int not null ,--> | |
| 9 | +<!-- perrmissName varchar(50) not null ,--> | |
| 10 | +<!-- createTime varchar(50) not null ,--> | |
| 11 | +<!-- updateTime varchar(50) not null ,--> | |
| 12 | +<!-- )--> | |
| 13 | + <resultMap id="permissFaceBase" type="com.example.dahua.bean.PermissionFaceBean"> | |
| 14 | + | |
| 15 | + <result column="id" property="id"/> | |
| 16 | + <result column="permissionJSON" property="permissionJson"/> | |
| 17 | + <result column="schoolId" property="schoolId"/> | |
| 18 | + <result column="perrmissName" property="perrmissName"/> | |
| 19 | + <result column="createTime" property="createTime"/> | |
| 20 | + <result column="updateTime" property="updateTime"/> | |
| 21 | + | |
| 22 | + </resultMap> | |
| 23 | + | |
| 24 | + <insert id="addPermissionFace" parameterType="com.example.dahua.bean.PermissionFaceBean"> | |
| 25 | + | |
| 26 | + insert into PermissionFace values (#{permissionJson},#{schoolId},#{perrmissName},#{createTime},#{updateTime}) | |
| 27 | + | |
| 28 | + </insert> | |
| 29 | + | |
| 30 | + | |
| 31 | + <select id="getPermissFaces" parameterType="java.lang.Integer" resultMap="permissFaceBase"> | |
| 32 | + | |
| 33 | + select * from PermissionFace where schoolId = #{schoolId}; | |
| 34 | + | |
| 35 | + </select> | |
| 36 | + <select id="getPermissionDetail" parameterType="java.lang.Integer" resultMap="permissFaceBase"> | |
| 37 | + | |
| 38 | + select * from PermissionFace where id = #{permissionId}; | |
| 39 | + | |
| 40 | + </select> | |
| 41 | + <update id="updatePermissionFace" parameterType="com.example.dahua.bean.PermissionFaceBean"> | |
| 42 | + | |
| 43 | + update PermissionFace set permissionJson = #{permissionJson},updateTime=#{updateTime},perrmissName=#{perrmissName} where id = #{id} | |
| 44 | + | |
| 45 | + </update> | |
| 46 | + | |
| 47 | + <delete id="deletePermissionFace" parameterType="java.lang.Integer"> | |
| 48 | + delete from PermissionFace where id = #{id} | |
| 49 | + </delete> | |
| 50 | + | |
| 51 | + <select id="getPerFaceWithId" parameterType="java.lang.Integer" resultType="com.example.dahua.bean.PermissionFaceBean"> | |
| 52 | + select * from PermissionFace where id =#{id}; | |
| 53 | + </select> | |
| 54 | + | |
| 55 | +</mapper> | |
| 0 | 56 | \ No newline at end of file | ... | ... |
cloud/dahua/src/main/resources/mapper/usermapper.xml
| 1 | 1 | <?xml version="1.0" encoding="UTF-8" ?> |
| 2 | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| 3 | -<mapper namespace="com.example.dahua.dao"> | |
| 3 | +<mapper namespace="com.example.dahua.dao.UserDao"> | |
| 4 | 4 | |
| 5 | 5 | <!--<select id="getStudentNum" resultType="String" parameterType="String">--> |
| 6 | 6 | <!--select student_num--> |
| ... | ... | @@ -9,4 +9,14 @@ |
| 9 | 9 | <!--and studentcode = #{studentcode}--> |
| 10 | 10 | <!--</select>--> |
| 11 | 11 | |
| 12 | + <select id="getStudentWiSidAndSex" resultType="java.lang.String"> | |
| 13 | + | |
| 14 | + select student_num from SZ_V_School_Student where school_id = #{schoolId} and sex in | |
| 15 | + <foreach collection="sexs" item="sex" index="index" open="(" separator="," close=")"> | |
| 16 | + #{sex} | |
| 17 | + </foreach> | |
| 18 | + | |
| 19 | + </select> | |
| 20 | + | |
| 21 | + | |
| 12 | 22 | </mapper> |
| 13 | 23 | \ No newline at end of file | ... | ... |
cloud/fIle-center/src/main/java/com/sincere/file/config/AllowOriginFilter.java
0 → 100644
| ... | ... | @@ -0,0 +1,37 @@ |
| 1 | +package com.sincere.file.config; | |
| 2 | + | |
| 3 | +import org.springframework.stereotype.Component; | |
| 4 | + | |
| 5 | +import javax.servlet.*; | |
| 6 | +import javax.servlet.annotation.WebFilter; | |
| 7 | +import javax.servlet.http.HttpServletResponse; | |
| 8 | +import java.io.IOException; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * 用于解决跨域问题 | |
| 12 | + * | |
| 13 | + * @author chen | |
| 14 | + * @version 1.0 | |
| 15 | + * @date 2019/10/11 0011 10:17 | |
| 16 | + */ | |
| 17 | +@Component | |
| 18 | +@WebFilter(urlPatterns = "/*", filterName = "authFilter") | |
| 19 | +public class AllowOriginFilter implements Filter { | |
| 20 | + | |
| 21 | + @Override | |
| 22 | + public void init(FilterConfig filterConfig) throws ServletException { | |
| 23 | + } | |
| 24 | + | |
| 25 | + public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { | |
| 26 | + HttpServletResponse response = (HttpServletResponse) res; | |
| 27 | + response.setHeader("Access-Control-Allow-Origin", "*"); | |
| 28 | + response.setHeader("Access-Control-Allow-Methods", "*"); | |
| 29 | + response.setHeader("Access-Control-Allow-Credentials", "true"); | |
| 30 | + response.setHeader("Access-Control-Allow-Headers", "*"); | |
| 31 | + chain.doFilter(req, res); | |
| 32 | + } | |
| 33 | + | |
| 34 | + @Override | |
| 35 | + public void destroy() { | |
| 36 | + } | |
| 37 | +} | ... | ... |
cloud/getaway/src/main/resources/application.yml
| ... | ... | @@ -69,6 +69,12 @@ spring: |
| 69 | 69 | - Path=/haikang/** |
| 70 | 70 | filters: |
| 71 | 71 | - StripPrefix=1 |
| 72 | + - id: haikangface | |
| 73 | + uri: http://120.26.116.253:8089 | |
| 74 | + predicates: | |
| 75 | + - Path=/haikangface/** | |
| 76 | + filters: | |
| 77 | + - StripPrefix=1 | |
| 72 | 78 | # default-filters: |
| 73 | 79 | # - DedupeResponseHeader=Access-Control-Allow-Origin, RETAIN_UNIQUE |
| 74 | 80 | # discovery: |
| ... | ... | @@ -92,4 +98,4 @@ ribbon: |
| 92 | 98 | |
| 93 | 99 | |
| 94 | 100 | url: |
| 95 | - ignored: /SmartCampusWebApi/**,/authserver/**,/NewSmartCampus/**,/file-center/**,/dahua/**,/haikang/** | |
| 96 | 101 | \ No newline at end of file |
| 102 | + ignored: /SmartCampusWebApi/**,/authserver/**,/NewSmartCampus/**,/file-center/**,/dahua/**,/haikang/**,/haikangface/** | |
| 97 | 103 | \ No newline at end of file | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java
| ... | ... | @@ -19,8 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; |
| 19 | 19 | import org.springframework.beans.factory.annotation.Value; |
| 20 | 20 | import org.springframework.boot.ApplicationArguments; |
| 21 | 21 | import org.springframework.boot.ApplicationRunner; |
| 22 | +import org.springframework.http.ResponseEntity; | |
| 22 | 23 | import org.springframework.stereotype.Component; |
| 23 | 24 | import org.springframework.util.StringUtils; |
| 25 | +import org.springframework.web.client.RestTemplate; | |
| 24 | 26 | |
| 25 | 27 | import java.io.*; |
| 26 | 28 | import java.net.InetAddress; |
| ... | ... | @@ -29,6 +31,7 @@ import java.nio.ByteBuffer; |
| 29 | 31 | import java.text.SimpleDateFormat; |
| 30 | 32 | import java.util.Date; |
| 31 | 33 | import java.util.HashMap; |
| 34 | +import java.util.List; | |
| 32 | 35 | import java.util.Map; |
| 33 | 36 | import java.util.regex.Pattern; |
| 34 | 37 | |
| ... | ... | @@ -48,7 +51,8 @@ public class CMSServer implements ApplicationRunner { |
| 48 | 51 | //114.55.30.100 |
| 49 | 52 | //120.26.116.253 |
| 50 | 53 | private String ip_cloud = "120.26.116.253"; |
| 51 | - // private String ip_cloud = "114.55.30.100"; | |
| 54 | + // private String ip_cloud = "172.16.2.56"; | |
| 55 | +// private String ip_cloud = "114.55.30.100"; | |
| 52 | 56 | private String ip; |
| 53 | 57 | |
| 54 | 58 | { |
| ... | ... | @@ -122,7 +126,7 @@ public class CMSServer implements ApplicationRunner { |
| 122 | 126 | public class FRegisterCallBack implements HCEHomeCMS.DEVICE_REGISTER_CB { |
| 123 | 127 | public boolean invoke(NativeLong lUserID, int dwDataType, Pointer pOutBuffer, int dwOutLen, HCEHomeCMS.NET_EHOME_SERVER_INFO pInBuffer, int dwInLen, Pointer pUser) { |
| 124 | 128 | String deviceId = ""; |
| 125 | - System.out.println("dwDataType:" + dwDataType); | |
| 129 | +// System.out.println("dwDataType:" + dwDataType); | |
| 126 | 130 | if (dwDataType == 0) { |
| 127 | 131 | HCEHomeCMS.NET_EHOME_DEV_REG_INFO strDevRegInfo = new HCEHomeCMS.NET_EHOME_DEV_REG_INFO(); |
| 128 | 132 | strDevRegInfo.write(); |
| ... | ... | @@ -137,7 +141,10 @@ public class CMSServer implements ApplicationRunner { |
| 137 | 141 | pInBuffer.dwSize = pInBuffer.size(); |
| 138 | 142 | AttendanceBean attendanceBean = new AttendanceBean(); |
| 139 | 143 | attendanceBean.setClint_id(deviceId); |
| 140 | - attendanceBean.setClint_type("18"); | |
| 144 | + if (deviceId.startsWith("ytj")) | |
| 145 | + attendanceBean.setClint_type("28"); | |
| 146 | + else | |
| 147 | + attendanceBean.setClint_type("18"); | |
| 141 | 148 | attendanceBean.setIntime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| 142 | 149 | attendanceBean.setIsConnection(1); |
| 143 | 150 | attendanceBean.setSchool_id("-1"); |
| ... | ... | @@ -280,7 +287,7 @@ public class CMSServer implements ApplicationRunner { |
| 280 | 287 | |
| 281 | 288 | public boolean invoke(NativeLong iHandle, String pFileName, Pointer pFileBuf, int dwFileLen, Pointer pFilePath, Pointer pUser) { |
| 282 | 289 | String strPath = "C://EhomePicServer/"; |
| 283 | - System.out.println("pFileName:" + pFileName); | |
| 290 | +// System.out.println("pFileName:" + pFileName); | |
| 284 | 291 | pFileName = pFileName.replace("_", ""); |
| 285 | 292 | boolean isZhuaPai = false; |
| 286 | 293 | if (pFileName.contains("-")) {//人脸抓拍机抓拍到的图片 |
| ... | ... | @@ -405,7 +412,7 @@ public class CMSServer implements ApplicationRunner { |
| 405 | 412 | strXMLData.read(); |
| 406 | 413 | |
| 407 | 414 | String strXML = new String(strXMLData.byValue); |
| 408 | - System.out.println(strXML); | |
| 415 | +// System.out.println(strXML); | |
| 409 | 416 | |
| 410 | 417 | if (null == alarmUtils) { |
| 411 | 418 | alarmUtils = new AlarmUtils(deviceDao); |
| ... | ... | @@ -439,7 +446,7 @@ public class CMSServer implements ApplicationRunner { |
| 439 | 446 | } |
| 440 | 447 | |
| 441 | 448 | } |
| 442 | - System.out.println("监听回调"); | |
| 449 | +// System.out.println("监听回调"); | |
| 443 | 450 | return true; |
| 444 | 451 | } |
| 445 | 452 | } |
| ... | ... | @@ -484,8 +491,11 @@ public class CMSServer implements ApplicationRunner { |
| 484 | 491 | face_recoder.getImgurl(), face_recoder.getInOrOut(), face_recoder.getTime(), face_recoder.getCardNum(), currTemperature); |
| 485 | 492 | } |
| 486 | 493 | } else { |
| 494 | + //教师点名 | |
| 495 | + isTeacher(cardNo, deviceID); | |
| 487 | 496 | FileUtils.getInstance().writeLogs("card:" + card, FileUtils.faceSuccess); |
| 488 | 497 | } |
| 498 | + | |
| 489 | 499 | } |
| 490 | 500 | |
| 491 | 501 | } catch (Exception e) { |
| ... | ... | @@ -493,6 +503,29 @@ public class CMSServer implements ApplicationRunner { |
| 493 | 503 | } |
| 494 | 504 | } |
| 495 | 505 | |
| 506 | + public void isTeacher(String cardNo, String deviceID) { | |
| 507 | + | |
| 508 | + | |
| 509 | + List<String> devLists = userDao.getDeviceRoomRelation(deviceID); | |
| 510 | + | |
| 511 | + if (null != devLists && devLists.size() > 0) { | |
| 512 | + | |
| 513 | + StudentBean teacher = userDao.getTeacherWithCard(cardNo); | |
| 514 | + if (null != teacher) { | |
| 515 | + String url = String.format("http://60.190.202.57:1000/api/RollCall/AddRollCallPersonnelRecord?userId=%s&deviceId=%s", teacher.getUser_id(), deviceID); | |
| 516 | + | |
| 517 | + RestTemplate restTemplate = new RestTemplate(); | |
| 518 | + | |
| 519 | + | |
| 520 | + String res = restTemplate.getForObject(url, String.class); | |
| 521 | + | |
| 522 | + System.out.println("result:" + res + "------url:" + url); | |
| 523 | + | |
| 524 | + } | |
| 525 | + } | |
| 526 | + | |
| 527 | + } | |
| 528 | + | |
| 496 | 529 | /** |
| 497 | 530 | * 生成图片服务路径 |
| 498 | 531 | * |
| ... | ... | @@ -602,17 +635,17 @@ public class CMSServer implements ApplicationRunner { |
| 602 | 635 | "<password>MTIzNDU2</password>\r\n" + |
| 603 | 636 | "<maxSwipeTime></maxSwipeTime>\r\n" + |
| 604 | 637 | "<swipeTime></swipeTime>\r\n" + |
| 605 | - "<groupNo></groupNo>\r\n" + | |
| 606 | - "<employeeNo>" + employeeNo + "</employeeNo>\r\n" + | |
| 638 | + "<groupNo>5</groupNo>\r\n" + | |
| 607 | 639 | "<name>"; |
| 608 | 640 | String nameAfter = "</name>\r\n" + |
| 609 | - "<departmentNo></departmentNo>\r\n" + | |
| 641 | + "<employeeNo>" + employeeNo + "</employeeNo>\r\n" + | |
| 642 | + "<departmentNo>3</departmentNo>\r\n" + | |
| 610 | 643 | "<schedulePlanNo></schedulePlanNo>\r\n" + |
| 611 | 644 | "<schedulePlanType></schedulePlanType>\r\n" + |
| 612 | 645 | "</CardCfg>\r\n" + |
| 613 | 646 | "</ConfigXML>\r\n" + |
| 614 | 647 | "</Params>"; |
| 615 | -// System.out.println("strConfigXMLCard:" + strConfigXMLCard + name + nameAfter); | |
| 648 | + System.out.println("strConfigXMLCard:" + strConfigXMLCard + name + nameAfter); | |
| 616 | 649 | byte[] nameBeforBy = null; |
| 617 | 650 | byte[] resultBy = null; |
| 618 | 651 | try { |
| ... | ... | @@ -676,50 +709,50 @@ public class CMSServer implements ApplicationRunner { |
| 676 | 709 | public void SetCardWeekPlan(String clint_id, String card, String userType, String strConfigXMLCard, String content) { |
| 677 | 710 | try { |
| 678 | 711 | |
| 679 | - HCEHomeCMS.NET_EHOME_XML_CFG struXMLCard = new HCEHomeCMS.NET_EHOME_XML_CFG(); | |
| 680 | - | |
| 681 | - HCEHomeCMS.NET_DVR_STRING_POINTER stringRequestCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); | |
| 682 | - stringRequestCard.read(); | |
| 683 | - String strRequestCard = "SETDEVICECONFIG"; | |
| 684 | - stringRequestCard.byString = strRequestCard.getBytes(); | |
| 685 | - stringRequestCard.write(); | |
| 686 | - | |
| 687 | - struXMLCard.pCmdBuf = stringRequestCard.getPointer(); | |
| 688 | - struXMLCard.dwCmdLen = stringRequestCard.byString.length; | |
| 689 | - struXMLCard.write(); | |
| 690 | - | |
| 691 | - HCEHomeCMS.NET_DVR_STRING_POINTER struConfigXMLCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); | |
| 692 | - struConfigXMLCard.read(); | |
| 693 | - struConfigXMLCard.byString = strConfigXMLCard.getBytes(); | |
| 694 | - struConfigXMLCard.write(); | |
| 695 | - | |
| 696 | - struXMLCard.pInBuf = struConfigXMLCard.getPointer(); | |
| 697 | - struXMLCard.dwInSize = struConfigXMLCard.byString.length; | |
| 698 | - struXMLCard.dwRecvTimeOut = 5000; | |
| 699 | - struXMLCard.dwSendTimeOut = 5000; | |
| 700 | - struXMLCard.write(); | |
| 701 | - | |
| 702 | - HCEHomeCMS.NET_DVR_STRING_POINTER stringOutCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); | |
| 703 | - stringOutCard.write(); | |
| 704 | - struXMLCard.pOutBuf = stringOutCard.getPointer(); | |
| 705 | - struXMLCard.dwOutSize = stringOutCard.size(); | |
| 706 | - struXMLCard.write(); | |
| 707 | - | |
| 708 | - HCEHomeCMS.NET_DVR_STRING_POINTER stringStatusCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); | |
| 709 | - stringStatusCard.write(); | |
| 710 | - struXMLCard.pStatusBuf = stringStatusCard.getPointer(); | |
| 711 | - struXMLCard.dwStatusSize = stringStatusCard.size(); | |
| 712 | - struXMLCard.write(); | |
| 713 | - | |
| 714 | - int i = struXMLCard.size(); | |
| 715 | - if (!hCEhomeCMS.NET_ECMS_XMLConfig(map.get(clint_id), struXMLCard, struXMLCard.size())) { | |
| 716 | - int iErr = hCEhomeCMS.NET_ECMS_GetLastError(); | |
| 717 | - System.err.println(content + "失败:" + iErr); | |
| 718 | - sendRecoderUtils.sendFail(sendRecordDao, card, "", clint_id, userDao, content + "失败:" + iErr, userType); | |
| 719 | - } else { | |
| 720 | - System.out.println(content + "成功"); | |
| 721 | - } | |
| 722 | - }catch (Exception e){ | |
| 712 | + HCEHomeCMS.NET_EHOME_XML_CFG struXMLCard = new HCEHomeCMS.NET_EHOME_XML_CFG(); | |
| 713 | + | |
| 714 | + HCEHomeCMS.NET_DVR_STRING_POINTER stringRequestCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); | |
| 715 | + stringRequestCard.read(); | |
| 716 | + String strRequestCard = "SETDEVICECONFIG"; | |
| 717 | + stringRequestCard.byString = strRequestCard.getBytes(); | |
| 718 | + stringRequestCard.write(); | |
| 719 | + | |
| 720 | + struXMLCard.pCmdBuf = stringRequestCard.getPointer(); | |
| 721 | + struXMLCard.dwCmdLen = stringRequestCard.byString.length; | |
| 722 | + struXMLCard.write(); | |
| 723 | + | |
| 724 | + HCEHomeCMS.NET_DVR_STRING_POINTER struConfigXMLCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); | |
| 725 | + struConfigXMLCard.read(); | |
| 726 | + struConfigXMLCard.byString = strConfigXMLCard.getBytes(); | |
| 727 | + struConfigXMLCard.write(); | |
| 728 | + | |
| 729 | + struXMLCard.pInBuf = struConfigXMLCard.getPointer(); | |
| 730 | + struXMLCard.dwInSize = struConfigXMLCard.byString.length; | |
| 731 | + struXMLCard.dwRecvTimeOut = 5000; | |
| 732 | + struXMLCard.dwSendTimeOut = 5000; | |
| 733 | + struXMLCard.write(); | |
| 734 | + | |
| 735 | + HCEHomeCMS.NET_DVR_STRING_POINTER stringOutCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); | |
| 736 | + stringOutCard.write(); | |
| 737 | + struXMLCard.pOutBuf = stringOutCard.getPointer(); | |
| 738 | + struXMLCard.dwOutSize = stringOutCard.size(); | |
| 739 | + struXMLCard.write(); | |
| 740 | + | |
| 741 | + HCEHomeCMS.NET_DVR_STRING_POINTER stringStatusCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); | |
| 742 | + stringStatusCard.write(); | |
| 743 | + struXMLCard.pStatusBuf = stringStatusCard.getPointer(); | |
| 744 | + struXMLCard.dwStatusSize = stringStatusCard.size(); | |
| 745 | + struXMLCard.write(); | |
| 746 | + | |
| 747 | + int i = struXMLCard.size(); | |
| 748 | + if (!hCEhomeCMS.NET_ECMS_XMLConfig(map.get(clint_id), struXMLCard, struXMLCard.size())) { | |
| 749 | + int iErr = hCEhomeCMS.NET_ECMS_GetLastError(); | |
| 750 | + System.err.println(content + "失败:" + iErr); | |
| 751 | + sendRecoderUtils.sendFail(sendRecordDao, card, "", clint_id, userDao, content + "失败:" + iErr, userType); | |
| 752 | + } else { | |
| 753 | + System.out.println(content + "成功"); | |
| 754 | + } | |
| 755 | + } catch (Exception e) { | |
| 723 | 756 | e.printStackTrace(); |
| 724 | 757 | } |
| 725 | 758 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java
| 1 | 1 | package com.sincere.haikangface.async; |
| 2 | 2 | |
| 3 | 3 | |
| 4 | +import com.alibaba.fastjson.JSON; | |
| 4 | 5 | import com.sincere.haikangface.CMSServer; |
| 6 | +import com.sincere.haikangface.bean.StudentBean; | |
| 7 | +import com.sincere.haikangface.bean.TeacherBean; | |
| 5 | 8 | import com.sincere.haikangface.bean.face.PermissionBean; |
| 6 | 9 | import com.sincere.haikangface.bean.face.WeekDay; |
| 7 | 10 | import com.sincere.haikangface.bean.face.WeekTime; |
| ... | ... | @@ -10,18 +13,11 @@ import com.sincere.haikangface.dao.UserDao; |
| 10 | 13 | import com.sincere.haikangface.utils.*; |
| 11 | 14 | import com.sincere.haikangface.xiananDao.SendRecordDao; |
| 12 | 15 | import lombok.extern.slf4j.Slf4j; |
| 13 | -import org.apache.poi.ss.formula.functions.WeekdayFunc; | |
| 14 | -import org.json.JSONArray; | |
| 15 | -import org.json.JSONObject; | |
| 16 | 16 | import org.springframework.beans.factory.annotation.Autowired; |
| 17 | 17 | import org.springframework.scheduling.annotation.Async; |
| 18 | 18 | import org.springframework.stereotype.Component; |
| 19 | -import org.springframework.web.bind.annotation.RequestParam; | |
| 19 | +import org.springframework.util.StringUtils; | |
| 20 | 20 | |
| 21 | -import javax.imageio.stream.FileImageInputStream; | |
| 22 | -import java.io.*; | |
| 23 | -import java.net.HttpURLConnection; | |
| 24 | -import java.net.URL; | |
| 25 | 21 | import java.util.*; |
| 26 | 22 | |
| 27 | 23 | @Component |
| ... | ... | @@ -53,13 +49,30 @@ public class SendUserAsync { |
| 53 | 49 | //根据设备是5603 还是新设备 |
| 54 | 50 | String employeeNo = ""; |
| 55 | 51 | if (deviceId.contains("ymzx") || deviceId.contains("5607") || deviceId.contains("5671") || deviceId.contains("5604")) { |
| 56 | - employeeNo = System.currentTimeMillis() + ""; | |
| 57 | - cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); | |
| 58 | - cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); | |
| 59 | - for (int i = 0; i < 7; i++) { | |
| 60 | - cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlanTime(HKXmlUtils.getInstance().SetCardWeekPlanTimes("00:00:00", "23:00:00"), "" + i), "设置卡权限周计划时间"); | |
| 52 | + long lon = Long.parseLong(card); | |
| 53 | + //十六进制卡号 | |
| 54 | + String resultCard = getCard(String.format("%08x", lon)).toUpperCase(); | |
| 55 | + String time = System.currentTimeMillis() + ""; | |
| 56 | + if (userType.equals("1")) { | |
| 57 | + StudentBean studentBean = userDao.getTeacherWithCard(resultCard); | |
| 58 | + log.error("studentBean:{}", studentBean == null ? "-------" : studentBean.toString()); | |
| 59 | + if (null == studentBean) { | |
| 60 | + employeeNo = time.substring(time.length() - 6, time.length()); | |
| 61 | + } else | |
| 62 | + employeeNo = studentBean.getTeacher_id(); | |
| 63 | + } else if (userType.equals("2")) { | |
| 64 | + StudentBean studentBean = userDao.getStudentWithCard(resultCard); | |
| 65 | + if (null == studentBean) { | |
| 66 | + employeeNo = time.substring(time.length() - 6, time.length()); | |
| 67 | + } else | |
| 68 | + employeeNo = studentBean.getStudent_id(); | |
| 61 | 69 | } |
| 62 | - cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardRightCfg(card), "设置卡权限"); | |
| 70 | +// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); | |
| 71 | +// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); | |
| 72 | +// for (int i = 0; i < 7; i++) { | |
| 73 | +// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlanTime(HKXmlUtils.getInstance().SetCardWeekPlanTimes("00:00:00", "23:00:00"), "" + i), "设置卡权限周计划时间"); | |
| 74 | +// } | |
| 75 | +// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardRightCfg(card), "设置卡权限"); | |
| 63 | 76 | } |
| 64 | 77 | |
| 65 | 78 | boolean result = cmsServer.createImgPath(srcFile, picUrl, card, startTime, endTime, validTimeEnabled, name, deviceId, userType, employeeNo); |
| ... | ... | @@ -72,52 +85,202 @@ public class SendUserAsync { |
| 72 | 85 | |
| 73 | 86 | /** |
| 74 | 87 | * 下发权限 |
| 88 | + * | |
| 75 | 89 | * @param permissionBean |
| 90 | + * @param i 1:不需要重新下发,0需要重新下发 | |
| 76 | 91 | */ |
| 77 | - public boolean sendPermiss(PermissionBean permissionBean) { | |
| 92 | + @Async("taskExecutor") | |
| 93 | + public boolean sendPermiss(PermissionBean permissionBean, int i) { | |
| 94 | + | |
| 95 | + String userType = permissionBean.getUserType(); | |
| 96 | + | |
| 97 | + List<WeekDay> weekDays = permissionBean.getWeekDays(); | |
| 98 | + | |
| 99 | + Map<Integer, List<WeekTime>> map = new HashMap<>(); | |
| 100 | + | |
| 101 | + String schoolId = permissionBean.getSchoolId(); | |
| 102 | + | |
| 103 | + for (WeekDay weekDay : | |
| 104 | + weekDays) { | |
| 105 | + if (weekDay.getDeviceIds() != null && weekDay.getDeviceIds().size() > 0) { | |
| 106 | + permissionBean.setDeviceIds(weekDay.getDeviceIds()); | |
| 107 | + } | |
| 108 | + List<String> deviceIds = permissionBean.getDeviceIds(); | |
| 109 | + List<String> cardNumList = new ArrayList<>(); | |
| 110 | + String sex = weekDay.getSex(); | |
| 111 | + if (userType.equals("1")) { | |
| 112 | + List<String> cardList = getUserCard(weekDay.getUserIds(), 1); | |
| 113 | + cardNumList.addAll(cardList); | |
| 114 | + } else if (userType.equals("2")) { | |
| 115 | + cardNumList = getCards(sex, userType, schoolId); | |
| 116 | + } | |
| 117 | + //整理周和时间段 | |
| 118 | + initWeedayAndTimes(weekDay, map); | |
| 119 | + senPsermiss(permissionBean, map, deviceIds, cardNumList, i); | |
| 120 | + } | |
| 121 | + log.error("map{}", JSON.toJSONString(map)); | |
| 122 | + return true; | |
| 123 | + } | |
| 124 | + | |
| 125 | + private List<String> getUserCard(String userIds, int userType) { | |
| 126 | + List<String> cards = new ArrayList<>(); | |
| 127 | + try { | |
| 128 | + | |
| 129 | + String[] userIdsStr = userIds.split(","); | |
| 130 | + | |
| 131 | + for (String userId : | |
| 132 | + userIdsStr) { | |
| 133 | + TeacherBean teacherBean = null; | |
| 134 | + if (userType == 1) {//教师 | |
| 135 | + teacherBean = userDao.getTeacherWithUserId(userId); | |
| 136 | + if (null != teacherBean) { | |
| 137 | + String card = teacherBean.getTeacer_num(); | |
| 138 | + if (!StringUtils.isEmpty(card)) { | |
| 139 | + cards.add(card); | |
| 140 | + } | |
| 141 | + } else { | |
| 142 | + log.error("教师用户不存在"); | |
| 143 | + } | |
| 144 | + } | |
| 145 | + } | |
| 146 | + | |
| 147 | + } catch (Exception e) { | |
| 148 | + e.printStackTrace(); | |
| 149 | + } | |
| 150 | + | |
| 151 | + return cards; | |
| 152 | + } | |
| 153 | + | |
| 154 | + /** | |
| 155 | + * 把卡号和权限下发到对应的设备 | |
| 156 | + * | |
| 157 | + * @param permissionBean | |
| 158 | + * @param map | |
| 159 | + * @param deviceIds | |
| 160 | + * @param cardNumList | |
| 161 | + * @param i | |
| 162 | + * @return | |
| 163 | + */ | |
| 164 | + private boolean senPsermiss(PermissionBean permissionBean, Map<Integer, List<WeekTime>> map, List<String> deviceIds, List<String> cardNumList, int i) { | |
| 165 | + String userType = permissionBean.getUserType(); | |
| 166 | + | |
| 167 | + if (deviceIds == null || deviceIds.size() == 0) { | |
| 168 | + log.error("设备不存在"); | |
| 169 | + return false; | |
| 170 | + } | |
| 78 | 171 | |
| 79 | - String cardNum = permissionBean.getCardNum(); | |
| 80 | - List<String> deviceIds = permissionBean.getDeviceIds(); | |
| 81 | - String userType = permissionBean.getUserType(); | |
| 82 | - List<WeekDay> weekDays = permissionBean.getWeekDays(); | |
| 172 | + if (null == cardNumList || cardNumList.size() == 0) { | |
| 173 | + log.error("卡号为空"); | |
| 174 | + return false; | |
| 175 | + } | |
| 83 | 176 | |
| 84 | 177 | for (String deviceId : |
| 85 | 178 | deviceIds) { |
| 86 | - if (!cmsServer.getIsDeviceOnline(deviceId)){//设备在线 | |
| 87 | - cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); | |
| 88 | - cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); | |
| 179 | + if (cmsServer.getIsDeviceOnline(deviceId)) {//设备在线 | |
| 180 | + | |
| 181 | + for (String cardNum : | |
| 182 | + cardNumList) { | |
| 89 | 183 | |
| 90 | - for (WeekDay weekDay: | |
| 91 | - weekDays) { | |
| 184 | + if (!StringUtils.isEmpty(cardNum)) { | |
| 185 | + cardNum = Long.parseLong(getCard(cardNum), 16) + ""; | |
| 92 | 186 | |
| 93 | - List<WeekTime> weekTimes = weekDay.getWeekTimes(); | |
| 94 | - int weekdayIndex = weekDay.getWeekDay(); | |
| 187 | + cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); | |
| 188 | + cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); | |
| 95 | 189 | |
| 96 | - StringBuffer stringBuffer = new StringBuffer();//添加时间集 | |
| 190 | + for (Map.Entry<Integer, List<WeekTime>> weeKdayMap : | |
| 191 | + map.entrySet()) { | |
| 97 | 192 | |
| 98 | - for (WeekTime weetTime : | |
| 99 | - weekTimes) { | |
| 193 | + int week = weeKdayMap.getKey(); | |
| 194 | + List<WeekTime> weekTimes = weeKdayMap.getValue(); | |
| 100 | 195 | |
| 101 | - String weekPlanTimes = HKXmlUtils.getInstance().SetCardWeekPlanTimes(weetTime.getStartTime(),weetTime.getEndTime()); | |
| 102 | - log.error("weekPlanTimes:{}",weekPlanTimes); | |
| 103 | - stringBuffer.append(weekPlanTimes); | |
| 196 | + StringBuffer stringBuffer = new StringBuffer();//添加时间集 | |
| 197 | + for (WeekTime weekTime : | |
| 198 | + weekTimes) { | |
| 199 | + String weekPlanTimes = HKXmlUtils.getInstance().SetCardWeekPlanTimes(weekTime.getStartTime(), weekTime.getEndTime()); | |
| 200 | +// log.error("weekPlanTimes:{}", weekPlanTimes); | |
| 201 | + stringBuffer.append(weekPlanTimes); | |
| 202 | + } | |
| 104 | 203 | |
| 204 | + String weekPlanTime = HKXmlUtils.getInstance().SetCardWeekPlanTime(stringBuffer.toString(), "" + week); | |
| 205 | + String serCardRightCfg = HKXmlUtils.getInstance().SetCardRightCfg(cardNum); | |
| 206 | +// log.error("serCardRightCfg:{}", serCardRightCfg); | |
| 207 | + FileUtils.getInstance().writeLogs(weekPlanTime,"设置卡权限周计划时间.txt"); | |
| 208 | + cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, weekPlanTime, "设置卡权限周计划时间"); | |
| 209 | + cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, serCardRightCfg, "设置卡权限"); | |
| 210 | + | |
| 211 | + } | |
| 105 | 212 | } |
| 106 | - String weekPlanTime = HKXmlUtils.getInstance().SetCardWeekPlanTime(stringBuffer.toString(), "" + weekdayIndex); | |
| 107 | - log.error("weekPlanTime:{}",weekPlanTime); | |
| 108 | - cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, weekPlanTime, "设置卡权限周计划时间"); | |
| 109 | - cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, HKXmlUtils.getInstance().SetCardRightCfg(cardNum), "设置卡权限"); | |
| 213 | + | |
| 110 | 214 | } |
| 111 | - }else {//设备不在线 | |
| 112 | - log.error("deviceId:{}",deviceId+"不在线"); | |
| 215 | + } else {//设备不在线 | |
| 216 | + if (i == 0) | |
| 217 | + HttpUtil.sendPermission2HK(permissionBean); | |
| 218 | + log.error("deviceId:{}", deviceId + "不在线"); | |
| 113 | 219 | } |
| 114 | 220 | |
| 115 | 221 | } |
| 116 | - | |
| 117 | 222 | return true; |
| 118 | 223 | } |
| 119 | 224 | |
| 120 | 225 | |
| 226 | + private List<String> getCards(String sex, String userType, String schoolId) { | |
| 227 | + | |
| 228 | + List<String> cardList = new ArrayList<>(); | |
| 229 | + | |
| 230 | + switch (userType) { | |
| 231 | + case "2"://学生 | |
| 232 | + String[] sexs = sex.split(","); | |
| 233 | + List<String> sexList = new ArrayList<>(); | |
| 234 | + for (int i = 0; i < sexs.length; i++) { | |
| 235 | + sexList.add(sexs[i]); | |
| 236 | + } | |
| 237 | + cardList = userDao.getStudentWiSidAndSex(schoolId, sexList); | |
| 238 | + break; | |
| 239 | + } | |
| 240 | + | |
| 241 | + return cardList; | |
| 242 | + } | |
| 243 | + | |
| 244 | + | |
| 245 | + private void initWeedayAndTimes(WeekDay weekDay, Map<Integer, List<WeekTime>> map) { | |
| 246 | + | |
| 247 | + String weekDayStr = weekDay.getWeekDay(); | |
| 248 | + String[] weekDays = weekDayStr.split(","); | |
| 249 | + | |
| 250 | + List<WeekTime> weekTimes = weekDay.getWeekTimes(); | |
| 251 | + | |
| 252 | + for (int i = 0; i < weekDays.length; i++) { | |
| 253 | + int weekDayIndex = Integer.parseInt(weekDays[i]); | |
| 254 | + if (map.containsKey(weekDayIndex)) {//周已经有时间段 | |
| 255 | + List<WeekTime> weekTimeList = map.get(weekDayIndex); | |
| 256 | + for (WeekTime wee : | |
| 257 | + weekTimes) { | |
| 258 | + weekTimeList.add(wee); | |
| 259 | + } | |
| 260 | + map.put(weekDayIndex, weekTimeList); | |
| 261 | + } else { | |
| 262 | + List<WeekTime> weekTimes1 = new ArrayList<>(); | |
| 263 | + weekTimes1.addAll(weekTimes); | |
| 264 | + map.put(weekDayIndex, weekTimes1); | |
| 265 | + } | |
| 266 | + } | |
| 267 | + | |
| 268 | + } | |
| 269 | + | |
| 270 | + private String getCard(String card) { | |
| 271 | + | |
| 272 | + if (card.length() == 8) { | |
| 273 | + int length = card.length(); | |
| 274 | + String result = card.substring(length - 2, length) + card.substring(length - 4, length - 2) + card.substring(length - 6, length - 4) | |
| 275 | + + card.substring(length - 8, length - 6); | |
| 276 | + return result; | |
| 277 | + | |
| 278 | + } else { | |
| 279 | + System.out.println("卡号位数不对:" + card); | |
| 280 | + return ""; | |
| 281 | + } | |
| 282 | + | |
| 283 | + } | |
| 121 | 284 | |
| 122 | 285 | /** |
| 123 | 286 | * 调用传图片接口 | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/TeacherBean.java
0 → 100644
| ... | ... | @@ -0,0 +1,36 @@ |
| 1 | +package com.sincere.haikangface.bean; | |
| 2 | + | |
| 3 | +import java.io.Serializable; | |
| 4 | + | |
| 5 | +public class TeacherBean implements Serializable { | |
| 6 | + | |
| 7 | + private String name; | |
| 8 | + | |
| 9 | + private String teacher_num; | |
| 10 | + | |
| 11 | + private String num; | |
| 12 | + | |
| 13 | + public String getNum() { | |
| 14 | + return num; | |
| 15 | + } | |
| 16 | + | |
| 17 | + public void setNum(String num) { | |
| 18 | + this.num = num; | |
| 19 | + } | |
| 20 | + | |
| 21 | + public String getName() { | |
| 22 | + return name; | |
| 23 | + } | |
| 24 | + | |
| 25 | + public void setName(String name) { | |
| 26 | + this.name = name; | |
| 27 | + } | |
| 28 | + | |
| 29 | + public String getTeacer_num() { | |
| 30 | + return teacher_num; | |
| 31 | + } | |
| 32 | + | |
| 33 | + public void setTeacer_num(String teacer_num) { | |
| 34 | + this.teacher_num = teacer_num; | |
| 35 | + } | |
| 36 | +} | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/PermissionBean.java
| 1 | 1 | package com.sincere.haikangface.bean.face; |
| 2 | 2 | |
| 3 | +import io.swagger.annotations.ApiModelProperty; | |
| 4 | + | |
| 3 | 5 | import java.io.Serializable; |
| 4 | 6 | import java.util.List; |
| 5 | 7 | |
| ... | ... | @@ -7,10 +9,13 @@ public class PermissionBean implements Serializable { |
| 7 | 9 | |
| 8 | 10 | private List<String> deviceIds; |
| 9 | 11 | |
| 10 | - private String cardNum; | |
| 12 | + private String schoolId; | |
| 11 | 13 | |
| 12 | 14 | private String userType;//学生类型 |
| 13 | 15 | |
| 16 | +// @ApiModelProperty("用逗号隔开,1:男,2:女") | |
| 17 | +// private String sex; | |
| 18 | + | |
| 14 | 19 | private List<WeekDay> weekDays; |
| 15 | 20 | |
| 16 | 21 | public List<String> getDeviceIds() { |
| ... | ... | @@ -21,12 +26,12 @@ public class PermissionBean implements Serializable { |
| 21 | 26 | this.deviceIds = deviceIds; |
| 22 | 27 | } |
| 23 | 28 | |
| 24 | - public String getCardNum() { | |
| 25 | - return cardNum; | |
| 29 | + public String getSchoolId() { | |
| 30 | + return schoolId; | |
| 26 | 31 | } |
| 27 | 32 | |
| 28 | - public void setCardNum(String cardNum) { | |
| 29 | - this.cardNum = cardNum; | |
| 33 | + public void setSchoolId(String schoolId) { | |
| 34 | + this.schoolId = schoolId; | |
| 30 | 35 | } |
| 31 | 36 | |
| 32 | 37 | public String getUserType() { | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/UserAndPermission.java
0 → 100644
| ... | ... | @@ -0,0 +1,38 @@ |
| 1 | +package com.sincere.haikangface.bean.face; | |
| 2 | + | |
| 3 | +import java.io.Serializable; | |
| 4 | +import java.util.List; | |
| 5 | + | |
| 6 | +public class UserAndPermission implements Serializable { | |
| 7 | + | |
| 8 | + private int userType; | |
| 9 | + | |
| 10 | + private List<WeekDay> weekDays; | |
| 11 | + | |
| 12 | + private String schoolId; | |
| 13 | + | |
| 14 | + | |
| 15 | + public int getUserType() { | |
| 16 | + return userType; | |
| 17 | + } | |
| 18 | + | |
| 19 | + public void setUserType(int userType) { | |
| 20 | + this.userType = userType; | |
| 21 | + } | |
| 22 | + | |
| 23 | + public List<WeekDay> getWeekDays() { | |
| 24 | + return weekDays; | |
| 25 | + } | |
| 26 | + | |
| 27 | + public void setWeekDays(List<WeekDay> weekDays) { | |
| 28 | + this.weekDays = weekDays; | |
| 29 | + } | |
| 30 | + | |
| 31 | + public String getSchoolId() { | |
| 32 | + return schoolId; | |
| 33 | + } | |
| 34 | + | |
| 35 | + public void setSchoolId(String schoolId) { | |
| 36 | + this.schoolId = schoolId; | |
| 37 | + } | |
| 38 | +} | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/WeekDay.java
| 1 | 1 | package com.sincere.haikangface.bean.face; |
| 2 | 2 | |
| 3 | +import io.swagger.annotations.ApiModelProperty; | |
| 4 | + | |
| 3 | 5 | import java.io.Serializable; |
| 4 | 6 | import java.util.List; |
| 5 | 7 | |
| 6 | 8 | public class WeekDay implements Serializable { |
| 7 | 9 | |
| 10 | + @ApiModelProperty("用逗号隔开,1:男,2:女") | |
| 11 | + private String sex; | |
| 8 | 12 | |
| 9 | - private int weekDay; | |
| 13 | + @ApiModelProperty("用逗号隔开,0-6表示周日到周六") | |
| 14 | + private String weekDay; | |
| 10 | 15 | |
| 11 | 16 | private List<WeekTime> weekTimes; |
| 12 | 17 | |
| 13 | - public int getWeekDay() { | |
| 18 | + @ApiModelProperty("教师点名专用") | |
| 19 | + private String userIds; | |
| 20 | + | |
| 21 | + private List<String> deviceIds; | |
| 22 | + public List<String> getDeviceIds() { | |
| 23 | + return deviceIds; | |
| 24 | + } | |
| 25 | + | |
| 26 | + public void setDeviceIds(List<String> deviceIds) { | |
| 27 | + this.deviceIds = deviceIds; | |
| 28 | + } | |
| 29 | + | |
| 30 | + public String getUserIds() { | |
| 31 | + return userIds; | |
| 32 | + } | |
| 33 | + | |
| 34 | + public void setUserIds(String userIds) { | |
| 35 | + this.userIds = userIds; | |
| 36 | + } | |
| 37 | + | |
| 38 | + public String getWeekDay() { | |
| 14 | 39 | return weekDay; |
| 15 | 40 | } |
| 16 | 41 | |
| 17 | - public void setWeekDay(int weekDay) { | |
| 42 | + public void setWeekDay(String weekDay) { | |
| 18 | 43 | this.weekDay = weekDay; |
| 19 | 44 | } |
| 20 | 45 | |
| ... | ... | @@ -25,4 +50,12 @@ public class WeekDay implements Serializable { |
| 25 | 50 | public void setWeekTimes(List<WeekTime> weekTimes) { |
| 26 | 51 | this.weekTimes = weekTimes; |
| 27 | 52 | } |
| 53 | + | |
| 54 | + public String getSex() { | |
| 55 | + return sex; | |
| 56 | + } | |
| 57 | + | |
| 58 | + public void setSex(String sex) { | |
| 59 | + this.sex = sex; | |
| 60 | + } | |
| 28 | 61 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/control/FileControl.java
| 1 | 1 | package com.sincere.haikangface.control; |
| 2 | 2 | |
| 3 | +import com.alibaba.fastjson.JSON; | |
| 3 | 4 | import com.sincere.haikangface.CMSServer; |
| 4 | 5 | import com.sincere.haikangface.async.SendUserAsync; |
| 5 | 6 | import com.sincere.haikangface.bean.Images2Ddevices; |
| 6 | 7 | import com.sincere.haikangface.bean.StudentBean; |
| 7 | 8 | import com.sincere.haikangface.bean.UploadBean; |
| 9 | +import com.sincere.haikangface.bean.face.PermissionBean; | |
| 8 | 10 | import com.sincere.haikangface.dao.UserDao; |
| 9 | 11 | import com.sincere.haikangface.utils.CompressPic; |
| 10 | 12 | import com.sincere.haikangface.utils.FileUtils; |
| ... | ... | @@ -12,9 +14,11 @@ import com.sincere.haikangface.utils.SendRecoderUtils; |
| 12 | 14 | import com.sincere.haikangface.xiananDao.SendRecordDao; |
| 13 | 15 | import io.swagger.annotations.Api; |
| 14 | 16 | import io.swagger.annotations.ApiOperation; |
| 17 | +import lombok.extern.slf4j.Slf4j; | |
| 15 | 18 | import org.slf4j.Logger; |
| 16 | 19 | import org.slf4j.LoggerFactory; |
| 17 | 20 | import org.springframework.beans.factory.annotation.Autowired; |
| 21 | +import org.springframework.util.StringUtils; | |
| 18 | 22 | import org.springframework.web.bind.annotation.*; |
| 19 | 23 | import org.springframework.web.multipart.MultipartFile; |
| 20 | 24 | |
| ... | ... | @@ -26,6 +30,7 @@ import java.util.*; |
| 26 | 30 | @RestController |
| 27 | 31 | @Api("文件管理器") |
| 28 | 32 | @RequestMapping("file/*") |
| 33 | +@Slf4j | |
| 29 | 34 | public class FileControl { |
| 30 | 35 | |
| 31 | 36 | @Autowired |
| ... | ... | @@ -44,6 +49,16 @@ public class FileControl { |
| 44 | 49 | |
| 45 | 50 | Queue<UploadBean> uploadBeanQueue = new LinkedList<>(); |
| 46 | 51 | |
| 52 | + @RequestMapping(value = "sendPermiss", method = RequestMethod.POST) | |
| 53 | + @ApiOperation("下发权限给设备") | |
| 54 | + public boolean sendPermiss(@RequestBody PermissionBean permissionBean) { | |
| 55 | + log.error("permissionBean:{}", JSON.toJSONString(permissionBean)); | |
| 56 | + if (!StringUtils.isEmpty(permissionBean)) { | |
| 57 | + return sendUserAsync.sendPermiss(permissionBean,1); | |
| 58 | + } | |
| 59 | + return false; | |
| 60 | + } | |
| 61 | + | |
| 47 | 62 | @RequestMapping(method = RequestMethod.POST, value = "uploadImg") |
| 48 | 63 | public String uploadImg(@RequestParam("file") MultipartFile file, @RequestParam("card") String card |
| 49 | 64 | , @RequestParam("name") String name, @RequestParam("deviceId") String deviceId, @RequestParam("startTime") String startTime, | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java
| ... | ... | @@ -2,13 +2,16 @@ package com.sincere.haikangface.control; |
| 2 | 2 | |
| 3 | 3 | //import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; |
| 4 | 4 | |
| 5 | +import com.alibaba.fastjson.JSON; | |
| 5 | 6 | import com.sincere.haikangface.bean.Images2Ddevices; |
| 6 | 7 | //import com.sincere.haikangface.utils.BaiduApiUtiols; |
| 7 | 8 | import com.sincere.haikangface.CMSServer; |
| 8 | 9 | import com.sincere.haikangface.async.SendUserAsync; |
| 9 | 10 | import com.sincere.haikangface.bean.StudentBean; |
| 10 | 11 | import com.sincere.haikangface.bean.StudentInfo; |
| 12 | +import com.sincere.haikangface.bean.TeacherBean; | |
| 11 | 13 | import com.sincere.haikangface.bean.face.PermissionBean; |
| 14 | +import com.sincere.haikangface.bean.face.UserAndPermission; | |
| 12 | 15 | import com.sincere.haikangface.dao.UserDao; |
| 13 | 16 | import com.sincere.haikangface.fegin.HaikangfaceFegin; |
| 14 | 17 | import com.sincere.haikangface.utils.*; |
| ... | ... | @@ -17,16 +20,20 @@ import io.swagger.annotations.Api; |
| 17 | 20 | import io.swagger.annotations.ApiImplicitParam; |
| 18 | 21 | import io.swagger.annotations.ApiImplicitParams; |
| 19 | 22 | import io.swagger.annotations.ApiOperation; |
| 23 | +import lombok.extern.slf4j.Slf4j; | |
| 24 | +import org.apache.poi.util.StringUtil; | |
| 20 | 25 | import org.slf4j.Logger; |
| 21 | 26 | import org.slf4j.LoggerFactory; |
| 22 | 27 | import org.springframework.beans.factory.annotation.Autowired; |
| 23 | 28 | import org.springframework.http.MediaType; |
| 24 | 29 | import org.springframework.util.StringUtils; |
| 25 | 30 | import org.springframework.web.bind.annotation.*; |
| 31 | +import org.springframework.web.client.RestTemplate; | |
| 26 | 32 | import org.springframework.web.multipart.MultipartFile; |
| 27 | 33 | |
| 28 | 34 | import java.io.*; |
| 29 | 35 | import java.text.SimpleDateFormat; |
| 36 | +import java.util.ArrayList; | |
| 30 | 37 | import java.util.Calendar; |
| 31 | 38 | import java.util.Date; |
| 32 | 39 | import java.util.List; |
| ... | ... | @@ -34,6 +41,7 @@ import java.util.List; |
| 34 | 41 | @RestController |
| 35 | 42 | @RequestMapping(value = "/facereco/*", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) |
| 36 | 43 | @Api("用户控制") |
| 44 | +@Slf4j | |
| 37 | 45 | public class UserControl { |
| 38 | 46 | |
| 39 | 47 | @Autowired |
| ... | ... | @@ -58,20 +66,47 @@ public class UserControl { |
| 58 | 66 | @RequestMapping(value = "sendPermiss", method = RequestMethod.POST) |
| 59 | 67 | @ApiOperation("下发权限给设备") |
| 60 | 68 | public boolean sendPermiss(@RequestBody PermissionBean permissionBean) { |
| 61 | - | |
| 62 | - if (!StringUtils.isEmpty(permissionBean)) { | |
| 63 | - return sendUserAsync.sendPermiss(permissionBean); | |
| 69 | + log.error("permissionBean:{}", JSON.toJSONString(permissionBean)); | |
| 70 | + if (!StringUtils.isEmpty(permissionBean.getDeviceIds())) { | |
| 71 | +// List<String> cardNumList = userDao.getStudentCardsWidthSchoolId(permissionBean.getSchoolId()); | |
| 72 | + return sendUserAsync.sendPermiss(permissionBean, 0); | |
| 64 | 73 | } |
| 65 | 74 | return false; |
| 66 | 75 | } |
| 67 | 76 | |
| 77 | + @RequestMapping(value = "sendUsersAndPermiss", method = RequestMethod.POST) | |
| 78 | + @ApiOperation("下发指定教师用户权限给设备") | |
| 79 | + public boolean sendUsersAndPermiss(@RequestBody UserAndPermission userAndPermission) { | |
| 80 | + log.error("sendUsersAndPermiss:{}", JSON.toJSONString(userAndPermission)); | |
| 81 | + FileUtils.getInstance().writeLogs(JSON.toJSONString(userAndPermission),"下发指定教师用户权限给设备.txt"); | |
| 82 | + PermissionBean permissionBean = new PermissionBean(); | |
| 83 | + permissionBean.setSchoolId(userAndPermission.getSchoolId()); | |
| 84 | + permissionBean.setUserType(String.valueOf(userAndPermission.getUserType())); | |
| 85 | + permissionBean.setWeekDays(userAndPermission.getWeekDays()); | |
| 86 | + return sendUserAsync.sendPermiss(permissionBean, 0); | |
| 87 | + } | |
| 88 | + | |
| 89 | + | |
| 90 | + @RequestMapping(value = "isTeacher", method = RequestMethod.GET) | |
| 91 | + @ApiOperation("测试教师点名") | |
| 92 | + public void isTeacher(@RequestParam("deviceId") String deviceId, @RequestParam("cardNo") String cardNo) { | |
| 93 | + try { | |
| 94 | + cmsServer.isTeacher(cardNo,deviceId); | |
| 95 | + }catch (Exception e){ | |
| 96 | + e.printStackTrace(); | |
| 97 | + } | |
| 98 | + } | |
| 99 | + | |
| 68 | 100 | |
| 69 | 101 | @RequestMapping(value = "sendStuCardAndImg", method = RequestMethod.GET) |
| 70 | 102 | @ApiOperation("下发人脸给设备") |
| 71 | 103 | public boolean sendCardAndImg(@RequestParam("filePath") String filePath, @RequestParam("card") String card |
| 72 | 104 | , @RequestParam("name") String name, @RequestParam("deviceId") String deviceId, @RequestParam("startTime") String startTime, |
| 73 | 105 | @RequestParam("endTime") String endTime, @RequestParam("validTimeEnabled") int validTimeEnabled, @RequestParam("userType") String userType) { |
| 106 | + return sendImg2Device(filePath, card, name, deviceId, userType); | |
| 107 | + } | |
| 74 | 108 | |
| 109 | + private boolean sendImg2Device(String filePath, String card, String name, String deviceId, String userType) { | |
| 75 | 110 | try { |
| 76 | 111 | |
| 77 | 112 | if (filePath.contains(".jpg")) filePath = filePath.replace(".jpg", ".png"); | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java
| ... | ... | @@ -222,4 +222,28 @@ public interface UserDao { |
| 222 | 222 | @Insert("insert into CW_StuTemperatureReocrd values (#{UserId},#{StudentId},#{Name},#{ClassId},#{ClassName},#{Temperature},#{Type},#{SchoolId},#{Intime})") |
| 223 | 223 | void addWGTem(@Param("UserId") String UserId, @Param("StudentId") String StudentId, @Param("Name") String Name, @Param("ClassId") String ClassId, |
| 224 | 224 | @Param("ClassName") String ClassName, @Param("Temperature") String Temperature, @Param("Type") String Type, @Param("SchoolId") String SchoolId, @Param("Intime") String Intime); |
| 225 | + | |
| 226 | + @Select("select student_num from SZ_V_School_Student where school_id = #{schoolId} and student_num<>''") | |
| 227 | + List<String> getStudentCardsWidthSchoolId(@Param("schoolId") String schoolId); | |
| 228 | + | |
| 229 | + @Select("select student_num from SZ_V_School_Teacher where school_id = #{schoolId} and student_num<>''") | |
| 230 | + List<String> getTeaCardsWidthSchoolId(@Param("schoolId") String schoolId); | |
| 231 | + | |
| 232 | + @Select("select Top(1) teacher_num from SZ_V_School_Teacher where user_id = #{userId}") | |
| 233 | + String getTeaCardWithUserId(@Param("userId") String userId); | |
| 234 | + | |
| 235 | + | |
| 236 | + @Select("select student_num from SZ_V_School_Student where user_id = #{userId}") | |
| 237 | + String getStudentCardWithUserId(@Param("userId") String userId); | |
| 238 | + | |
| 239 | + @Select("select Top(1) * from SZ_V_School_Teacher where user_id = #{userId} and teacher_num<>''") | |
| 240 | + TeacherBean getTeacherWithUserId(@Param("userId") String userId); | |
| 241 | + | |
| 242 | + | |
| 243 | + List<String> getStudentWiSidAndSex(@Param("schoolId")String schoolId , @Param("sexs")List<String> sexs); | |
| 244 | + | |
| 245 | + | |
| 246 | + List<String> getDeviceRoomRelation(@Param("clint_id")String clint_id); | |
| 247 | + | |
| 248 | + | |
| 225 | 249 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/utils/AlarmUtils.java
| ... | ... | @@ -118,7 +118,7 @@ public class AlarmUtils { |
| 118 | 118 | */ |
| 119 | 119 | private void shijian(String minorType, String deviceID, String cardNo, String time, String picDataUrl, String currTemperature) { |
| 120 | 120 | String content = ""; |
| 121 | - System.out.println("=-=============================minorType:" + minorType); | |
| 121 | +// System.out.println("=-=============================minorType:" + minorType); | |
| 122 | 122 | switch (minorType) { |
| 123 | 123 | case "0x01"://合法卡认证通过 |
| 124 | 124 | content = "合法卡认证通过"; | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java
| ... | ... | @@ -54,6 +54,13 @@ public class CompressPic { |
| 54 | 54 | try { |
| 55 | 55 | File targetFile = new File(targetPath); |
| 56 | 56 | if (!targetFile.exists()) targetFile.createNewFile(); |
| 57 | + | |
| 58 | + if (width>height){ | |
| 59 | + int width1 = width; | |
| 60 | + width = height; | |
| 61 | + height = width1; | |
| 62 | + } | |
| 63 | + | |
| 57 | 64 | BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); |
| 58 | 65 | tag.getGraphics().drawImage(bufferedImage, 0, 0, width, height, null); // 绘制缩小后的图 |
| 59 | 66 | FileOutputStream deskImage = new FileOutputStream(targetPath); // 输出到文件流 | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HKXmlUtils.java
| ... | ... | @@ -151,7 +151,7 @@ public class HKXmlUtils { |
| 151 | 151 | * @return |
| 152 | 152 | */ |
| 153 | 153 | public String SetCardWeekPlanTimes(String startTime, String endTime) { |
| 154 | - return "<startTime>" + startTime + "</startTime>\n" + | |
| 155 | - "<endTime>" + endTime + "</endTime>\n"; | |
| 154 | + return "<startTime>" + startTime.trim() + "</startTime>\n" + | |
| 155 | + "<endTime>" + endTime.trim() + "</endTime>\n"; | |
| 156 | 156 | } |
| 157 | 157 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java
| 1 | 1 | package com.sincere.haikangface.utils; |
| 2 | 2 | |
| 3 | +import com.alibaba.fastjson.JSON; | |
| 4 | +import com.sincere.haikangface.bean.face.PermissionBean; | |
| 3 | 5 | import org.springframework.core.io.FileSystemResource; |
| 4 | 6 | import org.springframework.http.HttpEntity; |
| 5 | 7 | import org.springframework.http.HttpHeaders; |
| ... | ... | @@ -162,4 +164,34 @@ public class HttpUtil { |
| 162 | 164 | return restTemplate.getForObject(url, String.class).equals("1"); |
| 163 | 165 | } |
| 164 | 166 | |
| 167 | + | |
| 168 | + public static void sendPermission2HK(PermissionBean permissionBean) { | |
| 169 | + try { | |
| 170 | + | |
| 171 | + String url = "http://120.26.116.253:8089/file/sendPermiss"; | |
| 172 | + | |
| 173 | + if (null != permissionBean) { | |
| 174 | + | |
| 175 | + RestTemplate restTemplate = new RestTemplate(); | |
| 176 | + | |
| 177 | + HttpHeaders headers = new HttpHeaders(); | |
| 178 | + | |
| 179 | + MediaType mediaType = MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE); | |
| 180 | + | |
| 181 | + headers.setContentType(mediaType); | |
| 182 | + | |
| 183 | + HttpEntity<PermissionBean> httpEntity = new HttpEntity<>(permissionBean, headers); | |
| 184 | + | |
| 185 | + System.out.println("PermissionBean:"+JSON.toJSONString(permissionBean)); | |
| 186 | + | |
| 187 | + ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); | |
| 188 | + | |
| 189 | + System.out.println("responseEntity:" + responseEntity.getBody()); | |
| 190 | + | |
| 191 | + } | |
| 192 | + } catch (Exception e) { | |
| 193 | + e.printStackTrace(); | |
| 194 | + } | |
| 195 | + } | |
| 196 | + | |
| 165 | 197 | } | ... | ... |
cloud/haikangface/src/main/resources/application.yaml
| ... | ... | @@ -10,10 +10,10 @@ spring: |
| 10 | 10 | password: RQminVCJota3H1u8bBYH |
| 11 | 11 | jdbc-url: jdbc:sqlserver://116.62.155.137:33419;database=SmartCampus |
| 12 | 12 | driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver |
| 13 | - # username: SZJXTUSER | |
| 14 | - # password: xst200919 | |
| 15 | - # jdbc-url: jdbc:sqlserver://60.190.202.57:14333;database=SmartCampusSZ | |
| 16 | - # driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver | |
| 13 | +# username: SZJXTUSER | |
| 14 | +# password: xst200919 | |
| 15 | +# jdbc-url: jdbc:sqlserver://60.190.202.57:14333;database=SmartCampusSZ | |
| 16 | +# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver | |
| 17 | 17 | xiaoan: |
| 18 | 18 | jdbc-url: jdbc:sqlserver://116.62.241.27:33419;database=xiaoanhxy |
| 19 | 19 | username: szjxtuser | ... | ... |
cloud/haikangface/src/main/resources/mapper/usermapper.xml
| ... | ... | @@ -9,4 +9,17 @@ |
| 9 | 9 | <!--and studentcode = #{studentcode}--> |
| 10 | 10 | <!--</select>--> |
| 11 | 11 | |
| 12 | + <select id="getStudentWiSidAndSex" resultType="java.lang.String"> | |
| 13 | + | |
| 14 | + select student_num from SZ_V_School_Student where school_id = #{schoolId} and sex in | |
| 15 | + <foreach collection="sexs" item="sex" index="index" open="(" separator="," close=")"> | |
| 16 | + #{sex} | |
| 17 | + </foreach> | |
| 18 | + | |
| 19 | + </select> | |
| 20 | + | |
| 21 | + <select id="getDeviceRoomRelation" resultType="java.lang.String"> | |
| 22 | + select clint_id from SZ_DeviceRoomRelation where clint_id = #{clint_id}; | |
| 23 | + </select> | |
| 24 | + | |
| 12 | 25 | </mapper> | ... | ... |
cloud/pom.xml
| ... | ... | @@ -40,7 +40,7 @@ |
| 40 | 40 | <!-- <module>mypulsar</module>--> |
| 41 | 41 | <!-- <module>weigeng</module>--> |
| 42 | 42 | <!-- <module>independence</module>--> |
| 43 | - <!-- <module>quartz</module>--> | |
| 43 | + <module>quartz</module> | |
| 44 | 44 | <!-- <module>zkAttendance</module>--> |
| 45 | 45 | <module>user_search</module> |
| 46 | 46 | <module>fIle-center</module> | ... | ... |
cloud/quartz/src/main/java/com/sincere/quartz/Swagger2.java
0 → 100644
| ... | ... | @@ -0,0 +1,36 @@ |
| 1 | +package com.sincere.quartz; | |
| 2 | + | |
| 3 | +import org.springframework.context.annotation.Bean; | |
| 4 | +import org.springframework.context.annotation.Configuration; | |
| 5 | +import springfox.documentation.builders.ApiInfoBuilder; | |
| 6 | +import springfox.documentation.builders.PathSelectors; | |
| 7 | +import springfox.documentation.builders.RequestHandlerSelectors; | |
| 8 | +import springfox.documentation.service.ApiInfo; | |
| 9 | +import springfox.documentation.spi.DocumentationType; | |
| 10 | +import springfox.documentation.spring.web.plugins.Docket; | |
| 11 | +import springfox.documentation.swagger2.annotations.EnableSwagger2; | |
| 12 | + | |
| 13 | +@Configuration | |
| 14 | +@EnableSwagger2 | |
| 15 | +public class Swagger2 { | |
| 16 | + | |
| 17 | + @Bean | |
| 18 | + public Docket createRestApi() { | |
| 19 | + return new Docket(DocumentationType.SWAGGER_2) | |
| 20 | + .apiInfo(apiInfo()) | |
| 21 | + .select() | |
| 22 | + .apis(RequestHandlerSelectors.basePackage("com.sincere.quartz.control")) | |
| 23 | + .paths(PathSelectors.any()) | |
| 24 | + .build(); | |
| 25 | + } | |
| 26 | + | |
| 27 | + private ApiInfo apiInfo() { | |
| 28 | + return new ApiInfoBuilder() | |
| 29 | + .title("大华人脸接口") | |
| 30 | + .description("") | |
| 31 | + .termsOfServiceUrl("") | |
| 32 | + .version("1.0") | |
| 33 | + .build(); | |
| 34 | + } | |
| 35 | + | |
| 36 | +} | ... | ... |
cloud/quartz/src/main/java/com/sincere/quartz/control/FaceUnifyController.java
0 → 100644
| ... | ... | @@ -0,0 +1,22 @@ |
| 1 | +package com.sincere.quartz.control; | |
| 2 | + | |
| 3 | +import io.swagger.annotations.ApiOperation; | |
| 4 | +import lombok.extern.slf4j.Slf4j; | |
| 5 | +import org.springframework.web.bind.annotation.RequestMapping; | |
| 6 | +import org.springframework.web.bind.annotation.RequestMethod; | |
| 7 | +import org.springframework.web.bind.annotation.RestController; | |
| 8 | + | |
| 9 | +@RestController | |
| 10 | +@RequestMapping("faceUnify/*") | |
| 11 | +@Slf4j | |
| 12 | +public class FaceUnifyController { | |
| 13 | + | |
| 14 | + | |
| 15 | + @RequestMapping(value = "sendPermission",method = RequestMethod.GET) | |
| 16 | + @ApiOperation("添加/编辑/删除权限") | |
| 17 | + public void sendPermission(){ | |
| 18 | + log.error("ssssssssssssssssssssssssssssssssssssssssss:{}","2222222222222"); | |
| 19 | + } | |
| 20 | + | |
| 21 | + | |
| 22 | +} | ... | ... |
cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java
| 1 | -package com.sincere.quartz.job; | |
| 2 | - | |
| 3 | -import com.sincere.common.dto.smartCampus.BindPushDto; | |
| 4 | -import com.sincere.common.dto.smartCampus.ParentDto; | |
| 5 | -import com.sincere.common.enums.PushTypeEnums; | |
| 6 | -import com.sincere.common.util.DateUtils; | |
| 7 | -import com.sincere.quartz.feign.ScFeign; | |
| 8 | -import com.sincere.quartz.model.ShortMsg; | |
| 9 | -import com.sincere.quartz.service.SmsService; | |
| 10 | -import org.apache.commons.lang3.StringUtils; | |
| 11 | -import org.slf4j.Logger; | |
| 12 | -import org.slf4j.LoggerFactory; | |
| 13 | -import org.springframework.beans.factory.annotation.Autowired; | |
| 14 | -import org.springframework.scheduling.annotation.Scheduled; | |
| 15 | -import org.springframework.stereotype.Service; | |
| 16 | - | |
| 17 | -import java.util.Date; | |
| 18 | -import java.util.HashMap; | |
| 19 | -import java.util.List; | |
| 20 | -import java.util.Map; | |
| 21 | - | |
| 22 | -/** | |
| 23 | - * 用户注册激活提醒 | |
| 24 | - * | |
| 25 | - * @author chen | |
| 26 | - * @version 1.0 | |
| 27 | - * @date 2019/12/10 0010 8:31 | |
| 28 | - */ | |
| 29 | -@Service | |
| 30 | -public class BindPushJob { | |
| 31 | - | |
| 32 | - private Logger logger = LoggerFactory.getLogger(BindPushJob.class); | |
| 33 | - | |
| 34 | - | |
| 35 | - @Autowired | |
| 36 | - ScFeign scFeign; | |
| 37 | - | |
| 38 | - @Autowired | |
| 39 | - SmsService smsService; | |
| 40 | - | |
| 41 | - private static Map<String, String> intervalDaysMap = new HashMap<>(); //redis 持久化 替换 可避免重启导致间隔的错误 | |
| 42 | - | |
| 43 | - @Scheduled(cron = "0 0-59 * * * ? ") | |
| 44 | - public void bindPush() { | |
| 45 | - Date nowDate = new Date(); | |
| 46 | - List<BindPushDto> schoolList = scFeign.selectBindPushSchool(); | |
| 47 | - for (BindPushDto school : schoolList) { | |
| 48 | - if (school.getBeginDate().compareTo(nowDate) <= 0 && school.getEndDate().compareTo(nowDate) >= 0) { | |
| 49 | - String lastDate = intervalDaysMap.get(school.getSchoolId() + "_" + school.getType()); | |
| 50 | - if (StringUtils.isBlank(lastDate)) { | |
| 51 | - //下发推送 | |
| 52 | - bindPush(school, nowDate); | |
| 53 | - } else { | |
| 54 | - int day = DateUtils.getDateDifference(nowDate, DateUtils.string2Date(lastDate, DateUtils.format1), "day"); | |
| 55 | - if (day == school.getIntervalDays() + 1) { | |
| 56 | - //下发推送 | |
| 57 | - bindPush(school, nowDate); | |
| 58 | - } | |
| 59 | - } | |
| 60 | - } | |
| 61 | - } | |
| 62 | - } | |
| 63 | - | |
| 64 | - private void bindPush(BindPushDto bindPushDto, Date nowDate) { | |
| 65 | - if (bindPushDto.getPushTime().equals(DateUtils.date2String(nowDate, DateUtils.format4))) { | |
| 66 | - intervalDaysMap.put(bindPushDto.getSchoolId() + "_" + bindPushDto.getType(), DateUtils.date2String(nowDate, DateUtils.format1)); | |
| 67 | - //未关注 | |
| 68 | - List<ParentDto> unFollowList = scFeign.selectNotFollow(bindPushDto.getSchoolId()); | |
| 69 | - logger.info(bindPushDto.getSchoolName() + "未关注人数" + unFollowList.size()); | |
| 70 | - for (ParentDto parentDto : unFollowList) { | |
| 71 | - sendMessage(parentDto, bindPushDto.getMsg()); | |
| 72 | - } | |
| 73 | - //未绑定 | |
| 74 | - List<ParentDto> unBindList = scFeign.selectNotBind(bindPushDto.getSchoolId(), getThirdType(bindPushDto.getType())); | |
| 75 | - logger.info(bindPushDto.getSchoolName() + "未绑定人数" + unBindList.size()); | |
| 76 | - for (ParentDto parentDto : unBindList) { | |
| 77 | - sendMessage(parentDto, bindPushDto.getMsg()); | |
| 78 | - } | |
| 79 | - } | |
| 80 | - } | |
| 81 | - | |
| 82 | - private void sendMessage(ParentDto parentDto, String message) { | |
| 83 | - //手机号为空 | |
| 84 | - if (StringUtils.isNotBlank(parentDto.getMobile())) { | |
| 85 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
| 86 | - ShortMsg shortMsg = new ShortMsg(); | |
| 87 | - shortMsg.setTableName("smsNew" + tableSuffix); | |
| 88 | - shortMsg.setSchoolId(parentDto.getSchoolId()); | |
| 89 | - shortMsg.setMobile(parentDto.getMobile()); | |
| 90 | - shortMsg.setMsg(message); | |
| 91 | - smsService.insertSMS(shortMsg); | |
| 92 | - logger.info("----学校Id---" + parentDto.getSchoolId() + "----手机号----" + parentDto.getMobile() + "---" + message); | |
| 93 | - } | |
| 94 | - } | |
| 95 | - | |
| 96 | - // 0是企业号,1是钉钉 | |
| 97 | - private int getThirdType(int type) { | |
| 98 | - if (type == 0) { | |
| 99 | - return PushTypeEnums.QIYEHAO.getType(); | |
| 100 | - } else { | |
| 101 | - return PushTypeEnums.DING.getType(); | |
| 102 | - } | |
| 103 | - } | |
| 104 | - | |
| 105 | -} | |
| 1 | +//package com.sincere.quartz.job; | |
| 2 | +// | |
| 3 | +//import com.sincere.common.dto.smartCampus.BindPushDto; | |
| 4 | +//import com.sincere.common.dto.smartCampus.ParentDto; | |
| 5 | +//import com.sincere.common.enums.PushTypeEnums; | |
| 6 | +//import com.sincere.common.util.DateUtils; | |
| 7 | +//import com.sincere.quartz.feign.ScFeign; | |
| 8 | +//import com.sincere.quartz.model.ShortMsg; | |
| 9 | +//import com.sincere.quartz.service.SmsService; | |
| 10 | +//import org.apache.commons.lang3.StringUtils; | |
| 11 | +//import org.slf4j.Logger; | |
| 12 | +//import org.slf4j.LoggerFactory; | |
| 13 | +//import org.springframework.beans.factory.annotation.Autowired; | |
| 14 | +//import org.springframework.scheduling.annotation.Scheduled; | |
| 15 | +//import org.springframework.stereotype.Service; | |
| 16 | +// | |
| 17 | +//import java.util.Date; | |
| 18 | +//import java.util.HashMap; | |
| 19 | +//import java.util.List; | |
| 20 | +//import java.util.Map; | |
| 21 | +// | |
| 22 | +///** | |
| 23 | +// * 用户注册激活提醒 | |
| 24 | +// * | |
| 25 | +// * @author chen | |
| 26 | +// * @version 1.0 | |
| 27 | +// * @date 2019/12/10 0010 8:31 | |
| 28 | +// */ | |
| 29 | +//@Service | |
| 30 | +//public class BindPushJob { | |
| 31 | +// | |
| 32 | +// private Logger logger = LoggerFactory.getLogger(BindPushJob.class); | |
| 33 | +// | |
| 34 | +// | |
| 35 | +// @Autowired | |
| 36 | +// ScFeign scFeign; | |
| 37 | +// | |
| 38 | +// @Autowired | |
| 39 | +// SmsService smsService; | |
| 40 | +// | |
| 41 | +// private static Map<String, String> intervalDaysMap = new HashMap<>(); //redis 持久化 替换 可避免重启导致间隔的错误 | |
| 42 | +// | |
| 43 | +// @Scheduled(cron = "0 0-59 * * * ? ") | |
| 44 | +// public void bindPush() { | |
| 45 | +// Date nowDate = new Date(); | |
| 46 | +// List<BindPushDto> schoolList = scFeign.selectBindPushSchool(); | |
| 47 | +// for (BindPushDto school : schoolList) { | |
| 48 | +// if (school.getBeginDate().compareTo(nowDate) <= 0 && school.getEndDate().compareTo(nowDate) >= 0) { | |
| 49 | +// String lastDate = intervalDaysMap.get(school.getSchoolId() + "_" + school.getType()); | |
| 50 | +// if (StringUtils.isBlank(lastDate)) { | |
| 51 | +// //下发推送 | |
| 52 | +// bindPush(school, nowDate); | |
| 53 | +// } else { | |
| 54 | +// int day = DateUtils.getDateDifference(nowDate, DateUtils.string2Date(lastDate, DateUtils.format1), "day"); | |
| 55 | +// if (day == school.getIntervalDays() + 1) { | |
| 56 | +// //下发推送 | |
| 57 | +// bindPush(school, nowDate); | |
| 58 | +// } | |
| 59 | +// } | |
| 60 | +// } | |
| 61 | +// } | |
| 62 | +// } | |
| 63 | +// | |
| 64 | +// private void bindPush(BindPushDto bindPushDto, Date nowDate) { | |
| 65 | +// if (bindPushDto.getPushTime().equals(DateUtils.date2String(nowDate, DateUtils.format4))) { | |
| 66 | +// intervalDaysMap.put(bindPushDto.getSchoolId() + "_" + bindPushDto.getType(), DateUtils.date2String(nowDate, DateUtils.format1)); | |
| 67 | +// //未关注 | |
| 68 | +// List<ParentDto> unFollowList = scFeign.selectNotFollow(bindPushDto.getSchoolId()); | |
| 69 | +// logger.info(bindPushDto.getSchoolName() + "未关注人数" + unFollowList.size()); | |
| 70 | +// for (ParentDto parentDto : unFollowList) { | |
| 71 | +// sendMessage(parentDto, bindPushDto.getMsg()); | |
| 72 | +// } | |
| 73 | +// //未绑定 | |
| 74 | +// List<ParentDto> unBindList = scFeign.selectNotBind(bindPushDto.getSchoolId(), getThirdType(bindPushDto.getType())); | |
| 75 | +// logger.info(bindPushDto.getSchoolName() + "未绑定人数" + unBindList.size()); | |
| 76 | +// for (ParentDto parentDto : unBindList) { | |
| 77 | +// sendMessage(parentDto, bindPushDto.getMsg()); | |
| 78 | +// } | |
| 79 | +// } | |
| 80 | +// } | |
| 81 | +// | |
| 82 | +// private void sendMessage(ParentDto parentDto, String message) { | |
| 83 | +// //手机号为空 | |
| 84 | +// if (StringUtils.isNotBlank(parentDto.getMobile())) { | |
| 85 | +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
| 86 | +// ShortMsg shortMsg = new ShortMsg(); | |
| 87 | +// shortMsg.setTableName("smsNew" + tableSuffix); | |
| 88 | +// shortMsg.setSchoolId(parentDto.getSchoolId()); | |
| 89 | +// shortMsg.setMobile(parentDto.getMobile()); | |
| 90 | +// shortMsg.setMsg(message); | |
| 91 | +// smsService.insertSMS(shortMsg); | |
| 92 | +// logger.info("----学校Id---" + parentDto.getSchoolId() + "----手机号----" + parentDto.getMobile() + "---" + message); | |
| 93 | +// } | |
| 94 | +// } | |
| 95 | +// | |
| 96 | +// // 0是企业号,1是钉钉 | |
| 97 | +// private int getThirdType(int type) { | |
| 98 | +// if (type == 0) { | |
| 99 | +// return PushTypeEnums.QIYEHAO.getType(); | |
| 100 | +// } else { | |
| 101 | +// return PushTypeEnums.DING.getType(); | |
| 102 | +// } | |
| 103 | +// } | |
| 104 | +// | |
| 105 | +//} | ... | ... |
cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java
| 1 | -package com.sincere.quartz.job; | |
| 2 | - | |
| 3 | -import com.alibaba.fastjson.JSONArray; | |
| 4 | -import com.alibaba.fastjson.JSONObject; | |
| 5 | -import com.sincere.common.dto.smartCampus.*; | |
| 6 | -import com.sincere.common.enums.PushTypeEnums; | |
| 7 | -import com.sincere.common.util.DateUtils; | |
| 8 | -import com.sincere.common.util.HttpClientUtils; | |
| 9 | -import com.sincere.quartz.enums.KqTypeEnums; | |
| 10 | -import com.sincere.quartz.enums.TypeEnums; | |
| 11 | -import com.sincere.quartz.feign.ScFeign; | |
| 12 | -import com.sincere.quartz.model.DingSms; | |
| 13 | -import com.sincere.quartz.model.ShortMsg; | |
| 14 | -import com.sincere.quartz.model.WeChatSms; | |
| 15 | -import com.sincere.quartz.service.ManagerService; | |
| 16 | -import com.sincere.quartz.service.SmsService; | |
| 17 | -import org.apache.commons.lang3.StringUtils; | |
| 18 | -import org.slf4j.Logger; | |
| 19 | -import org.slf4j.LoggerFactory; | |
| 20 | -import org.springframework.beans.factory.annotation.Autowired; | |
| 21 | -import org.springframework.scheduling.annotation.Scheduled; | |
| 22 | -import org.springframework.stereotype.Service; | |
| 23 | - | |
| 24 | -import java.math.BigDecimal; | |
| 25 | -import java.util.*; | |
| 26 | - | |
| 27 | -/** | |
| 28 | - * 考勤任务推送调用 | |
| 29 | - * 主要推送盯盯以及企业号 | |
| 30 | - * | |
| 31 | - * @author chen | |
| 32 | - * @version 1.0 | |
| 33 | - * @date 2019/11/27 0027 17:05 | |
| 34 | - */ | |
| 35 | -@Service | |
| 36 | -public class KQJob { | |
| 37 | - | |
| 38 | - private Logger logger = LoggerFactory.getLogger(KQJob.class); | |
| 39 | - | |
| 40 | - @Autowired | |
| 41 | - ScFeign scFeign; | |
| 42 | - | |
| 43 | - @Autowired | |
| 44 | - SmsService smsService; | |
| 45 | - | |
| 46 | - @Autowired | |
| 47 | - ManagerService managerService; | |
| 48 | - | |
| 49 | - private static String iotUrl = "http://60.190.202.57:8035"; | |
| 50 | - | |
| 51 | - private static String date; | |
| 52 | - private static Map<String, String> map = new HashMap<>(); //学校 考勤推送map | |
| 53 | - | |
| 54 | - private static String alarmDate; | |
| 55 | - private static Map<String, String> alarmMap = new HashMap<>(); //考勤告警推送map | |
| 56 | - private static Map<String, BigDecimal> templateMap = new HashMap<>(); // 考勤比例 | |
| 57 | - | |
| 58 | - private static List<String> opexList; | |
| 59 | - private static String integration; | |
| 60 | - | |
| 61 | - static { | |
| 62 | - opexList = new ArrayList<>(); | |
| 63 | - opexList.add("15857566147"); //王汉栋 | |
| 64 | - opexList.add("13858485977"); //王楠彬 | |
| 65 | - | |
| 66 | - integration = "18767117554"; //林炜 | |
| 67 | - } | |
| 68 | - | |
| 69 | - @Scheduled(cron = "0 0-59 * * * ? ") | |
| 70 | - public void kaoQing() { | |
| 71 | - String now = DateUtils.date2String(new Date(), DateUtils.format1); | |
| 72 | - if (StringUtils.isBlank(date)) { | |
| 73 | - initMap(); | |
| 74 | - date = now; | |
| 75 | - } | |
| 76 | - if (!DateUtils.date2String(new Date(), DateUtils.format1).equals(date)) { | |
| 77 | - initMap(); | |
| 78 | - date = DateUtils.date2String(new Date(), DateUtils.format1); | |
| 79 | - } | |
| 80 | - //开始过滤数据 推送 | |
| 81 | - List<String> keyList = new ArrayList<>(); | |
| 82 | - for (Map.Entry<String, String> entity : map.entrySet()) { | |
| 83 | - String endTime = entity.getValue().split("_")[1]; | |
| 84 | - if (DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") >= 2 | |
| 85 | - && DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") < 5) { | |
| 86 | - String key = entity.getKey(); | |
| 87 | - String[] messageArray = key.split("_"); | |
| 88 | - if (messageArray[2].contains(PushTypeEnums.QIYEHAO.getType() + "")) { | |
| 89 | - logger.info("企业号推送:" + messageArray[0] + "__" + messageArray[1]); | |
| 90 | - weChatBatchPush(messageArray[0], Integer.valueOf(messageArray[1]), entity.getValue()); | |
| 91 | - } | |
| 92 | - if (messageArray[2].contains(PushTypeEnums.DING.getType() + "")) { | |
| 93 | - logger.info(("盯盯推送:" + messageArray[0] + "__" + messageArray[1])); | |
| 94 | - dingBatchPush(messageArray[0], Integer.valueOf(messageArray[1]), entity.getValue()); | |
| 95 | - } | |
| 96 | - keyList.add(key); | |
| 97 | - } | |
| 98 | - } | |
| 99 | - for (String key : keyList) { | |
| 100 | - map.remove(key); | |
| 101 | - } | |
| 102 | - } | |
| 103 | - | |
| 104 | - @Scheduled(cron = "0 0-59 * * * ? ") | |
| 105 | - public void alarmKaoQing() { | |
| 106 | - String now = DateUtils.date2String(new Date(), DateUtils.format1); | |
| 107 | - if (StringUtils.isBlank(alarmDate)) { | |
| 108 | - initAlarmMap(); | |
| 109 | - alarmDate = now; | |
| 110 | - } | |
| 111 | - if (!DateUtils.date2String(new Date(), DateUtils.format1).equals(alarmDate)) { | |
| 112 | - initAlarmMap(); | |
| 113 | - alarmDate = DateUtils.date2String(new Date(), DateUtils.format1); | |
| 114 | - } | |
| 115 | - //开始过滤数据 推送 | |
| 116 | - List<String> keyList = new ArrayList<>(); | |
| 117 | - for (Map.Entry<String, String> entity : alarmMap.entrySet()) { | |
| 118 | - String endTime = entity.getValue().split("_")[1]; | |
| 119 | - if (DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") >= 2 | |
| 120 | - ) { | |
| 121 | - String key = entity.getKey(); | |
| 122 | - keyList.add(key); | |
| 123 | - //alarm(entity); //告警 | |
| 124 | - //insertIOT(entity); //iot | |
| 125 | - } | |
| 126 | - } | |
| 127 | - for (String key : keyList) { | |
| 128 | - map.remove(key); | |
| 129 | - } | |
| 130 | - } | |
| 131 | - | |
| 132 | - private void initAlarmMap() { | |
| 133 | - alarmMap = new HashMap<>(); | |
| 134 | - List<TemplateDto> list = scFeign.getAllTemplateAlarm(); | |
| 135 | - logger.info(("------考勤告警模板------")); | |
| 136 | - for (TemplateDto templateDto : list) { | |
| 137 | - String config = templateDto.getConfig(); | |
| 138 | - String[] array = config.split("<Template"); | |
| 139 | - for (int i = 1; i < array.length; i++) { | |
| 140 | - try { | |
| 141 | - String msg = array[i]; | |
| 142 | - String beginTime = msg.substring(msg.indexOf("BeginTime") + 11, msg.indexOf("BeginTime") + 16); | |
| 143 | - String endTime = msg.substring(msg.indexOf("EndTime") + 9, msg.indexOf("EndTime") + 14); | |
| 144 | - String templateId = msg.substring(msg.indexOf("TemplateID") + 12, msg.indexOf("TemplateID") + 22); | |
| 145 | - String Week = msg.substring(msg.indexOf("Week") + 6, msg.indexOf("Week") + 19); | |
| 146 | - String type = msg.substring(msg.indexOf("Type") + 6, msg.indexOf("Type") + 8); | |
| 147 | - type = type.replace("\"", ""); | |
| 148 | - int nowWeek = DateUtils.getWeek(); | |
| 149 | - if (Week.contains(nowWeek + "") && nowWeek != 6 && nowWeek != 0) { //周末不告警 | |
| 150 | - logger.info((templateId + "_" + templateDto.getSchoolId() + "------" + beginTime + "_" + endTime)); | |
| 151 | - alarmMap.put(templateId + "_" + templateDto.getSchoolId() + "_" + templateDto.getTitle(), beginTime + "_" + endTime + "_" + type + "_" + templateDto.getId()); | |
| 152 | - } | |
| 153 | - } catch (Exception e) { | |
| 154 | - e.printStackTrace(); | |
| 155 | - } | |
| 156 | - } | |
| 157 | - } | |
| 158 | - } | |
| 159 | - | |
| 160 | - //告警推送 | |
| 161 | - private void alarm(Map.Entry<String, String> entry) { | |
| 162 | - String templateId = entry.getKey().split("_")[0]; | |
| 163 | - String schoolId = entry.getKey().split("_")[1]; | |
| 164 | - String id = entry.getValue().split("_")[3]; | |
| 165 | - String type = entry.getValue().split("_")[2]; | |
| 166 | - | |
| 167 | - if (DateUtils.getWeek() == 2 || DateUtils.getWeek() == 5) { | |
| 168 | - //可以相差40% | |
| 169 | - BigDecimal percent = getAlarmCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); | |
| 170 | - if (templateMap.get(templateId) != null) { | |
| 171 | - if (percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.4)) > 0 | |
| 172 | - || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.4)) > 0) { | |
| 173 | - alarmPush(Integer.valueOf(schoolId)); | |
| 174 | - } | |
| 175 | - } | |
| 176 | - templateMap.put(templateId, percent); | |
| 177 | - } else { | |
| 178 | - //相差30% | |
| 179 | - BigDecimal percent = getAlarmCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); | |
| 180 | - if (templateMap.get(templateId) != null) { | |
| 181 | - if (percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.3)) > 0 | |
| 182 | - || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.3)) > 0) { | |
| 183 | - alarmPush(Integer.valueOf(schoolId)); | |
| 184 | - } | |
| 185 | - } | |
| 186 | - templateMap.put(templateId, percent); | |
| 187 | - } | |
| 188 | - } | |
| 189 | - | |
| 190 | - private void insertIOT(Map.Entry<String, String> entry) { | |
| 191 | - String templateId = entry.getKey().split("_")[0]; | |
| 192 | - String schoolId = entry.getKey().split("_")[1]; | |
| 193 | - String title = entry.getKey().split("_")[2]; | |
| 194 | - String id = entry.getValue().split("_")[3]; | |
| 195 | - String type = entry.getValue().split("_")[2]; | |
| 196 | - String beginTime = entry.getValue().split("_")[0]; | |
| 197 | - String endTime = entry.getValue().split("_")[1]; | |
| 198 | - | |
| 199 | - List<Integer> list = getIOTCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); | |
| 200 | - JSONObject object = new JSONObject(); | |
| 201 | - object.put("strTime", beginTime); | |
| 202 | - object.put("endTime", endTime); | |
| 203 | - object.put("inTime", DateUtils.date2String(new Date(), DateUtils.format1)); | |
| 204 | - object.put("noAttendanceCount", list.get(1)); | |
| 205 | - object.put("attendanceCount", list.get(0)); | |
| 206 | - object.put("leaveCount", list.get(2)); | |
| 207 | - object.put("templateName", title); | |
| 208 | - object.put("qianDaoIdId", id); | |
| 209 | - object.put("schoolId", schoolId); | |
| 210 | - object.put("templateId", templateId); | |
| 211 | - HttpClientUtils.httpPostJson(iotUrl + "/api/Association/addIntelligenceAttendance", object.toJSONString()); | |
| 212 | - } | |
| 213 | - | |
| 214 | - //初始化要推送的模板 | |
| 215 | - private void initMap() { | |
| 216 | - map = new HashMap<>(); | |
| 217 | - List<TemplateDto> list = scFeign.getAllTemplate(); | |
| 218 | - logger.info(("------需要推送的考勤模板------")); | |
| 219 | - for (TemplateDto templateDto : list) { | |
| 220 | - String config = templateDto.getConfig(); | |
| 221 | - String[] array = config.split("<Template"); | |
| 222 | - for (int i = 1; i < array.length; i++) { | |
| 223 | - try { | |
| 224 | - String msg = array[i]; | |
| 225 | - String beginTime = msg.substring(msg.indexOf("BeginTime") + 11, msg.indexOf("BeginTime") + 16); | |
| 226 | - String endTime = msg.substring(msg.indexOf("EndTime") + 9, msg.indexOf("EndTime") + 14); | |
| 227 | - String templateId = msg.substring(msg.indexOf("TemplateID") + 12, msg.indexOf("TemplateID") + 22); | |
| 228 | - String Week = msg.substring(msg.indexOf("Week") + 6, msg.indexOf("Week") + 19); | |
| 229 | - String type = msg.substring(msg.indexOf("Type") + 6, msg.indexOf("Type") + 8); | |
| 230 | - type = type.replace("\"", ""); | |
| 231 | - int nowWeek = DateUtils.getWeek(); | |
| 232 | - if (Week.contains(nowWeek + "")) { | |
| 233 | - logger.info((templateId + "_" + templateDto.getSchoolId() + "_" + templateDto.getType() + "------" + beginTime + "_" + endTime)); | |
| 234 | - map.put(templateId + "_" + templateDto.getSchoolId() + "_" + templateDto.getType(), beginTime + "_" + endTime + "_" + type + "_" + templateDto.getId()); | |
| 235 | - } | |
| 236 | - } catch (Exception e) { | |
| 237 | - e.printStackTrace(); | |
| 238 | - } | |
| 239 | - } | |
| 240 | - } | |
| 241 | - } | |
| 242 | - | |
| 243 | - //盯盯批量推送 | |
| 244 | - private void dingBatchPush(String templateId, int schoolId, String key) { | |
| 245 | - String[] times = key.split("_"); | |
| 246 | - AppDto appDto = scFeign.getApp(schoolId, 1); | |
| 247 | - if (Integer.valueOf(times[2]) < 7) { | |
| 248 | - //出入校 推班主任 | |
| 249 | - List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | |
| 250 | - for (KqTeacherDto teacher : list) { | |
| 251 | - dingSchoolPush(templateId, teacher, key, appDto, 0); | |
| 252 | - } | |
| 253 | - } else { | |
| 254 | - //出入寝 推班主任 | |
| 255 | - List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | |
| 256 | - for (KqTeacherDto teacher : list) { | |
| 257 | - dingSchoolPush(templateId, teacher, key, appDto, 1); | |
| 258 | - } | |
| 259 | - //推宿管 | |
| 260 | - List<KqTeacherDto> chamberList = scFeign.selectChamberTeacher(schoolId); | |
| 261 | - for (KqTeacherDto teacher : chamberList) { | |
| 262 | - dingChamberPush(templateId, teacher, key, appDto); | |
| 263 | - } | |
| 264 | - } | |
| 265 | - } | |
| 266 | - | |
| 267 | - //企业号批量推送 | |
| 268 | - private void weChatBatchPush(String templateId, int schoolId, String key) { | |
| 269 | - String[] times = key.split("_"); | |
| 270 | - AppDto appDto = scFeign.getApp(schoolId, 0); | |
| 271 | - if (Integer.valueOf(times[2]) < 7) { | |
| 272 | - //出入校 推班主任 | |
| 273 | - List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | |
| 274 | - for (KqTeacherDto teacher : list) { | |
| 275 | - weChatSchoolPush(templateId, teacher, key, appDto, 0); | |
| 276 | - } | |
| 277 | - } else { | |
| 278 | - //出入寝 推班主任 | |
| 279 | - List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | |
| 280 | - for (KqTeacherDto teacher : list) { | |
| 281 | - weChatSchoolPush(templateId, teacher, key, appDto, 1); | |
| 282 | - } | |
| 283 | - //推宿管 | |
| 284 | - List<KqTeacherDto> chamberList = scFeign.selectChamberTeacher(schoolId); | |
| 285 | - for (KqTeacherDto teacher : chamberList) { | |
| 286 | - weChatChamberPush(templateId, teacher, key, appDto); | |
| 287 | - } | |
| 288 | - } | |
| 289 | - } | |
| 290 | - | |
| 291 | - //盯盯推送班主任 | |
| 292 | - private void dingSchoolPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto, int type) { | |
| 293 | - String[] times = key.split("_"); | |
| 294 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
| 295 | - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 0); | |
| 296 | - if (StringUtils.isNotBlank(thirdOpenId)) { | |
| 297 | - List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), type); | |
| 298 | - if (censusKqDtos != null && censusKqDtos.size() > 0) { | |
| 299 | - String message = ""; | |
| 300 | - for (CensusKqDto censusKqDto : censusKqDtos) { | |
| 301 | - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; | |
| 302 | - } | |
| 303 | - DingSms dingSms = new DingSms(); | |
| 304 | - dingSms.setName(teacher.getName()); | |
| 305 | - dingSms.setTableName("DingSmsNew" + tableSuffix); | |
| 306 | - dingSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | |
| 307 | - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | |
| 308 | - "签到时间:" + times[0] + "-" + times[1] + " \n - " + | |
| 309 | - "整体数据:" + message); | |
| 310 | - String wapUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | |
| 311 | - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + | |
| 312 | - "&data=" + thirdOpenId + "&type=1&stype=4&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + | |
| 313 | - "&face=&sourcetype=16&soutype=3×tamp=" + DateUtils.getDate() + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | |
| 314 | - dingSms.setSchoolId(teacher.getSchoolId()); | |
| 315 | - dingSms.setDingUserId(thirdOpenId); | |
| 316 | - dingSms.setAgentId(appDto.getAgentId()); | |
| 317 | - dingSms.setWapUrl(wapUrl); | |
| 318 | - dingSms.setReceiveUserId(teacher.getUserId()); | |
| 319 | - dingSms.setTdType(TypeEnums.kaoqing.getType()); | |
| 320 | - this.insertDing(dingSms); | |
| 321 | - logger.info("盯盯推送班主任—————" + templateId + "--------" + teacher.getName()); | |
| 322 | - } | |
| 323 | - } | |
| 324 | - } | |
| 325 | - | |
| 326 | - //盯盯推送宿管 | |
| 327 | - private void dingChamberPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto) { | |
| 328 | - String[] times = key.split("_"); | |
| 329 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
| 330 | - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 0); | |
| 331 | - if (StringUtils.isNotBlank(thirdOpenId)) { | |
| 332 | - List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), 1); | |
| 333 | - if (censusKqDtos != null && censusKqDtos.size() > 0) { | |
| 334 | - String message = ""; | |
| 335 | - for (CensusKqDto censusKqDto : censusKqDtos) { | |
| 336 | - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; | |
| 337 | - } | |
| 338 | - DingSms dingSms = new DingSms(); | |
| 339 | - dingSms.setName(teacher.getName()); | |
| 340 | - dingSms.setTableName("DingSmsNew" + tableSuffix); | |
| 341 | - dingSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | |
| 342 | - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | |
| 343 | - "签到时间:" + times[0] + "-" + times[1] + " \n - " + | |
| 344 | - "整体数据:" + message); | |
| 345 | - String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | |
| 346 | - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + | |
| 347 | - "&pass=" + teacher.getPass() + "&type=4&soutype=3&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | |
| 348 | - dingSms.setSchoolId(teacher.getSchoolId()); | |
| 349 | - dingSms.setDingUserId(thirdOpenId); | |
| 350 | - dingSms.setAgentId(appDto.getAgentId()); | |
| 351 | - dingSms.setWapUrl(msgUrl); | |
| 352 | - dingSms.setReceiveUserId(teacher.getUserId()); | |
| 353 | - dingSms.setTdType(TypeEnums.kaoqing.getType()); | |
| 354 | - this.insertDing(dingSms); | |
| 355 | - logger.info("盯盯推送宿管—————" + templateId + "--------" + teacher.getName()); | |
| 356 | - } | |
| 357 | - } | |
| 358 | - } | |
| 359 | - | |
| 360 | - //企业号推送班主任 | |
| 361 | - private void weChatSchoolPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto, int type) { | |
| 362 | - String[] times = key.split("_"); | |
| 363 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
| 364 | - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 1); | |
| 365 | - if (StringUtils.isNotBlank(thirdOpenId)) { | |
| 366 | - List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), type); | |
| 367 | - if (censusKqDtos != null && censusKqDtos.size() > 0) { | |
| 368 | - String message = ""; | |
| 369 | - for (CensusKqDto censusKqDto : censusKqDtos) { | |
| 370 | - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; | |
| 371 | - } | |
| 372 | - WeChatSms weChatSms = new WeChatSms(); | |
| 373 | - weChatSms.setTableName("qyhSmsNew" + tableSuffix); | |
| 374 | - weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | |
| 375 | - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | |
| 376 | - "签到时间:" + times[0] + "-" + times[1] + " \n - " + | |
| 377 | - "整体数据:" + message); | |
| 378 | - weChatSms.setSchoolId(teacher.getSchoolId()); | |
| 379 | - weChatSms.setName(teacher.getName()); | |
| 380 | - weChatSms.setQiYeHaoUserId(thirdOpenId); | |
| 381 | - weChatSms.setReceiveUserId(teacher.getUserId()); | |
| 382 | - weChatSms.setAppId(appDto.getAgentId()); | |
| 383 | - weChatSms.setSecret(appDto.getAgentSecret()); | |
| 384 | - String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | |
| 385 | - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + | |
| 386 | - "&data=" + thirdOpenId + "&type=1&stype=3&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + | |
| 387 | - "&face=" + teacher.getFace() + "&sourcetype=16&soutype=2×tamp=" + DateUtils.getDate() + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1) + "&"; | |
| 388 | - weChatSms.setMsgUrl(msgUrl); | |
| 389 | - weChatSms.setTdType(TypeEnums.kaoqing.getType()); | |
| 390 | - this.insertQYH(weChatSms); | |
| 391 | - logger.info("企业号推送班主任—————" + templateId + "--------" + teacher.getName()); | |
| 392 | - } | |
| 393 | - } | |
| 394 | - } | |
| 395 | - | |
| 396 | - //企业号推送宿管 | |
| 397 | - private void weChatChamberPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto) { | |
| 398 | - String[] times = key.split("_"); | |
| 399 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
| 400 | - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 1); | |
| 401 | - if (StringUtils.isNotBlank(thirdOpenId)) { | |
| 402 | - List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), 1); | |
| 403 | - if (censusKqDtos != null && censusKqDtos.size() > 0) { | |
| 404 | - String message = ""; | |
| 405 | - for (CensusKqDto censusKqDto : censusKqDtos) { | |
| 406 | - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; | |
| 407 | - } | |
| 408 | - WeChatSms weChatSms = new WeChatSms(); | |
| 409 | - weChatSms.setTableName("qyhSmsNew" + tableSuffix); | |
| 410 | - weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | |
| 411 | - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | |
| 412 | - "签到时间:" + times[0] + "-" + times[1] + " \n - " + | |
| 413 | - "整体数据:" + message); | |
| 414 | - weChatSms.setSchoolId(teacher.getSchoolId()); | |
| 415 | - weChatSms.setName(teacher.getName()); | |
| 416 | - weChatSms.setQiYeHaoUserId(thirdOpenId); | |
| 417 | - weChatSms.setReceiveUserId(teacher.getUserId()); | |
| 418 | - weChatSms.setAppId(appDto.getAgentId()); | |
| 419 | - weChatSms.setSecret(appDto.getAgentSecret()); | |
| 420 | - String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | |
| 421 | - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + | |
| 422 | - "&pass=" + teacher.getPass() + "&type=4&soutype=2&time=" + DateUtils.date2String(new Date(), DateUtils.format1) + "&"; | |
| 423 | - weChatSms.setMsgUrl(msgUrl); | |
| 424 | - weChatSms.setTdType(TypeEnums.kaoqing.getType()); | |
| 425 | - this.insertQYH(weChatSms); | |
| 426 | - logger.info("企业号推送宿管—————" + templateId + "--------" + teacher.getName()); | |
| 427 | - } | |
| 428 | - } | |
| 429 | - } | |
| 430 | - | |
| 431 | - //type 0 出入校 1 出入寝 | |
| 432 | - private List<CensusKqDto> getCensus(int id, String templateId, int schoolId, String userId, int type) { | |
| 433 | - List<CensusKqDto> list = new ArrayList<>(); | |
| 434 | - String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetailNew?schoolId=" + schoolId + | |
| 435 | - "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&userId=" + userId + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | |
| 436 | - JSONObject jsonObject = HttpClientUtils.httpGet(url); | |
| 437 | - try { | |
| 438 | - JSONArray data = (JSONArray) jsonObject.get("data"); | |
| 439 | - for (int i = 0; i < data.size(); i++) { | |
| 440 | - CensusKqDto censusKqDto = new CensusKqDto(); | |
| 441 | - JSONObject object = data.getJSONObject(i); | |
| 442 | - censusKqDto.setLeaveCount((Integer) object.get("leaveCount")); | |
| 443 | - censusKqDto.setNotAttendCount((Integer) object.get("noAttendCount")); | |
| 444 | - censusKqDto.setTargetName((String) object.get("name")); | |
| 445 | - list.add(censusKqDto); | |
| 446 | - } | |
| 447 | - } catch (Exception e) { | |
| 448 | - | |
| 449 | - } | |
| 450 | - return list; | |
| 451 | - } | |
| 452 | - | |
| 453 | - private BigDecimal getAlarmCensus(int id, String templateId, int schoolId, int type) { | |
| 454 | - int allNumber = 0, attendNumber = 0; | |
| 455 | - List<Integer> list = scFeign.selectClassBySchoolId(schoolId); | |
| 456 | - for (Integer classId : list) { | |
| 457 | - String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId=" + classId + | |
| 458 | - "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | |
| 459 | - JSONObject jsonObject = HttpClientUtils.httpGet(url); | |
| 460 | - try { | |
| 461 | - JSONObject data = (JSONObject) jsonObject.get("data"); | |
| 462 | - attendNumber = attendNumber + (Integer) data.get("stuAttendCount"); | |
| 463 | - allNumber = allNumber + (Integer) data.get("stuCount"); | |
| 464 | - } catch (Exception e) { | |
| 465 | - e.printStackTrace(); | |
| 466 | - } | |
| 467 | - } | |
| 468 | - if (allNumber != 0) { | |
| 469 | - BigDecimal pecrent = new BigDecimal(attendNumber).divide(new BigDecimal(allNumber), 10, BigDecimal.ROUND_HALF_DOWN); | |
| 470 | - return pecrent; | |
| 471 | - } else { | |
| 472 | - return BigDecimal.ZERO; | |
| 473 | - } | |
| 474 | - | |
| 475 | - } | |
| 476 | - | |
| 477 | - /** | |
| 478 | - * @param id | |
| 479 | - * @param templateId | |
| 480 | - * @param schoolId | |
| 481 | - * @param type | |
| 482 | - * @return list(0) 出勤 list(1) 未出勤 List(2) 请假 | |
| 483 | - */ | |
| 484 | - private List<Integer> getIOTCensus(int id, String templateId, int schoolId, int type) { | |
| 485 | - List<Integer> result = new ArrayList<>(); | |
| 486 | - int attend = 0, unattend = 0, leave = 0; | |
| 487 | - List<Integer> list = scFeign.selectClassBySchoolId(schoolId); | |
| 488 | - for (Integer classId : list) { | |
| 489 | - String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId=" + classId + | |
| 490 | - "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | |
| 491 | - JSONObject jsonObject = HttpClientUtils.httpGet(url); | |
| 492 | - try { | |
| 493 | - JSONObject data = (JSONObject) jsonObject.get("data"); | |
| 494 | - attend = attend + (Integer) data.get("stuAttendCount"); | |
| 495 | - unattend = unattend + (Integer) data.get("noAttendCount"); | |
| 496 | - leave = leave + (Integer) data.get("leaveCount"); | |
| 497 | - } catch (Exception e) { | |
| 498 | - e.printStackTrace(); | |
| 499 | - } | |
| 500 | - } | |
| 501 | - result.add(attend); | |
| 502 | - result.add(unattend); | |
| 503 | - result.add(leave); | |
| 504 | - return result; | |
| 505 | - } | |
| 506 | - | |
| 507 | - | |
| 508 | - private void insertDing(DingSms dingSms) { | |
| 509 | - try { | |
| 510 | - smsService.insertDing(dingSms); | |
| 511 | - } catch (Exception e) { | |
| 512 | - logger.info(e.toString()); | |
| 513 | - } | |
| 514 | - } | |
| 515 | - | |
| 516 | - private void insertQYH(WeChatSms weChatSms) { | |
| 517 | - try { | |
| 518 | - smsService.insertWeChat(weChatSms); | |
| 519 | - } catch (Exception e) { | |
| 520 | - logger.info(e.toString()); | |
| 521 | - } | |
| 522 | - } | |
| 523 | - | |
| 524 | - private void alarmPush(int schoolId) { | |
| 525 | - String msg = "【考勤异动】"; | |
| 526 | - try { | |
| 527 | - SchoolDto schoolDto = scFeign.selectSchoolBySchoolId(schoolId); | |
| 528 | - msg += schoolDto.getSchoolName() + "考勤有异动,请关注!"; | |
| 529 | - sendMessage(schoolDto.getSchoolId(), opexList.get(0), msg); | |
| 530 | - sendMessage(schoolDto.getSchoolId(), opexList.get(1), msg); | |
| 531 | - sendMessage(schoolDto.getSchoolId(), integration, msg); | |
| 532 | - String managerPhone = managerService.selectManagerById(schoolDto.getManagerUserId()); | |
| 533 | - if (StringUtils.isNotBlank(managerPhone)) { | |
| 534 | - sendMessage(schoolDto.getSchoolId(), managerPhone, msg); | |
| 535 | - } | |
| 536 | - } catch (Exception e) { | |
| 537 | - e.printStackTrace(); | |
| 538 | - } | |
| 539 | - | |
| 540 | - } | |
| 541 | - | |
| 542 | - private void sendMessage(int schoolId, String mobile, String msg) { | |
| 543 | - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
| 544 | - ShortMsg shortMsg = new ShortMsg(); | |
| 545 | - shortMsg.setTableName("smsNew" + tableSuffix); | |
| 546 | - shortMsg.setSchoolId(schoolId); | |
| 547 | - shortMsg.setMobile(mobile); | |
| 548 | - shortMsg.setMsg(msg); | |
| 549 | - smsService.insertSMS(shortMsg); | |
| 550 | - } | |
| 551 | -} | |
| 1 | +//package com.sincere.quartz.job; | |
| 2 | +// | |
| 3 | +//import com.alibaba.fastjson.JSONArray; | |
| 4 | +//import com.alibaba.fastjson.JSONObject; | |
| 5 | +//import com.sincere.common.dto.smartCampus.*; | |
| 6 | +//import com.sincere.common.enums.PushTypeEnums; | |
| 7 | +//import com.sincere.common.util.DateUtils; | |
| 8 | +//import com.sincere.common.util.HttpClientUtils; | |
| 9 | +//import com.sincere.quartz.enums.KqTypeEnums; | |
| 10 | +//import com.sincere.quartz.enums.TypeEnums; | |
| 11 | +//import com.sincere.quartz.feign.ScFeign; | |
| 12 | +//import com.sincere.quartz.model.DingSms; | |
| 13 | +//import com.sincere.quartz.model.ShortMsg; | |
| 14 | +//import com.sincere.quartz.model.WeChatSms; | |
| 15 | +//import com.sincere.quartz.service.ManagerService; | |
| 16 | +//import com.sincere.quartz.service.SmsService; | |
| 17 | +//import org.apache.commons.lang3.StringUtils; | |
| 18 | +//import org.slf4j.Logger; | |
| 19 | +//import org.slf4j.LoggerFactory; | |
| 20 | +//import org.springframework.beans.factory.annotation.Autowired; | |
| 21 | +//import org.springframework.scheduling.annotation.Scheduled; | |
| 22 | +//import org.springframework.stereotype.Service; | |
| 23 | +// | |
| 24 | +//import java.math.BigDecimal; | |
| 25 | +//import java.util.*; | |
| 26 | +// | |
| 27 | +///** | |
| 28 | +// * 考勤任务推送调用 | |
| 29 | +// * 主要推送盯盯以及企业号 | |
| 30 | +// * | |
| 31 | +// * @author chen | |
| 32 | +// * @version 1.0 | |
| 33 | +// * @date 2019/11/27 0027 17:05 | |
| 34 | +// */ | |
| 35 | +//@Service | |
| 36 | +//public class KQJob { | |
| 37 | +// | |
| 38 | +// private Logger logger = LoggerFactory.getLogger(KQJob.class); | |
| 39 | +// | |
| 40 | +// @Autowired | |
| 41 | +// ScFeign scFeign; | |
| 42 | +// | |
| 43 | +// @Autowired | |
| 44 | +// SmsService smsService; | |
| 45 | +// | |
| 46 | +// @Autowired | |
| 47 | +// ManagerService managerService; | |
| 48 | +// | |
| 49 | +// private static String iotUrl = "http://60.190.202.57:8035"; | |
| 50 | +// | |
| 51 | +// private static String date; | |
| 52 | +// private static Map<String, String> map = new HashMap<>(); //学校 考勤推送map | |
| 53 | +// | |
| 54 | +// private static String alarmDate; | |
| 55 | +// private static Map<String, String> alarmMap = new HashMap<>(); //考勤告警推送map | |
| 56 | +// private static Map<String, BigDecimal> templateMap = new HashMap<>(); // 考勤比例 | |
| 57 | +// | |
| 58 | +// private static List<String> opexList; | |
| 59 | +// private static String integration; | |
| 60 | +// | |
| 61 | +// static { | |
| 62 | +// opexList = new ArrayList<>(); | |
| 63 | +// opexList.add("15857566147"); //王汉栋 | |
| 64 | +// opexList.add("13858485977"); //王楠彬 | |
| 65 | +// | |
| 66 | +// integration = "18767117554"; //林炜 | |
| 67 | +// } | |
| 68 | +// | |
| 69 | +// @Scheduled(cron = "0 0-59 * * * ? ") | |
| 70 | +// public void kaoQing() { | |
| 71 | +// String now = DateUtils.date2String(new Date(), DateUtils.format1); | |
| 72 | +// if (StringUtils.isBlank(date)) { | |
| 73 | +// initMap(); | |
| 74 | +// date = now; | |
| 75 | +// } | |
| 76 | +// if (!DateUtils.date2String(new Date(), DateUtils.format1).equals(date)) { | |
| 77 | +// initMap(); | |
| 78 | +// date = DateUtils.date2String(new Date(), DateUtils.format1); | |
| 79 | +// } | |
| 80 | +// //开始过滤数据 推送 | |
| 81 | +// List<String> keyList = new ArrayList<>(); | |
| 82 | +// for (Map.Entry<String, String> entity : map.entrySet()) { | |
| 83 | +// String endTime = entity.getValue().split("_")[1]; | |
| 84 | +// if (DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") >= 2 | |
| 85 | +// && DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") < 5) { | |
| 86 | +// String key = entity.getKey(); | |
| 87 | +// String[] messageArray = key.split("_"); | |
| 88 | +// if (messageArray[2].contains(PushTypeEnums.QIYEHAO.getType() + "")) { | |
| 89 | +// logger.info("企业号推送:" + messageArray[0] + "__" + messageArray[1]); | |
| 90 | +// weChatBatchPush(messageArray[0], Integer.valueOf(messageArray[1]), entity.getValue()); | |
| 91 | +// } | |
| 92 | +// if (messageArray[2].contains(PushTypeEnums.DING.getType() + "")) { | |
| 93 | +// logger.info(("盯盯推送:" + messageArray[0] + "__" + messageArray[1])); | |
| 94 | +// dingBatchPush(messageArray[0], Integer.valueOf(messageArray[1]), entity.getValue()); | |
| 95 | +// } | |
| 96 | +// keyList.add(key); | |
| 97 | +// } | |
| 98 | +// } | |
| 99 | +// for (String key : keyList) { | |
| 100 | +// map.remove(key); | |
| 101 | +// } | |
| 102 | +// } | |
| 103 | +// | |
| 104 | +// @Scheduled(cron = "0 0-59 * * * ? ") | |
| 105 | +// public void alarmKaoQing() { | |
| 106 | +// String now = DateUtils.date2String(new Date(), DateUtils.format1); | |
| 107 | +// if (StringUtils.isBlank(alarmDate)) { | |
| 108 | +// initAlarmMap(); | |
| 109 | +// alarmDate = now; | |
| 110 | +// } | |
| 111 | +// if (!DateUtils.date2String(new Date(), DateUtils.format1).equals(alarmDate)) { | |
| 112 | +// initAlarmMap(); | |
| 113 | +// alarmDate = DateUtils.date2String(new Date(), DateUtils.format1); | |
| 114 | +// } | |
| 115 | +// //开始过滤数据 推送 | |
| 116 | +// List<String> keyList = new ArrayList<>(); | |
| 117 | +// for (Map.Entry<String, String> entity : alarmMap.entrySet()) { | |
| 118 | +// String endTime = entity.getValue().split("_")[1]; | |
| 119 | +// if (DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") >= 2 | |
| 120 | +// ) { | |
| 121 | +// String key = entity.getKey(); | |
| 122 | +// keyList.add(key); | |
| 123 | +// //alarm(entity); //告警 | |
| 124 | +// //insertIOT(entity); //iot | |
| 125 | +// } | |
| 126 | +// } | |
| 127 | +// for (String key : keyList) { | |
| 128 | +// map.remove(key); | |
| 129 | +// } | |
| 130 | +// } | |
| 131 | +// | |
| 132 | +// private void initAlarmMap() { | |
| 133 | +// alarmMap = new HashMap<>(); | |
| 134 | +// List<TemplateDto> list = scFeign.getAllTemplateAlarm(); | |
| 135 | +// logger.info(("------考勤告警模板------")); | |
| 136 | +// for (TemplateDto templateDto : list) { | |
| 137 | +// String config = templateDto.getConfig(); | |
| 138 | +// String[] array = config.split("<Template"); | |
| 139 | +// for (int i = 1; i < array.length; i++) { | |
| 140 | +// try { | |
| 141 | +// String msg = array[i]; | |
| 142 | +// String beginTime = msg.substring(msg.indexOf("BeginTime") + 11, msg.indexOf("BeginTime") + 16); | |
| 143 | +// String endTime = msg.substring(msg.indexOf("EndTime") + 9, msg.indexOf("EndTime") + 14); | |
| 144 | +// String templateId = msg.substring(msg.indexOf("TemplateID") + 12, msg.indexOf("TemplateID") + 22); | |
| 145 | +// String Week = msg.substring(msg.indexOf("Week") + 6, msg.indexOf("Week") + 19); | |
| 146 | +// String type = msg.substring(msg.indexOf("Type") + 6, msg.indexOf("Type") + 8); | |
| 147 | +// type = type.replace("\"", ""); | |
| 148 | +// int nowWeek = DateUtils.getWeek(); | |
| 149 | +// if (Week.contains(nowWeek + "") && nowWeek != 6 && nowWeek != 0) { //周末不告警 | |
| 150 | +// logger.info((templateId + "_" + templateDto.getSchoolId() + "------" + beginTime + "_" + endTime)); | |
| 151 | +// alarmMap.put(templateId + "_" + templateDto.getSchoolId() + "_" + templateDto.getTitle(), beginTime + "_" + endTime + "_" + type + "_" + templateDto.getId()); | |
| 152 | +// } | |
| 153 | +// } catch (Exception e) { | |
| 154 | +// e.printStackTrace(); | |
| 155 | +// } | |
| 156 | +// } | |
| 157 | +// } | |
| 158 | +// } | |
| 159 | +// | |
| 160 | +// //告警推送 | |
| 161 | +// private void alarm(Map.Entry<String, String> entry) { | |
| 162 | +// String templateId = entry.getKey().split("_")[0]; | |
| 163 | +// String schoolId = entry.getKey().split("_")[1]; | |
| 164 | +// String id = entry.getValue().split("_")[3]; | |
| 165 | +// String type = entry.getValue().split("_")[2]; | |
| 166 | +// | |
| 167 | +// if (DateUtils.getWeek() == 2 || DateUtils.getWeek() == 5) { | |
| 168 | +// //可以相差40% | |
| 169 | +// BigDecimal percent = getAlarmCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); | |
| 170 | +// if (templateMap.get(templateId) != null) { | |
| 171 | +// if (percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.4)) > 0 | |
| 172 | +// || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.4)) > 0) { | |
| 173 | +// alarmPush(Integer.valueOf(schoolId)); | |
| 174 | +// } | |
| 175 | +// } | |
| 176 | +// templateMap.put(templateId, percent); | |
| 177 | +// } else { | |
| 178 | +// //相差30% | |
| 179 | +// BigDecimal percent = getAlarmCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); | |
| 180 | +// if (templateMap.get(templateId) != null) { | |
| 181 | +// if (percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.3)) > 0 | |
| 182 | +// || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.3)) > 0) { | |
| 183 | +// alarmPush(Integer.valueOf(schoolId)); | |
| 184 | +// } | |
| 185 | +// } | |
| 186 | +// templateMap.put(templateId, percent); | |
| 187 | +// } | |
| 188 | +// } | |
| 189 | +// | |
| 190 | +// private void insertIOT(Map.Entry<String, String> entry) { | |
| 191 | +// String templateId = entry.getKey().split("_")[0]; | |
| 192 | +// String schoolId = entry.getKey().split("_")[1]; | |
| 193 | +// String title = entry.getKey().split("_")[2]; | |
| 194 | +// String id = entry.getValue().split("_")[3]; | |
| 195 | +// String type = entry.getValue().split("_")[2]; | |
| 196 | +// String beginTime = entry.getValue().split("_")[0]; | |
| 197 | +// String endTime = entry.getValue().split("_")[1]; | |
| 198 | +// | |
| 199 | +// List<Integer> list = getIOTCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); | |
| 200 | +// JSONObject object = new JSONObject(); | |
| 201 | +// object.put("strTime", beginTime); | |
| 202 | +// object.put("endTime", endTime); | |
| 203 | +// object.put("inTime", DateUtils.date2String(new Date(), DateUtils.format1)); | |
| 204 | +// object.put("noAttendanceCount", list.get(1)); | |
| 205 | +// object.put("attendanceCount", list.get(0)); | |
| 206 | +// object.put("leaveCount", list.get(2)); | |
| 207 | +// object.put("templateName", title); | |
| 208 | +// object.put("qianDaoIdId", id); | |
| 209 | +// object.put("schoolId", schoolId); | |
| 210 | +// object.put("templateId", templateId); | |
| 211 | +// HttpClientUtils.httpPostJson(iotUrl + "/api/Association/addIntelligenceAttendance", object.toJSONString()); | |
| 212 | +// } | |
| 213 | +// | |
| 214 | +// //初始化要推送的模板 | |
| 215 | +// private void initMap() { | |
| 216 | +// map = new HashMap<>(); | |
| 217 | +// List<TemplateDto> list = scFeign.getAllTemplate(); | |
| 218 | +// logger.info(("------需要推送的考勤模板------")); | |
| 219 | +// for (TemplateDto templateDto : list) { | |
| 220 | +// String config = templateDto.getConfig(); | |
| 221 | +// String[] array = config.split("<Template"); | |
| 222 | +// for (int i = 1; i < array.length; i++) { | |
| 223 | +// try { | |
| 224 | +// String msg = array[i]; | |
| 225 | +// String beginTime = msg.substring(msg.indexOf("BeginTime") + 11, msg.indexOf("BeginTime") + 16); | |
| 226 | +// String endTime = msg.substring(msg.indexOf("EndTime") + 9, msg.indexOf("EndTime") + 14); | |
| 227 | +// String templateId = msg.substring(msg.indexOf("TemplateID") + 12, msg.indexOf("TemplateID") + 22); | |
| 228 | +// String Week = msg.substring(msg.indexOf("Week") + 6, msg.indexOf("Week") + 19); | |
| 229 | +// String type = msg.substring(msg.indexOf("Type") + 6, msg.indexOf("Type") + 8); | |
| 230 | +// type = type.replace("\"", ""); | |
| 231 | +// int nowWeek = DateUtils.getWeek(); | |
| 232 | +// if (Week.contains(nowWeek + "")) { | |
| 233 | +// logger.info((templateId + "_" + templateDto.getSchoolId() + "_" + templateDto.getType() + "------" + beginTime + "_" + endTime)); | |
| 234 | +// map.put(templateId + "_" + templateDto.getSchoolId() + "_" + templateDto.getType(), beginTime + "_" + endTime + "_" + type + "_" + templateDto.getId()); | |
| 235 | +// } | |
| 236 | +// } catch (Exception e) { | |
| 237 | +// e.printStackTrace(); | |
| 238 | +// } | |
| 239 | +// } | |
| 240 | +// } | |
| 241 | +// } | |
| 242 | +// | |
| 243 | +// //盯盯批量推送 | |
| 244 | +// private void dingBatchPush(String templateId, int schoolId, String key) { | |
| 245 | +// String[] times = key.split("_"); | |
| 246 | +// AppDto appDto = scFeign.getApp(schoolId, 1); | |
| 247 | +// if (Integer.valueOf(times[2]) < 7) { | |
| 248 | +// //出入校 推班主任 | |
| 249 | +// List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | |
| 250 | +// for (KqTeacherDto teacher : list) { | |
| 251 | +// dingSchoolPush(templateId, teacher, key, appDto, 0); | |
| 252 | +// } | |
| 253 | +// } else { | |
| 254 | +// //出入寝 推班主任 | |
| 255 | +// List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | |
| 256 | +// for (KqTeacherDto teacher : list) { | |
| 257 | +// dingSchoolPush(templateId, teacher, key, appDto, 1); | |
| 258 | +// } | |
| 259 | +// //推宿管 | |
| 260 | +// List<KqTeacherDto> chamberList = scFeign.selectChamberTeacher(schoolId); | |
| 261 | +// for (KqTeacherDto teacher : chamberList) { | |
| 262 | +// dingChamberPush(templateId, teacher, key, appDto); | |
| 263 | +// } | |
| 264 | +// } | |
| 265 | +// } | |
| 266 | +// | |
| 267 | +// //企业号批量推送 | |
| 268 | +// private void weChatBatchPush(String templateId, int schoolId, String key) { | |
| 269 | +// String[] times = key.split("_"); | |
| 270 | +// AppDto appDto = scFeign.getApp(schoolId, 0); | |
| 271 | +// if (Integer.valueOf(times[2]) < 7) { | |
| 272 | +// //出入校 推班主任 | |
| 273 | +// List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | |
| 274 | +// for (KqTeacherDto teacher : list) { | |
| 275 | +// weChatSchoolPush(templateId, teacher, key, appDto, 0); | |
| 276 | +// } | |
| 277 | +// } else { | |
| 278 | +// //出入寝 推班主任 | |
| 279 | +// List<KqTeacherDto> list = scFeign.getTeacherList(schoolId); | |
| 280 | +// for (KqTeacherDto teacher : list) { | |
| 281 | +// weChatSchoolPush(templateId, teacher, key, appDto, 1); | |
| 282 | +// } | |
| 283 | +// //推宿管 | |
| 284 | +// List<KqTeacherDto> chamberList = scFeign.selectChamberTeacher(schoolId); | |
| 285 | +// for (KqTeacherDto teacher : chamberList) { | |
| 286 | +// weChatChamberPush(templateId, teacher, key, appDto); | |
| 287 | +// } | |
| 288 | +// } | |
| 289 | +// } | |
| 290 | +// | |
| 291 | +// //盯盯推送班主任 | |
| 292 | +// private void dingSchoolPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto, int type) { | |
| 293 | +// String[] times = key.split("_"); | |
| 294 | +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
| 295 | +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 0); | |
| 296 | +// if (StringUtils.isNotBlank(thirdOpenId)) { | |
| 297 | +// List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), type); | |
| 298 | +// if (censusKqDtos != null && censusKqDtos.size() > 0) { | |
| 299 | +// String message = ""; | |
| 300 | +// for (CensusKqDto censusKqDto : censusKqDtos) { | |
| 301 | +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; | |
| 302 | +// } | |
| 303 | +// DingSms dingSms = new DingSms(); | |
| 304 | +// dingSms.setName(teacher.getName()); | |
| 305 | +// dingSms.setTableName("DingSmsNew" + tableSuffix); | |
| 306 | +// dingSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | |
| 307 | +// "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | |
| 308 | +// "签到时间:" + times[0] + "-" + times[1] + " \n - " + | |
| 309 | +// "整体数据:" + message); | |
| 310 | +// String wapUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | |
| 311 | +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + | |
| 312 | +// "&data=" + thirdOpenId + "&type=1&stype=4&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + | |
| 313 | +// "&face=&sourcetype=16&soutype=3×tamp=" + DateUtils.getDate() + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | |
| 314 | +// dingSms.setSchoolId(teacher.getSchoolId()); | |
| 315 | +// dingSms.setDingUserId(thirdOpenId); | |
| 316 | +// dingSms.setAgentId(appDto.getAgentId()); | |
| 317 | +// dingSms.setWapUrl(wapUrl); | |
| 318 | +// dingSms.setReceiveUserId(teacher.getUserId()); | |
| 319 | +// dingSms.setTdType(TypeEnums.kaoqing.getType()); | |
| 320 | +// this.insertDing(dingSms); | |
| 321 | +// logger.info("盯盯推送班主任—————" + templateId + "--------" + teacher.getName()); | |
| 322 | +// } | |
| 323 | +// } | |
| 324 | +// } | |
| 325 | +// | |
| 326 | +// //盯盯推送宿管 | |
| 327 | +// private void dingChamberPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto) { | |
| 328 | +// String[] times = key.split("_"); | |
| 329 | +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
| 330 | +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 0); | |
| 331 | +// if (StringUtils.isNotBlank(thirdOpenId)) { | |
| 332 | +// List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), 1); | |
| 333 | +// if (censusKqDtos != null && censusKqDtos.size() > 0) { | |
| 334 | +// String message = ""; | |
| 335 | +// for (CensusKqDto censusKqDto : censusKqDtos) { | |
| 336 | +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; | |
| 337 | +// } | |
| 338 | +// DingSms dingSms = new DingSms(); | |
| 339 | +// dingSms.setName(teacher.getName()); | |
| 340 | +// dingSms.setTableName("DingSmsNew" + tableSuffix); | |
| 341 | +// dingSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | |
| 342 | +// "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | |
| 343 | +// "签到时间:" + times[0] + "-" + times[1] + " \n - " + | |
| 344 | +// "整体数据:" + message); | |
| 345 | +// String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | |
| 346 | +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + | |
| 347 | +// "&pass=" + teacher.getPass() + "&type=4&soutype=3&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | |
| 348 | +// dingSms.setSchoolId(teacher.getSchoolId()); | |
| 349 | +// dingSms.setDingUserId(thirdOpenId); | |
| 350 | +// dingSms.setAgentId(appDto.getAgentId()); | |
| 351 | +// dingSms.setWapUrl(msgUrl); | |
| 352 | +// dingSms.setReceiveUserId(teacher.getUserId()); | |
| 353 | +// dingSms.setTdType(TypeEnums.kaoqing.getType()); | |
| 354 | +// this.insertDing(dingSms); | |
| 355 | +// logger.info("盯盯推送宿管—————" + templateId + "--------" + teacher.getName()); | |
| 356 | +// } | |
| 357 | +// } | |
| 358 | +// } | |
| 359 | +// | |
| 360 | +// //企业号推送班主任 | |
| 361 | +// private void weChatSchoolPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto, int type) { | |
| 362 | +// String[] times = key.split("_"); | |
| 363 | +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
| 364 | +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 1); | |
| 365 | +// if (StringUtils.isNotBlank(thirdOpenId)) { | |
| 366 | +// List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), type); | |
| 367 | +// if (censusKqDtos != null && censusKqDtos.size() > 0) { | |
| 368 | +// String message = ""; | |
| 369 | +// for (CensusKqDto censusKqDto : censusKqDtos) { | |
| 370 | +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; | |
| 371 | +// } | |
| 372 | +// WeChatSms weChatSms = new WeChatSms(); | |
| 373 | +// weChatSms.setTableName("qyhSmsNew" + tableSuffix); | |
| 374 | +// weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | |
| 375 | +// "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | |
| 376 | +// "签到时间:" + times[0] + "-" + times[1] + " \n - " + | |
| 377 | +// "整体数据:" + message); | |
| 378 | +// weChatSms.setSchoolId(teacher.getSchoolId()); | |
| 379 | +// weChatSms.setName(teacher.getName()); | |
| 380 | +// weChatSms.setQiYeHaoUserId(thirdOpenId); | |
| 381 | +// weChatSms.setReceiveUserId(teacher.getUserId()); | |
| 382 | +// weChatSms.setAppId(appDto.getAgentId()); | |
| 383 | +// weChatSms.setSecret(appDto.getAgentSecret()); | |
| 384 | +// String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | |
| 385 | +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + | |
| 386 | +// "&data=" + thirdOpenId + "&type=1&stype=3&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + | |
| 387 | +// "&face=" + teacher.getFace() + "&sourcetype=16&soutype=2×tamp=" + DateUtils.getDate() + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1) + "&"; | |
| 388 | +// weChatSms.setMsgUrl(msgUrl); | |
| 389 | +// weChatSms.setTdType(TypeEnums.kaoqing.getType()); | |
| 390 | +// this.insertQYH(weChatSms); | |
| 391 | +// logger.info("企业号推送班主任—————" + templateId + "--------" + teacher.getName()); | |
| 392 | +// } | |
| 393 | +// } | |
| 394 | +// } | |
| 395 | +// | |
| 396 | +// //企业号推送宿管 | |
| 397 | +// private void weChatChamberPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto) { | |
| 398 | +// String[] times = key.split("_"); | |
| 399 | +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
| 400 | +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 1); | |
| 401 | +// if (StringUtils.isNotBlank(thirdOpenId)) { | |
| 402 | +// List<CensusKqDto> censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), 1); | |
| 403 | +// if (censusKqDtos != null && censusKqDtos.size() > 0) { | |
| 404 | +// String message = ""; | |
| 405 | +// for (CensusKqDto censusKqDto : censusKqDtos) { | |
| 406 | +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; | |
| 407 | +// } | |
| 408 | +// WeChatSms weChatSms = new WeChatSms(); | |
| 409 | +// weChatSms.setTableName("qyhSmsNew" + tableSuffix); | |
| 410 | +// weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + | |
| 411 | +// "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + | |
| 412 | +// "签到时间:" + times[0] + "-" + times[1] + " \n - " + | |
| 413 | +// "整体数据:" + message); | |
| 414 | +// weChatSms.setSchoolId(teacher.getSchoolId()); | |
| 415 | +// weChatSms.setName(teacher.getName()); | |
| 416 | +// weChatSms.setQiYeHaoUserId(thirdOpenId); | |
| 417 | +// weChatSms.setReceiveUserId(teacher.getUserId()); | |
| 418 | +// weChatSms.setAppId(appDto.getAgentId()); | |
| 419 | +// weChatSms.setSecret(appDto.getAgentSecret()); | |
| 420 | +// String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + | |
| 421 | +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + | |
| 422 | +// "&pass=" + teacher.getPass() + "&type=4&soutype=2&time=" + DateUtils.date2String(new Date(), DateUtils.format1) + "&"; | |
| 423 | +// weChatSms.setMsgUrl(msgUrl); | |
| 424 | +// weChatSms.setTdType(TypeEnums.kaoqing.getType()); | |
| 425 | +// this.insertQYH(weChatSms); | |
| 426 | +// logger.info("企业号推送宿管—————" + templateId + "--------" + teacher.getName()); | |
| 427 | +// } | |
| 428 | +// } | |
| 429 | +// } | |
| 430 | +// | |
| 431 | +// //type 0 出入校 1 出入寝 | |
| 432 | +// private List<CensusKqDto> getCensus(int id, String templateId, int schoolId, String userId, int type) { | |
| 433 | +// List<CensusKqDto> list = new ArrayList<>(); | |
| 434 | +// String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetailNew?schoolId=" + schoolId + | |
| 435 | +// "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&userId=" + userId + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | |
| 436 | +// JSONObject jsonObject = HttpClientUtils.httpGet(url); | |
| 437 | +// try { | |
| 438 | +// JSONArray data = (JSONArray) jsonObject.get("data"); | |
| 439 | +// for (int i = 0; i < data.size(); i++) { | |
| 440 | +// CensusKqDto censusKqDto = new CensusKqDto(); | |
| 441 | +// JSONObject object = data.getJSONObject(i); | |
| 442 | +// censusKqDto.setLeaveCount((Integer) object.get("leaveCount")); | |
| 443 | +// censusKqDto.setNotAttendCount((Integer) object.get("noAttendCount")); | |
| 444 | +// censusKqDto.setTargetName((String) object.get("name")); | |
| 445 | +// list.add(censusKqDto); | |
| 446 | +// } | |
| 447 | +// } catch (Exception e) { | |
| 448 | +// | |
| 449 | +// } | |
| 450 | +// return list; | |
| 451 | +// } | |
| 452 | +// | |
| 453 | +// private BigDecimal getAlarmCensus(int id, String templateId, int schoolId, int type) { | |
| 454 | +// int allNumber = 0, attendNumber = 0; | |
| 455 | +// List<Integer> list = scFeign.selectClassBySchoolId(schoolId); | |
| 456 | +// for (Integer classId : list) { | |
| 457 | +// String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId=" + classId + | |
| 458 | +// "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | |
| 459 | +// JSONObject jsonObject = HttpClientUtils.httpGet(url); | |
| 460 | +// try { | |
| 461 | +// JSONObject data = (JSONObject) jsonObject.get("data"); | |
| 462 | +// attendNumber = attendNumber + (Integer) data.get("stuAttendCount"); | |
| 463 | +// allNumber = allNumber + (Integer) data.get("stuCount"); | |
| 464 | +// } catch (Exception e) { | |
| 465 | +// e.printStackTrace(); | |
| 466 | +// } | |
| 467 | +// } | |
| 468 | +// if (allNumber != 0) { | |
| 469 | +// BigDecimal pecrent = new BigDecimal(attendNumber).divide(new BigDecimal(allNumber), 10, BigDecimal.ROUND_HALF_DOWN); | |
| 470 | +// return pecrent; | |
| 471 | +// } else { | |
| 472 | +// return BigDecimal.ZERO; | |
| 473 | +// } | |
| 474 | +// | |
| 475 | +// } | |
| 476 | +// | |
| 477 | +// /** | |
| 478 | +// * @param id | |
| 479 | +// * @param templateId | |
| 480 | +// * @param schoolId | |
| 481 | +// * @param type | |
| 482 | +// * @return list(0) 出勤 list(1) 未出勤 List(2) 请假 | |
| 483 | +// */ | |
| 484 | +// private List<Integer> getIOTCensus(int id, String templateId, int schoolId, int type) { | |
| 485 | +// List<Integer> result = new ArrayList<>(); | |
| 486 | +// int attend = 0, unattend = 0, leave = 0; | |
| 487 | +// List<Integer> list = scFeign.selectClassBySchoolId(schoolId); | |
| 488 | +// for (Integer classId : list) { | |
| 489 | +// String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId=" + classId + | |
| 490 | +// "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); | |
| 491 | +// JSONObject jsonObject = HttpClientUtils.httpGet(url); | |
| 492 | +// try { | |
| 493 | +// JSONObject data = (JSONObject) jsonObject.get("data"); | |
| 494 | +// attend = attend + (Integer) data.get("stuAttendCount"); | |
| 495 | +// unattend = unattend + (Integer) data.get("noAttendCount"); | |
| 496 | +// leave = leave + (Integer) data.get("leaveCount"); | |
| 497 | +// } catch (Exception e) { | |
| 498 | +// e.printStackTrace(); | |
| 499 | +// } | |
| 500 | +// } | |
| 501 | +// result.add(attend); | |
| 502 | +// result.add(unattend); | |
| 503 | +// result.add(leave); | |
| 504 | +// return result; | |
| 505 | +// } | |
| 506 | +// | |
| 507 | +// | |
| 508 | +// private void insertDing(DingSms dingSms) { | |
| 509 | +// try { | |
| 510 | +// smsService.insertDing(dingSms); | |
| 511 | +// } catch (Exception e) { | |
| 512 | +// logger.info(e.toString()); | |
| 513 | +// } | |
| 514 | +// } | |
| 515 | +// | |
| 516 | +// private void insertQYH(WeChatSms weChatSms) { | |
| 517 | +// try { | |
| 518 | +// smsService.insertWeChat(weChatSms); | |
| 519 | +// } catch (Exception e) { | |
| 520 | +// logger.info(e.toString()); | |
| 521 | +// } | |
| 522 | +// } | |
| 523 | +// | |
| 524 | +// private void alarmPush(int schoolId) { | |
| 525 | +// String msg = "【考勤异动】"; | |
| 526 | +// try { | |
| 527 | +// SchoolDto schoolDto = scFeign.selectSchoolBySchoolId(schoolId); | |
| 528 | +// msg += schoolDto.getSchoolName() + "考勤有异动,请关注!"; | |
| 529 | +// sendMessage(schoolDto.getSchoolId(), opexList.get(0), msg); | |
| 530 | +// sendMessage(schoolDto.getSchoolId(), opexList.get(1), msg); | |
| 531 | +// sendMessage(schoolDto.getSchoolId(), integration, msg); | |
| 532 | +// String managerPhone = managerService.selectManagerById(schoolDto.getManagerUserId()); | |
| 533 | +// if (StringUtils.isNotBlank(managerPhone)) { | |
| 534 | +// sendMessage(schoolDto.getSchoolId(), managerPhone, msg); | |
| 535 | +// } | |
| 536 | +// } catch (Exception e) { | |
| 537 | +// e.printStackTrace(); | |
| 538 | +// } | |
| 539 | +// | |
| 540 | +// } | |
| 541 | +// | |
| 542 | +// private void sendMessage(int schoolId, String mobile, String msg) { | |
| 543 | +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | |
| 544 | +// ShortMsg shortMsg = new ShortMsg(); | |
| 545 | +// shortMsg.setTableName("smsNew" + tableSuffix); | |
| 546 | +// shortMsg.setSchoolId(schoolId); | |
| 547 | +// shortMsg.setMobile(mobile); | |
| 548 | +// shortMsg.setMsg(msg); | |
| 549 | +// smsService.insertSMS(shortMsg); | |
| 550 | +// } | |
| 551 | +//} | ... | ... |
cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java
| 1 | -package com.sincere.quartz.job; | |
| 2 | - | |
| 3 | -import com.sincere.quartz.third.yixueyun.YXYReadService; | |
| 4 | -import com.sincere.quartz.third.yixueyun.YXYWriteService; | |
| 5 | -import org.springframework.beans.factory.annotation.Autowired; | |
| 6 | -import org.springframework.scheduling.annotation.Scheduled; | |
| 7 | -import org.springframework.stereotype.Service; | |
| 8 | - | |
| 9 | -/** | |
| 10 | - * @author chen | |
| 11 | - * @version 1.0 | |
| 12 | - * @date 2019/12/24 0024 10:54 | |
| 13 | - */ | |
| 14 | -@Service | |
| 15 | -public class SyncJob { | |
| 16 | - | |
| 17 | - @Autowired | |
| 18 | - YXYWriteService yxyWriteService; | |
| 19 | - | |
| 20 | - @Autowired | |
| 21 | - YXYReadService yxyReadService; | |
| 22 | - | |
| 23 | - @Scheduled(cron = "30 1 22 * * ? ") | |
| 24 | - public void Sync(){ | |
| 25 | - //翼校通的同步 之后还有钉钉的同步等等 | |
| 26 | - yxyReadService.sync(); | |
| 27 | - yxyWriteService.sync(); | |
| 28 | - } | |
| 29 | -} | |
| 1 | +//package com.sincere.quartz.job; | |
| 2 | +// | |
| 3 | +//import com.sincere.quartz.third.yixueyun.YXYReadService; | |
| 4 | +//import com.sincere.quartz.third.yixueyun.YXYWriteService; | |
| 5 | +//import org.springframework.beans.factory.annotation.Autowired; | |
| 6 | +//import org.springframework.scheduling.annotation.Scheduled; | |
| 7 | +//import org.springframework.stereotype.Service; | |
| 8 | +// | |
| 9 | +///** | |
| 10 | +// * @author chen | |
| 11 | +// * @version 1.0 | |
| 12 | +// * @date 2019/12/24 0024 10:54 | |
| 13 | +// */ | |
| 14 | +//@Service | |
| 15 | +//public class SyncJob { | |
| 16 | +// | |
| 17 | +// @Autowired | |
| 18 | +// YXYWriteService yxyWriteService; | |
| 19 | +// | |
| 20 | +// @Autowired | |
| 21 | +// YXYReadService yxyReadService; | |
| 22 | +// | |
| 23 | +// @Scheduled(cron = "30 1 22 * * ? ") | |
| 24 | +// public void Sync(){ | |
| 25 | +// //翼校通的同步 之后还有钉钉的同步等等 | |
| 26 | +// yxyReadService.sync(); | |
| 27 | +// yxyWriteService.sync(); | |
| 28 | +// } | |
| 29 | +//} | ... | ... |