Browse Source

海康基础数据推送

dzx 10 months ago
parent
commit
cdd7b0b9a7

+ 55 - 0
src/main/java/com/xjrsoft/module/hikvision/entity/HikvisionData.java

@@ -0,0 +1,55 @@
+package com.xjrsoft.module.hikvision.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+* @title: 简约系统对照表
+* @Author dzx
+* @Date: 2024-01-23
+* @Version 1.0
+*/
+@Data
+@TableName("hikvision_data")
+@ApiModel(value = "海康威视系统对照表", description = "海康威视系统对照表")
+public class HikvisionData implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("首次推送时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 表名
+    */
+    @ApiModelProperty("表名")
+    private String tableName;
+    /**
+    * 英文姓名
+    */
+    @ApiModelProperty("数据id")
+    private Long sourceId;
+    /**
+    * 姓名拼音
+    */
+    @ApiModelProperty("对应的海康威视系统的id")
+    private String hikvisionId;
+
+}

+ 46 - 26
src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.hikvision.util;
 
 import cn.hutool.db.Db;
+import cn.hutool.db.Entity;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
@@ -11,8 +12,10 @@ import lombok.extern.slf4j.Slf4j;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * @author dzx
@@ -22,43 +25,60 @@ import java.util.Map;
 public class DataUtil {
     /**
      * 同步组织数据
+     * 只有批量添加接口,需要一个层级一个层级的添加
      */
-    public Map<Long, String> insertDepartment(Db db, String tableName) throws Exception {
-        String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 ORDER BY LENGTH(hierarchy)";
+    public Map<Long, String> insertDepartment(Db db, String tableName, Map<Long, String> tableData) throws Exception {
+        String sql = "SELECT DISTINCT LENGTH(hierarchy) FROM " + tableName + " WHERE delete_mark = 0";
+        List<Integer[]> list = db.query(sql, Integer[].class);
+        Set<Integer> levelSet = new HashSet<>();
+        for (Integer[] strings : list) {
+            levelSet.add(strings[0]);
+        }
+
+        sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 ORDER BY LENGTH(hierarchy)";
         List<Department> dataList = db.query(sql, Department.class);
         String apiPath = "/api/resource/v1/org/batch/add";
         Map<Long, String> idMap = new HashMap<>();
         JsonParser jsonParser = new JsonParser();
         ApiUtil apiUtil = new ApiUtil();
-        JsonArray dataArray = new JsonArray();
 
         Map<String, Long> idCodeMap = new HashMap<>();
-        for (Department department : dataList) {
-            JsonObject paramJson = new JsonObject();
-            paramJson.addProperty("clientId", department.getCode());
-            paramJson.addProperty("orgIndexCode", department.getId().toString());
-            paramJson.addProperty("orgName", department.getName());
-            paramJson.addProperty("parentIndexCode", department.getParentId().toString());
-            paramJson.addProperty("orgCode", department.getCode());
-            dataArray.add(paramJson);
-            idCodeMap.put(department.getCode(), department.getId());
-        }
-
-        String result = apiUtil.doPost(apiPath, dataArray.toString(), null, null);
-        JsonElement parse = jsonParser.parse(result);
-        JsonObject resultJson = parse.getAsJsonObject();
-        if(resultJson.get("code").getAsInt() == 0 && "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());
+        for (Integer level : levelSet) {
+            JsonArray dataArray = new JsonArray();
+            for (Department department : dataList) {
+                if(tableData.containsKey(department.getId())){
+                    continue;
+                }
+                if(department.getHierarchy().length() == level){
+                    JsonObject paramJson = new JsonObject();
+                    paramJson.addProperty("clientId", department.getCode());
+                    paramJson.addProperty("orgIndexCode", department.getId().toString());
+                    paramJson.addProperty("orgName", department.getName());
+                    paramJson.addProperty("parentIndexCode", department.getParentId().toString());
+                    if(department.getParentId() == 0){
+                        paramJson.addProperty("parentIndexCode", "root000000");
+                    }
+                    paramJson.addProperty("orgCode", department.getCode());
+                    dataArray.add(paramJson);
+                    idCodeMap.put(department.getCode(), department.getId());
+                }
             }
-            //插入记录表
-            insertRecord(db, tableName, idMap);
-        }else{
+            String result = apiUtil.doPost(apiPath, dataArray.toString(), null, null);
+            JsonElement parse = jsonParser.parse(result);
 
-        }
+            JsonObject resultJson = parse.getAsJsonObject();
+            if(resultJson.get("code").getAsInt() == 0 && "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());
+                }
+            }else{
 
+            }
+        }
+        //插入记录表
+        insertRecord(db, tableName, idMap);
         return idMap;
     }
 

+ 9 - 26
src/main/java/com/xjrsoft/module/job/HikvisionBaseDataTask.java

@@ -2,11 +2,11 @@ package com.xjrsoft.module.job;
 
 import cn.hutool.db.Db;
 import cn.hutool.extra.spring.SpringUtil;
-import com.google.gson.JsonArray;
 import com.xjrsoft.common.constant.GlobalConstant;
 import com.xjrsoft.common.utils.DatasourceUtil;
+import com.xjrsoft.module.hikvision.entity.HikvisionData;
+import com.xjrsoft.module.hikvision.util.DataUtil;
 import com.xjrsoft.module.schedule.entity.JianyueData;
-import com.xjrsoft.module.schedule.util.DataUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -45,45 +45,28 @@ public class HikvisionBaseDataTask {
                 tables.add(jianyueData.getTableName());
             }
             sql = "SELECT * FROM hikvision_data WHERE 0 = 0";
-            List<JianyueData> list = use.query(sql, JianyueData.class);
+            List<HikvisionData> list = use.query(sql, HikvisionData.class);
             Map<String, Map<Long, String>> dataMap = new HashMap<>();
             for (String table : tables) {
                 Map<Long, String> tableData = new HashMap<>();
-                for (JianyueData jianyueData : list) {
-                    if(!table.equals(jianyueData.getTableName())){
+                for (HikvisionData hikvisiondata : list) {
+                    if(!table.equals(hikvisiondata.getTableName())){
                         continue;
                     }
-                    tableData.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+                    tableData.put(hikvisiondata.getSourceId(), hikvisiondata.getHikvisionId());
                 }
                 dataMap.put(table, tableData);
             }
             DataUtil dataUtil = new DataUtil();
-            //查询校区
-            JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
+            //查询根机构
+            //JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
             //推送组织机构
             String tableName = "xjr_department";
-            Map<Long, String> department = dataUtil.insertGrade(use, tableName, schoolDistrictData.get(0).getAsString(), dataMap.get(tableName));
+            Map<Long, String> department = dataUtil.insertDepartment(use, tableName, dataMap.get(tableName));
             if(department.isEmpty() && dataMap.get(tableName) != null){
                 department = dataMap.get(tableName);
             }
 
-            //推送学期
-            tableName = "base_semester";
-            dataUtil.insertSemester(use, tableName, dataMap.get(tableName));
-            //推送标签
-            tableName = "base_label";
-            Map<Long, String> tagMap = dataUtil.insertCourseTag(use, tableName, dataMap.get(tableName));
-            if(tagMap.isEmpty() && dataMap.get(tableName) != null){
-                tagMap = dataMap.get(tableName);
-            }
-
-
-            //推送教职工
-            tableName = "base_teacher";
-            Map<Long, String> teacherMap = dataUtil.insertTeacher(use, tableName, dataMap.get(tableName));
-            if(teacherMap.isEmpty() && dataMap.get(tableName) != null){
-                teacherMap = dataMap.get(tableName);
-            }
             //推送学生
 //            tableName = "base_student";
 //            dataUtil.insertStudent(use, tableName, grade, dataMap.get(tableName));