FaceTBServiceImpl.java 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912
  1. package com.yx.face.service.impl;
  2. import cn.hutool.core.date.DateUtil;
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.google.common.collect.Lists;
  6. import com.google.common.collect.Maps;
  7. import com.yx.face.boot.config.TaskPoolConfig;
  8. import com.yx.face.boot.core.SnowflakeIdWorker;
  9. import com.yx.face.boot.uitls.DateUtils;
  10. import com.yx.face.boot.uitls.FileUploadUtil;
  11. import com.yx.face.boot.uitls.JsonUtils;
  12. import com.yx.face.boot.uitls.RedisUtil;
  13. import com.yx.face.dao.*;
  14. import com.yx.face.model.dto.FacePassDTO;
  15. import com.yx.face.model.entity.*;
  16. import com.yx.face.model.vo.SystemLongTermDocumentsVO;
  17. import com.yx.face.netty_client.NettyClient;
  18. import com.yx.face.service.FaceTBService;
  19. //import com.yx.face.service.SuKangMaAipService;
  20. import com.yx.face.service.UserControlEarlyWarningListService;
  21. import com.yx.face.service.feign.TBDeviceFaceService;
  22. import lombok.SneakyThrows;
  23. import lombok.extern.slf4j.Slf4j;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.beans.factory.annotation.Value;
  26. import org.springframework.scheduling.annotation.Async;
  27. import org.springframework.stereotype.Service;
  28. import org.springframework.util.CollectionUtils;
  29. import org.springframework.util.StringUtils;
  30. import javax.annotation.Resource;
  31. import javax.persistence.Column;
  32. import java.util.*;
  33. import java.util.stream.Collectors;
  34. import static org.apache.coyote.http11.Constants.a;
  35. /**
  36. * @description: FaceTBServiceImpl <br>
  37. * @date: 2021/6/3 10:40 <br>
  38. * @author: PWB <br>
  39. */
  40. @Slf4j
  41. @Service
  42. public class FaceTBServiceImpl implements FaceTBService {
  43. @Resource
  44. private FacePassDao facePassDao;
  45. @Resource
  46. private FaceDeviceDao faceDeviceDao;
  47. @Resource
  48. private FaceRequestLogDao faceRequestLogDao;
  49. @Resource
  50. private UserInfoDao userInfoDao;
  51. @Resource
  52. private FaceLogDao faceLogDao;
  53. // @Resource
  54. // private SystemConfigDao systemConfigDao;
  55. // @Resource
  56. // private SystemLongTermDocumentsDao systemLongTermDocumentsDao;
  57. @Autowired
  58. private AsyncTriggerRetryImpl asyncTriggerRetry;
  59. @Resource
  60. private FaceTaskDao faceTaskDao;
  61. @Autowired
  62. private TBDeviceFaceService tbDeviceFaceService;
  63. @Autowired
  64. private UserControlEarlyWarningListService userControlEarlyWarningListService;
  65. // @Autowired
  66. // private RedisUtil redisUtil;
  67. @Value("${web.address}")
  68. private String address;
  69. //
  70. // @Autowired
  71. // private NettyClient nettyClient;
  72. // @Autowired
  73. // private TaskPoolConfig taskPoolConfig;
  74. @Override
  75. public Boolean downFace(Long userId, Date startTime, Date endTime, Integer adminId) {
  76. List<FaceDevice> snList = faceDeviceDao.getSnList(adminId);
  77. if (CollectionUtils.isEmpty(snList)) {
  78. return true;
  79. }
  80. UserInfo userInfo = userInfoDao.selectByPrimaryKey(userId);
  81. Map<String, Object> result;
  82. Map<String, Object> params = Maps.newHashMapWithExpectedSize(3);
  83. List<Map<String, Object>> data = Lists.newArrayListWithExpectedSize(1);
  84. Map<String, Object> dataItem = Maps.newHashMapWithExpectedSize(8);
  85. FaceRequestLog requestLog;
  86. Date now = new Date();
  87. FacePass facePass;
  88. for (FaceDevice device : snList) {
  89. /* facePassId = facePassDao.getFacePassIdBySn(device.getSn(), userId);
  90. if (facePassId != null) {
  91. continue;
  92. }*/
  93. facePass = new FacePass();
  94. facePass.setUserId(userId);
  95. facePass.setDeviceSn(device.getSn());
  96. facePass.setDeviceId(device.getId());
  97. facePass.setStartTime(startTime);
  98. facePass.setEndTime(endTime);
  99. facePass.setStatus(2);
  100. facePass.setType(3);
  101. facePass.setTaskId(String.valueOf(SnowflakeIdWorker.getSnowId()));
  102. facePass.setUpdateTime(now);
  103. facePass.setCreateTime(now);
  104. facePassDao.insertSelective(facePass);
  105. dataItem.put("pin", userId);
  106. dataItem.put("name", userInfo.getUsername());
  107. dataItem.put("validPeriodStart", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, facePass.getStartTime()));
  108. dataItem.put("validPeriodEnd", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, facePass.getEndTime()));
  109. dataItem.put("userType", 0);
  110. dataItem.put("photo", userInfo.getAvatar());
  111. dataItem.put("rightno", 104);
  112. dataItem.put("cardid", userInfo.getIdNumber());
  113. data.add(dataItem);
  114. params.put("SN", device.getSn());
  115. params.put("Data", data);
  116. requestLog = new FaceRequestLog();
  117. requestLog.setName("下发人脸");
  118. requestLog.setContext("/downUser");
  119. requestLog.setParams("");
  120. requestLog.setStatus(0);
  121. requestLog.setUsedTime(0L);
  122. requestLog.setUpdateTime(now);
  123. requestLog.setCreateTime(now);
  124. faceRequestLogDao.insertSelective(requestLog);
  125. params.put("taskId", requestLog.getId());
  126. result = tbDeviceFaceService.downUser(params);
  127. log.info("下发人脸downFace = {}", result);
  128. }
  129. return true;
  130. }
  131. @Override
  132. public List<FacePassDTO> batchDownFace(List<FacePassDTO> dtoList) {
  133. if (CollectionUtils.isEmpty(dtoList)) {
  134. return dtoList;
  135. }
  136. List<FaceDevice> snList = faceDeviceDao.getSnList(null);
  137. if (CollectionUtils.isEmpty(snList)) {
  138. return dtoList;
  139. }
  140. Map<String, Object> result;
  141. Map<String, Object> params = Maps.newHashMapWithExpectedSize(3);
  142. List<Map<String, Object>> data = Lists.newArrayListWithExpectedSize(dtoList.size());
  143. Map<String, Object> dataItem;
  144. FaceRequestLog requestLog;
  145. Date now = new Date();
  146. for (FaceDevice device : snList) {
  147. for (FacePassDTO passDTO : dtoList) {
  148. dataItem = Maps.newHashMapWithExpectedSize(7);
  149. dataItem.put("pin", passDTO.getUserId());
  150. dataItem.put("name", passDTO.getUsername());
  151. dataItem.put("validPeriodStart", passDTO.getStartTime());
  152. dataItem.put("validPeriodEnd", passDTO.getEndTime());
  153. dataItem.put("userType", 0);
  154. dataItem.put("photo", "");
  155. dataItem.put("rightno", 104);
  156. data.add(dataItem);
  157. }
  158. params.put("SN", device.getSn());
  159. params.put("Data", data);
  160. requestLog = new FaceRequestLog();
  161. requestLog.setName("下发人脸");
  162. requestLog.setContext("/downUser");
  163. requestLog.setParams("");
  164. requestLog.setStatus(0);
  165. requestLog.setUsedTime(0L);
  166. requestLog.setUpdateTime(now);
  167. requestLog.setCreateTime(now);
  168. faceRequestLogDao.insertSelective(requestLog);
  169. params.put("taskId", requestLog.getId());
  170. result = tbDeviceFaceService.downUser(params);
  171. log.info("下发人脸downFace = {}", result);
  172. }
  173. return dtoList;
  174. }
  175. @Override
  176. public Boolean delFace(List<Long> userIds, Integer adminId) {
  177. List<FaceDevice> snList = faceDeviceDao.getSnList(adminId);
  178. if (CollectionUtils.isEmpty(snList)) {
  179. return true;
  180. }
  181. boolean userIdsNotEmpty = CollectionUtils.isEmpty(userIds);
  182. Map<String, Object> result;
  183. Map<String, Object> params = Maps.newHashMapWithExpectedSize(3);
  184. List<Map<String, Object>> data = Lists.newArrayListWithExpectedSize(userIds.size());
  185. Map<String, Object> dataItem;
  186. FaceRequestLog requestLog;
  187. Date now = new Date();
  188. for (FaceDevice device : snList) {
  189. requestLog = new FaceRequestLog();
  190. if (userIdsNotEmpty) {
  191. for (Long userId : userIds) {
  192. dataItem = Maps.newHashMapWithExpectedSize(1);
  193. dataItem.put("pin", userId);
  194. data.add(dataItem);
  195. }
  196. params.put("Data", data);
  197. } else {
  198. params.put("Data", "all");
  199. }
  200. params.put("SN", device.getSn());
  201. requestLog.setName("删除人员人脸信息");
  202. requestLog.setContext("/delUser");
  203. requestLog.setParams("");
  204. requestLog.setStatus(0);
  205. requestLog.setUsedTime(0L);
  206. requestLog.setUpdateTime(now);
  207. requestLog.setCreateTime(now);
  208. faceRequestLogDao.insertSelective(requestLog);
  209. params.put("taskId", requestLog.getId());
  210. result = tbDeviceFaceService.delUser(params);
  211. log.info("删除人员人脸信息downFace = {}", result);
  212. }
  213. return true;
  214. }
  215. @Override
  216. public Boolean delFaceBySn(String sn, List<Long> userIds, Integer adminId) {
  217. Integer deviceId = faceDeviceDao.getIdBySn(sn);
  218. if (deviceId == null) {
  219. return true;
  220. }
  221. Map<String, Object> result;
  222. Map<String, Object> params = Maps.newHashMapWithExpectedSize(3);
  223. List<Map<String, Object>> data = Lists.newArrayListWithExpectedSize(userIds.size());
  224. Map<String, Object> dataItem;
  225. FaceRequestLog requestLog;
  226. Date now = new Date();
  227. requestLog = new FaceRequestLog();
  228. if (CollectionUtils.isEmpty(userIds)) {
  229. for (Long userId : userIds) {
  230. dataItem = Maps.newHashMapWithExpectedSize(1);
  231. dataItem.put("pin", userId);
  232. data.add(dataItem);
  233. }
  234. params.put("Data", data);
  235. } else {
  236. params.put("Data", "all");
  237. }
  238. params.put("SN", sn);
  239. requestLog.setName("删除人员人脸信息");
  240. requestLog.setContext("/delUser");
  241. requestLog.setParams("");
  242. requestLog.setStatus(0);
  243. requestLog.setUsedTime(0L);
  244. requestLog.setUpdateTime(now);
  245. requestLog.setCreateTime(now);
  246. faceRequestLogDao.insertSelective(requestLog);
  247. params.put("taskId", requestLog.getId());
  248. result = tbDeviceFaceService.delUser(params);
  249. log.info("删除人员人脸信息downFace = {}", result);
  250. return true;
  251. }
  252. /*=============================================【以下为推送】====================================================*/
  253. @Override
  254. public Map<String, Object> connect(Map<String, Object> dto) {
  255. Map<String, Object> result = Maps.newHashMapWithExpectedSize(1);
  256. result.put("errCode", "00");
  257. if (dto == null) {
  258. return result;
  259. }
  260. String sn = null;
  261. String version = null;
  262. String devIP = null;
  263. Integer userCount = null;
  264. Integer swipeCardCount = null;
  265. if (dto.get("SN") != null) {
  266. sn = dto.get("SN").toString();
  267. }
  268. if (dto.get("version") != null) {
  269. version = dto.get("version").toString();
  270. }
  271. if (dto.get("devIP") != null) {
  272. devIP = dto.get("devIP").toString();
  273. }
  274. if (dto.get("swipeCardCount") != null) {
  275. swipeCardCount = (Integer) dto.get("swipeCardCount");
  276. }
  277. if (dto.get("userCount") != null) {
  278. userCount = (Integer) dto.get("userCount");
  279. }
  280. Integer deviceId = faceDeviceDao.getIdBySn(sn);
  281. FaceDevice device = new FaceDevice();
  282. device.setId(deviceId);
  283. device.setOnline(1);
  284. device.setPassCount(swipeCardCount);
  285. device.setUserCount(userCount);
  286. device.setAppVersion(version);
  287. device.setInterIp(devIP);
  288. Date now = new Date();
  289. device.setUpdateTime(now);
  290. if (deviceId == null) {
  291. // device.setSn(sn);
  292. // device.setEnable(1);
  293. // device.setCreateTime(now);
  294. // faceDeviceDao.insertSelective(device);
  295. return result;
  296. }
  297. faceDeviceDao.updateByPrimaryKeySelective(device);
  298. return result;
  299. }
  300. @Override
  301. public Map<String, Object> disconnect(Map<String, Object> dto) {
  302. Map<String, Object> result = Maps.newHashMapWithExpectedSize(1);
  303. result.put("errCode", "00");
  304. String sn = null;
  305. if (dto.get("SN") != null) {
  306. sn = dto.get("SN").toString();
  307. }
  308. if (!StringUtils.hasText(sn)) {
  309. return result;
  310. }
  311. Integer deviceId = faceDeviceDao.getIdBySn(sn);
  312. if (deviceId == null) {
  313. return result;
  314. }
  315. FaceDevice device = new FaceDevice();
  316. device.setId(deviceId);
  317. device.setOnline(0);
  318. device.setUpdateTime(new Date());
  319. faceDeviceDao.updateByPrimaryKeySelective(device);
  320. return result;
  321. }
  322. @Override
  323. public Map<String, Object> report(Map<String, Object> dto) {
  324. Map<String, Object> result = Maps.newHashMapWithExpectedSize(1);
  325. result.put("errCode", "00");
  326. if (dto == null) {
  327. return result;
  328. }
  329. String sn = null;
  330. String version = null;
  331. String devIP = null;
  332. Integer userCount = null;
  333. Integer swipeCardCount = null;
  334. if (dto.get("SN") != null) {
  335. sn = dto.get("SN").toString();
  336. }
  337. if (!StringUtils.hasText(sn)) {
  338. return result;
  339. }
  340. Map<String, Object> data = (Map<String, Object>) dto.get("data");
  341. if (CollectionUtils.isEmpty(data)) {
  342. return result;
  343. }
  344. if (data.get("swipeCardCount") != null) {
  345. swipeCardCount = (Integer) data.get("swipeCardCount");
  346. }
  347. if (data.get("userCount") != null) {
  348. userCount = (Integer) data.get("userCount");
  349. }
  350. if (data.get("version") != null) {
  351. version = data.get("version").toString();
  352. }
  353. if (data.get("devIP") != null) {
  354. devIP = data.get("devIP").toString();
  355. }
  356. Integer deviceId = faceDeviceDao.getIdBySn(sn);
  357. FaceDevice device = new FaceDevice();
  358. device.setId(deviceId);
  359. device.setOnline(1);
  360. device.setPassCount(swipeCardCount);
  361. device.setUserCount(userCount);
  362. device.setAppVersion(version);
  363. device.setInterIp(devIP);
  364. Date now = new Date();
  365. device.setUpdateTime(now);
  366. if (deviceId == null) {
  367. // device.setSn(sn);
  368. // device.setEnable(1);
  369. // device.setCreateTime(now);
  370. // faceDeviceDao.insertSelective(device);
  371. return result;
  372. }
  373. faceDeviceDao.updateByPrimaryKeySelective(device);
  374. return result;
  375. }
  376. @Override
  377. public Map<String, Object> eventRecords(Map<String, Object> dto) throws InterruptedException {
  378. Map<String, Object> result = Maps.newHashMapWithExpectedSize(1);
  379. result.put("errCode", "00");
  380. String sn = null;
  381. if (dto.get("SN") != null) {
  382. sn = dto.get("SN").toString();
  383. }
  384. //判断是否为空
  385. if (org.apache.commons.lang3.StringUtils.isBlank(sn)) {
  386. return result;
  387. }
  388. String snId = faceDeviceDao.getFaceDeviceOne(sn);
  389. //sn是否存在
  390. if (org.apache.commons.lang3.StringUtils.isBlank(snId)) {
  391. return result;
  392. }
  393. Integer action = null;
  394. String orgid = "";
  395. if (dto.get("action") != null) {
  396. action = (Integer) dto.get("action");
  397. }
  398. if (dto.get("orgid") != null) {
  399. orgid = dto.get("orgid").toString();
  400. }
  401. List<Map<String, Object>> dataList = (List) dto.get("data");
  402. log.info("人脸返回内容;=" + dataList + "数据");
  403. if (CollectionUtils.isEmpty(dataList)) {
  404. return result;
  405. }
  406. Integer recordid;
  407. String pin;
  408. String name = "";
  409. String photo = null;
  410. String cardid = "";
  411. String cardIdEx = "";
  412. Integer verifytype = 0;
  413. Integer rightno = 104;
  414. Integer outtype = 0;
  415. String idCard = "";
  416. String phone = "";
  417. //温度
  418. String extend3 = "";
  419. String extend1 = "";
  420. //健康码组装数据
  421. String extend5 = "";
  422. //体温是否异常 0 正常 1 异常
  423. String twStatus = "";
  424. //健康码状态00 绿码 01 黄码 10 红码
  425. String jkmStatus = "";
  426. //健康码状态 0 健康码 1 国康码
  427. String jkmType = "";
  428. //阴性 阳性
  429. String hsStatus = "";
  430. //疫苗状态 0针 等等依次累加
  431. String ymStatus = "";
  432. //行程信息
  433. String xcInfo = "";
  434. // * name 姓名
  435. String sfzName = "";
  436. //sex 性别
  437. String sfzSex = "";
  438. //nation民族
  439. String sfzNation = "";
  440. //born出生年月
  441. String sfzBorn = "";
  442. //address地址
  443. String sfzAddress = "";
  444. //apartment签发机关
  445. String sfzApartment = "";
  446. //period有效期限
  447. String sfzPeriod = "";
  448. //no身份证号
  449. String sfzNo = "";
  450. //country国籍
  451. String sfzCountry = "";
  452. //cn_name中文名
  453. String sfzCnName = "";
  454. //Idcard_version证件版本
  455. String sfzIdcardVersion = "";
  456. //card_type身份证类型
  457. String sfzCardType = "";
  458. //photo 身份证照片
  459. String sfzPhoto = "";
  460. String verify_score = null;
  461. FaceLog faceLog;
  462. Long userId;
  463. Date logTime;
  464. long nowL = System.currentTimeMillis();
  465. Date now = new Date(nowL);
  466. String faceTime = "";
  467. for (Map<String, Object> data : dataList) {
  468. if (data.get("recordid") != null) {
  469. recordid = (Integer) data.get("recordid");
  470. } else {
  471. continue;
  472. }
  473. if (data.get("pin") != null) {
  474. pin = data.get("pin").toString();
  475. } else {
  476. continue;
  477. }
  478. if (data.get("name") != null) {
  479. name = data.get("name").toString();
  480. }
  481. if (data.get("photo") != null) {
  482. photo = data.get("photo").toString();
  483. }
  484. if (data.get("cardid") != null) {
  485. cardid = data.get("cardid").toString();
  486. }
  487. if (data.get("cardIdEx") != null) {
  488. cardIdEx = data.get("cardIdEx").toString();
  489. }
  490. if (data.get("verifytype") != null) {
  491. verifytype = (Integer) data.get("verifytype");
  492. }
  493. if (data.get("rightno") != null) {
  494. rightno = (Integer) data.get("rightno");
  495. }
  496. if (data.get("time") != null) {
  497. faceTime = data.get("time").toString();
  498. }
  499. if (data.get("outtype") != null) {
  500. outtype = (Integer) data.get("outtype");
  501. }
  502. if (data.get("phone") != null) {
  503. phone = data.get("phone").toString();
  504. }
  505. if (data.get("extend3") != null) {
  506. extend3 = data.get("extend3").toString();
  507. }
  508. if (data.get("extend1") != null) {
  509. extend1 = data.get("extend1").toString();
  510. }
  511. if (data.get("verify_score") != null) {
  512. verify_score = data.get("verify_score").toString();
  513. }
  514. if (data.get("twStatus") != null) {
  515. twStatus = data.get("twStatus").toString();
  516. }
  517. if (data.get("jkmStatus") != null) {
  518. jkmStatus = data.get("jkmStatus").toString();
  519. }
  520. if (data.get("jkmType") != null) {
  521. jkmType = data.get("jkmType").toString();
  522. }
  523. if (data.get("hsStatus") != null) {
  524. hsStatus = data.get("hsStatus").toString();
  525. String[] split = hsStatus.split(",");
  526. hsStatus = split[0];
  527. // hsStatus = data.get("hsStatus").toString();
  528. // String[] split = hsStatus.split(",");
  529. // hsStatus = split[1].trim();
  530. }
  531. if (data.get("ymStatus") != null) {
  532. ymStatus = data.get("ymStatus").toString();
  533. String[] split = ymStatus.split(";");
  534. ymStatus = split[0];
  535. // ymStatus = data.get("ymStatus").toString();
  536. // String[] split = ymStatus.split(",");
  537. // ymStatus = split[1];
  538. }
  539. if (data.get("xcInfo") != null) {
  540. xcInfo = data.get("xcInfo").toString();
  541. }
  542. // if (verifytype == 2) {
  543. Map<String, Object> map = (Map<String, Object>) data.get("idCard");
  544. if (map != null && !map.isEmpty()) {
  545. log.info("verifytype==2 代表刷身份证解析身份证 ;{}", data.get("idCard"));
  546. //身份证信息
  547. // Map<String, Object> map = (Map<String, Object>) data.get("idCard");
  548. if (map.get("address") != null) {
  549. sfzAddress = map.get("address").toString();
  550. }
  551. if (map.get("apartment") != null) {
  552. sfzApartment = map.get("apartment").toString();
  553. }
  554. if (map.get("born") != null) {
  555. sfzBorn = map.get("born").toString();
  556. }
  557. if (map.get("card_type") != null) {
  558. sfzCardType = map.get("card_type").toString();
  559. }
  560. if (map.get("cn_name") != null) {
  561. sfzCnName = map.get("cn_name").toString();
  562. }
  563. if (map.get("country") != null) {
  564. sfzCountry = map.get("country").toString();
  565. }
  566. if (map.get("idCard_version") != null) {
  567. sfzIdcardVersion = map.get("idCard_version").toString();
  568. }
  569. if (map.get("name") != null) {
  570. sfzName = map.get("name").toString();
  571. }
  572. if (map.get("nation") != null) {
  573. sfzNation = map.get("nation").toString();
  574. }
  575. if (map.get("no") != null) {
  576. sfzNo = map.get("no").toString();
  577. }
  578. if (map.get("period") != null) {
  579. sfzPeriod = map.get("period").toString();
  580. }
  581. if (map.get("photo") != null) {
  582. sfzPhoto = map.get("photo").toString();
  583. if (StringUtils.hasText(sfzPhoto)) {
  584. sfzPhoto = buildImage(sfzPhoto, sn + pin);
  585. }
  586. }
  587. if (map.get("sex") != null) {
  588. sfzSex = map.get("sex").toString();
  589. }
  590. }
  591. if (StringUtils.hasText(photo)) {
  592. photo = buildImage(photo, sn + pin);
  593. }
  594. if (verifytype == 0) {
  595. userId = Long.valueOf(pin);
  596. } else {
  597. userId = 0L;
  598. }
  599. if (verifytype == 0) {
  600. if (facePassDao.getFacePassBySn(sn, userId, DateUtils.addMinutes(now, -2)) == null) {
  601. continue;
  602. }
  603. logTime = faceLogDao.getRecent(userId, sn);
  604. if (logTime != null) {
  605. if (DateUtils.addSeconds(logTime, 30).getTime() > nowL) {
  606. continue;
  607. }
  608. }
  609. }
  610. faceLog = new FaceLog();
  611. faceLog.setRecordid(Long.valueOf(recordid));
  612. faceLog.setAction(action);
  613. faceLog.setDeviceSn(sn);
  614. faceLog.setUserId(userId);
  615. faceLog.setName(name);
  616. faceLog.setPhoto(photo);
  617. faceLog.setCardid(cardid);
  618. faceLog.setCardidex(cardIdEx);
  619. faceLog.setVerifyType(verifytype);
  620. faceLog.setRightno(rightno);
  621. faceLog.setOutType(outtype);
  622. faceLog.setFaceTime(faceTime);
  623. faceLog.setOrgid(orgid);
  624. faceLog.setPhone(phone);
  625. faceLog.setExtend3(extend3);
  626. faceLog.setExtend1(extend1);
  627. faceLog.setExtend5(extend5);
  628. faceLog.setTwStatus(twStatus);
  629. faceLog.setJkmStatus(jkmStatus);
  630. faceLog.setJkmType(jkmType);
  631. faceLog.setHsStatus(hsStatus);
  632. faceLog.setYmStatus(ymStatus);
  633. faceLog.setXcInfo(xcInfo);
  634. //身份证模块数据
  635. faceLog.setSfzSex(sfzSex);
  636. faceLog.setSfzPhoto(sfzPhoto);
  637. faceLog.setSfzPeriod(sfzPeriod);
  638. faceLog.setSfzNo(sfzNo);
  639. faceLog.setSfzNation(sfzNation);
  640. faceLog.setSfzName(sfzName);
  641. faceLog.setSfzIdcardVersion(sfzIdcardVersion);
  642. faceLog.setSfzCountry(sfzCountry);
  643. faceLog.setSfzCnName(sfzCnName);
  644. faceLog.setSfzCardType(sfzCardType);
  645. faceLog.setSfzBorn(sfzBorn);
  646. faceLog.setSfzApartment(sfzApartment);
  647. faceLog.setSfzAddress(sfzAddress);
  648. faceLog.setAdminId(faceDeviceDao.getAdminIdBySn(sn));
  649. faceLog.setVerifyScore(verify_score);
  650. faceLog.setCreateTime(now);
  651. if (verifytype == 0 || verifytype == 2) {
  652. faceLogDao.insertSelective(faceLog);
  653. //预警数据插入
  654. userControlEarlyWarningListService.addWarningInformation(faceLog.getDeviceSn(), faceLog.getCardid(), faceLog.getId());
  655. }
  656. // Map<String, String> maps = new HashMap<>(1);
  657. // maps.put("face-log", JSONObject.toJSONString(faceLog));
  658. // nettyClient.sendMessage(JSON.toJSONString(maps));
  659. }
  660. return result;
  661. }
  662. @Override
  663. public Map<String, Object> pushUsers(Map<String, Object> dto) {
  664. Map<String, Object> result = Maps.newHashMapWithExpectedSize(1);
  665. result.put("errCode", "00");
  666. return result;
  667. }
  668. @Override
  669. public Map<String, Object> delUser(Map<String, Object> dto) {
  670. Map<String, Object> result = Maps.newHashMapWithExpectedSize(1);
  671. result.put("errCode", "00");
  672. if (dto == null) {
  673. return result;
  674. }
  675. String sn = null;
  676. if (dto.get("SN") != null) {
  677. sn = dto.get("SN").toString();
  678. }
  679. if (!StringUtils.hasText(sn)) {
  680. return result;
  681. }
  682. Object Obj = dto.get("data");
  683. if (Obj == null) {
  684. return result;
  685. }
  686. List<Map<String, Object>> data = Obj instanceof List ? ((List<Map<String, Object>>) Obj) : null;
  687. String dataStr;
  688. if (data == null) {
  689. dataStr = Obj.toString();
  690. if ("all".equals(dataStr)) {
  691. facePassDao.removeFacePassBySn(sn, null);
  692. }
  693. return result;
  694. }
  695. if (data.isEmpty()) {
  696. return result;
  697. }
  698. for (Map<String, Object> map : data) {
  699. facePassDao.removeFacePassBySn(sn, (Long) map.get("pin"));
  700. }
  701. return result;
  702. }
  703. @Override
  704. public Map<String, Object> pushTaskResult(Map<String, Object> dto) {
  705. Map<String, Object> result = Maps.newHashMapWithExpectedSize(1);
  706. result.put("errCode", "00");
  707. if (dto == null) {
  708. return result;
  709. }
  710. return result;
  711. }
  712. @Override
  713. public Map<String, Object> getTaskId(Map<String, Object> dto) {
  714. Map<String, Object> result = Maps.newHashMapWithExpectedSize(1);
  715. result.put("errCode", "00");
  716. result.put("taskId", SnowflakeIdWorker.getSnowId());
  717. if (dto == null) {
  718. return result;
  719. }
  720. return result;
  721. }
  722. @Override
  723. public void pushUsersOnline(List<Map<String, String>> list) {
  724. // for (Map<String, String> map : list) {
  725. // String taskId = (String) redisUtil.get(map.get("taskId"));
  726. // if (StringUtils)
  727. // redisUtil.get()
  728. // redisUtil.get(map.get("taskId"));
  729. // }
  730. //
  731. //
  732. //
  733. //
  734. // //获取员工通道
  735. // List<FaceDevice> faceDeviceList = faceDeviceDao.selectTypeFaceDev(2);
  736. // if (faceDeviceList.isEmpty()) {
  737. // log.info("设备为空===========");
  738. // return;
  739. // }
  740. // //获取员工列表
  741. // List<SystemLongTermDocumentsVO> systemLongTermDocumentsDaoList = systemLongTermDocumentsDao.getList(42, null);
  742. // if (faceDeviceList.isEmpty()) {
  743. // log.info("获取员工列表===========");
  744. // return;
  745. // }
  746. // List<SystemLongTermDocumentsVO> mapList = new ArrayList<>();
  747. // for (SystemLongTermDocumentsVO vo : systemLongTermDocumentsDaoList) {
  748. // for (Map<String, String> map : list) {
  749. // String s = map.get(vo.getIdNumber());
  750. // if (StringUtils.hasText(s)) {
  751. // mapList.add(vo);
  752. // break;
  753. // }
  754. // }
  755. // }
  756. // //取差集
  757. // List<SystemLongTermDocumentsVO> differenceList = systemLongTermDocumentsDaoList.stream()
  758. // .filter(item -> !mapList.stream()
  759. // .map(e -> e.getIdNumber())
  760. // .collect(Collectors.toList())
  761. // .contains(item.getIdNumber()))
  762. // .collect(Collectors.toList());
  763. // String sn = list.get(0).get("SN");
  764. // FaceDevice faceDeviceBySn = faceDeviceDao.getFaceDeviceBySn(sn);
  765. // for (SystemLongTermDocumentsVO vo : differenceList) {
  766. // faceDeviceList(faceDeviceBySn, vo);
  767. // }
  768. }
  769. // @Override
  770. // public Map<String, Object> syncUsers(Map<String, Object> param) {
  771. // ArrayList<Map<String, Object>> objects = new ArrayList<>();
  772. // for (int i = 1; i <= 10000; i++) {
  773. // Map<String, Object> dataItem = Maps.newHashMapWithExpectedSize(8);
  774. // // 下发参数
  775. // dataItem.put("pin", i);
  776. // dataItem.put("name", "张三" + i);
  777. // dataItem.put("validPeriodStart", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
  778. // dataItem.put("validPeriodEnd", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
  779. // dataItem.put("userType", 0);
  780. // dataItem.put("photo", "https://files.jiandaoyun.com/FnGKTV33Vq3Re-XPfE3FtZNvK-fV?attname=FnGKTV33Vq3Re-XPfE3FtZNvK-fV.jpeg&e=1642262399&token=bM7UwVPyBBdPaleBZt21SWKzMylqPUpn-05jZlas:Xyg_TpATKLBAFiJX_YmhBa79vEE=");
  781. // dataItem.put("rightno", 105);
  782. // dataItem.put("cardid", "412728199706030513");
  783. // objects.add(dataItem);
  784. // }
  785. // Map map = new HashMap();
  786. // map.put("errCode", "00");
  787. // map.put("totalNum", "3");
  788. // map.put("updateTime", "11");
  789. // map.put("data", objects);
  790. // return map;
  791. // }
  792. @Async
  793. public void faceDeviceList(FaceDevice faceDevice, SystemLongTermDocumentsVO vo) {
  794. //天波人脸服务请求日志表
  795. FaceRequestLog requestLog;
  796. Date now = new Date();
  797. //人脸下发表
  798. FacePass facePass;
  799. //唯一id
  800. Long faceTaskId;
  801. //人脸清除定时任务
  802. FaceTask faceTask;
  803. //人脸下发到设备里面
  804. Map<String, Object> params = Maps.newHashMapWithExpectedSize(3);
  805. List<Map<String, Object>> data = Lists.newArrayListWithExpectedSize(1);
  806. Map<String, Object> dataItem = Maps.newHashMapWithExpectedSize(8);
  807. // 下发参数
  808. dataItem.put("pin", vo.getCardNo());
  809. dataItem.put("name", vo.getName());
  810. dataItem.put("validPeriodStart", DateUtil.format(vo.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
  811. dataItem.put("validPeriodEnd", DateUtil.format(vo.getExpireTime(), "yyyy-MM-dd HH:mm:ss"));
  812. dataItem.put("userType", 0);
  813. dataItem.put("photo", vo.getPhoto());
  814. dataItem.put("rightno", 105);
  815. dataItem.put("cardid", vo.getIdNumber());
  816. data.add(dataItem);
  817. params.put("SN", faceDevice.getSn());
  818. params.put("Data", data);
  819. //天波人脸服务请求日志表
  820. requestLog = new FaceRequestLog();
  821. requestLog.setName("下发人脸");
  822. requestLog.setContext("/downUser");
  823. requestLog.setParams(JSONObject.toJSONString(params));
  824. requestLog.setStatus(1);
  825. requestLog.setUsedTime(0L);
  826. requestLog.setUpdateTime(now);
  827. requestLog.setCreateTime(now);
  828. //人脸下发记录表
  829. faceRequestLogDao.insertSelective(requestLog);
  830. params.put("taskId", requestLog.getId());
  831. //人脸下发表
  832. facePass = new FacePass();
  833. facePass.setUserId(Long.valueOf(vo.getCardNo()));
  834. facePass.setDeviceSn(faceDevice.getSn());
  835. facePass.setDeviceId(faceDevice.getId());
  836. facePass.setStartTime(vo.getCreateTime());
  837. facePass.setEndTime(vo.getExpireTime());
  838. facePass.setAdminId(vo.getAdminId());
  839. facePass.setStatus(2);
  840. facePass.setType(2);
  841. facePass.setTaskId(vo.getAdminId().toString());
  842. facePass.setUpdateTime(now);
  843. facePass.setCreateTime(now);
  844. //人脸下发
  845. facePassDao.insertSelective(facePass);
  846. //数据同步
  847. asyncTriggerRetry.send(params, facePass);
  848. faceTaskId = faceTaskDao.getFaceTaskId(faceDevice.getSn(), Long.valueOf(vo.getCardNo()));
  849. faceTask = new FaceTask();
  850. faceTask.setId(faceTaskId);
  851. faceTask.setTaskTime(facePass.getEndTime());
  852. faceTask.setStatus(0);
  853. faceTask.setUpdateTime(now);
  854. if (faceTaskId == null) {
  855. faceTask.setDeviceSn(faceDevice.getSn());
  856. faceTask.setUserId(Long.valueOf(vo.getCardNo()));
  857. faceTask.setCreateTime(now);
  858. faceTaskDao.insertSelective(faceTask);
  859. }
  860. faceTaskDao.updateByPrimaryKeySelective(faceTask);
  861. }
  862. private String buildImage(String image, String phone) {
  863. String path = null;
  864. if (StringUtils.hasText(image)) {
  865. long l = System.currentTimeMillis();
  866. String name = l + UUID.randomUUID().toString().concat(".png");
  867. path = FileUploadUtil.uploadUtil(image, name);
  868. return path;
  869. }
  870. return path;
  871. }
  872. }