Commit 9df247c3254ec2458795cfbe71eff5349e197bf3
1 parent
7fc4b9b6
Exists in
master
大华考勤需求提交
Showing
11 changed files
with
540 additions
and
14 deletions
Show diff stats
cloud/dahua/src/main/java/com/example/dahua/MyTask.java
1 | package com.example.dahua; | 1 | package com.example.dahua; |
2 | 2 | ||
3 | -import com.example.dahua.bean.CardBean; | ||
4 | -import com.example.dahua.bean.DeviceInfoBean; | ||
5 | -import com.example.dahua.bean.TeacherBean; | ||
6 | -import com.example.dahua.bean.UserInfoBean; | 3 | +import com.example.dahua.bean.*; |
4 | +import com.example.dahua.dao.SearchDao; | ||
7 | import com.example.dahua.dao.UserDao; | 5 | import com.example.dahua.dao.UserDao; |
8 | import com.example.dahua.lib.NetSDKLib; | 6 | import com.example.dahua.lib.NetSDKLib; |
9 | import com.example.dahua.lib.ToolKits; | 7 | import com.example.dahua.lib.ToolKits; |
10 | import com.example.dahua.lib.Utils; | 8 | import com.example.dahua.lib.Utils; |
11 | import com.example.dahua.module.AutoRegisterModule; | 9 | import com.example.dahua.module.AutoRegisterModule; |
10 | +import com.example.dahua.module.FaceRecognitionModule; | ||
12 | import com.example.dahua.module.GateModule; | 11 | import com.example.dahua.module.GateModule; |
13 | import com.example.dahua.module.LoginModule; | 12 | import com.example.dahua.module.LoginModule; |
14 | import com.example.dahua.service.AttendanceService; | 13 | import com.example.dahua.service.AttendanceService; |
14 | +import com.example.dahua.utils.DateUtils; | ||
15 | +import com.example.dahua.utils.FileUtils; | ||
15 | import com.example.dahua.xiananDao.SendRecordDao; | 16 | import com.example.dahua.xiananDao.SendRecordDao; |
16 | import com.sun.jna.Pointer; | 17 | import com.sun.jna.Pointer; |
17 | import org.springframework.beans.factory.annotation.Autowired; | 18 | import org.springframework.beans.factory.annotation.Autowired; |
@@ -58,6 +59,9 @@ public class MyTask implements ApplicationRunner { | @@ -58,6 +59,9 @@ public class MyTask implements ApplicationRunner { | ||
58 | SendRecordDao sendRecordDao; | 59 | SendRecordDao sendRecordDao; |
59 | 60 | ||
60 | @Autowired | 61 | @Autowired |
62 | + SearchDao searchDao; | ||
63 | + | ||
64 | + @Autowired | ||
61 | UserDao userDao; | 65 | UserDao userDao; |
62 | 66 | ||
63 | public boolean isHasNewDevice = false;//判断是否有新设备上线 | 67 | public boolean isHasNewDevice = false;//判断是否有新设备上线 |
@@ -65,10 +69,15 @@ public class MyTask implements ApplicationRunner { | @@ -65,10 +69,15 @@ public class MyTask implements ApplicationRunner { | ||
65 | @Override | 69 | @Override |
66 | public void run(ApplicationArguments args) throws Exception { | 70 | public void run(ApplicationArguments args) throws Exception { |
67 | // 121.40.109.21 | 71 | // 121.40.109.21 |
72 | + // 打开工程,初始化 | ||
73 | + LoginModule.init(disConnect, haveReConnect); | ||
74 | + //自注册 | ||
75 | + autoRegister(); | ||
68 | 76 | ||
69 | - LoginModule.init(disConnect, haveReConnect); // 打开工程,初始化 | ||
70 | - | ||
71 | - autoRegister();//自注册 | 77 | + /** |
78 | + * 考勤监听 | ||
79 | + */ | ||
80 | + kaoQinRecord(); | ||
72 | 81 | ||
73 | // System.out.println(" sendRecordDao:"+sendRecordDao.getSenSuccess()); | 82 | // System.out.println(" sendRecordDao:"+sendRecordDao.getSenSuccess()); |
74 | } | 83 | } |
@@ -96,6 +105,8 @@ public class MyTask implements ApplicationRunner { | @@ -96,6 +105,8 @@ public class MyTask implements ApplicationRunner { | ||
96 | if (!StringUtils.isEmpty(deviceId)) { | 105 | if (!StringUtils.isEmpty(deviceId)) { |
97 | attendanceService.updateConnectStateWithDevid(0, deviceId); | 106 | attendanceService.updateConnectStateWithDevid(0, deviceId); |
98 | GateModule.stopRealLoadPic(lLongMap.get(deviceId)); | 107 | GateModule.stopRealLoadPic(lLongMap.get(deviceId)); |
108 | + //人脸识别、人脸检测事件 | ||
109 | + FaceRecognitionModule.stopRealLoadPicture(lLongMap.get(deviceId)); | ||
99 | lLongMap.remove(deviceId); | 110 | lLongMap.remove(deviceId); |
100 | // devMap.remove(deviceId); | 111 | // devMap.remove(deviceId); |
101 | removeDevice(deviceId); | 112 | removeDevice(deviceId); |
@@ -249,6 +260,22 @@ public class MyTask implements ApplicationRunner { | @@ -249,6 +260,22 @@ public class MyTask implements ApplicationRunner { | ||
249 | } | 260 | } |
250 | } | 261 | } |
251 | 262 | ||
263 | + /** | ||
264 | + * 考勤监听 | ||
265 | + */ | ||
266 | + public synchronized void kaoQinRecord() { | ||
267 | + isHasNewDevice = false; | ||
268 | + if (null != deviceInfoBeans && deviceInfoBeans.size() > 0) { | ||
269 | + for (DeviceInfoBean dev : | ||
270 | + deviceInfoBeans) { | ||
271 | + if (lLongMap.get(dev.getDevcieId()).intValue() > 0) { | ||
272 | + //人脸识别、人脸检测事件监听 | ||
273 | + NetSDKLib.LLong lLong = FaceRecognitionModule.realLoadPicture(0, analyzerCallback); | ||
274 | + } | ||
275 | + } | ||
276 | + } | ||
277 | + } | ||
278 | + | ||
252 | 279 | ||
253 | //智能订阅 | 280 | //智能订阅 |
254 | private AnalyzerDataCB analyzerCallback = new AnalyzerDataCB(); | 281 | private AnalyzerDataCB analyzerCallback = new AnalyzerDataCB(); |
@@ -277,11 +304,14 @@ public class MyTask implements ApplicationRunner { | @@ -277,11 +304,14 @@ public class MyTask implements ApplicationRunner { | ||
277 | if (dwAlarmType == NetSDKLib.EVENT_IVS_ACCESS_CTL) { | 304 | if (dwAlarmType == NetSDKLib.EVENT_IVS_ACCESS_CTL) { |
278 | NetSDKLib.DEV_EVENT_ACCESS_CTL_INFO msg = new NetSDKLib.DEV_EVENT_ACCESS_CTL_INFO(); | 305 | NetSDKLib.DEV_EVENT_ACCESS_CTL_INFO msg = new NetSDKLib.DEV_EVENT_ACCESS_CTL_INFO(); |
279 | ToolKits.GetPointerData(pAlarmInfo, msg); | 306 | ToolKits.GetPointerData(pAlarmInfo, msg); |
280 | - System.out.println("sda:" + new String(msg.szCardNo) + " 抓拍照片存储地址:"); | 307 | + //卡号 |
308 | + String card = new String(msg.szCardNo).trim(); | ||
309 | + System.out.println("sda:" + card + " 抓拍照片存储地址:"); | ||
310 | + | ||
281 | try { | 311 | try { |
282 | - String card = new String(msg.szCardNo).trim(); | ||
283 | if (!StringUtils.isEmpty(card)) { | 312 | if (!StringUtils.isEmpty(card)) { |
284 | // 保存图片,获取图片缓存 | 313 | // 保存图片,获取图片缓存 |
314 | + // 图片服务器路径 | ||
285 | String snapPicPath = path + "\\" + System.currentTimeMillis() + ".png"; // 保存图片地址 | 315 | String snapPicPath = path + "\\" + System.currentTimeMillis() + ".png"; // 保存图片地址 |
286 | byte[] buffer = pBuffer.getByteArray(0, dwBufSize); | 316 | byte[] buffer = pBuffer.getByteArray(0, dwBufSize); |
287 | ByteArrayInputStream byteArrInputGlobal = new ByteArrayInputStream(buffer); | 317 | ByteArrayInputStream byteArrInputGlobal = new ByteArrayInputStream(buffer); |
@@ -289,19 +319,32 @@ public class MyTask implements ApplicationRunner { | @@ -289,19 +319,32 @@ public class MyTask implements ApplicationRunner { | ||
289 | if (gateBufferedImage != null) { | 319 | if (gateBufferedImage != null) { |
290 | ImageIO.write(gateBufferedImage, "png", new File(snapPicPath)); | 320 | ImageIO.write(gateBufferedImage, "png", new File(snapPicPath)); |
291 | } | 321 | } |
322 | + //卡号取反(大写) | ||
292 | card = cardNo(card); | 323 | card = cardNo(card); |
293 | - | ||
294 | - CardBean cardBean = userDao.getCards(card);//根据卡号获取身份信息 | 324 | + //根据卡号获取卡身份信息 |
325 | + CardBean cardBean = userDao.getCards(card); | ||
295 | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); | 326 | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); |
296 | snapPicPath = snapPicPath.replaceFirst("\\.", "http://121.40.109.21:8991"); | 327 | snapPicPath = snapPicPath.replaceFirst("\\.", "http://121.40.109.21:8991"); |
297 | snapPicPath = snapPicPath.replace("FaceRecoder", "image"); | 328 | snapPicPath = snapPicPath.replace("FaceRecoder", "image"); |
298 | - if (null != cardBean && cardBean.getType() == 0) {//老师 | 329 | + if (null != cardBean && cardBean.getType() == 0) { |
330 | + //老师人脸信息,保存人脸记录表 | ||
299 | TeacherBean teacherBean = userDao.getTeacherWithId(cardBean.getUser_id()); | 331 | TeacherBean teacherBean = userDao.getTeacherWithId(cardBean.getUser_id()); |
300 | sendRecordDao.addFaceRecoder("", teacherBean.getUser_id(), teacherBean.getName(), snapPicPath, 1, time, card,""); | 332 | sendRecordDao.addFaceRecoder("", teacherBean.getUser_id(), teacherBean.getName(), snapPicPath, 1, time, card,""); |
301 | - } else if (null != cardBean && cardBean.getType() == 2) {//学生 | 333 | + } else if (null != cardBean && cardBean.getType() == 2) { |
334 | + //学生人脸信息,保存人脸记录表 | ||
302 | UserInfoBean userInfoBean = userDao.getStudentWithid(cardBean.getUser_id()); | 335 | UserInfoBean userInfoBean = userDao.getStudentWithid(cardBean.getUser_id()); |
303 | sendRecordDao.addFaceRecoder("", userInfoBean.getUser_id(), userInfoBean.getName(), snapPicPath, 1, time, card,""); | 336 | sendRecordDao.addFaceRecoder("", userInfoBean.getUser_id(), userInfoBean.getName(), snapPicPath, 1, time, card,""); |
304 | } | 337 | } |
338 | + | ||
339 | + // TODO 考勤记录 | ||
340 | + //刷卡结果,1表示成功, 0表示失败 | ||
341 | + int status = msg.bStatus; | ||
342 | + //门禁事件类型:1进2出 | ||
343 | + int eventType = msg.emEventType; | ||
344 | + //刷卡时间 | ||
345 | + String eventTime = msg.UTC.toStringTime(); | ||
346 | + //保存考勤记录 | ||
347 | + kaoQinRecord(status,eventType,card,"",eventTime,snapPicPath); | ||
305 | } | 348 | } |
306 | 349 | ||
307 | } catch (IOException e2) { | 350 | } catch (IOException e2) { |
@@ -321,6 +364,7 @@ public class MyTask implements ApplicationRunner { | @@ -321,6 +364,7 @@ public class MyTask implements ApplicationRunner { | ||
321 | } | 364 | } |
322 | } | 365 | } |
323 | 366 | ||
367 | + | ||
324 | /** | 368 | /** |
325 | * 卡号两两取反 | 369 | * 卡号两两取反 |
326 | * | 370 | * |
@@ -344,4 +388,84 @@ public class MyTask implements ApplicationRunner { | @@ -344,4 +388,84 @@ public class MyTask implements ApplicationRunner { | ||
344 | 388 | ||
345 | } | 389 | } |
346 | 390 | ||
391 | + /** | ||
392 | + * 大华设备考勤记录 | ||
393 | + * @param status | ||
394 | + * @param eventType | ||
395 | + * @param cardNo | ||
396 | + * @param deviceId | ||
397 | + * @param eventTime | ||
398 | + * @param imageUrl | ||
399 | + */ | ||
400 | + public void kaoQinRecord(int status,int eventType,String cardNo,String deviceId,String eventTime,String imageUrl) { | ||
401 | + if (status == 1) { | ||
402 | + //有效刷卡调考勤存储过程 | ||
403 | + CheckIn checkIn = new CheckIn(); | ||
404 | + checkIn.setDeviceId(deviceId); | ||
405 | + checkIn.setCardNo(cardNo); | ||
406 | + checkIn.setFunNo(8); | ||
407 | + checkIn.setFlag(eventType == 2 ? 1 : 0); | ||
408 | + checkIn.setCheckTime(eventTime); | ||
409 | + searchDao.checkIn(checkIn); | ||
410 | + if (checkIn.getIsSuccess() == 1) { | ||
411 | + //考勤成功 | ||
412 | + String content = "考勤成功!,设备:" + deviceId + "卡号:" + cardNo + "方向:" + (eventType == 1 ? "进门" : "出门") + "______" + eventTime; | ||
413 | + //记录学生考勤签到记录 | ||
414 | + FileUtils.getInstance().writeLogs(content, FileUtils.qiandaoSuccess); | ||
415 | + } else { | ||
416 | + //考勤失败 | ||
417 | + String content = "考勤失败!,设备:" + deviceId + "卡号:" + cardNo + "---" + checkIn.getOut(); | ||
418 | + //记录学生考勤签到记录 | ||
419 | + FileUtils.getInstance().writeLogs(content, FileUtils.qiandaoErr); | ||
420 | + } | ||
421 | + } else { | ||
422 | + //判断是否请假 | ||
423 | + String studentNum = searchDao.checkLeave(cardNo); | ||
424 | + if (org.apache.commons.lang.StringUtils.isNotBlank(studentNum)) { | ||
425 | + //短信信息 | ||
426 | + Message mobileMessage = searchDao.selectByParentMobile(cardNo); | ||
427 | + if (mobileMessage.getSchoolId() == 4) { | ||
428 | + //才发送短信 | ||
429 | + ShortMsg shortMsg = new ShortMsg(); | ||
430 | + String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); | ||
431 | + shortMsg.setTableName("smsNew" + tableSuffix); | ||
432 | + shortMsg.setSchoolId(mobileMessage.getSchoolId()); | ||
433 | + shortMsg.setMobile(mobileMessage.getParentMobile()); | ||
434 | + if (eventType == 2) { | ||
435 | + //出门 | ||
436 | + shortMsg.setMsg(mobileMessage.getName() + "家长您好,你的孩子于" + DateUtils.date2String(new Date(), DateUtils.format2) + "请假后出校,请知晓;"); | ||
437 | + } else { | ||
438 | + shortMsg.setMsg(mobileMessage.getName() + "家长您好,你的孩子于" + DateUtils.date2String(new Date(), DateUtils.format2) + "请假后进校,请知晓;"); | ||
439 | + } | ||
440 | + searchDao.insertMessage(shortMsg.getTableName(),shortMsg.getSchoolId()+"",shortMsg.getMobile(),shortMsg.getMsg()); | ||
441 | + } | ||
442 | + } else { | ||
443 | + //若即不成功,也不是请假,则按刷卡异常处理 | ||
444 | + User user = searchDao.selectUserByCardNum(cardNo).get(0); | ||
445 | + if(user ==null ){ | ||
446 | + System.out.println("卡号"+cardNo+"没找到对应学生或老师"); | ||
447 | + } | ||
448 | + if (deviceId.startsWith("ytj")){ | ||
449 | + deviceId = "29"; | ||
450 | + }else { | ||
451 | + deviceId = "22"; | ||
452 | + } | ||
453 | + //失败记录 | ||
454 | + SendRecordBean sendRecordBean = new SendRecordBean(); | ||
455 | + sendRecordBean.setSchoolId(user.getSchoolId()); | ||
456 | + sendRecordBean.setSchoolName(userDao.getSchoolName(String.valueOf(user.getSchoolId()))); | ||
457 | + sendRecordBean.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); | ||
458 | + sendRecordBean.setUserType(2); | ||
459 | + sendRecordBean.setNum(cardNo); | ||
460 | + sendRecordBean.setName(user.getName()); | ||
461 | + sendRecordBean.setImgPath(imageUrl); | ||
462 | + sendRecordBean.setCustomerid(String.valueOf(user.getStudentId())); | ||
463 | + sendRecordBean.setFailType(8); | ||
464 | + sendRecordBean.setFailContent("人脸认证失败"); | ||
465 | + sendRecordBean.setDeviceID(deviceId); | ||
466 | + sendRecordDao.addFaceFail(sendRecordBean.getCustomerid(), sendRecordBean.getDeviceID(), sendRecordBean.getNum(), sendRecordBean.getName(), sendRecordBean.getTime(), | ||
467 | + sendRecordBean.getSchoolName(), sendRecordBean.getImgPath(), sendRecordBean.getSchoolId(), sendRecordBean.getFailContent(), sendRecordBean.getFailType(), sendRecordBean.getUserType(), 22); | ||
468 | + } | ||
469 | + } | ||
470 | + } | ||
347 | } | 471 | } |
cloud/dahua/src/main/java/com/example/dahua/bean/CheckIn.java
0 → 100644
@@ -0,0 +1,74 @@ | @@ -0,0 +1,74 @@ | ||
1 | +package com.example.dahua.bean; | ||
2 | + | ||
3 | +/** | ||
4 | + * @author chen | ||
5 | + * @version 1.0 | ||
6 | + * @date 2019/10/30 0030 10:26 | ||
7 | + */ | ||
8 | +public class CheckIn { | ||
9 | + | ||
10 | + private String deviceId ; | ||
11 | + private String cardNo ; | ||
12 | + private int funNo ; | ||
13 | + private int flag ; | ||
14 | + private String checkTime ; | ||
15 | + | ||
16 | + private String out; | ||
17 | + private int isSuccess ; | ||
18 | + | ||
19 | + public String getDeviceId() { | ||
20 | + return deviceId; | ||
21 | + } | ||
22 | + | ||
23 | + public void setDeviceId(String deviceId) { | ||
24 | + this.deviceId = deviceId; | ||
25 | + } | ||
26 | + | ||
27 | + public String getCardNo() { | ||
28 | + return cardNo; | ||
29 | + } | ||
30 | + | ||
31 | + public void setCardNo(String cardNo) { | ||
32 | + this.cardNo = cardNo; | ||
33 | + } | ||
34 | + | ||
35 | + public int getFlag() { | ||
36 | + return flag; | ||
37 | + } | ||
38 | + | ||
39 | + public void setFlag(int flag) { | ||
40 | + this.flag = flag; | ||
41 | + } | ||
42 | + | ||
43 | + public String getCheckTime() { | ||
44 | + return checkTime; | ||
45 | + } | ||
46 | + | ||
47 | + public void setCheckTime(String checkTime) { | ||
48 | + this.checkTime = checkTime; | ||
49 | + } | ||
50 | + | ||
51 | + public String getOut() { | ||
52 | + return out; | ||
53 | + } | ||
54 | + | ||
55 | + public void setOut(String out) { | ||
56 | + this.out = out; | ||
57 | + } | ||
58 | + | ||
59 | + public int getIsSuccess() { | ||
60 | + return isSuccess; | ||
61 | + } | ||
62 | + | ||
63 | + public void setIsSuccess(int isSuccess) { | ||
64 | + this.isSuccess = isSuccess; | ||
65 | + } | ||
66 | + | ||
67 | + public int getFunNo() { | ||
68 | + return funNo; | ||
69 | + } | ||
70 | + | ||
71 | + public void setFunNo(int funNo) { | ||
72 | + this.funNo = funNo; | ||
73 | + } | ||
74 | +} |
cloud/dahua/src/main/java/com/example/dahua/bean/Message.java
0 → 100644
@@ -0,0 +1,31 @@ | @@ -0,0 +1,31 @@ | ||
1 | +package com.example.dahua.bean; | ||
2 | + | ||
3 | +public class Message { | ||
4 | + private String name ; | ||
5 | + private int schoolId ; | ||
6 | + private String parentMobile ; | ||
7 | + | ||
8 | + public String getName() { | ||
9 | + return name; | ||
10 | + } | ||
11 | + | ||
12 | + public void setName(String name) { | ||
13 | + this.name = name; | ||
14 | + } | ||
15 | + | ||
16 | + public int getSchoolId() { | ||
17 | + return schoolId; | ||
18 | + } | ||
19 | + | ||
20 | + public void setSchoolId(int schoolId) { | ||
21 | + this.schoolId = schoolId; | ||
22 | + } | ||
23 | + | ||
24 | + public String getParentMobile() { | ||
25 | + return parentMobile; | ||
26 | + } | ||
27 | + | ||
28 | + public void setParentMobile(String parentMobile) { | ||
29 | + this.parentMobile = parentMobile; | ||
30 | + } | ||
31 | +} |
cloud/dahua/src/main/java/com/example/dahua/bean/ShortMsg.java
0 → 100644
@@ -0,0 +1,42 @@ | @@ -0,0 +1,42 @@ | ||
1 | +package com.example.dahua.bean; | ||
2 | + | ||
3 | +public class ShortMsg { | ||
4 | + | ||
5 | + private String tableName ; | ||
6 | + | ||
7 | + private int schoolId ; | ||
8 | + private String mobile ; | ||
9 | + private String msg ; | ||
10 | + | ||
11 | + public String getTableName() { | ||
12 | + return tableName; | ||
13 | + } | ||
14 | + | ||
15 | + public void setTableName(String tableName) { | ||
16 | + this.tableName = tableName; | ||
17 | + } | ||
18 | + | ||
19 | + public int getSchoolId() { | ||
20 | + return schoolId; | ||
21 | + } | ||
22 | + | ||
23 | + public void setSchoolId(int schoolId) { | ||
24 | + this.schoolId = schoolId; | ||
25 | + } | ||
26 | + | ||
27 | + public String getMobile() { | ||
28 | + return mobile; | ||
29 | + } | ||
30 | + | ||
31 | + public void setMobile(String mobile) { | ||
32 | + this.mobile = mobile; | ||
33 | + } | ||
34 | + | ||
35 | + public String getMsg() { | ||
36 | + return msg; | ||
37 | + } | ||
38 | + | ||
39 | + public void setMsg(String msg) { | ||
40 | + this.msg = msg; | ||
41 | + } | ||
42 | +} |
cloud/dahua/src/main/java/com/example/dahua/bean/User.java
0 → 100644
@@ -0,0 +1,46 @@ | @@ -0,0 +1,46 @@ | ||
1 | +package com.example.dahua.bean; | ||
2 | + | ||
3 | +/** | ||
4 | + * @author chen | ||
5 | + * @version 1.0 | ||
6 | + * @date 2019/10/14 0014 14:41 | ||
7 | + */ | ||
8 | +public class User { | ||
9 | + | ||
10 | + private int schoolId; | ||
11 | + private int classId ; | ||
12 | + private String name ; | ||
13 | + private int studentId ; | ||
14 | + | ||
15 | + public int getSchoolId() { | ||
16 | + return schoolId; | ||
17 | + } | ||
18 | + | ||
19 | + public void setSchoolId(int schoolId) { | ||
20 | + this.schoolId = schoolId; | ||
21 | + } | ||
22 | + | ||
23 | + public int getClassId() { | ||
24 | + return classId; | ||
25 | + } | ||
26 | + | ||
27 | + public void setClassId(int classId) { | ||
28 | + this.classId = classId; | ||
29 | + } | ||
30 | + | ||
31 | + public String getName() { | ||
32 | + return name; | ||
33 | + } | ||
34 | + | ||
35 | + public void setName(String name) { | ||
36 | + this.name = name; | ||
37 | + } | ||
38 | + | ||
39 | + public int getStudentId() { | ||
40 | + return studentId; | ||
41 | + } | ||
42 | + | ||
43 | + public void setStudentId(int studentId) { | ||
44 | + this.studentId = studentId; | ||
45 | + } | ||
46 | +} |
cloud/dahua/src/main/java/com/example/dahua/dao/SearchDao.java
0 → 100644
@@ -0,0 +1,55 @@ | @@ -0,0 +1,55 @@ | ||
1 | +package com.example.dahua.dao; | ||
2 | + | ||
3 | +import com.example.dahua.bean.CheckIn; | ||
4 | +import com.example.dahua.bean.Message; | ||
5 | +import com.example.dahua.bean.User; | ||
6 | +import org.apache.ibatis.annotations.Param; | ||
7 | +import org.apache.ibatis.annotations.Select; | ||
8 | +import org.springframework.stereotype.Repository; | ||
9 | + | ||
10 | +import java.util.List; | ||
11 | + | ||
12 | +@Repository | ||
13 | +public interface SearchDao { | ||
14 | + /** | ||
15 | + * 考勤推送存储过程 | ||
16 | + * @param checkIn | ||
17 | + * @return | ||
18 | + */ | ||
19 | + int checkIn(CheckIn checkIn); | ||
20 | + | ||
21 | + /** | ||
22 | + * 获取学生信息 | ||
23 | + * @param cardNum | ||
24 | + * @return | ||
25 | + */ | ||
26 | + List<User> selectUserByCardNum(String cardNum); | ||
27 | + | ||
28 | + /** | ||
29 | + * 获取卡号 | ||
30 | + * @param cardNo | ||
31 | + * @return | ||
32 | + */ | ||
33 | + @Select("select Top(1) StudentNum from HS_LeaveExaminePassList where StudentNum= #{cardNo} and GETDATE() <![CDATA[ > ]]> LeaveTime and GETDATE() <![CDATA[ < ]]> ReturnTime") | ||
34 | + String checkLeave(@Param("cardNo") String cardNo); | ||
35 | + | ||
36 | + /** | ||
37 | + * 获取学生父母电话 | ||
38 | + * @param cardNo | ||
39 | + * @return | ||
40 | + */ | ||
41 | + @Select("select school_id , ParentMobile , name from SZ_V_School_Student where student_num = #{cardNo}") | ||
42 | + Message selectByParentMobile(@Param("cardNo") String cardNo); | ||
43 | + | ||
44 | + /** | ||
45 | + * 插入短信发送表 | ||
46 | + * @param tableName | ||
47 | + * @param schoolId | ||
48 | + * @param mobile | ||
49 | + * @param msg | ||
50 | + */ | ||
51 | + @Select("insert into ${tableName} (SchoolID,Mobile,Msg,tdtype,Status,IsNeedSend,SendTime,intime) values (#{schoolId},#{mobile},#{msg},1,0,1,GETDATE(),GETDATE())") | ||
52 | + void insertMessage(@Param("tableName") String tableName,@Param("schoolId") String schoolId,@Param("mobile") String mobile,@Param("msg") String msg); | ||
53 | + | ||
54 | + | ||
55 | +} |
cloud/dahua/src/main/java/com/example/dahua/dbconfig/MessageDataSourceConfig.java
0 → 100644
@@ -0,0 +1,43 @@ | @@ -0,0 +1,43 @@ | ||
1 | +package com.example.dahua.dbconfig; | ||
2 | + | ||
3 | +import org.apache.ibatis.session.SqlSessionFactory; | ||
4 | +import org.mybatis.spring.SqlSessionFactoryBean; | ||
5 | +import org.mybatis.spring.annotation.MapperScan; | ||
6 | +import org.springframework.beans.factory.annotation.Qualifier; | ||
7 | +import org.springframework.boot.context.properties.ConfigurationProperties; | ||
8 | +import org.springframework.boot.jdbc.DataSourceBuilder; | ||
9 | +import org.springframework.context.annotation.Bean; | ||
10 | +import org.springframework.context.annotation.Configuration; | ||
11 | +import org.springframework.context.annotation.Primary; | ||
12 | +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; | ||
13 | +import org.springframework.jdbc.core.JdbcTemplate; | ||
14 | + | ||
15 | +import javax.sql.DataSource; | ||
16 | + | ||
17 | +@Configuration | ||
18 | +@MapperScan(basePackages = "com.example.dahua.dao", sqlSessionFactoryRef = "messageSessionFactory") | ||
19 | +public class MessageDataSourceConfig { | ||
20 | + @Primary | ||
21 | + @Bean(name = "messageDataSource") | ||
22 | + @ConfigurationProperties("spring.datasource.message") | ||
23 | + public DataSource masterDataSource() { | ||
24 | + return DataSourceBuilder.create().build(); | ||
25 | + } | ||
26 | + | ||
27 | + @Bean(name = "messageSessionFactory") | ||
28 | + public SqlSessionFactory sqlSessionFactory(@Qualifier("messageDataSource") DataSource dataSource) throws Exception { | ||
29 | + | ||
30 | + SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); | ||
31 | + sessionFactoryBean.setDataSource(dataSource); | ||
32 | + sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver() | ||
33 | + .getResources("classpath:mapper/*.xml")); | ||
34 | + return sessionFactoryBean.getObject(); | ||
35 | + | ||
36 | + } | ||
37 | + | ||
38 | + @Bean | ||
39 | + public JdbcTemplate campusJdbcTemplate(@Qualifier("messageDataSource") DataSource dataSource) { | ||
40 | + return new JdbcTemplate(dataSource); | ||
41 | + } | ||
42 | + | ||
43 | +} |
cloud/dahua/src/main/java/com/example/dahua/utils/DateUtils.java
0 → 100644
@@ -0,0 +1,71 @@ | @@ -0,0 +1,71 @@ | ||
1 | +package com.example.dahua.utils; | ||
2 | + | ||
3 | +import java.text.ParseException; | ||
4 | +import java.text.SimpleDateFormat; | ||
5 | +import java.util.Date; | ||
6 | + | ||
7 | +/** | ||
8 | + * @author chen | ||
9 | + * @version 1.0 | ||
10 | + * @date 2019/10/14 0014 14:16 | ||
11 | + */ | ||
12 | +public class DateUtils { | ||
13 | + | ||
14 | + public static String format = "yyyy"; | ||
15 | + | ||
16 | + public static String format1 = "yyyy-MM-dd"; | ||
17 | + | ||
18 | + public static String format2 = "yyyy-MM-dd HH:mm:ss"; | ||
19 | + | ||
20 | + public static String format3 = "yyyyMMddHHmm" ; | ||
21 | + | ||
22 | + public static String format4 = "yyyyMM"; | ||
23 | + | ||
24 | + public static long getDate(){ | ||
25 | + return System.currentTimeMillis(); | ||
26 | + } | ||
27 | + | ||
28 | + public static String date2String(Date date, String format) { | ||
29 | + SimpleDateFormat sdf = new SimpleDateFormat(format); | ||
30 | + return sdf.format(date); | ||
31 | + } | ||
32 | + | ||
33 | + public static Date string2Date(String date, String format) { | ||
34 | + try{ | ||
35 | + SimpleDateFormat sdf = new SimpleDateFormat(format); | ||
36 | + return sdf.parse(date); | ||
37 | + }catch (Exception e){ | ||
38 | + | ||
39 | + } | ||
40 | + return new Date(); | ||
41 | + } | ||
42 | + | ||
43 | + public static Date getToday(){ | ||
44 | + return new Date(); | ||
45 | + } | ||
46 | + | ||
47 | + public static String getToday(String format) throws ParseException{ | ||
48 | + SimpleDateFormat sdf = new SimpleDateFormat(format); | ||
49 | + return sdf.format(new Date()); | ||
50 | + } | ||
51 | + | ||
52 | + public static int getDateDifference(Date date1, Date date2, String timeType) { | ||
53 | + int between = (int) (date1.getTime() - date2.getTime()); | ||
54 | + int difference = 0; | ||
55 | + switch (timeType) { | ||
56 | + case "day": | ||
57 | + difference = between / (24 * 60 * 60 * 1000); | ||
58 | + break; | ||
59 | + case "hour": | ||
60 | + difference = between / (60 * 60 * 1000); | ||
61 | + break; | ||
62 | + case "min": | ||
63 | + difference = between / (60 * 1000); | ||
64 | + break; | ||
65 | + case "s": | ||
66 | + difference = between / 1000; | ||
67 | + } | ||
68 | + return difference; | ||
69 | + } | ||
70 | + | ||
71 | +} |
cloud/dahua/src/main/resources/application.yml
@@ -27,6 +27,11 @@ spring: | @@ -27,6 +27,11 @@ spring: | ||
27 | # username: SZJXTUSER | 27 | # username: SZJXTUSER |
28 | # password: xst200919 | 28 | # password: xst200919 |
29 | # driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver | 29 | # driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver |
30 | + message: | ||
31 | + username: sa | ||
32 | + password: qaz!@#0401 | ||
33 | + jdbcUrl: jdbc:sqlserver://60.190.202.38:49469;database=XST | ||
34 | + driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver | ||
30 | 35 | ||
31 | 36 | ||
32 | mybatis: | 37 | mybatis: |
cloud/dahua/src/main/resources/xiaoanmapper/SearchMapper.xml
0 → 100644
@@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
1 | +<?xml version="1.0" encoding="UTF-8" ?> | ||
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > | ||
3 | +<mapper namespace="com.example.dahua.dao.SearchDao" > | ||
4 | + | ||
5 | + | ||
6 | + <resultMap id="resultMap" type="com.example.dahua.bean.CheckIn"> | ||
7 | + <result column="arr" property="out" jdbcType="VARCHAR" /> | ||
8 | + <result column="iscuccess" property="isSuccess" jdbcType="INTEGER" /> | ||
9 | + </resultMap> | ||
10 | + <insert id="checkIn" parameterType="com.example.dahua.bean.CheckIn" statementType="CALLABLE" > | ||
11 | + {call AttendanceService( | ||
12 | + #{deviceId,mode=IN} , #{cardNo,mode=IN} , #{funNo,mode=IN}, #{flag,mode=IN} , #{checkTime,mode=IN}, | ||
13 | + #{out,mode=OUT,jdbcType=VARCHAR,resultMap=resultMap},#{isSuccess,mode=OUT,jdbcType=INTEGER,resultMap=resultMap} | ||
14 | + )} | ||
15 | + </insert> | ||
16 | + | ||
17 | + <resultMap id="User" type="com.example.dahua.bean.User" > | ||
18 | + <result column="school_id" property="schoolId" jdbcType="INTEGER" /> | ||
19 | + <result column="class_id" property="classId" jdbcType="INTEGER" /> | ||
20 | + <result column="name" property="name" jdbcType="VARCHAR" /> | ||
21 | + <result column="student_id" property="studentId" jdbcType="INTEGER" /> | ||
22 | + </resultMap> | ||
23 | + <select id="selectUserByCardNum" parameterType="java.lang.String" resultMap="User"> | ||
24 | + select school_id , class_id ,name ,student_id from | ||
25 | + (select top 1 b.school_id, b.class_id, b.name, student_id from SZ_V_Card a | ||
26 | + inner join SZ_V_School_Student b on a.user_id = b.student_id | ||
27 | + and b.role_state = 1 where a.type = 2 and a.num = #{cardNum} | ||
28 | + union | ||
29 | + select top 1 b.school_id, 0 as class_id, b.name,b.teacher_id as student_id from SZ_V_Card a | ||
30 | + inner join SZ_V_School_Teacher b on a.user_id = b.teacher_id | ||
31 | + and b.role_state = 1 where a.type = 0 and a.num = #{cardNum} | ||
32 | + ) x | ||
33 | + </select> | ||
34 | + | ||
35 | +</mapper> | ||
0 | \ No newline at end of file | 36 | \ No newline at end of file |
cloud/pom.xml
@@ -31,7 +31,7 @@ | @@ -31,7 +31,7 @@ | ||
31 | <module>common</module> | 31 | <module>common</module> |
32 | <module>getaway</module> | 32 | <module>getaway</module> |
33 | <module>haikang</module> | 33 | <module>haikang</module> |
34 | - <!-- <module>dahua</module>--> | 34 | + <module>dahua</module> |
35 | <!-- <module>consumer</module>--> | 35 | <!-- <module>consumer</module>--> |
36 | <module>haikangface</module> | 36 | <module>haikangface</module> |
37 | <!-- <module>search_independence</module>--> | 37 | <!-- <module>search_independence</module>--> |