| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714 |
- 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<String, String> insertDepartment(String tableName, Map<String, String> tableData) {
- String sql = "SELECT DISTINCT LENGTH(hierarchy) FROM " + tableName + " WHERE delete_mark = 0";
- List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, Integer[].class);
- Set<Integer> levelSet = new HashSet<>();
- for (Map<String, Object> strings : list) {
- Integer[] strings1 = SqlRunnerAdapterUtil.convertMapToIntegerArray(strings);
- levelSet.add(strings1[0]);
- }
- sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 ORDER BY LENGTH(hierarchy)";
- List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, Department.class);
- String apiPath = "/api/resource/v1/org/batch/add";
- Map<String, String> idMap = new HashMap<>();
- JsonParser jsonParser = new JsonParser();
- ApiUtil apiUtil = new ApiUtil();
- Map<String, String> idCodeMap = new HashMap<>();
- for (Integer level : levelSet) {
- JsonArray dataArray = new JsonArray();
- for (Map<String, Object> 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<String, String> insertClass(String tableName, Map<String, String> tableData) {
- ApiUtil apiUtil = new ApiUtil();
- JsonParser jsonParser = new JsonParser();
- //先查询海康中存在的组织id
- // Set<Integer> 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<String, String> idMap = new HashMap<>();
- //1、查询字典,将走读住读、班级类型先推送过去
- String sql = "SELECT * FROM xjr_dictionary_detail WHERE delete_mark = 0 AND item_id = 2023000000000000030";
- List<Map<String, Object>> detailList = SqlRunnerAdapter.db().selectList(sql);
- String apiPath = "/api/resource/v1/org/batch/add";
-
- int clientId = 1;
- Map<Integer, String> idCodeMap = new HashMap<>();
- JsonArray dataArray = new JsonArray();
- Set<String> stduyStatus = new HashSet<>();
- for (Map<String, Object> 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<String, Object> dict : detailList) {
- stduyStatus.add(dict.get("code").toString());
- }
- }
- //推送班级类型
- sql = "SELECT * FROM xjr_dictionary_detail WHERE delete_mark = 0 AND item_id = 2023000000000000039";
- List<Map<String, Object>> classTypeList = SqlRunnerAdapter.db().selectList(sql);
- dataArray = new JsonArray();
- Set<String> classTypeSet = new HashSet<>();
- for (String status : stduyStatus) {
- for (Map<String, Object> 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<Map<String, Object>> gradeList = SqlRunnerAdapter.db().selectList(sql, BaseGrade.class);
- Map<Long, String> gradeNameMap = new HashMap<>();
- dataArray = new JsonArray();
- for (String classType : classTypeSet) {
- for (Map<String, Object> 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<String> 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<Map<String, Object>> gradeDataList = SqlRunnerAdapter.db().selectList(sql);
- for (Map<String, Object> 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<Map<String, Object>> classList = SqlRunnerAdapter.db().selectList(sql);
- dataArray = new JsonArray();
- for (String stduyStatu : stduyStatus) {
- for (Map<String, Object> 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<String, String> insertStudentOne(String tableName, Map<String, String> tableData, List<HikvisionData> studentList) throws InterruptedException {
- return insertStudentOne(tableName, tableData, studentList, null);
- }
- public Map<String, String> insertStudentOne(String tableName, Map<String, String> tableData, List<HikvisionData> 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<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
- Map<Integer, String> clientMap = new HashMap<>();
- List<Entity> insertList = new ArrayList<>();
- Map<String, String> historyMap = new HashMap<>();
- for (HikvisionData hikvisionData : studentList) {
- historyMap.put(hikvisionData.getSourceId(), hikvisionData.getSendData());
- }
- Map<String, String> idMap = new HashMap<>();
- JsonParser jsonParser = new JsonParser();
- ApiUtil apiUtil = new ApiUtil();
- Map<String, String> header = new HashMap<>();
- header.put("tagId", "insert_student");
- List<JsonObject> addList = new ArrayList<>();
- List<JsonObject> updateList = new ArrayList<>();
- for (int i = 0; i < list.size(); i++) {
- Map<String, Object> 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<String, String> insertStudent(String tableName, Map<String, String> 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<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
- Map<Integer, String> clientMap = new HashMap<>();
- String apiPath = "/api/resource/v1/person/batch/add";
- Map<String, String> idMap = new HashMap<>();
- JsonParser jsonParser = new JsonParser();
- ApiUtil apiUtil = new ApiUtil();
- Map<String, String> 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<String, String> insertTeacher(String tableName, Map<String, String> tableData, Map<String, String> 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<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
- JsonArray paramArray = new JsonArray();
- ApiUtil apiUtil = new ApiUtil();
- Map<Integer, String> clientMap = new HashMap<>();
- for (int i = 0; i < list.size(); i++) {
- Map<String, Object> 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<String, String> idMap = new HashMap<>();
- JsonParser jsonParser = new JsonParser();
- Map<String, String> 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<Long, String> insertCar(String tableName, Map<String, String> tableData, HikvisionDataMapper hikvisionDataMapper) {
- String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 and status = 1";
- List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, CarMessageApply.class);
- String apiPath = "/api/resource/v1/vehicle/batch/add";
- String apiPathTime = "/api/pms/v1/car/charge";
- Map<Long, String> idMap = new HashMap<>();
- JsonParser jsonParser = new JsonParser();
- ApiUtil apiUtil = new ApiUtil();
- Map<Integer, Long> clientMap = new HashMap<>();
- Map<String, String> tagMap = new HashMap<>();
- tagMap.put("tagId", "frs");
- String existingPlatesSql = "SELECT source_id FROM hikvision_data";
- List<Map<String, Object>> existingPlates = SqlRunnerAdapter.db().selectList(existingPlatesSql, String.class);
- JsonArray dataArray = new JsonArray();
- String result = null;
- int clientId = 1;
- for (Map<String, Object> 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<String, Object> 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<?, String> 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<Long, String> idsMap) throws SQLException {
- // if(idsMap.isEmpty()){
- // return;
- // }
- // List<String> 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<Long> userIds) {
- JsonArray personIds = new JsonArray();
- for (Long userId : userIds) {
- String sql = "select * from hikvision_data where source_id = '" + userId + "'";
- List<Map<String, Object>> maps = SqlRunnerAdapter.db().selectList(sql);
- if (maps.isEmpty()) {
- continue;
- }
- for (Map<String, Object> 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<CarMessageApply> 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);
- }
- }
- }
|