From acd712a65d52689f4378d7958eeb83c874f6db8e Mon Sep 17 00:00:00 2001 From: 2821744554@qq.com <2821744554@qq.com> Date: Tue, 25 Aug 2020 16:59:08 +0800 Subject: [PATCH] 增加网关负载 --- cloud/dahua/src/main/java/com/example/dahua/MyTask.java | 5 ----- cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java | 2 +- cloud/dahua/src/main/java/com/example/dahua/bean/PermissionBean.java | 14 ++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/bean/PermissionFaceBean.java | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/bean/PermissionHKBean.java | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/bean/ResponseBean.java | 34 ++++++++++++++++++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/bean/ResponseBeanList.java | 37 +++++++++++++++++++++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/bean/UserAndPermission.java | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/bean/WeekDay.java | 20 +++++++++++++++++--- cloud/dahua/src/main/java/com/example/dahua/bean/WeekTime.java | 4 ++++ cloud/dahua/src/main/java/com/example/dahua/control/FaceUnifyController.java | 47 +++++++++++++++++++++++++++++++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java | 8 ++++++++ cloud/dahua/src/main/java/com/example/dahua/control/UserControl.java | 6 +++--- cloud/dahua/src/main/java/com/example/dahua/dao/PermissionFaceDao.java | 26 ++++++++++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java | 187 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------- cloud/dahua/src/main/java/com/example/dahua/service/AttendanceImp.java | 70 ---------------------------------------------------------------------- cloud/dahua/src/main/java/com/example/dahua/service/DeviceServiceImp.java | 23 ----------------------- cloud/dahua/src/main/java/com/example/dahua/service/PermissFaceService.java | 19 +++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java | 117 --------------------------------------------------------------------------------------------------------------------- cloud/dahua/src/main/java/com/example/dahua/service/imp/AttendanceImp.java | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/service/imp/DeviceServiceImp.java | 24 ++++++++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/service/imp/PermissFaceServiceImp.java | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/service/imp/UserServiceImp.java | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/dahua/src/main/resources/application.yml | 8 ++++---- cloud/dahua/src/main/resources/mapper/PermissionFaceMapper.xml | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/dahua/src/main/resources/mapper/usermapper.xml | 12 +++++++++++- cloud/fIle-center/src/main/java/com/sincere/file/config/AllowOriginFilter.java | 37 +++++++++++++++++++++++++++++++++++++ cloud/getaway/src/main/resources/application.yml | 8 +++++++- cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------ cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java | 241 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------- cloud/haikangface/src/main/java/com/sincere/haikangface/bean/TeacherBean.java | 36 ++++++++++++++++++++++++++++++++++++ cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/PermissionBean.java | 15 ++++++++++----- cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/UserAndPermission.java | 38 ++++++++++++++++++++++++++++++++++++++ cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/WeekDay.java | 39 ++++++++++++++++++++++++++++++++++++--- cloud/haikangface/src/main/java/com/sincere/haikangface/control/FileControl.java | 15 +++++++++++++++ cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java | 41 ++++++++++++++++++++++++++++++++++++++--- cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java | 24 ++++++++++++++++++++++++ cloud/haikangface/src/main/java/com/sincere/haikangface/utils/AlarmUtils.java | 2 +- cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java | 7 +++++++ cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HKXmlUtils.java | 4 ++-- cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java | 32 ++++++++++++++++++++++++++++++++ cloud/haikangface/src/main/resources/application.yaml | 8 ++++---- cloud/haikangface/src/main/resources/mapper/usermapper.xml | 13 +++++++++++++ cloud/pom.xml | 2 +- cloud/quartz/src/main/java/com/sincere/quartz/Swagger2.java | 36 ++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/control/FaceUnifyController.java | 22 ++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java | 210 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------- cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java | 1102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java | 58 +++++++++++++++++++++++++++++----------------------------- cloud/quartz/src/main/resources/application.yaml | 2 +- 51 files changed, 2386 insertions(+), 1073 deletions(-) create mode 100644 cloud/dahua/src/main/java/com/example/dahua/bean/PermissionFaceBean.java create mode 100644 cloud/dahua/src/main/java/com/example/dahua/bean/PermissionHKBean.java create mode 100644 cloud/dahua/src/main/java/com/example/dahua/bean/ResponseBean.java create mode 100644 cloud/dahua/src/main/java/com/example/dahua/bean/ResponseBeanList.java create mode 100644 cloud/dahua/src/main/java/com/example/dahua/bean/UserAndPermission.java create mode 100644 cloud/dahua/src/main/java/com/example/dahua/control/FaceUnifyController.java create mode 100644 cloud/dahua/src/main/java/com/example/dahua/dao/PermissionFaceDao.java delete mode 100644 cloud/dahua/src/main/java/com/example/dahua/service/AttendanceImp.java delete mode 100644 cloud/dahua/src/main/java/com/example/dahua/service/DeviceServiceImp.java create mode 100644 cloud/dahua/src/main/java/com/example/dahua/service/PermissFaceService.java delete mode 100644 cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java create mode 100644 cloud/dahua/src/main/java/com/example/dahua/service/imp/AttendanceImp.java create mode 100644 cloud/dahua/src/main/java/com/example/dahua/service/imp/DeviceServiceImp.java create mode 100644 cloud/dahua/src/main/java/com/example/dahua/service/imp/PermissFaceServiceImp.java create mode 100644 cloud/dahua/src/main/java/com/example/dahua/service/imp/UserServiceImp.java create mode 100644 cloud/dahua/src/main/resources/mapper/PermissionFaceMapper.xml create mode 100644 cloud/fIle-center/src/main/java/com/sincere/file/config/AllowOriginFilter.java create mode 100644 cloud/haikangface/src/main/java/com/sincere/haikangface/bean/TeacherBean.java create mode 100644 cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/UserAndPermission.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/Swagger2.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/control/FaceUnifyController.java diff --git a/cloud/dahua/src/main/java/com/example/dahua/MyTask.java b/cloud/dahua/src/main/java/com/example/dahua/MyTask.java index a2a2360..ba8086d 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/MyTask.java +++ b/cloud/dahua/src/main/java/com/example/dahua/MyTask.java @@ -1,7 +1,5 @@ package com.example.dahua; -import com.example.dahua.Gate.Gate; -import com.example.dahua.alarmListen.AlarmListenModule; import com.example.dahua.bean.CardBean; import com.example.dahua.bean.DeviceInfoBean; import com.example.dahua.bean.TeacherBean; @@ -14,9 +12,7 @@ import com.example.dahua.module.AutoRegisterModule; import com.example.dahua.module.GateModule; import com.example.dahua.module.LoginModule; import com.example.dahua.service.AttendanceService; -import com.example.dahua.utils.FileUtils; import com.example.dahua.xiananDao.SendRecordDao; -import com.sun.jna.NativeLong; import com.sun.jna.Pointer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; @@ -25,7 +21,6 @@ import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import javax.imageio.ImageIO; -import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; diff --git a/cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java b/cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java index cb7f270..4473484 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java +++ b/cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java @@ -190,7 +190,7 @@ public class MyScheduledTask { File file = new File(filePath); try { if (!file.exists()) { - System.out.println("文件不存在:" + filePath); +// System.out.println("文件不存在:" + filePath); return; } FileInputStream fileInputStream = new FileInputStream(file); diff --git a/cloud/dahua/src/main/java/com/example/dahua/bean/PermissionBean.java b/cloud/dahua/src/main/java/com/example/dahua/bean/PermissionBean.java index b2ece83..215d722 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/bean/PermissionBean.java +++ b/cloud/dahua/src/main/java/com/example/dahua/bean/PermissionBean.java @@ -1,14 +1,28 @@ package com.example.dahua.bean; +import io.swagger.annotations.ApiModelProperty; + import java.io.Serializable; import java.util.List; public class PermissionBean implements Serializable { + @ApiModelProperty(value = "设备id",required = true) private List deviceIds; private List weekDays; + @ApiModelProperty("用逗号隔开,1:通校生,2:住校生,3:全部") + private String studentType; + + public String getStudentType() { + return studentType; + } + + public void setStudentType(String studentType) { + this.studentType = studentType; + } + public List getDeviceIds() { return deviceIds; } diff --git a/cloud/dahua/src/main/java/com/example/dahua/bean/PermissionFaceBean.java b/cloud/dahua/src/main/java/com/example/dahua/bean/PermissionFaceBean.java new file mode 100644 index 0000000..e166521 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/bean/PermissionFaceBean.java @@ -0,0 +1,108 @@ +package com.example.dahua.bean; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; +import org.apache.ibatis.annotations.Result; + +import java.io.Serializable; + +/** + * 人脸设备权限表 + * create table PermissionFace ( + * id int not null PRIMARY KEY , + * permissionJSON varchar(max) not null , + * schoolId int not null , + * perrmissName varchar(50) not null , + * createTime varchar(50) not null , + * updateTime varchar(50) not null , + * ) + */ +@JsonInclude(JsonInclude.Include.NON_EMPTY) +public class PermissionFaceBean implements Serializable { + + @ApiModelProperty(value = "删除和编辑时需要传") + private int id; + + @ApiModelProperty(required = true) + private PermissionBean permissionBean; + + @ApiModelProperty(required = true) + private int schoolId; + + @ApiModelProperty(value = "权限模板名称",required = true) + private String perrmissName; + + private String createTime; + + private String updateTime; + + @ApiModelProperty(notes = "备用字段,不用传") + private String permissionJson; + + @ApiModelProperty(value = "0-新增;1-编辑;2-删除",required = true) + private int type; + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public PermissionBean getPermissionBean() { + return permissionBean; + } + + public void setPermissionBean(PermissionBean permissionBean) { + this.permissionBean = permissionBean; + } + + public int getSchoolId() { + return schoolId; + } + + public void setSchoolId(int schoolId) { + this.schoolId = schoolId; + } + + public String getPerrmissName() { + return perrmissName; + } + + public void setPerrmissName(String perrmissName) { + this.perrmissName = perrmissName; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getPermissionJson() { + return permissionJson; + } + + public void setPermissionJson(String permissionJson) { + this.permissionJson = permissionJson; + } +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/bean/PermissionHKBean.java b/cloud/dahua/src/main/java/com/example/dahua/bean/PermissionHKBean.java new file mode 100644 index 0000000..c1182b2 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/bean/PermissionHKBean.java @@ -0,0 +1,48 @@ +package com.example.dahua.bean; + +import java.util.List; + +/** + * 海康人脸请求参数 + */ +public class PermissionHKBean { + private List deviceIds; + + private String schoolId; + + private String userType;//学生类型 + + private List weekDays; + + public List getDeviceIds() { + return deviceIds; + } + + public void setDeviceIds(List deviceIds) { + this.deviceIds = deviceIds; + } + + public String getSchoolId() { + return schoolId; + } + + public void setSchoolId(String schoolId) { + this.schoolId = schoolId; + } + + public String getUserType() { + return userType; + } + + public void setUserType(String userType) { + this.userType = userType; + } + + public List getWeekDays() { + return weekDays; + } + + public void setWeekDays(List weekDays) { + this.weekDays = weekDays; + } +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/bean/ResponseBean.java b/cloud/dahua/src/main/java/com/example/dahua/bean/ResponseBean.java new file mode 100644 index 0000000..deae939 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/bean/ResponseBean.java @@ -0,0 +1,34 @@ +package com.example.dahua.bean; + +public class ResponseBean { + + private int status; + + private String message; + + private T data; + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/bean/ResponseBeanList.java b/cloud/dahua/src/main/java/com/example/dahua/bean/ResponseBeanList.java new file mode 100644 index 0000000..7764d0f --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/bean/ResponseBeanList.java @@ -0,0 +1,37 @@ +package com.example.dahua.bean; + +import java.io.Serializable; +import java.util.List; + +public class ResponseBeanList implements Serializable { + + private int status; + + private String message; + + private List data; + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/bean/UserAndPermission.java b/cloud/dahua/src/main/java/com/example/dahua/bean/UserAndPermission.java new file mode 100644 index 0000000..7b06720 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/bean/UserAndPermission.java @@ -0,0 +1,58 @@ +package com.example.dahua.bean; + +import java.io.Serializable; +import java.util.List; + +public class UserAndPermission implements Serializable { + + private List deviceIds; + + private int userType; + + private String userIds; + + private List weekDays; + + private String schoolId; + + + public List getDeviceIds() { + return deviceIds; + } + + public void setDeviceIds(List deviceIds) { + this.deviceIds = deviceIds; + } + + public int getUserType() { + return userType; + } + + public void setUserType(int userType) { + this.userType = userType; + } + + public String getUserIds() { + return userIds; + } + + public void setUserIds(String userIds) { + this.userIds = userIds; + } + + public List getWeekDays() { + return weekDays; + } + + public void setWeekDays(List weekDays) { + this.weekDays = weekDays; + } + + public String getSchoolId() { + return schoolId; + } + + public void setSchoolId(String schoolId) { + this.schoolId = schoolId; + } +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/bean/WeekDay.java b/cloud/dahua/src/main/java/com/example/dahua/bean/WeekDay.java index a2a0361..5d3d2af 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/bean/WeekDay.java +++ b/cloud/dahua/src/main/java/com/example/dahua/bean/WeekDay.java @@ -1,19 +1,33 @@ package com.example.dahua.bean; +import io.swagger.annotations.ApiModelProperty; + import java.io.Serializable; import java.util.List; public class WeekDay implements Serializable { - private int weekDay; + @ApiModelProperty("用逗号隔开,1:男,2:女") + private String sex; + + @ApiModelProperty("用逗号隔开,0-6表示周日到周六") + private String weekDay; private List weekTimes; - public int getWeekDay() { + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getWeekDay() { return weekDay; } - public void setWeekDay(int weekDay) { + public void setWeekDay(String weekDay) { this.weekDay = weekDay; } diff --git a/cloud/dahua/src/main/java/com/example/dahua/bean/WeekTime.java b/cloud/dahua/src/main/java/com/example/dahua/bean/WeekTime.java index 22ceea3..a7a012c 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/bean/WeekTime.java +++ b/cloud/dahua/src/main/java/com/example/dahua/bean/WeekTime.java @@ -1,11 +1,15 @@ package com.example.dahua.bean; +import io.swagger.annotations.ApiModelProperty; + import java.io.Serializable; public class WeekTime implements Serializable { + @ApiModelProperty("例: 10:00:00") private String startTime; + @ApiModelProperty("例: 10:00:00") private String endTime; public String getStartTime() { diff --git a/cloud/dahua/src/main/java/com/example/dahua/control/FaceUnifyController.java b/cloud/dahua/src/main/java/com/example/dahua/control/FaceUnifyController.java new file mode 100644 index 0000000..d6dd919 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/control/FaceUnifyController.java @@ -0,0 +1,47 @@ +package com.example.dahua.control; + +import com.alibaba.fastjson.JSON; +import com.example.dahua.bean.PermissionBean; +import com.example.dahua.bean.PermissionFaceBean; +import com.example.dahua.bean.ResponseBean; +import com.example.dahua.bean.ResponseBeanList; +import com.example.dahua.service.PermissFaceService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.io.UnsupportedEncodingException; + +@Api(tags = "人脸统一处理接口") +@RestController +@RequestMapping(value = "faceUnify/*",produces = "text/plain;charset=UTF-8") +@Slf4j +public class FaceUnifyController { + + @Autowired + PermissFaceService permissFaceService; + + @RequestMapping(value = "sendPermission",method = RequestMethod.POST) + @ApiOperation("添加/编辑/删除权限") + public String sendPermission(@RequestBody PermissionFaceBean permissionFaceBean) throws UnsupportedEncodingException { + return JSON.toJSONString(permissFaceService.addPermissionFace(permissionFaceBean)); + } + + + @RequestMapping(value = "getPermissionDetail",method = RequestMethod.POST) + @ApiOperation("获取权限详情") + @ResponseBody + public String getPermissionDetail(@RequestParam("permissionId")int permissionId) throws UnsupportedEncodingException { + log.error("{}",JSON.toJSONString(permissFaceService.getPermissionDetail(permissionId))); + return JSON.toJSONString(permissFaceService.getPermissionDetail(permissionId)); + } + + @RequestMapping(value = "getPermissions",method = RequestMethod.POST) + @ApiOperation("获取权限列表") + public String getPermissions(@RequestParam("schoolId")int schoolId) throws UnsupportedEncodingException { + return JSON.toJSONString(permissFaceService.getPermissions(schoolId)); + } + +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java b/cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java index 817337c..3615b39 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java +++ b/cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java @@ -4,12 +4,14 @@ import com.example.dahua.MyTask; import com.example.dahua.async.SendUserInfoTask; import com.example.dahua.attendance.Attendance; import com.example.dahua.bean.AttendanceBean; +import com.example.dahua.bean.PermissionBean; import com.example.dahua.bean.TeacherBean; import com.example.dahua.bean.UploadImg; import com.example.dahua.dao.UserDao; import com.example.dahua.lib.ToolKits; import com.example.dahua.module.GateModule; import com.example.dahua.service.UserService; +import com.example.dahua.utils.HttpUtils; import com.sun.jna.Memory; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -63,6 +65,12 @@ public class FileControl { return "0"; } + @RequestMapping(value = "sendPermission", method = RequestMethod.POST) + @ApiOperation(value = "设置权限") + public boolean sendPermission(@RequestBody PermissionBean permissionBean) { + userService.sendPermission(permissionBean); + return true; + } @RequestMapping(method = RequestMethod.POST, value = "uploadImgToDev") public String uploadImgToDev(@RequestParam("file") MultipartFile file, @RequestParam("schoolId") String schoolId, @RequestParam("studentCode") String studentCode, diff --git a/cloud/dahua/src/main/java/com/example/dahua/control/UserControl.java b/cloud/dahua/src/main/java/com/example/dahua/control/UserControl.java index 984bada..78e8bba 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/control/UserControl.java +++ b/cloud/dahua/src/main/java/com/example/dahua/control/UserControl.java @@ -4,6 +4,7 @@ import com.example.dahua.MyTask; import com.example.dahua.async.ImageUtils; import com.example.dahua.async.SendUserInfoTask; import com.example.dahua.bean.PermissionBean; +import com.example.dahua.bean.UserAndPermission; import com.example.dahua.lib.CompressPic; import com.example.dahua.service.UserService; import com.example.dahua.utils.*; @@ -22,6 +23,7 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; @@ -60,11 +62,9 @@ public class UserControl { @RequestMapping(value = "sendPermission", method = RequestMethod.POST) @ApiOperation(value = "设置权限") public boolean sendPermission(@RequestBody PermissionBean permissionBean) { - userService.sendPermission(permissionBean); - return true; + return HttpUtils.sendPermission(permissionBean); } - @RequestMapping(value = "imgsSend", method = RequestMethod.GET) @ApiOperation(value = "照片下放") public boolean imgsSend(@RequestParam("schoolId") String schoolId, @RequestParam("type") int type) { diff --git a/cloud/dahua/src/main/java/com/example/dahua/dao/PermissionFaceDao.java b/cloud/dahua/src/main/java/com/example/dahua/dao/PermissionFaceDao.java new file mode 100644 index 0000000..60bb8e8 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/dao/PermissionFaceDao.java @@ -0,0 +1,26 @@ +package com.example.dahua.dao; + +import com.example.dahua.bean.PermissionFaceBean; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface PermissionFaceDao { + + + public int addPermissionFace(PermissionFaceBean permissionFaceBean); + + public int updatePermissionFace(PermissionFaceBean permissionFaceBean); + + public int deletePermissionFace(PermissionFaceBean permissionFaceBean); + + public PermissionFaceBean getPerFaceWithId(@Param("id")int id); + + public List getPermissFaces(@Param("schoolId") int schoolId); + + public List getPermissionDetail(@Param("permissionId") int permissionId); + +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java b/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java index c6cc632..59ffd72 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java +++ b/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java @@ -1,7 +1,10 @@ package com.example.dahua.module; import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.example.dahua.bean.PermissionBean; import com.example.dahua.bean.WeekDay; @@ -189,8 +192,8 @@ public class GateModule { accessCardInfo.sznDoors[0] = 0; accessCardInfo.sznDoors[1] = 1; accessCardInfo.nTimeSectionNum = 2; // 与门数对应 - accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效 - accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效 + accessCardInfo.sznTimeSectionNo[0] = 120; // 表示第一个门全天有效 + accessCardInfo.sznTimeSectionNo[1] = 120; // 表示第二个门全天有效 // 卡状态 accessCardInfo.emStatus = cardStatus; @@ -254,61 +257,151 @@ public class GateModule { * 门禁刷卡时间段设置 */ public static void setAccessTimeSchedule(LLong lLong, PermissionBean permissionBean) { + try { - CFG_ACCESS_TIMESCHEDULE_INFO msg = new CFG_ACCESS_TIMESCHEDULE_INFO(); - String strCmd = NetSDKLib.CFG_CMD_ACCESSTIMESCHEDULE; - int nChannel = 120; // 通道号 - + CFG_ACCESS_TIMESCHEDULE_INFO msg = new CFG_ACCESS_TIMESCHEDULE_INFO(); + String strCmd = NetSDKLib.CFG_CMD_ACCESSTIMESCHEDULE; + int nChannel = 120; // 通道号 // msg.stuTimeWeekDay[0].stuTimeSection[0].dwRecordMask - String name = "权限模板"; - System.arraycopy(name.getBytes(), 0, msg.szName, 0, name.getBytes().length); - - List weekDays = permissionBean.getWeekDays(); - - for (WeekDay weekDay : - weekDays) { - List weekTimes = weekDay.getWeekTimes(); - for (int i = 0; i < weekTimes.size(); i++) { - WeekTime weekTime = weekTimes.get(i); - String startTime = weekTime.getStartTime(); - String endTime = weekTime.getEndTime(); - msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nBeginHour = Integer.parseInt(startTime.split(":")[0]); - msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nBeginMin = Integer.parseInt(startTime.split(":")[1]); - msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nBeginSec = 0; - - msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nEndHour = Integer.parseInt(endTime.split(":")[0]); - msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nEndMin = Integer.parseInt(endTime.split(":")[1]); - msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nEndSec = 0; - + String name = "3"; + System.arraycopy(name.getBytes(), 0, msg.szName, 0, name.getBytes().length); + msg.bEnable = 1; + + List weekDays = permissionBean.getWeekDays(); + Map> map = new HashMap<>(); + + for (WeekDay weekDay : + weekDays) { + //整理时间 + initWeedayAndTimes(weekDay, map); + //设置周计划信息 + for (Map.Entry> entry : + map.entrySet()) { + + int weekDayIndex = entry.getKey(); + + List weekTimes = entry.getValue(); + + for (int i = 0; i < weekTimes.size(); i++) { + WeekTime weekTime = weekTimes.get(i); + String startTime = weekTime.getStartTime(); + String endTime = weekTime.getEndTime(); + msg.stuTimeWeekDay[weekDayIndex].stuTimeSection[i].nBeginHour = Integer.parseInt(startTime.split(":")[0]); + msg.stuTimeWeekDay[weekDayIndex].stuTimeSection[i].nBeginMin = Integer.parseInt(startTime.split(":")[1]); + msg.stuTimeWeekDay[weekDayIndex].stuTimeSection[i].nBeginSec = 0; + + msg.stuTimeWeekDay[weekDayIndex].stuTimeSection[i].nEndHour = Integer.parseInt(endTime.split(":")[0]); + msg.stuTimeWeekDay[weekDayIndex].stuTimeSection[i].nEndMin = Integer.parseInt(endTime.split(":")[1]); + msg.stuTimeWeekDay[weekDayIndex].stuTimeSection[i].nEndSec = 0; + } + + } } - } + + + /* for (WeekDay weekDay : + weekDays) { + List weekTimes = weekDay.getWeekTimes(); + for (int i = 0; i < weekTimes.size(); i++) { + WeekTime weekTime = weekTimes.get(i); + String startTime = weekTime.getStartTime(); + String endTime = weekTime.getEndTime(); + msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nBeginHour = Integer.parseInt(startTime.split(":")[0]); + msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nBeginMin = Integer.parseInt(startTime.split(":")[1]); + msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nBeginSec = 0; + + msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nEndHour = Integer.parseInt(endTime.split(":")[0]); + msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nEndMin = Integer.parseInt(endTime.split(":")[1]); + msg.stuTimeWeekDay[weekDay.getWeekDay()].stuTimeSection[i].nEndSec = 0; + + } + }*/ // 获取 // if (ToolKits.GetDevConfig(lLong, nChannel, strCmd, msg)) { - System.out.println("Enable:" + msg.bEnable); - try { - System.out.println("自定义名称:" + new String(msg.szName, "UTF-8").trim()); - } catch (UnsupportedEncodingException e) { +// System.out.println("Enable:" + msg.bEnable); +// try { +// System.out.println("自定义名称:" + new String(msg.szName, "UTF-8").trim()); +// } catch (UnsupportedEncodingException e) { +// e.printStackTrace(); +// } +// for (int i = 0; i < 7; i++) { +// for (int j = 0; j < 4; j++) { +// System.out.println("dwRecordMask:" + msg.stuTimeWeekDay[i].stuTimeSection[j].dwRecordMask); +// System.out.println(msg.stuTimeWeekDay[i].stuTimeSection[j].startTime() + "-" + msg.stuTimeWeekDay[i].stuTimeSection[j].endTime() + "\n"); +// } +// } +// msg.write(); + boolean set = ToolKits.SetDevConfig(lLong, nChannel, strCmd, msg); +// msg.read(); + // 设置 + if (set) { + System.out.println("Set AccessTimeSchedule Succeed!"); + } else { + System.err.println("Set AccessTimeSchedule Failed!" + ToolKits.getErrorCodePrint()); + } +// } else { +// System.err.println("Get AccessTimeSchedule Failed!" + ToolKits.getErrorCodePrint()); +// } + } catch (Exception e) { e.printStackTrace(); } - for (int i = 0; i < 7; i++) { - for (int j = 0; j < 4; j++) { - System.out.println("dwRecordMask:" + msg.stuTimeWeekDay[i].stuTimeSection[j].dwRecordMask); - System.out.println(msg.stuTimeWeekDay[i].stuTimeSection[j].startTime() + "-" + msg.stuTimeWeekDay[i].stuTimeSection[j].endTime() + "\n"); + } + + private static void initWeedayAndTimes(WeekDay weekDay, Map> map) { + + String weekDayStr = weekDay.getWeekDay(); + String[] weekDays = weekDayStr.split(","); + + List weekTimes = weekDay.getWeekTimes(); + + for (int i = 0; i < weekDays.length; i++) { + int weekDayIndex = Integer.parseInt(weekDays[i]); + if (map.containsKey(weekDayIndex)) {//周已经有时间段 + List weekTimeList = map.get(weekDayIndex); + for (WeekTime wee : + weekTimes) { + weekTimeList.add(wee); + } + map.put(weekDayIndex, weekTimeList); + } else { + List weekTimes1 = new ArrayList<>(); + weekTimes1.addAll(weekTimes); + map.put(weekDayIndex, weekTimes1); } } - msg.write(); - boolean set = ToolKits.SetDevConfig(lLong, nChannel, strCmd, msg); - msg.read(); - // 设置 - if (set) { - System.out.println("Set AccessTimeSchedule Succeed!"); + + } + + public static void getAccessTimeSchedule1(LLong lLong) { + CFG_ACCESS_TIMESCHEDULE_INFO msg = new CFG_ACCESS_TIMESCHEDULE_INFO(); + String strCmd = NetSDKLib.CFG_CMD_ACCESSTIMESCHEDULE; + int nChannel = 120; // 通道号 + + // 获取 + if (ToolKits.GetDevConfig(lLong, nChannel, strCmd, msg)) { + System.out.println("Enable:" + msg.bEnable); + try { + System.out.println("自定义名称:" + new String(msg.szName, "utf-8").trim()); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + for (int i = 0; i < 7; i++) { + for (int j = 0; j < 4; j++) { + System.out.println("dwRecordMask:" + msg.stuTimeWeekDay[i].stuTimeSection[j].dwRecordMask); + System.out.println(msg.stuTimeWeekDay[i].stuTimeSection[j].startTime() + "-" + + msg.stuTimeWeekDay[i].stuTimeSection[j].endTime() + "\n"); + } + } + // 设置 + if (ToolKits.SetDevConfig(lLong, nChannel, strCmd, msg)) { + System.out.println("Set AccessTimeSchedule Succeed!"); + } else { + System.err.println("Set AccessTimeSchedule Failed!" + ToolKits.getErrorCodePrint()); + } } else { - System.err.println("Set AccessTimeSchedule Failed!" + ToolKits.getErrorCodePrint()); + System.err.println("Get AccessTimeSchedule Failed!" + ToolKits.getErrorCodePrint()); } -// } else { -// System.err.println("Get AccessTimeSchedule Failed!" + ToolKits.getErrorCodePrint()); -// } } /** @@ -450,8 +543,8 @@ public class GateModule { accessCardInfo.sznDoors[0] = 0; accessCardInfo.sznDoors[1] = 1; accessCardInfo.nTimeSectionNum = 2; // 与门数对应 - accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效 - accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效 + accessCardInfo.sznTimeSectionNo[0] = 120; // 表示第一个门全天有效 + accessCardInfo.sznTimeSectionNo[1] = 120; // 表示第二个门全天有效 // 卡状态 accessCardInfo.emStatus = cardStatus; diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/AttendanceImp.java b/cloud/dahua/src/main/java/com/example/dahua/service/AttendanceImp.java deleted file mode 100644 index 28215f3..0000000 --- a/cloud/dahua/src/main/java/com/example/dahua/service/AttendanceImp.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.example.dahua.service; - -import com.example.dahua.bean.AttendanceBean; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.jdbc.core.BeanPropertyRowMapper; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -public class AttendanceImp implements AttendanceService { - - @Autowired - JdbcTemplate jdbcTemplate; - - @Override - public int insert(String clint_id, String clint_type, String ip, String port, String intime, String school_id, String state) { - try { - String selectSql = String.format("select * from SZ_Attendance where clint_id =\'%s\'", clint_id); - List attendanceBeans = jdbcTemplate.query(selectSql, new Object[]{}, new BeanPropertyRowMapper(AttendanceBean.class)); - if (attendanceBeans.size() == 0) {//设备不存在 -// insert SZ_Attendance(clint_id, clint_type, ip, port, intime, school_id, state) -// * values(@clint_id,@clint_type,@ip,@port,GETDATE(),-1,1) - 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); - return jdbcTemplate.update(insertSql); - } else {//设备 已经存在,更新在线状态 - updateConnectStateWithDevid(1, clint_id); - } - } catch (Exception e) { - e.printStackTrace(); - } - return 0; - } - - /** - * @param isConnection 连接状态 - * @param ip - * @param port - * @return - */ - @Override - public int updateConnectState(int isConnection, String ip, String port) { - - int index = 0; - try { - String updateSql = String.format(" update SZ_Attendance set isConnection = %d where ip = '%s' and port = '%s' ", isConnection, ip, port); - index = jdbcTemplate.update(updateSql); -// System.out.println("updateIndex:"+index+" isConnection:"+isConnection+"updateSql:"+updateSql); - } catch (Exception e) { - e.printStackTrace(); - } - - return index; - } - - @Override - public int updateConnectStateWithDevid(int isConnection, String clint_id) { - int index = 0; - try { - String updateSql = String.format(" update SZ_Attendance set isConnection = %d where clint_id = '%s' ", isConnection, clint_id); - index = jdbcTemplate.update(updateSql); -// System.out.println("updateIndex:"+index+" isConnection:"+isConnection+"updateSql:"+updateSql); - } catch (Exception e) { - e.printStackTrace(); - } - - return index; - } -} diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/DeviceServiceImp.java b/cloud/dahua/src/main/java/com/example/dahua/service/DeviceServiceImp.java deleted file mode 100644 index a9d86a9..0000000 --- a/cloud/dahua/src/main/java/com/example/dahua/service/DeviceServiceImp.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.example.dahua.service; - -import com.example.dahua.MyTask; -import com.example.dahua.module.DeviceControlModule; -import org.springframework.stereotype.Repository; -import org.springframework.stereotype.Service; - -@Repository -@Service -public class DeviceServiceImp implements DeviceService { - - @Override - public boolean restart(String deviceId) { - return DeviceControlModule.reboot(MyTask.lLongMap.get(deviceId)); - } - - @Override - public boolean setDVRIPConfig(String deviceId, String ip, int port) { - - return DeviceControlModule.setDVRIPConfig(deviceId, ip, port); - } - -} diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/PermissFaceService.java b/cloud/dahua/src/main/java/com/example/dahua/service/PermissFaceService.java new file mode 100644 index 0000000..9cd6910 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/service/PermissFaceService.java @@ -0,0 +1,19 @@ +package com.example.dahua.service; + +import com.example.dahua.bean.PermissionFaceBean; +import com.example.dahua.bean.ResponseBean; +import com.example.dahua.bean.ResponseBeanList; + +import java.util.List; + +public interface PermissFaceService { + + + public ResponseBean addPermissionFace(PermissionFaceBean permissionFaceBean); + + public ResponseBeanList getPermissions(int schoolId); + + public ResponseBeanList getPermissionDetail(int permissionId); + + +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java b/cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java deleted file mode 100644 index 618829e..0000000 --- a/cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.example.dahua.service; - -import com.example.dahua.MyTask; -import com.example.dahua.async.SendUserInfoTask; -import com.example.dahua.bean.*; -import com.example.dahua.dao.UserDao; -import com.example.dahua.lib.NetSDKLib; -import com.example.dahua.module.GateModule; -import org.apache.commons.lang.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Repository; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Repository -@Service -public class UserServiceImp implements UserService { - - @Autowired - UserDao userDao; - - @Autowired - SendUserInfoTask myTask; - - @Override - public List getAttendanceBeans(String schoolId, String clint_type, String devid) { - - if (!StringUtils.isEmpty(devid)) return userDao.getAttendanceBeanWithId(schoolId, clint_type, devid); - - return userDao.getAttendanceBeans(schoolId, clint_type); - } - - @Override - public UserInfoBean getUserInfo(String schoolId, String studentCode) { - return userDao.getUserInfo(schoolId, studentCode); - } - - /** - * 单个用户信息下发 - * - * @param file - * @param schoolId - * @param studentCode - * @param clint_type - * @return - */ - @Override - public boolean uploadImgAndUserInfo(String file, String schoolId, String studentCode, String clint_type, int userType, String devid) { - List attendanceBeans = getAttendanceBeans(schoolId, clint_type, devid);//获取学校下的大华设备 - System.out.println("设备数量:" + attendanceBeans.size()); - UserInfoBean userInfoBean = null; - try { - if (userType == 2) { - //根据文件命名来判断学籍号 - String studentCodes = file.split("\\.")[0]; - String[] studentInfo = studentCodes.split("_"); - - if (studentInfo.length > 1) {//附属卡 - - String studentCodeF = studentInfo[0]; - String CardType = studentInfo[1]; - userInfoBean = getUserInfo(schoolId, studentCodeF); - String cardNum = userDao.getCardNum(userInfoBean.getStudent_id(), CardType); - userInfoBean.setStudent_num(cardNum); - - } else { - - userInfoBean = getUserInfo(schoolId, studentCode);//获取用户信息 - - } - } else if (userType == 1) { - TeacherBean teacher = userDao.getTeacher(schoolId, studentCode); - if (null != teacher) { - userInfoBean = new UserInfoBean(); - userInfoBean.setStudent_num(teacher.getTeacher_num()); - userInfoBean.setName(teacher.getName()); - userInfoBean.setUser_id(teacher.getUser_id()); - userInfoBean.setStudentcode(teacher.getNum()); - userInfoBean.setStudent_id(teacher.getTeacher_id()); - } - } - - myTask.doTaskOne(file, attendanceBeans, userInfoBean, schoolId, -1, userType); - } catch (Exception e) { - e.printStackTrace(); - } - return true; - } - - /** - * 照片下放 - * - * @param schoolId - * @param clint_type - * @param type 0:主卡 1:副卡 - */ - @Override - public void sendUserInfos(String schoolId, String clint_type, int type) { - myTask.doTaskSendUserInfos(schoolId, clint_type, type, -1); - } - - @Override - public boolean sendPermission(PermissionBean permissionBean) { - - List deviceIds = permissionBean.getDeviceIds(); - for (String deviceId : - deviceIds) { - NetSDKLib.LLong loginHandleLong = MyTask.lLongMap.get(deviceId); - GateModule.setAccessTimeSchedule(loginHandleLong,permissionBean); - } - - - return false; - } - -} diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/imp/AttendanceImp.java b/cloud/dahua/src/main/java/com/example/dahua/service/imp/AttendanceImp.java new file mode 100644 index 0000000..941bc85 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/service/imp/AttendanceImp.java @@ -0,0 +1,71 @@ +package com.example.dahua.service.imp; + +import com.example.dahua.bean.AttendanceBean; +import com.example.dahua.service.AttendanceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.BeanPropertyRowMapper; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class AttendanceImp implements AttendanceService { + + @Autowired + JdbcTemplate jdbcTemplate; + + @Override + public int insert(String clint_id, String clint_type, String ip, String port, String intime, String school_id, String state) { + try { + String selectSql = String.format("select * from SZ_Attendance where clint_id =\'%s\'", clint_id); + List attendanceBeans = jdbcTemplate.query(selectSql, new Object[]{}, new BeanPropertyRowMapper(AttendanceBean.class)); + if (attendanceBeans.size() == 0) {//设备不存在 +// insert SZ_Attendance(clint_id, clint_type, ip, port, intime, school_id, state) +// * values(@clint_id,@clint_type,@ip,@port,GETDATE(),-1,1) + 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); + return jdbcTemplate.update(insertSql); + } else {//设备 已经存在,更新在线状态 + updateConnectStateWithDevid(1, clint_id); + } + } catch (Exception e) { + e.printStackTrace(); + } + return 0; + } + + /** + * @param isConnection 连接状态 + * @param ip + * @param port + * @return + */ + @Override + public int updateConnectState(int isConnection, String ip, String port) { + + int index = 0; + try { + String updateSql = String.format(" update SZ_Attendance set isConnection = %d where ip = '%s' and port = '%s' ", isConnection, ip, port); + index = jdbcTemplate.update(updateSql); +// System.out.println("updateIndex:"+index+" isConnection:"+isConnection+"updateSql:"+updateSql); + } catch (Exception e) { + e.printStackTrace(); + } + + return index; + } + + @Override + public int updateConnectStateWithDevid(int isConnection, String clint_id) { + int index = 0; + try { + String updateSql = String.format(" update SZ_Attendance set isConnection = %d where clint_id = '%s' ", isConnection, clint_id); + index = jdbcTemplate.update(updateSql); +// System.out.println("updateIndex:"+index+" isConnection:"+isConnection+"updateSql:"+updateSql); + } catch (Exception e) { + e.printStackTrace(); + } + + return index; + } +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/imp/DeviceServiceImp.java b/cloud/dahua/src/main/java/com/example/dahua/service/imp/DeviceServiceImp.java new file mode 100644 index 0000000..dc9b0ea --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/service/imp/DeviceServiceImp.java @@ -0,0 +1,24 @@ +package com.example.dahua.service.imp; + +import com.example.dahua.MyTask; +import com.example.dahua.module.DeviceControlModule; +import com.example.dahua.service.DeviceService; +import org.springframework.stereotype.Repository; +import org.springframework.stereotype.Service; + +@Repository +@Service +public class DeviceServiceImp implements DeviceService { + + @Override + public boolean restart(String deviceId) { + return DeviceControlModule.reboot(MyTask.lLongMap.get(deviceId)); + } + + @Override + public boolean setDVRIPConfig(String deviceId, String ip, int port) { + + return DeviceControlModule.setDVRIPConfig(deviceId, ip, port); + } + +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/imp/PermissFaceServiceImp.java b/cloud/dahua/src/main/java/com/example/dahua/service/imp/PermissFaceServiceImp.java new file mode 100644 index 0000000..88067cd --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/service/imp/PermissFaceServiceImp.java @@ -0,0 +1,152 @@ +package com.example.dahua.service.imp; + +import com.alibaba.fastjson.JSON; +import com.example.dahua.bean.*; +import com.example.dahua.dao.PermissionFaceDao; +import com.example.dahua.dao.UserDao; +import com.example.dahua.service.PermissFaceService; +import com.example.dahua.utils.HttpUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.List; + +@Slf4j +@Service +public class PermissFaceServiceImp implements PermissFaceService { + + @Autowired + PermissionFaceDao permissionFaceDao; + + @Autowired + UserDao userDao; + + @Override + public ResponseBean addPermissionFace(PermissionFaceBean permissionFaceBean) { + ResponseBean responseBean = new ResponseBean<>(); + try { + int id = permissionFaceBean.getId(); + + String permissName = permissionFaceBean.getPerrmissName(); + + int schoolId = permissionFaceBean.getSchoolId(); + + PermissionBean permissionBean = permissionFaceBean.getPermissionBean(); + + int type = permissionFaceBean.getType(); + if (null != permissionBean) + permissionFaceBean.setPermissionJson(JSON.toJSON(permissionBean).toString()); + + if ((type == 0 || type == 1) && (StringUtils.isEmpty(permissName) || schoolId == 0 || (null != permissionBean && permissionBean.getWeekDays().size() == 0))) { + + responseBean.setStatus(0); + responseBean.setMessage("传入的参数错误"); + responseBean.setData(null); + return responseBean; + } + switch (type) { + case 0://新增 + permissionFaceDao.addPermissionFace(permissionFaceBean); + responseBean.setMessage("添加权限模板成功"); + responseBean.setData(null); + sendPermiss2Dev(permissionFaceBean); + responseBean.setStatus(1); + break; + case 1://编辑 + if (null == permissionFaceDao.getPerFaceWithId(id)) { + responseBean.setMessage("模板不存在"); + } else { + responseBean.setMessage("编辑权限模板成功"); + permissionFaceDao.updatePermissionFace(permissionFaceBean); + } + responseBean.setData(null); + sendPermiss2Dev(permissionFaceBean); + responseBean.setStatus(1); + break; + case 2://删除 + if (null == permissionFaceDao.getPerFaceWithId(id)) { + responseBean.setMessage("模板不存在"); + } else { + permissionFaceDao.deletePermissionFace(permissionFaceBean); + responseBean.setMessage("删除权限模板成功"); + } + responseBean.setData(null); + responseBean.setStatus(1); + break; + } + } catch (Exception e) { + e.printStackTrace(); + responseBean.setStatus(0); + responseBean.setMessage(e.getMessage()); + responseBean.setData(null); + } + return responseBean; + } + + /** + * 下发权限到设备 + * + * @param permissionFaceBean + */ + private void sendPermiss2Dev(PermissionFaceBean permissionFaceBean) { + int schoolId = permissionFaceBean.getSchoolId(); + + PermissionBean permissionBean = permissionFaceBean.getPermissionBean(); + + //查询海康人脸权限一体机 + List attendanceBeanList = userDao.getAttendanceBeans(schoolId + "", "28"); + + //查询大华人脸权限一体机 + List attendanceBeanList1 = userDao.getAttendanceBeans(schoolId + "", "29"); + + if (null != attendanceBeanList && attendanceBeanList.size() > 0) { + if (null != permissionBean) + HttpUtils.sendPermission2HK(permissionFaceBean); + } + + if (null != attendanceBeanList1 && attendanceBeanList1.size() > 0) { + if (null != permissionBean) + HttpUtils.sendPermission(permissionBean); + } + + } + + + + + @Override + public ResponseBeanList getPermissions(int schoolId) { + ResponseBeanList responseBeanList = new ResponseBeanList(); + try { + + List permissionFaceBeans = permissionFaceDao.getPermissFaces(schoolId); + + responseBeanList.setData(permissionFaceBeans); + + responseBeanList.setMessage(""); + responseBeanList.setStatus(1); + } catch (Exception e) { + e.printStackTrace(); + } + return responseBeanList; + } + + @Override + public ResponseBeanList getPermissionDetail(int permissionId) { + ResponseBeanList responseBeanList = new ResponseBeanList(); + try { + + List permissionFaceBeans = permissionFaceDao.getPermissionDetail(permissionId); + + responseBeanList.setData(permissionFaceBeans); + + responseBeanList.setMessage(""); + responseBeanList.setStatus(1); + } catch (Exception e) { + e.printStackTrace(); + } + return responseBeanList; + } +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserServiceImp.java b/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserServiceImp.java new file mode 100644 index 0000000..cc738bf --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserServiceImp.java @@ -0,0 +1,120 @@ +package com.example.dahua.service.imp; + +import com.example.dahua.MyTask; +import com.example.dahua.async.SendUserInfoTask; +import com.example.dahua.bean.*; +import com.example.dahua.dao.UserDao; +import com.example.dahua.lib.NetSDKLib; +import com.example.dahua.module.GateModule; +import com.example.dahua.service.UserService; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Repository +@Service +public class UserServiceImp implements UserService { + + @Autowired + UserDao userDao; + + @Autowired + SendUserInfoTask myTask; + + @Override + public List getAttendanceBeans(String schoolId, String clint_type, String devid) { + + if (!StringUtils.isEmpty(devid)) return userDao.getAttendanceBeanWithId(schoolId, clint_type, devid); + + return userDao.getAttendanceBeans(schoolId, clint_type); + } + + @Override + public UserInfoBean getUserInfo(String schoolId, String studentCode) { + return userDao.getUserInfo(schoolId, studentCode); + } + + /** + * 单个用户信息下发 + * + * @param file + * @param schoolId + * @param studentCode + * @param clint_type + * @return + */ + @Override + public boolean uploadImgAndUserInfo(String file, String schoolId, String studentCode, String clint_type, int userType, String devid) { + List attendanceBeans = getAttendanceBeans(schoolId, clint_type, devid);//获取学校下的大华设备 + System.out.println("设备数量:" + attendanceBeans.size()); + UserInfoBean userInfoBean = null; + try { + if (userType == 2) { + //根据文件命名来判断学籍号 + String studentCodes = file.split("\\.")[0]; + String[] studentInfo = studentCodes.split("_"); + + if (studentInfo.length > 1) {//附属卡 + + String studentCodeF = studentInfo[0]; + String CardType = studentInfo[1]; + userInfoBean = getUserInfo(schoolId, studentCodeF); + String cardNum = userDao.getCardNum(userInfoBean.getStudent_id(), CardType); + userInfoBean.setStudent_num(cardNum); + + } else { + + userInfoBean = getUserInfo(schoolId, studentCode);//获取用户信息 + + } + } else if (userType == 1) { + TeacherBean teacher = userDao.getTeacher(schoolId, studentCode); + if (null != teacher) { + userInfoBean = new UserInfoBean(); + userInfoBean.setStudent_num(teacher.getTeacher_num()); + userInfoBean.setName(teacher.getName()); + userInfoBean.setUser_id(teacher.getUser_id()); + userInfoBean.setStudentcode(teacher.getNum()); + userInfoBean.setStudent_id(teacher.getTeacher_id()); + } + } + + myTask.doTaskOne(file, attendanceBeans, userInfoBean, schoolId, -1, userType); + } catch (Exception e) { + e.printStackTrace(); + } + return true; + } + + /** + * 照片下放 + * + * @param schoolId + * @param clint_type + * @param type 0:主卡 1:副卡 + */ + @Override + public void sendUserInfos(String schoolId, String clint_type, int type) { + myTask.doTaskSendUserInfos(schoolId, clint_type, type, -1); + } + + @Override + public boolean sendPermission(PermissionBean permissionBean) { + + List deviceIds = permissionBean.getDeviceIds(); + if (null != deviceIds) + for (String deviceId : + deviceIds) { + NetSDKLib.LLong loginHandleLong = MyTask.lLongMap.get(deviceId); + GateModule.setAccessTimeSchedule(loginHandleLong, permissionBean); + GateModule.getAccessTimeSchedule1(loginHandleLong); + } + + + return false; + } + +} diff --git a/cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java b/cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java index d2be633..5058908 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java +++ b/cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java @@ -1,5 +1,8 @@ package com.example.dahua.utils; +import com.example.dahua.bean.PermissionBean; +import com.example.dahua.bean.PermissionFaceBean; +import com.example.dahua.bean.PermissionHKBean; import com.example.dahua.lib.CompressPic; import com.example.dahua.lib.FilePath; import org.springframework.core.io.FileSystemResource; @@ -69,4 +72,52 @@ public class HttpUtils { } + public static boolean sendPermission(PermissionBean permissionBean) { + String url = "http://121.40.109.21:8991/file/sendPermission"; + RestTemplate restTemplate = new RestTemplate(); + + HttpHeaders headers = new HttpHeaders(); + + MediaType mediaType = MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE); + + headers.setContentType(mediaType); + + HttpEntity httpEntity = new HttpEntity<>(permissionBean, headers); + + ResponseEntity responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); + + System.out.println("大华设备下发权限:" + responseEntity.getBody()); + return responseEntity.getBody().equals("1"); + } + + public static void sendPermission2HK(PermissionFaceBean permissionFaceBean) { + String url = "http://114.55.30.100:8089/facereco/sendPermiss"; + PermissionBean permissionBean = permissionFaceBean.getPermissionBean(); + + if (null!=permissionBean){ + + PermissionHKBean permissionHKBean = new PermissionHKBean(); + + permissionHKBean.setDeviceIds(permissionBean.getDeviceIds()); + permissionHKBean.setSchoolId(permissionFaceBean.getSchoolId()+""); + permissionHKBean.setUserType("2"); + permissionHKBean.setWeekDays(permissionBean.getWeekDays()); + + RestTemplate restTemplate = new RestTemplate(); + + HttpHeaders headers = new HttpHeaders(); + + MediaType mediaType = MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE); + + headers.setContentType(mediaType); + + HttpEntity httpEntity = new HttpEntity<>(permissionHKBean, headers); + + ResponseEntity responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); + + System.out.println("海康设备下发权限:" + responseEntity.getBody()); + + } + + } } diff --git a/cloud/dahua/src/main/resources/application.yml b/cloud/dahua/src/main/resources/application.yml index 216e376..d0aaf6a 100644 --- a/cloud/dahua/src/main/resources/application.yml +++ b/cloud/dahua/src/main/resources/application.yml @@ -14,10 +14,10 @@ spring: password: RQminVCJota3H1u8bBYH jdbc-url: jdbc:sqlserver://116.62.155.137:33419;database=SmartCampus driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver - # username: SZJXTUSER - # password: xst200919 - # jdbc-url: jdbc:sqlserver://60.190.202.57:14333;database=SmartCampusSZ - # driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver +# username: SZJXTUSER +# password: xst200919 +# jdbc-url: jdbc:sqlserver://60.190.202.57:14333;database=SmartCampusSZ +# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver xiaoan: jdbc-url: jdbc:sqlserver://116.62.241.27:33419;database=xiaoanhxy username: szjxtuser diff --git a/cloud/dahua/src/main/resources/mapper/PermissionFaceMapper.xml b/cloud/dahua/src/main/resources/mapper/PermissionFaceMapper.xml new file mode 100644 index 0000000..6f4833e --- /dev/null +++ b/cloud/dahua/src/main/resources/mapper/PermissionFaceMapper.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + insert into PermissionFace values (#{permissionJson},#{schoolId},#{perrmissName},#{createTime},#{updateTime}) + + + + + + + + + update PermissionFace set permissionJson = #{permissionJson},updateTime=#{updateTime},perrmissName=#{perrmissName} where id = #{id} + + + + + delete from PermissionFace where id = #{id} + + + + + \ No newline at end of file diff --git a/cloud/dahua/src/main/resources/mapper/usermapper.xml b/cloud/dahua/src/main/resources/mapper/usermapper.xml index 4853f4f..f714ed7 100644 --- a/cloud/dahua/src/main/resources/mapper/usermapper.xml +++ b/cloud/dahua/src/main/resources/mapper/usermapper.xml @@ -1,6 +1,6 @@ - + @@ -9,4 +9,14 @@ + + + \ No newline at end of file diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/config/AllowOriginFilter.java b/cloud/fIle-center/src/main/java/com/sincere/file/config/AllowOriginFilter.java new file mode 100644 index 0000000..b18cbf5 --- /dev/null +++ b/cloud/fIle-center/src/main/java/com/sincere/file/config/AllowOriginFilter.java @@ -0,0 +1,37 @@ +package com.sincere.file.config; + +import org.springframework.stereotype.Component; + +import javax.servlet.*; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * 用于解决跨域问题 + * + * @author chen + * @version 1.0 + * @date 2019/10/11 0011 10:17 + */ +@Component +@WebFilter(urlPatterns = "/*", filterName = "authFilter") +public class AllowOriginFilter implements Filter { + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + } + + public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { + HttpServletResponse response = (HttpServletResponse) res; + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "*"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Allow-Headers", "*"); + chain.doFilter(req, res); + } + + @Override + public void destroy() { + } +} diff --git a/cloud/getaway/src/main/resources/application.yml b/cloud/getaway/src/main/resources/application.yml index 0dac4a3..3353d20 100644 --- a/cloud/getaway/src/main/resources/application.yml +++ b/cloud/getaway/src/main/resources/application.yml @@ -69,6 +69,12 @@ spring: - Path=/haikang/** filters: - StripPrefix=1 + - id: haikangface + uri: http://120.26.116.253:8089 + predicates: + - Path=/haikangface/** + filters: + - StripPrefix=1 # default-filters: # - DedupeResponseHeader=Access-Control-Allow-Origin, RETAIN_UNIQUE # discovery: @@ -92,4 +98,4 @@ ribbon: url: - ignored: /SmartCampusWebApi/**,/authserver/**,/NewSmartCampus/**,/file-center/**,/dahua/**,/haikang/** \ No newline at end of file + ignored: /SmartCampusWebApi/**,/authserver/**,/NewSmartCampus/**,/file-center/**,/dahua/**,/haikang/**,/haikangface/** \ No newline at end of file diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java index 07eaddc..1db8626 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java @@ -19,8 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; +import org.springframework.web.client.RestTemplate; import java.io.*; import java.net.InetAddress; @@ -29,6 +31,7 @@ import java.nio.ByteBuffer; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.regex.Pattern; @@ -48,7 +51,8 @@ public class CMSServer implements ApplicationRunner { //114.55.30.100 //120.26.116.253 private String ip_cloud = "120.26.116.253"; - // private String ip_cloud = "114.55.30.100"; + // private String ip_cloud = "172.16.2.56"; +// private String ip_cloud = "114.55.30.100"; private String ip; { @@ -122,7 +126,7 @@ public class CMSServer implements ApplicationRunner { public class FRegisterCallBack implements HCEHomeCMS.DEVICE_REGISTER_CB { public boolean invoke(NativeLong lUserID, int dwDataType, Pointer pOutBuffer, int dwOutLen, HCEHomeCMS.NET_EHOME_SERVER_INFO pInBuffer, int dwInLen, Pointer pUser) { String deviceId = ""; - System.out.println("dwDataType:" + dwDataType); +// System.out.println("dwDataType:" + dwDataType); if (dwDataType == 0) { HCEHomeCMS.NET_EHOME_DEV_REG_INFO strDevRegInfo = new HCEHomeCMS.NET_EHOME_DEV_REG_INFO(); strDevRegInfo.write(); @@ -137,7 +141,10 @@ public class CMSServer implements ApplicationRunner { pInBuffer.dwSize = pInBuffer.size(); AttendanceBean attendanceBean = new AttendanceBean(); attendanceBean.setClint_id(deviceId); - attendanceBean.setClint_type("18"); + if (deviceId.startsWith("ytj")) + attendanceBean.setClint_type("28"); + else + attendanceBean.setClint_type("18"); attendanceBean.setIntime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); attendanceBean.setIsConnection(1); attendanceBean.setSchool_id("-1"); @@ -280,7 +287,7 @@ public class CMSServer implements ApplicationRunner { public boolean invoke(NativeLong iHandle, String pFileName, Pointer pFileBuf, int dwFileLen, Pointer pFilePath, Pointer pUser) { String strPath = "C://EhomePicServer/"; - System.out.println("pFileName:" + pFileName); +// System.out.println("pFileName:" + pFileName); pFileName = pFileName.replace("_", ""); boolean isZhuaPai = false; if (pFileName.contains("-")) {//人脸抓拍机抓拍到的图片 @@ -405,7 +412,7 @@ public class CMSServer implements ApplicationRunner { strXMLData.read(); String strXML = new String(strXMLData.byValue); - System.out.println(strXML); +// System.out.println(strXML); if (null == alarmUtils) { alarmUtils = new AlarmUtils(deviceDao); @@ -439,7 +446,7 @@ public class CMSServer implements ApplicationRunner { } } - System.out.println("监听回调"); +// System.out.println("监听回调"); return true; } } @@ -484,8 +491,11 @@ public class CMSServer implements ApplicationRunner { face_recoder.getImgurl(), face_recoder.getInOrOut(), face_recoder.getTime(), face_recoder.getCardNum(), currTemperature); } } else { + //教师点名 + isTeacher(cardNo, deviceID); FileUtils.getInstance().writeLogs("card:" + card, FileUtils.faceSuccess); } + } } catch (Exception e) { @@ -493,6 +503,29 @@ public class CMSServer implements ApplicationRunner { } } + public void isTeacher(String cardNo, String deviceID) { + + + List devLists = userDao.getDeviceRoomRelation(deviceID); + + if (null != devLists && devLists.size() > 0) { + + StudentBean teacher = userDao.getTeacherWithCard(cardNo); + if (null != teacher) { + String url = String.format("http://60.190.202.57:1000/api/RollCall/AddRollCallPersonnelRecord?userId=%s&deviceId=%s", teacher.getUser_id(), deviceID); + + RestTemplate restTemplate = new RestTemplate(); + + + String res = restTemplate.getForObject(url, String.class); + + System.out.println("result:" + res + "------url:" + url); + + } + } + + } + /** * 生成图片服务路径 * @@ -602,17 +635,17 @@ public class CMSServer implements ApplicationRunner { "MTIzNDU2\r\n" + "\r\n" + "\r\n" + - "\r\n" + - "" + employeeNo + "\r\n" + + "5\r\n" + ""; String nameAfter = "\r\n" + - "\r\n" + + "" + employeeNo + "\r\n" + + "3\r\n" + "\r\n" + "\r\n" + "\r\n" + "\r\n" + ""; -// System.out.println("strConfigXMLCard:" + strConfigXMLCard + name + nameAfter); + System.out.println("strConfigXMLCard:" + strConfigXMLCard + name + nameAfter); byte[] nameBeforBy = null; byte[] resultBy = null; try { @@ -676,50 +709,50 @@ public class CMSServer implements ApplicationRunner { public void SetCardWeekPlan(String clint_id, String card, String userType, String strConfigXMLCard, String content) { try { - HCEHomeCMS.NET_EHOME_XML_CFG struXMLCard = new HCEHomeCMS.NET_EHOME_XML_CFG(); - - HCEHomeCMS.NET_DVR_STRING_POINTER stringRequestCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); - stringRequestCard.read(); - String strRequestCard = "SETDEVICECONFIG"; - stringRequestCard.byString = strRequestCard.getBytes(); - stringRequestCard.write(); - - struXMLCard.pCmdBuf = stringRequestCard.getPointer(); - struXMLCard.dwCmdLen = stringRequestCard.byString.length; - struXMLCard.write(); - - HCEHomeCMS.NET_DVR_STRING_POINTER struConfigXMLCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); - struConfigXMLCard.read(); - struConfigXMLCard.byString = strConfigXMLCard.getBytes(); - struConfigXMLCard.write(); - - struXMLCard.pInBuf = struConfigXMLCard.getPointer(); - struXMLCard.dwInSize = struConfigXMLCard.byString.length; - struXMLCard.dwRecvTimeOut = 5000; - struXMLCard.dwSendTimeOut = 5000; - struXMLCard.write(); - - HCEHomeCMS.NET_DVR_STRING_POINTER stringOutCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); - stringOutCard.write(); - struXMLCard.pOutBuf = stringOutCard.getPointer(); - struXMLCard.dwOutSize = stringOutCard.size(); - struXMLCard.write(); - - HCEHomeCMS.NET_DVR_STRING_POINTER stringStatusCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); - stringStatusCard.write(); - struXMLCard.pStatusBuf = stringStatusCard.getPointer(); - struXMLCard.dwStatusSize = stringStatusCard.size(); - struXMLCard.write(); - - int i = struXMLCard.size(); - if (!hCEhomeCMS.NET_ECMS_XMLConfig(map.get(clint_id), struXMLCard, struXMLCard.size())) { - int iErr = hCEhomeCMS.NET_ECMS_GetLastError(); - System.err.println(content + "失败:" + iErr); - sendRecoderUtils.sendFail(sendRecordDao, card, "", clint_id, userDao, content + "失败:" + iErr, userType); - } else { - System.out.println(content + "成功"); - } - }catch (Exception e){ + HCEHomeCMS.NET_EHOME_XML_CFG struXMLCard = new HCEHomeCMS.NET_EHOME_XML_CFG(); + + HCEHomeCMS.NET_DVR_STRING_POINTER stringRequestCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); + stringRequestCard.read(); + String strRequestCard = "SETDEVICECONFIG"; + stringRequestCard.byString = strRequestCard.getBytes(); + stringRequestCard.write(); + + struXMLCard.pCmdBuf = stringRequestCard.getPointer(); + struXMLCard.dwCmdLen = stringRequestCard.byString.length; + struXMLCard.write(); + + HCEHomeCMS.NET_DVR_STRING_POINTER struConfigXMLCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); + struConfigXMLCard.read(); + struConfigXMLCard.byString = strConfigXMLCard.getBytes(); + struConfigXMLCard.write(); + + struXMLCard.pInBuf = struConfigXMLCard.getPointer(); + struXMLCard.dwInSize = struConfigXMLCard.byString.length; + struXMLCard.dwRecvTimeOut = 5000; + struXMLCard.dwSendTimeOut = 5000; + struXMLCard.write(); + + HCEHomeCMS.NET_DVR_STRING_POINTER stringOutCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); + stringOutCard.write(); + struXMLCard.pOutBuf = stringOutCard.getPointer(); + struXMLCard.dwOutSize = stringOutCard.size(); + struXMLCard.write(); + + HCEHomeCMS.NET_DVR_STRING_POINTER stringStatusCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); + stringStatusCard.write(); + struXMLCard.pStatusBuf = stringStatusCard.getPointer(); + struXMLCard.dwStatusSize = stringStatusCard.size(); + struXMLCard.write(); + + int i = struXMLCard.size(); + if (!hCEhomeCMS.NET_ECMS_XMLConfig(map.get(clint_id), struXMLCard, struXMLCard.size())) { + int iErr = hCEhomeCMS.NET_ECMS_GetLastError(); + System.err.println(content + "失败:" + iErr); + sendRecoderUtils.sendFail(sendRecordDao, card, "", clint_id, userDao, content + "失败:" + iErr, userType); + } else { + System.out.println(content + "成功"); + } + } catch (Exception e) { e.printStackTrace(); } } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java index 579e198..adaadcd 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java @@ -1,7 +1,10 @@ package com.sincere.haikangface.async; +import com.alibaba.fastjson.JSON; import com.sincere.haikangface.CMSServer; +import com.sincere.haikangface.bean.StudentBean; +import com.sincere.haikangface.bean.TeacherBean; import com.sincere.haikangface.bean.face.PermissionBean; import com.sincere.haikangface.bean.face.WeekDay; import com.sincere.haikangface.bean.face.WeekTime; @@ -10,18 +13,11 @@ import com.sincere.haikangface.dao.UserDao; import com.sincere.haikangface.utils.*; import com.sincere.haikangface.xiananDao.SendRecordDao; import lombok.extern.slf4j.Slf4j; -import org.apache.poi.ss.formula.functions.WeekdayFunc; -import org.json.JSONArray; -import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.util.StringUtils; -import javax.imageio.stream.FileImageInputStream; -import java.io.*; -import java.net.HttpURLConnection; -import java.net.URL; import java.util.*; @Component @@ -53,13 +49,30 @@ public class SendUserAsync { //根据设备是5603 还是新设备 String employeeNo = ""; if (deviceId.contains("ymzx") || deviceId.contains("5607") || deviceId.contains("5671") || deviceId.contains("5604")) { - employeeNo = System.currentTimeMillis() + ""; - cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); - cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); - for (int i = 0; i < 7; i++) { - cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlanTime(HKXmlUtils.getInstance().SetCardWeekPlanTimes("00:00:00", "23:00:00"), "" + i), "设置卡权限周计划时间"); + long lon = Long.parseLong(card); + //十六进制卡号 + String resultCard = getCard(String.format("%08x", lon)).toUpperCase(); + String time = System.currentTimeMillis() + ""; + if (userType.equals("1")) { + StudentBean studentBean = userDao.getTeacherWithCard(resultCard); + log.error("studentBean:{}", studentBean == null ? "-------" : studentBean.toString()); + if (null == studentBean) { + employeeNo = time.substring(time.length() - 6, time.length()); + } else + employeeNo = studentBean.getTeacher_id(); + } else if (userType.equals("2")) { + StudentBean studentBean = userDao.getStudentWithCard(resultCard); + if (null == studentBean) { + employeeNo = time.substring(time.length() - 6, time.length()); + } else + employeeNo = studentBean.getStudent_id(); } - cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardRightCfg(card), "设置卡权限"); +// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); +// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); +// for (int i = 0; i < 7; i++) { +// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardWeekPlanTime(HKXmlUtils.getInstance().SetCardWeekPlanTimes("00:00:00", "23:00:00"), "" + i), "设置卡权限周计划时间"); +// } +// cmsServer.SetCardWeekPlan(deviceId, card, userType, HKXmlUtils.getInstance().SetCardRightCfg(card), "设置卡权限"); } boolean result = cmsServer.createImgPath(srcFile, picUrl, card, startTime, endTime, validTimeEnabled, name, deviceId, userType, employeeNo); @@ -72,52 +85,202 @@ public class SendUserAsync { /** * 下发权限 + * * @param permissionBean + * @param i 1:不需要重新下发,0需要重新下发 */ - public boolean sendPermiss(PermissionBean permissionBean) { + @Async("taskExecutor") + public boolean sendPermiss(PermissionBean permissionBean, int i) { + + String userType = permissionBean.getUserType(); + + List weekDays = permissionBean.getWeekDays(); + + Map> map = new HashMap<>(); + + String schoolId = permissionBean.getSchoolId(); + + for (WeekDay weekDay : + weekDays) { + if (weekDay.getDeviceIds() != null && weekDay.getDeviceIds().size() > 0) { + permissionBean.setDeviceIds(weekDay.getDeviceIds()); + } + List deviceIds = permissionBean.getDeviceIds(); + List cardNumList = new ArrayList<>(); + String sex = weekDay.getSex(); + if (userType.equals("1")) { + List cardList = getUserCard(weekDay.getUserIds(), 1); + cardNumList.addAll(cardList); + } else if (userType.equals("2")) { + cardNumList = getCards(sex, userType, schoolId); + } + //整理周和时间段 + initWeedayAndTimes(weekDay, map); + senPsermiss(permissionBean, map, deviceIds, cardNumList, i); + } + log.error("map{}", JSON.toJSONString(map)); + return true; + } + + private List getUserCard(String userIds, int userType) { + List cards = new ArrayList<>(); + try { + + String[] userIdsStr = userIds.split(","); + + for (String userId : + userIdsStr) { + TeacherBean teacherBean = null; + if (userType == 1) {//教师 + teacherBean = userDao.getTeacherWithUserId(userId); + if (null != teacherBean) { + String card = teacherBean.getTeacer_num(); + if (!StringUtils.isEmpty(card)) { + cards.add(card); + } + } else { + log.error("教师用户不存在"); + } + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + + return cards; + } + + /** + * 把卡号和权限下发到对应的设备 + * + * @param permissionBean + * @param map + * @param deviceIds + * @param cardNumList + * @param i + * @return + */ + private boolean senPsermiss(PermissionBean permissionBean, Map> map, List deviceIds, List cardNumList, int i) { + String userType = permissionBean.getUserType(); + + if (deviceIds == null || deviceIds.size() == 0) { + log.error("设备不存在"); + return false; + } - String cardNum = permissionBean.getCardNum(); - List deviceIds = permissionBean.getDeviceIds(); - String userType = permissionBean.getUserType(); - List weekDays = permissionBean.getWeekDays(); + if (null == cardNumList || cardNumList.size() == 0) { + log.error("卡号为空"); + return false; + } for (String deviceId : deviceIds) { - if (!cmsServer.getIsDeviceOnline(deviceId)){//设备在线 - cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); - cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); + if (cmsServer.getIsDeviceOnline(deviceId)) {//设备在线 + + for (String cardNum : + cardNumList) { - for (WeekDay weekDay: - weekDays) { + if (!StringUtils.isEmpty(cardNum)) { + cardNum = Long.parseLong(getCard(cardNum), 16) + ""; - List weekTimes = weekDay.getWeekTimes(); - int weekdayIndex = weekDay.getWeekDay(); + cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); + cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); - StringBuffer stringBuffer = new StringBuffer();//添加时间集 + for (Map.Entry> weeKdayMap : + map.entrySet()) { - for (WeekTime weetTime : - weekTimes) { + int week = weeKdayMap.getKey(); + List weekTimes = weeKdayMap.getValue(); - String weekPlanTimes = HKXmlUtils.getInstance().SetCardWeekPlanTimes(weetTime.getStartTime(),weetTime.getEndTime()); - log.error("weekPlanTimes:{}",weekPlanTimes); - stringBuffer.append(weekPlanTimes); + StringBuffer stringBuffer = new StringBuffer();//添加时间集 + for (WeekTime weekTime : + weekTimes) { + String weekPlanTimes = HKXmlUtils.getInstance().SetCardWeekPlanTimes(weekTime.getStartTime(), weekTime.getEndTime()); +// log.error("weekPlanTimes:{}", weekPlanTimes); + stringBuffer.append(weekPlanTimes); + } + String weekPlanTime = HKXmlUtils.getInstance().SetCardWeekPlanTime(stringBuffer.toString(), "" + week); + String serCardRightCfg = HKXmlUtils.getInstance().SetCardRightCfg(cardNum); +// log.error("serCardRightCfg:{}", serCardRightCfg); + FileUtils.getInstance().writeLogs(weekPlanTime,"设置卡权限周计划时间.txt"); + cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, weekPlanTime, "设置卡权限周计划时间"); + cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, serCardRightCfg, "设置卡权限"); + + } } - String weekPlanTime = HKXmlUtils.getInstance().SetCardWeekPlanTime(stringBuffer.toString(), "" + weekdayIndex); - log.error("weekPlanTime:{}",weekPlanTime); - cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, weekPlanTime, "设置卡权限周计划时间"); - cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, HKXmlUtils.getInstance().SetCardRightCfg(cardNum), "设置卡权限"); + } - }else {//设备不在线 - log.error("deviceId:{}",deviceId+"不在线"); + } else {//设备不在线 + if (i == 0) + HttpUtil.sendPermission2HK(permissionBean); + log.error("deviceId:{}", deviceId + "不在线"); } } - return true; } + private List getCards(String sex, String userType, String schoolId) { + + List cardList = new ArrayList<>(); + + switch (userType) { + case "2"://学生 + String[] sexs = sex.split(","); + List sexList = new ArrayList<>(); + for (int i = 0; i < sexs.length; i++) { + sexList.add(sexs[i]); + } + cardList = userDao.getStudentWiSidAndSex(schoolId, sexList); + break; + } + + return cardList; + } + + + private void initWeedayAndTimes(WeekDay weekDay, Map> map) { + + String weekDayStr = weekDay.getWeekDay(); + String[] weekDays = weekDayStr.split(","); + + List weekTimes = weekDay.getWeekTimes(); + + for (int i = 0; i < weekDays.length; i++) { + int weekDayIndex = Integer.parseInt(weekDays[i]); + if (map.containsKey(weekDayIndex)) {//周已经有时间段 + List weekTimeList = map.get(weekDayIndex); + for (WeekTime wee : + weekTimes) { + weekTimeList.add(wee); + } + map.put(weekDayIndex, weekTimeList); + } else { + List weekTimes1 = new ArrayList<>(); + weekTimes1.addAll(weekTimes); + map.put(weekDayIndex, weekTimes1); + } + } + + } + + private String getCard(String card) { + + if (card.length() == 8) { + int length = card.length(); + String result = card.substring(length - 2, length) + card.substring(length - 4, length - 2) + card.substring(length - 6, length - 4) + + card.substring(length - 8, length - 6); + return result; + + } else { + System.out.println("卡号位数不对:" + card); + return ""; + } + + } /** * 调用传图片接口 diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/TeacherBean.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/TeacherBean.java new file mode 100644 index 0000000..4132478 --- /dev/null +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/TeacherBean.java @@ -0,0 +1,36 @@ +package com.sincere.haikangface.bean; + +import java.io.Serializable; + +public class TeacherBean implements Serializable { + + private String name; + + private String teacher_num; + + private String num; + + public String getNum() { + return num; + } + + public void setNum(String num) { + this.num = num; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getTeacer_num() { + return teacher_num; + } + + public void setTeacer_num(String teacer_num) { + this.teacher_num = teacer_num; + } +} diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/PermissionBean.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/PermissionBean.java index 8a58cf6..3b30c21 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/PermissionBean.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/PermissionBean.java @@ -1,5 +1,7 @@ package com.sincere.haikangface.bean.face; +import io.swagger.annotations.ApiModelProperty; + import java.io.Serializable; import java.util.List; @@ -7,10 +9,13 @@ public class PermissionBean implements Serializable { private List deviceIds; - private String cardNum; + private String schoolId; private String userType;//学生类型 +// @ApiModelProperty("用逗号隔开,1:男,2:女") +// private String sex; + private List weekDays; public List getDeviceIds() { @@ -21,12 +26,12 @@ public class PermissionBean implements Serializable { this.deviceIds = deviceIds; } - public String getCardNum() { - return cardNum; + public String getSchoolId() { + return schoolId; } - public void setCardNum(String cardNum) { - this.cardNum = cardNum; + public void setSchoolId(String schoolId) { + this.schoolId = schoolId; } public String getUserType() { diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/UserAndPermission.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/UserAndPermission.java new file mode 100644 index 0000000..3e59a6f --- /dev/null +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/UserAndPermission.java @@ -0,0 +1,38 @@ +package com.sincere.haikangface.bean.face; + +import java.io.Serializable; +import java.util.List; + +public class UserAndPermission implements Serializable { + + private int userType; + + private List weekDays; + + private String schoolId; + + + public int getUserType() { + return userType; + } + + public void setUserType(int userType) { + this.userType = userType; + } + + public List getWeekDays() { + return weekDays; + } + + public void setWeekDays(List weekDays) { + this.weekDays = weekDays; + } + + public String getSchoolId() { + return schoolId; + } + + public void setSchoolId(String schoolId) { + this.schoolId = schoolId; + } +} diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/WeekDay.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/WeekDay.java index 1eeb2ef..3fff656 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/WeekDay.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/WeekDay.java @@ -1,20 +1,45 @@ package com.sincere.haikangface.bean.face; +import io.swagger.annotations.ApiModelProperty; + import java.io.Serializable; import java.util.List; public class WeekDay implements Serializable { + @ApiModelProperty("用逗号隔开,1:男,2:女") + private String sex; - private int weekDay; + @ApiModelProperty("用逗号隔开,0-6表示周日到周六") + private String weekDay; private List weekTimes; - public int getWeekDay() { + @ApiModelProperty("教师点名专用") + private String userIds; + + private List deviceIds; + public List getDeviceIds() { + return deviceIds; + } + + public void setDeviceIds(List deviceIds) { + this.deviceIds = deviceIds; + } + + public String getUserIds() { + return userIds; + } + + public void setUserIds(String userIds) { + this.userIds = userIds; + } + + public String getWeekDay() { return weekDay; } - public void setWeekDay(int weekDay) { + public void setWeekDay(String weekDay) { this.weekDay = weekDay; } @@ -25,4 +50,12 @@ public class WeekDay implements Serializable { public void setWeekTimes(List weekTimes) { this.weekTimes = weekTimes; } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/control/FileControl.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/control/FileControl.java index d71efc5..9fdb8c6 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/control/FileControl.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/control/FileControl.java @@ -1,10 +1,12 @@ package com.sincere.haikangface.control; +import com.alibaba.fastjson.JSON; import com.sincere.haikangface.CMSServer; import com.sincere.haikangface.async.SendUserAsync; import com.sincere.haikangface.bean.Images2Ddevices; import com.sincere.haikangface.bean.StudentBean; import com.sincere.haikangface.bean.UploadBean; +import com.sincere.haikangface.bean.face.PermissionBean; import com.sincere.haikangface.dao.UserDao; import com.sincere.haikangface.utils.CompressPic; import com.sincere.haikangface.utils.FileUtils; @@ -12,9 +14,11 @@ import com.sincere.haikangface.utils.SendRecoderUtils; import com.sincere.haikangface.xiananDao.SendRecordDao; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -26,6 +30,7 @@ import java.util.*; @RestController @Api("文件管理器") @RequestMapping("file/*") +@Slf4j public class FileControl { @Autowired @@ -44,6 +49,16 @@ public class FileControl { Queue uploadBeanQueue = new LinkedList<>(); + @RequestMapping(value = "sendPermiss", method = RequestMethod.POST) + @ApiOperation("下发权限给设备") + public boolean sendPermiss(@RequestBody PermissionBean permissionBean) { + log.error("permissionBean:{}", JSON.toJSONString(permissionBean)); + if (!StringUtils.isEmpty(permissionBean)) { + return sendUserAsync.sendPermiss(permissionBean,1); + } + return false; + } + @RequestMapping(method = RequestMethod.POST, value = "uploadImg") public String uploadImg(@RequestParam("file") MultipartFile file, @RequestParam("card") String card , @RequestParam("name") String name, @RequestParam("deviceId") String deviceId, @RequestParam("startTime") String startTime, diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java index 0e3a0d4..dca6bbe 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java @@ -2,13 +2,16 @@ package com.sincere.haikangface.control; //import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; +import com.alibaba.fastjson.JSON; import com.sincere.haikangface.bean.Images2Ddevices; //import com.sincere.haikangface.utils.BaiduApiUtiols; import com.sincere.haikangface.CMSServer; import com.sincere.haikangface.async.SendUserAsync; import com.sincere.haikangface.bean.StudentBean; import com.sincere.haikangface.bean.StudentInfo; +import com.sincere.haikangface.bean.TeacherBean; import com.sincere.haikangface.bean.face.PermissionBean; +import com.sincere.haikangface.bean.face.UserAndPermission; import com.sincere.haikangface.dao.UserDao; import com.sincere.haikangface.fegin.HaikangfaceFegin; import com.sincere.haikangface.utils.*; @@ -17,16 +20,20 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; import java.io.*; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -34,6 +41,7 @@ import java.util.List; @RestController @RequestMapping(value = "/facereco/*", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @Api("用户控制") +@Slf4j public class UserControl { @Autowired @@ -58,20 +66,47 @@ public class UserControl { @RequestMapping(value = "sendPermiss", method = RequestMethod.POST) @ApiOperation("下发权限给设备") public boolean sendPermiss(@RequestBody PermissionBean permissionBean) { - - if (!StringUtils.isEmpty(permissionBean)) { - return sendUserAsync.sendPermiss(permissionBean); + log.error("permissionBean:{}", JSON.toJSONString(permissionBean)); + if (!StringUtils.isEmpty(permissionBean.getDeviceIds())) { +// List cardNumList = userDao.getStudentCardsWidthSchoolId(permissionBean.getSchoolId()); + return sendUserAsync.sendPermiss(permissionBean, 0); } return false; } + @RequestMapping(value = "sendUsersAndPermiss", method = RequestMethod.POST) + @ApiOperation("下发指定教师用户权限给设备") + public boolean sendUsersAndPermiss(@RequestBody UserAndPermission userAndPermission) { + log.error("sendUsersAndPermiss:{}", JSON.toJSONString(userAndPermission)); + FileUtils.getInstance().writeLogs(JSON.toJSONString(userAndPermission),"下发指定教师用户权限给设备.txt"); + PermissionBean permissionBean = new PermissionBean(); + permissionBean.setSchoolId(userAndPermission.getSchoolId()); + permissionBean.setUserType(String.valueOf(userAndPermission.getUserType())); + permissionBean.setWeekDays(userAndPermission.getWeekDays()); + return sendUserAsync.sendPermiss(permissionBean, 0); + } + + + @RequestMapping(value = "isTeacher", method = RequestMethod.GET) + @ApiOperation("测试教师点名") + public void isTeacher(@RequestParam("deviceId") String deviceId, @RequestParam("cardNo") String cardNo) { + try { + cmsServer.isTeacher(cardNo,deviceId); + }catch (Exception e){ + e.printStackTrace(); + } + } + @RequestMapping(value = "sendStuCardAndImg", method = RequestMethod.GET) @ApiOperation("下发人脸给设备") public boolean sendCardAndImg(@RequestParam("filePath") String filePath, @RequestParam("card") String card , @RequestParam("name") String name, @RequestParam("deviceId") String deviceId, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime, @RequestParam("validTimeEnabled") int validTimeEnabled, @RequestParam("userType") String userType) { + return sendImg2Device(filePath, card, name, deviceId, userType); + } + private boolean sendImg2Device(String filePath, String card, String name, String deviceId, String userType) { try { if (filePath.contains(".jpg")) filePath = filePath.replace(".jpg", ".png"); diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java index d177c82..03d0ea9 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java @@ -222,4 +222,28 @@ public interface UserDao { @Insert("insert into CW_StuTemperatureReocrd values (#{UserId},#{StudentId},#{Name},#{ClassId},#{ClassName},#{Temperature},#{Type},#{SchoolId},#{Intime})") void addWGTem(@Param("UserId") String UserId, @Param("StudentId") String StudentId, @Param("Name") String Name, @Param("ClassId") String ClassId, @Param("ClassName") String ClassName, @Param("Temperature") String Temperature, @Param("Type") String Type, @Param("SchoolId") String SchoolId, @Param("Intime") String Intime); + + @Select("select student_num from SZ_V_School_Student where school_id = #{schoolId} and student_num<>''") + List getStudentCardsWidthSchoolId(@Param("schoolId") String schoolId); + + @Select("select student_num from SZ_V_School_Teacher where school_id = #{schoolId} and student_num<>''") + List getTeaCardsWidthSchoolId(@Param("schoolId") String schoolId); + + @Select("select Top(1) teacher_num from SZ_V_School_Teacher where user_id = #{userId}") + String getTeaCardWithUserId(@Param("userId") String userId); + + + @Select("select student_num from SZ_V_School_Student where user_id = #{userId}") + String getStudentCardWithUserId(@Param("userId") String userId); + + @Select("select Top(1) * from SZ_V_School_Teacher where user_id = #{userId} and teacher_num<>''") + TeacherBean getTeacherWithUserId(@Param("userId") String userId); + + + List getStudentWiSidAndSex(@Param("schoolId")String schoolId , @Param("sexs")List sexs); + + + List getDeviceRoomRelation(@Param("clint_id")String clint_id); + + } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/AlarmUtils.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/AlarmUtils.java index 5c1cae3..e3332a4 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/AlarmUtils.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/AlarmUtils.java @@ -118,7 +118,7 @@ public class AlarmUtils { */ private void shijian(String minorType, String deviceID, String cardNo, String time, String picDataUrl, String currTemperature) { String content = ""; - System.out.println("=-=============================minorType:" + minorType); +// System.out.println("=-=============================minorType:" + minorType); switch (minorType) { case "0x01"://合法卡认证通过 content = "合法卡认证通过"; diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java index 9da78cd..61f09c2 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java @@ -54,6 +54,13 @@ public class CompressPic { try { File targetFile = new File(targetPath); if (!targetFile.exists()) targetFile.createNewFile(); + + if (width>height){ + int width1 = width; + width = height; + height = width1; + } + BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); tag.getGraphics().drawImage(bufferedImage, 0, 0, width, height, null); // 绘制缩小后的图 FileOutputStream deskImage = new FileOutputStream(targetPath); // 输出到文件流 diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HKXmlUtils.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HKXmlUtils.java index 880757a..f34dc2f 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HKXmlUtils.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HKXmlUtils.java @@ -151,7 +151,7 @@ public class HKXmlUtils { * @return */ public String SetCardWeekPlanTimes(String startTime, String endTime) { - return "" + startTime + "\n" + - "" + endTime + "\n"; + return "" + startTime.trim() + "\n" + + "" + endTime.trim() + "\n"; } } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java index b779453..c8360f6 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java @@ -1,5 +1,7 @@ package com.sincere.haikangface.utils; +import com.alibaba.fastjson.JSON; +import com.sincere.haikangface.bean.face.PermissionBean; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -162,4 +164,34 @@ public class HttpUtil { return restTemplate.getForObject(url, String.class).equals("1"); } + + public static void sendPermission2HK(PermissionBean permissionBean) { + try { + + String url = "http://120.26.116.253:8089/file/sendPermiss"; + + if (null != permissionBean) { + + RestTemplate restTemplate = new RestTemplate(); + + HttpHeaders headers = new HttpHeaders(); + + MediaType mediaType = MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE); + + headers.setContentType(mediaType); + + HttpEntity httpEntity = new HttpEntity<>(permissionBean, headers); + + System.out.println("PermissionBean:"+JSON.toJSONString(permissionBean)); + + ResponseEntity responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); + + System.out.println("responseEntity:" + responseEntity.getBody()); + + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } diff --git a/cloud/haikangface/src/main/resources/application.yaml b/cloud/haikangface/src/main/resources/application.yaml index 14d4e04..59c6710 100644 --- a/cloud/haikangface/src/main/resources/application.yaml +++ b/cloud/haikangface/src/main/resources/application.yaml @@ -10,10 +10,10 @@ spring: password: RQminVCJota3H1u8bBYH jdbc-url: jdbc:sqlserver://116.62.155.137:33419;database=SmartCampus driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver - # username: SZJXTUSER - # password: xst200919 - # jdbc-url: jdbc:sqlserver://60.190.202.57:14333;database=SmartCampusSZ - # driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver +# username: SZJXTUSER +# password: xst200919 +# jdbc-url: jdbc:sqlserver://60.190.202.57:14333;database=SmartCampusSZ +# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver xiaoan: jdbc-url: jdbc:sqlserver://116.62.241.27:33419;database=xiaoanhxy username: szjxtuser diff --git a/cloud/haikangface/src/main/resources/mapper/usermapper.xml b/cloud/haikangface/src/main/resources/mapper/usermapper.xml index b154482..d707dde 100644 --- a/cloud/haikangface/src/main/resources/mapper/usermapper.xml +++ b/cloud/haikangface/src/main/resources/mapper/usermapper.xml @@ -9,4 +9,17 @@ + + + + diff --git a/cloud/pom.xml b/cloud/pom.xml index 78a9ab5..c05689d 100644 --- a/cloud/pom.xml +++ b/cloud/pom.xml @@ -40,7 +40,7 @@ - + quartz user_search fIle-center diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/Swagger2.java b/cloud/quartz/src/main/java/com/sincere/quartz/Swagger2.java new file mode 100644 index 0000000..8d4db09 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/Swagger2.java @@ -0,0 +1,36 @@ +package com.sincere.quartz; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration +@EnableSwagger2 +public class Swagger2 { + + @Bean + public Docket createRestApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.basePackage("com.sincere.quartz.control")) + .paths(PathSelectors.any()) + .build(); + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("大华人脸接口") + .description("") + .termsOfServiceUrl("") + .version("1.0") + .build(); + } + +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/control/FaceUnifyController.java b/cloud/quartz/src/main/java/com/sincere/quartz/control/FaceUnifyController.java new file mode 100644 index 0000000..af3ef76 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/control/FaceUnifyController.java @@ -0,0 +1,22 @@ +package com.sincere.quartz.control; + +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("faceUnify/*") +@Slf4j +public class FaceUnifyController { + + + @RequestMapping(value = "sendPermission",method = RequestMethod.GET) + @ApiOperation("添加/编辑/删除权限") + public void sendPermission(){ + log.error("ssssssssssssssssssssssssssssssssssssssssss:{}","2222222222222"); + } + + +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java index 42ccc66..6079697 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java @@ -1,105 +1,105 @@ -package com.sincere.quartz.job; - -import com.sincere.common.dto.smartCampus.BindPushDto; -import com.sincere.common.dto.smartCampus.ParentDto; -import com.sincere.common.enums.PushTypeEnums; -import com.sincere.common.util.DateUtils; -import com.sincere.quartz.feign.ScFeign; -import com.sincere.quartz.model.ShortMsg; -import com.sincere.quartz.service.SmsService; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 用户注册激活提醒 - * - * @author chen - * @version 1.0 - * @date 2019/12/10 0010 8:31 - */ -@Service -public class BindPushJob { - - private Logger logger = LoggerFactory.getLogger(BindPushJob.class); - - - @Autowired - ScFeign scFeign; - - @Autowired - SmsService smsService; - - private static Map intervalDaysMap = new HashMap<>(); //redis 持久化 替换 可避免重启导致间隔的错误 - - @Scheduled(cron = "0 0-59 * * * ? ") - public void bindPush() { - Date nowDate = new Date(); - List schoolList = scFeign.selectBindPushSchool(); - for (BindPushDto school : schoolList) { - if (school.getBeginDate().compareTo(nowDate) <= 0 && school.getEndDate().compareTo(nowDate) >= 0) { - String lastDate = intervalDaysMap.get(school.getSchoolId() + "_" + school.getType()); - if (StringUtils.isBlank(lastDate)) { - //下发推送 - bindPush(school, nowDate); - } else { - int day = DateUtils.getDateDifference(nowDate, DateUtils.string2Date(lastDate, DateUtils.format1), "day"); - if (day == school.getIntervalDays() + 1) { - //下发推送 - bindPush(school, nowDate); - } - } - } - } - } - - private void bindPush(BindPushDto bindPushDto, Date nowDate) { - if (bindPushDto.getPushTime().equals(DateUtils.date2String(nowDate, DateUtils.format4))) { - intervalDaysMap.put(bindPushDto.getSchoolId() + "_" + bindPushDto.getType(), DateUtils.date2String(nowDate, DateUtils.format1)); - //未关注 - List unFollowList = scFeign.selectNotFollow(bindPushDto.getSchoolId()); - logger.info(bindPushDto.getSchoolName() + "未关注人数" + unFollowList.size()); - for (ParentDto parentDto : unFollowList) { - sendMessage(parentDto, bindPushDto.getMsg()); - } - //未绑定 - List unBindList = scFeign.selectNotBind(bindPushDto.getSchoolId(), getThirdType(bindPushDto.getType())); - logger.info(bindPushDto.getSchoolName() + "未绑定人数" + unBindList.size()); - for (ParentDto parentDto : unBindList) { - sendMessage(parentDto, bindPushDto.getMsg()); - } - } - } - - private void sendMessage(ParentDto parentDto, String message) { - //手机号为空 - if (StringUtils.isNotBlank(parentDto.getMobile())) { - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); - ShortMsg shortMsg = new ShortMsg(); - shortMsg.setTableName("smsNew" + tableSuffix); - shortMsg.setSchoolId(parentDto.getSchoolId()); - shortMsg.setMobile(parentDto.getMobile()); - shortMsg.setMsg(message); - smsService.insertSMS(shortMsg); - logger.info("----学校Id---" + parentDto.getSchoolId() + "----手机号----" + parentDto.getMobile() + "---" + message); - } - } - - // 0是企业号,1是钉钉 - private int getThirdType(int type) { - if (type == 0) { - return PushTypeEnums.QIYEHAO.getType(); - } else { - return PushTypeEnums.DING.getType(); - } - } - -} +//package com.sincere.quartz.job; +// +//import com.sincere.common.dto.smartCampus.BindPushDto; +//import com.sincere.common.dto.smartCampus.ParentDto; +//import com.sincere.common.enums.PushTypeEnums; +//import com.sincere.common.util.DateUtils; +//import com.sincere.quartz.feign.ScFeign; +//import com.sincere.quartz.model.ShortMsg; +//import com.sincere.quartz.service.SmsService; +//import org.apache.commons.lang3.StringUtils; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.scheduling.annotation.Scheduled; +//import org.springframework.stereotype.Service; +// +//import java.util.Date; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map; +// +///** +// * 用户注册激活提醒 +// * +// * @author chen +// * @version 1.0 +// * @date 2019/12/10 0010 8:31 +// */ +//@Service +//public class BindPushJob { +// +// private Logger logger = LoggerFactory.getLogger(BindPushJob.class); +// +// +// @Autowired +// ScFeign scFeign; +// +// @Autowired +// SmsService smsService; +// +// private static Map intervalDaysMap = new HashMap<>(); //redis 持久化 替换 可避免重启导致间隔的错误 +// +// @Scheduled(cron = "0 0-59 * * * ? ") +// public void bindPush() { +// Date nowDate = new Date(); +// List schoolList = scFeign.selectBindPushSchool(); +// for (BindPushDto school : schoolList) { +// if (school.getBeginDate().compareTo(nowDate) <= 0 && school.getEndDate().compareTo(nowDate) >= 0) { +// String lastDate = intervalDaysMap.get(school.getSchoolId() + "_" + school.getType()); +// if (StringUtils.isBlank(lastDate)) { +// //下发推送 +// bindPush(school, nowDate); +// } else { +// int day = DateUtils.getDateDifference(nowDate, DateUtils.string2Date(lastDate, DateUtils.format1), "day"); +// if (day == school.getIntervalDays() + 1) { +// //下发推送 +// bindPush(school, nowDate); +// } +// } +// } +// } +// } +// +// private void bindPush(BindPushDto bindPushDto, Date nowDate) { +// if (bindPushDto.getPushTime().equals(DateUtils.date2String(nowDate, DateUtils.format4))) { +// intervalDaysMap.put(bindPushDto.getSchoolId() + "_" + bindPushDto.getType(), DateUtils.date2String(nowDate, DateUtils.format1)); +// //未关注 +// List unFollowList = scFeign.selectNotFollow(bindPushDto.getSchoolId()); +// logger.info(bindPushDto.getSchoolName() + "未关注人数" + unFollowList.size()); +// for (ParentDto parentDto : unFollowList) { +// sendMessage(parentDto, bindPushDto.getMsg()); +// } +// //未绑定 +// List unBindList = scFeign.selectNotBind(bindPushDto.getSchoolId(), getThirdType(bindPushDto.getType())); +// logger.info(bindPushDto.getSchoolName() + "未绑定人数" + unBindList.size()); +// for (ParentDto parentDto : unBindList) { +// sendMessage(parentDto, bindPushDto.getMsg()); +// } +// } +// } +// +// private void sendMessage(ParentDto parentDto, String message) { +// //手机号为空 +// if (StringUtils.isNotBlank(parentDto.getMobile())) { +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); +// ShortMsg shortMsg = new ShortMsg(); +// shortMsg.setTableName("smsNew" + tableSuffix); +// shortMsg.setSchoolId(parentDto.getSchoolId()); +// shortMsg.setMobile(parentDto.getMobile()); +// shortMsg.setMsg(message); +// smsService.insertSMS(shortMsg); +// logger.info("----学校Id---" + parentDto.getSchoolId() + "----手机号----" + parentDto.getMobile() + "---" + message); +// } +// } +// +// // 0是企业号,1是钉钉 +// private int getThirdType(int type) { +// if (type == 0) { +// return PushTypeEnums.QIYEHAO.getType(); +// } else { +// return PushTypeEnums.DING.getType(); +// } +// } +// +//} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java index 3feefa1..6999210 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java @@ -1,551 +1,551 @@ -package com.sincere.quartz.job; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.sincere.common.dto.smartCampus.*; -import com.sincere.common.enums.PushTypeEnums; -import com.sincere.common.util.DateUtils; -import com.sincere.common.util.HttpClientUtils; -import com.sincere.quartz.enums.KqTypeEnums; -import com.sincere.quartz.enums.TypeEnums; -import com.sincere.quartz.feign.ScFeign; -import com.sincere.quartz.model.DingSms; -import com.sincere.quartz.model.ShortMsg; -import com.sincere.quartz.model.WeChatSms; -import com.sincere.quartz.service.ManagerService; -import com.sincere.quartz.service.SmsService; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; - -import java.math.BigDecimal; -import java.util.*; - -/** - * 考勤任务推送调用 - * 主要推送盯盯以及企业号 - * - * @author chen - * @version 1.0 - * @date 2019/11/27 0027 17:05 - */ -@Service -public class KQJob { - - private Logger logger = LoggerFactory.getLogger(KQJob.class); - - @Autowired - ScFeign scFeign; - - @Autowired - SmsService smsService; - - @Autowired - ManagerService managerService; - - private static String iotUrl = "http://60.190.202.57:8035"; - - private static String date; - private static Map map = new HashMap<>(); //学校 考勤推送map - - private static String alarmDate; - private static Map alarmMap = new HashMap<>(); //考勤告警推送map - private static Map templateMap = new HashMap<>(); // 考勤比例 - - private static List opexList; - private static String integration; - - static { - opexList = new ArrayList<>(); - opexList.add("15857566147"); //王汉栋 - opexList.add("13858485977"); //王楠彬 - - integration = "18767117554"; //林炜 - } - - @Scheduled(cron = "0 0-59 * * * ? ") - public void kaoQing() { - String now = DateUtils.date2String(new Date(), DateUtils.format1); - if (StringUtils.isBlank(date)) { - initMap(); - date = now; - } - if (!DateUtils.date2String(new Date(), DateUtils.format1).equals(date)) { - initMap(); - date = DateUtils.date2String(new Date(), DateUtils.format1); - } - //开始过滤数据 推送 - List keyList = new ArrayList<>(); - for (Map.Entry entity : map.entrySet()) { - String endTime = entity.getValue().split("_")[1]; - if (DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") >= 2 - && DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") < 5) { - String key = entity.getKey(); - String[] messageArray = key.split("_"); - if (messageArray[2].contains(PushTypeEnums.QIYEHAO.getType() + "")) { - logger.info("企业号推送:" + messageArray[0] + "__" + messageArray[1]); - weChatBatchPush(messageArray[0], Integer.valueOf(messageArray[1]), entity.getValue()); - } - if (messageArray[2].contains(PushTypeEnums.DING.getType() + "")) { - logger.info(("盯盯推送:" + messageArray[0] + "__" + messageArray[1])); - dingBatchPush(messageArray[0], Integer.valueOf(messageArray[1]), entity.getValue()); - } - keyList.add(key); - } - } - for (String key : keyList) { - map.remove(key); - } - } - - @Scheduled(cron = "0 0-59 * * * ? ") - public void alarmKaoQing() { - String now = DateUtils.date2String(new Date(), DateUtils.format1); - if (StringUtils.isBlank(alarmDate)) { - initAlarmMap(); - alarmDate = now; - } - if (!DateUtils.date2String(new Date(), DateUtils.format1).equals(alarmDate)) { - initAlarmMap(); - alarmDate = DateUtils.date2String(new Date(), DateUtils.format1); - } - //开始过滤数据 推送 - List keyList = new ArrayList<>(); - for (Map.Entry entity : alarmMap.entrySet()) { - String endTime = entity.getValue().split("_")[1]; - if (DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") >= 2 - ) { - String key = entity.getKey(); - keyList.add(key); - //alarm(entity); //告警 - //insertIOT(entity); //iot - } - } - for (String key : keyList) { - map.remove(key); - } - } - - private void initAlarmMap() { - alarmMap = new HashMap<>(); - List list = scFeign.getAllTemplateAlarm(); - logger.info(("------考勤告警模板------")); - for (TemplateDto templateDto : list) { - String config = templateDto.getConfig(); - String[] array = config.split(" entry) { - String templateId = entry.getKey().split("_")[0]; - String schoolId = entry.getKey().split("_")[1]; - String id = entry.getValue().split("_")[3]; - String type = entry.getValue().split("_")[2]; - - if (DateUtils.getWeek() == 2 || DateUtils.getWeek() == 5) { - //可以相差40% - BigDecimal percent = getAlarmCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); - if (templateMap.get(templateId) != null) { - if (percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.4)) > 0 - || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.4)) > 0) { - alarmPush(Integer.valueOf(schoolId)); - } - } - templateMap.put(templateId, percent); - } else { - //相差30% - BigDecimal percent = getAlarmCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); - if (templateMap.get(templateId) != null) { - if (percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.3)) > 0 - || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.3)) > 0) { - alarmPush(Integer.valueOf(schoolId)); - } - } - templateMap.put(templateId, percent); - } - } - - private void insertIOT(Map.Entry entry) { - String templateId = entry.getKey().split("_")[0]; - String schoolId = entry.getKey().split("_")[1]; - String title = entry.getKey().split("_")[2]; - String id = entry.getValue().split("_")[3]; - String type = entry.getValue().split("_")[2]; - String beginTime = entry.getValue().split("_")[0]; - String endTime = entry.getValue().split("_")[1]; - - List list = getIOTCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); - JSONObject object = new JSONObject(); - object.put("strTime", beginTime); - object.put("endTime", endTime); - object.put("inTime", DateUtils.date2String(new Date(), DateUtils.format1)); - object.put("noAttendanceCount", list.get(1)); - object.put("attendanceCount", list.get(0)); - object.put("leaveCount", list.get(2)); - object.put("templateName", title); - object.put("qianDaoIdId", id); - object.put("schoolId", schoolId); - object.put("templateId", templateId); - HttpClientUtils.httpPostJson(iotUrl + "/api/Association/addIntelligenceAttendance", object.toJSONString()); - } - - //初始化要推送的模板 - private void initMap() { - map = new HashMap<>(); - List list = scFeign.getAllTemplate(); - logger.info(("------需要推送的考勤模板------")); - for (TemplateDto templateDto : list) { - String config = templateDto.getConfig(); - String[] array = config.split(" list = scFeign.getTeacherList(schoolId); - for (KqTeacherDto teacher : list) { - dingSchoolPush(templateId, teacher, key, appDto, 0); - } - } else { - //出入寝 推班主任 - List list = scFeign.getTeacherList(schoolId); - for (KqTeacherDto teacher : list) { - dingSchoolPush(templateId, teacher, key, appDto, 1); - } - //推宿管 - List chamberList = scFeign.selectChamberTeacher(schoolId); - for (KqTeacherDto teacher : chamberList) { - dingChamberPush(templateId, teacher, key, appDto); - } - } - } - - //企业号批量推送 - private void weChatBatchPush(String templateId, int schoolId, String key) { - String[] times = key.split("_"); - AppDto appDto = scFeign.getApp(schoolId, 0); - if (Integer.valueOf(times[2]) < 7) { - //出入校 推班主任 - List list = scFeign.getTeacherList(schoolId); - for (KqTeacherDto teacher : list) { - weChatSchoolPush(templateId, teacher, key, appDto, 0); - } - } else { - //出入寝 推班主任 - List list = scFeign.getTeacherList(schoolId); - for (KqTeacherDto teacher : list) { - weChatSchoolPush(templateId, teacher, key, appDto, 1); - } - //推宿管 - List chamberList = scFeign.selectChamberTeacher(schoolId); - for (KqTeacherDto teacher : chamberList) { - weChatChamberPush(templateId, teacher, key, appDto); - } - } - } - - //盯盯推送班主任 - private void dingSchoolPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto, int type) { - String[] times = key.split("_"); - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 0); - if (StringUtils.isNotBlank(thirdOpenId)) { - List censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), type); - if (censusKqDtos != null && censusKqDtos.size() > 0) { - String message = ""; - for (CensusKqDto censusKqDto : censusKqDtos) { - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; - } - DingSms dingSms = new DingSms(); - dingSms.setName(teacher.getName()); - dingSms.setTableName("DingSmsNew" + tableSuffix); - dingSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + - "签到时间:" + times[0] + "-" + times[1] + " \n - " + - "整体数据:" + message); - String wapUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + - "&data=" + thirdOpenId + "&type=1&stype=4&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + - "&face=&sourcetype=16&soutype=3×tamp=" + DateUtils.getDate() + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); - dingSms.setSchoolId(teacher.getSchoolId()); - dingSms.setDingUserId(thirdOpenId); - dingSms.setAgentId(appDto.getAgentId()); - dingSms.setWapUrl(wapUrl); - dingSms.setReceiveUserId(teacher.getUserId()); - dingSms.setTdType(TypeEnums.kaoqing.getType()); - this.insertDing(dingSms); - logger.info("盯盯推送班主任—————" + templateId + "--------" + teacher.getName()); - } - } - } - - //盯盯推送宿管 - private void dingChamberPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto) { - String[] times = key.split("_"); - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 0); - if (StringUtils.isNotBlank(thirdOpenId)) { - List censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), 1); - if (censusKqDtos != null && censusKqDtos.size() > 0) { - String message = ""; - for (CensusKqDto censusKqDto : censusKqDtos) { - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; - } - DingSms dingSms = new DingSms(); - dingSms.setName(teacher.getName()); - dingSms.setTableName("DingSmsNew" + tableSuffix); - dingSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + - "签到时间:" + times[0] + "-" + times[1] + " \n - " + - "整体数据:" + message); - String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + - "&pass=" + teacher.getPass() + "&type=4&soutype=3&time=" + DateUtils.date2String(new Date(), DateUtils.format1); - dingSms.setSchoolId(teacher.getSchoolId()); - dingSms.setDingUserId(thirdOpenId); - dingSms.setAgentId(appDto.getAgentId()); - dingSms.setWapUrl(msgUrl); - dingSms.setReceiveUserId(teacher.getUserId()); - dingSms.setTdType(TypeEnums.kaoqing.getType()); - this.insertDing(dingSms); - logger.info("盯盯推送宿管—————" + templateId + "--------" + teacher.getName()); - } - } - } - - //企业号推送班主任 - private void weChatSchoolPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto, int type) { - String[] times = key.split("_"); - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 1); - if (StringUtils.isNotBlank(thirdOpenId)) { - List censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), type); - if (censusKqDtos != null && censusKqDtos.size() > 0) { - String message = ""; - for (CensusKqDto censusKqDto : censusKqDtos) { - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; - } - WeChatSms weChatSms = new WeChatSms(); - weChatSms.setTableName("qyhSmsNew" + tableSuffix); - weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + - "签到时间:" + times[0] + "-" + times[1] + " \n - " + - "整体数据:" + message); - weChatSms.setSchoolId(teacher.getSchoolId()); - weChatSms.setName(teacher.getName()); - weChatSms.setQiYeHaoUserId(thirdOpenId); - weChatSms.setReceiveUserId(teacher.getUserId()); - weChatSms.setAppId(appDto.getAgentId()); - weChatSms.setSecret(appDto.getAgentSecret()); - String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + - "&data=" + thirdOpenId + "&type=1&stype=3&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + - "&face=" + teacher.getFace() + "&sourcetype=16&soutype=2×tamp=" + DateUtils.getDate() + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1) + "&"; - weChatSms.setMsgUrl(msgUrl); - weChatSms.setTdType(TypeEnums.kaoqing.getType()); - this.insertQYH(weChatSms); - logger.info("企业号推送班主任—————" + templateId + "--------" + teacher.getName()); - } - } - } - - //企业号推送宿管 - private void weChatChamberPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto) { - String[] times = key.split("_"); - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); - String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 1); - if (StringUtils.isNotBlank(thirdOpenId)) { - List censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), 1); - if (censusKqDtos != null && censusKqDtos.size() > 0) { - String message = ""; - for (CensusKqDto censusKqDto : censusKqDtos) { - message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; - } - WeChatSms weChatSms = new WeChatSms(); - weChatSms.setTableName("qyhSmsNew" + tableSuffix); - weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + - "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + - "签到时间:" + times[0] + "-" + times[1] + " \n - " + - "整体数据:" + message); - weChatSms.setSchoolId(teacher.getSchoolId()); - weChatSms.setName(teacher.getName()); - weChatSms.setQiYeHaoUserId(thirdOpenId); - weChatSms.setReceiveUserId(teacher.getUserId()); - weChatSms.setAppId(appDto.getAgentId()); - weChatSms.setSecret(appDto.getAgentSecret()); - String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + - "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + - "&pass=" + teacher.getPass() + "&type=4&soutype=2&time=" + DateUtils.date2String(new Date(), DateUtils.format1) + "&"; - weChatSms.setMsgUrl(msgUrl); - weChatSms.setTdType(TypeEnums.kaoqing.getType()); - this.insertQYH(weChatSms); - logger.info("企业号推送宿管—————" + templateId + "--------" + teacher.getName()); - } - } - } - - //type 0 出入校 1 出入寝 - private List getCensus(int id, String templateId, int schoolId, String userId, int type) { - List list = new ArrayList<>(); - String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetailNew?schoolId=" + schoolId + - "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&userId=" + userId + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); - JSONObject jsonObject = HttpClientUtils.httpGet(url); - try { - JSONArray data = (JSONArray) jsonObject.get("data"); - for (int i = 0; i < data.size(); i++) { - CensusKqDto censusKqDto = new CensusKqDto(); - JSONObject object = data.getJSONObject(i); - censusKqDto.setLeaveCount((Integer) object.get("leaveCount")); - censusKqDto.setNotAttendCount((Integer) object.get("noAttendCount")); - censusKqDto.setTargetName((String) object.get("name")); - list.add(censusKqDto); - } - } catch (Exception e) { - - } - return list; - } - - private BigDecimal getAlarmCensus(int id, String templateId, int schoolId, int type) { - int allNumber = 0, attendNumber = 0; - List list = scFeign.selectClassBySchoolId(schoolId); - for (Integer classId : list) { - String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId=" + classId + - "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); - JSONObject jsonObject = HttpClientUtils.httpGet(url); - try { - JSONObject data = (JSONObject) jsonObject.get("data"); - attendNumber = attendNumber + (Integer) data.get("stuAttendCount"); - allNumber = allNumber + (Integer) data.get("stuCount"); - } catch (Exception e) { - e.printStackTrace(); - } - } - if (allNumber != 0) { - BigDecimal pecrent = new BigDecimal(attendNumber).divide(new BigDecimal(allNumber), 10, BigDecimal.ROUND_HALF_DOWN); - return pecrent; - } else { - return BigDecimal.ZERO; - } - - } - - /** - * @param id - * @param templateId - * @param schoolId - * @param type - * @return list(0) 出勤 list(1) 未出勤 List(2) 请假 - */ - private List getIOTCensus(int id, String templateId, int schoolId, int type) { - List result = new ArrayList<>(); - int attend = 0, unattend = 0, leave = 0; - List list = scFeign.selectClassBySchoolId(schoolId); - for (Integer classId : list) { - String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId=" + classId + - "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); - JSONObject jsonObject = HttpClientUtils.httpGet(url); - try { - JSONObject data = (JSONObject) jsonObject.get("data"); - attend = attend + (Integer) data.get("stuAttendCount"); - unattend = unattend + (Integer) data.get("noAttendCount"); - leave = leave + (Integer) data.get("leaveCount"); - } catch (Exception e) { - e.printStackTrace(); - } - } - result.add(attend); - result.add(unattend); - result.add(leave); - return result; - } - - - private void insertDing(DingSms dingSms) { - try { - smsService.insertDing(dingSms); - } catch (Exception e) { - logger.info(e.toString()); - } - } - - private void insertQYH(WeChatSms weChatSms) { - try { - smsService.insertWeChat(weChatSms); - } catch (Exception e) { - logger.info(e.toString()); - } - } - - private void alarmPush(int schoolId) { - String msg = "【考勤异动】"; - try { - SchoolDto schoolDto = scFeign.selectSchoolBySchoolId(schoolId); - msg += schoolDto.getSchoolName() + "考勤有异动,请关注!"; - sendMessage(schoolDto.getSchoolId(), opexList.get(0), msg); - sendMessage(schoolDto.getSchoolId(), opexList.get(1), msg); - sendMessage(schoolDto.getSchoolId(), integration, msg); - String managerPhone = managerService.selectManagerById(schoolDto.getManagerUserId()); - if (StringUtils.isNotBlank(managerPhone)) { - sendMessage(schoolDto.getSchoolId(), managerPhone, msg); - } - } catch (Exception e) { - e.printStackTrace(); - } - - } - - private void sendMessage(int schoolId, String mobile, String msg) { - String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); - ShortMsg shortMsg = new ShortMsg(); - shortMsg.setTableName("smsNew" + tableSuffix); - shortMsg.setSchoolId(schoolId); - shortMsg.setMobile(mobile); - shortMsg.setMsg(msg); - smsService.insertSMS(shortMsg); - } -} +//package com.sincere.quartz.job; +// +//import com.alibaba.fastjson.JSONArray; +//import com.alibaba.fastjson.JSONObject; +//import com.sincere.common.dto.smartCampus.*; +//import com.sincere.common.enums.PushTypeEnums; +//import com.sincere.common.util.DateUtils; +//import com.sincere.common.util.HttpClientUtils; +//import com.sincere.quartz.enums.KqTypeEnums; +//import com.sincere.quartz.enums.TypeEnums; +//import com.sincere.quartz.feign.ScFeign; +//import com.sincere.quartz.model.DingSms; +//import com.sincere.quartz.model.ShortMsg; +//import com.sincere.quartz.model.WeChatSms; +//import com.sincere.quartz.service.ManagerService; +//import com.sincere.quartz.service.SmsService; +//import org.apache.commons.lang3.StringUtils; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.scheduling.annotation.Scheduled; +//import org.springframework.stereotype.Service; +// +//import java.math.BigDecimal; +//import java.util.*; +// +///** +// * 考勤任务推送调用 +// * 主要推送盯盯以及企业号 +// * +// * @author chen +// * @version 1.0 +// * @date 2019/11/27 0027 17:05 +// */ +//@Service +//public class KQJob { +// +// private Logger logger = LoggerFactory.getLogger(KQJob.class); +// +// @Autowired +// ScFeign scFeign; +// +// @Autowired +// SmsService smsService; +// +// @Autowired +// ManagerService managerService; +// +// private static String iotUrl = "http://60.190.202.57:8035"; +// +// private static String date; +// private static Map map = new HashMap<>(); //学校 考勤推送map +// +// private static String alarmDate; +// private static Map alarmMap = new HashMap<>(); //考勤告警推送map +// private static Map templateMap = new HashMap<>(); // 考勤比例 +// +// private static List opexList; +// private static String integration; +// +// static { +// opexList = new ArrayList<>(); +// opexList.add("15857566147"); //王汉栋 +// opexList.add("13858485977"); //王楠彬 +// +// integration = "18767117554"; //林炜 +// } +// +// @Scheduled(cron = "0 0-59 * * * ? ") +// public void kaoQing() { +// String now = DateUtils.date2String(new Date(), DateUtils.format1); +// if (StringUtils.isBlank(date)) { +// initMap(); +// date = now; +// } +// if (!DateUtils.date2String(new Date(), DateUtils.format1).equals(date)) { +// initMap(); +// date = DateUtils.date2String(new Date(), DateUtils.format1); +// } +// //开始过滤数据 推送 +// List keyList = new ArrayList<>(); +// for (Map.Entry entity : map.entrySet()) { +// String endTime = entity.getValue().split("_")[1]; +// if (DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") >= 2 +// && DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") < 5) { +// String key = entity.getKey(); +// String[] messageArray = key.split("_"); +// if (messageArray[2].contains(PushTypeEnums.QIYEHAO.getType() + "")) { +// logger.info("企业号推送:" + messageArray[0] + "__" + messageArray[1]); +// weChatBatchPush(messageArray[0], Integer.valueOf(messageArray[1]), entity.getValue()); +// } +// if (messageArray[2].contains(PushTypeEnums.DING.getType() + "")) { +// logger.info(("盯盯推送:" + messageArray[0] + "__" + messageArray[1])); +// dingBatchPush(messageArray[0], Integer.valueOf(messageArray[1]), entity.getValue()); +// } +// keyList.add(key); +// } +// } +// for (String key : keyList) { +// map.remove(key); +// } +// } +// +// @Scheduled(cron = "0 0-59 * * * ? ") +// public void alarmKaoQing() { +// String now = DateUtils.date2String(new Date(), DateUtils.format1); +// if (StringUtils.isBlank(alarmDate)) { +// initAlarmMap(); +// alarmDate = now; +// } +// if (!DateUtils.date2String(new Date(), DateUtils.format1).equals(alarmDate)) { +// initAlarmMap(); +// alarmDate = DateUtils.date2String(new Date(), DateUtils.format1); +// } +// //开始过滤数据 推送 +// List keyList = new ArrayList<>(); +// for (Map.Entry entity : alarmMap.entrySet()) { +// String endTime = entity.getValue().split("_")[1]; +// if (DateUtils.getDateDifference(new Date(), DateUtils.string2Date(now + " " + endTime + ":00", DateUtils.format2), "m") >= 2 +// ) { +// String key = entity.getKey(); +// keyList.add(key); +// //alarm(entity); //告警 +// //insertIOT(entity); //iot +// } +// } +// for (String key : keyList) { +// map.remove(key); +// } +// } +// +// private void initAlarmMap() { +// alarmMap = new HashMap<>(); +// List list = scFeign.getAllTemplateAlarm(); +// logger.info(("------考勤告警模板------")); +// for (TemplateDto templateDto : list) { +// String config = templateDto.getConfig(); +// String[] array = config.split(" entry) { +// String templateId = entry.getKey().split("_")[0]; +// String schoolId = entry.getKey().split("_")[1]; +// String id = entry.getValue().split("_")[3]; +// String type = entry.getValue().split("_")[2]; +// +// if (DateUtils.getWeek() == 2 || DateUtils.getWeek() == 5) { +// //可以相差40% +// BigDecimal percent = getAlarmCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); +// if (templateMap.get(templateId) != null) { +// if (percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.4)) > 0 +// || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.4)) > 0) { +// alarmPush(Integer.valueOf(schoolId)); +// } +// } +// templateMap.put(templateId, percent); +// } else { +// //相差30% +// BigDecimal percent = getAlarmCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); +// if (templateMap.get(templateId) != null) { +// if (percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.3)) > 0 +// || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.3)) > 0) { +// alarmPush(Integer.valueOf(schoolId)); +// } +// } +// templateMap.put(templateId, percent); +// } +// } +// +// private void insertIOT(Map.Entry entry) { +// String templateId = entry.getKey().split("_")[0]; +// String schoolId = entry.getKey().split("_")[1]; +// String title = entry.getKey().split("_")[2]; +// String id = entry.getValue().split("_")[3]; +// String type = entry.getValue().split("_")[2]; +// String beginTime = entry.getValue().split("_")[0]; +// String endTime = entry.getValue().split("_")[1]; +// +// List list = getIOTCensus(Integer.valueOf(id), templateId, Integer.valueOf(schoolId), Integer.valueOf(type)); +// JSONObject object = new JSONObject(); +// object.put("strTime", beginTime); +// object.put("endTime", endTime); +// object.put("inTime", DateUtils.date2String(new Date(), DateUtils.format1)); +// object.put("noAttendanceCount", list.get(1)); +// object.put("attendanceCount", list.get(0)); +// object.put("leaveCount", list.get(2)); +// object.put("templateName", title); +// object.put("qianDaoIdId", id); +// object.put("schoolId", schoolId); +// object.put("templateId", templateId); +// HttpClientUtils.httpPostJson(iotUrl + "/api/Association/addIntelligenceAttendance", object.toJSONString()); +// } +// +// //初始化要推送的模板 +// private void initMap() { +// map = new HashMap<>(); +// List list = scFeign.getAllTemplate(); +// logger.info(("------需要推送的考勤模板------")); +// for (TemplateDto templateDto : list) { +// String config = templateDto.getConfig(); +// String[] array = config.split(" list = scFeign.getTeacherList(schoolId); +// for (KqTeacherDto teacher : list) { +// dingSchoolPush(templateId, teacher, key, appDto, 0); +// } +// } else { +// //出入寝 推班主任 +// List list = scFeign.getTeacherList(schoolId); +// for (KqTeacherDto teacher : list) { +// dingSchoolPush(templateId, teacher, key, appDto, 1); +// } +// //推宿管 +// List chamberList = scFeign.selectChamberTeacher(schoolId); +// for (KqTeacherDto teacher : chamberList) { +// dingChamberPush(templateId, teacher, key, appDto); +// } +// } +// } +// +// //企业号批量推送 +// private void weChatBatchPush(String templateId, int schoolId, String key) { +// String[] times = key.split("_"); +// AppDto appDto = scFeign.getApp(schoolId, 0); +// if (Integer.valueOf(times[2]) < 7) { +// //出入校 推班主任 +// List list = scFeign.getTeacherList(schoolId); +// for (KqTeacherDto teacher : list) { +// weChatSchoolPush(templateId, teacher, key, appDto, 0); +// } +// } else { +// //出入寝 推班主任 +// List list = scFeign.getTeacherList(schoolId); +// for (KqTeacherDto teacher : list) { +// weChatSchoolPush(templateId, teacher, key, appDto, 1); +// } +// //推宿管 +// List chamberList = scFeign.selectChamberTeacher(schoolId); +// for (KqTeacherDto teacher : chamberList) { +// weChatChamberPush(templateId, teacher, key, appDto); +// } +// } +// } +// +// //盯盯推送班主任 +// private void dingSchoolPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto, int type) { +// String[] times = key.split("_"); +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 0); +// if (StringUtils.isNotBlank(thirdOpenId)) { +// List censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), type); +// if (censusKqDtos != null && censusKqDtos.size() > 0) { +// String message = ""; +// for (CensusKqDto censusKqDto : censusKqDtos) { +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; +// } +// DingSms dingSms = new DingSms(); +// dingSms.setName(teacher.getName()); +// dingSms.setTableName("DingSmsNew" + tableSuffix); +// dingSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + +// "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + +// "签到时间:" + times[0] + "-" + times[1] + " \n - " + +// "整体数据:" + message); +// String wapUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + +// "&data=" + thirdOpenId + "&type=1&stype=4&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + +// "&face=&sourcetype=16&soutype=3×tamp=" + DateUtils.getDate() + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); +// dingSms.setSchoolId(teacher.getSchoolId()); +// dingSms.setDingUserId(thirdOpenId); +// dingSms.setAgentId(appDto.getAgentId()); +// dingSms.setWapUrl(wapUrl); +// dingSms.setReceiveUserId(teacher.getUserId()); +// dingSms.setTdType(TypeEnums.kaoqing.getType()); +// this.insertDing(dingSms); +// logger.info("盯盯推送班主任—————" + templateId + "--------" + teacher.getName()); +// } +// } +// } +// +// //盯盯推送宿管 +// private void dingChamberPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto) { +// String[] times = key.split("_"); +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 0); +// if (StringUtils.isNotBlank(thirdOpenId)) { +// List censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), 1); +// if (censusKqDtos != null && censusKqDtos.size() > 0) { +// String message = ""; +// for (CensusKqDto censusKqDto : censusKqDtos) { +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; +// } +// DingSms dingSms = new DingSms(); +// dingSms.setName(teacher.getName()); +// dingSms.setTableName("DingSmsNew" + tableSuffix); +// dingSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + +// "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + +// "签到时间:" + times[0] + "-" + times[1] + " \n - " + +// "整体数据:" + message); +// String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + +// "&pass=" + teacher.getPass() + "&type=4&soutype=3&time=" + DateUtils.date2String(new Date(), DateUtils.format1); +// dingSms.setSchoolId(teacher.getSchoolId()); +// dingSms.setDingUserId(thirdOpenId); +// dingSms.setAgentId(appDto.getAgentId()); +// dingSms.setWapUrl(msgUrl); +// dingSms.setReceiveUserId(teacher.getUserId()); +// dingSms.setTdType(TypeEnums.kaoqing.getType()); +// this.insertDing(dingSms); +// logger.info("盯盯推送宿管—————" + templateId + "--------" + teacher.getName()); +// } +// } +// } +// +// //企业号推送班主任 +// private void weChatSchoolPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto, int type) { +// String[] times = key.split("_"); +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 1); +// if (StringUtils.isNotBlank(thirdOpenId)) { +// List censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), type); +// if (censusKqDtos != null && censusKqDtos.size() > 0) { +// String message = ""; +// for (CensusKqDto censusKqDto : censusKqDtos) { +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; +// } +// WeChatSms weChatSms = new WeChatSms(); +// weChatSms.setTableName("qyhSmsNew" + tableSuffix); +// weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + +// "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + +// "签到时间:" + times[0] + "-" + times[1] + " \n - " + +// "整体数据:" + message); +// weChatSms.setSchoolId(teacher.getSchoolId()); +// weChatSms.setName(teacher.getName()); +// weChatSms.setQiYeHaoUserId(thirdOpenId); +// weChatSms.setReceiveUserId(teacher.getUserId()); +// weChatSms.setAppId(appDto.getAgentId()); +// weChatSms.setSecret(appDto.getAgentSecret()); +// String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + +// "&data=" + thirdOpenId + "&type=1&stype=3&mobile=" + teacher.getMobile() + "&pass=" + teacher.getPass() + +// "&face=" + teacher.getFace() + "&sourcetype=16&soutype=2×tamp=" + DateUtils.getDate() + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1) + "&"; +// weChatSms.setMsgUrl(msgUrl); +// weChatSms.setTdType(TypeEnums.kaoqing.getType()); +// this.insertQYH(weChatSms); +// logger.info("企业号推送班主任—————" + templateId + "--------" + teacher.getName()); +// } +// } +// } +// +// //企业号推送宿管 +// private void weChatChamberPush(String templateId, KqTeacherDto teacher, String key, AppDto appDto) { +// String[] times = key.split("_"); +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); +// String thirdOpenId = scFeign.getThirdId(teacher.getUserId(), 1); +// if (StringUtils.isNotBlank(thirdOpenId)) { +// List censusKqDtos = getCensus(Integer.valueOf(times[3]), templateId, teacher.getSchoolId(), teacher.getUserId(), 1); +// if (censusKqDtos != null && censusKqDtos.size() > 0) { +// String message = ""; +// for (CensusKqDto censusKqDto : censusKqDtos) { +// message += "[" + censusKqDto.getTargetName() + "]未考勤" + censusKqDto.getNotAttendCount() + "人,请假" + censusKqDto.getLeaveCount() + "人;"; +// } +// WeChatSms weChatSms = new WeChatSms(); +// weChatSms.setTableName("qyhSmsNew" + tableSuffix); +// weChatSms.setMsg("报告类型:" + KqTypeEnums.getName(Integer.valueOf(times[2])) + "出勤报告 \n - " + +// "签到日期:" + DateUtils.date2String(new Date(), DateUtils.format1) + "(" + DateUtils.getWeekName() + ") \n - " + +// "签到时间:" + times[0] + "-" + times[1] + " \n - " + +// "整体数据:" + message); +// weChatSms.setSchoolId(teacher.getSchoolId()); +// weChatSms.setName(teacher.getName()); +// weChatSms.setQiYeHaoUserId(thirdOpenId); +// weChatSms.setReceiveUserId(teacher.getUserId()); +// weChatSms.setAppId(appDto.getAgentId()); +// weChatSms.setSecret(appDto.getAgentSecret()); +// String msgUrl = "http://campus.myjxt.com/studentRecord/znxwwebapp/index.html?" + +// "schoolid=" + teacher.getSchoolId() + "&userId=" + teacher.getUserId() + "&name=" + teacher.getName() + "&TemplateId=" + templateId + +// "&pass=" + teacher.getPass() + "&type=4&soutype=2&time=" + DateUtils.date2String(new Date(), DateUtils.format1) + "&"; +// weChatSms.setMsgUrl(msgUrl); +// weChatSms.setTdType(TypeEnums.kaoqing.getType()); +// this.insertQYH(weChatSms); +// logger.info("企业号推送宿管—————" + templateId + "--------" + teacher.getName()); +// } +// } +// } +// +// //type 0 出入校 1 出入寝 +// private List getCensus(int id, String templateId, int schoolId, String userId, int type) { +// List list = new ArrayList<>(); +// String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetailNew?schoolId=" + schoolId + +// "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&userId=" + userId + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); +// JSONObject jsonObject = HttpClientUtils.httpGet(url); +// try { +// JSONArray data = (JSONArray) jsonObject.get("data"); +// for (int i = 0; i < data.size(); i++) { +// CensusKqDto censusKqDto = new CensusKqDto(); +// JSONObject object = data.getJSONObject(i); +// censusKqDto.setLeaveCount((Integer) object.get("leaveCount")); +// censusKqDto.setNotAttendCount((Integer) object.get("noAttendCount")); +// censusKqDto.setTargetName((String) object.get("name")); +// list.add(censusKqDto); +// } +// } catch (Exception e) { +// +// } +// return list; +// } +// +// private BigDecimal getAlarmCensus(int id, String templateId, int schoolId, int type) { +// int allNumber = 0, attendNumber = 0; +// List list = scFeign.selectClassBySchoolId(schoolId); +// for (Integer classId : list) { +// String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId=" + classId + +// "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); +// JSONObject jsonObject = HttpClientUtils.httpGet(url); +// try { +// JSONObject data = (JSONObject) jsonObject.get("data"); +// attendNumber = attendNumber + (Integer) data.get("stuAttendCount"); +// allNumber = allNumber + (Integer) data.get("stuCount"); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// if (allNumber != 0) { +// BigDecimal pecrent = new BigDecimal(attendNumber).divide(new BigDecimal(allNumber), 10, BigDecimal.ROUND_HALF_DOWN); +// return pecrent; +// } else { +// return BigDecimal.ZERO; +// } +// +// } +// +// /** +// * @param id +// * @param templateId +// * @param schoolId +// * @param type +// * @return list(0) 出勤 list(1) 未出勤 List(2) 请假 +// */ +// private List getIOTCensus(int id, String templateId, int schoolId, int type) { +// List result = new ArrayList<>(); +// int attend = 0, unattend = 0, leave = 0; +// List list = scFeign.selectClassBySchoolId(schoolId); +// for (Integer classId : list) { +// String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId=" + classId + +// "&id=" + id + "&templateID=" + templateId + "&type=" + type + "&time=" + DateUtils.date2String(new Date(), DateUtils.format1); +// JSONObject jsonObject = HttpClientUtils.httpGet(url); +// try { +// JSONObject data = (JSONObject) jsonObject.get("data"); +// attend = attend + (Integer) data.get("stuAttendCount"); +// unattend = unattend + (Integer) data.get("noAttendCount"); +// leave = leave + (Integer) data.get("leaveCount"); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// result.add(attend); +// result.add(unattend); +// result.add(leave); +// return result; +// } +// +// +// private void insertDing(DingSms dingSms) { +// try { +// smsService.insertDing(dingSms); +// } catch (Exception e) { +// logger.info(e.toString()); +// } +// } +// +// private void insertQYH(WeChatSms weChatSms) { +// try { +// smsService.insertWeChat(weChatSms); +// } catch (Exception e) { +// logger.info(e.toString()); +// } +// } +// +// private void alarmPush(int schoolId) { +// String msg = "【考勤异动】"; +// try { +// SchoolDto schoolDto = scFeign.selectSchoolBySchoolId(schoolId); +// msg += schoolDto.getSchoolName() + "考勤有异动,请关注!"; +// sendMessage(schoolDto.getSchoolId(), opexList.get(0), msg); +// sendMessage(schoolDto.getSchoolId(), opexList.get(1), msg); +// sendMessage(schoolDto.getSchoolId(), integration, msg); +// String managerPhone = managerService.selectManagerById(schoolDto.getManagerUserId()); +// if (StringUtils.isNotBlank(managerPhone)) { +// sendMessage(schoolDto.getSchoolId(), managerPhone, msg); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// } +// +// private void sendMessage(int schoolId, String mobile, String msg) { +// String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); +// ShortMsg shortMsg = new ShortMsg(); +// shortMsg.setTableName("smsNew" + tableSuffix); +// shortMsg.setSchoolId(schoolId); +// shortMsg.setMobile(mobile); +// shortMsg.setMsg(msg); +// smsService.insertSMS(shortMsg); +// } +//} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java index 7a8d75a..d60d882 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java @@ -1,29 +1,29 @@ -package com.sincere.quartz.job; - -import com.sincere.quartz.third.yixueyun.YXYReadService; -import com.sincere.quartz.third.yixueyun.YXYWriteService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; - -/** - * @author chen - * @version 1.0 - * @date 2019/12/24 0024 10:54 - */ -@Service -public class SyncJob { - - @Autowired - YXYWriteService yxyWriteService; - - @Autowired - YXYReadService yxyReadService; - - @Scheduled(cron = "30 1 22 * * ? ") - public void Sync(){ - //翼校通的同步 之后还有钉钉的同步等等 - yxyReadService.sync(); - yxyWriteService.sync(); - } -} +//package com.sincere.quartz.job; +// +//import com.sincere.quartz.third.yixueyun.YXYReadService; +//import com.sincere.quartz.third.yixueyun.YXYWriteService; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.scheduling.annotation.Scheduled; +//import org.springframework.stereotype.Service; +// +///** +// * @author chen +// * @version 1.0 +// * @date 2019/12/24 0024 10:54 +// */ +//@Service +//public class SyncJob { +// +// @Autowired +// YXYWriteService yxyWriteService; +// +// @Autowired +// YXYReadService yxyReadService; +// +// @Scheduled(cron = "30 1 22 * * ? ") +// public void Sync(){ +// //翼校通的同步 之后还有钉钉的同步等等 +// yxyReadService.sync(); +// yxyWriteService.sync(); +// } +//} diff --git a/cloud/quartz/src/main/resources/application.yaml b/cloud/quartz/src/main/resources/application.yaml index f84e43b..24f93e7 100644 --- a/cloud/quartz/src/main/resources/application.yaml +++ b/cloud/quartz/src/main/resources/application.yaml @@ -1,5 +1,5 @@ server: - port: 9001 + port: 9002 spring: application: -- libgit2 0.21.0