Commit 9d70d292221b60e1ba9b7d05065ebdedf2d07232
1 parent
375d859f
Exists in
master
no message
Showing
27 changed files
with
462 additions
and
117 deletions
Show diff stats
cloud/dahua/src/main/java/com/example/dahua/MyTask.java
... | ... | @@ -275,7 +275,7 @@ public class MyTask implements ApplicationRunner { |
275 | 275 | pBuffer.read(0, bufferBytes, 0, dwBufSize); |
276 | 276 | |
277 | 277 | |
278 | - File path = new File("E:\\wwwhtdocs\\SmartCampus\\face17e50\FaceRecoder"); | |
278 | + File path = new File(".\FaceRecoder"); | |
279 | 279 | if (!path.exists()) { |
280 | 280 | path.mkdir(); |
281 | 281 | } |
... | ... | @@ -284,19 +284,18 @@ public class MyTask implements ApplicationRunner { |
284 | 284 | if (dwAlarmType == NetSDKLib.EVENT_IVS_ACCESS_CTL) { |
285 | 285 | NetSDKLib.DEV_EVENT_ACCESS_CTL_INFO msg = new NetSDKLib.DEV_EVENT_ACCESS_CTL_INFO(); |
286 | 286 | ToolKits.GetPointerData(pAlarmInfo, msg); |
287 | - // 保存图片,获取图片缓存 | |
288 | - String snapPicPath = path + "\\" + System.currentTimeMillis() + ".png"; // 保存图片地址 | |
289 | - byte[] buffer = pBuffer.getByteArray(0, dwBufSize); | |
290 | - ByteArrayInputStream byteArrInputGlobal = new ByteArrayInputStream(buffer); | |
291 | - | |
287 | + System.out.println("sda:" + new String(msg.szCardNo) + " 抓拍照片存储地址:"); | |
292 | 288 | try { |
293 | - System.out.println("sda:" + new String(msg.szCardNo) + " 抓拍照片存储地址:" + new String(msg.szSnapURL, "GBK").trim()); | |
294 | - gateBufferedImage = ImageIO.read(byteArrInputGlobal); | |
295 | - if (gateBufferedImage != null) { | |
296 | - ImageIO.write(gateBufferedImage, "png", new File(snapPicPath)); | |
297 | - } | |
298 | 289 | String card = new String(msg.szCardNo).trim(); |
299 | 290 | if (!StringUtils.isEmpty(card)) { |
291 | + // 保存图片,获取图片缓存 | |
292 | + String snapPicPath = path + "\\" + System.currentTimeMillis() + ".png"; // 保存图片地址 | |
293 | + byte[] buffer = pBuffer.getByteArray(0, dwBufSize); | |
294 | + ByteArrayInputStream byteArrInputGlobal = new ByteArrayInputStream(buffer); | |
295 | + gateBufferedImage = ImageIO.read(byteArrInputGlobal); | |
296 | + if (gateBufferedImage != null) { | |
297 | + ImageIO.write(gateBufferedImage, "png", new File(snapPicPath)); | |
298 | + } | |
300 | 299 | card=cardNo(card); |
301 | 300 | CardBean cardBean = userDao.getCards(card);//根据卡号获取身份信息 |
302 | 301 | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/control/DeviceControl.java
... | ... | @@ -3,6 +3,7 @@ package com.example.dahua.control; |
3 | 3 | import com.example.dahua.service.DeviceService; |
4 | 4 | import io.swagger.annotations.Api; |
5 | 5 | import io.swagger.annotations.ApiImplicitParam; |
6 | +import io.swagger.annotations.ApiOperation; | |
6 | 7 | import org.springframework.beans.factory.annotation.Autowired; |
7 | 8 | import org.springframework.web.bind.annotation.RequestMapping; |
8 | 9 | import org.springframework.web.bind.annotation.RequestMethod; |
... | ... | @@ -23,4 +24,11 @@ public class DeviceControl { |
23 | 24 | } |
24 | 25 | |
25 | 26 | |
27 | + @RequestMapping(value = "setDVRIPConfig", method = RequestMethod.GET) | |
28 | + @ApiOperation("改变设备的IP信息") | |
29 | + public boolean setDVRIPConfig(@RequestParam("deviceId") String deviceId,@RequestParam("ip") String ip, | |
30 | + @RequestParam("port") int port) { | |
31 | + return deviceService.setDVRIPConfig(deviceId,ip,port); | |
32 | + } | |
33 | + | |
26 | 34 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/control/UserControl.java
... | ... | @@ -163,7 +163,7 @@ public class UserControl { |
163 | 163 | angel = 180; |
164 | 164 | } |
165 | 165 | System.out.println("图片检验成功"); |
166 | - FileUtils.getInstance().writeLogs("检测成功:" + httpurl, FileUtils.checkSuc); | |
166 | + FileUtils.getInstance().writeLogs("检测成功:" + imgFilePath, FileUtils.checkSuc); | |
167 | 167 | //E:\wwwhtdocs\SmartCampus\face17e50\School |
168 | 168 | //http://campus.myjxt.com//face17e5/School861/Student/GBZX20171134.jpg |
169 | 169 | //F:\wwwroot\smartcampus\face17e5 |
... | ... | @@ -181,7 +181,7 @@ public class UserControl { |
181 | 181 | } |
182 | 182 | } else { |
183 | 183 | System.out.println("检测失败"); |
184 | - FileUtils.getInstance().writeLogs("检测失败:" + error_msg + httpurl, FileUtils.checkFail); | |
184 | + FileUtils.getInstance().writeLogs("检测失败:" + error_msg + imgFilePath, FileUtils.checkFail); | |
185 | 185 | deleteImgFile(imgFilePath); |
186 | 186 | return false; |
187 | 187 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/module/DeviceControlModule.java
1 | 1 | package com.example.dahua.module; |
2 | 2 | |
3 | +import com.example.dahua.MyTask; | |
3 | 4 | import com.example.dahua.lib.NetSDKLib; |
4 | 5 | import com.example.dahua.lib.ToolKits; |
5 | 6 | |
7 | +import java.io.UnsupportedEncodingException; | |
6 | 8 | import java.text.SimpleDateFormat; |
7 | 9 | |
8 | 10 | |
9 | - | |
10 | 11 | /** |
11 | 12 | * \if ENGLISH_LANG |
12 | 13 | * Device Control Interface |
... | ... | @@ -17,48 +18,47 @@ import java.text.SimpleDateFormat; |
17 | 18 | * \endif |
18 | 19 | */ |
19 | 20 | public class DeviceControlModule { |
20 | - | |
21 | - /** | |
22 | - * \if ENGLISH_LANG | |
23 | - * Reboot Device | |
24 | - * \else | |
25 | - * 重启设备 | |
26 | - * \endif | |
27 | - */ | |
21 | + | |
22 | + /** | |
23 | + * \if ENGLISH_LANG | |
24 | + * Reboot Device | |
25 | + * \else | |
26 | + * 重启设备 | |
27 | + * \endif | |
28 | + */ | |
28 | 29 | public static boolean reboot() { |
29 | - | |
30 | + | |
30 | 31 | if (!LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle, NetSDKLib.CtrlType.CTRLTYPE_CTRL_REBOOT, null, 3000)) { |
31 | - System.err.println("CLIENT_ControlDevice Failed!" + ToolKits.getErrorCodePrint()); | |
32 | - return false; | |
32 | + System.err.println("CLIENT_ControlDevice Failed!" + ToolKits.getErrorCodePrint()); | |
33 | + return false; | |
33 | 34 | } |
34 | 35 | return true; |
35 | 36 | } |
36 | 37 | |
37 | - public static boolean reboot(NetSDKLib.LLong lLong) { | |
38 | + public static boolean reboot(NetSDKLib.LLong lLong) { | |
38 | 39 | |
39 | - if (!LoginModule.netsdk.CLIENT_ControlDevice(lLong, NetSDKLib.CtrlType.CTRLTYPE_CTRL_REBOOT, null, 3000)) { | |
40 | - System.err.println("CLIENT_ControlDevice Failed!" + ToolKits.getErrorCodePrint()); | |
41 | - return false; | |
42 | - } | |
43 | - else System.out.println("设备重启成功"); | |
44 | - return true; | |
45 | - } | |
40 | + if (!LoginModule.netsdk.CLIENT_ControlDevice(lLong, NetSDKLib.CtrlType.CTRLTYPE_CTRL_REBOOT, null, 3000)) { | |
41 | + System.err.println("CLIENT_ControlDevice Failed!" + ToolKits.getErrorCodePrint()); | |
42 | + return false; | |
43 | + } else System.out.println("设备重启成功"); | |
44 | + return true; | |
45 | + } | |
46 | 46 | |
47 | 47 | /** |
48 | - * \if ENGLISH_LANG | |
49 | - * Setup Device Time | |
50 | - * \else | |
51 | - * 时间同步 | |
52 | - * \endif | |
53 | - */ | |
48 | + * \if ENGLISH_LANG | |
49 | + * Setup Device Time | |
50 | + * \else | |
51 | + * 时间同步 | |
52 | + * \endif | |
53 | + */ | |
54 | 54 | public static boolean setTime(String date) { |
55 | - NetSDKLib.NET_TIME deviceTime = new NetSDKLib.NET_TIME(); | |
56 | - if (date == null) { | |
57 | - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
55 | + NetSDKLib.NET_TIME deviceTime = new NetSDKLib.NET_TIME(); | |
56 | + if (date == null) { | |
57 | + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
58 | 58 | date = dateFormat.format(new java.util.Date()); |
59 | - } | |
60 | - | |
61 | - String[] dateTime = date.split(" "); | |
59 | + } | |
60 | + | |
61 | + String[] dateTime = date.split(" "); | |
62 | 62 | String[] arrDate = dateTime[0].split("-"); |
63 | 63 | String[] arrTime = dateTime[1].split(":"); |
64 | 64 | deviceTime.dwYear = Integer.parseInt(arrDate[0]); |
... | ... | @@ -69,30 +69,47 @@ public class DeviceControlModule { |
69 | 69 | deviceTime.dwSecond = Integer.parseInt(arrTime[2]); |
70 | 70 | |
71 | 71 | if (!LoginModule.netsdk.CLIENT_SetupDeviceTime(LoginModule.m_hLoginHandle, deviceTime)) { |
72 | - System.err.println("CLIENT_SetupDeviceTime Failed!" + ToolKits.getErrorCodePrint()); | |
73 | - return false; | |
72 | + System.err.println("CLIENT_SetupDeviceTime Failed!" + ToolKits.getErrorCodePrint()); | |
73 | + return false; | |
74 | 74 | } |
75 | 75 | return true; |
76 | 76 | } |
77 | - | |
77 | + | |
78 | 78 | /** |
79 | - * \if ENGLISH_LANG | |
80 | - * Get Device Current Time | |
81 | - * \else | |
82 | - * 获取设备当前时间 | |
83 | - * \endif | |
84 | - */ | |
79 | + * \if ENGLISH_LANG | |
80 | + * Get Device Current Time | |
81 | + * \else | |
82 | + * 获取设备当前时间 | |
83 | + * \endif | |
84 | + */ | |
85 | 85 | public static String getTime() { |
86 | - NetSDKLib.NET_TIME deviceTime = new NetSDKLib.NET_TIME(); | |
87 | - | |
88 | - if (!LoginModule.netsdk.CLIENT_QueryDeviceTime(LoginModule.m_hLoginHandle, deviceTime, 3000)) { | |
89 | - System.err.println("CLIENT_QueryDeviceTime Failed!" + ToolKits.getErrorCodePrint()); | |
90 | - return null; | |
91 | - } | |
92 | - | |
93 | - String date = deviceTime.toStringTime(); | |
94 | - date = date.replace("/", "-"); | |
95 | - | |
96 | - return date; | |
86 | + NetSDKLib.NET_TIME deviceTime = new NetSDKLib.NET_TIME(); | |
87 | + | |
88 | + if (!LoginModule.netsdk.CLIENT_QueryDeviceTime(LoginModule.m_hLoginHandle, deviceTime, 3000)) { | |
89 | + System.err.println("CLIENT_QueryDeviceTime Failed!" + ToolKits.getErrorCodePrint()); | |
90 | + return null; | |
91 | + } | |
92 | + | |
93 | + String date = deviceTime.toStringTime(); | |
94 | + date = date.replace("/", "-"); | |
95 | + | |
96 | + return date; | |
97 | 97 | } |
98 | + | |
99 | + | |
100 | + public static boolean setDVRIPConfig(String deviceId, String ip, int port) { | |
101 | + NetSDKLib.CFG_DVRIP_INFO info = AutoRegisterModule.getDVRIPConfig(MyTask.lLongMap.get(deviceId)); | |
102 | + | |
103 | +// win下,中文需要转换为GBK | |
104 | + byte[] deviceIdBytes = null; | |
105 | + try { | |
106 | + deviceIdBytes = deviceId.getBytes("GBK"); | |
107 | + } catch (UnsupportedEncodingException e) { | |
108 | + e.printStackTrace(); | |
109 | + } | |
110 | + boolean setResult = AutoRegisterModule.setDVRIPConfig(MyTask.lLongMap.get(deviceId), true, ip, port, deviceIdBytes, info); | |
111 | + if (setResult) return true; | |
112 | + else return false; | |
113 | + } | |
114 | + | |
98 | 115 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/service/DeviceService.java
cloud/dahua/src/main/java/com/example/dahua/service/DeviceServiceImp.java
... | ... | @@ -14,4 +14,10 @@ public class DeviceServiceImp implements DeviceService{ |
14 | 14 | return DeviceControlModule.reboot(MyTask.lLongMap.get(deviceId)); |
15 | 15 | } |
16 | 16 | |
17 | + @Override | |
18 | + public boolean setDVRIPConfig(String deviceId,String ip,int port) { | |
19 | + | |
20 | + return DeviceControlModule.setDVRIPConfig(deviceId,ip,port); | |
21 | + } | |
22 | + | |
17 | 23 | } | ... | ... |
cloud/dahua/src/test/java/com/example/dahua/DahuaApplicationTests.java
... | ... | @@ -385,7 +385,7 @@ public class DahuaApplicationTests { |
385 | 385 | @Test |
386 | 386 | public void Mqtt() { |
387 | 387 | |
388 | - /*MqttManager mqttManager = new MqttManager(); | |
388 | + /* MqttManager mqttManager = new MqttManager(); | |
389 | 389 | |
390 | 390 | mqttManager.init(); |
391 | 391 | |
... | ... | @@ -395,7 +395,7 @@ public class DahuaApplicationTests { |
395 | 395 | String devId = stringList.get(i); |
396 | 396 | //30关闭显示屏 31打开显示屏,9升级客户端 |
397 | 397 | |
398 | - mqttManager.sendMq(devId, 9); | |
398 | + mqttManager.sendMq(devId, 31); | |
399 | 399 | }*/ |
400 | 400 | } |
401 | 401 | ... | ... |
... | ... | @@ -0,0 +1,26 @@ |
1 | +2019-12-04 17:39:42 文件名:A38DBF515020CE1B884DA4D8A0B12EFC2019-12-04.jpg | |
2 | + | |
3 | +2019-12-04 17:39:48 文件名:53279343AD42FE392FD3424098AF36812019-12-04.jpg | |
4 | + | |
5 | +2019-12-04 17:41:24 文件名:F9655C0FD13615BBD9B1070ED28BC24C2019-12-04.jpg | |
6 | + | |
7 | +2019-12-04 17:41:30 文件名:BC30A4282D2FF66EE3AE669BE9FE2D3D2019-12-04.jpg | |
8 | + | |
9 | +2019-12-04 17:42:31 文件名:35AC177BF66B817C91FDEF59CB23FE802019-12-04.jpg | |
10 | + | |
11 | +2019-12-04 17:44:51 文件名:CBA93648B16BF37256E3D2C984FE8AA62019-12-04.jpg | |
12 | + | |
13 | +2019-12-04 17:44:57 文件名:B43686A091D26DB93FE3F5917D0F52D02019-12-04.jpg | |
14 | + | |
15 | +2019-12-04 17:44:59 文件名:820D45CBACD7674663B813F95DA4D8EF2019-12-04.jpg | |
16 | + | |
17 | +2019-12-04 17:45:04 文件名:E094FBFF22AB3D48C7B400C47F201C212019-12-04.jpg | |
18 | + | |
19 | +2019-12-04 17:45:13 文件名:8AFE884497ED73034930BCAE38C61D862019-12-04.jpg | |
20 | + | |
21 | +2019-12-04 17:45:18 文件名:BC502A2B766E5F5AAEB920B3163330E52019-12-04.jpg | |
22 | + | |
23 | +2019-12-04 17:51:07 文件名:D0310F45310AE02AA9E91B28697B31C72019-12-04.jpg | |
24 | + | |
25 | +2019-12-04 17:51:12 文件名:77C9E6A6E3BC4FF106F881548B9770112019-12-04.jpg | |
26 | + | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java
... | ... | @@ -71,7 +71,7 @@ public class CMSServer implements ApplicationRunner { |
71 | 71 | |
72 | 72 | static HCEHomeCMS hCEhomeCMS = HCEHomeCMS.INSTANCE; |
73 | 73 | FRegisterCallBack fRegisterCallBack;//注册回调函数实现 |
74 | -// NativeLong lLoginID;//用户句柄 | |
74 | + // NativeLong lLoginID;//用户句柄 | |
75 | 75 | HCEHomeCMS.NET_EHOME_CMS_LISTEN_PARAM struCMSListenPara = new HCEHomeCMS.NET_EHOME_CMS_LISTEN_PARAM(); |
76 | 76 | Map<String, NativeLong> map = new HashMap<>(); |
77 | 77 | |
... | ... | @@ -109,7 +109,7 @@ public class CMSServer implements ApplicationRunner { |
109 | 109 | * @param deviceId |
110 | 110 | */ |
111 | 111 | public boolean getIsDeviceOnline(String deviceId) { |
112 | - return map.containsKey(deviceId)?true:false; | |
112 | + return map.containsKey(deviceId) ? true : false; | |
113 | 113 | } |
114 | 114 | |
115 | 115 | public class FRegisterCallBack implements HCEHomeCMS.DEVICE_REGISTER_CB { |
... | ... | @@ -272,12 +272,13 @@ public class CMSServer implements ApplicationRunner { |
272 | 272 | |
273 | 273 | public boolean invoke(NativeLong iHandle, String pFileName, Pointer pFileBuf, int dwFileLen, Pointer pFilePath, Pointer pUser) { |
274 | 274 | String strPath = "C://EhomePicServer/"; |
275 | -// System.out.println("pFileName:"+pFileName); | |
276 | - pFileName = pFileName.replace("_",""); | |
275 | + System.out.println("pFileName:" + pFileName); | |
276 | + pFileName = pFileName.replace("_", ""); | |
277 | 277 | boolean isZhuaPai = false; |
278 | - if (pFileName.contains("-")){//人脸抓拍机抓拍到的图片 | |
279 | - strPath = "E://wwwhtdocs//SmartCampus//face17e5//School16//Student//";//测试服务器 | |
280 | - pFileName = pFileName.split("T")[0]+".jpg"; | |
278 | + if (pFileName.contains("-")) {//人脸抓拍机抓拍到的图片 | |
279 | + if (!ip.contains("172.16")) | |
280 | + strPath = "E://wwwhtdocs//SmartCampus//face17e5//School16//Student//";//测试服务器 | |
281 | + pFileName = pFileName.split("T")[0] + ".jpg"; | |
281 | 282 | isZhuaPai = true; |
282 | 283 | } |
283 | 284 | String strFilePath = strPath + pFileName; |
... | ... | @@ -324,8 +325,8 @@ public class CMSServer implements ApplicationRunner { |
324 | 325 | |
325 | 326 | pFilePath.write(0, strFilePath.getBytes(), 0, strFilePath.getBytes().length); |
326 | 327 | |
327 | - if (isZhuaPai){ | |
328 | - MqtUtils.getInstance().sendMsg("http://campus.myjxt.com//face17e5/School16/Student/"+pFileName); | |
328 | + if (isZhuaPai) { | |
329 | + MqtUtils.getInstance().sendMsg("http://campus.myjxt.com//face17e5/School16/Student/" + pFileName); | |
329 | 330 | } |
330 | 331 | |
331 | 332 | return true; |
... | ... | @@ -403,11 +404,11 @@ public class CMSServer implements ApplicationRunner { |
403 | 404 | alarmUtils = new AlarmUtils(deviceDao); |
404 | 405 | alarmUtils.setCallBack(new AlarmUtils.AlarmCallBack() { |
405 | 406 | @Override |
406 | - public void callBack(String minorType, String deviceID, String cardNo, String time,String picDataUrlId) { | |
407 | + public void callBack(String minorType, String deviceID, String cardNo, String time, String picDataUrlId) { | |
407 | 408 | switch (minorType) { |
408 | 409 | case "0x4b"://人脸认证通过 |
409 | 410 | // sendSMS(cardNo, deviceID, time); |
410 | - saveFaceRecoder(deviceID,cardNo,time,picDataUrlId); | |
411 | + saveFaceRecoder(deviceID, cardNo, time, picDataUrlId); | |
411 | 412 | break; |
412 | 413 | case "0x426"://人证设备在线 |
413 | 414 | |
... | ... | @@ -417,7 +418,7 @@ public class CMSServer implements ApplicationRunner { |
417 | 418 | deviceDao.updateDeviceStatu(0, deviceID); |
418 | 419 | break; |
419 | 420 | case "0x69"://人证比对通过 |
420 | - saveFaceRecoder(deviceID,cardNo,time,picDataUrlId); | |
421 | + saveFaceRecoder(deviceID, cardNo, time, picDataUrlId); | |
421 | 422 | break; |
422 | 423 | } |
423 | 424 | } |
... | ... | @@ -434,15 +435,14 @@ public class CMSServer implements ApplicationRunner { |
434 | 435 | |
435 | 436 | |
436 | 437 | /** |
437 | - * | |
438 | 438 | * @param deviceID |
439 | - * @param cardNo 十进制卡号 | |
439 | + * @param cardNo 十进制卡号 | |
440 | 440 | * @param time |
441 | 441 | * @param picDataUrlId |
442 | 442 | */ |
443 | - private void saveFaceRecoder( String deviceID, String cardNo, String time,String picDataUrlId){ | |
443 | + private void saveFaceRecoder(String deviceID, String cardNo, String time, String picDataUrlId) { | |
444 | 444 | |
445 | - if(!StringUtils.isEmpty(cardNo)){ | |
445 | + if (!StringUtils.isEmpty(cardNo)) { | |
446 | 446 | Face_Recoder face_recoder = new Face_Recoder(); |
447 | 447 | |
448 | 448 | //卡号逆转 |
... | ... | @@ -450,20 +450,20 @@ public class CMSServer implements ApplicationRunner { |
450 | 450 | |
451 | 451 | StudentBean studentBean = userDao.getStudentWithCard(cardNo); |
452 | 452 | |
453 | - if (null!=studentBean){ | |
454 | - FileUtils.getInstance().writeLogs(studentBean.getName()+" "+ cardNo,FileUtils.facerecoder); | |
453 | + if (null != studentBean) { | |
454 | + FileUtils.getInstance().writeLogs(studentBean.getName() + " " + cardNo, FileUtils.facerecoder); | |
455 | 455 | |
456 | 456 | face_recoder.setCardNum(cardNo); |
457 | 457 | face_recoder.setDeviceId(deviceID); |
458 | 458 | face_recoder.setTime(time); |
459 | 459 | face_recoder.setName(studentBean.getName()); |
460 | - String imgUrl = "http://114.55.30.100:8081/kms/services/rest/dataInfoService/downloadFile?id="+picDataUrlId; | |
460 | + String imgUrl = "http://114.55.30.100:8081/kms/services/rest/dataInfoService/downloadFile?id=" + picDataUrlId; | |
461 | 461 | face_recoder.setImgurl(imgUrl); |
462 | 462 | face_recoder.setUser_id(studentBean.getUser_id()); |
463 | 463 | face_recoder.setInOrOut(1); |
464 | 464 | |
465 | - sendRecordDao.addFaceRecoder(face_recoder.getDeviceId(),face_recoder.getUser_id(),face_recoder.getName(), | |
466 | - face_recoder.getImgurl(),face_recoder.getInOrOut(),face_recoder.getTime(),face_recoder.getCardNum()); | |
465 | + sendRecordDao.addFaceRecoder(face_recoder.getDeviceId(), face_recoder.getUser_id(), face_recoder.getName(), | |
466 | + face_recoder.getImgurl(), face_recoder.getInOrOut(), face_recoder.getTime(), face_recoder.getCardNum()); | |
467 | 467 | } |
468 | 468 | } |
469 | 469 | |
... | ... | @@ -477,7 +477,7 @@ public class CMSServer implements ApplicationRunner { |
477 | 477 | * @param deviceId |
478 | 478 | * @return |
479 | 479 | */ |
480 | - public boolean createImgPath(String srcFile, String picUrl, String card, String startTime, String endTime, int validTimeEnabled, String name, String deviceId, String userType,String employeeNo) { | |
480 | + public boolean createImgPath(String srcFile, String picUrl, String card, String startTime, String endTime, int validTimeEnabled, String name, String deviceId, String userType, String employeeNo) { | |
481 | 481 | |
482 | 482 | if (map.containsKey(deviceId)) { |
483 | 483 | HCEHomeSS.NET_EHOME_SS_CLIENT_PARAM pClientParam = new HCEHomeSS.NET_EHOME_SS_CLIENT_PARAM(); |
... | ... | @@ -513,7 +513,7 @@ public class CMSServer implements ApplicationRunner { |
513 | 513 | } |
514 | 514 | hCEhomeSS.NET_ESS_DestroyClient(client);//释放资源 |
515 | 515 | } |
516 | - return sendInfo(srcFile, url, card, startTime, endTime, validTimeEnabled, name, deviceId, userType,employeeNo); | |
516 | + return sendInfo(srcFile, url, card, startTime, endTime, validTimeEnabled, name, deviceId, userType, employeeNo); | |
517 | 517 | } |
518 | 518 | sendRecoderUtils.sendFail(sendRecordDao, card, srcFile, deviceId, userDao, "设备不在线", userType); |
519 | 519 | return false; |
... | ... | @@ -524,8 +524,8 @@ public class CMSServer implements ApplicationRunner { |
524 | 524 | * |
525 | 525 | * @Param picUrl 原图 |
526 | 526 | */ |
527 | - public boolean sendInfo(String srcFile, String url, String card, String startTime, String endTime, int validTimeEnabled, String name, String deviceId, String userType,String employeeNo) { | |
528 | - editCard(startTime,endTime,validTimeEnabled,name,card,deviceId,employeeNo); | |
527 | + public boolean sendInfo(String srcFile, String url, String card, String startTime, String endTime, int validTimeEnabled, String name, String deviceId, String userType, String employeeNo) { | |
528 | + editCard(startTime, endTime, validTimeEnabled, name, card, deviceId, employeeNo); | |
529 | 529 | String strRequest = "/ISAPI/AccessControl/SetFaceParamCfg"; |
530 | 530 | String strConfigXML = "<SetFaceParamCfg version=\"2.0\" xmlns=\"http://www.isapi.org/ver20/XMLSchema\">\n" + |
531 | 531 | "<cardNo>" + card + "</cardNo>\n" + |
... | ... | @@ -534,14 +534,15 @@ public class CMSServer implements ApplicationRunner { |
534 | 534 | "<faceID>1</faceID>\n" + |
535 | 535 | "<faceDataType>1</faceDataType>\n" + |
536 | 536 | "</SetFaceParamCfg>"; |
537 | -// System.out.println("strConfigXML:" + strConfigXML); | |
537 | +// System.out.println("图片下发参数:" + strConfigXML); | |
538 | + deleteCard(deviceId,card); | |
538 | 539 | return editFace(srcFile, url, card, strRequest, strConfigXML, "下发人脸", deviceId, 1, userType); |
539 | 540 | } |
540 | 541 | |
541 | 542 | /** |
542 | 543 | * 编辑卡号 |
543 | 544 | */ |
544 | - private void editCard(String startTime, String endTime, int validTimeEnabled, String name, String card, String deviceId,String employeeNo) { | |
545 | + private void editCard(String startTime, String endTime, int validTimeEnabled, String name, String card, String deviceId, String employeeNo) { | |
545 | 546 | HCEHomeCMS.NET_EHOME_XML_CFG struXMLCard = new HCEHomeCMS.NET_EHOME_XML_CFG(); |
546 | 547 | |
547 | 548 | HCEHomeCMS.NET_DVR_STRING_POINTER stringRequestCard = new HCEHomeCMS.NET_DVR_STRING_POINTER(); |
... | ... | @@ -578,7 +579,7 @@ public class CMSServer implements ApplicationRunner { |
578 | 579 | "<maxSwipeTime></maxSwipeTime>\r\n" + |
579 | 580 | "<swipeTime></swipeTime>\r\n" + |
580 | 581 | "<groupNo></groupNo>\r\n" + |
581 | - "<employeeNo>"+employeeNo+ "</employeeNo>\r\n" + | |
582 | + "<employeeNo>" + employeeNo + "</employeeNo>\r\n" + | |
582 | 583 | "<name>"; |
583 | 584 | String nameAfter = "</name>\r\n" + |
584 | 585 | "<departmentNo></departmentNo>\r\n" + |
... | ... | @@ -724,7 +725,7 @@ public class CMSServer implements ApplicationRunner { |
724 | 725 | |
725 | 726 | private boolean editFace(String srcFile, String faceUrl, String card, String strRequest, String strConfigXML, String content, String deviceId, int type, String userType) { |
726 | 727 | |
727 | - | |
728 | +// deleteCard(deviceId, card); | |
728 | 729 | // lLoginID = map.get(deviceId); |
729 | 730 | |
730 | 731 | HCEHomeCMS.NET_EHOME_PTXML_PARAM struISAPXML = new HCEHomeCMS.NET_EHOME_PTXML_PARAM(); | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java
... | ... | @@ -37,7 +37,7 @@ public class SendUserAsync { |
37 | 37 | |
38 | 38 | // @Async("taskExecutor") |
39 | 39 | public void sendStuToHaiKang(String srcFile, String picUrl, String card, String startTime, String endTime, int validTimeEnabled, String name, String deviceId, String userType, int isPiliang) { |
40 | -// System.out.println("下发卡号:"+card+" startTime:"+startTime+" endTime:"+endTime); | |
40 | + System.out.println("下发时间设置:"+" startTime:"+startTime+" endTime:"+endTime); | |
41 | 41 | if (null == sendRecoderUtils) sendRecoderUtils = new SendRecoderUtils(); |
42 | 42 | //1、检测图片是否合格 |
43 | 43 | boolean check = true; |
... | ... | @@ -49,14 +49,14 @@ public class SendUserAsync { |
49 | 49 | } |
50 | 50 | //根据设备是5603 还是新设备 |
51 | 51 | String employeeNo = ""; |
52 | - if (deviceId.contains("luzx")||deviceId.contains("5607")||deviceId.contains("5671")){ | |
52 | + if (deviceId.contains("ymzx")||deviceId.contains("5607")||deviceId.contains("5671")){ | |
53 | 53 | employeeNo = System.currentTimeMillis()+""; |
54 | - cmsServer.SetCardWeekPlan(deviceId, HKXmlUtils.getInstance().SetCardRightCfg(card), "设置卡权限"); | |
55 | - cmsServer.SetCardWeekPlan(deviceId, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); | |
56 | 54 | cmsServer.SetCardWeekPlan(deviceId, HKXmlUtils.getInstance().SetCardTemplate(), "设置卡权限计划模板"); |
55 | + cmsServer.SetCardWeekPlan(deviceId, HKXmlUtils.getInstance().SetCardWeekPlan(), "卡权限周计划"); | |
57 | 56 | for (int i = 0; i < 7; i++) { |
58 | 57 | cmsServer. SetCardWeekPlan(deviceId, HKXmlUtils.getInstance().SetCardWeekPlanTime("00:00:00", "23:00:00",""+i), "设置卡权限周计划时间"); |
59 | 58 | } |
59 | + cmsServer.SetCardWeekPlan(deviceId, HKXmlUtils.getInstance().SetCardRightCfg(card), "设置卡权限"); | |
60 | 60 | } |
61 | 61 | |
62 | 62 | boolean result = cmsServer.createImgPath(srcFile, picUrl, card, startTime, endTime, validTimeEnabled, name, deviceId, userType,employeeNo); | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/StudentBean.java
... | ... | @@ -51,6 +51,15 @@ public class StudentBean implements Serializable { |
51 | 51 | |
52 | 52 | private String user_id; |
53 | 53 | |
54 | + private String photo; | |
55 | + | |
56 | + public String getPhoto() { | |
57 | + return photo; | |
58 | + } | |
59 | + | |
60 | + public void setPhoto(String photo) { | |
61 | + this.photo = photo; | |
62 | + } | |
54 | 63 | |
55 | 64 | public String getUser_id() { |
56 | 65 | return user_id; | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java
... | ... | @@ -159,7 +159,8 @@ public interface UserDao { |
159 | 159 | @Param("userId") String userId, @Param("targetUrl") String targetUrl, @Param("clicks") int clicks, @Param("userList") String userList, @Param("isShare") int isShare, |
160 | 160 | @Param("charpId1") int charpId1, @Param("knowledgeId") int knowledgeId); |
161 | 161 | |
162 | - @Select("select * from SZ_V_School_Student where school_id = #{school_id} and len(photo)>0 and len(student_num)>0") | |
162 | + @Select("select * from SZ_V_School_Student where school_id = 1066 and student_type = 1 and user_id not in (select DISTINCT user_id from DBlan27.xiaoanhxy.dbo.Face_Recoder where deviceId in ('840153205671', '840153965671', '840153485671', '840153325671', '840154005671',\n" + | |
163 | + " '840153105671', '840153165671', '840153835671') and time > '2019-12-10' )") | |
163 | 164 | List<StudentBean> getAllStudentsWithSchoolId(@Param("school_id") String school_id); |
164 | 165 | |
165 | 166 | @Select("select * from SZ_V_School_Student where school_id = #{school_id} and student_type = 2") | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/utils/AlarmUtils.java
... | ... | @@ -124,7 +124,7 @@ public class AlarmUtils { |
124 | 124 | content = "无此卡号"; |
125 | 125 | break; |
126 | 126 | case "0x4b"://人脸认证通过 |
127 | - if (!StringUtils.isEmpty(picDataUrl)) { | |
127 | + if (!StringUtils.isEmpty(picDataUrl)&&picDataUrl.split("id=").length>1) { | |
128 | 128 | String picDataUrlId = picDataUrl.split("id=")[1]; |
129 | 129 | FileUtils.getInstance().writeLogs("0x4bdeviceID:" + deviceID + " cardNo:" + cardNo + " time:" + time + " picDataUrlId:" + picDataUrlId, FileUtils.faceSuccess); |
130 | 130 | content = "人脸认证通过"; |
... | ... | @@ -141,7 +141,7 @@ public class AlarmUtils { |
141 | 141 | content = "真人检测失败"; |
142 | 142 | break; |
143 | 143 | case "0x69"://人证比对通过 |
144 | - if (!StringUtils.isEmpty(picDataUrl)) { | |
144 | + if (!StringUtils.isEmpty(picDataUrl)&&picDataUrl.split("id=").length>1) { | |
145 | 145 | String picDataUrlId = picDataUrl.split("id=")[1]; |
146 | 146 | FileUtils.getInstance().writeLogs("0x69deviceID:" + deviceID + " cardNo:" + cardNo + " time:" + time + " picDataUrlId:" + picDataUrlId, FileUtils.faceSuccess); |
147 | 147 | content = "人脸认证通过"; | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/xiananDao/SendRecordDao.java
... | ... | @@ -27,7 +27,7 @@ public interface SendRecordDao { |
27 | 27 | @Param("userType") int userType, @Param("deviceType") int deviceType); |
28 | 28 | |
29 | 29 | |
30 | - @Select("select * from Face_SendSuccess") | |
30 | + @Select("select * from Face_SendSuccess where schoolId = 1066 ") | |
31 | 31 | List<SendRecordBean> getSenSuccess(); |
32 | 32 | |
33 | 33 | @Select("select * from Face_SendSuccess where deviceID = #{deviceID} and schoolId = #{schoolId}") | ... | ... |
cloud/haikangface/src/test/java/com/sincere/haikangface/HaikangfaceApplicationTests.java
... | ... | @@ -85,24 +85,50 @@ public class HaikangfaceApplicationTests { |
85 | 85 | |
86 | 86 | @Test |
87 | 87 | public void send() { |
88 | - /* RestTemplate restTemplate = new RestTemplate(); | |
88 | + //补发失败人脸 | |
89 | + /*RestTemplate restTemplate = new RestTemplate(); | |
89 | 90 | //失败人脸补发 |
90 | - List<SendRecordBean> sendRecordBeanList = sendRecordDao.getSenFail("1066",2); | |
91 | + int userType = 2; | |
92 | + List<SendRecordBean> sendRecordBeanList = sendRecordDao.getSenFail("110",userType); | |
91 | 93 | int idnex = 0; |
92 | 94 | for (int i = 0; i < sendRecordBeanList.size(); i++) { |
93 | 95 | SendRecordBean sendRecordBean = sendRecordBeanList.get(i); |
94 | 96 | String url =String.format( "http://114.55.30.100:8089/facereco/sendStuCardAndImg?card=%s&deviceId=%s&endTime=%s&filePath=%s&name=%s&userType=%s&validTimeEnabled=%s&startTime=%s" |
95 | - ,sendRecordBean.getNum(),sendRecordBean.getDeviceID(),"2023-10-01 10:00:00",sendRecordBean.getImgPath(),sendRecordBean.getName(),"2","1","2019-10-01 10:00:00"); | |
97 | + ,sendRecordBean.getNum(),sendRecordBean.getDeviceID(),"2023-10-01 10:00:00",sendRecordBean.getImgPath(),sendRecordBean.getName(),userType+"","1","2019-10-01 10:00:00"); | |
96 | 98 | String result1 = restTemplate.getForObject(url, String.class); |
97 | 99 | System.out.println("下发人脸:" + result1+" idnex:"+idnex++); |
98 | -// try { | |
99 | -// Thread.sleep(2000); | |
100 | -// } catch (InterruptedException e) { | |
101 | -// e.printStackTrace(); | |
102 | -// } | |
103 | 100 | |
104 | 101 | }*/ |
105 | 102 | |
103 | + /*RestTemplate restTemplate = new RestTemplate(); | |
104 | + //失败人脸补发 | |
105 | + int userType = 2; | |
106 | + List<StudentBean> studentBeans = userDao.getAllStudentsWithSchoolId("1066"); | |
107 | + List<String> list = new ArrayList<>(); | |
108 | +// list.add("840153205671"); | |
109 | +// list.add("840153965671"); | |
110 | +// list.add("840153485671"); | |
111 | +// list.add("840153325671"); | |
112 | +// list.add("840154005671"); | |
113 | +// list.add("840153105671"); | |
114 | + list.add("840153165671"); | |
115 | +// list.add("840153835671"); | |
116 | + int idnex = 0; | |
117 | + for (int i = 0; i < studentBeans.size(); i++) { | |
118 | + StudentBean sendRecordBean = studentBeans.get(i); | |
119 | +//E:\wwwhtdocs\smartcampus\face17e50\School562\Teacher\947.png | |
120 | +// http://campus.myjxt.com//face17e50/School1066/Student/st20190101.png | |
121 | + for (int j = 0; j < list.size(); j++) { | |
122 | + String imgUrl = sendRecordBean.getPhoto().replace("http://campus.myjxt.com","E:\\wwwhtdocs\\smartcampus"); | |
123 | + String url =String.format( "http://114.55.30.100:8089/facereco/sendStuCardAndImg?card=%s&deviceId=%s&endTime=%s&filePath=%s&name=%s&userType=%s&validTimeEnabled=%s&startTime=%s" | |
124 | + ,sendRecordBean.getStudent_num(),list.get(j),"2023-10-01 10:00:00",imgUrl,sendRecordBean.getName(),userType+"","1","2019-10-01 10:00:00"); | |
125 | + String result1 = restTemplate.getForObject(url, String.class); | |
126 | + System.out.println("下发人脸:" + result1+" idnex:"+idnex++); | |
127 | + } | |
128 | + | |
129 | + }*/ | |
130 | + | |
131 | + | |
106 | 132 | /* List<HSGrade> gradeList = userDao.getGrades(); |
107 | 133 | |
108 | 134 | for (int i = 0; i < gradeList.size(); i++) { |
... | ... | @@ -291,7 +317,7 @@ public class HaikangfaceApplicationTests { |
291 | 317 | |
292 | 318 | @Test |
293 | 319 | public void fileRes() { |
294 | - List<QuestionBean> questionBeans = zuoYeDao.getQuestionsRecent(); | |
320 | +// List<QuestionBean> questionBeans = zuoYeDao.getQuestionsRecent(); | |
295 | 321 | /* List<QuestionBean> questionBeans = zuoYeDao.getQuestionsRecent(); |
296 | 322 | String dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); |
297 | 323 | |
... | ... | @@ -304,12 +330,12 @@ public class HaikangfaceApplicationTests { |
304 | 330 | ques.getState(),intime,stemId+"",ques.getExamineFlag(),ques.getSubjectId(),"10","1",ques.getChapterId(),ques.getGradeId()+"","1","","1"); |
305 | 331 | }*/ |
306 | 332 | |
307 | -List<Long> queIds = zuoyeAdminDao.getQueIds(); | |
333 | +//List<Long> queIds = zuoyeAdminDao.getQueIds(); | |
308 | 334 | |
309 | 335 | |
310 | - for (int i = queIds.size()-1; i >=0 ; i--) { | |
311 | - zuoyeAdminDao.addYYQuestionAndKnowledg(queIds.get(i), Long.parseLong(questionBeans.get(questionBeans.size()-1-i).getKnowledgeId()),0,1); | |
312 | - } | |
336 | +// for (int i = queIds.size()-1; i >=0 ; i--) { | |
337 | +// zuoyeAdminDao.addYYQuestionAndKnowledg(queIds.get(i), Long.parseLong(questionBeans.get(questionBeans.size()-1-i).getKnowledgeId()),0,1); | |
338 | +// } | |
313 | 339 | |
314 | 340 | |
315 | 341 | } | ... | ... |
... | ... | @@ -0,0 +1,20 @@ |
1 | +2019-12-04 13:44:02 filePath:C:\Users\taohandong\Desktop\1111.jpg card:31D1AD65 name:林炜 deviceId:qqqqqqqqqqqqq | |
2 | + | |
3 | +2019-12-04 13:44:44 filePath:C:\Users\taohandong\Desktop\1111.jpg card:31D1AD65 name:林炜 deviceId:qqqqqqqqqqqqq | |
4 | + | |
5 | +2019-12-04 13:45:35 filePath:C:\TaoHandong\copy\School1035\Student\HSZL201901103.png card:31D1AD64 name:林炜 deviceId:qqqqqqqqqqqqq | |
6 | + | |
7 | +2019-12-04 13:46:13 filePath:C:\TaoHandong\copy\School1035\Student\HSZL201901103.png card:31D1AD64 name:林炜 deviceId:qqqqqqqqqqqqq | |
8 | + | |
9 | +2019-12-04 13:54:39 filePath:C:\TaoHandong\copy\School1035\Student\HSZL201901103.png card:31D1AD64 name:林炜 deviceId:qqqqqqqqqqqqq | |
10 | + | |
11 | +2019-12-04 13:55:01 filePath:C:\Users\taohandong\Desktop\1111.jpg card:31D1AD64 name:林炜 deviceId:qqqqqqqqqqqqq | |
12 | + | |
13 | +2019-12-04 13:55:07 filePath:C:\Users\taohandong\Desktop\1111.jpg card:31D1AD64 name:林炜 deviceId:qqqqqqqqqqqqq | |
14 | + | |
15 | +2019-12-04 13:55:22 filePath:C:\Users\taohandong\Desktop\1111.jpg card:31D1AD66 name:林炜 deviceId:qqqqqqqqqqqqq | |
16 | + | |
17 | +2019-12-04 13:55:48 filePath:C:\Users\taohandong\Desktop\1111.jpg card:31D1AD64 name:林炜 deviceId:qqqqqqqqqqqqq | |
18 | + | |
19 | +2019-12-04 13:56:12 filePath:C:\Users\taohandong\Desktop\1111.jpg card:31D1AD64 name:林炜 deviceId:qqqqqqqqqqqqq | |
20 | + | ... | ... |
... | ... | @@ -0,0 +1,20 @@ |
1 | +2019-12-04 13:44:02 文件名:B25B8D991F703D7446556F779769C3451111.jpg | |
2 | + | |
3 | +2019-12-04 13:44:44 文件名:B080427C3DC6892D672EC78A31036DFA1111.jpg | |
4 | + | |
5 | +2019-12-04 13:45:35 文件名:4B7A932AF8E49BD80472EB10D9D6A973HSZL201901103.png | |
6 | + | |
7 | +2019-12-04 13:46:13 文件名:82CD103F0B2BDCBBB65D63548A0A9ECEHSZL201901103.png | |
8 | + | |
9 | +2019-12-04 13:54:40 文件名:D85FE5276FB74C963721798BBAC95211HSZL201901103.png | |
10 | + | |
11 | +2019-12-04 13:55:01 文件名:B366A0913FDFA40E6B2C7B2997EC005B1111.jpg | |
12 | + | |
13 | +2019-12-04 13:55:07 文件名:999BB6DF31D019569F42C5BED2BA545A1111.jpg | |
14 | + | |
15 | +2019-12-04 13:55:22 文件名:12D459538736C19523315D204BF560401111.jpg | |
16 | + | |
17 | +2019-12-04 13:55:48 文件名:EE6EDD519AA303E3E92EEFA59428619C1111.jpg | |
18 | + | |
19 | +2019-12-04 13:56:13 文件名:1C7528EBB8656AE4FC5797BC9CD419651111.jpg | |
20 | + | ... | ... |
... | ... | @@ -0,0 +1,6 @@ |
1 | +2019-12-04 14:01:21 filePath:C:\Users\taohandong\Desktop\1111.jpg card:31D1AD64 name:林炜 deviceId:qqqqqqqqqqqqq | |
2 | + | |
3 | +2019-12-04 14:04:22 filePath:C:\Users\taohandong\Desktop\1111.jpg card:31D1AD64 name:林炜 deviceId:qqqqqqqqqqqqq | |
4 | + | |
5 | +2019-12-04 14:04:34 filePath:C:\Users\taohandong\Desktop\1111.jpg card:31D1AD64 name:林炜 deviceId:qqqqqqqqqqqqq | |
6 | + | ... | ... |
... | ... | @@ -0,0 +1,20 @@ |
1 | +2019-12-04 14:06:58 学校ID:1077 设备列表:[] | |
2 | + | |
3 | +2019-12-04 14:06:58 学校ID:435 设备列表:[] | |
4 | + | |
5 | +2019-12-04 14:06:58 学校ID:435 设备列表:[] | |
6 | + | |
7 | +2019-12-04 14:06:58 学校ID:435 设备列表:[] | |
8 | + | |
9 | +2019-12-04 14:06:58 学校ID:460 设备列表:[] | |
10 | + | |
11 | +2019-12-04 14:06:58 学校ID:23 设备列表:[] | |
12 | + | |
13 | +2019-12-04 14:06:58 学校ID:1077 设备列表:[] | |
14 | + | |
15 | +2019-12-04 14:06:58 学校ID:366 设备列表:[] | |
16 | + | |
17 | +2019-12-04 14:06:59 学校ID:654 设备列表:[] | |
18 | + | |
19 | +2019-12-04 14:06:59 学校ID:1077 设备列表:[] | |
20 | + | ... | ... |
... | ... | @@ -0,0 +1,4 @@ |
1 | +2019-12-04 15:29:16 0x4bdeviceID:qqqqqqqqqqqqq cardNo:1689112881 time:2019-12-04 15:41:44 picDataUrlId:11CA89B5F512A8AF84B6C0A4E663C26D&username=&password= | |
2 | + | |
3 | +2019-12-04 15:32:56 0x4bdeviceID:qqqqqqqqqqqqq cardNo:1689112881 time:2019-12-04 15:45:25 picDataUrlId:E6E0858773E98757B0DA4DDFADA66D40&username=&password= | |
4 | + | ... | ... |
... | ... | @@ -0,0 +1,164 @@ |
1 | +2019-12-04 17:08:59 文件名:F516BFBA1486878F1F96703C2720E0962019-12-04.jpg | |
2 | + | |
3 | +2019-12-04 17:09:04 文件名:F171B7542BC77F6CC924FE8F0719001B2019-12-04.jpg | |
4 | + | |
5 | +2019-12-04 17:09:04 文件名:4DA79C5BA39B2DE57CB64A247CEB4DB92019-12-04.jpg | |
6 | + | |
7 | +2019-12-04 17:09:05 文件名:2337527EFF7065DFAEC3FC7D399271352019-12-04.jpg | |
8 | + | |
9 | +2019-12-04 17:09:09 文件名:F363801DFC3B189C5E89932202470E962019-12-04.jpg | |
10 | + | |
11 | +2019-12-04 17:09:09 文件名:30F3D9B4F164C81DC245BC834E1825F42019-12-04.jpg | |
12 | + | |
13 | +2019-12-04 17:09:13 文件名:E7F4C8698DB32A30CF64CAEE724D6B502019-12-04.jpg | |
14 | + | |
15 | +2019-12-04 17:09:18 文件名:3D68AAF8E6A53AC0C6214FA00D9E47A42019-12-04.jpg | |
16 | + | |
17 | +2019-12-04 17:09:23 文件名:91C037518486F8903377BCBE128B8AD12019-12-04.jpg | |
18 | + | |
19 | +2019-12-04 17:09:28 文件名:23952D6A829000268C017E0402C2235E2019-12-04.jpg | |
20 | + | |
21 | +2019-12-04 17:09:35 文件名:147A383519C728BC3170CD3A0283CAED2019-12-04.jpg | |
22 | + | |
23 | +2019-12-04 17:09:40 文件名:38BF0BF906A0A69B35473E6B0DE4A53B2019-12-04.jpg | |
24 | + | |
25 | +2019-12-04 17:10:04 文件名:09979008552AA392E00388EB514D30D92019-12-04.jpg | |
26 | + | |
27 | +2019-12-04 17:10:25 文件名:D9F9B84858ADD779F3B17A36307614752019-12-04T17:10:57A08:0001D8123177701.jpg | |
28 | + | |
29 | +2019-12-04 17:10:30 文件名:590A143A445118C6C4997F62C58C14CB2019-12-04T17:10:57A08:0001D8123177701.jpg | |
30 | + | |
31 | +2019-12-04 17:10:37 文件名:1741AD2FB0788CC40C2DAF5D9F433FE12019-12-04T17:11:07A08:0001D8123177701.jpg | |
32 | + | |
33 | +2019-12-04 17:10:41 文件名:45AC0B45D568EAFFA98D21902F62F8052019-12-04T17:11:14A08:0001D8123177701.jpg | |
34 | + | |
35 | +2019-12-04 17:10:42 文件名:30464D923875B61D160DBAEAF3A94FF32019-12-04T17:11:07A08:0001D8123177701.jpg | |
36 | + | |
37 | +2019-12-04 17:10:47 文件名:D83FBA7EE184C15C4A4F7224223EBFEC2019-12-04T17:11:14A08:0001D8123177701.jpg | |
38 | + | |
39 | +2019-12-04 17:12:36 文件名:740205939AB2C998E1CB3B1F661644F12019-12-04.jpg | |
40 | + | |
41 | +2019-12-04 17:12:41 文件名:DF37DEE57FC2DCC0C4253B1FAE5CB2E22019-12-04.jpg | |
42 | + | |
43 | +2019-12-04 17:12:42 文件名:913ADDF2C40140C319C3FBC9EAFB002A2019-12-04.jpg | |
44 | + | |
45 | +2019-12-04 17:12:46 文件名:F15D44790CC48998D9D3AC8FCF741A822019-12-04.jpg | |
46 | + | |
47 | +2019-12-04 17:14:29 文件名:99B92DBA52C5E6F66B3D8D92CA37DAB42019-12-04.jpg | |
48 | + | |
49 | +2019-12-04 17:14:34 文件名:E354F7C80FCDBC2883AB296A02DA0E1B2019-12-04.jpg | |
50 | + | |
51 | +2019-12-04 17:15:02 文件名:CD0192E6791DF6467EA316AA54CC5DFB2019-12-04.jpg | |
52 | + | |
53 | +2019-12-04 17:15:07 文件名:18BD8BCAECB12B829866C82C04252E3A2019-12-04.jpg | |
54 | + | |
55 | +2019-12-04 17:15:15 文件名:A7BA73DADBA8AA48E6B722831D6B3E792019-12-04.jpg | |
56 | + | |
57 | +2019-12-04 17:15:20 文件名:EEB67F6913B192BF1F0ED9887EBA41062019-12-04.jpg | |
58 | + | |
59 | +2019-12-04 17:15:30 文件名:78E0F8641F871E3C06B13951CD0CC7CC2019-12-04.jpg | |
60 | + | |
61 | +2019-12-04 17:15:36 文件名:82819CC856663CBCDE900A5F7E18A7262019-12-04.jpg | |
62 | + | |
63 | +2019-12-04 17:15:52 文件名:735397BB9075E69F6194F1030F6372BD2019-12-04.jpg | |
64 | + | |
65 | +2019-12-04 17:15:56 文件名:8075892E0DFF5A047D6B4AE00DCD571F2019-12-04.jpg | |
66 | + | |
67 | +2019-12-04 17:15:57 文件名:84B87B234FE1D461A34FDCB52E8381712019-12-04.jpg | |
68 | + | |
69 | +2019-12-04 17:16:01 文件名:F36C55EE350DBF867648BC90E956953D2019-12-04.jpg | |
70 | + | |
71 | +2019-12-04 17:16:27 文件名:1E39C261FA101BE293E8307D52BBF4F22019-12-04.jpg | |
72 | + | |
73 | +2019-12-04 17:16:32 文件名:438ED99F669D4E1F68B81622F071529A2019-12-04.jpg | |
74 | + | |
75 | +2019-12-04 17:17:17 文件名:7EC4B7157000920CB27E754DCA89B6EA2019-12-04.jpg | |
76 | + | |
77 | +2019-12-04 17:17:23 文件名:2BD6F8AA437C7C074BA22E3F0086A19D2019-12-04.jpg | |
78 | + | |
79 | +2019-12-04 17:17:29 文件名:CA9E4F02AF4C3F003BA9FFAA1C7E02A42019-12-04.jpg | |
80 | + | |
81 | +2019-12-04 17:17:34 文件名:908B6CD51F053E7ED3EF3C980ACFA1FC2019-12-04.jpg | |
82 | + | |
83 | +2019-12-04 17:17:47 文件名:248684757B9B7DCA57AB77CAD81FD14F2019-12-04.jpg | |
84 | + | |
85 | +2019-12-04 17:17:53 文件名:82480CE864851B6B0A2B9CDB8813DB692019-12-04.jpg | |
86 | + | |
87 | +2019-12-04 17:17:56 文件名:5B279EF45EA49B8BB5064FFFB5561F362019-12-04.jpg | |
88 | + | |
89 | +2019-12-04 17:18:01 文件名:970A2DAF8365E615E69D242B695E326A2019-12-04.jpg | |
90 | + | |
91 | +2019-12-04 17:18:11 文件名:8CB28F93094CF59A09DA70AEAABC98082019-12-04.jpg | |
92 | + | |
93 | +2019-12-04 17:18:16 文件名:7DAB29949C5E64AC08FD4728EC5A030E2019-12-04.jpg | |
94 | + | |
95 | +2019-12-04 17:18:32 文件名:D10852C00407E56F2BDAAF598AA1771E2019-12-04.jpg | |
96 | + | |
97 | +2019-12-04 17:18:38 文件名:E35C8926D9DB8E4815702BDF6A01A72B2019-12-04.jpg | |
98 | + | |
99 | +2019-12-04 17:19:57 文件名:079C31118F8B20E9A7CB73E0031A68782019-12-04.jpg | |
100 | + | |
101 | +2019-12-04 17:20:02 文件名:466636ACD3D15184095B2CA67DCDA1762019-12-04.jpg | |
102 | + | |
103 | +2019-12-04 17:22:28 文件名:F410BB8D2E0DBEA4E0BCB5229A15BBE42019-12-04.jpg | |
104 | + | |
105 | +2019-12-04 17:22:33 文件名:9A30960CA0353A45BE8C6D873A9D2F7F2019-12-04.jpg | |
106 | + | |
107 | +2019-12-04 17:23:25 文件名:8FFB68D2A075AEB3E6D08F0F4C8DDD952019-12-04.jpg | |
108 | + | |
109 | +2019-12-04 17:23:30 文件名:6F331633B8E57B15693FE458DF789E742019-12-04.jpg | |
110 | + | |
111 | +2019-12-04 17:25:39 文件名:34EC480C9D5B0A7671A985FCFE21F8B42019-12-04.jpg | |
112 | + | |
113 | +2019-12-04 17:25:42 文件名:FD7EE2C4BFFA9B8E8BF2454FEFCC44FC2019-12-04.jpg | |
114 | + | |
115 | +2019-12-04 17:25:44 文件名:D0D8C7BC33F74695C92BDFA266BDFF842019-12-04.jpg | |
116 | + | |
117 | +2019-12-04 17:25:47 文件名:5B0E0FD00CFB86702C3D83B225C759DD2019-12-04.jpg | |
118 | + | |
119 | +2019-12-04 17:28:00 文件名:A96BBAAA692F225751CCB3D07BF1D3212019-12-04.jpg | |
120 | + | |
121 | +2019-12-04 17:28:05 文件名:89C1FD1354B65DA0C572522D560ECC1C2019-12-04.jpg | |
122 | + | |
123 | +2019-12-04 17:28:46 文件名:32F2DC6F51CDABF46DF02D400E54C8332019-12-04.jpg | |
124 | + | |
125 | +2019-12-04 17:28:51 文件名:F27FBDD4586F6ED2CB6E1C4A28037E232019-12-04.jpg | |
126 | + | |
127 | +2019-12-04 17:30:28 文件名:C3A17E2345A2ECE8FB36ED2CFC6E02F92019-12-04.jpg | |
128 | + | |
129 | +2019-12-04 17:30:34 文件名:F08753F2D2579DA65E7045419732D9662019-12-04.jpg | |
130 | + | |
131 | +2019-12-04 17:31:22 文件名:D0312D0402287898F63BD2F23B7D81802019-12-04.jpg | |
132 | + | |
133 | +2019-12-04 17:31:25 文件名:160BABE20EE32A62D29ADDC7B8A9AA282019-12-04.jpg | |
134 | + | |
135 | +2019-12-04 17:31:27 文件名:B4D8E026FEDFE801DC2A65986B3B1B592019-12-04.jpg | |
136 | + | |
137 | +2019-12-04 17:31:30 文件名:DB101BE8A22FA05CC8429161A8E7D9EA2019-12-04.jpg | |
138 | + | |
139 | +2019-12-04 17:31:39 文件名:0076B339B4B10B2626D9CB382908A6D32019-12-04.jpg | |
140 | + | |
141 | +2019-12-04 17:31:44 文件名:7DC79B1E58253021FBADB374F5B5CDF62019-12-04.jpg | |
142 | + | |
143 | +2019-12-04 17:32:57 文件名:D72F4CA45A739CEA538F61138875C1BA2019-12-04.jpg | |
144 | + | |
145 | +2019-12-04 17:33:03 文件名:3B6D40D2EBC3C75DDFD425486D276A022019-12-04.jpg | |
146 | + | |
147 | +2019-12-04 17:33:40 文件名:2EAC68C6B0F49C48B519CA691A7192F72019-12-04.jpg | |
148 | + | |
149 | +2019-12-04 17:33:45 文件名:ECAC6D45F72C20BFD2A561D8DF5A2F5B2019-12-04.jpg | |
150 | + | |
151 | +2019-12-04 17:34:56 文件名:023124E93B9514C81396F3C36E1A700E2019-12-04.jpg | |
152 | + | |
153 | +2019-12-04 17:35:01 文件名:F882EE5D13C14B2F550B2E76B85ACBA32019-12-04.jpg | |
154 | + | |
155 | +2019-12-04 17:35:34 文件名:5B7FE253243C53BD8B6838527E7A3B3D2019-12-04.jpg | |
156 | + | |
157 | +2019-12-04 17:35:39 文件名:53CCC073DD7F3CAD9C91E6F43DB548F62019-12-04.jpg | |
158 | + | |
159 | +2019-12-04 17:35:47 文件名:54F46DD950395A8457B2FB30519048D92019-12-04.jpg | |
160 | + | |
161 | +2019-12-04 17:35:52 文件名:02368EA1389708B8BD6509529022DB742019-12-04.jpg | |
162 | + | |
163 | +2019-12-04 17:35:55 文件名:91716470126490BEF7C673498F9786D42019-12-04.jpg | |
164 | + | ... | ... |
70.2 KB
47.9 KB