DataUtil.java 29 KB

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