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 a7a012c..fd1775a 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 @@ -28,3 +28,4 @@ public class WeekTime implements Serializable { this.endTime = endTime; } } + 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 2f04592..6dee7ef 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 @@ -191,6 +191,12 @@ public class FileControl { return clearCard; } + @RequestMapping(value = "getUserCard", method = RequestMethod.GET) + @ApiOperation(value = "获取卡信息") + public void clearFaceInfo(@RequestParam("userId") String userId,@RequestParam("deviceId") String deviceId) { + GateModule.getCard(userId, MyTask.lLongSendMap.get(deviceId)); + } + public String cardNo(String cardDex) { @@ -209,7 +215,6 @@ public class FileControl { } - @Autowired private DeleteBatchTest deleteBatchTest; diff --git a/cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java b/cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java index 4f7f1cf..97e0bc5 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java +++ b/cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java @@ -139,7 +139,7 @@ public interface UserDao { @Select("select Top(1) PlaceId from XA_PlaceAttendance where KanBanAttendance = #{kanBanDevId}") String getPlaceIdWithKanBanDevid(@Param("kanBanDevId") String kanBanDevId); - @Select("select KanBanAttendance from XA_PlaceAttendance where PlaceId = #{PlaceId} and (len(KanBanAttendance)>0 and KanBanAttendance is not null )") + @Select("select KanBanAttendance from XA_PlaceAttendance where PlaceId = #{PlaceId} and (len(KanBanAttendance)>0 and KanBanAttendance is not null)") List getKanBanIdWithPlaceId(@Param("PlaceId") String placeId); @Select("select user_id,studentcode from SZ_V_School_Student where school_id = 27") @@ -269,6 +269,4 @@ public interface UserDao { List queryClintList(@Param("schoolId") Integer schoolId,@Param("deviceId")String deviceId); List queryStudentIdList(@Param("schoolId") Integer schoolId,@Param("roomId")Integer roomId); - - } 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 606fe6b..6fa9e37 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 @@ -988,8 +988,7 @@ public class GateModule { System.out.println("[" + i + "]卡号 : " + new String(cards[i].szCardNo).trim()); System.out.println("[" + i + "]卡类型 : " + cards[i].emType); - System.out.println("[" + i + "]查询卡结果 : " - + failCodes[i].nFailCode + "\n"); + System.out.println("[" + i + "]查询卡结果 : " + failCodes[i].nFailCode + "\n"); } } else { System.err.println("查询卡失败, " + ToolKits.getErrorCodePrint()); 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 8ba82b8..0e2e44f 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java @@ -7,6 +7,7 @@ import com.sincere.haikangface.bean.AttendanceBean; import com.sincere.haikangface.bean.BaiduFaceRecorder; import com.sincere.haikangface.bean.StudentBean; import com.sincere.haikangface.bean.TeacherBean; +import com.sincere.haikangface.bean.xiaoan.CheckIn; import com.sincere.haikangface.bean.xiaoan.Face_Recoder; import com.sincere.haikangface.dao.DeviceDao; import com.sincere.haikangface.dao.UserDao; @@ -17,6 +18,7 @@ import com.sincere.haikangface.mqtt.MqtUtils; import com.sincere.haikangface.service.impl.BaseService; import com.sincere.haikangface.utils.AlarmUtils; import com.sincere.haikangface.utils.HttpUtil; +import com.sincere.haikangface.utils.JsonUtils; import com.sincere.haikangface.utils.SpringContextHolder; import com.sincere.haikangface.xiananDao.SendRecordDao; import com.sun.jna.NativeLong; @@ -65,7 +67,7 @@ public class CMSServer implements ApplicationRunner { //114.55.30.100 //120.26.116.253 // private String ip_cloud = "114.55.30.100"; - private String ip_cloud = "114.55.30.100"; + private String ip_cloud = "120.26.116.253"; private String ip; { @@ -366,6 +368,7 @@ public class CMSServer implements ApplicationRunner { pPlateInfo.write(0, pAlarmMsg.pXmlBuf.getByteArray(0, strXMLData.size()), 0, strXMLData.size()); strXMLData.read(); String strXML = new String(strXMLData.byValue); +// log.info("strXML: "+strXML); if (null == alarmUtils) { log.info("初始化报警工具类"); alarmUtils = new AlarmUtils(deviceDao, userDao); @@ -373,10 +376,18 @@ public class CMSServer implements ApplicationRunner { @Override public void callBack(String minorType, String deviceID, String cardNo, String time, String picDataUrlId, String currTemperature) { saveAttendance(deviceID); + AttendanceBean attendanceBean = deviceDao.selectDevice(deviceID); + int outOrIn = attendanceBean.getOutOrIn(); + String schoolId = attendanceBean.getSchool_id(); switch (minorType) { case "0x4b"://人脸认证通过 log.info("人脸验证通过,事件次类型:"+minorType); - saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature); + //人脸记录 + saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature,outOrIn); + //944柯桥实验幼儿园,海康一体机考勤签到 + if(Integer.parseInt(schoolId)== 944 && !StringUtils.isEmpty(cardNo) && isNumeric(cardNo)){ + kaoQinRecord(outOrIn,cardNo,deviceID,time); + } break; case "0x426"://人证设备在线 break; @@ -387,11 +398,19 @@ public class CMSServer implements ApplicationRunner { break; case "0x69"://人证比对通过 log.info("人证比对通过,事件次类型:"+minorType); - saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature); + saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature,outOrIn); + //944柯桥实验幼儿园,海康一体机考勤签到 + if(Integer.parseInt(schoolId)== 944 && !StringUtils.isEmpty(cardNo)&& isNumeric(cardNo)){ + kaoQinRecord(outOrIn,cardNo,deviceID,time); + } break; case "0x6": log.info("通过,事件次类型:"+minorType); - saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature); + saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature,outOrIn); + //944柯桥实验幼儿园,海康一体机考勤签到 + if(Integer.parseInt(schoolId)== 944 && !StringUtils.isEmpty(cardNo) && isNumeric(cardNo)){ + kaoQinRecord(outOrIn,cardNo,deviceID,time); + } break; } } @@ -406,6 +425,27 @@ public class CMSServer implements ApplicationRunner { } } + public void kaoQinRecord(int outOrIn,String cardNo,String deviceId,String eventTime) { + BaseService baseService = SpringContextHolder.getBaseService(); + //十进制卡转十六进制卡 + String card = splicingZero(Long.toHexString(Long.parseLong(cardNo)), 8).toUpperCase(); + //卡号逆转 + cardNo = baseService.getCard(card); + //有效刷卡调考勤存储过程 + CheckIn checkIn = new CheckIn(); + checkIn.setDeviceId(deviceId); + checkIn.setCardNo(cardNo); + checkIn.setFunNo(8); + checkIn.setFlag(outOrIn == 1 ? 1:0); + checkIn.setCheckTime(eventTime); + sendRecordDao.checkIn(checkIn); + if (checkIn.getIsSuccess() == 1) { + log.info("考勤成功: checkIn: {}, 方向:{}", JsonUtils.nonDefaultMapper().toJson(checkIn),outOrIn == 1 ? "门" : "出门"); + } else { + log.info("考勤失败: checkIn: {}, 方向:{}",JsonUtils.nonDefaultMapper().toJson(checkIn),outOrIn == 1 ? "进门" : "出门"); + } + } + /** * 判断设备是否在线 * @param deviceId @@ -420,7 +460,7 @@ public class CMSServer implements ApplicationRunner { * @param time * @param picDataUrlId */ - private void saveFaceRecoder(String deviceID, String cardNo, String time, String picDataUrlId, String currTemperature) { + private void saveFaceRecoder(String deviceID, String cardNo, String time, String picDataUrlId, String currTemperature,int OutOrIn) { BaseService baseService = SpringContextHolder.getBaseService(); try { if (!StringUtils.isEmpty(cardNo) && isNumeric(cardNo)) { @@ -430,7 +470,6 @@ public class CMSServer implements ApplicationRunner { //卡号逆转 cardNo = baseService.getCard(card); StudentBean studentBean = userDao.getStudentWithCard(cardNo,null); - AttendanceBean attendanceBean = deviceDao.selectDevice(deviceID); if (null != studentBean) { String name = studentBean.getName(); int schoolId = studentBean.getSchool_id(); @@ -441,7 +480,7 @@ public class CMSServer implements ApplicationRunner { face_recoder.setTime(time); face_recoder.setName(name); face_recoder.setUser_id(studentBean.getUser_id()); - face_recoder.setInOrOut(attendanceBean.getOutOrIn()); + face_recoder.setInOrOut(OutOrIn); String imgUrl = "http://" + ip_cloud + ":8081/kms/services/rest/dataInfoService/downloadFile?id=" + picDataUrlId; face_recoder.setImgurl(imgUrl); log.info("设备: {},人脸抓怕:学校id: {} ,班级:{} ,用户名:{} ,卡号:{} ,",deviceID,schoolId,className,name,cardNo); diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/xiaoan/CheckIn.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/xiaoan/CheckIn.java new file mode 100644 index 0000000..5fe1c9f --- /dev/null +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/bean/xiaoan/CheckIn.java @@ -0,0 +1,74 @@ +package com.sincere.haikangface.bean.xiaoan; + +/** + * @author chen + * @version 1.0 + * @date 2019/10/30 0030 10:26 + */ +public class CheckIn { + + private String deviceId ; + private String cardNo ; + private int funNo ; + private int flag ; + private String checkTime ; + + private String out; + private int isSuccess ; + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getCardNo() { + return cardNo; + } + + public void setCardNo(String cardNo) { + this.cardNo = cardNo; + } + + public int getFlag() { + return flag; + } + + public void setFlag(int flag) { + this.flag = flag; + } + + public String getCheckTime() { + return checkTime; + } + + public void setCheckTime(String checkTime) { + this.checkTime = checkTime; + } + + public String getOut() { + return out; + } + + public void setOut(String out) { + this.out = out; + } + + public int getIsSuccess() { + return isSuccess; + } + + public void setIsSuccess(int isSuccess) { + this.isSuccess = isSuccess; + } + + public int getFunNo() { + return funNo; + } + + public void setFunNo(int funNo) { + this.funNo = funNo; + } +} diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/DeviceDao.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/DeviceDao.java index 95b7cd1..4b77d76 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/DeviceDao.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/DeviceDao.java @@ -6,6 +6,7 @@ import com.sincere.haikangface.bean.AttendanceBean; import com.sincere.haikangface.bean.FaceWaterRecoder; import com.sincere.haikangface.bean.PlaceAttendance; import com.sincere.haikangface.bean.QianDaoManager; +import com.sincere.haikangface.bean.xiaoan.CheckIn; import org.apache.ibatis.annotations.*; import org.springframework.stereotype.Repository; @@ -57,5 +58,4 @@ public interface DeviceDao { @Select("select * from SZ_Attendance where clint_type = #{clint_type} and school_id = #{school_id}") List selectDeviceWithschool_id(@Param("clint_type") String clint_type, @Param("school_id") String school_id); - } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/xiananDao/SendRecordDao.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/xiananDao/SendRecordDao.java index d1444ed..f2d76ac 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/xiananDao/SendRecordDao.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/xiananDao/SendRecordDao.java @@ -3,6 +3,7 @@ package com.sincere.haikangface.xiananDao; import com.sincere.haikangface.bean.AttendanceRecords; import com.sincere.haikangface.bean.SendRecordBean; import com.sincere.haikangface.bean.xiaoan.AttendanceRecordsSS; +import com.sincere.haikangface.bean.xiaoan.CheckIn; import com.sincere.haikangface.bean.xiaoan.CreditCardRecordsSS; import org.apache.ibatis.annotations.*; import org.springframework.stereotype.Repository; @@ -162,4 +163,11 @@ public interface SendRecordDao { @Select("select top 1000 * from Face_SendFail where schoolId = 865 ") List getFaceFailList(); + + /** + * 考勤推送存储过程 + * @param checkIn + * @return + */ + void checkIn(CheckIn checkIn); } diff --git a/cloud/haikangface/src/main/resources/application.yaml b/cloud/haikangface/src/main/resources/application.yaml index c8760de..6a95634 100644 --- a/cloud/haikangface/src/main/resources/application.yaml +++ b/cloud/haikangface/src/main/resources/application.yaml @@ -3,7 +3,7 @@ server: spring: profiles: - active: prod + active: dev application: name: haikangserver servlet: diff --git a/cloud/haikangface/src/main/resources/xiaoanmapper/usermapper.xml b/cloud/haikangface/src/main/resources/xiaoanmapper/usermapper.xml index b93634e..57bf9a4 100644 --- a/cloud/haikangface/src/main/resources/xiaoanmapper/usermapper.xml +++ b/cloud/haikangface/src/main/resources/xiaoanmapper/usermapper.xml @@ -1,12 +1,16 @@ - + - - - - - - + + + + + + {call AttendanceService( + #{deviceId,mode=IN},#{cardNo,mode=IN},#{funNo,mode=IN},#{flag,mode=IN},#{checkTime,mode=IN}, + #{out,mode=OUT,jdbcType=VARCHAR,resultMap=resultMap},#{isSuccess,mode=OUT,jdbcType=INTEGER,resultMap=resultMap} + )} + diff --git a/cloud/pom.xml b/cloud/pom.xml index d20b2ee..60339c1 100644 --- a/cloud/pom.xml +++ b/cloud/pom.xml @@ -30,7 +30,7 @@ autho common getaway - + dahua haikangface -- libgit2 0.21.0