DataUtil.java 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577
  1. package com.xjrsoft.module.hikvision.util;
  2. import com.google.gson.JsonArray;
  3. import com.google.gson.JsonElement;
  4. import com.google.gson.JsonObject;
  5. import com.google.gson.JsonParser;
  6. import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
  7. import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
  8. import com.xjrsoft.module.base.entity.BaseClass;
  9. import com.xjrsoft.module.base.entity.BaseGrade;
  10. import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
  11. import com.xjrsoft.module.organization.entity.Department;
  12. import com.xjrsoft.module.personnel.entity.CarMessageApply;
  13. import com.xjrsoft.module.system.entity.DictionaryDetail;
  14. import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
  15. import lombok.extern.slf4j.Slf4j;
  16. import lombok.var;
  17. import java.util.HashMap;
  18. import java.util.HashSet;
  19. import java.util.List;
  20. import java.util.Map;
  21. import java.util.Set;
  22. /**
  23. * @author dzx
  24. * @date 2024/5/10
  25. */
  26. @Slf4j
  27. public class DataUtil {
  28. /**
  29. * 同步组织数据
  30. * 只有批量添加接口,需要一个层级一个层级的添加
  31. */
  32. public Map<String, String> insertDepartment(String tableName, Map<String, String> tableData){
  33. String sql = "SELECT DISTINCT LENGTH(hierarchy) FROM " + tableName + " WHERE delete_mark = 0";
  34. List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, Integer[].class);
  35. Set<Integer> levelSet = new HashSet<>();
  36. for (Map<String, Object> strings : list) {
  37. Integer[] strings1 = SqlRunnerAdapterUtil.convertMapToIntegerArray(strings);
  38. levelSet.add(strings1[0]);
  39. }
  40. sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 ORDER BY LENGTH(hierarchy)";
  41. List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, Department.class);
  42. String apiPath = "/api/resource/v1/org/batch/add";
  43. Map<String, String> idMap = new HashMap<>();
  44. JsonParser jsonParser = new JsonParser();
  45. ApiUtil apiUtil = new ApiUtil();
  46. Map<String, String> idCodeMap = new HashMap<>();
  47. for (Integer level : levelSet) {
  48. JsonArray dataArray = new JsonArray();
  49. for (Map<String, Object> map : dataList) {
  50. Department department = SqlRunnerAdapterUtil.convertMapToEntity(map, Department.class);
  51. if(tableData != null && tableData.containsKey(department.getId().toString())){
  52. continue;
  53. }
  54. if(department.getHierarchy().length() == level){
  55. JsonObject paramJson = new JsonObject();
  56. paramJson.addProperty("clientId", department.getCode());
  57. paramJson.addProperty("orgIndexCode", department.getId().toString());
  58. paramJson.addProperty("orgName", department.getName());
  59. paramJson.addProperty("parentIndexCode", department.getParentId().toString());
  60. if(department.getParentId() == 0){
  61. paramJson.addProperty("parentIndexCode", "root000000");
  62. }
  63. paramJson.addProperty("orgCode", department.getCode());
  64. dataArray.add(paramJson);
  65. idCodeMap.put(department.getCode(), department.getId().toString());
  66. }
  67. }
  68. String result = apiUtil.doPost(apiPath, dataArray.toString(), null, null);
  69. JsonElement parse = jsonParser.parse(result);
  70. JsonObject resultJson = parse.getAsJsonObject();
  71. if("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())){
  72. JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray();
  73. for (JsonElement jsonElement : array) {
  74. JsonObject jsonObject = jsonElement.getAsJsonObject();
  75. idMap.put(idCodeMap.get(jsonObject.get("clientId").getAsString()), jsonObject.get("orgIndexCode").getAsString());
  76. }
  77. }
  78. }
  79. //插入记录表
  80. insertRecord(tableName, idMap);
  81. return idMap;
  82. }
  83. /**
  84. * 推送学生班级信息
  85. */
  86. public Map<String, String> insertClass(String tableName, Map<String, String> tableData) {
  87. Map<String, String> idMap = new HashMap<>();
  88. //1、查询字典,将走读住读、班级类型先推送过去
  89. String sql = "SELECT * FROM xjr_dictionary_detail WHERE delete_mark = 0 AND item_id = 2023000000000000030";
  90. List<Map<String, Object>> detailList = SqlRunnerAdapter.db().selectList(sql, DictionaryDetail.class);
  91. String apiPath = "/api/resource/v1/org/batch/add";
  92. JsonParser jsonParser = new JsonParser();
  93. ApiUtil apiUtil = new ApiUtil();
  94. int clientId = 1;
  95. Map<Integer, String> idCodeMap = new HashMap<>();
  96. JsonArray dataArray = new JsonArray();
  97. Set<String> stduyStatus = new HashSet<>();
  98. for (Map<String, Object> map : detailList) {
  99. DictionaryDetail dict = SqlRunnerAdapterUtil.convertMapToEntity(map, DictionaryDetail.class);
  100. if(tableData != null && tableData.containsKey(dict.getId().toString())){
  101. stduyStatus.add(dict.getId().toString());
  102. continue;
  103. }
  104. JsonObject paramJson = new JsonObject();
  105. paramJson.addProperty("clientId", clientId);
  106. paramJson.addProperty("orgIndexCode", dict.getCode());
  107. paramJson.addProperty("orgName", dict.getName() + "学生");
  108. paramJson.addProperty("parentIndexCode", "root000000");
  109. paramJson.addProperty("orgCode", dict.getCode());
  110. dataArray.add(paramJson);
  111. idCodeMap.put(clientId, dict.getCode());
  112. clientId ++;
  113. }
  114. String result = apiUtil.doPost(apiPath, dataArray.toString(), null, null);
  115. JsonElement parse = jsonParser.parse(result);
  116. JsonObject resultJson = parse.getAsJsonObject();
  117. if("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())){
  118. JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray();
  119. for (JsonElement jsonElement : array) {
  120. JsonObject jsonObject = jsonElement.getAsJsonObject();
  121. idMap.put(idCodeMap.get(jsonObject.get("clientId").getAsInt()), jsonObject.get("orgIndexCode").getAsString());
  122. stduyStatus.add(jsonObject.get("orgIndexCode").getAsString());
  123. }
  124. }
  125. //推送班级类型
  126. sql = "SELECT * FROM xjr_dictionary_detail WHERE delete_mark = 0 AND item_id = 2023000000000000039";
  127. detailList = SqlRunnerAdapter.db().selectList(sql, DictionaryDetail.class);
  128. dataArray = new JsonArray();
  129. Set<String> classTypeSet = new HashSet<>();
  130. for (String status : stduyStatus) {
  131. for (Map<String, Object> map : detailList) {
  132. DictionaryDetail dict = SqlRunnerAdapterUtil.convertMapToEntity(map, DictionaryDetail.class);
  133. if(tableData != null && tableData.containsKey(dict.getCode())){
  134. classTypeSet.add(dict.getCode());
  135. continue;
  136. }
  137. JsonObject paramJson = new JsonObject();
  138. paramJson.addProperty("clientId", clientId);
  139. paramJson.addProperty("orgIndexCode", dict.getCode() + "-" + status);
  140. paramJson.addProperty("orgName", dict.getName());
  141. paramJson.addProperty("parentIndexCode", status);
  142. paramJson.addProperty("orgCode", dict.getCode());
  143. dataArray.add(paramJson);
  144. idCodeMap.put(clientId, dict.getCode() + "-" + status);
  145. clientId ++;
  146. }
  147. }
  148. result = apiUtil.doPost(apiPath, dataArray.toString(), null, null);
  149. parse = jsonParser.parse(result);
  150. resultJson = parse.getAsJsonObject();
  151. if("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())){
  152. JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray();
  153. for (JsonElement jsonElement : array) {
  154. JsonObject jsonObject = jsonElement.getAsJsonObject();
  155. idMap.put(idCodeMap.get(jsonObject.get("clientId").getAsInt()), jsonObject.get("orgIndexCode").getAsString());
  156. classTypeSet.add(jsonObject.get("orgIndexCode").getAsString());
  157. }
  158. }
  159. //推送年级
  160. sql = "SELECT * FROM base_grade WHERE delete_mark = 0 AND STATUS = 1";
  161. List<Map<String, Object>> gradeList = SqlRunnerAdapter.db().selectList(sql, BaseGrade.class);
  162. Map<Long, String> gradeNameMap = new HashMap<>();
  163. dataArray = new JsonArray();
  164. for (String classType : classTypeSet) {
  165. for (Map<String, Object> gradeMap : gradeList) {
  166. BaseGrade baseGrade = SqlRunnerAdapterUtil.convertMapToEntity(gradeMap, BaseGrade.class);
  167. gradeNameMap.put(baseGrade.getId(), baseGrade.getName().replaceAll("级", ""));
  168. if(tableData != null && tableData.containsKey(baseGrade.getId().toString())){
  169. continue;
  170. }
  171. JsonObject paramJson = new JsonObject();
  172. paramJson.addProperty("clientId", clientId);
  173. paramJson.addProperty("orgIndexCode", baseGrade.getName().replaceAll("级", "") + "-" + classType);
  174. paramJson.addProperty("orgName", baseGrade.getName());
  175. paramJson.addProperty("parentIndexCode", classType);
  176. paramJson.addProperty("orgCode", clientId);
  177. dataArray.add(paramJson);
  178. idCodeMap.put(clientId, baseGrade.getName().replaceAll("级", "") + "-" + classType);
  179. clientId ++;
  180. }
  181. }
  182. result = apiUtil.doPost(apiPath, dataArray.toString(), null, null);
  183. parse = jsonParser.parse(result);
  184. Set<String> gradeSet = new HashSet<>();
  185. resultJson = parse.getAsJsonObject();
  186. if("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())){
  187. JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray();
  188. for (JsonElement jsonElement : array) {
  189. JsonObject jsonObject = jsonElement.getAsJsonObject();
  190. idMap.put(idCodeMap.get(jsonObject.get("clientId").getAsInt()), jsonObject.get("orgIndexCode").getAsString());
  191. gradeSet.add(jsonObject.get("orgIndexCode").getAsString());
  192. }
  193. }
  194. //推送班级
  195. sql = "SELECT * FROM base_class WHERE delete_mark = 0 AND is_graduate = 1 AND class_type IS NOT NULL";
  196. List<Map<String, Object>> classList = SqlRunnerAdapter.db().selectList(sql, BaseClass.class);
  197. dataArray = new JsonArray();
  198. for (String grade : gradeSet) {
  199. String[] gradeGroup = grade.split("-");
  200. for (Map<String, Object> baseClassMap : classList) {
  201. BaseClass baseClass = SqlRunnerAdapterUtil.convertMapToEntity(baseClassMap, BaseClass.class);
  202. if(tableData != null && tableData.containsKey(baseClass.getId().toString())){
  203. continue;
  204. }
  205. String gradeName = gradeNameMap.get(baseClass.getGradeId());
  206. if(!gradeGroup[0].equals(gradeName)){
  207. continue;
  208. }
  209. if(!gradeGroup[1].equals(baseClass.getClassType())){
  210. continue;
  211. }
  212. JsonObject paramJson = new JsonObject();
  213. paramJson.addProperty("clientId", clientId);
  214. paramJson.addProperty("orgIndexCode", baseClass.getId() + "-" + grade);
  215. paramJson.addProperty("orgName", baseClass.getName());
  216. paramJson.addProperty("parentIndexCode", grade);
  217. paramJson.addProperty("orgCode", clientId);
  218. dataArray.add(paramJson);
  219. idCodeMap.put(clientId, baseClass.getId() + "-" + grade);
  220. clientId ++;
  221. }
  222. }
  223. result = apiUtil.doPost(apiPath, dataArray.toString(), null, null);
  224. parse = jsonParser.parse(result);
  225. resultJson = parse.getAsJsonObject();
  226. if("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())){
  227. JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray();
  228. for (JsonElement jsonElement : array) {
  229. JsonObject jsonObject = jsonElement.getAsJsonObject();
  230. idMap.put(idCodeMap.get(jsonObject.get("clientId").getAsInt()), jsonObject.get("orgIndexCode").getAsString());
  231. }
  232. }
  233. //插入记录表
  234. insertRecord(tableName, idMap);
  235. return idMap;
  236. }
  237. public Map<String, String> insertStudentOne(String tableName, Map<String, String> tableData){
  238. String sql = "SELECT t1.id,t1.name,CONCAT(t3.id,'-',replace(t4.name,'级',''),'-',t3.class_type,'-',t2.stduy_status) as orgIndexCode," +
  239. " t1.user_name,t1.gender,DATE_FORMAT(t1.birth_date, '%Y-%m-%d') as birthday,t1.mobile,t1.email,t1.credential_type,t1.credential_number FROM xjr_user t1" +
  240. " INNER JOIN base_student_school_roll t2 ON t1.id = t2.user_id" +
  241. " INNER JOIN base_class t3 ON t2.class_id = t3.id" +
  242. " INNER JOIN base_grade t4 ON t3.grade_id = t4.id" +
  243. " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0" +
  244. " AND t3.class_type IS NOT NULL";
  245. List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
  246. Map<Integer, String> clientMap = new HashMap<>();
  247. Map<String, String> idMap = new HashMap<>();
  248. JsonParser jsonParser = new JsonParser();
  249. ApiUtil apiUtil = new ApiUtil();
  250. Map<String, String> header = new HashMap<>();
  251. header.put("tagId", "insert_student");
  252. for(int i = 0; i < list.size(); i ++){
  253. Map<String, Object> objectMap = list.get(i);
  254. String apiPath = "/api/resource/v2/person/single/add";
  255. JsonObject paramJson = new JsonObject();
  256. paramJson.addProperty("clientId", i);
  257. paramJson.addProperty("personId", objectMap.get("id").toString());
  258. paramJson.addProperty("personName", objectMap.get("name").toString());
  259. paramJson.addProperty("orgIndexCode", objectMap.get("orgIndexCode").toString());
  260. paramJson.addProperty("phoneNo", objectMap.get("mobile")==null?"":objectMap.get("mobile").toString());
  261. paramJson.addProperty("jobNo", objectMap.get("user_name").toString());
  262. paramJson.addProperty("birthday", objectMap.get("birthday")==null?"":objectMap.get("birthday").toString());
  263. paramJson.addProperty("personType", 2);
  264. int gender = 0;
  265. String genderData = objectMap.get("gender") == null ? "" : objectMap.get("gender").toString();
  266. switch (genderData) {
  267. case "SB10001":
  268. gender = 1;
  269. break;
  270. case "SB10002":
  271. gender = 2;
  272. break;
  273. default:
  274. gender = 0;
  275. break;
  276. }
  277. paramJson.addProperty("gender", gender);
  278. if(tableData != null && tableData.containsKey(objectMap.get("id").toString())){
  279. apiPath = "/api/resource/v1/person/single/update";
  280. apiUtil.doPost(apiPath, paramJson.toString(), null, header);
  281. continue;
  282. }
  283. clientMap.put(i, objectMap.get("id").toString());
  284. String result = apiUtil.doPost(apiPath, paramJson.toString(), null, header);
  285. JsonElement parse = jsonParser.parse(result);
  286. JsonObject resultJson = parse.getAsJsonObject();
  287. if("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())){
  288. JsonObject array = resultJson.get("data").getAsJsonObject();
  289. idMap.put(objectMap.get("id").toString(), array.get("personId").getAsString());
  290. }
  291. }
  292. //插入记录表
  293. insertRecord(tableName, idMap);
  294. return idMap;
  295. }
  296. public Map<String, String> insertStudent(String tableName, Map<String, String> tableData) {
  297. String sql = "SELECT t1.id,t1.name,CONCAT(t3.id,'-',t4.name,'-',t3.class_type,'-',t2.stduy_status)," +
  298. " t1.user_name,t1.gender,t1.birth_date,t1.mobile,t1.email,t1.credential_type,t1.credential_number FROM xjr_user t1" +
  299. " INNER JOIN base_student_school_roll t2 ON t1.id = t2.user_id" +
  300. " INNER JOIN base_class t3 ON t2.class_id = t3.id" +
  301. " INNER JOIN base_grade t4 ON t3.grade_id = t4.id" +
  302. " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t3.class_type IS NOT NULL ";
  303. List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
  304. Map<Integer, String> clientMap = new HashMap<>();
  305. String apiPath = "/api/resource/v1/person/batch/add";
  306. Map<String, String> idMap = new HashMap<>();
  307. JsonParser jsonParser = new JsonParser();
  308. ApiUtil apiUtil = new ApiUtil();
  309. Map<String, String> header = new HashMap<>();
  310. header.put("tagId", "insert_student");
  311. int maxCount = 100;
  312. int frequency = list.size() / maxCount;
  313. for(int index = 0; index < frequency; index ++){
  314. JsonArray paramArray = new JsonArray();
  315. for(int i = (index * maxCount); i < ((index + 1) * maxCount); i ++){
  316. if(i >= list.size()){
  317. continue;
  318. }
  319. String[] el = SqlRunnerAdapterUtil.convertMapToStringArray(list.get(i));
  320. if(tableData != null && tableData.containsKey(el[0])){
  321. continue;
  322. }
  323. JsonObject paramJson = new JsonObject();
  324. paramJson.addProperty("clientId", i);
  325. paramJson.addProperty("personId", el[0]);
  326. paramJson.addProperty("personName", el[1]);
  327. paramJson.addProperty("orgIndexCode", el[2]);
  328. paramJson.addProperty("phoneNo", el[6]);
  329. paramJson.addProperty("jobNo", el[3]);
  330. paramJson.addProperty("birthday", el[5]);
  331. paramJson.addProperty("personType", 2);
  332. int gender;
  333. switch (el[4]) {
  334. case "SB10001":
  335. gender = 1;
  336. break;
  337. case "SB10002":
  338. gender = 2;
  339. break;
  340. default:
  341. gender = 0;
  342. break;
  343. }
  344. paramJson.addProperty("gender", gender);
  345. paramArray.add(paramJson);
  346. clientMap.put(i, el[0]);
  347. }
  348. String result = apiUtil.doPost(apiPath, paramArray.toString(), null, header);
  349. JsonElement parse = jsonParser.parse(result);
  350. JsonObject resultJson = parse.getAsJsonObject();
  351. if("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())){
  352. JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray();
  353. for (JsonElement jsonElement : array) {
  354. JsonObject jsonObject = jsonElement.getAsJsonObject();
  355. idMap.put(clientMap.get(jsonObject.get("clientId").getAsInt()), jsonObject.get("personId").getAsString());
  356. }
  357. }
  358. }
  359. //插入记录表
  360. insertRecord(tableName, idMap);
  361. return idMap;
  362. }
  363. public Map<String, String> insertTeacher(String tableName, Map<String, String> tableData, Map<String, String> deptMap){
  364. String sql = "SELECT t1.id,t1.name,t1.gender,t3.dept_id,t1.birth_date,t1.mobile,t1.email,t1.credential_type,t1.credential_number,t1.user_name FROM xjr_user t1" +
  365. " INNER JOIN " + tableName + " t2 ON t1.id = t2.user_id" +
  366. " INNER JOIN xjr_user_dept_relation t3 ON t1.id = t3.user_id" +
  367. " INNER JOIN xjr_department t4 ON t3.dept_id = t4.id " +
  368. " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t4.delete_mark = 0";
  369. List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
  370. JsonArray paramArray = new JsonArray();
  371. ApiUtil apiUtil = new ApiUtil();
  372. Map<Integer, String> clientMap = new HashMap<>();
  373. for(int i = 0; i < list.size(); i ++){
  374. Map<String, Object> objectMap = list.get(i);
  375. JsonObject paramJson = new JsonObject();
  376. paramJson.addProperty("clientId", i);
  377. paramJson.addProperty("personId", objectMap.get("id").toString());
  378. paramJson.addProperty("personName", objectMap.get("name").toString());
  379. paramJson.addProperty("orgIndexCode", objectMap.get("dept_id").toString());
  380. paramJson.addProperty("phoneNo", objectMap.get("mobile")==null?"":objectMap.get("mobile").toString());
  381. paramJson.addProperty("jobNo", objectMap.get("user_name").toString());
  382. paramJson.addProperty("birthday", objectMap.get("birth_date")==null?"":objectMap.get("birth_date").toString());
  383. paramJson.addProperty("personType", 1);
  384. int gender;
  385. switch (objectMap.get("gender").toString()) {
  386. case "SB10001":
  387. gender = 1;
  388. break;
  389. case "SB10002":
  390. gender = 2;
  391. break;
  392. default:
  393. gender = 0;
  394. break;
  395. }
  396. paramJson.addProperty("gender", gender);
  397. if(tableData != null && tableData.containsKey(objectMap.get("id").toString())){
  398. String apiPath = "/api/resource/v1/person/single/update";
  399. apiUtil.doPost(apiPath, paramJson.toString(), null);
  400. continue;
  401. }
  402. paramArray.add(paramJson);
  403. clientMap.put(i, objectMap.get("id").toString());
  404. }
  405. String apiPath = "/api/resource/v1/person/batch/add";
  406. Map<String, String> idMap = new HashMap<>();
  407. JsonParser jsonParser = new JsonParser();
  408. Map<String, String> header = new HashMap<>();
  409. header.put("tagId", "insert_teacher");
  410. String result = apiUtil.doPost(apiPath, paramArray.toString(), null, header);
  411. JsonElement parse = jsonParser.parse(result);
  412. JsonObject resultJson = parse.getAsJsonObject();
  413. if("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())){
  414. JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray();
  415. for (JsonElement jsonElement : array) {
  416. JsonObject jsonObject = jsonElement.getAsJsonObject();
  417. idMap.put(clientMap.get(jsonObject.get("clientId").getAsInt()), jsonObject.get("personId").getAsString());
  418. }
  419. }else{
  420. }
  421. //插入记录表
  422. insertRecord(tableName, idMap);
  423. return idMap;
  424. }
  425. /*同步车辆数据*/
  426. public Map<Long, String> insertCar(String tableName, Map<String, String> tableData, HikvisionDataMapper hikvisionDataMapper) {
  427. String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 and status = 1";
  428. List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, CarMessageApply.class);
  429. String apiPath = "/api/resource/v1/vehicle/batch/add";
  430. String apiPathTime = "/api/pms/v1/car/charge";
  431. Map<Long, String> idMap = new HashMap<>();
  432. JsonParser jsonParser = new JsonParser();
  433. ApiUtil apiUtil = new ApiUtil();
  434. Map<Integer, Long> clientMap = new HashMap<>();
  435. Map<String, String> tagMap = new HashMap<>();
  436. tagMap.put("tagId", "frs");
  437. String existingPlatesSql = "SELECT source_id FROM hikvision_data";
  438. List<Map<String, Object>> existingPlates = SqlRunnerAdapter.db().selectList(existingPlatesSql, String.class);
  439. JsonArray dataArray = new JsonArray();
  440. String result = null;
  441. int clientId = 1;
  442. for (Map<String, Object> carMap : dataList) {
  443. if(existingPlates.contains(carMap.get("id") + "")){
  444. continue;
  445. }
  446. JsonObject paramJson = new JsonObject();
  447. paramJson.addProperty("clientId", clientId);
  448. paramJson.addProperty("plateNo", carMap.get("car_number").toString());
  449. paramJson.addProperty("personId", hikvisionDataMapper.getTeacherHikvisionId(Long.parseLong(carMap.get("user_id").toString())));
  450. int vehicleTypeNum;
  451. switch (carMap.get("vehicle_type").toString()) {
  452. case "小型车":
  453. vehicleTypeNum = 1;
  454. break;
  455. case "大型车":
  456. vehicleTypeNum = 2;
  457. break;
  458. case "摩托车":
  459. vehicleTypeNum = 3;
  460. break;
  461. default:
  462. vehicleTypeNum = 0;
  463. break;
  464. }
  465. paramJson.addProperty("vehicleType", vehicleTypeNum);
  466. clientMap.put(clientId, Long.parseLong(carMap.get("id").toString()));
  467. dataArray.add(paramJson);
  468. clientId++;
  469. }
  470. result = apiUtil.doPost(apiPath, dataArray.toString(), tagMap, null);
  471. for (Map<String, Object> carMap : dataList) {
  472. JsonObject paramJsonTime = new JsonObject();
  473. paramJsonTime.addProperty("parkSyscode", "c69f2a7c48a74216bcab7d65f24d4a09");
  474. paramJsonTime.addProperty("plateNo", carMap.get("car_number").toString());
  475. paramJsonTime.addProperty("startTime", carMap.get("start_time").toString());
  476. paramJsonTime.addProperty("endTime", carMap.get("end_time").toString());
  477. apiUtil.doPost(apiPathTime, String.valueOf(paramJsonTime), tagMap, null);
  478. }
  479. JsonElement parse = jsonParser.parse(result);
  480. JsonObject resultJson = parse.getAsJsonObject();
  481. if ("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())) {
  482. JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray();
  483. for (JsonElement jsonElement : array) {
  484. JsonObject jsonObject = jsonElement.getAsJsonObject();
  485. int responseClientId = jsonObject.get("clientId").getAsInt();
  486. Long sourceId = clientMap.get(responseClientId);
  487. if (sourceId != null) {
  488. idMap.put(sourceId, jsonObject.get("vehicleId").getAsString());
  489. } else {
  490. System.err.println("No matching clientId found in clientMap for: " + responseClientId);
  491. }
  492. }
  493. insertRecord(tableName, idMap);
  494. } else {
  495. System.err.println("API call failed: " + resultJson.get("msg").getAsString());
  496. }
  497. return idMap;
  498. }
  499. void insertRecord(String tableName, Map<?, String> idsMap){
  500. if (idsMap.isEmpty()) {
  501. return;
  502. }
  503. for (var entry : idsMap.entrySet()) {
  504. var sourceId = entry.getKey();
  505. String sql = "INSERT INTO hikvision_data(create_date, table_name, source_id, hikvision_id) " +
  506. "VALUES(now(), '" + tableName + "', '" + sourceId + "', '" + entry.getValue() + "')";
  507. SqlRunnerAdapter.db().insert(sql);
  508. }
  509. }
  510. // void insertRecord(Db db, String tableName, Map<Long, String> idsMap) throws SQLException {
  511. // if(idsMap.isEmpty()){
  512. // return;
  513. // }
  514. // List<String> sqls = new ArrayList<>();
  515. // for (Long sourceId : idsMap.keySet()) {
  516. // String sql = "INSERT INTO hikvision_data(create_date,table_name,source_id,hikvision_id) value(now(),'"
  517. // + tableName + "'," + sourceId + ",'" + idsMap.get(sourceId) + "')";
  518. // sqls.add(sql);
  519. // }
  520. // db.executeBatch(sqls);
  521. // };
  522. }