Browse Source

海康门禁调整

dzx 10 months ago
parent
commit
920af5b592

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

@@ -45,7 +45,7 @@ public class HikvisionData implements Serializable {
     * 英文姓名
     */
     @ApiModelProperty("数据id")
-    private Long sourceId;
+    private String sourceId;
     /**
     * 姓名拼音
     */

+ 270 - 13
src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java

@@ -5,11 +5,15 @@ import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
+import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.organization.entity.Department;
 import com.xjrsoft.module.personnel.entity.CarMessageApply;
+import com.xjrsoft.module.system.entity.DictionaryDetail;
 import lombok.extern.slf4j.Slf4j;
 import lombok.var;
 
+import java.math.BigDecimal;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -29,7 +33,7 @@ public class DataUtil {
      * 同步组织数据
      * 只有批量添加接口,需要一个层级一个层级的添加
      */
-    public Map<Long, String> insertDepartment(Db db, String tableName, Map<Long, String> tableData) throws Exception {
+    public Map<String, String> insertDepartment(Db db, String tableName, Map<String, 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<>();
@@ -40,15 +44,15 @@ public class DataUtil {
         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<>();
+        Map<String, String> idMap = new HashMap<>();
         JsonParser jsonParser = new JsonParser();
         ApiUtil apiUtil = new ApiUtil();
 
-        Map<String, Long> idCodeMap = new HashMap<>();
+        Map<String, String> idCodeMap = new HashMap<>();
         for (Integer level : levelSet) {
             JsonArray dataArray = new JsonArray();
             for (Department department : dataList) {
-                if(tableData.containsKey(department.getId())){
+                if(tableData.containsKey(department.getId().toString())){
                     continue;
                 }
                 if(department.getHierarchy().length() == level){
@@ -62,7 +66,7 @@ public class DataUtil {
                     }
                     paramJson.addProperty("orgCode", department.getCode());
                     dataArray.add(paramJson);
-                    idCodeMap.put(department.getCode(), department.getId());
+                    idCodeMap.put(department.getCode(), department.getId().toString());
                 }
             }
             String result = apiUtil.doPost(apiPath, dataArray.toString(), null, null);
@@ -75,16 +79,254 @@ public class DataUtil {
                     JsonObject jsonObject = jsonElement.getAsJsonObject();
                     idMap.put(idCodeMap.get(jsonObject.get("clientId").getAsString()), jsonObject.get("orgIndexCode").getAsString());
                 }
-            }else{
+            }
+        }
+        //插入记录表
+        insertRecord(db, tableName, idMap);
+        return idMap;
+    }
+
+    /**
+     * 推送学生班级信息
+     */
+    public Map<String, String> insertClass(Db db, String tableName, Map<String, String> tableData) throws SQLException {
+        Map<String, String> idMap = new HashMap<>();
+        //1、查询字典,将走读住读、班级类型先推送过去
+        String sql = "SELECT * FROM xjr_dictionary_detail WHERE delete_mark = 0 AND item_id = 2023000000000000030";
+        List<DictionaryDetail> detailList = db.query(sql, DictionaryDetail.class);
+
+        String apiPath = "/api/resource/v1/org/batch/add";
+        JsonParser jsonParser = new JsonParser();
+        ApiUtil apiUtil = new ApiUtil();
+        int clientId = 1;
+        Map<Integer, String> idCodeMap = new HashMap<>();
+        JsonArray dataArray = new JsonArray();
+
+        Set<String> stduyStatus = new HashSet<>();
+
+        for (DictionaryDetail dict : detailList) {
+            if(tableData != null && tableData.containsKey(dict.getId().toString())){
+                stduyStatus.add(dict.getId().toString());
+                continue;
+            }
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("clientId", clientId);
+            paramJson.addProperty("orgIndexCode", dict.getCode());
+            paramJson.addProperty("orgName", dict.getName() + "学生");
+            paramJson.addProperty("parentIndexCode", "root000000");
+            paramJson.addProperty("orgCode", dict.getCode());
+            dataArray.add(paramJson);
+            idCodeMap.put(clientId, dict.getCode());
+            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());
+            }
+        }
+        //推送班级类型
+        sql = "SELECT * FROM xjr_dictionary_detail WHERE delete_mark = 0 AND item_id = 2023000000000000039";
+        detailList = db.query(sql, DictionaryDetail.class);
+        dataArray = new JsonArray();
+        Set<String> classTypeSet = new HashSet<>();
+        for (String status : stduyStatus) {
+            for (DictionaryDetail dict : detailList) {
+                if(tableData != null && tableData.containsKey(dict.getCode())){
+                    classTypeSet.add(dict.getCode());
+                    continue;
+                }
+                JsonObject paramJson = new JsonObject();
+                paramJson.addProperty("clientId", clientId);
+                paramJson.addProperty("orgIndexCode", dict.getCode() + "-" + status);
+                paramJson.addProperty("orgName", dict.getName());
+                paramJson.addProperty("parentIndexCode", status);
+                paramJson.addProperty("orgCode", dict.getCode());
+                dataArray.add(paramJson);
+                idCodeMap.put(clientId, dict.getCode());
+                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<BaseGrade> gradeList = db.query(sql, BaseGrade.class);
+        Map<Long, String> gradeNameMap = new HashMap<>();
+        dataArray = new JsonArray();
+        for (String classType : classTypeSet) {
+            for (BaseGrade baseGrade : gradeList) {
+                gradeNameMap.put(baseGrade.getId(), baseGrade.getName());
+                if(tableData != null && tableData.containsKey(baseGrade.getId().toString())){
+                    continue;
+                }
+                JsonObject paramJson = new JsonObject();
+                paramJson.addProperty("clientId", clientId);
+                paramJson.addProperty("orgIndexCode", baseGrade.getName() + "-" + classType);
+                paramJson.addProperty("orgName", baseGrade.getName());
+                paramJson.addProperty("parentIndexCode", classType);
+                paramJson.addProperty("orgCode", clientId);
+                dataArray.add(paramJson);
+                idCodeMap.put(clientId, baseGrade.getName());
+                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());
+            }
+        }
+
+        //推送班级
+        sql = "SELECT * FROM base_class WHERE delete_mark = 0 AND is_graduate = 1 AND class_type IS NOT NULL";
+        List<BaseClass> classList = db.query(sql, BaseClass.class);
+
+        dataArray = new JsonArray();
+        for (String grade : gradeSet) {
+            String[] gradeGroup = grade.split("-");
+            for (BaseClass baseClass : classList) {
+                if(tableData != null && tableData.containsKey(baseClass.getId().toString())){
+                    continue;
+                }
+                String gradeName = gradeNameMap.get(baseClass.getGradeId());
+                if(!gradeGroup[0].equals(gradeName)){
+                    continue;
+                }
 
+                if(!gradeGroup[1].equals(baseClass.getClassType())){
+                    continue;
+                }
+                JsonObject paramJson = new JsonObject();
+                paramJson.addProperty("clientId", clientId);
+                paramJson.addProperty("orgIndexCode", baseClass.getId() + "-" + grade);
+                paramJson.addProperty("orgName", baseClass.getName());
+                paramJson.addProperty("parentIndexCode", grade);
+                paramJson.addProperty("orgCode", clientId);
+                dataArray.add(paramJson);
+                idCodeMap.put(clientId, baseClass.getId().toString());
+                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(db, tableName, idMap);
+
         return idMap;
     }
 
-    public Map<Long, String> insertTeacher(Db db, String tableName, Map<Long, String> tableData, Map<Long, String> deptMap) throws Exception {
+    public Map<String, String> insertStudent(Db db, String tableName, Map<String, String> tableData) throws Exception {
+        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 t2.grade_id = t4.id" +
+                " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0";
+        List<String[]> list = db.query(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 = 1000;
+
+        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 = 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(db, tableName, idMap);
+        return idMap;
+    }
+
+    public Map<String, String> insertTeacher(Db db, String tableName, Map<String, String> tableData, Map<String, String> deptMap) throws Exception {
         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" +
@@ -92,27 +334,42 @@ public class DataUtil {
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t4.delete_mark = 0";
         List<String[]> list = db.query(sql, String[].class);
         JsonArray paramArray = new JsonArray();
-        Map<Integer, Long> clientMap = new HashMap<>();
+        Map<Integer, String> clientMap = new HashMap<>();
         for(int i = 0; i < list.size(); i ++){
             String[] el = list.get(i);
-            if(tableData != null && tableData.containsKey(Long.parseLong(el[0]))){
+            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", deptMap.get(Long.parseLong(el[3])));
+            paramJson.addProperty("orgIndexCode", deptMap.get(el[3]));
             paramJson.addProperty("phoneNo", el[5]);
             paramJson.addProperty("jobNo", el[9]);
             paramJson.addProperty("birthday", el[4]);
+            paramJson.addProperty("personType", 1);
+
+            int gender;
+            switch (el[2]) {
+                case "SB10001":
+                    gender = 1;
+                    break;
+                case "SB10002":
+                    gender = 2;
+                    break;
+                default:
+                    gender = 0;
+                    break;
+            }
+            paramJson.addProperty("gender", gender);
             paramArray.add(paramJson);
 
-            clientMap.put(i, Long.parseLong(el[0]));
+            clientMap.put(i, el[0]);
         }
 
         String apiPath = "/api/resource/v1/person/batch/add";
-        Map<Long, String> idMap = new HashMap<>();
+        Map<String, String> idMap = new HashMap<>();
         JsonParser jsonParser = new JsonParser();
         ApiUtil apiUtil = new ApiUtil();
         Map<String, String> header = new HashMap<>();
@@ -206,7 +463,7 @@ public class DataUtil {
         for (var entry : idsMap.entrySet()) {
             var sourceId = entry.getKey();
             var sql = "INSERT INTO hikvision_data(create_date, table_name, source_id, hikvision_id) " +
-                    "VALUES(now(), '" + tableName + "', " + sourceId + ", '" + entry.getValue() + "')";
+                    "VALUES(now(), '" + tableName + "', '" + sourceId + "', '" + entry.getValue() + "')";
             sqls.add(sql);
         }
         db.executeBatch(sqls);

+ 12 - 3
src/main/java/com/xjrsoft/module/job/HikvisionBaseDataTask.java

@@ -46,9 +46,9 @@ public class HikvisionBaseDataTask {
             }
             sql = "SELECT * FROM hikvision_data WHERE 0 = 0";
             List<HikvisionData> list = use.query(sql, HikvisionData.class);
-            Map<String, Map<Long, String>> dataMap = new HashMap<>();
+            Map<String, Map<String, String>> dataMap = new HashMap<>();
             for (String table : tables) {
-                Map<Long, String> tableData = new HashMap<>();
+                Map<String, String> tableData = new HashMap<>();
                 for (HikvisionData hikvisiondata : list) {
                     if(!table.equals(hikvisiondata.getTableName())){
                         continue;
@@ -62,7 +62,7 @@ public class HikvisionBaseDataTask {
             //JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
             //推送组织机构
             String tableName = "xjr_department";
-            Map<Long, String> department = dataUtil.insertDepartment(use, tableName, dataMap.get(tableName));
+            Map<String, String> department = dataUtil.insertDepartment(use, tableName, dataMap.get(tableName));
             if(department.isEmpty() && dataMap.get(tableName) != null){
                 department = dataMap.get(tableName);
             }
@@ -75,6 +75,15 @@ public class HikvisionBaseDataTask {
             String carTableName = "car_message_apply";
             dataUtil.insertCar(use, carTableName, null);
 
+            tableName = "base_class";
+            Map<String, String> baseClass = dataMap.get(tableName);
+            Map<String, String> classes = dataUtil.insertClass(use, tableName, baseClass);
+
+
+            tableName = "base_student";
+            Map<String, String> baseStudent = dataMap.get(tableName);
+            Map<String, String> student = dataUtil.insertStudent(use, tableName, baseStudent);
+
             log.info("数据推送完成");
         } catch (Exception e) {
             log.error(e.getMessage(), e);

+ 36 - 0
src/main/java/com/xjrsoft/module/liteflow/node/CarMessageApplyNode.java

@@ -0,0 +1,36 @@
+package com.xjrsoft.module.liteflow.node;
+
+import cn.hutool.core.convert.Convert;
+import com.xjrsoft.module.personnel.entity.CarMessageApply;
+import com.xjrsoft.module.personnel.service.ICarMessageApplyService;
+import com.xjrsoft.module.student.service.IBaseStudentAssessmentClassRelationService;
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 车辆申请,通过后修改状态
+ */
+@Component("car_message_apply_node")
+public class CarMessageApplyNode extends NodeComponent {
+
+    @Autowired
+    private ICarMessageApplyService carMessageApplyService;
+
+    @Override
+    public void process() throws Exception {
+        // 获取表单中数据编号
+        Map<String, Object> params = this.getFirstContextBean();
+        Object value = util.getFormDatKey(params,"id");
+        Long formId = Convert.toLong(value);
+        if (formId != null) {
+            // 数据处理
+            CarMessageApply carMessageApply = carMessageApplyService.getById(formId);
+            carMessageApply.setStatus(1);
+
+            carMessageApplyService.updateById(carMessageApply);
+        }
+    }
+}

+ 12 - 1
src/main/java/com/xjrsoft/module/liteflow/node/ImportStudentFaceNode.java

@@ -1,8 +1,11 @@
 package com.xjrsoft.module.liteflow.node;
 
 import cn.hutool.core.convert.Convert;
-import com.yomahub.liteflow.core.NodeComponent;
 import com.xjrsoft.module.hikvision.util.FaceImportUtil;
+import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
+import com.xjrsoft.module.personnel.service.IStundentFaceProcessService;
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -12,6 +15,8 @@ import java.util.Map;
  */
 @Component("import_student_face_node")
 public class ImportStudentFaceNode extends NodeComponent {
+    @Autowired
+    private IStundentFaceProcessService stundentFaceProcessService;
     @Override
     public void process() throws Exception {
         // 获取表单中数据编号
@@ -21,6 +26,12 @@ public class ImportStudentFaceNode extends NodeComponent {
         if (formId != null) {
             // 数据处理
             FaceImportUtil.ImportStudentFace(formId);
+
+
+            StundentFaceProcess dataObj = stundentFaceProcessService.getById(formId);
+            dataObj.setStatus(1);
+
+            stundentFaceProcessService.updateById(dataObj);
         }
     }
 }

+ 12 - 0
src/main/java/com/xjrsoft/module/liteflow/node/ImportTeacherFaceNode.java

@@ -1,8 +1,11 @@
 package com.xjrsoft.module.liteflow.node;
 
 import cn.hutool.core.convert.Convert;
+import com.xjrsoft.module.personnel.entity.TeacherFaceProcess;
+import com.xjrsoft.module.personnel.service.ITeacherFaceProcessService;
 import com.yomahub.liteflow.core.NodeComponent;
 import com.xjrsoft.module.hikvision.util.FaceImportUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -12,6 +15,10 @@ import java.util.Map;
  */
 @Component("import_teacher_face_node")
 public class ImportTeacherFaceNode extends NodeComponent {
+
+    @Autowired
+    private ITeacherFaceProcessService teacherFaceProcessService;
+
     @Override
     public void process() throws Exception {
         // 获取表单中数据编号
@@ -21,6 +28,11 @@ public class ImportTeacherFaceNode extends NodeComponent {
         if (formId != null) {
             // 数据处理
             FaceImportUtil.ImportTeacherFace(formId);
+
+            TeacherFaceProcess dataObj = teacherFaceProcessService.getById(formId);
+            dataObj.setStatus(1);
+
+            teacherFaceProcessService.updateById(dataObj);
         }
     }
 }

+ 37 - 0
src/main/java/com/xjrsoft/module/liteflow/node/ReservationSchoolNode.java

@@ -0,0 +1,37 @@
+package com.xjrsoft.module.liteflow.node;
+
+import cn.hutool.core.convert.Convert;
+import com.xjrsoft.module.personnel.entity.CarMessageApply;
+import com.xjrsoft.module.personnel.entity.ReservationSchool;
+import com.xjrsoft.module.personnel.service.ICarMessageApplyService;
+import com.xjrsoft.module.personnel.service.IReservationSchoolService;
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 预约进校-进校人员,通过后修改状态
+ */
+@Component("reservation_school_node")
+public class ReservationSchoolNode extends NodeComponent {
+
+    @Autowired
+    private IReservationSchoolService reservationSchoolService;
+
+    @Override
+    public void process() throws Exception {
+        // 获取表单中数据编号
+        Map<String, Object> params = this.getFirstContextBean();
+        Object value = util.getFormDatKey(params,"id");
+        Long formId = Convert.toLong(value);
+        if (formId != null) {
+            // 数据处理
+            ReservationSchool dataObj = reservationSchoolService.getById(formId);
+            dataObj.setStatus(1);
+
+            reservationSchoolService.updateById(dataObj);
+        }
+    }
+}

+ 37 - 0
src/main/java/com/xjrsoft/module/liteflow/node/StudentAdmissionApplicationNode.java

@@ -0,0 +1,37 @@
+package com.xjrsoft.module.liteflow.node;
+
+import cn.hutool.core.convert.Convert;
+import com.xjrsoft.module.personnel.entity.ReservationSchool;
+import com.xjrsoft.module.personnel.service.IReservationSchoolService;
+import com.xjrsoft.module.student.entity.StudentAdmissionApplication;
+import com.xjrsoft.module.student.service.IStudentAdmissionApplicationService;
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 预约进校-进校人员,通过后修改状态
+ */
+@Component("student_admission_application_node")
+public class StudentAdmissionApplicationNode extends NodeComponent {
+
+    @Autowired
+    private IStudentAdmissionApplicationService studentAdmissionApplicationService;
+
+    @Override
+    public void process() throws Exception {
+        // 获取表单中数据编号
+        Map<String, Object> params = this.getFirstContextBean();
+        Object value = util.getFormDatKey(params,"id");
+        Long formId = Convert.toLong(value);
+        if (formId != null) {
+            // 数据处理
+            StudentAdmissionApplication dataObj = studentAdmissionApplicationService.getById(formId);
+            dataObj.setStatus(1);
+
+            studentAdmissionApplicationService.updateById(dataObj);
+        }
+    }
+}

+ 31 - 0
src/main/java/com/xjrsoft/module/liteflow/node/WfStatusChangeNode.java

@@ -0,0 +1,31 @@
+package com.xjrsoft.module.liteflow.node;
+
+import cn.hutool.core.convert.Convert;
+import com.xjrsoft.module.student.service.IBaseStudentAssessmentClassRelationService;
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 学生班级巡查考核流程结束处理
+ */
+@Component("wf_status_change_node")
+public class WfStatusChangeNode extends NodeComponent {
+
+    @Autowired
+    private IBaseStudentAssessmentClassRelationService assessmentClassRelationService;
+
+    @Override
+    public void process() throws Exception {
+        // 获取表单中数据编号
+        Map<String, Object> params = this.getFirstContextBean();
+        Object value = util.getFormDatKey(params,"id");
+        Long formId = Convert.toLong(value);
+        if (formId != null) {
+            // 数据处理
+            assessmentClassRelationService.dataCache(formId);
+        }
+    }
+}

+ 108 - 0
src/main/java/com/xjrsoft/module/student/entity/StudentAdmissionApplication.java

@@ -0,0 +1,108 @@
+package com.xjrsoft.module.student.entity;
+
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+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.time.LocalDateTime;
+
+
+/**
+ * @title: 学生进校申请
+ * @Author dzx
+ * @Date: 2024年5月17日
+ * @Version 1.0
+ */
+@Data
+@TableName("student_admission_application")
+@ApiModel(value = "学生进校申请", description = "学生进校申请")
+public class StudentAdmissionApplication implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @ApiModelProperty("主键")
+    @TableId
+    private Long id;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createDate;
+    /**
+     * 修改人
+     */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+     * 修改时间
+     */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private LocalDateTime modifyDate;
+    /**
+     * 删除标记
+     */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+     * 有效标志
+     */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+     * 学生用户id
+     */
+    @ApiModelProperty("学生用户id")
+    private Long studentUserId;
+    /**
+     * 班级id
+     */
+    @ApiModelProperty("班级id")
+    private Long classId;
+    /**
+     * 身份证号
+     */
+    @ApiModelProperty("身份证号")
+    private String identityCard;
+    /**
+     * 进校时间
+     */
+    @ApiModelProperty("进校时间")
+    private LocalDateTime startTime;
+    /**
+     * 出校时间
+     */
+    @ApiModelProperty("出校时间")
+    private LocalDateTime endTime;
+    /**
+     * 班主任id
+     */
+    @ApiModelProperty("班主任id")
+    private String teacherId;
+    /**
+     * 状态(0:未结束 1:结束)
+     */
+    @ApiModelProperty("状态(0:未结束 1:结束)")
+    private Integer status;
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/student/mapper/StudentAdmissionApplicationMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.student.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.student.entity.BasePunishmentType;
+import com.xjrsoft.module.student.entity.StudentAdmissionApplication;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 学生进校申请
+* @Author dzx
+* @Date: 2024年5月17日
+* @Version 1.0
+*/
+@Mapper
+public interface StudentAdmissionApplicationMapper extends MPJBaseMapper<StudentAdmissionApplication> {
+
+}

+ 16 - 0
src/main/java/com/xjrsoft/module/student/service/IStudentAdmissionApplicationService.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.student.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.student.entity.BaseMajorCategor;
+import com.xjrsoft.module.student.entity.StudentAdmissionApplication;
+import com.xjrsoft.module.student.mapper.StudentAdmissionApplicationMapper;
+
+/**
+ * @title: 学生进校申请
+ * @Author dzx
+ * @Date: 2024年5月17日
+ * @Version 1.0
+*/
+
+public interface IStudentAdmissionApplicationService extends MPJBaseService<StudentAdmissionApplication> {
+}

+ 22 - 0
src/main/java/com/xjrsoft/module/student/service/impl/StudentAdmissionApplicationServiceImpl.java

@@ -0,0 +1,22 @@
+package com.xjrsoft.module.student.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.student.entity.BaseMajorCategor;
+import com.xjrsoft.module.student.entity.StudentAdmissionApplication;
+import com.xjrsoft.module.student.mapper.BaseMajorCategorMapper;
+import com.xjrsoft.module.student.mapper.StudentAdmissionApplicationMapper;
+import com.xjrsoft.module.student.service.IBaseMajorCategorService;
+import com.xjrsoft.module.student.service.IStudentAdmissionApplicationService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * @title: 学生进校申请
+ * @Author dzx
+ * @Date: 2024年5月17日
+ * @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class StudentAdmissionApplicationServiceImpl extends MPJBaseServiceImpl<StudentAdmissionApplicationMapper, StudentAdmissionApplication> implements IStudentAdmissionApplicationService {
+}

+ 1 - 1
src/main/java/com/xjrsoft/module/workflow/utils/WorkFlowUtil.java

@@ -137,7 +137,7 @@ public class WorkFlowUtil {
                 .replace(WorkflowConstant.INITIATOR_USER_NAME_PLACEHOLDER, user.getName())
                 .replace(WorkflowConstant.INITIATOR_CODE_PLACEHOLDER, user.getCode())
                 .replace(WorkflowConstant.INITIATOR_MOBILE_PLACEHOLDER, user.getMobile())
-                .replace(WorkflowConstant.INITIATOR_DEPT_NAME_PLACEHOLDER, department.getName())
+                .replace(WorkflowConstant.INITIATOR_DEPT_NAME_PLACEHOLDER, department.getName()==null?"":department.getName())
 //                .replace(WorkflowConstant.INITIATOR_POST_NAME_PLACEHOLDER, post.getName())
                 .replace(WorkflowConstant.YYYYMMDDHHMMSS_24_PLACEHOLDER, DateUtil.format(LocalDateTime.now(), GlobalConstant.YYYY_MM_DD_HH_MM_SS_24))
                 .replace(WorkflowConstant.YYYYMMDDHHMMSS_12_PLACEHOLDER, DateUtil.format(LocalDateTime.now(), GlobalConstant.YYYY_MM_DD_HH_MM_SS_12))

+ 46 - 12
src/test/java/com/xjrsoft/module/job/HikvisionBaseDataTaskTest.java

@@ -48,9 +48,9 @@ class HikvisionBaseDataTaskTest {
         }
         sql = "SELECT * FROM hikvision_data WHERE 0 = 0";
         List<HikvisionData> list = use.query(sql, HikvisionData.class);
-        Map<String, Map<Long, String>> dataMap = new HashMap<>();
+        Map<String, Map<String, String>> dataMap = new HashMap<>();
         for (String table : tables) {
-            Map<Long, String> tableData = new HashMap<>();
+            Map<String, String> tableData = new HashMap<>();
             for (HikvisionData hikvisiondata : list) {
                 if(!table.equals(hikvisiondata.getTableName())){
                     continue;
@@ -61,25 +61,59 @@ class HikvisionBaseDataTaskTest {
         }
         DataUtil dataUtil = new DataUtil();
         String tableName = "xjr_department";
-        Map<Long, String> department = dataMap.get(tableName);
-        Map<Long, String> departments = dataUtil.insertDepartment(use, tableName, department);
-        if(departments != null){
-            department.putAll(departments);
-        }
-//        //System.out.println(department.toString());
-//
-        tableName = "base_teacher";
-        Map<Long, String> TeacherData = dataMap.get(tableName);
-        Map<Long, String> Teacher = dataUtil.insertTeacher(use, tableName, TeacherData, department);
+//        Map<String, String> department = dataMap.get(tableName);
+//        Map<String, String> departments = dataUtil.insertDepartment(use, tableName, department);
+//        if(departments != null){
+//            department.putAll(departments);
+//        }
+////        //System.out.println(department.toString());
+////
+//        tableName = "base_teacher";
+//        Map<String, String> TeacherData = dataMap.get(tableName);
+//        Map<String, String> Teacher = dataUtil.insertTeacher(use, tableName, TeacherData, department);
 //        System.out.println(Teacher);
 //        selectOrg(use, tableName);
 //        deleteOrg(use, tableName);
 
 //        selecAllPersonById(use);
 
+//        tableName = "base_class";
+//        Map<String, String> baseClass = dataMap.get(tableName);
+//        Map<String, String> classes = dataUtil.insertClass(use, tableName, baseClass);
 
+        tableName = "base_student";
+        Map<String, String> baseStudent = dataMap.get(tableName);
+        Map<String, String> student = dataUtil.insertStudent(use, tableName, baseStudent);
 
 //        selectResource(use);
+//        deleteClass(use);
+    }
+
+    void deleteClass(Db db) throws SQLException {
+
+        String apiPath = "/api/resource/v1/org/orgList";
+        JsonObject jsonObject = new JsonObject();
+        jsonObject.addProperty("pageNo", 1);
+        jsonObject.addProperty("pageSize", 500);
+        ApiUtil apiUtil = new ApiUtil();
+        String result = apiUtil.doPost(apiPath, jsonObject.toString(), null);
+
+        String sql = "SELECT * FROM hikvision_data WHERE table_name = 'base_class' order by length(hikvision_id) desc";
+        List<HikvisionData> dataList = db.query(sql, HikvisionData.class);
+        apiPath = "/api/resource/v1/org/batch/delete";
+        Map<Long, String> idMap = new HashMap<>();
+        JsonParser jsonParser = new JsonParser();
+        JsonArray dataArray = new JsonArray();
+        for (HikvisionData department : dataList) {
+            dataArray.add(department.getHikvisionId());
+        }
+
+        JsonObject paramJson = new JsonObject();
+        paramJson.add("indexCodes", dataArray);
+        Map<String, String> headerMap = new HashMap<>();
+        headerMap.put("tagId", "deleteOrg");
+        result = apiUtil.doPost(apiPath, paramJson.toString(), null, headerMap);
+        System.out.println(result);
     }
 
     /**