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 new file mode 100644 index 0000000..b2ece83 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/bean/PermissionBean.java @@ -0,0 +1,27 @@ +package com.example.dahua.bean; + +import java.io.Serializable; +import java.util.List; + +public class PermissionBean implements Serializable { + + private List deviceIds; + + private List weekDays; + + public List getDeviceIds() { + return deviceIds; + } + + public void setDeviceIds(List deviceIds) { + this.deviceIds = deviceIds; + } + + 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/WeekDay.java b/cloud/dahua/src/main/java/com/example/dahua/bean/WeekDay.java new file mode 100644 index 0000000..a2a0361 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/bean/WeekDay.java @@ -0,0 +1,27 @@ +package com.example.dahua.bean; + +import java.io.Serializable; +import java.util.List; + +public class WeekDay implements Serializable { + + private int weekDay; + + private List weekTimes; + + public int getWeekDay() { + return weekDay; + } + + public void setWeekDay(int weekDay) { + this.weekDay = weekDay; + } + + public List getWeekTimes() { + return weekTimes; + } + + public void setWeekTimes(List weekTimes) { + this.weekTimes = weekTimes; + } +} 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 new file mode 100644 index 0000000..22ceea3 --- /dev/null +++ b/cloud/dahua/src/main/java/com/example/dahua/bean/WeekTime.java @@ -0,0 +1,26 @@ +package com.example.dahua.bean; + +import java.io.Serializable; + +public class WeekTime implements Serializable { + + private String startTime; + + private String endTime; + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } +} 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 42ac10e..984bada 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 @@ -3,6 +3,7 @@ package com.example.dahua.control; 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.lib.CompressPic; import com.example.dahua.service.UserService; import com.example.dahua.utils.*; @@ -56,6 +57,13 @@ public class UserControl { return HttpUtils.uploadImgs(new File(file), schoolId, studentCode, clint_type, file.contains("Teacher") ? 1 : 2); } + @RequestMapping(value = "sendPermission", method = RequestMethod.POST) + @ApiOperation(value = "设置权限") + public boolean sendPermission(@RequestBody PermissionBean permissionBean) { + userService.sendPermission(permissionBean); + return true; + } + @RequestMapping(value = "imgsSend", method = RequestMethod.GET) @ApiOperation(value = "照片下放") 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 e8acde9..c6cc632 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,11 @@ package com.example.dahua.module; import java.io.UnsupportedEncodingException; +import java.util.List; +import com.example.dahua.bean.PermissionBean; +import com.example.dahua.bean.WeekDay; +import com.example.dahua.bean.WeekTime; import com.example.dahua.lib.NetSDKLib; import com.example.dahua.lib.NetSDKLib.*; import com.example.dahua.lib.ToolKits; @@ -247,6 +251,67 @@ public class GateModule { } /** + * 门禁刷卡时间段设置 + */ + public static void setAccessTimeSchedule(LLong lLong, PermissionBean permissionBean) { + + 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; + + } + } + +// 获取 +// 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"); + } + } + 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()); +// } + } + + /** * 修改卡信息 * * @param recordNo 记录集编号 @@ -908,4 +973,6 @@ public class GateModule { m_lFindHandle.setValue(0); } } + + } diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/UserService.java b/cloud/dahua/src/main/java/com/example/dahua/service/UserService.java index f1814e2..a11d04e 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/service/UserService.java +++ b/cloud/dahua/src/main/java/com/example/dahua/service/UserService.java @@ -1,6 +1,7 @@ package com.example.dahua.service; import com.example.dahua.bean.AttendanceBean; +import com.example.dahua.bean.PermissionBean; import com.example.dahua.bean.UserInfoBean; import org.springframework.scheduling.annotation.Async; import org.springframework.web.multipart.MultipartFile; @@ -49,5 +50,11 @@ public interface UserService { */ void sendUserInfos(String schoolId, String clint_type, int type); + /** + * 下发权限 + * @param permissionBean + * @return + */ + boolean sendPermission(PermissionBean permissionBean); } 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 index b12c889..618829e 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java +++ b/cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java @@ -1,10 +1,11 @@ package com.example.dahua.service; +import com.example.dahua.MyTask; import com.example.dahua.async.SendUserInfoTask; -import com.example.dahua.bean.AttendanceBean; -import com.example.dahua.bean.TeacherBean; -import com.example.dahua.bean.UserInfoBean; +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; @@ -99,4 +100,18 @@ public class UserServiceImp implements UserService { 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/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java index c6d91e5..07eaddc 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java @@ -674,6 +674,8 @@ public class CMSServer implements ApplicationRunner { * @param clint_id */ 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(); @@ -717,6 +719,9 @@ public class CMSServer implements ApplicationRunner { } 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 37857eb..579e198 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 @@ -2,10 +2,15 @@ package com.sincere.haikangface.async; import com.sincere.haikangface.CMSServer; +import com.sincere.haikangface.bean.face.PermissionBean; +import com.sincere.haikangface.bean.face.WeekDay; +import com.sincere.haikangface.bean.face.WeekTime; import com.sincere.haikangface.dao.DeviceDao; 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; @@ -20,6 +25,7 @@ import java.net.URL; import java.util.*; @Component +@Slf4j public class SendUserAsync { @@ -51,7 +57,7 @@ public class SendUserAsync { 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("00:00:00", "23:00:00", "" + 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), "设置卡权限"); } @@ -63,6 +69,56 @@ public class SendUserAsync { } + + /** + * 下发权限 + * @param permissionBean + */ + public boolean sendPermiss(PermissionBean permissionBean) { + + String cardNum = permissionBean.getCardNum(); + List deviceIds = permissionBean.getDeviceIds(); + String userType = permissionBean.getUserType(); + List weekDays = permissionBean.getWeekDays(); + + for (String deviceId : + deviceIds) { + if (!cmsServer.getIsDeviceOnline(deviceId)){//设备在线 + cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); + cmsServer.SetCardWeekPlan(deviceId, cardNum, userType, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); + + for (WeekDay weekDay: + weekDays) { + + List weekTimes = weekDay.getWeekTimes(); + int weekdayIndex = weekDay.getWeekDay(); + + StringBuffer stringBuffer = new StringBuffer();//添加时间集 + + for (WeekTime weetTime : + weekTimes) { + + String weekPlanTimes = HKXmlUtils.getInstance().SetCardWeekPlanTimes(weetTime.getStartTime(),weetTime.getEndTime()); + log.error("weekPlanTimes:{}",weekPlanTimes); + stringBuffer.append(weekPlanTimes); + + } + 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+"不在线"); + } + + } + + return true; + } + + + /** * 调用传图片接口 * diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/FaceBean.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/FaceBean.java new file mode 100644 index 0000000..119c56e --- /dev/null +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/FaceBean.java @@ -0,0 +1,118 @@ +package com.sincere.haikangface.bean.face; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.io.Serializable; + +/** + * 下发人脸参数对象 + */ +@JsonInclude(JsonInclude.Include.NON_EMPTY) +public class FaceBean implements Serializable { + + + private String srcFilePath;//源文件路径 + + private String targetFilePath;//压缩后的目标文件路径 + + private String cardNum;//卡号 + + private String cardStartTime;//卡有效开始时间 + + private String cardEndTime;//卡失效时间 + + private String validTimeEnabled;//卡是否生效 1:生效 0:失效 + + private String stuName;//学生名字 + + private String deviceId;//设备id + + private String userType;//身份类型 + + public String getSrcFilePath() { + return srcFilePath; + } + + public void setSrcFilePath(String srcFilePath) { + this.srcFilePath = srcFilePath; + } + + public String getTargetFilePath() { + return targetFilePath; + } + + public void setTargetFilePath(String targetFilePath) { + this.targetFilePath = targetFilePath; + } + + public String getCardNum() { + return cardNum; + } + + public void setCardNum(String cardNum) { + this.cardNum = cardNum; + } + + public String getCardStartTime() { + return cardStartTime; + } + + public void setCardStartTime(String cardStartTime) { + this.cardStartTime = cardStartTime; + } + + public String getCardEndTime() { + return cardEndTime; + } + + public void setCardEndTime(String cardEndTime) { + this.cardEndTime = cardEndTime; + } + + public String getValidTimeEnabled() { + return validTimeEnabled; + } + + public void setValidTimeEnabled(String validTimeEnabled) { + this.validTimeEnabled = validTimeEnabled; + } + + public String getStuName() { + return stuName; + } + + public void setStuName(String stuName) { + this.stuName = stuName; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getUserType() { + return userType; + } + + public void setUserType(String userType) { + this.userType = userType; + } + + @Override + public String toString() { + return "FaceBean{" + + "srcFilePath='" + srcFilePath + '\'' + + ", targetFilePath='" + targetFilePath + '\'' + + ", cardNum='" + cardNum + '\'' + + ", cardStartTime='" + cardStartTime + '\'' + + ", cardEndTime='" + cardEndTime + '\'' + + ", validTimeEnabled='" + validTimeEnabled + '\'' + + ", stuName='" + stuName + '\'' + + ", deviceId='" + deviceId + '\'' + + ", userType='" + userType + '\'' + + '}'; + } +} 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 new file mode 100644 index 0000000..8a58cf6 --- /dev/null +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/PermissionBean.java @@ -0,0 +1,47 @@ +package com.sincere.haikangface.bean.face; + +import java.io.Serializable; +import java.util.List; + +public class PermissionBean implements Serializable { + + private List deviceIds; + + private String cardNum; + + private String userType;//学生类型 + + private List weekDays; + + public List getDeviceIds() { + return deviceIds; + } + + public void setDeviceIds(List deviceIds) { + this.deviceIds = deviceIds; + } + + public String getCardNum() { + return cardNum; + } + + public void setCardNum(String cardNum) { + this.cardNum = cardNum; + } + + 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/haikangface/src/main/java/com/sincere/haikangface/bean/face/WeekDay.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/WeekDay.java new file mode 100644 index 0000000..1eeb2ef --- /dev/null +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/WeekDay.java @@ -0,0 +1,28 @@ +package com.sincere.haikangface.bean.face; + +import java.io.Serializable; +import java.util.List; + +public class WeekDay implements Serializable { + + + private int weekDay; + + private List weekTimes; + + public int getWeekDay() { + return weekDay; + } + + public void setWeekDay(int weekDay) { + this.weekDay = weekDay; + } + + public List getWeekTimes() { + return weekTimes; + } + + public void setWeekTimes(List weekTimes) { + this.weekTimes = weekTimes; + } +} diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/WeekTime.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/WeekTime.java new file mode 100644 index 0000000..3642fb8 --- /dev/null +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/WeekTime.java @@ -0,0 +1,27 @@ +package com.sincere.haikangface.bean.face; + +import java.io.Serializable; + +public class WeekTime implements Serializable { + + private String startTime; + + private String endTime; + + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } +} 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 a940f44..0e3a0d4 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 @@ -8,6 +8,7 @@ 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.face.PermissionBean; import com.sincere.haikangface.dao.UserDao; import com.sincere.haikangface.fegin.HaikangfaceFegin; import com.sincere.haikangface.utils.*; @@ -53,6 +54,18 @@ public class UserControl { SendRecoderUtils sendRecoderUtils; + + @RequestMapping(value = "sendPermiss", method = RequestMethod.POST) + @ApiOperation("下发权限给设备") + public boolean sendPermiss(@RequestBody PermissionBean permissionBean) { + + if (!StringUtils.isEmpty(permissionBean)) { + return sendUserAsync.sendPermiss(permissionBean); + } + return false; + } + + @RequestMapping(value = "sendStuCardAndImg", method = RequestMethod.GET) @ApiOperation("下发人脸给设备") public boolean sendCardAndImg(@RequestParam("filePath") String filePath, @RequestParam("card") String card 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 8a8ac97..880757a 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 @@ -114,7 +114,7 @@ public class HKXmlUtils { /** * 设置卡权限周计划时间 */ - public String SetCardWeekPlanTime(String startTime, String endTime, String weekDay) { + public String SetCardWeekPlanTime(String weekPlanTime, String weekDay) { return "\n" + "SetCardWeekPlanTime\n" + "1\n" + @@ -122,11 +122,36 @@ public class HKXmlUtils { "\n" + "\n" + "\n" + - "" + startTime + "\n" + - "" + endTime + "\n" + + weekPlanTime + "\n" + "\n" + "\n" + "\n" + ""; +// return "\n" + +// "SetCardWeekPlanTime\n" + +// "1\n" + +// "" + weekDay + "\n" + +// "\n" + +// "\n" + +// "\n" + +// "" + startTime + "\n" + +// "" + endTime + "\n" + +// "\n" + +// "\n" + +// "\n" + +// ""; + } + + + /** + * 设置多个周计划时间段 + * + * @param startTime + * @param endTime + * @return + */ + public String SetCardWeekPlanTimes(String startTime, String endTime) { + return "" + startTime + "\n" + + "" + endTime + "\n"; } } -- libgit2 0.21.0