Browse Source

Merge remote-tracking branch 'origin/dev' into dev

大数据与最优化研究所 6 tháng trước cách đây
mục cha
commit
b4ab7f39d6

+ 17 - 3
src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java

@@ -91,14 +91,28 @@ public class DataUtil {
      * 推送学生班级信息
      */
     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";
-        JsonParser jsonParser = new JsonParser();
-        ApiUtil apiUtil = new ApiUtil();
+        
         int clientId = 1;
         Map<Integer, String> idCodeMap = new HashMap<>();
         JsonArray dataArray = new JsonArray();
@@ -188,7 +202,7 @@ public class DataUtil {
                 paramJson.addProperty("orgIndexCode", baseGrade.get("name").toString().replaceAll("级", "") + "-" + classType);
                 paramJson.addProperty("orgName", baseGrade.get("name").toString());
                 paramJson.addProperty("parentIndexCode", classType);
-                paramJson.addProperty("orgCode", clientId);
+//                paramJson.addProperty("orgCode", clientId);
                 dataArray.add(paramJson);
                 idCodeMap.put(clientId, baseGrade.get("name").toString().replaceAll("级", "") + "-" + classType);
                 clientId++;

+ 84 - 2
src/main/java/com/xjrsoft/module/job/OfficialDocumentReceivedHandleTask.java

@@ -1,8 +1,20 @@
 package com.xjrsoft.module.job;
 
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.EnabledMark;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.oa.entity.OfficialDocumentReceived;
+import com.xjrsoft.module.oa.entity.OfficialDocumentReceivedHandle;
 import com.xjrsoft.module.oa.service.IOfficialDocumentReceivedHandleService;
+import com.xjrsoft.module.oa.service.IOfficialDocumentReceivedService;
+import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
+import com.xjrsoft.module.organization.entity.User;
+import com.xjrsoft.module.organization.service.IUserService;
+import com.xjrsoft.module.organization.service.IWeChatService;
+import com.xjrsoft.module.organization.vo.WeChatPageVO;
 import com.xjrsoft.module.student.dto.EnrollmentStatisticsCalendarInfoDto;
 import com.xjrsoft.module.student.dto.EnrollmentStatisticsGraduationInfoDto;
 import com.xjrsoft.module.student.dto.EnrollmentStatisticsInfoDto;
@@ -12,8 +24,10 @@ import com.xjrsoft.module.student.service.IPbCseFeeobjupdateService;
 import com.xjrsoft.module.student.vo.EnrollmentStatisticsCalendarInfoVo;
 import com.xjrsoft.module.student.vo.EnrollmentStatisticsGraduationInfoVo;
 import com.xjrsoft.module.student.vo.EnrollmentStatisticsInfoVo;
+import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
 import com.yomahub.liteflow.util.JsonUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.camunda.bpm.engine.history.HistoricProcessInstance;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -21,9 +35,13 @@ import org.springframework.stereotype.Component;
 
 import java.time.DayOfWeek;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 将招生计划数据固化
@@ -37,15 +55,79 @@ public class OfficialDocumentReceivedHandleTask {
 
 
     @Autowired
-    private IOfficialDocumentReceivedHandleService officialDocumentReceivedHandleService;
+    private IOfficialDocumentReceivedHandleService handleService;
+
+    @Autowired
+    private IUserService userService;
+
+    @Autowired
+    private IOfficialDocumentReceivedService receivedService;
+
+    @Autowired
+    private IWeChatService weChatService;
 
     @Async
-    @Scheduled(cron = "00 0/30 * * * ?")
+    @Scheduled(cron = "00 0/60 * * * ?")
     public void execute() {
         doExecute();
     }
 
     void doExecute() {
+        LocalDateTime now = LocalDateTime.now().withMinute(0).withSecond(0);
+        List<User> list = userService.list(
+                new MPJLambdaWrapper<User>()
+                        .select(User::getId)
+                        .select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
+                        .innerJoin(OfficialDocumentReceivedHandle.class, OfficialDocumentReceivedHandle::getCreateUserId, User::getId)
+                        .eq(OfficialDocumentReceivedHandle::getAlertTime, now)
+                        .isNotNull(User::getOpenId)
+        );
+
+        List<OfficialDocumentReceived> documentReceivedList = receivedService.list(
+                new MPJLambdaWrapper<OfficialDocumentReceived>()
+                        .select(OfficialDocumentReceived::getId)
+                        .select(OfficialDocumentReceived.class, x -> VoToColumnUtil.fieldsToColumns(OfficialDocumentReceived.class).contains(x.getProperty()))
+                        .innerJoin(WorkflowFormRelation.class, WorkflowFormRelation::getFormKeyValue, OfficialDocumentReceived::getId)
+                        .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_COMPLETED)
+        );
+
+        Map<Long, OfficialDocumentReceived> documentReceivedMap = documentReceivedList.stream().collect(Collectors.toMap(OfficialDocumentReceived::getId, x -> x));
+
+        List<OfficialDocumentReceivedHandle> handleList = handleService.list(
+                new QueryWrapper<OfficialDocumentReceivedHandle>().lambda()
+                        .eq(OfficialDocumentReceivedHandle::getAlertTime, now)
+        );
+        Map<Long, List<OfficialDocumentReceivedHandle>> handleGroupMap = handleList.stream().collect(Collectors.groupingBy(OfficialDocumentReceivedHandle::getCreateUserId));
+
+        for (User user : list) {
+            List<OfficialDocumentReceivedHandle> handles = handleGroupMap.get(user.getId());
+            for (OfficialDocumentReceivedHandle handle : handles) {
+                if(handle.getIsHandle() == 1){
+                    continue;
+                }
+                OfficialDocumentReceived received = documentReceivedMap.get(handle.getOfficialDocumentReceivedId());
+
+                WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
+                weChatSendMessageDto.setUserId(user.getOpenId());
+                weChatSendMessageDto.setTemplateId("qmpXORPM1Cocqn503Qa4On6BJhR92UZ00eod2-6IcGo");
+                //weChatSendMessageDto.setUrl(StrUtil.format("{}/pages/message/notice/detail?id={}", commonPropertiesConfig.getDomainApp(), id));
+                weChatSendMessageDto.setMsgId(handle.getId().toString());
+                JSONObject data = new JSONObject();
+
+                JSONObject thing23 = new JSONObject();
+                thing23.put("value", "您有一个行政收文待处理");
+                data.put("thing23", thing23);
+
+                JSONObject data2 = new JSONObject();
+                data2.put("value", user.getName());
+                data.put("thing29", data2);
 
+                JSONObject data3 = new JSONObject();
+                data3.put("value", now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                data.put("time17", data3);
+                weChatSendMessageDto.setContent(data);
+                weChatService.sendTemplateMessage(weChatSendMessageDto);
+            }
+        }
     }
 }

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

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.liteflow.node;
 
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.StrUtil;
 import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
 import com.xjrsoft.module.hikvision.util.FaceImportUtil;
 import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
@@ -38,7 +39,11 @@ public class ImportStudentFaceNode extends NodeComponent {
             StundentFaceProcess dataObj = stundentFaceProcessService.getById(formId);
             dataObj.setStatus(1);
             dataObj.setExamStatus(1);
-            String result = FaceImportUtil.ImportStudentFace(hikvisionDataMapper.getStudentHikvisionId(dataObj.getUserId()), fileUrl);
+            String studentHikvisionId = hikvisionDataMapper.getStudentHikvisionId(dataObj.getUserId());
+            if(StrUtil.isEmpty(studentHikvisionId)){
+                studentHikvisionId = dataObj.getUserId().toString();
+            }
+            String result = FaceImportUtil.ImportStudentFace(studentHikvisionId, fileUrl);
             dataObj.setHikvisionResult(result);
             stundentFaceProcessService.updateById(dataObj);
             stundentFaceProcessService.clearHistory(dataObj);

+ 5 - 0
src/main/java/com/xjrsoft/module/schedule/util/DataUtil.java

@@ -671,8 +671,12 @@ public class DataUtil {
         List<Entity> entityList = new ArrayList();
         SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
         Set<String> teacherIdList = new HashSet<>();
+        Set<String> jianyueIds = new HashSet<>();
         for (JsonElement jsonElement : data) {
             JsonObject asJsonObject = jsonElement.getAsJsonObject();
+            if(jianyueIds.contains(asJsonObject.get("id").getAsString())){
+                continue;
+            }
             JsonArray teachers = asJsonObject.get("teachers").getAsJsonArray();
             if (asJsonObject.get("courseClassId").isJsonNull() || coureseMap.get(asJsonObject.get("courseClassId").getAsString()) == null) {
                 continue;
@@ -735,6 +739,7 @@ public class DataUtil {
             entity.set("course_receive_msg_id", courseReceiveMsgId);
             entity.set("start_time", asJsonObject.get("startTime").getAsString());
             entity.set("end_time", asJsonObject.get("endTime").getAsString());
+            jianyueIds.add(asJsonObject.get("id").getAsString());
             entityList.add(entity);
         }
         if (!entityList.isEmpty()) {

+ 7 - 0
src/main/java/com/xjrsoft/module/student/service/impl/StudentManagerServiceImpl.java

@@ -18,6 +18,7 @@ import com.xjrsoft.common.enums.*;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.utils.RedisUtil;
 import com.xjrsoft.common.utils.TreeUtil;
+import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.config.CommonPropertiesConfig;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseGrade;
@@ -507,6 +508,8 @@ public class StudentManagerServiceImpl extends MPJBaseServiceImpl<BaseStudentUse
         //查询所有学生的用户信息,组装起来备用
         List<BaseStudentUser> studentUsers = this.selectJoinList(BaseStudentUser.class,
                 new MPJLambdaWrapper<BaseStudentUser>()
+                        .select(BaseStudentUser::getId)
+                        .select(BaseStudentUser.class, x -> VoToColumnUtil.fieldsToColumns(BaseStudentUser.class).contains(x.getProperty()))
                         .leftJoin(BaseStudent.class, BaseStudent::getUserId, BaseStudentUser::getId)
                         .in(BaseStudentUser::getCredentialNumber, idNumbers)
         );
@@ -519,6 +522,8 @@ public class StudentManagerServiceImpl extends MPJBaseServiceImpl<BaseStudentUse
         //查询所有的学生信息,组装起来备用
         List<BaseStudent> baseStudents = baseStudentService.selectJoinList(BaseStudent.class,
                 new MPJLambdaWrapper<BaseStudent>()
+                        .select(BaseStudent::getId)
+                        .select(BaseStudent.class, x -> VoToColumnUtil.fieldsToColumns(BaseStudent.class).contains(x.getProperty()))
                         .leftJoin(BaseStudentUser.class, BaseStudentUser::getId, BaseStudent::getUserId)
                         .in(BaseStudentUser::getCredentialNumber, idNumbers)
         );
@@ -537,6 +542,8 @@ public class StudentManagerServiceImpl extends MPJBaseServiceImpl<BaseStudentUse
 
         List<BaseStudentSchoolRoll> baseStudentSchoolRolls = schoolRollService.selectJoinList(BaseStudentSchoolRoll.class,
                 new MPJLambdaWrapper<BaseStudentSchoolRoll>()
+                        .select(BaseStudentSchoolRoll::getId)
+                        .select(BaseStudentSchoolRoll.class, x -> VoToColumnUtil.fieldsToColumns(BaseStudentSchoolRoll.class).contains(x.getProperty()))
                         .leftJoin(BaseStudent.class, BaseStudent::getUserId, BaseStudentSchoolRoll::getUserId)
                         .in(!userIds.isEmpty(), BaseStudentSchoolRoll::getUserId, userIds)
         );

+ 1 - 0
src/main/java/com/xjrsoft/module/student/service/impl/StudentReportRecordServiceImpl.java

@@ -445,6 +445,7 @@ public class StudentReportRecordServiceImpl extends MPJBaseServiceImpl<StudentRe
                 schoolRoll.setClassId(baseClass.getId());
                 schoolRoll.setMajorSetId(baseClass.getMajorSetId());
                 schoolRoll.setStduyStatus(student.getStduyStatus());
+                schoolRoll.setDeleteMark(DeleteMark.DELETED.getCode());
                 schoolRoll.setEnrollType(baseClass.getEnrollType());
                 schoolRoll.setStudentType(student.getSource());
                 schoolRoll.setGradeId(baseClass.getGradeId());

+ 2 - 2
src/main/resources/sqlScript/鸿合课表视图.sql

@@ -1,5 +1,5 @@
 CREATE VIEW course_table_view AS
-SELECT t1.class_id,t1.class_name,t1.teacher_name,t1.course_name, t2.short_name,t1.weeks_cn,t1.schedule_date,t1.start_time,t1.end_time FROM course_table t1
+SELECT DISTINCT t1.class_id,t1.class_name,t1.teacher_name,t1.course_name, t2.short_name,t1.weeks_cn,t1.schedule_date,t1.start_time,t1.end_time FROM course_table t1
 LEFT JOIN class_time t2 ON t1.time_number = t2.number
 LEFT JOIN base_semester t3 ON t1.base_semester_id = t3.id
-WHERE t1.schedule_date >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY);
+WHERE t1.schedule_date BETWEEN DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) AND DATE_ADD(CURDATE(), INTERVAL (6 - WEEKDAY(CURDATE())) DAY);

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

@@ -165,17 +165,17 @@ class HikvisionBaseDataTaskTest {
 //        dataUtil.insertCar(use, carTableName,baseClass, faceImportMapper);
 
 
-//        tableName = "base_class";
-//        Map<String, String> baseClass = dataMap.get(tableName);
-//        Map<String, String> classes = dataUtil.insertClass(tableName, baseClass);
+        tableName = "base_class";
+        Map<String, String> baseClass = dataMap.get(tableName);
+        Map<String, String> classes = dataUtil.insertClass(tableName, baseClass);
 
 
-        tableName = "base_student";
-        List<HikvisionData> studentList = hikvisionDataMapper.selectList(
-                new QueryWrapper<HikvisionData>().lambda().eq(HikvisionData::getTableName, tableName)
-        );
-        Map<String, String> baseStudent = dataMap.get(tableName);
-        insertStudentOne(tableName, baseStudent, studentList);
+//        tableName = "base_student";
+//        List<HikvisionData> studentList = hikvisionDataMapper.selectList(
+//                new QueryWrapper<HikvisionData>().lambda().eq(HikvisionData::getTableName, tableName)
+//        );
+//        Map<String, String> baseStudent = dataMap.get(tableName);
+//        insertStudentOne(tableName, baseStudent, studentList);
 //        sql = "SELECT * FROM wf_room_applicant WHERE delete_mark = 0 AND STATUS = 1";
 //        List<Map<String, Object>> wfRoomApplicantList = SqlRunnerAdapter.db().selectList(sql);
 //
@@ -245,7 +245,30 @@ class HikvisionBaseDataTaskTest {
                 " 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";
+                " AND t3.class_type IS NOT NULL AND t3.is_graduate = 1" +
+                " and t1.credential_number IN (" +
+                " SELECT t3.credential_number\n" +
+                "        FROM student_report_record t1\n" +
+                "        INNER JOIN base_new_student t3 ON t3.id = t1.user_id\n" +
+                "        LEFT JOIN banding_task_class_student t2 ON t1.user_id = t2.new_student_id AND t2.delete_mark = 0\n" +
+                "        LEFT JOIN banding_task_class t5 ON t2.banding_task_class_id = t5.id\n" +
+                "        LEFT JOIN xjr_user t6 ON t5.teacher_id = t6.id\n" +
+                "        LEFT JOIN xjr_dictionary_detail t7 ON t3.gender = t7.code AND t7.delete_mark = 0\n" +
+                "        LEFT JOIN xjr_dictionary_detail t8 ON t3.source = t8.code AND t8.delete_mark = 0\n" +
+                "        LEFT JOIN xjr_dictionary_detail t9 ON t3.stduy_status = t9.code AND t9.delete_mark = 0\n" +
+                "        LEFT JOIN banding_task t10 ON t5.banding_task_id = t10.id\n" +
+                "        LEFT JOIN enrollment_plan t11 ON t11.id = t3.enrollment_plan_id\n" +
+                "        LEFT JOIN base_grade t4 ON t11.grade_id = t4.id\n" +
+                "        LEFT JOIN student_report_plan t12 ON t12.id = t1.student_report_plan_id\n" +
+                "        LEFT JOIN base_major_set t13 ON t13.id = t5.major_set_id\n" +
+                "        LEFT JOIN xjr_dictionary_detail t14 ON t5.class_type = t14.code AND t14.delete_mark = 0\n" +
+                "        LEFT JOIN xjr_department t15 ON t15.id = t13.department_id\n" +
+                "        WHERE t1.delete_mark = 0 AND t1.enabled_mark = 1\n" +
+                "        AND t12.status IN(1,2)\n" +
+                "        AND t3.enrollment_plan_id = 1897950348853186562\n" +
+                "        AND t12.category = 2\n" +
+                "        AND t1.report_time IS NOT NULL" +
+                " )";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
         Map<Integer, String> clientMap = new HashMap<>();
         List<Entity> insertList = new ArrayList<>();
@@ -361,8 +384,7 @@ class HikvisionBaseDataTaskTest {
         ApiUtil apiUtil = new ApiUtil();
 
         JsonArray dataArray = new JsonArray();
-        dataArray.add("1828723343029219330-2024-job_class-FB3001");
-        dataArray.add("1828723343029219330-2024-job_class-FB3002");
+        dataArray.add("2025-job_class-FB3002");
         JsonObject paramJson = new JsonObject();
         paramJson.add("indexCodes", dataArray);
         Map<String, String> headerMap = new HashMap<>();

+ 38 - 19
src/test/java/com/xjrsoft/module/job/JianyuekbBaseDataTaskTest.java

@@ -178,24 +178,43 @@ class JianyuekbBaseDataTaskTest {
             ids.add(object.get("serialNo").getAsString());
         }
 
-//        url  = ScheduleUtil.apiUrl + "Class/del";
-//        timestamp = System.currentTimeMillis();
-//        sign = ScheduleUtil.createSign(timestamp);
-//        int maxNum = 100;
-//        int cishu = ids.size() / maxNum + 1;
-//        if(ids.size() < maxNum){
-//            maxNum = ids.size();
-//        }
-//        for (int i = 0; i < cishu; i++){
-//            JsonArray delArray = new JsonArray();
-//            for (int j = 0 + (i * maxNum);  j < maxNum; j ++){
-//                delArray.add(ids.get(j));
-//            }
-//
-//            String delResult = ScheduleUtil.doPost(url, delArray.toString(), sign, timestamp);
-//
-//            System.out.println(delResult);
-//        }
+        url  = ScheduleUtil.apiUrl + "Class/del";
+        timestamp = System.currentTimeMillis();
+        sign = ScheduleUtil.createSign(timestamp);
+        int maxNum = 100;
+        int cishu = ids.size() / maxNum + 1;
+        if(ids.size() < maxNum){
+            maxNum = ids.size();
+        }
+        for (int i = 0; i < cishu; i++){
+            JsonArray delArray = new JsonArray();
+            for (int j = 0 + (i * maxNum);  j < maxNum; j ++){
+                delArray.add(ids.get(j));
+            }
+
+            String delResult = ScheduleUtil.doPost(url, delArray.toString(), sign, timestamp);
+
+            System.out.println(delResult);
+        }
+
+    }
+
+    @Test
+    void deleteClassByJianyueId() throws Exception {
+        long timestamp = System.currentTimeMillis();
+        String sign = ScheduleUtil.createSign(timestamp);
+        String url  = ScheduleUtil.apiUrl + "Class/page";
+
+
+        url  = ScheduleUtil.apiUrl + "Class/del";
+        timestamp = System.currentTimeMillis();
+        sign = ScheduleUtil.createSign(timestamp);
+
+        JsonArray delArray = new JsonArray();
+        delArray.add("CLA000001731");
+        String delResult = ScheduleUtil.doPost(url, delArray.toString(), sign, timestamp);
+
+        System.out.println(delResult);
 
     }
 
@@ -340,7 +359,7 @@ class JianyuekbBaseDataTaskTest {
 
         doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
 
-        sql = "SELECT * FROM base_class WHERE delete_mark = 0 and is_graduate = 1";
+        sql = "SELECT * FROM base_class WHERE delete_mark = 0 and is_graduate = 1 and id = 1917059281647636481";
         List<BaseClass> dataList = use.query(sql, BaseClass.class);
         Map<String, BaseClass> classMap = new HashMap<>();
         for (BaseClass baseClass : dataList) {

+ 32 - 6
src/test/java/com/xjrsoft/module/liteflow/node/ImportStudentFaceNodeTest.java

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.liteflow.node;
 
+import cn.hutool.core.util.StrUtil;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
@@ -40,10 +41,31 @@ class ImportStudentFaceNodeTest {
     private FaceImportMapper faceImportMapper;
     @Test
     void test(){
-        String sql = "SELECT t3.* FROM base_new_student t1" +
-                " INNER JOIN student_report_record t2 ON t1.id = t2.user_id" +
-                " INNER JOIN xjr_user t3 ON t1.credential_number = t3.credential_number" +
-                " WHERE t2.report_time IS NOT NULL;";
+        String sql = "SELECT t1.* FROM xjr_user t1\n" +
+                "WHERE t1.delete_mark = 0 \n" +
+                "AND t1.credential_number IN (\n" +
+                "\tSELECT t3.credential_number\n" +
+                "        FROM student_report_record t1\n" +
+                "        INNER JOIN base_new_student t3 ON t3.id = t1.user_id\n" +
+                "        LEFT JOIN banding_task_class_student t2 ON t1.user_id = t2.new_student_id AND t2.delete_mark = 0\n" +
+                "        LEFT JOIN banding_task_class t5 ON t2.banding_task_class_id = t5.id\n" +
+                "        LEFT JOIN xjr_user t6 ON t5.teacher_id = t6.id\n" +
+                "        LEFT JOIN xjr_dictionary_detail t7 ON t3.gender = t7.code AND t7.delete_mark = 0\n" +
+                "        LEFT JOIN xjr_dictionary_detail t8 ON t3.source = t8.code AND t8.delete_mark = 0\n" +
+                "        LEFT JOIN xjr_dictionary_detail t9 ON t3.stduy_status = t9.code AND t9.delete_mark = 0\n" +
+                "        LEFT JOIN banding_task t10 ON t5.banding_task_id = t10.id\n" +
+                "        LEFT JOIN enrollment_plan t11 ON t11.id = t3.enrollment_plan_id\n" +
+                "        LEFT JOIN base_grade t4 ON t11.grade_id = t4.id\n" +
+                "        LEFT JOIN student_report_plan t12 ON t12.id = t1.student_report_plan_id\n" +
+                "        LEFT JOIN base_major_set t13 ON t13.id = t5.major_set_id\n" +
+                "        LEFT JOIN xjr_dictionary_detail t14 ON t5.class_type = t14.code AND t14.delete_mark = 0\n" +
+                "        LEFT JOIN xjr_department t15 ON t15.id = t13.department_id\n" +
+                "        WHERE t1.delete_mark = 0 AND t1.enabled_mark = 1\n" +
+                "        AND t12.status IN(1,2)\n" +
+                "        AND t3.enrollment_plan_id = 1897950348853186562\n" +
+                "        AND t12.category = 2\n" +
+                "        AND t1.report_time IS NOT NULL\n" +
+                ")";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
 
         ApiUtil apiUtil = new ApiUtil();
@@ -85,10 +107,14 @@ class ImportStudentFaceNodeTest {
                 if(dataJson.get("total").getAsInt() > 0){
                     JsonArray personPhoto = dataJson.get("list").getAsJsonArray().get(0)
                             .getAsJsonObject().get("personPhoto").getAsJsonArray();
-                    if(personPhoto.size() == 0){
+                    if(personPhoto.size() != 0){
                         dataObj.setStatus(1);
                         dataObj.setExamStatus(1);
-                        String result = FaceImportUtil.ImportStudentFace(hikvisionDataMapper.getStudentHikvisionId(dataObj.getUserId()), fileUrl);
+                        String studentHikvisionId = hikvisionDataMapper.getStudentHikvisionId(dataObj.getUserId());
+                        if(StrUtil.isEmpty(studentHikvisionId)){
+                            studentHikvisionId = dataObj.getUserId().toString();
+                        }
+                        String result = FaceImportUtil.ImportStudentFace(studentHikvisionId, fileUrl);
                         dataObj.setHikvisionResult(result);
                         dataObj.setModifyDate(new Date());
                         dataObj.setEnabledMark(1);