package com.xjrsoft.module.hikvision.util; import cn.hutool.db.Entity; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.xjrsoft.common.mybatis.SqlRunnerAdapter; import com.xjrsoft.common.utils.SqlRunnerAdapterUtil; import com.xjrsoft.module.base.entity.BaseGrade; import com.xjrsoft.module.hikvision.entity.HikvisionData; import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper; import com.xjrsoft.module.organization.entity.Department; import com.xjrsoft.module.personnel.entity.CarMessageApply; import lombok.extern.slf4j.Slf4j; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; /** * @author dzx * @date 2024/5/10 */ @Slf4j public class DataUtil { /** * 同步组织数据 * 只有批量添加接口,需要一个层级一个层级的添加 */ public Map insertDepartment(String tableName, Map tableData) { String sql = "SELECT DISTINCT LENGTH(hierarchy) FROM " + tableName + " WHERE delete_mark = 0"; List> list = SqlRunnerAdapter.db().selectList(sql, Integer[].class); Set levelSet = new HashSet<>(); for (Map strings : list) { Integer[] strings1 = SqlRunnerAdapterUtil.convertMapToIntegerArray(strings); levelSet.add(strings1[0]); } sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 ORDER BY LENGTH(hierarchy)"; List> dataList = SqlRunnerAdapter.db().selectList(sql, Department.class); String apiPath = "/api/resource/v1/org/batch/add"; Map idMap = new HashMap<>(); JsonParser jsonParser = new JsonParser(); ApiUtil apiUtil = new ApiUtil(); Map idCodeMap = new HashMap<>(); for (Integer level : levelSet) { JsonArray dataArray = new JsonArray(); for (Map department : dataList) { if (tableData != null && tableData.containsKey(department.get("id").toString())) { continue; } if (department.get("hierarchy").toString().length() == level) { JsonObject paramJson = new JsonObject(); paramJson.addProperty("clientId", department.get("code").toString()); paramJson.addProperty("orgIndexCode", department.get("id").toString()); paramJson.addProperty("orgName", department.get("name").toString()); paramJson.addProperty("parentIndexCode", department.get("parent_id").toString()); if (Long.parseLong(department.get("parent_id").toString()) == 0) { paramJson.addProperty("parentIndexCode", "root000000"); } paramJson.addProperty("orgCode", department.get("code").toString()); dataArray.add(paramJson); idCodeMap.put(department.get("code").toString(), department.get("id").toString()); } } String result = apiUtil.doPost(apiPath, dataArray.toString(), null, null); JsonElement parse = jsonParser.parse(result); JsonObject resultJson = parse.getAsJsonObject(); if ("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())) { JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray(); for (JsonElement jsonElement : array) { JsonObject jsonObject = jsonElement.getAsJsonObject(); idMap.put(idCodeMap.get(jsonObject.get("clientId").getAsString()), jsonObject.get("orgIndexCode").getAsString()); } } } //插入记录表 insertRecord(tableName, idMap); return idMap; } /** * 推送学生班级信息 */ public Map insertClass(String tableName, Map tableData) { ApiUtil apiUtil = new ApiUtil(); JsonParser jsonParser = new JsonParser(); //先查询海康中存在的组织id // Set orgCodeList = new HashSet<>(); // String listApiPath = "/api/resource/v1/org/orgList"; // JsonObject paramsJson = new JsonObject(); // paramsJson.addProperty("pageNo", 1); // paramsJson.addProperty("pageSize", 1000); // String orgData = apiUtil.doPost(listApiPath, paramsJson.toString(), null, null); // JsonArray orgDataArray = jsonParser.parse(orgData).getAsJsonObject().get("data").getAsJsonObject().get("list").getAsJsonArray(); // for (JsonElement jsonElement : orgDataArray) { // JsonObject orgJson = jsonElement.getAsJsonObject(); // orgCodeList.add(orgJson.get("orgNo").getAsInt()); // } Map idMap = new HashMap<>(); //1、查询字典,将走读住读、班级类型先推送过去 String sql = "SELECT * FROM xjr_dictionary_detail WHERE delete_mark = 0 AND item_id = 2023000000000000030"; List> detailList = SqlRunnerAdapter.db().selectList(sql); String apiPath = "/api/resource/v1/org/batch/add"; int clientId = 1; Map idCodeMap = new HashMap<>(); JsonArray dataArray = new JsonArray(); Set stduyStatus = new HashSet<>(); for (Map dict : detailList) { if (tableData != null && tableData.containsKey(dict.get("id").toString())) { stduyStatus.add(dict.get("id").toString()); continue; } JsonObject paramJson = new JsonObject(); paramJson.addProperty("clientId", clientId); paramJson.addProperty("orgIndexCode", dict.get("code").toString()); paramJson.addProperty("orgName", dict.get("name").toString() + "学生"); paramJson.addProperty("parentIndexCode", "root000000"); paramJson.addProperty("orgCode", dict.get("code").toString()); dataArray.add(paramJson); idCodeMap.put(clientId, dict.get("code").toString()); clientId++; } String result = apiUtil.doPost(apiPath, dataArray.toString(), null, null); JsonElement parse = jsonParser.parse(result); JsonObject resultJson = parse.getAsJsonObject(); if ("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())) { JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray(); for (JsonElement jsonElement : array) { JsonObject jsonObject = jsonElement.getAsJsonObject(); idMap.put(idCodeMap.get(jsonObject.get("clientId").getAsInt()), jsonObject.get("orgIndexCode").getAsString()); stduyStatus.add(jsonObject.get("orgIndexCode").getAsString()); } } if (stduyStatus.isEmpty()) { for (Map dict : detailList) { stduyStatus.add(dict.get("code").toString()); } } //推送班级类型 sql = "SELECT * FROM xjr_dictionary_detail WHERE delete_mark = 0 AND item_id = 2023000000000000039"; List> classTypeList = SqlRunnerAdapter.db().selectList(sql); dataArray = new JsonArray(); Set classTypeSet = new HashSet<>(); for (String status : stduyStatus) { for (Map dict : classTypeList) { if (tableData != null && tableData.containsKey(dict.get("code").toString() + "-" + status)) { classTypeSet.add(dict.get("code").toString() + "-" + status); continue; } JsonObject paramJson = new JsonObject(); paramJson.addProperty("clientId", clientId); paramJson.addProperty("orgIndexCode", dict.get("code").toString() + "-" + status); paramJson.addProperty("orgName", dict.get("name").toString()); paramJson.addProperty("parentIndexCode", status); paramJson.addProperty("orgCode", dict.get("code").toString()); dataArray.add(paramJson); idCodeMap.put(clientId, dict.get("code").toString() + "-" + status); clientId++; } } result = apiUtil.doPost(apiPath, dataArray.toString(), null, null); parse = jsonParser.parse(result); resultJson = parse.getAsJsonObject(); if ("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())) { JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray(); for (JsonElement jsonElement : array) { JsonObject jsonObject = jsonElement.getAsJsonObject(); idMap.put(idCodeMap.get(jsonObject.get("clientId").getAsInt()), jsonObject.get("orgIndexCode").getAsString()); classTypeSet.add(jsonObject.get("orgIndexCode").getAsString()); } } //推送年级 sql = "SELECT * FROM base_grade WHERE delete_mark = 0 AND status = 1"; List> gradeList = SqlRunnerAdapter.db().selectList(sql, BaseGrade.class); Map gradeNameMap = new HashMap<>(); dataArray = new JsonArray(); for (String classType : classTypeSet) { for (Map baseGrade : gradeList) { gradeNameMap.put(Long.parseLong(baseGrade.get("id").toString()), baseGrade.get("name").toString().replaceAll("级", "")); if (tableData != null && tableData.containsKey(baseGrade.get("name").toString().replaceAll("级", "") + "-" + classType)) { continue; } JsonObject paramJson = new JsonObject(); paramJson.addProperty("clientId", clientId); paramJson.addProperty("orgIndexCode", baseGrade.get("name").toString().replaceAll("级", "") + "-" + classType); paramJson.addProperty("orgName", baseGrade.get("name").toString()); paramJson.addProperty("parentIndexCode", classType); // paramJson.addProperty("orgCode", clientId); dataArray.add(paramJson); idCodeMap.put(clientId, baseGrade.get("name").toString().replaceAll("级", "") + "-" + classType); clientId++; } } result = apiUtil.doPost(apiPath, dataArray.toString(), null, null); parse = jsonParser.parse(result); Set gradeSet = new HashSet<>(); resultJson = parse.getAsJsonObject(); if ("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())) { JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray(); for (JsonElement jsonElement : array) { JsonObject jsonObject = jsonElement.getAsJsonObject(); idMap.put(idCodeMap.get(jsonObject.get("clientId").getAsInt()), jsonObject.get("orgIndexCode").getAsString()); gradeSet.add(jsonObject.get("orgIndexCode").getAsString()); } } else { sql = "select * from hikvision_data where table_name = 'base_grade'"; List> gradeDataList = SqlRunnerAdapter.db().selectList(sql); for (Map objectMap : gradeDataList) { gradeSet.add(objectMap.get("hikvision_id").toString()); } } //推送班级 sql = "SELECT CONCAT(t1.id,'-',REPLACE(t2.name,'级',''),'-',t1.class_type) AS id,t1.name,t1.class_type," + " CONCAT(REPLACE(t2.name,'级',''),'-',t1.class_type) as orgIndexCode FROM base_class t1" + " INNER JOIN base_grade t2 ON t1.grade_id = t2.id" + " WHERE t1.delete_mark = 0 AND t1.is_graduate = 1" + " AND t1.class_type IS NOT NULL"; List> classList = SqlRunnerAdapter.db().selectList(sql); dataArray = new JsonArray(); for (String stduyStatu : stduyStatus) { for (Map baseClass : classList) { if (tableData != null && tableData.containsKey(baseClass.get("id").toString() + "-" + stduyStatu)) { continue; } JsonObject paramJson = new JsonObject(); paramJson.addProperty("clientId", clientId); paramJson.addProperty("orgIndexCode", baseClass.get("id").toString() + "-" + stduyStatu); paramJson.addProperty("orgName", baseClass.get("name").toString()); paramJson.addProperty("parentIndexCode", baseClass.get("orgIndexCode").toString() + "-" + stduyStatu); // paramJson.addProperty("orgCode", baseClass.get("id").toString() + "-" + stduyStatu); dataArray.add(paramJson); idCodeMap.put(clientId, baseClass.get("orgIndexCode").toString() + "-" + stduyStatu); clientId++; } } result = apiUtil.doPost(apiPath, dataArray.toString(), null, null); parse = jsonParser.parse(result); resultJson = parse.getAsJsonObject(); if ("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())) { JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray(); for (JsonElement jsonElement : array) { JsonObject jsonObject = jsonElement.getAsJsonObject(); idMap.put(idCodeMap.get(jsonObject.get("clientId").getAsInt()), jsonObject.get("orgIndexCode").getAsString()); } } //插入记录表 insertRecord(tableName, idMap); return idMap; } public Map insertStudentOne(String tableName, Map tableData, List studentList) throws InterruptedException { return insertStudentOne(tableName, tableData, studentList, null); } public Map insertStudentOne(String tableName, Map tableData, List studentList, Long userId) throws InterruptedException { String sql = "SELECT t1.id,t1.name,CONCAT(t3.id,'-',replace(t4.name,'级',''),'-',t3.class_type,'-',t2.stduy_status) as orgIndexCode," + " 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" + " INNER JOIN base_student_school_roll t2 ON t1.id = t2.user_id" + " INNER JOIN base_class t3 ON t2.class_id = t3.id" + " INNER JOIN base_grade t4 ON t3.grade_id = t4.id" + " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0" + " AND t3.class_type IS NOT NULL AND t3.is_graduate = 1"; if (userId != null) { sql += " and t1.id = " + userId; } List> list = SqlRunnerAdapter.db().selectList(sql, String[].class); Map clientMap = new HashMap<>(); List insertList = new ArrayList<>(); Map historyMap = new HashMap<>(); for (HikvisionData hikvisionData : studentList) { historyMap.put(hikvisionData.getSourceId(), hikvisionData.getSendData()); } Map idMap = new HashMap<>(); JsonParser jsonParser = new JsonParser(); ApiUtil apiUtil = new ApiUtil(); Map header = new HashMap<>(); header.put("tagId", "insert_student"); List addList = new ArrayList<>(); List updateList = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { Map objectMap = list.get(i); String id = objectMap.get("id").toString(); JsonObject paramJson = new JsonObject(); // paramJson.addProperty("clientId", i); paramJson.addProperty("personId", id); paramJson.addProperty("personName", objectMap.get("name").toString()); paramJson.addProperty("orgIndexCode", objectMap.get("orgIndexCode").toString()); paramJson.addProperty("phoneNo", objectMap.get("mobile") == null ? "" : objectMap.get("mobile").toString()); paramJson.addProperty("jobNo", objectMap.get("user_name").toString()); paramJson.addProperty("birthday", objectMap.get("birthday") == null ? "" : objectMap.get("birthday").toString()); paramJson.addProperty("personType", 2); int gender = 0; String genderData = objectMap.get("gender") == null ? "" : objectMap.get("gender").toString(); switch (genderData) { case "SB10001": gender = 1; break; case "SB10002": gender = 2; break; default: gender = 0; break; } paramJson.addProperty("gender", gender); if (historyMap.containsKey(id)) { if (!paramJson.toString().equals(historyMap.get(id))) { paramJson.addProperty("personId", tableData.get(id)); updateList.add(paramJson); } continue; } addList.add(paramJson); } String apiPath = "/api/resource/v1/person/single/add"; SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); for (JsonObject paramJson : addList) { String result = apiUtil.doPost(apiPath, paramJson.toString(), null, header); JsonElement parse = jsonParser.parse(result); JsonObject resultJson = parse.getAsJsonObject(); if ("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())) { Entity entity = Entity.create(tableName); entity.set("table_name", tableName); entity.set("create_date", sdf.format(new Date())); // entity.set("source_id", clientMap.get(paramJson.get("clientId").getAsInt())); entity.set("source_id", paramJson.get("personId").getAsString()); entity.set("hikvision_id", paramJson.get("personId").getAsString()); entity.set("send_data", paramJson.toString()); insertList.add(entity); } else if ("0x00052102".equals(resultJson.get("code").getAsString()) && "PersonId Already In Db".equals(resultJson.get("msg").getAsString())) { Entity entity = Entity.create(tableName); entity.set("table_name", tableName); entity.set("create_date", sdf.format(new Date())); entity.set("source_id", paramJson.get("personId").getAsString()); entity.set("hikvision_id", paramJson.get("personId").getAsString()); entity.set("send_data", paramJson.toString()); insertList.add(entity); } } tableName = "hikvision_data"; if (!insertList.isEmpty()) { SqlRunnerAdapter.db().dynamicInsertBatch(tableName, insertList); } apiPath = "/api/resource/v1/person/single/update"; for (JsonObject paramJson : updateList) { Thread.sleep(500); String result = apiUtil.doPost(apiPath, paramJson.toString(), null, header); JsonElement parse = jsonParser.parse(result); JsonObject resultJson = parse.getAsJsonObject(); if ("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())) { Entity entity = Entity.create(tableName); entity.set("send_data", paramJson.toString()); Entity where = Entity.create(tableName); where.set("hikvision_id", paramJson.get("personId").getAsString()); SqlRunnerAdapter.db().dynamicUpdate(tableName, entity, where); } } //插入记录表 insertRecord(tableName, idMap); return idMap; } public Map insertStudent(String tableName, Map tableData) { String sql = "SELECT t1.id,t1.name,CONCAT(t3.id,'-',t4.name,'-',t3.class_type,'-',t2.stduy_status)," + " t1.user_name,t1.gender,t1.birth_date,t1.mobile,t1.email,t1.credential_type,t1.credential_number FROM xjr_user t1" + " INNER JOIN base_student_school_roll t2 ON t1.id = t2.user_id" + " INNER JOIN base_class t3 ON t2.class_id = t3.id" + " INNER JOIN base_grade t4 ON t3.grade_id = t4.id" + " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t3.class_type IS NOT NULL "; List> list = SqlRunnerAdapter.db().selectList(sql, String[].class); Map clientMap = new HashMap<>(); String apiPath = "/api/resource/v1/person/batch/add"; Map idMap = new HashMap<>(); JsonParser jsonParser = new JsonParser(); ApiUtil apiUtil = new ApiUtil(); Map header = new HashMap<>(); header.put("tagId", "insert_student"); int maxCount = 100; int frequency = list.size() / maxCount; for (int index = 0; index < frequency; index++) { JsonArray paramArray = new JsonArray(); for (int i = (index * maxCount); i < ((index + 1) * maxCount); i++) { if (i >= list.size()) { continue; } String[] el = SqlRunnerAdapterUtil.convertMapToStringArray(list.get(i)); if (tableData != null && tableData.containsKey(el[0])) { continue; } JsonObject paramJson = new JsonObject(); paramJson.addProperty("clientId", i); paramJson.addProperty("personId", el[0]); paramJson.addProperty("personName", el[1]); paramJson.addProperty("orgIndexCode", el[2]); paramJson.addProperty("phoneNo", el[6]); paramJson.addProperty("jobNo", el[3]); paramJson.addProperty("birthday", el[5]); paramJson.addProperty("personType", 2); int gender; switch (el[4]) { case "SB10001": gender = 1; break; case "SB10002": gender = 2; break; default: gender = 0; break; } paramJson.addProperty("gender", gender); paramArray.add(paramJson); clientMap.put(i, el[0]); } String result = apiUtil.doPost(apiPath, paramArray.toString(), null, header); JsonElement parse = jsonParser.parse(result); JsonObject resultJson = parse.getAsJsonObject(); if ("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())) { JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray(); for (JsonElement jsonElement : array) { JsonObject jsonObject = jsonElement.getAsJsonObject(); idMap.put(clientMap.get(jsonObject.get("clientId").getAsInt()), jsonObject.get("personId").getAsString()); } } } //插入记录表 insertRecord(tableName, idMap); return idMap; } public Map insertTeacher(String tableName, Map tableData, Map deptMap) { 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" + " INNER JOIN " + tableName + " t2 ON t1.id = t2.user_id" + " INNER JOIN xjr_user_dept_relation t3 ON t1.id = t3.user_id" + " INNER JOIN xjr_department t4 ON t3.dept_id = t4.id " + " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t4.delete_mark = 0"; List> list = SqlRunnerAdapter.db().selectList(sql, String[].class); JsonArray paramArray = new JsonArray(); ApiUtil apiUtil = new ApiUtil(); Map clientMap = new HashMap<>(); for (int i = 0; i < list.size(); i++) { Map objectMap = list.get(i); JsonObject paramJson = new JsonObject(); paramJson.addProperty("clientId", i); paramJson.addProperty("personId", objectMap.get("id").toString()); paramJson.addProperty("personName", objectMap.get("name").toString()); paramJson.addProperty("orgIndexCode", objectMap.get("dept_id").toString()); paramJson.addProperty("phoneNo", objectMap.get("mobile") == null ? "" : objectMap.get("mobile").toString()); paramJson.addProperty("jobNo", objectMap.get("user_name").toString()); paramJson.addProperty("birthday", objectMap.get("birth_date") == null ? "" : objectMap.get("birth_date").toString()); paramJson.addProperty("personType", 1); int gender; String genderData = objectMap.get("gender") == null ? "" : objectMap.get("gender").toString(); switch (genderData) { case "SB10001": gender = 1; break; case "SB10002": gender = 2; break; default: gender = 0; break; } paramJson.addProperty("gender", gender); if (tableData != null && tableData.containsKey(objectMap.get("id").toString())) { String apiPath = "/api/resource/v1/person/single/update"; apiUtil.doPost(apiPath, paramJson.toString(), null); continue; } paramArray.add(paramJson); clientMap.put(i, objectMap.get("id").toString()); } String apiPath = "/api/resource/v1/person/batch/add"; Map idMap = new HashMap<>(); JsonParser jsonParser = new JsonParser(); Map header = new HashMap<>(); header.put("tagId", "insert_teacher"); String result = apiUtil.doPost(apiPath, paramArray.toString(), null, header); JsonElement parse = jsonParser.parse(result); JsonObject resultJson = parse.getAsJsonObject(); if ("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())) { JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray(); for (JsonElement jsonElement : array) { JsonObject jsonObject = jsonElement.getAsJsonObject(); idMap.put(clientMap.get(jsonObject.get("clientId").getAsInt()), jsonObject.get("personId").getAsString()); } } else { } //插入记录表 insertRecord(tableName, idMap); return idMap; } /*同步车辆数据*/ public Map insertCar(String tableName, Map tableData, HikvisionDataMapper hikvisionDataMapper) { String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 and status = 1"; List> dataList = SqlRunnerAdapter.db().selectList(sql, CarMessageApply.class); String apiPath = "/api/resource/v1/vehicle/batch/add"; String apiPathTime = "/api/pms/v1/car/charge"; Map idMap = new HashMap<>(); JsonParser jsonParser = new JsonParser(); ApiUtil apiUtil = new ApiUtil(); Map clientMap = new HashMap<>(); Map tagMap = new HashMap<>(); tagMap.put("tagId", "frs"); String existingPlatesSql = "SELECT source_id FROM hikvision_data"; List> existingPlates = SqlRunnerAdapter.db().selectList(existingPlatesSql, String.class); JsonArray dataArray = new JsonArray(); String result = null; int clientId = 1; for (Map carMap : dataList) { if (existingPlates.contains(carMap.get("id") + "")) { continue; } JsonObject paramJson = new JsonObject(); paramJson.addProperty("clientId", clientId); paramJson.addProperty("plateNo", carMap.get("car_number").toString()); paramJson.addProperty("personId", hikvisionDataMapper.getTeacherHikvisionId(Long.parseLong(carMap.get("user_id").toString()))); int vehicleTypeNum; switch (carMap.get("vehicle_type").toString()) { case "小型车": vehicleTypeNum = 1; break; case "大型车": vehicleTypeNum = 2; break; case "摩托车": vehicleTypeNum = 3; break; default: vehicleTypeNum = 0; break; } paramJson.addProperty("vehicleType", vehicleTypeNum); clientMap.put(clientId, Long.parseLong(carMap.get("id").toString())); dataArray.add(paramJson); clientId++; } result = apiUtil.doPost(apiPath, dataArray.toString(), tagMap, null); for (Map carMap : dataList) { JsonObject paramJsonTime = new JsonObject(); paramJsonTime.addProperty("parkSyscode", "c69f2a7c48a74216bcab7d65f24d4a09"); paramJsonTime.addProperty("plateNo", carMap.get("car_number").toString()); paramJsonTime.addProperty("startTime", carMap.get("start_time").toString()); paramJsonTime.addProperty("endTime", carMap.get("end_time").toString()); apiUtil.doPost(apiPathTime, String.valueOf(paramJsonTime), tagMap, null); } JsonElement parse = jsonParser.parse(result); JsonObject resultJson = parse.getAsJsonObject(); if ("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())) { JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray(); for (JsonElement jsonElement : array) { JsonObject jsonObject = jsonElement.getAsJsonObject(); int responseClientId = jsonObject.get("clientId").getAsInt(); Long sourceId = clientMap.get(responseClientId); if (sourceId != null) { idMap.put(sourceId, jsonObject.get("vehicleId").getAsString()); } else { System.err.println("No matching clientId found in clientMap for: " + responseClientId); } } insertRecord(tableName, idMap); } else { System.err.println("API call failed: " + resultJson.get("msg").getAsString()); } return idMap; } void insertRecord(String tableName, Map idsMap) { if (idsMap.isEmpty()) { return; } for (var entry : idsMap.entrySet()) { var sourceId = entry.getKey(); String sql = "INSERT INTO hikvision_data(create_date, table_name, source_id, hikvision_id) " + "VALUES(now(), '" + tableName + "', '" + sourceId + "', '" + entry.getValue() + "')"; SqlRunnerAdapter.db().insert(sql); } } // void insertRecord(Db db, String tableName, Map idsMap) throws SQLException { // if(idsMap.isEmpty()){ // return; // } // List sqls = new ArrayList<>(); // for (Long sourceId : idsMap.keySet()) { // String sql = "INSERT INTO hikvision_data(create_date,table_name,source_id,hikvision_id) value(now(),'" // + tableName + "'," + sourceId + ",'" + idsMap.get(sourceId) + "')"; // sqls.add(sql); // } // db.executeBatch(sqls); // }; /** * 根据用用户id,删除海康人员信息 * * @param userIds */ public void deletePerson(List userIds) { JsonArray personIds = new JsonArray(); for (Long userId : userIds) { String sql = "select * from hikvision_data where source_id = '" + userId + "'"; List> maps = SqlRunnerAdapter.db().selectList(sql); if (maps.isEmpty()) { continue; } for (Map map : maps) { personIds.add(map.get("hikvision_id").toString()); } } String apiPath = "/api/resource/v1/person/batch/delete"; ApiUtil apiUtil = new ApiUtil(); JsonObject param = new JsonObject(); param.add("personIds", personIds); String result = apiUtil.doPost(apiPath, param.toString(), null); log.info("海康人员删除:param:" + param + ",result:" + result); } public void deleteCar(List carList) { ApiUtil apiUtil = new ApiUtil(); String apiPath = "/api/resource/v2/vehicle/advance/vehicleList"; JsonParser parser = new JsonParser(); JsonArray vehicleIds = new JsonArray(); for (CarMessageApply carMessageApply : carList) { JsonObject param = new JsonObject(); param.addProperty("plateNo", carMessageApply.getCarNumber()); String result = apiUtil.doPost(apiPath, param.toString(), null); JsonObject vehicleData = parser.parse(result).getAsJsonObject(); if ("0".equals(vehicleData.get("code").getAsString()) && "success".equals(vehicleData.get("msg").getAsString())) { JsonObject dataJson = vehicleData.get("data").getAsJsonObject(); if (dataJson.get("total").getAsInt() > 0) { JsonArray vehicleList = dataJson.get("list").getAsJsonArray(); for (JsonElement jsonElement : vehicleList) { vehicleIds.add(jsonElement.getAsJsonObject().get("vehicleId")); } } } } if(vehicleIds.size() > 0){ apiPath = "/api/resource/v1/vehicle/batch/delete"; JsonObject param = new JsonObject(); param.add("vehicleIds", vehicleIds); apiUtil.doPost(apiPath, param.toString(), null); } } }