Commit 533102565aaa8093fc7bec7f246cba165b20cf5d

Authored by 徐泉
1 parent 4fd85d85
Exists in master

大华项目代码提交

cloud/dahua/src/main/java/com/example/dahua/MyTask.java
... ... @@ -443,12 +443,13 @@ public class MyTask implements ApplicationRunner {
443 443 checkIn.setFlag(eventType == 2 ? 1 : 0);
444 444 checkIn.setCheckTime(eventTime);
445 445 searchMapper.checkIn(checkIn);
  446 +
446 447 if (checkIn.getIsSuccess() == 1) {
447 448 //考勤成功
448 449 String content = "考勤成功!,设备:" + deviceId + "卡号:" + cardNo + "方向:" + (eventType == 1 ? "进门" : "出门") + "______" + eventTime;
449 450  
450 451 //开始推送看板
451   - sendMQMess(content,deviceId,eventType);
  452 + sendMQMess(deviceId,cardNo,eventType);
452 453  
453 454 //记录学生考勤签到记录
454 455 FileUtils.getInstance().writeLogs(content, FileUtils.qiandaoSuccess);
... ...
cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask.java
... ... @@ -328,7 +328,7 @@ public class SendUserInfoTask {
328 328  
329 329 String studentType = userDao.getStudentType(attendanceBean.getSchool_id(),sendRecordBean.getCustomerid());
330 330 //通道号
331   - int channel = analysisPermission(Integer.parseInt(attendanceBean.getSchool_id()),studentType);
  331 + String channel = analysisPermission(Integer.parseInt(attendanceBean.getSchool_id()),studentType);
332 332  
333 333 /**
334 334 * 注:用户下发逻辑
... ... @@ -370,10 +370,12 @@ public class SendUserInfoTask {
370 370 log.info("=================开始执行下发人脸及卡号任务=================");
371 371 //卡号取反
372 372 String cardNum ="";
373   - if(attendanceBean.getClint_id().startsWith("ytj")&&Integer.parseInt(attendanceBean.getSchool_id())!=126&&Integer.parseInt(attendanceBean.getSchool_id())!=393)
374   - {cardNum = student_num;}
375   - else
376   - {cardNum = cardNo(student_num);}
  373 + if(attendanceBean.getClint_id().startsWith("ytj")&&Integer.parseInt(attendanceBean.getSchool_id())!=126
  374 + &&Integer.parseInt(attendanceBean.getSchool_id())!=393) {
  375 + cardNum = student_num;
  376 + } else {
  377 + cardNum = cardNo(student_num);
  378 + }
377 379 //bCardFlags = true, 存在下发记录,则存在下发记录集编号,执行修改卡、人脸信息
378 380 if (bCardFlags ==1) {
379 381 //修改设备卡信息
... ... @@ -510,7 +512,7 @@ public class SendUserInfoTask {
510 512 * @param studentType
511 513 * @return
512 514 */
513   - private int analysisPermission(int schoolId, String studentType){
  515 + private String analysisPermission(int schoolId, String studentType){
514 516 List<PermissionFaceBean> permissionFaceBeans = permissFaceService.getPermissionList(schoolId);
515 517 String channel ="";
516 518 if(permissionFaceBeans.size()>0){
... ... @@ -523,22 +525,24 @@ public class SendUserInfoTask {
523 525 channel= permissionFaceBean.getChannel();
524 526 }
525 527 }
  528 + if(StringUtils.isEmpty(channel)){
  529 + log.warn("未获取到学校权限通道号!");
  530 + return "";
  531 + }
  532 + return channel;
526 533 }
527   - if(StringUtils.isEmpty(channel)){
528   - log.warn("未获取到学校权限通道号!");
529   - return 0;
530   - }
531   - return Integer.parseInt(channel);
  534 + return channel;
532 535 }
533 536  
534   -
535 537 public static void main(String[] args) {
536   - String json ="{\"studentType\":\"1,2\",\"deviceIds\":[\"aaa\"],\"weekDays\":[{\"weekTimes\":[{\"startTime\":\"12:00\",\"endTime\":\"06:00\"}],\"sex\":\"1,2\",\"weekDay\":\"0,1,2\"}]}";
537   - PermissionBean permissionBean = objectMapper.fromJson(json,PermissionBean.class);
538   - String studentType = permissionBean.getStudentType();
539   - if(studentType.indexOf("1")!=-1){
540   - System.out.println(true);
541   - }
  538 +// String json ="{\"studentType\":\"1,2\",\"deviceIds\":[\"aaa\"],\"weekDays\":[{\"weekTimes\":[{\"startTime\":\"12:00\",\"endTime\":\"06:00\"}],\"sex\":\"1,2\",\"weekDay\":\"0,1,2\"}]}";
  539 +// PermissionBean permissionBean = objectMapper.fromJson(json,PermissionBean.class);
  540 +// String studentType = permissionBean.getStudentType();
  541 +// if(studentType.indexOf("1")!=-1){
  542 +// System.out.println(true);
  543 +// }
  544 + String channel ="";
  545 + System.out.println(Integer.parseInt(channel));
542 546 }
543 547  
544 548 /**
... ...
cloud/dahua/src/main/java/com/example/dahua/enums/EnumSendFaceErrorType.java
... ... @@ -9,6 +9,7 @@ import org.apache.commons.lang.StringUtils;
9 9 */
10 10 public enum EnumSendFaceErrorType {
11 11  
  12 + CHECK_DATA_ERR_21("21", "对返回数据的校验出错"),
12 13 EXCEED_SIZE_1028("1028", "图片大小超限"),
13 14 NOT_EXIST_USER_1029("1029", "用户ID不存在"),
14 15 EXTRACT_ERROR_1030("1030", "照片特征值提取失败"),
... ...
cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java
... ... @@ -13,6 +13,7 @@ import com.sun.jna.Memory;
13 13 import com.sun.jna.Pointer;
14 14 import com.sun.jna.ptr.IntByReference;
15 15 import lombok.extern.slf4j.Slf4j;
  16 +import org.springframework.util.StringUtils;
16 17  
17 18 import javax.imageio.ImageIO;
18 19 import java.awt.image.BufferedImage;
... ... @@ -202,91 +203,97 @@ public class GateModule {
202 203 // return true;
203 204 }
204 205  
  206 + /**
  207 + * 门禁卡记录集信息
  208 + */
  209 + private static final NET_RECORDSET_ACCESS_CTL_CARD insertCardInfo = new NET_RECORDSET_ACCESS_CTL_CARD();
  210 + /**
  211 + * 记录集操作
  212 + */
  213 + private static final NET_CTRL_RECORDSET_INSERT_PARAM insert = new NET_CTRL_RECORDSET_INSERT_PARAM();
205 214  
206 215 public static synchronized int insertCard(String cardNo, String userId, String cardName, String cardPwd,
207 216 int cardStatus, int cardType, int useTimes, int isFirstEnter,
208 217 int isValid, String startValidTime, String endValidTime, LLong lLong,
209   - String userType,int channel) {
210   - /**
211   - * 门禁卡记录集信息
212   - */
213   - NET_RECORDSET_ACCESS_CTL_CARD accessCardInfo = new NET_RECORDSET_ACCESS_CTL_CARD();
214   -
  218 + String userType,String channel) {
215 219 // 卡号
216   - System.arraycopy(cardNo.getBytes(), 0, accessCardInfo.szCardNo, 0, cardNo.getBytes().length);
  220 + System.arraycopy(cardNo.getBytes(), 0, insertCardInfo.szCardNo, 0, cardNo.getBytes().length);
217 221  
218 222 // 用户ID
219   - System.arraycopy(userId.getBytes(), 0, accessCardInfo.szUserID, 0, userId.getBytes().length);
  223 + System.arraycopy(userId.getBytes(), 0, insertCardInfo.szUserID, 0, userId.getBytes().length);
220 224  
221 225 // 卡名(设备上显示的姓名)
222 226 try {
223   - System.arraycopy(cardName.getBytes("GBK"), 0, accessCardInfo.szCardName, 0, cardName.getBytes("GBK").length);
  227 + System.arraycopy(cardName.getBytes("GBK"), 0, insertCardInfo.szCardName, 0, cardName.getBytes("GBK").length);
224 228 } catch (UnsupportedEncodingException e) {
225 229 e.printStackTrace();
226 230 }
227 231  
228 232 // 卡密码
229   - System.arraycopy(cardPwd.getBytes(), 0, accessCardInfo.szPsw, 0, cardPwd.getBytes().length);
  233 + System.arraycopy(cardPwd.getBytes(), 0, insertCardInfo.szPsw, 0, cardPwd.getBytes().length);
230 234  
231 235 //-- 设置开门权限
232   - accessCardInfo.nDoorNum = 2;
233   - accessCardInfo.sznDoors[0] = 0;
234   - accessCardInfo.sznDoors[1] = 1;
235   - accessCardInfo.nTimeSectionNum = 2; // 与门数对应
  236 + insertCardInfo.nDoorNum = 2;
  237 + insertCardInfo.sznDoors[0] = 0;
  238 + insertCardInfo.sznDoors[1] = 1;
  239 + insertCardInfo.nTimeSectionNum = 2; // 与门数对应
236 240 if (userType.equals("1")){
237   - accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效
238   - accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效
  241 + insertCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效
  242 + insertCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效
239 243 }else {
240   - accessCardInfo.sznTimeSectionNo[0] = channel; // 表示第一个门全天有效
241   - accessCardInfo.sznTimeSectionNo[1] = channel; // 表示第二个门全天有效
  244 + //此学校不存在权限设置默认为全天有效
  245 + if(StringUtils.isEmpty(channel)){
  246 + accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效
  247 + accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效
  248 + }else{
  249 + accessCardInfo.sznTimeSectionNo[0] = Integer.parseInt(channel); // 表示第一个门全天有效
  250 + accessCardInfo.sznTimeSectionNo[1] = Integer.parseInt(channel); // 表示第二个门全天有效
  251 + }
242 252 }
243 253  
244 254 // 卡状态
245   - accessCardInfo.emStatus = cardStatus;
  255 + insertCardInfo.emStatus = cardStatus;
246 256  
247 257 // 卡类型
248   - accessCardInfo.emType = cardType;
  258 + insertCardInfo.emType = cardType;
249 259  
250 260 // 使用次数
251   - accessCardInfo.nUserTime = useTimes;
  261 + insertCardInfo.nUserTime = useTimes;
252 262  
253 263 // 是否首卡
254   - accessCardInfo.bFirstEnter = isFirstEnter;
  264 + insertCardInfo.bFirstEnter = isFirstEnter;
255 265  
256 266 // 是否有效
257   - accessCardInfo.bIsValid = isValid;
  267 + insertCardInfo.bIsValid = isValid;
258 268  
259 269 // 有效开始时间
260 270 String[] startTimes = startValidTime.split(" ");
261   - accessCardInfo.stuValidStartTime.dwYear = Integer.parseInt(startTimes[0].split("-")[0]);
262   - accessCardInfo.stuValidStartTime.dwMonth = Integer.parseInt(startTimes[0].split("-")[1]);
263   - accessCardInfo.stuValidStartTime.dwDay = Integer.parseInt(startTimes[0].split("-")[2]);
264   - accessCardInfo.stuValidStartTime.dwHour = Integer.parseInt(startTimes[1].split(":")[0]);
265   - accessCardInfo.stuValidStartTime.dwMinute = Integer.parseInt(startTimes[1].split(":")[1]);
266   - accessCardInfo.stuValidStartTime.dwSecond = Integer.parseInt(startTimes[01].split(":")[2]);
  271 + insertCardInfo.stuValidStartTime.dwYear = Integer.parseInt(startTimes[0].split("-")[0]);
  272 + insertCardInfo.stuValidStartTime.dwMonth = Integer.parseInt(startTimes[0].split("-")[1]);
  273 + insertCardInfo.stuValidStartTime.dwDay = Integer.parseInt(startTimes[0].split("-")[2]);
  274 + insertCardInfo.stuValidStartTime.dwHour = Integer.parseInt(startTimes[1].split(":")[0]);
  275 + insertCardInfo.stuValidStartTime.dwMinute = Integer.parseInt(startTimes[1].split(":")[1]);
  276 + insertCardInfo.stuValidStartTime.dwSecond = Integer.parseInt(startTimes[01].split(":")[2]);
267 277  
268 278 // 有效结束时间
269 279 String[] endTimes = endValidTime.split(" ");
270   - accessCardInfo.stuValidEndTime.dwYear = Integer.parseInt(endTimes[0].split("-")[0]);
271   - accessCardInfo.stuValidEndTime.dwMonth = Integer.parseInt(endTimes[0].split("-")[1]);
272   - accessCardInfo.stuValidEndTime.dwDay = Integer.parseInt(endTimes[0].split("-")[2]);
273   - accessCardInfo.stuValidEndTime.dwHour = Integer.parseInt(endTimes[1].split(":")[0]);
274   - accessCardInfo.stuValidEndTime.dwMinute = Integer.parseInt(endTimes[1].split(":")[1]);
275   - accessCardInfo.stuValidEndTime.dwSecond = Integer.parseInt(endTimes[1].split(":")[2]);
  280 + insertCardInfo.stuValidEndTime.dwYear = Integer.parseInt(endTimes[0].split("-")[0]);
  281 + insertCardInfo.stuValidEndTime.dwMonth = Integer.parseInt(endTimes[0].split("-")[1]);
  282 + insertCardInfo.stuValidEndTime.dwDay = Integer.parseInt(endTimes[0].split("-")[2]);
  283 + insertCardInfo.stuValidEndTime.dwHour = Integer.parseInt(endTimes[1].split(":")[0]);
  284 + insertCardInfo.stuValidEndTime.dwMinute = Integer.parseInt(endTimes[1].split(":")[1]);
  285 + insertCardInfo.stuValidEndTime.dwSecond = Integer.parseInt(endTimes[1].split(":")[2]);
  286 +
276 287  
277   - /**
278   - * 记录集操作
279   - */
280   - NET_CTRL_RECORDSET_INSERT_PARAM insert = new NET_CTRL_RECORDSET_INSERT_PARAM();
281 288 insert.stuCtrlRecordSetInfo.emType = EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD; // 记录集类型
282   - insert.stuCtrlRecordSetInfo.pBuf = accessCardInfo.getPointer();
  289 + insert.stuCtrlRecordSetInfo.pBuf = insertCardInfo.getPointer();
283 290  
284   - accessCardInfo.write();
  291 + insertCardInfo.write();
285 292 insert.write();
286 293 boolean bRet = LoginModule.netsdk.CLIENT_ControlDevice(lLong,
287 294 CtrlType.CTRLTYPE_CTRL_RECORDSET_INSERT, insert.getPointer(), 5000);
288 295 insert.read();
289   - accessCardInfo.read();
  296 + insertCardInfo.read();
290 297  
291 298 if(!bRet) {
292 299 String ret=ToolKits.getErrorCodePrint();
... ... @@ -307,8 +314,6 @@ public class GateModule {
307 314 log.info("添加卡信息成功,卡信息记录集编号 : "+ insert.stuCtrlRecordSetResult.nRecNo);
308 315 return insert.stuCtrlRecordSetResult.nRecNo;
309 316 }
310   -
311   -// return true;
312 317 }
313 318  
314 319 public static void main(String[] args) {
... ... @@ -709,7 +714,7 @@ public class GateModule {
709 714 public static int modifyCard(int recordNo, String cardNo, String userId, String cardName, String cardPwd,
710 715 int cardStatus, int cardType, int useTimes, int isFirstEnter,
711 716 int isValid, String startValidTime, String endValidTime, LLong lLong,
712   - String userType,int channel) {
  717 + String userType,String channel) {
713 718 /**
714 719 * 门禁卡记录集信息
715 720 */
... ... @@ -743,8 +748,14 @@ public class GateModule {
743 748 accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效
744 749 accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效
745 750 }else {
746   - accessCardInfo.sznTimeSectionNo[0] = channel; // 表示第一个门全天有效
747   - accessCardInfo.sznTimeSectionNo[1] = channel; // 表示第二个门全天有效
  751 + //此学校不存在权限设置默认为全天有效
  752 + if(StringUtils.isEmpty(channel)){
  753 + accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效
  754 + accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效
  755 + }else{
  756 + accessCardInfo.sznTimeSectionNo[0] = Integer.parseInt(channel); // 表示第一个门全天有效
  757 + accessCardInfo.sznTimeSectionNo[1] = Integer.parseInt(channel); // 表示第二个门全天有效
  758 + }
748 759 }
749 760  
750 761 // 卡状态
... ... @@ -1160,6 +1171,9 @@ public class GateModule {
1160 1171 return true;
1161 1172 }
1162 1173  
  1174 + private static final NET_IN_ADD_FACE_INFO stIn = new NET_IN_ADD_FACE_INFO();
  1175 + private static final NET_OUT_ADD_FACE_INFO stOut = new NET_OUT_ADD_FACE_INFO();
  1176 +
1163 1177 public static synchronized int addFaceInfo(String userId, Memory memory, LLong lLong) {
1164 1178 int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_ADD; // 添加
1165 1179  
... ... @@ -1195,7 +1209,7 @@ public class GateModule {
1195 1209 } else {
1196 1210 String ret=ToolKits.getErrorCodePrint();
1197 1211 String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")"));
1198   - log.error("添加信息失败,错误信息:{} ,错误码:{} ",ret,number);
  1212 + log.error("添加人脸失败,错误信息:{} ,错误码:{} ",ret,number);
1199 1213 //照片已存在
1200 1214 if(number.equals(EnumSendFaceErrorType.EXIST_IMG_1031.code)){
1201 1215 return modifyFaceInfo(userId, memory, lLong);
... ... @@ -1259,6 +1273,8 @@ public class GateModule {
1259 1273 return true;
1260 1274 }
1261 1275  
  1276 + private static final NET_IN_UPDATE_FACE_INFO stInEdit = new NET_IN_UPDATE_FACE_INFO();
  1277 + private static final NET_OUT_UPDATE_FACE_INFO stOutEdit = new NET_OUT_UPDATE_FACE_INFO();
1262 1278  
1263 1279 public static int modifyFaceInfo(String userId, Memory memory, LLong lLong) {
1264 1280 int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_UPDATE; // 修改
... ... @@ -1266,30 +1282,30 @@ public class GateModule {
1266 1282 /**
1267 1283 * 入参
1268 1284 */
1269   - NET_IN_UPDATE_FACE_INFO stIn = new NET_IN_UPDATE_FACE_INFO();
  1285 +// NET_IN_UPDATE_FACE_INFO stInEdit = new NET_IN_UPDATE_FACE_INFO();
1270 1286  
1271 1287 // 用户ID
1272   - System.arraycopy(userId.getBytes(), 0, stIn.szUserID, 0, userId.getBytes().length);
  1288 + System.arraycopy(userId.getBytes(), 0, stInEdit.szUserID, 0, userId.getBytes().length);
1273 1289  
1274 1290 // 人脸照片个数
1275   - stIn.stuFaceInfo.nFacePhoto = 1;
  1291 + stInEdit.stuFaceInfo.nFacePhoto = 1;
1276 1292  
1277 1293 // 每张图片的大小
1278   - stIn.stuFaceInfo.nFacePhotoLen[0] = (int) memory.size();
  1294 + stInEdit.stuFaceInfo.nFacePhotoLen[0] = (int) memory.size();
1279 1295  
1280 1296 // 人脸照片数据,大小不超过100K, 图片格式为jpg
1281   - stIn.stuFaceInfo.pszFacePhotoArr[0].pszFacePhoto = memory;
  1297 + stInEdit.stuFaceInfo.pszFacePhotoArr[0].pszFacePhoto = memory;
1282 1298  
1283 1299 /**
1284 1300 * 出参
1285 1301 */
1286   - NET_OUT_UPDATE_FACE_INFO stOut = new NET_OUT_UPDATE_FACE_INFO();
  1302 +// NET_OUT_UPDATE_FACE_INFO stOut = new NET_OUT_UPDATE_FACE_INFO();
1287 1303  
1288   - stIn.write();
1289   - stOut.write();
1290   - boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(lLong, emType, stIn.getPointer(), stOut.getPointer(), 5000);
1291   - stIn.read();
1292   - stOut.read();
  1304 + stInEdit.write();
  1305 + stOutEdit.write();
  1306 + boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(lLong, emType, stInEdit.getPointer(), stOutEdit.getPointer(), 5000);
  1307 + stInEdit.read();
  1308 + stOutEdit.read();
1293 1309 Map<String,String> map = new HashMap();
1294 1310 if (bRet) {
1295 1311 log.info("修改人脸成功!");
... ...