dzx 6 месяцев назад
Родитель
Сommit
dede088d8e

+ 11 - 16
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskServiceImpl.java

@@ -344,15 +344,12 @@ public class BandingTaskServiceImpl extends MPJBaseServiceImpl<BandingTaskMapper
                     continue;
                 }
                 //专业不匹配,直接跳过
-                if(
-                        !Objects.equals(taskClass.getMajorSetId(), newStudent.getFirstAmbitionId()) &&
-                        (
-                                !ruleCodes.contains("BR0006") &&
-                                !Objects.equals(taskClass.getMajorSetId(), newStudent.getSecondAmbitionId())
-                        )
-                )
-                {
+                if(ruleCodes.contains("BR0006") && !Objects.equals(taskClass.getMajorSetId(), newStudent.getFirstAmbitionId())){
                     continue;
+                }else{
+                    if(!Objects.equals(taskClass.getMajorSetId(), newStudent.getFirstAmbitionId()) && !Objects.equals(taskClass.getMajorSetId(), newStudent.getSecondAmbitionId())){
+                        continue;
+                    }
                 }
                 //判断该班性别是否已满,如果设置了排序,即使性别满了班级人数没满继续分班
                 if(ruleCodes.contains("BR0001")){
@@ -426,16 +423,14 @@ public class BandingTaskServiceImpl extends MPJBaseServiceImpl<BandingTaskMapper
                     continue;
                 }
                 //专业不匹配,直接跳过
-                //专业不匹配,直接跳过
-                if(
-                        !Objects.equals(taskClass.getMajorSetId(), newStudent.getFirstAmbitionId()) &&
-                                (
-                                        !ruleCodes.contains("BR0006") &&
-                                                !Objects.equals(taskClass.getMajorSetId(), newStudent.getSecondAmbitionId())
-                                )
-                ){
+                if(ruleCodes.contains("BR0006") && !Objects.equals(taskClass.getMajorSetId(), newStudent.getFirstAmbitionId())){
                     continue;
+                }else{
+                    if(!Objects.equals(taskClass.getMajorSetId(), newStudent.getFirstAmbitionId()) && !Objects.equals(taskClass.getMajorSetId(), newStudent.getSecondAmbitionId())){
+                        continue;
+                    }
                 }
+
                 //判断该班性别是否已满
                 List<Boolean> conditionList = new ArrayList<>();
                 BandingTaskMajorCondition condition = classConditionMap.get(taskClass.getMajorSetId());

+ 6 - 4
src/main/java/com/xjrsoft/module/databoard/controller/DatadetailController.java

@@ -296,10 +296,12 @@ public class DatadetailController {
     @SaCheckPermission("datadetail:detail")
     @XjrLog(value = "教职工详情数据统计", saveResponseData = true)
     public RT<TeacherStatisticsDetailVo> teahcerStatistics(@Valid StatisticsDetailDto dto) throws ParseException {
-        String sql = "SELECT IFNULL(t2.name,'未填写') AS item ,ifnull(COUNT(*), 0) AS a_count FROM base_teacher_education t1" +
-                " left join base_teacher t3 on t1.user_id = t3.user_id" +
-                " LEFT JOIN xjr_dictionary_detail t2 ON t1.education  = t2.code" +
-                " WHERE t1.delete_mark = 0 and t3.job_state in ('ZZZT10004','ZZZT10009','JOB_WCPX','JOB_DDSX')" +
+        String sql = "SELECT IFNULL(t2.name,'未填写') AS item ,IFNULL(COUNT(*), 0) AS a_count FROM xjr_user t1" +
+                " INNER JOIN base_teacher_education t4 ON  t1.id = t4.user_id " +
+                " LEFT JOIN base_teacher t3 ON t1.id = t3.user_id" +
+                " LEFT JOIN xjr_dictionary_detail t2 ON t4.education  = t2.code" +
+                " WHERE t1.delete_mark = 0 AND t3.job_state IN ('ZZZT10004','ZZZT10009','JOB_WCPX','JOB_DDSX')" +
+                " AND t4.delete_mark = 0" +
                 " GROUP BY t2.name";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
         TeacherStatisticsDetailVo result = new TeacherStatisticsDetailVo();

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

@@ -311,7 +311,7 @@ public class DataUtil {
             String id = objectMap.get("id").toString();
 
             JsonObject paramJson = new JsonObject();
-            paramJson.addProperty("clientId", i);
+//            paramJson.addProperty("clientId", i);
             paramJson.addProperty("personId", id);
             paramJson.addProperty("personName", objectMap.get("name").toString());
             paramJson.addProperty("orgIndexCode", objectMap.get("orgIndexCode").toString());
@@ -337,27 +337,13 @@ public class DataUtil {
 
             if (historyMap.containsKey(id)) {
                 if (!paramJson.toString().equals(historyMap.get(id))) {
+                    paramJson.addProperty("personId", tableData.get(id));
                     updateList.add(paramJson);
                 }
                 continue;
             }
 
             addList.add(paramJson);
-
-//            if(tableData != null && tableData.containsKey(id)){
-//                apiPath = "/api/resource/v1/person/single/update";
-//                apiUtil.doPost(apiPath, paramJson.toString(), null, header);
-//                continue;
-//            }
-//
-//            clientMap.put(i, id);
-//            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())){
-//                JsonObject array = resultJson.get("data").getAsJsonObject();
-//                idMap.put(id, array.get("personId").getAsString());
-//            }
         }
 
         String apiPath = "/api/resource/v1/person/single/add";
@@ -402,7 +388,7 @@ public class DataUtil {
                 Entity entity = Entity.create(tableName);
                 entity.set("send_data", paramJson.toString());
                 Entity where = Entity.create(tableName);
-                where.set("source_id", paramJson.get("personId").getAsString());
+                where.set("hikvision_id", paramJson.get("personId").getAsString());
                 SqlRunnerAdapter.db().dynamicUpdate(tableName, entity, where);
             }
         }

+ 101 - 0
src/main/java/com/xjrsoft/module/job/StudentFaceTask.java

@@ -0,0 +1,101 @@
+package com.xjrsoft.module.job;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
+import com.xjrsoft.module.hikvision.util.ApiUtil;
+import com.xjrsoft.module.hikvision.util.FaceImportUtil;
+import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
+import com.xjrsoft.module.personnel.service.IStundentFaceProcessService;
+import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 学生人脸定时同步程序
+ */
+@Component
+@Slf4j
+public class StudentFaceTask {
+    @Autowired
+    private IStundentFaceProcessService stundentFaceProcessService;
+
+    @Autowired
+    private HikvisionDataMapper hikvisionDataMapper;
+
+    @Autowired
+    private FaceImportMapper faceImportMapper;
+
+
+
+    @Async
+    @Scheduled(cron = "0 */20 * * * ?")
+    public void addSubmitRecord() {
+        String active = SpringUtil.getActiveProfile();
+        if (!"prod".equals(active)) {
+            log.info("非正式环境,无法执行数据推送");
+            return;
+        }
+        List<StundentFaceProcess> list = stundentFaceProcessService.list(
+                new QueryWrapper<StundentFaceProcess>().lambda()
+                        .eq(StundentFaceProcess::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(StundentFaceProcess::getExamStatus, 1)
+                        .like(StundentFaceProcess::getHikvisionResult, "{\"code\":\"0x")
+        );
+        ApiUtil apiUtil = new ApiUtil();
+        JsonParser parser = new JsonParser();
+
+        for (StundentFaceProcess dataObj : list) {
+            String fileUrl = faceImportMapper.GetStudentHikvisionImgById(dataObj.getId());
+
+            String apiUrl = "/api/resource/v1/person/condition/personInfo";
+            JsonObject paramsJson = new JsonObject();
+            paramsJson.addProperty("paramName", "personId");
+            JsonArray array = new JsonArray();
+            String hikvisionId = hikvisionDataMapper.getStudentHikvisionId(dataObj.getUserId());
+            if(hikvisionId == null){
+                hikvisionId = dataObj.getUserId().toString();
+            }
+            array.add(hikvisionId);
+            paramsJson.add("paramValue", array);
+            String personInfoRes = apiUtil.doPost(apiUrl, paramsJson.toString(), null);
+            if(personInfoRes == null){
+                continue;
+            }
+            JsonObject personInfoData = parser.parse(personInfoRes).getAsJsonObject();
+            String faceId = null;
+            if("0".equals(personInfoData.get("code").getAsString()) && "success".equals(personInfoData.get("msg").getAsString())){
+                JsonObject dataJson = personInfoData.get("data").getAsJsonObject();
+                if(dataJson.get("total").getAsInt() > 0){
+                    JsonArray personPhoto = dataJson.get("list").getAsJsonArray().get(0)
+                            .getAsJsonObject().get("personPhoto").getAsJsonArray();
+                    if(personPhoto.size() == 0){
+                        dataObj.setStatus(1);
+                        dataObj.setExamStatus(1);
+                        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);
+                        stundentFaceProcessService.updateById(dataObj);
+                    }
+                }
+            }
+        }
+
+    }
+}

+ 5 - 0
src/main/java/com/xjrsoft/module/student/dto/CadreDeptTreeDto.java

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.student.dto;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 
@@ -12,5 +13,9 @@ import lombok.Data;
 @Data
 public class CadreDeptTreeDto {
 
+    @ApiModelProperty("部门名称")
+    private String name;
 
+    @ApiModelProperty("部门编码")
+    private String code;
 }

+ 10 - 4
src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentAssessmentInspectionServiceImpl.java

@@ -241,10 +241,13 @@ public class BaseStudentAssessmentInspectionServiceImpl extends MPJBaseServiceIm
                         .selectAs(XjrUser::getName, CalssQuantitativeAssessmentPageVo::getHeadTeacherName)
                         .selectAs(BaseClass::getId, CalssQuantitativeAssessmentPageVo::getClassId)
                         .selectAs(BaseClass::getName, CalssQuantitativeAssessmentPageVo::getClassName)
-                        .selectAs(BaseClassMajorSet::getTotalStudent, CalssQuantitativeAssessmentPageVo::getStudentNum)
+                        .select("SELECT COUNT(DISTINCT(a1.id)) as student_num FROM xjr_user a1" +
+                                " LEFT JOIN base_student_school_roll a2 ON a1.id = a2.user_id" +
+                                " WHERE a1.delete_mark = 0 AND a2.delete_mark = 0" +
+                                " AND a2.class_id = t1.id" +
+                                " AND a2.archives_status = 'FB2901' ")
                         .selectAs(BaseClass::getIsGraduate, CalssQuantitativeAssessmentPageVo::getClassStatus)
                         .leftJoin(XjrUser.class, XjrUser::getId, BaseClass::getTeacherId)
-                        .leftJoin(BaseClassMajorSet.class, BaseClassMajorSet::getClassId, BaseClass::getId)
                         .eq(dto.getGradeId() != null, BaseClass::getGradeId, dto.getGradeId())
                         .eq(dto.getClassId() != null, BaseClass::getId, dto.getClassId())
                         .eq(dto.getClassStatus() != null, BaseClass::getIsGraduate, dto.getClassStatus())
@@ -447,10 +450,13 @@ public class BaseStudentAssessmentInspectionServiceImpl extends MPJBaseServiceIm
                 .selectAs(XjrUser::getName, CalssQuantitativeAssessmentPageVo::getHeadTeacherName)
                 .selectAs(BaseClass::getId, CalssQuantitativeAssessmentPageVo::getClassId)
                 .selectAs(BaseClass::getName, CalssQuantitativeAssessmentPageVo::getClassName)
-                .selectAs(BaseClassMajorSet::getTotalStudent, CalssQuantitativeAssessmentPageVo::getStudentNum)
+                .select("SELECT COUNT(DISTINCT(a1.id)) as student_num FROM xjr_user a1" +
+                        " LEFT JOIN base_student_school_roll a2 ON a1.id = a2.user_id" +
+                        " WHERE a1.delete_mark = 0 AND a2.delete_mark = 0" +
+                        " AND a2.class_id = t1.id" +
+                        " AND a2.archives_status = 'FB2901' ")
                 .selectAs(BaseClass::getIsGraduate, CalssQuantitativeAssessmentPageVo::getClassStatus)
                 .leftJoin(XjrUser.class, XjrUser::getId, BaseClass::getTeacherId)
-                .leftJoin(BaseClassMajorSet.class, BaseClassMajorSet::getClassId, BaseClass::getId)
                 .eq(dto.getGradeId() != null, BaseClass::getGradeId, dto.getGradeId())
                 .eq(dto.getClassId() != null, BaseClass::getId, dto.getClassId())
                 .eq(dto.getClassStatus() != null, BaseClass::getIsGraduate, dto.getClassStatus())

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

@@ -432,6 +432,7 @@ public class StudentReportRecordServiceImpl extends MPJBaseServiceImpl<StudentRe
                     if(student.getWeight() != null){
                         setWeight(student.getWeight().doubleValue());
                     }
+                    setIsNormal(1);
                 }};
                 studentService.save(baseStudent);
 
@@ -445,7 +446,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.setDeleteMark(DeleteMark.NODELETE.getCode());
                 schoolRoll.setEnrollType(baseClass.getEnrollType());
                 schoolRoll.setStudentType(student.getSource());
                 schoolRoll.setGradeId(baseClass.getGradeId());

+ 1 - 7
src/main/resources/mapper/base/BaseClassCourse.xml

@@ -17,17 +17,11 @@
         SUM(t7.discount_price) AS count
         FROM base_class_admin_course t
         inner JOIN base_class t9 ON t9.id = t.class_id
-
         LEFT JOIN xjr_user t1 ON t1.id = t9.teacher_id
-
-        LEFT JOIN base_class_major_set t2 ON t2.class_id = t.class_id
-        LEFT JOIN base_major_set t3 ON t3.id = t2.major_set_id
-
+        LEFT JOIN base_major_set t3 ON t3.id = t9.major_set_id
         LEFT JOIN xjr_department t4 ON t4.id = t9.org_id
-
         LEFT JOIN base_class_course t5 ON t5.class_id = t.id and t5.delete_mark = 0
         LEFT JOIN base_course_subject t6 ON t6.id = t5.course_id
-
         LEFT JOIN textbook t7 ON t7.id = t5.textbook_id
         WHERE t.delete_mark = 0
         <if test="dto.semester != null">

+ 1 - 2
src/main/resources/mapper/courseTable/CourseTable.xml

@@ -8,7 +8,6 @@
         LEFT JOIN base_classroom t3 ON t1.site_id = t3.id
         LEFT JOIN base_office_build t4 ON t3.office_build_id = t4.id
         LEFT JOIN base_class t5 ON t1.class_id = t5.id
-        LEFT JOIN base_class_major_set t7 ON t7.class_id = t5.id
         LEFT JOIN base_grade t6 ON t5.grade_id = t6.id
         where t1.status = 1
         <if test="dto.semesterId != null">
@@ -29,7 +28,7 @@
                 and t5.id = #{dto.classId}
             </if>
             <if test="dto.majorSetId != null">
-                and t7.major_set_id = #{dto.majorSetId}
+                and t5.major_set_id = #{dto.majorSetId}
             </if>
         </if>
         <if test="dto.startDate != null and dto.endDate != null">

+ 2 - 3
src/main/resources/mapper/evaluate/EvaluateManageMapper.xml

@@ -138,13 +138,12 @@
             left join evaluate_template t7 on t7.id = t1.evaluate_template_id
             left join xjr_dictionary_detail t8 on t8.code = t7.evaluate_type
             left join base_classroom t9 on t9.id = t5.classroom_id
-            left join base_class_major_set t10 on t10.class_id = t5.id
-            left join base_major_set t11 on t11.id = t10.major_set_id
+            left join base_major_set t11 on t11.id = t5.major_set_id
         where t.create_date  like concat('%', #{dto.todayDate}, '%')
           and t2.user_id = #{dto.loginUserId}
           and t.evaluate_manage_id = #{dto.evaluateManageId}
         <if test="dto.majorId != null and dto.majorId > 0">
-            and t10.major_id = #{dto.majorId}
+            and t5.major_set_id = #{dto.majorId}
         </if>
         <if test="dto.officeBuildId != null and dto.officeBuildId > 0">
             and t8.officeBuildId = #{dto.officeBuildId}

+ 6 - 0
src/main/resources/mapper/student/CadreDeptMapper.xml

@@ -11,6 +11,12 @@
         FROM cadre_dept t
                  LEFT JOIN xjr_user t1 ON (t1.id = t.instructor_user_id)
         WHERE t.delete_mark = 0
+        <if test="dto.name != null and dto.name !=''">
+            and t.name like concat('%', #{dto.name},'%')
+        </if>
+        <if test="dto.code != null and dto.code !=''">
+            and t.code like concat('%', #{dto.code},'%')
+        </if>
         ORDER BY t.id DESC
     </select>
 </mapper>

+ 7 - 7
src/test/java/com/xjrsoft/module/job/HikvisionBaseDataTaskTest2.java

@@ -100,13 +100,13 @@ class HikvisionBaseDataTaskTest2 {
 //            }
 
 
-            tableName = "base_class";
-            Map<String, String> baseClass = dataMap.get(tableName);
-            try {
-                dataUtil.insertClass(tableName, baseClass);
-            } catch (Exception e) {
-                System.out.println(e);
-            }
+//            tableName = "base_class";
+//            Map<String, String> baseClass = dataMap.get(tableName);
+//            try {
+//                dataUtil.insertClass(tableName, baseClass);
+//            } catch (Exception e) {
+//                System.out.println(e);
+//            }
 
 
             tableName = "base_student";

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

@@ -46,7 +46,7 @@ class ImportStudentFaceNodeTest {
                 "AND t1.id IN (" +
                 " SELECT user_id FROM stundent_face_process WHERE create_date > '2025-05-05 0:00:00'\n" +
                 "AND hikvision_result LIKE '%{\"code\":\"0x%'\n" +
-                "AND exam_status = 1" +
+                "AND exam_status = 1 AND delete_mark = 0" +
                 ")";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
 
@@ -74,7 +74,7 @@ class ImportStudentFaceNodeTest {
             JsonArray array = new JsonArray();
             String hikvisionId = hikvisionDataMapper.getStudentHikvisionId(dataObj.getUserId());
             if(hikvisionId == null){
-                continue;
+                hikvisionId = dataObj.getUserId().toString();
             }
             array.add(hikvisionId);
             paramsJson.add("paramValue", array);

+ 16 - 0
src/test/java/com/xjrsoft/module/schedule/util/DataUtilTest.java

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.schedule.util;
 
+import com.google.gson.JsonObject;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
@@ -19,5 +20,20 @@ class DataUtilTest {
         String sign = ScheduleUtil.createSign(timestamp);
 
         System.out.println("sign --> " + sign);
+
+        JsonObject paramJson = new JsonObject();
+        paramJson.addProperty("clientId", 1);
+        paramJson.addProperty("personId", 1);
+        paramJson.addProperty("personName", 1);
+        paramJson.addProperty("orgIndexCode", 1);
+        paramJson.addProperty("phoneNo", 1);
+        paramJson.addProperty("jobNo", 1);
+        paramJson.addProperty("birthday", 1);
+        paramJson.addProperty("personType", 2);
+
+        if(!paramJson.toString().equals(null)){
+            System.out.println(11);
+        }
+
     }
 }