Browse Source

Merge branch 'pre'

dzx 1 year ago
parent
commit
057ec0ba8b
78 changed files with 3500 additions and 633 deletions
  1. 34 0
      src/main/java/com/xjrsoft/common/enums/EnrollTypeEnum.java
  2. 100 0
      src/main/java/com/xjrsoft/common/utils/SqlRunnerAdapterUtil.java
  3. 88 35
      src/main/java/com/xjrsoft/module/attendance/controller/TeacherStatisticsController.java
  4. 3 0
      src/main/java/com/xjrsoft/module/attendance/mapper/AttendanceRuleDetailsMapper.java
  5. 2 0
      src/main/java/com/xjrsoft/module/attendance/service/IAttendanceRuleCategoryService.java
  6. 15 0
      src/main/java/com/xjrsoft/module/attendance/service/impl/AttendanceRuleCategoryServiceImpl.java
  7. 53 48
      src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java
  8. 8 8
      src/main/java/com/xjrsoft/module/hikvision/util/OutInRecordUtil.java
  9. 13 15
      src/main/java/com/xjrsoft/module/job/HikvisionBaseDataTask.java
  10. 1 4
      src/main/java/com/xjrsoft/module/job/InsertOutInRecordTask.java
  11. 17 19
      src/main/java/com/xjrsoft/module/job/JianyuekbBaseDataTask.java
  12. 17 18
      src/main/java/com/xjrsoft/module/job/JianyuekbScheduleTask.java
  13. 3 4
      src/main/java/com/xjrsoft/module/liteflow/node/StudentAdmissionApplicationNode.java
  14. 60 56
      src/main/java/com/xjrsoft/module/schedule/util/DataUtil.java
  15. 194 0
      src/main/java/com/xjrsoft/module/student/controller/EnrollmentPlanController.java
  16. 114 0
      src/main/java/com/xjrsoft/module/student/controller/EnrollmentPlanGraduateSchoolController.java
  17. 134 0
      src/main/java/com/xjrsoft/module/student/controller/EnrollmentPlanMajorSetController.java
  18. 76 36
      src/main/java/com/xjrsoft/module/student/controller/PbCseFeeobjupdateController.java
  19. 64 0
      src/main/java/com/xjrsoft/module/student/dto/AddEnrollmentPlanDto.java
  20. 48 0
      src/main/java/com/xjrsoft/module/student/dto/AddEnrollmentPlanGraduateSchoolDto.java
  21. 48 0
      src/main/java/com/xjrsoft/module/student/dto/AddEnrollmentPlanMajorSetDto.java
  22. 31 0
      src/main/java/com/xjrsoft/module/student/dto/BaseGraduateSchoolOfEnrollmentPlanListDto.java
  23. 35 0
      src/main/java/com/xjrsoft/module/student/dto/BaseMajorSetOfEnrollmentPlanPageDto.java
  24. 30 0
      src/main/java/com/xjrsoft/module/student/dto/EnrollmentPlanGraduateSchoolPageDto.java
  25. 39 0
      src/main/java/com/xjrsoft/module/student/dto/EnrollmentPlanMajorSetPageDto.java
  26. 36 0
      src/main/java/com/xjrsoft/module/student/dto/EnrollmentPlanPageDto.java
  27. 18 1
      src/main/java/com/xjrsoft/module/student/dto/PbCseFeeobjupdatePageDto.java
  28. 25 0
      src/main/java/com/xjrsoft/module/student/dto/PreviewEnrollmentPlanDto.java
  29. 32 0
      src/main/java/com/xjrsoft/module/student/dto/UpdateEnrollmentPlanDto.java
  30. 38 0
      src/main/java/com/xjrsoft/module/student/dto/UpdateEnrollmentPlanGraduateSchoolDto.java
  31. 43 0
      src/main/java/com/xjrsoft/module/student/dto/UpdateEnrollmentPlanMajorSetDto.java
  32. 113 0
      src/main/java/com/xjrsoft/module/student/entity/EnrollmentPlan.java
  33. 97 0
      src/main/java/com/xjrsoft/module/student/entity/EnrollmentPlanGraduateSchool.java
  34. 103 0
      src/main/java/com/xjrsoft/module/student/entity/EnrollmentPlanMajorSet.java
  35. 4 0
      src/main/java/com/xjrsoft/module/student/entity/StudentAdmissionApplication.java
  36. 17 0
      src/main/java/com/xjrsoft/module/student/mapper/EnrollmentPlanGraduateSchoolMapper.java
  37. 27 0
      src/main/java/com/xjrsoft/module/student/mapper/EnrollmentPlanMajorSetMapper.java
  38. 17 0
      src/main/java/com/xjrsoft/module/student/mapper/EnrollmentPlanMapper.java
  39. 17 0
      src/main/java/com/xjrsoft/module/student/service/IEnrollmentPlanGraduateSchoolService.java
  40. 29 0
      src/main/java/com/xjrsoft/module/student/service/IEnrollmentPlanMajorSetService.java
  41. 17 0
      src/main/java/com/xjrsoft/module/student/service/IEnrollmentPlanService.java
  42. 3 0
      src/main/java/com/xjrsoft/module/student/service/IStudentAdmissionApplicationService.java
  43. 25 0
      src/main/java/com/xjrsoft/module/student/service/impl/EnrollmentPlanGraduateSchoolServiceImpl.java
  44. 130 0
      src/main/java/com/xjrsoft/module/student/service/impl/EnrollmentPlanMajorSetServiceImpl.java
  45. 25 0
      src/main/java/com/xjrsoft/module/student/service/impl/EnrollmentPlanServiceImpl.java
  46. 86 3
      src/main/java/com/xjrsoft/module/student/service/impl/StudentAdmissionApplicationServiceImpl.java
  47. 30 0
      src/main/java/com/xjrsoft/module/student/vo/BaseGraduateSchoolOfEnrollmentPlanListVo.java
  48. 49 0
      src/main/java/com/xjrsoft/module/student/vo/BaseMajorSetOfEnrollmentPlanPageVo.java
  49. 49 0
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanGraduateSchoolPageVo.java
  50. 49 0
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanGraduateSchoolVo.java
  51. 76 0
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanMajorSetPageVo.java
  52. 54 0
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanMajorSetVo.java
  53. 87 0
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanPageVo.java
  54. 64 0
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanVo.java
  55. 31 0
      src/main/java/com/xjrsoft/module/student/vo/GradeEnrolltypeTreeVo.java
  56. 30 30
      src/main/java/com/xjrsoft/module/student/vo/PbCseFeeobjupdatePageVo.java
  57. 41 0
      src/main/java/com/xjrsoft/module/student/vo/PreviewEnrollmentPlanListVo.java
  58. 60 0
      src/main/java/com/xjrsoft/module/student/vo/PreviewEnrollmentPlanVo.java
  59. 2 0
      src/main/java/com/xjrsoft/module/teacher/mapper/WfTeacherleaveMapper.java
  60. 5 0
      src/main/java/com/xjrsoft/module/teacher/service/IWfHeadTeacherLeaveService.java
  61. 2 0
      src/main/java/com/xjrsoft/module/teacher/service/IWfTeacherleaveService.java
  62. 24 0
      src/main/java/com/xjrsoft/module/teacher/service/impl/WfHeadTeacherLeaveServiceImpl.java
  63. 5 0
      src/main/java/com/xjrsoft/module/teacher/service/impl/WfTeacherleaveServiceImpl.java
  64. 3 1
      src/main/java/com/xjrsoft/module/textbook/controller/WfTextbookSubscriptionController.java
  65. 1 1
      src/main/java/com/xjrsoft/module/textbook/service/impl/WfTextbookClaimServiceImpl.java
  66. 1 1
      src/main/java/com/xjrsoft/module/textbook/vo/TextbookSubscriptionExportQueryListVo.java
  67. 16 0
      src/main/resources/mapper/attendance/AttendanceRuleDetailsMapper.xml
  68. 59 0
      src/main/resources/mapper/student/EnrollmentPlanMajorSetMapper.xml
  69. 1 0
      src/main/resources/mapper/teacher/WfHeadTeacherLeaveMapper.xml
  70. 12 0
      src/main/resources/mapper/teacher/WfTeacherleaveMapper.xml
  71. 9 20
      src/main/resources/mapper/textbook/TextbookMapper.xml
  72. 52 0
      src/main/resources/sqlScript/20240613_sql.sql
  73. 4 3
      src/test/java/com/xjrsoft/module/job/AttendanceMessageTaskTest.java
  74. 56 23
      src/test/java/com/xjrsoft/module/job/HikvisionBaseDataTaskTest.java
  75. 376 307
      src/test/java/com/xjrsoft/module/job/JianyuekbBaseDataTaskTest.java
  76. 5 0
      src/test/java/com/xjrsoft/module/personnel/controller/StundentFaceProcessControllerTest.java
  77. 73 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java
  78. 45 0
      src/test/java/com/xjrsoft/xjrsoftboot/StringTest.java

+ 34 - 0
src/main/java/com/xjrsoft/common/enums/EnrollTypeEnum.java

@@ -0,0 +1,34 @@
+package com.xjrsoft.common.enums;
+
+/**
+ * @description: 招生类型
+ * @Author: SZS
+ * @Date: 2024/01/30
+ */
+public enum EnrollTypeEnum {
+
+    /**
+     * 春季招生
+     */
+    SPRING_ENROLLMENT("FB2701", "春季招生"),
+    /**
+     *  秋季招生
+     */
+    AUTUMN_ENROLLMENT("FB2702", "秋季招生");
+
+    final String code;
+    final String value;
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    EnrollTypeEnum(final String code, final String message) {
+        this.code = code;
+        this.value = message;
+    }
+}

+ 100 - 0
src/main/java/com/xjrsoft/common/utils/SqlRunnerAdapterUtil.java

@@ -0,0 +1,100 @@
+package com.xjrsoft.common.utils;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author dzx
+ * @date 2024/6/14
+ */
+public class SqlRunnerAdapterUtil {
+    /**
+     * 将下划线转换为驼峰
+     * @param input
+     * @return
+     */
+    public static String underscoreToCamel(String input) {
+        if (input == null) {
+            return input;
+        }
+
+        StringBuilder builder = new StringBuilder();
+        boolean nextUpperCase = false;
+
+        for (char c : input.toCharArray()) {
+            if (c == '_') {
+                nextUpperCase = true;
+            } else {
+                if (nextUpperCase) {
+                    builder.append(Character.toUpperCase(c));
+                    nextUpperCase = false;
+                } else {
+                    builder.append(Character.toLowerCase(c));
+                }
+            }
+        }
+
+        return builder.toString();
+    }
+
+    /**
+     * 将驼峰转下划线
+     * @param camelCaseStr
+     * @return
+     */
+    public static String toUnderScoreCase(String camelCaseStr) {
+        StringBuilder builder = new StringBuilder();
+        for (int i = 0; i < camelCaseStr.length(); i++) {
+            char c = camelCaseStr.charAt(i);
+            if (Character.isUpperCase(c)) {
+                if (i > 0) {
+                    builder.append('_');
+                }
+                builder.append(Character.toLowerCase(c));
+            } else {
+                builder.append(c);
+            }
+        }
+        return builder.toString();
+    }
+
+
+    public static <T> T convertMapToEntity(Map<String, Object> map, Class<T> entityClass) {
+        T entity;
+        try {
+            entity = entityClass.newInstance();
+            Field[] fields = entityClass.getDeclaredFields();
+            for (Field field : fields) {
+                String fieldName = field.getName();
+                String mapKey = toUnderScoreCase(fieldName);
+                if (map.containsKey(mapKey)) {
+                    field.setAccessible(true);
+                    field.set(entity, map.get(mapKey));
+                }
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("Error converting map to entity", e);
+        }
+        return entity;
+    }
+
+    public static String[] convertMapToStringArray(Map<String, Object> map) {
+        List<String> dataList = new ArrayList<>();
+        for (Object value : map.values()) {
+            dataList.add(value == null ? "" : value.toString());
+        }
+
+        return dataList.toArray(new String[dataList.size()]);
+    }
+
+    public static Integer[] convertMapToIntegerArray(Map<String, Object> map) {
+        List<Integer> dataList = new ArrayList<>();
+        for (Object value : map.values()) {
+            dataList.add(value == null ? null : Integer.parseInt(value.toString()));
+        }
+
+        return dataList.toArray(new Integer[dataList.size()]);
+    }
+}

+ 88 - 35
src/main/java/com/xjrsoft/module/attendance/controller/TeacherStatisticsController.java

@@ -9,8 +9,10 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.attendance.dto.TeacherDetailsDto;
-import com.xjrsoft.module.attendance.vo.ClassStatisticsVo;
+import com.xjrsoft.module.attendance.service.IAttendanceRuleCategoryService;
+import com.xjrsoft.module.attendance.vo.AttendanceRuleDetailsUserVo;
 import com.xjrsoft.module.attendance.vo.TeacherStatisticsPageVo;
 import com.xjrsoft.module.holiday.entity.HolidayDate;
 import com.xjrsoft.module.holiday.service.IHolidayDateService;
@@ -21,7 +23,10 @@ import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.outint.entity.TeacherOutInRecord;
 import com.xjrsoft.module.outint.service.ITeacherOutInRecordService;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
+import com.xjrsoft.module.teacher.entity.WfHeadTeacherLeave;
 import com.xjrsoft.module.teacher.entity.WfTeacherleave;
+import com.xjrsoft.module.teacher.entity.XjrUser;
+import com.xjrsoft.module.teacher.service.IWfHeadTeacherLeaveService;
 import com.xjrsoft.module.teacher.service.IWfTeacherleaveService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -34,9 +39,9 @@ import javax.validation.Valid;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
 * @title: 教师考勤
@@ -55,7 +60,8 @@ public class TeacherStatisticsController {
     private final ITeacherOutInRecordService teacherOutInRecordService;
     private final IWfTeacherleaveService wfTeacherleaveService;
     private final IHolidayDateService holidayDateService;
-
+    private final IWfHeadTeacherLeaveService headTeacherLeaveService;
+    private final IAttendanceRuleCategoryService attendanceRuleCategoryService;
 
     @GetMapping(value = "/teacher-details")
     @ApiOperation(value="教师考勤")
@@ -86,48 +92,95 @@ public class TeacherStatisticsController {
                 return RT.ok(ConventPage.getPageOutput(voIPage, TeacherStatisticsPageVo.class));
             }
 
-            LocalDateTime startTime, endTime;
-
-            if(dto.getTimePeriod() == 1){
-                startTime = queryDate.atTime(5, 0, 0);
-                endTime = queryDate.atTime(12, 0, 0);
-            }else if(dto.getTimePeriod() == 2){
-                startTime = queryDate.atTime(12, 0, 0);
-                endTime = queryDate.atTime(18, 0, 0);
-            }else{
-                startTime = queryDate.atTime(0, 0, 0);
-                endTime = queryDate.atTime(23, 59, 59);
-            }
+            List<Long> userIds = voIPage.getRecords().stream().map(TeacherStatisticsPageVo::getUserId).collect(Collectors.toList());
+            Map<Long, AttendanceRuleDetailsUserVo> teacherTodyRuleByUserId = attendanceRuleCategoryService.getTeacherTodyRuleByUserId(userIds);
+            
+//            //查询当前时间段存在请假的教师
+//            Map<Long, WfTeacherleave> leaveList = wfTeacherleaveService.getLeaveList(startTime, endTime);
+//
+//            Map<Long, WfHeadTeacherLeave> teacherLeaveMap = headTeacherLeaveService.getLeaveList(startTime, endTime);
+//            //查询进入记录
+//            List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.list(
+//                    new QueryWrapper<TeacherOutInRecord>().lambda()
+//                            .between(TeacherOutInRecord::getRecordTime, startTime, endTime)
+//                            .eq(TeacherOutInRecord::getStatus, 1)
+//                            .orderByAsc(TeacherOutInRecord::getRecordTime)
+//            );
+//            Map<Long, TeacherOutInRecord> outInMap = new HashMap<>();
+//            for (TeacherOutInRecord inRecord : outInRecords) {
+//                if(outInMap.containsKey(inRecord.getUserId())){
+//                    continue;
+//                }
+//                outInMap.put(inRecord.getUserId(), inRecord);
+//            }
+            for (TeacherStatisticsPageVo record : voIPage.getRecords()) {
+                LocalDateTime startTime, endTime;
+                AttendanceRuleDetailsUserVo detailsUserVo = teacherTodyRuleByUserId.get(record.getUserId());
+                if(dto.getTimePeriod() == 1){
+                    startTime = queryDate.atTime(5, 0, 0);
+                    if(detailsUserVo != null && detailsUserVo.getAmStartTime() != null){
+                        startTime = queryDate.atTime(detailsUserVo.getAmStartTime());
+                    }
+                    endTime = queryDate.atTime(12, 0, 0);
+                    if(detailsUserVo != null && detailsUserVo.getAmEndTime() != null){
+                        endTime = queryDate.atTime(detailsUserVo.getAmEndTime());
+                    }
+                }else if(dto.getTimePeriod() == 2){
+                    startTime = queryDate.atTime(12, 0, 0);
+                    if(detailsUserVo != null && detailsUserVo.getPmStartTime() != null){
+                        startTime = queryDate.atTime(detailsUserVo.getPmStartTime());
+                    }
+                    endTime = queryDate.atTime(18, 0, 0);
+                    if(detailsUserVo != null && detailsUserVo.getPmEndTime() != null){
+                        endTime = queryDate.atTime(detailsUserVo.getPmEndTime());
+                    }
+                }else{
+                    startTime = queryDate.atTime(0, 0, 0);
+                    if(detailsUserVo != null && detailsUserVo.getEveningStartTime() != null){
+                        startTime = queryDate.atTime(detailsUserVo.getEveningStartTime());
+                    }
+                    endTime = queryDate.atTime(23, 59, 59);
+                    if(detailsUserVo != null && detailsUserVo.getEveningEndTime() != null){
+                        endTime = queryDate.atTime(detailsUserVo.getEveningEndTime());
+                    }
+                }
+                
+                WfTeacherleave studentLeave = wfTeacherleaveService.getLeaveByUserId(startTime, endTime, record.getUserId());
+                if(studentLeave != null){
+                    record.setStatus(studentLeave.getLeaveType());
+                    continue;
+                }
 
-            //查询当前时间段存在请假的教师
-            Map<Long, WfTeacherleave> leaveList = wfTeacherleaveService.getLeaveList(startTime, endTime);
-            //查询进入记录
-            List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.list(
+                WfHeadTeacherLeave teacherLeave = headTeacherLeaveService.selectJoinOne(WfHeadTeacherLeave.class,
+                        new MPJLambdaWrapper<WfHeadTeacherLeave>()
+                                .select(WfHeadTeacherLeave.class, x -> VoToColumnUtil.fieldsToColumns(WfHeadTeacherLeave.class).contains(x.getProperty()))
+                                .innerJoin(XjrUser.class, XjrUser::getId, WfHeadTeacherLeave::getApplicantUserId)
+                                .eq(WfHeadTeacherLeave::getStatus, 1)
+                                .eq(WfHeadTeacherLeave::getApplicantUserId, record.getUserId())
+                                .between(WfHeadTeacherLeave::getStartTime, startTime, endTime)
+                );
+                if(teacherLeave != null){
+                    record.setStatus(teacherLeave.getLeaveReason());
+                    continue;
+                }
+                List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.list(
                     new QueryWrapper<TeacherOutInRecord>().lambda()
                             .between(TeacherOutInRecord::getRecordTime, startTime, endTime)
                             .eq(TeacherOutInRecord::getStatus, 1)
+                            .eq(TeacherOutInRecord::getUserId, record.getUserId())
                             .orderByAsc(TeacherOutInRecord::getRecordTime)
-            );
-            Map<Long, TeacherOutInRecord> outInMap = new HashMap<>();
-            for (TeacherOutInRecord inRecord : outInRecords) {
-                if(outInMap.containsKey(inRecord.getUserId())){
-                    continue;
-                }
-                outInMap.put(inRecord.getUserId(), inRecord);
-            }
-            for (TeacherStatisticsPageVo record : voIPage.getRecords()) {
-                WfTeacherleave studentLeave = leaveList.get(record.getUserId());
-                if(studentLeave != null){
-                    record.setStatus(studentLeave.getLeaveType());
-                }else{
-                    TeacherOutInRecord outInRecord = outInMap.get(record.getUserId());
+                );
+                if(!outInRecords.isEmpty()){
+                    TeacherOutInRecord outInRecord = outInRecords.get(0);
                     if(outInRecord != null){
                         record.setRecordTime(outInRecord.getRecordTime());
                         record.setStatus(outInRecord.getAttendanceStatus());
-                    }else{
-                        record.setStatus("缺勤");
                     }
                 }
+                if(record.getStatus() == null){
+                    record.setStatus("缺勤");
+                }
+
             }
         }
         PageOutput<TeacherStatisticsPageVo> pageOutput = ConventPage.getPageOutput(voIPage, TeacherStatisticsPageVo.class);

+ 3 - 0
src/main/java/com/xjrsoft/module/attendance/mapper/AttendanceRuleDetailsMapper.java

@@ -22,4 +22,7 @@ public interface AttendanceRuleDetailsMapper extends MPJBaseMapper<AttendanceRul
 
     List<AttendanceRuleDetailsUserVo> getAllStudentTodyRule(@Param("dayOfWeek") String dayOfWeek);
 
+
+    List<AttendanceRuleDetailsUserVo> getTodayRulesByUserId(@Param("dayOfWeek") String dayOfWeek, @Param("userIds")List<Long> userIds);
+
 }

+ 2 - 0
src/main/java/com/xjrsoft/module/attendance/service/IAttendanceRuleCategoryService.java

@@ -55,4 +55,6 @@ public interface IAttendanceRuleCategoryService extends MPJBaseService<Attendanc
 
     Map<String, Map<Long, AttendanceRuleDetailsUserVo>> getAllStudentTodyRule(List<String> dayOfWeek);
 
+    Map<Long, AttendanceRuleDetailsUserVo> getTeacherTodyRuleByUserId(List<Long> teacherIds);
+
 }

+ 15 - 0
src/main/java/com/xjrsoft/module/attendance/service/impl/AttendanceRuleCategoryServiceImpl.java

@@ -478,4 +478,19 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
 
         return result;
     }
+
+    /**
+     * 查询教师的当前的考勤规则
+     */
+    @Override
+    public Map<Long, AttendanceRuleDetailsUserVo> getTeacherTodyRuleByUserId(List<Long> teacherIds) {
+        LocalDateTime now = LocalDateTime.now();
+        DayOfWeek dayOfWeek = now.getDayOfWeek();
+        List<AttendanceRuleDetailsUserVo> todayRulesByUserId = detailsMapper.getTodayRulesByUserId(dayOfWeek.name(), teacherIds);
+        Map<Long, AttendanceRuleDetailsUserVo> dataMap = new HashMap<>();
+        for (AttendanceRuleDetailsUserVo userVo : todayRulesByUserId) {
+            dataMap.put(userVo.getUserId(), userVo);
+        }
+        return dataMap;
+    }
 }

+ 53 - 48
src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java

@@ -1,11 +1,11 @@
 package com.xjrsoft.module.hikvision.util;
 
-import cn.hutool.db.Db;
-import com.alibaba.druid.sql.visitor.functions.Trim;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
+import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.organization.entity.Department;
@@ -14,12 +14,12 @@ import com.xjrsoft.module.system.entity.DictionaryDetail;
 import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
 import lombok.extern.slf4j.Slf4j;
 import lombok.var;
-import org.apache.velocity.runtime.directive.Foreach;
-import org.springframework.beans.factory.annotation.Autowired;
 
-import java.sql.SQLException;
-import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * @author dzx
@@ -31,16 +31,17 @@ public class DataUtil {
      * 同步组织数据
      * 只有批量添加接口,需要一个层级一个层级的添加
      */
-    public Map<String, String> insertDepartment(Db db, String tableName, Map<String, String> tableData) throws Exception {
+    public Map<String, String> insertDepartment(String tableName, Map<String, String> tableData){
         String sql = "SELECT DISTINCT LENGTH(hierarchy) FROM " + tableName + " WHERE delete_mark = 0";
-        List<Integer[]> list = db.query(sql, Integer[].class);
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, Integer[].class);
         Set<Integer> levelSet = new HashSet<>();
-        for (Integer[] strings : list) {
-            levelSet.add(strings[0]);
+        for (Map<String, Object> strings : list) {
+            Integer[] strings1 = SqlRunnerAdapterUtil.convertMapToIntegerArray(strings);
+            levelSet.add(strings1[0]);
         }
 
         sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 ORDER BY LENGTH(hierarchy)";
-        List<Department> dataList = db.query(sql, Department.class);
+        List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, Department.class);
         String apiPath = "/api/resource/v1/org/batch/add";
         Map<String, String> idMap = new HashMap<>();
         JsonParser jsonParser = new JsonParser();
@@ -49,7 +50,8 @@ public class DataUtil {
         Map<String, String> idCodeMap = new HashMap<>();
         for (Integer level : levelSet) {
             JsonArray dataArray = new JsonArray();
-            for (Department department : dataList) {
+            for (Map<String, Object> map : dataList) {
+                Department department = SqlRunnerAdapterUtil.convertMapToEntity(map, Department.class);
                 if(tableData != null && tableData.containsKey(department.getId().toString())){
                     continue;
                 }
@@ -80,18 +82,18 @@ public class DataUtil {
             }
         }
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
         return idMap;
     }
 
     /**
      * 推送学生班级信息
      */
-    public Map<String, String> insertClass(Db db, String tableName, Map<String, String> tableData) throws SQLException {
+    public Map<String, String> insertClass(String tableName, Map<String, String> tableData) {
         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);
+        List<Map<String, Object>> detailList = SqlRunnerAdapter.db().selectList(sql, DictionaryDetail.class);
 
         String apiPath = "/api/resource/v1/org/batch/add";
         JsonParser jsonParser = new JsonParser();
@@ -102,7 +104,8 @@ public class DataUtil {
 
         Set<String> stduyStatus = new HashSet<>();
 
-        for (DictionaryDetail dict : detailList) {
+        for (Map<String, Object> map : detailList) {
+            DictionaryDetail dict = SqlRunnerAdapterUtil.convertMapToEntity(map, DictionaryDetail.class);
             if(tableData != null && tableData.containsKey(dict.getId().toString())){
                 stduyStatus.add(dict.getId().toString());
                 continue;
@@ -131,11 +134,12 @@ public class DataUtil {
         }
         //推送班级类型
         sql = "SELECT * FROM xjr_dictionary_detail WHERE delete_mark = 0 AND item_id = 2023000000000000039";
-        detailList = db.query(sql, DictionaryDetail.class);
+        detailList = SqlRunnerAdapter.db().selectList(sql, DictionaryDetail.class);
         dataArray = new JsonArray();
         Set<String> classTypeSet = new HashSet<>();
         for (String status : stduyStatus) {
-            for (DictionaryDetail dict : detailList) {
+            for (Map<String, Object> map : detailList) {
+                DictionaryDetail dict = SqlRunnerAdapterUtil.convertMapToEntity(map, DictionaryDetail.class);
                 if(tableData != null && tableData.containsKey(dict.getCode())){
                     classTypeSet.add(dict.getCode());
                     continue;
@@ -166,11 +170,12 @@ public class DataUtil {
 
         //推送年级
         sql = "SELECT * FROM base_grade WHERE delete_mark = 0 AND STATUS = 1";
-        List<BaseGrade> gradeList = db.query(sql, BaseGrade.class);
+        List<Map<String, Object>> gradeList = SqlRunnerAdapter.db().selectList(sql, BaseGrade.class);
         Map<Long, String> gradeNameMap = new HashMap<>();
         dataArray = new JsonArray();
         for (String classType : classTypeSet) {
-            for (BaseGrade baseGrade : gradeList) {
+            for (Map<String, Object> gradeMap : gradeList) {
+                BaseGrade baseGrade = SqlRunnerAdapterUtil.convertMapToEntity(gradeMap, BaseGrade.class);
                 gradeNameMap.put(baseGrade.getId(), baseGrade.getName().replaceAll("级", ""));
                 if(tableData != null && tableData.containsKey(baseGrade.getId().toString())){
                     continue;
@@ -202,12 +207,13 @@ public class DataUtil {
 
         //推送班级
         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);
+        List<Map<String, Object>> classList = SqlRunnerAdapter.db().selectList(sql, BaseClass.class);
 
         dataArray = new JsonArray();
         for (String grade : gradeSet) {
             String[] gradeGroup = grade.split("-");
-            for (BaseClass baseClass : classList) {
+            for (Map<String, Object> baseClassMap : classList) {
+                BaseClass baseClass = SqlRunnerAdapterUtil.convertMapToEntity(baseClassMap, BaseClass.class);
                 if(tableData != null && tableData.containsKey(baseClass.getId().toString())){
                     continue;
                 }
@@ -243,19 +249,19 @@ public class DataUtil {
         }
 
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
 
         return idMap;
     }
 
-    public Map<String, String> insertStudentOne(Db db, String tableName, Map<String, String> tableData) throws Exception {
+    public Map<String, String> insertStudentOne(String tableName, Map<String, String> tableData){
         String sql = "SELECT t1.id,t1.name,CONCAT(t3.id,'-',replace(t4.name,'级',''),'-',t3.class_type,'-',t2.stduy_status)," +
                 " t1.user_name,t1.gender,DATE_FORMAT(t1.birth_date, '%Y-%m-%d'),t1.mobile,t1.email,t1.credential_type,t1.credential_number FROM xjr_user t1" +
                 " INNER JOIN base_student_school_roll t2 ON t1.id = t2.user_id" +
                 " INNER JOIN base_class t3 ON t2.class_id = t3.id" +
                 " INNER JOIN base_grade t4 ON t3.grade_id = t4.id" +
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t3.class_type IS NOT NULL";
-        List<String[]> list = db.query(sql, String[].class);
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
         Map<Integer, String> clientMap = new HashMap<>();
 
         String apiPath = "/api/resource/v2/person/single/add";
@@ -266,7 +272,7 @@ public class DataUtil {
         header.put("tagId", "insert_student");
 
         for(int i = 1; i < list.size(); i ++){
-            String[] el = list.get(i);
+            String[] el = SqlRunnerAdapterUtil.convertMapToStringArray(list.get(i));
             if(tableData != null && tableData.containsKey(el[0])){
                 continue;
             }
@@ -295,7 +301,6 @@ public class DataUtil {
             paramJson.addProperty("gender", gender);
 
             clientMap.put(i, el[0]);
-            System.out.println("入参:" + paramJson.toString());
             String result = apiUtil.doPost(apiPath, paramJson.toString(), null, header);
             JsonElement parse = jsonParser.parse(result);
             JsonObject resultJson = parse.getAsJsonObject();
@@ -306,18 +311,18 @@ public class DataUtil {
         }
 
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
         return idMap;
     }
 
-    public Map<String, String> insertStudent(Db db, String tableName, Map<String, String> tableData) throws Exception {
+    public Map<String, String> insertStudent(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 t3.grade_id = t4.id" +
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t3.class_type IS NOT NULL ";
-        List<String[]> list = db.query(sql, String[].class);
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
         Map<Integer, String> clientMap = new HashMap<>();
 
         String apiPath = "/api/resource/v1/person/batch/add";
@@ -337,7 +342,7 @@ public class DataUtil {
                 if(i >= list.size()){
                     continue;
                 }
-                String[] el = list.get(i);
+                String[] el = SqlRunnerAdapterUtil.convertMapToStringArray(list.get(i));
                 if(tableData != null && tableData.containsKey(el[0])){
                     continue;
                 }
@@ -382,21 +387,21 @@ public class DataUtil {
         }
 
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
         return idMap;
     }
 
-    public Map<String, String> insertTeacher(Db db, String tableName, Map<String, String> tableData, Map<String, String> deptMap) throws Exception {
+    public Map<String, String> insertTeacher(String tableName, Map<String, String> tableData, Map<String, String> deptMap){
         String sql = "SELECT t1.id,t1.name,t1.gender,t3.dept_id,t1.birth_date,t1.mobile,t1.email,t1.credential_type,t1.credential_number,t1.user_name FROM xjr_user t1" +
                 " INNER JOIN " + tableName + " t2 ON t1.id = t2.user_id" +
                 " INNER JOIN xjr_user_dept_relation t3 ON t1.id = t3.user_id" +
                 " INNER JOIN xjr_department t4 ON t3.dept_id = t4.id " +
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t4.delete_mark = 0";
-        List<String[]> list = db.query(sql, String[].class);
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
         JsonArray paramArray = new JsonArray();
         Map<Integer, String> clientMap = new HashMap<>();
         for(int i = 0; i < list.size(); i ++){
-            String[] el = list.get(i);
+            String[] el = SqlRunnerAdapterUtil.convertMapToStringArray(list.get(i));
             if(tableData != null && tableData.containsKey(el[0])){
                 continue;
             }
@@ -448,14 +453,14 @@ public class DataUtil {
 
         }
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
         return idMap;
     }
 
     /*同步车辆数据*/
-    public Map<Long, String> insertCar(Db db, String tableName, Map<String, String> tableData, FaceImportMapper faceImportMapper) throws Exception {
+    public Map<Long, String> insertCar(String tableName, Map<String, String> tableData, FaceImportMapper faceImportMapper) {
         String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 and status = 1";
-        List<CarMessageApply> dataList = db.query(sql, CarMessageApply.class);
+        List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, CarMessageApply.class);
         String apiPath = "/api/resource/v1/vehicle/batch/add";
         String apiPathTime = "/api/pms/v1/car/charge";
         Map<Long, String> idMap = new HashMap<>();
@@ -467,12 +472,13 @@ public class DataUtil {
         tagMap.put("tagId", "frs");
 
         String existingPlatesSql = "SELECT source_id FROM hikvision_data";
-        List<String> existingPlates = db.query(existingPlatesSql, String.class);
+        List<Map<String, Object>> existingPlates = SqlRunnerAdapter.db().selectList(existingPlatesSql, String.class);
 
         JsonArray dataArray = new JsonArray();
         String result = null;
         int clientId = 1;
-        for (CarMessageApply carMessageApply : dataList) {
+        for (Map<String, Object> carMessageApplyMap : dataList) {
+            CarMessageApply carMessageApply = SqlRunnerAdapterUtil.convertMapToEntity(carMessageApplyMap, CarMessageApply.class);
             if(existingPlates.contains(carMessageApply.getId() + "")){
                 continue;
             }
@@ -504,7 +510,8 @@ public class DataUtil {
         }
         result = apiUtil.doPost(apiPath, dataArray.toString(), tagMap, null);
 
-        for (CarMessageApply carMessageApply : dataList) {
+        for (Map<String, Object> carMessageApplyMap : dataList) {
+            CarMessageApply carMessageApply = SqlRunnerAdapterUtil.convertMapToEntity(carMessageApplyMap, CarMessageApply.class);
             JsonObject paramJsonTime = new JsonObject();
             paramJsonTime.addProperty("parkSyscode", "c69f2a7c48a74216bcab7d65f24d4a09");
             paramJsonTime.addProperty("plateNo", carMessageApply.getCarNumber().trim());
@@ -527,25 +534,23 @@ public class DataUtil {
                     System.err.println("No matching clientId found in clientMap for: " + responseClientId);
                 }
             }
-            insertRecord(db, tableName, idMap);
+            insertRecord(tableName, idMap);
         } else {
             System.err.println("API call failed: " + resultJson.get("msg").getAsString());
         }
         return idMap;
     }
 
-    void insertRecord(Db db, String tableName, Map<?, String> idsMap) throws SQLException {
+    void insertRecord(String tableName, Map<?, String> idsMap){
         if (idsMap.isEmpty()) {
             return;
         }
-        var sqls = new ArrayList<String>();
         for (var entry : idsMap.entrySet()) {
             var sourceId = entry.getKey();
-            var sql = "INSERT INTO hikvision_data(create_date, table_name, source_id, hikvision_id) " +
+            String sql = "INSERT INTO hikvision_data(create_date, table_name, source_id, hikvision_id) " +
                     "VALUES(now(), '" + tableName + "', '" + sourceId + "', '" + entry.getValue() + "')";
-            sqls.add(sql);
+            SqlRunnerAdapter.db().insert(sql);
         }
-        db.executeBatch(sqls);
     }
 
 //    void insertRecord(Db db, String tableName, Map<Long, String> idsMap) throws SQLException {

+ 8 - 8
src/main/java/com/xjrsoft/module/hikvision/util/OutInRecordUtil.java

@@ -5,7 +5,7 @@ import com.google.gson.Gson;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
-import com.microsoft.schemas.office.office.BulletAttribute;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.module.attendance.entity.AttendanceRuleDetails;
 import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
 import org.slf4j.Logger;
@@ -46,11 +46,11 @@ public class OutInRecordUtil {
     }
 
 
-    public void visitInsertRecord(Db db, Long reservation_school_people_id, String recordTime,String facePhoto, String status, String eventId) throws SQLException {
+    public void visitInsertRecord(Long reservation_school_people_id, String recordTime,String facePhoto, String status, String eventId) throws SQLException {
         String sql = "INSERT INTO visitor_out_in_record(create_date, reservation_school_people_id, record_time, face_photo, event_id, status,delete_mark,enabled_mark) " +
                 "VALUES(now(), '"  + reservation_school_people_id + "', '" +
                  recordTime + "', '" + facePhoto + "', '" + eventId + "', '" + status +  "',0,1)";
-        db.execute(sql);
+        SqlRunnerAdapter.db().insert(sql);
     }
 
     private void vehicleInsertRecord(Db db, Long carMessageApplyId, String recordTime, int releaseReason, int category, String facePhoto, int status, String planNo, String crossRecordSyscode,
@@ -291,7 +291,7 @@ public class OutInRecordUtil {
         return attendanceStatus;
     }
 
-    public void GetVisitRecord(Db use, FaceImportMapper faceImportMapper) throws SQLException, ParseException {
+    public void GetVisitRecord(FaceImportMapper faceImportMapper) throws SQLException, ParseException {
         ApiUtil apiUtil = new ApiUtil();
 
         AtomicInteger pageNo = new AtomicInteger(1);
@@ -329,10 +329,10 @@ public class OutInRecordUtil {
             hasMorePages = pageNo.getAndIncrement() < totalCount;
         }
 
-        InsertVisitRecords(use, responseBuilder,responseDoorBuilder,faceImportMapper);
+        InsertVisitRecords(responseBuilder,responseDoorBuilder,faceImportMapper);
     }
 
-    private void InsertVisitRecords(Db use, JsonArray eventsResponse, JsonArray doorEventsResponse,FaceImportMapper faceImportMapper) throws SQLException, ParseException {
+    private void InsertVisitRecords(JsonArray eventsResponse, JsonArray doorEventsResponse,FaceImportMapper faceImportMapper) throws SQLException, ParseException {
 
         for (JsonElement element : eventsResponse) {
             List<String> visit_id_list = faceImportMapper.GetReservationSchoolIdList();
@@ -356,7 +356,7 @@ public class OutInRecordUtil {
 
             if (visit_id_list.contains(eventId)) continue;
 
-            visitInsertRecord(use, Long.parseLong(reservationSchoolId), eventTime, picUri, deviceDesc, eventId);
+            visitInsertRecord(Long.parseLong(reservationSchoolId), eventTime, picUri, deviceDesc, eventId);
         }
 
     }
@@ -638,7 +638,7 @@ public class OutInRecordUtil {
 
                     if (visit_id_list.contains(eventId)) continue;
 
-                    visitInsertRecord(use, Long.parseLong(reservationSchoolId), eventTime, ApiUtil.GetRedirectURL(picUri), srcParentIndex, eventId);
+                    visitInsertRecord(Long.parseLong(reservationSchoolId), eventTime, ApiUtil.GetRedirectURL(picUri), srcParentIndex, eventId);
                 }
             } catch (Exception e) {
                 log.info(String.valueOf(e));

+ 13 - 15
src/main/java/com/xjrsoft/module/job/HikvisionBaseDataTask.java

@@ -1,9 +1,8 @@
 package com.xjrsoft.module.job;
 
-import cn.hutool.db.Db;
 import cn.hutool.extra.spring.SpringUtil;
-import com.xjrsoft.common.constant.GlobalConstant;
-import com.xjrsoft.common.utils.DatasourceUtil;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
+import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
 import com.xjrsoft.module.hikvision.entity.HikvisionData;
 import com.xjrsoft.module.hikvision.util.DataUtil;
 import com.xjrsoft.module.schedule.entity.JianyueData;
@@ -13,7 +12,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
-import javax.sql.DataSource;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -41,21 +39,21 @@ public class HikvisionBaseDataTask {
             return;
         }
         log.info("开始推送海康威视基础数据");
-        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
         try {
-            Db use = Db.use(datasource);
             String sql = "SELECT distinct table_name FROM hikvision_data WHERE 1 = 1";
-            List<JianyueData> query = use.query(sql, JianyueData.class);
+            List<Map<String, Object>> maps = SqlRunnerAdapter.db().selectList(sql, HikvisionData.class);
             Set<String> tables = new HashSet<>();
-            for (JianyueData jianyueData : query) {
+            for (Map<String, Object> map : maps) {
+                HikvisionData jianyueData = SqlRunnerAdapterUtil.convertMapToEntity(map, HikvisionData.class);
                 tables.add(jianyueData.getTableName());
             }
             sql = "SELECT * FROM hikvision_data WHERE 0 = 0";
-            List<HikvisionData> list = use.query(sql, HikvisionData.class);
+            List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, HikvisionData.class);
             Map<String, Map<String, String>> dataMap = new HashMap<>();
             for (String table : tables) {
                 Map<String, String> tableData = new HashMap<>();
-                for (HikvisionData hikvisiondata : list) {
+                for (Map<String, Object> hikvision : list) {
+                    HikvisionData hikvisiondata = SqlRunnerAdapterUtil.convertMapToEntity(hikvision, HikvisionData.class);
                     if(!table.equals(hikvisiondata.getTableName())){
                         continue;
                     }
@@ -68,28 +66,28 @@ public class HikvisionBaseDataTask {
             //JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
             //推送组织机构
             String tableName = "xjr_department";
-            Map<String, String> department = dataUtil.insertDepartment(use, tableName, dataMap.get(tableName));
+            Map<String, String> department = dataUtil.insertDepartment(tableName, dataMap.get(tableName));
             if(department.isEmpty() && dataMap.get(tableName) != null){
                 department = dataMap.get(tableName);
             }
 
             //推送教职工
             tableName = "base_teacher";
-            dataUtil.insertTeacher(use, tableName, dataMap.get(tableName), department);
+            dataUtil.insertTeacher(tableName, dataMap.get(tableName), department);
 
             //推送车辆
             String carTableName = "car_message_apply";
             Map<String, String> baseCar = dataMap.get(carTableName);
-            dataUtil.insertCar(use, carTableName, baseCar, faceImportMapper);
+            dataUtil.insertCar(carTableName, baseCar, faceImportMapper);
 
             tableName = "base_class";
             Map<String, String> baseClass = dataMap.get(tableName);
-            Map<String, String> classes = dataUtil.insertClass(use, tableName, baseClass);
+            Map<String, String> classes = dataUtil.insertClass(tableName, baseClass);
 
 
             tableName = "base_student";
             Map<String, String> baseStudent = dataMap.get(tableName);
-            Map<String, String> student = dataUtil.insertStudentOne(use, tableName, baseStudent);
+            Map<String, String> student = dataUtil.insertStudentOne(tableName, baseStudent);
 
             log.info("数据推送完成");
         } catch (Exception e) {

+ 1 - 4
src/main/java/com/xjrsoft/module/job/InsertOutInRecordTask.java

@@ -33,16 +33,13 @@ public class InsertOutInRecordTask {
             return;
         }
         log.info("开始拉取海康威视基础数据");
-        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
         try {
-            Db use = Db.use(datasource);
-
             //教师&学生拉取数据
 //            out_in_recordUtil.GetTeacherAndStudentRecords(use, faceImportMapper);
             //拉取车辆数据
 //            out_in_recordUtil.GetVehicleRecord(use, faceImportMapper);
             //拉取访客数据
-            out_in_recordUtil.GetVisitRecord(use, faceImportMapper);
+            out_in_recordUtil.GetVisitRecord(faceImportMapper);
 
             log.info("数据拉取完成");
         } catch (Exception e) {

+ 17 - 19
src/main/java/com/xjrsoft/module/job/JianyuekbBaseDataTask.java

@@ -1,17 +1,15 @@
 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.common.mybatis.SqlRunnerAdapter;
+import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
 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;
 
-import javax.sql.DataSource;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -35,21 +33,21 @@ public class JianyuekbBaseDataTask {
             return;
         }
         log.info("开始推送课表基础数据");
-        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
         try {
-            Db use = Db.use(datasource);
             String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
-            List<JianyueData> query = use.query(sql, JianyueData.class);
+            List<Map<String, Object>> query = SqlRunnerAdapter.db().selectList(sql, JianyueData.class);
             Set<String> tables = new HashSet<>();
-            for (JianyueData jianyueData : query) {
+            for (Map<String, Object> queryMap : query) {
+                JianyueData jianyueData = SqlRunnerAdapterUtil.convertMapToEntity(queryMap, JianyueData.class);
                 tables.add(jianyueData.getTableName());
             }
             sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
-            List<JianyueData> list = use.query(sql, JianyueData.class);
+            List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, JianyueData.class);
             Map<String, Map<String, String>> dataMap = new HashMap<>();
             for (String table : tables) {
                 Map<String, String> tableData = new HashMap<>();
-                for (JianyueData jianyueData : list) {
+                for (Map<String, Object> queryMap : list) {
+                    JianyueData jianyueData = SqlRunnerAdapterUtil.convertMapToEntity(queryMap, JianyueData.class);
                     if(!table.equals(jianyueData.getTableName())){
                         continue;
                     }
@@ -60,7 +58,7 @@ public class JianyuekbBaseDataTask {
             DataUtil dataUtil = new DataUtil();
             //查询校区
             String tableName = "xjr_department";
-            Map<String, String> districtMap = dataUtil.insertSchoolDistrict(use, tableName, dataMap.get(tableName));
+            Map<String, String> districtMap = dataUtil.insertSchoolDistrict(tableName, dataMap.get(tableName));
             if(districtMap.isEmpty() && dataMap.get(tableName) != null){
                 districtMap = dataMap.get(tableName);
             }
@@ -68,42 +66,42 @@ public class JianyuekbBaseDataTask {
             //推送年级
             JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
             tableName = "base_grade";
-            Map<String, String> grade = dataUtil.insertGrade(use, tableName, districtMap, dataMap.get(tableName));
+            Map<String, String> grade = dataUtil.insertGrade(tableName, districtMap, dataMap.get(tableName));
             if(grade.isEmpty() && dataMap.get(tableName) != null){
                 grade = dataMap.get(tableName);
             }
 
             //推送学期
             tableName = "base_semester";
-            dataUtil.insertSemester(use, tableName, dataMap.get(tableName));
+            dataUtil.insertSemester(tableName, dataMap.get(tableName));
             //推送标签
             tableName = "base_label";
-            Map<String, String> tagMap = dataUtil.insertCourseTag(use, tableName, dataMap.get(tableName));
+            Map<String, String> tagMap = dataUtil.insertCourseTag(tableName, dataMap.get(tableName));
             if(tagMap.isEmpty() && dataMap.get(tableName) != null){
                 tagMap = dataMap.get(tableName);
             }
             //推送课程
             tableName = "base_course_subject";
-            dataUtil.insertCourse(use, tableName, dataMap.get(tableName), tagMap);
+            dataUtil.insertCourse(tableName, dataMap.get(tableName), tagMap);
             //推送教职工
             tableName = "base_teacher";
-            Map<String, String> teacherMap = dataUtil.insertTeacher(use, tableName, dataMap.get(tableName));
+            Map<String, String> teacherMap = dataUtil.insertTeacher(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));
+            dataUtil.insertStudent(tableName, grade, dataMap.get(tableName));
             //推送教室
             tableName = "base_classroom";
-            Map<String, String> classroomMap = dataUtil.insertClassRoom(use, tableName, schoolDistrictData.get(0).getAsString(), dataMap.get(tableName));
+            Map<String, String> classroomMap = dataUtil.insertClassRoom(tableName, schoolDistrictData.get(0).getAsString(), dataMap.get(tableName));
             if(classroomMap.isEmpty() && dataMap.get(tableName) != null){
                 classroomMap = dataMap.get(tableName);
             }
             //推送行政班,先查询当前学期id
             String currenSemeter = dataUtil.getCurrenSemeter();
             tableName = "base_class";
-            dataUtil.insertClass(use, tableName, grade, teacherMap, currenSemeter, dataMap.get(tableName), classroomMap);
+            dataUtil.insertClass(tableName, grade, teacherMap, currenSemeter, dataMap.get(tableName), classroomMap);
 
             log.info("数据推送完成");
         } catch (Exception e) {

+ 17 - 18
src/main/java/com/xjrsoft/module/job/JianyuekbScheduleTask.java

@@ -1,10 +1,9 @@
 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.common.mybatis.SqlRunnerAdapter;
+import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
 import com.xjrsoft.module.schedule.entity.CourseReceiveMsg;
 import com.xjrsoft.module.schedule.entity.JianyueData;
 import com.xjrsoft.module.schedule.util.DataUtil;
@@ -12,7 +11,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
-import javax.sql.DataSource;
 import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -34,36 +32,37 @@ public class JianyuekbScheduleTask {
             log.info("非正式环境,无法执行获取课表数据");
             return;
         }
-        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
-        Db use = Db.use(datasource);
         String sql = "SELECT * FROM course_receive_msg WHERE delete_mark = 0 AND is_callback IS NULL";
-        List<CourseReceiveMsg> receiveMsgs = use.query(sql, CourseReceiveMsg.class);
-        for (CourseReceiveMsg receiveMsg : receiveMsgs) {
+        List<Map<String, Object>> receiveMsgs = SqlRunnerAdapter.db().selectList(sql, CourseReceiveMsg.class);
+        for (Map<String, Object> receiveMsgMap : receiveMsgs) {
+            CourseReceiveMsg receiveMsg = SqlRunnerAdapterUtil.convertMapToEntity(receiveMsgMap, CourseReceiveMsg.class);
             String updSql = "update course_receive_msg set is_callback = 0 where id = " + receiveMsg.getId();
-            use.execute(updSql, new HashMap<>());
+            SqlRunnerAdapter.db().update(updSql);
 
-            doExecute(use, receiveMsg.getEduYearSerialNo(), receiveMsg.getStartDate(), receiveMsg.getEndDate());
+            doExecute(receiveMsg.getEduYearSerialNo(), receiveMsg.getStartDate(), receiveMsg.getEndDate());
 
             updSql = "update course_receive_msg set is_callback = 1 where id = " + receiveMsg.getId();
-            use.execute(updSql, new HashMap<>());
+            SqlRunnerAdapter.db().update(updSql);
         }
     }
 
-    void doExecute(Db use, String eduYearSerialNo, String startDate, String endDate){
+    void doExecute(String eduYearSerialNo, String startDate, String endDate){
         log.info("开始获取课表数据");
         try {
             String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
-            List<JianyueData> query = use.query(sql, JianyueData.class);
+            List<Map<String, Object>> query = SqlRunnerAdapter.db().selectList(sql, JianyueData.class);
             Set<String> tables = new HashSet<>();
-            for (JianyueData jianyueData : query) {
+            for (Map<String, Object> jianyueDataMap : query) {
+                JianyueData jianyueData = SqlRunnerAdapterUtil.convertMapToEntity(jianyueDataMap, JianyueData.class);
                 tables.add(jianyueData.getTableName());
             }
             sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
-            List<JianyueData> list = use.query(sql, JianyueData.class);
+            List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, JianyueData.class);
             Map<String, Map<String, String>> dataMap = new HashMap<>();
             for (String table : tables) {
                 Map<String, String> tableData = new HashMap<>();
-                for (JianyueData jianyueData : list) {
+                for (Map<String, Object> jianyueDataMap : list) {
+                    JianyueData jianyueData = SqlRunnerAdapterUtil.convertMapToEntity(jianyueDataMap, JianyueData.class);
                     if(!table.equals(jianyueData.getTableName())){
                         continue;
                     }
@@ -93,8 +92,8 @@ public class JianyuekbScheduleTask {
 
             //获取课表并存到数据库
             JsonArray scheduleInfo = dataUtil.getScheduleInfoByGrade(eduYearSerialNo, startDate, endDate);
-            dataUtil.insertCourseTable(use, scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap);
-            dataUtil.insertClassTime(use, scheduleInfo);
+            dataUtil.insertCourseTable(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap);
+            dataUtil.insertClassTime(scheduleInfo);
             log.info("课表数据获取完成");
         } catch (Exception e) {
             log.error(e.getMessage(), e);

+ 3 - 4
src/main/java/com/xjrsoft/module/liteflow/node/StudentAdmissionApplicationNode.java

@@ -28,10 +28,9 @@ public class StudentAdmissionApplicationNode extends NodeComponent {
         Long formId = Convert.toLong(value);
         if (formId != null) {
             // 数据处理
-            StudentAdmissionApplication dataObj = studentAdmissionApplicationService.getById(formId);
-            dataObj.setStatus(1);
-
-            studentAdmissionApplicationService.updateById(dataObj);
+            studentAdmissionApplicationService.toHikvision(formId);
         }
     }
+
+
 }

+ 60 - 56
src/main/java/com/xjrsoft/module/schedule/util/DataUtil.java

@@ -1,11 +1,12 @@
 package com.xjrsoft.module.schedule.util;
 
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.db.Db;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
+import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseCourseSubject;
 import com.xjrsoft.module.base.entity.BaseGrade;
@@ -17,9 +18,7 @@ import com.xjrsoft.module.schedule.vo.StudentJianyuekbVo;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import lombok.extern.slf4j.Slf4j;
 
-import java.sql.SQLException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -36,15 +35,16 @@ public class DataUtil {
      * 推送校区信息
      * 此处将班级所属的部门当做校区进行推送
      */
-    public Map<String, String> insertSchoolDistrict(Db db, String tableName, Map<String, String> ids) throws Exception {
+    public Map<String, String> insertSchoolDistrict(String tableName, Map<String, String> ids) throws Exception {
         String sql = "SELECT * FROM " + tableName + " WHERE id IN (" +
                 "SELECT DISTINCT org_id FROM base_class WHERE delete_mark = 0 " +
                 ")";
-        List<Department> dataList = db.query(sql, Department.class);
+        List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, Department.class);
 
         Map<String, String> idMap = new HashMap<>();
         JsonParser jsonParser = new JsonParser();
-        for (Department department : dataList) {
+        for (Map<String, Object> departmentMap : dataList) {
+            Department department = SqlRunnerAdapterUtil.convertMapToEntity(departmentMap, Department.class);
             String url  = ScheduleUtil.apiUrl + "SchoolDistrict/Create";
             JsonObject paramJson = new JsonObject();
             paramJson.addProperty("name", department.getName());
@@ -70,18 +70,19 @@ public class DataUtil {
             idMap.put(department.getId().toString(), resultJson.get("data").getAsString());
         }
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
         return idMap;
     }
 
-    public Map<String, String> insertClass(Db db, String tableName, Map<String, String> gradeMap,
+    public Map<String, String> insertClass(String tableName, Map<String, String> gradeMap,
     Map<String, String> teacherMap, String semesterSerialNo, Map<String, String> ids, Map<String, String> classroomMap) throws Exception {
         String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 and is_graduate = 1";
-        List<BaseClass> dataList = db.query(sql, BaseClass.class);
+        List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, BaseClass.class);
 
         Map<String, String> idMap = new HashMap<>();
         JsonParser jsonParser = new JsonParser();
-        for (BaseClass baseClass : dataList) {
+        for (Map<String, Object> baseClassMap : dataList) {
+            BaseClass baseClass = SqlRunnerAdapterUtil.convertMapToEntity(baseClassMap, BaseClass.class);
             String url  = ScheduleUtil.apiUrl + "class/create";
             JsonObject paramJson = new JsonObject();
             paramJson.addProperty("teacherSerialNo", teacherMap.get(baseClass.getTeacherId().toString()));
@@ -113,19 +114,20 @@ public class DataUtil {
             idMap.put(baseClass.getId().toString(), resultJson.get("data").getAsString());
         }
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
         return idMap;
     }
 
-    public Map<String, String> insertClassRoom(Db db, String tableName, String schoolDistrictId, Map<String, String> ids) throws Exception {
+    public Map<String, String> insertClassRoom(String tableName, String schoolDistrictId, Map<String, String> ids) throws Exception {
         String sql = "SELECT t1.name, t1.capacity AS people_count,t2.name AS location, t1.floor_num AS floor, t1.id AS extendId FROM " + tableName + " t1" +
                 " INNER JOIN base_office_build t2 ON t1.office_build_id = t2.id" +
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0";
-        List<ClassroomJianyuekbVo> dataList = db.query(sql, ClassroomJianyuekbVo.class);
+        List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, ClassroomJianyuekbVo.class);
 
         JsonParser jsonParser = new JsonParser();
         Map<String, String> idMap = new HashMap<>();
-        for (ClassroomJianyuekbVo classroom : dataList) {
+        for (Map<String, Object> classroomMap : dataList) {
+            ClassroomJianyuekbVo classroom = SqlRunnerAdapterUtil.convertMapToEntity(classroomMap, ClassroomJianyuekbVo.class);
             String url  = ScheduleUtil.apiUrl + "classroom/create";
             JsonObject paramJson = new JsonObject();
             paramJson.addProperty("schoolDistrictId", schoolDistrictId);
@@ -156,11 +158,11 @@ public class DataUtil {
             idMap.put(classroom.getExtendId().toString(), resultJson.get("data").getAsString());
         }
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
         return idMap;
     }
 
-    public Map<String, String> insertStudent(Db db, String tableName, Map<String, String> gradeMap, Map<String, String> ids) throws Exception {
+    public Map<String, String> insertStudent(String tableName, Map<String, String> gradeMap, Map<String, String> ids) throws Exception {
         String sql = "SELECT t1.id AS registerNo, t2.name AS realName,t3.grade_id AS gradeSerialNo," +
                 " t2.name AS alias,t2.gender,t2.id AS extendId FROM " + tableName + " t1" +
                 " INNER JOIN xjr_user t2 ON t1.user_id = t2.id" +
@@ -168,11 +170,12 @@ public class DataUtil {
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0" +
                 " AND t1.student_id IS NOT NULL AND t1.student_id != ''" +
                 " AND t3.archives_status = 'FB2901'";
-        List<StudentJianyuekbVo> dataList = db.query(sql, StudentJianyuekbVo.class);
+        List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, StudentJianyuekbVo.class);
 
         JsonParser jsonParser = new JsonParser();
         Map<String, String> idMap = new HashMap<>();
-        for (StudentJianyuekbVo student : dataList) {
+        for (Map<String, Object> studentMap : dataList) {
+            StudentJianyuekbVo student = SqlRunnerAdapterUtil.convertMapToEntity(studentMap, StudentJianyuekbVo.class);
             String url  = ScheduleUtil.apiUrl + "student/create";
             JsonObject paramJson = new JsonObject();
             paramJson.addProperty("registerNo", student.getRegisterNo());
@@ -206,22 +209,23 @@ public class DataUtil {
             idMap.put(student.getExtendId().toString(), resultJson.get("data").getAsString());
         }
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
         return idMap;
     }
     /**
      * 新增教职工
      */
-    public Map<String, String> insertTeacher(Db db, String tableName, Map<String, String> ids) throws Exception {
+    public Map<String, String> insertTeacher(String tableName, Map<String, String> ids) throws Exception {
         String sql = "select t1.* from xjr_user t1" +
                 " inner join xjr_user_role_relation t2 on t1.id = t2.user_id" +
                 " inner join " + tableName + " t3 on t1.id = t3.user_id" +
                 " where t1.delete_mark = 0 and t2.role_id = 2";
-        List<XjrUser> xjrUsers = db.query(sql, XjrUser.class);
+        List<Map<String, Object>> xjrUsers = SqlRunnerAdapter.db().selectList(sql, XjrUser.class);
         JsonParser jsonParser = new JsonParser();
 
         Map<String, String> idMap = new HashMap<>();
-        for (XjrUser user : xjrUsers) {
+        for (Map<String, Object> userMap : xjrUsers) {
+            XjrUser user = SqlRunnerAdapterUtil.convertMapToEntity(userMap, XjrUser.class);
             String url  = ScheduleUtil.apiUrl + "teacher/create";
             JsonObject paramJson = new JsonObject();
             paramJson.addProperty("jobNumber", user.getUserName());
@@ -253,19 +257,20 @@ public class DataUtil {
             idMap.put(user.getId().toString(), resultJson.get("data").getAsString());
         }
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
         return idMap;
     }
     /**
      *  新增课程
      */
-    public Map<String, String> insertCourse(Db db, String tableName, Map<String, String> ids, Map<String, String> tagMap) throws Exception {
+    public Map<String, String> insertCourse(String tableName, Map<String, String> ids, Map<String, String> tagMap) throws Exception {
         String sql = "select * from " + tableName + " where delete_mark = 0";
-        List<BaseCourseSubject> list = db.query(sql, BaseCourseSubject.class);
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, BaseCourseSubject.class);
 
         Map<String, String> idMap = new HashMap<>();
         JsonParser jsonParser = new JsonParser();
-        for (BaseCourseSubject courseSubject : list) {
+        for (Map<String, Object> courseSubjectMap : list) {
+            BaseCourseSubject courseSubject = SqlRunnerAdapterUtil.convertMapToEntity(courseSubjectMap, BaseCourseSubject.class);
             String url  = ScheduleUtil.apiUrl + "courseclass/Create";
 
             JsonObject paramJson = new JsonObject();
@@ -298,7 +303,7 @@ public class DataUtil {
             idMap.put(courseSubject.getId().toString(), resultJson.get("data").getAsString());
         }
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
 
         return idMap;
     }
@@ -306,9 +311,9 @@ public class DataUtil {
     /**
      * 新增学期
      */
-    public Map<String, String> insertSemester(Db db, String tableName, Map<String, String> ids) throws Exception {
+    public Map<String, String> insertSemester(String tableName, Map<String, String> ids) throws Exception {
         String sql = "select * from " + tableName + " where delete_mark = 0";
-        List<BaseSemester> list = db.query(sql, BaseSemester.class);
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, BaseSemester.class);
 
         Map<String, String> idMap = new HashMap<>();
         JsonParser jsonParser = new JsonParser();
@@ -317,7 +322,8 @@ public class DataUtil {
         String spring = "春";
         String autumn = "秋";
 
-        for (BaseSemester semester : list) {
+        for (Map<String, Object> semesterMap : list) {
+            BaseSemester semester = SqlRunnerAdapterUtil.convertMapToEntity(semesterMap, BaseSemester.class);
             String url  = ScheduleUtil.apiUrl + "semester/Create";
             JsonObject paramJson = new JsonObject();
             paramJson.addProperty("schoolYear", Integer.parseInt(sdfYear.format(semester.getStartDate())));
@@ -356,19 +362,20 @@ public class DataUtil {
             idMap.put(semester.getId().toString(), resultJson.get("data").getAsString());
         }
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
 
         return idMap;
     }
 
-    public Map<String, String> insertCourseTag(Db db, String tableName, Map<String, String> ids) throws Exception {
+    public Map<String, String> insertCourseTag(String tableName, Map<String, String> ids) throws Exception {
         String sql = "select * from " + tableName + " where delete_mark = 0" +
                 " and id in (select distinct base_label_id from base_course_subject where delete_mark = 0)";
-        List<BaseLabel> list = db.query(sql, BaseLabel.class);
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, BaseLabel.class);
         String url = ScheduleUtil.apiUrl + "courseclass/tag/create";
         JsonParser jsonParser = new JsonParser();
         Map<String, String> idMap = new HashMap<>();
-        for (BaseLabel department : list) {
+        for (Map<String, Object> departmentMap : list) {
+            BaseLabel department = SqlRunnerAdapterUtil.convertMapToEntity(departmentMap, BaseLabel.class);
             if(ids != null && ids.get(department.getId().toString()) != null){
                 continue;
             }
@@ -387,26 +394,26 @@ public class DataUtil {
             idMap.put(department.getId().toString(), resultJson.get("data").getAsString());
         }
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
         return idMap;
     }
 
     /**
      * 插入年级
-     * @param db 数据库链接
      * @param tableName 表名字
      * @param schoolDistrictMap 校区id
      * @param ids 数据库id和jianyue的对应关系
      * @return 返回数据库和jianyue的对应关系
      */
-    public Map<String, String> insertGrade(Db db, String tableName, Map<String, String> schoolDistrictMap, Map<String, String> ids) throws Exception {
+    public Map<String, String> insertGrade(String tableName, Map<String, String> schoolDistrictMap, Map<String, String> ids) throws Exception {
         String sql = "select * from " + tableName + " where delete_mark = 0 and status = 1";
-        List<BaseGrade> list = db.query(sql, BaseGrade.class);
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, BaseGrade.class);
 
         JsonParser jsonParser = new JsonParser();
         Map<String, String> idMap = new HashMap<>();
         for (String gradeId : schoolDistrictMap.keySet()) {
-            for (BaseGrade baseGrade : list) {
+            for (Map<String, Object> baseGradeMap : list) {
+                BaseGrade baseGrade = SqlRunnerAdapterUtil.convertMapToEntity(baseGradeMap, BaseGrade.class);
                 String url = ScheduleUtil.apiUrl + "eduyear/create";
                 JsonObject paramJson = new JsonObject();
                 paramJson.addProperty("schoolDistrictId", schoolDistrictMap.get(gradeId));
@@ -436,7 +443,7 @@ public class DataUtil {
         }
 
         //插入记录表
-        insertRecord(db, tableName, idMap);
+        insertRecord(tableName, idMap);
         return idMap;
     }
 
@@ -537,16 +544,15 @@ public class DataUtil {
 
     /**
      *
-     * @param db 数据库链接
      * @param data 接口数据
      * @param classroomMap 教室对应关系
      * @param coureseMap 课程对应关系
      * @param semesterMap 学期对应关系
      * @param teacherMap 教师对应关系
      */
-    public void insertCourseTable(Db db, JsonArray data, Map<String, String> classroomMap, Map<String, String> coureseMap,
-        Map<String, String> semesterMap, Map<String, String> teacherMap, Map<String, String> classMap) throws SQLException {
-        List<String> sqls = new ArrayList<>();
+    public void insertCourseTable(JsonArray data, Map<String, String> classroomMap, Map<String, String> coureseMap,
+        Map<String, String> semesterMap, Map<String, String> teacherMap, Map<String, String> classMap) {
+//        List<String> sqls = new ArrayList<>();
 //        Map<Integer, String> week = ScheduleUtil.getWeek();
         Map<Integer, Integer> tmePeriod = ScheduleUtil.getTmePeriod();
         int count = 1;
@@ -596,19 +602,18 @@ public class DataUtil {
                 + "'" + asJsonObject.get("id").getAsString() + "' FROM DUAL"
                 + " WHERE NOT EXISTS(SELECT * FROM course_table WHERE jianyue_id = '" + asJsonObject.get("id").getAsString() +"' and status = 1)";
 //            sqls.add(updateSql);
-            sqls.add(sql);
+//            sqls.add(sql);
+            SqlRunnerAdapter.db().insert(sql);
             count ++;
         }
-        db.executeBatch(sqls);
     }
 
     /**
      * 提取课时相关信息
-     * @param db 数据库链接
      * @param data 数据
      *
      */
-    public void insertClassTime(Db db, JsonArray data) throws SQLException {
+    public void insertClassTime(JsonArray data) {
 
         Map<String, JsonObject> infoMap = new HashMap<>();
         Map<Integer, Integer> tmePeriod = ScheduleUtil.getTmePeriod();
@@ -622,7 +627,7 @@ public class DataUtil {
             json.add("numberOfDay", asJsonObject.get("numberOfDay"));
             infoMap.put(numberOfDayName, json);
         }
-        List<String> sqls = new ArrayList<>();
+//        List<String> sqls = new ArrayList<>();
         int count = 1;
         for (String number : infoMap.keySet()) {
             String substring1 = number.substring(number.length() - 1);
@@ -642,29 +647,28 @@ public class DataUtil {
                     + " WHERE NOT EXISTS(SELECT * FROM class_time WHERE time_period = "
                     + jsonObject.get("tmePeriod").getAsInt()
                     + " and number = " + substring1 + ")";
-            sqls.add(sql);
+//            sqls.add(sql);
+            SqlRunnerAdapter.db().insert(sql);
             count ++;
         }
-        db.executeBatch(sqls);
     }
 
     /**
      * 插入记录表
-     * @param db 数据库链接工具
      * @param tableName 表名字
      * @param idsMap id对应关系
      */
-    public void insertRecord(Db db, String tableName, Map<String, String> idsMap) throws SQLException {
+    public void insertRecord(String tableName, Map<String, String> idsMap){
         if(idsMap.isEmpty()){
             return;
         }
-        List<String> sqls = new ArrayList<>();
+//        List<String> sqls = new ArrayList<>();
         for (String sourceId : idsMap.keySet()) {
             String sql = "INSERT INTO jianyue_data(create_date,table_name,source_id,jianyue_id) value(now(),'"
                     + tableName + "','" + sourceId + "','" + idsMap.get(sourceId) + "')";
-            sqls.add(sql);
+//            sqls.add(sql);
+            SqlRunnerAdapter.db().insert(sql);
         }
-        db.executeBatch(sqls);
     }
 
 }

+ 194 - 0
src/main/java/com/xjrsoft/module/student/controller/EnrollmentPlanController.java

@@ -0,0 +1,194 @@
+package com.xjrsoft.module.student.controller;
+
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.base.entity.BaseGrade;
+import com.xjrsoft.module.base.entity.BaseMajorSet;
+import com.xjrsoft.module.organization.entity.Department;
+import com.xjrsoft.module.student.dto.AddEnrollmentPlanDto;
+import com.xjrsoft.module.student.dto.PreviewEnrollmentPlanDto;
+import com.xjrsoft.module.student.dto.UpdateEnrollmentPlanDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.student.dto.EnrollmentPlanPageDto;
+import com.xjrsoft.module.student.entity.EnrollmentPlan;
+import com.xjrsoft.module.student.entity.EnrollmentPlanMajorSet;
+import com.xjrsoft.module.student.service.IEnrollmentPlanMajorSetService;
+import com.xjrsoft.module.student.service.IEnrollmentPlanService;
+import com.xjrsoft.module.student.vo.*;
+
+import com.xjrsoft.module.system.entity.DictionaryDetail;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/student" + "/enrollmentPlan")
+@Api(value = "/student"  + "/enrollmentPlan",tags = "招生计划维护代码")
+@AllArgsConstructor
+public class EnrollmentPlanController {
+
+
+    private final IEnrollmentPlanService enrollmentPlanService;
+
+    private final IEnrollmentPlanMajorSetService enrollmentPlanMajorSetService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="招生计划维护列表(分页)")
+    @SaCheckPermission("enrollmentplan:detail")
+    public RT<PageOutput<EnrollmentPlanPageVo>> page(@Valid EnrollmentPlanPageDto dto){
+
+        MPJLambdaWrapper<EnrollmentPlan> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .disableSubLogicDel()
+                .select(EnrollmentPlan::getId)
+                .selectAs(DictionaryDetail::getName, EnrollmentPlanPageVo::getEnrollTypeCn)
+                .selectAs(BaseGrade::getName, EnrollmentPlanPageVo::getGradeIdCn)
+                .select("(select count(*) from enrollment_plan_major_set a where a.enrollment_plan_id = t.id and a.delete_mark = 0) as baseMajorSetSum")
+                .select("(select sum(a.base_major_set_enrollment_num) from enrollment_plan_major_set a where a.enrollment_plan_id = t.id and a.delete_mark = 0) as enrollmentStuNum")
+                .select(EnrollmentPlan.class,x -> VoToColumnUtil.fieldsToColumns(EnrollmentPlanPageVo.class).contains(x.getProperty()))
+                .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, EnrollmentPlan::getEnrollType)
+                .leftJoin(BaseGrade.class, BaseGrade::getId, EnrollmentPlan::getGradeId)
+                .like(dto.getName() != null && !dto.getName().isEmpty(), EnrollmentPlan::getName, dto.getName())
+                .eq(dto.getEnrollType() != null && !dto.getEnrollType().isEmpty(), EnrollmentPlan::getEnrollType, dto.getEnrollType())
+                .eq(EnrollmentPlan::getDeleteMark, DeleteMark.NODELETE)
+                .orderByDesc(EnrollmentPlan::getStartDate)
+                ;
+        IPage<EnrollmentPlanPageVo> page = enrollmentPlanService.selectJoinListPage(ConventPage.getPage(dto), EnrollmentPlanPageVo.class, queryWrapper);
+        PageOutput<EnrollmentPlanPageVo> pageOutput = ConventPage.getPageOutput(page, EnrollmentPlanPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/preview-page")
+    @ApiOperation(value="预览招生计划")
+    @SaCheckPermission("enrollmentplan:detail")
+    public RT<PreviewEnrollmentPlanVo> previewPage(@Valid PreviewEnrollmentPlanDto dto){
+
+        MPJLambdaWrapper<EnrollmentPlan> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .disableSubLogicDel()
+                .select(EnrollmentPlan::getId)
+                .selectAs(DictionaryDetail::getName, PreviewEnrollmentPlanVo::getEnrollTypeCn)
+                .selectAs(BaseGrade::getName, PreviewEnrollmentPlanVo::getGradeIdCn)
+                .select("(select sum(a.base_major_set_enrollment_num) from enrollment_plan_major_set a where a.enrollment_plan_id = t.id and a.delete_mark = 0) as enrollmentStuNum")
+                .select(EnrollmentPlan.class,x -> VoToColumnUtil.fieldsToColumns(PreviewEnrollmentPlanVo.class).contains(x.getProperty()))
+                .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, EnrollmentPlan::getEnrollType)
+                .leftJoin(BaseGrade.class, BaseGrade::getId, EnrollmentPlan::getGradeId)
+                .eq(EnrollmentPlan::getId, dto.getEnrollmentPlanId())
+                .eq(EnrollmentPlan::getDeleteMark, DeleteMark.NODELETE)
+                .orderByDesc(EnrollmentPlan::getStartDate)
+        ;
+        PreviewEnrollmentPlanVo result = enrollmentPlanService.selectJoinOne(PreviewEnrollmentPlanVo.class, queryWrapper);
+
+        if(result == null){
+            return RT.ok(result);
+        }
+
+        MPJLambdaWrapper<EnrollmentPlanMajorSet> queryWrapperPreviewEnrollmentPlanList = new MPJLambdaWrapper<>();
+        queryWrapperPreviewEnrollmentPlanList
+                .selectAs(BaseMajorSet::getStudyYear, PreviewEnrollmentPlanListVo::getStudyYear)
+                .selectAs(BaseMajorSet::getName, PreviewEnrollmentPlanListVo::getBaseMajorSetIdCn)
+                .selectAs(EnrollmentPlanMajorSet::getBaseMajorSetEnrollmentNum, PreviewEnrollmentPlanListVo::getBaseMajorSetEnrollmentNum)
+                .select("t3.name as baseMajorGradationIdCn")
+                .select("(select group_concat(b.name) from enrollment_plan_graduate_school a left join base_graduate_school b on a.base_graduate_school_id = b.id where a.enrollment_plan_major_set_id = t.id) as graduateSchool")
+                .leftJoin(BaseMajorSet.class, BaseMajorSet::getId, EnrollmentPlanMajorSet::getBaseMajorSetId)
+                .leftJoin(Department.class, Department::getId, BaseMajorSet::getDepartmentId)
+                .leftJoin("base_major_gradation t3 on t3.id = t1.major_gradation_id")
+                .eq(EnrollmentPlanMajorSet::getEnrollmentPlanId, dto.getEnrollmentPlanId())
+                .orderByDesc(BaseMajorSet::getMajorGradationId);
+        List<PreviewEnrollmentPlanListVo> previewEnrollmentPlanList = enrollmentPlanMajorSetService.selectJoinList(PreviewEnrollmentPlanListVo.class, queryWrapperPreviewEnrollmentPlanList);
+
+        result.setPreviewEnrollmentPlanListVoList(previewEnrollmentPlanList);
+        return RT.ok(result);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询招生计划维护信息")
+    @SaCheckPermission("enrollmentplan:detail")
+    public RT<EnrollmentPlanVo> info(@RequestParam Long id){
+        EnrollmentPlan enrollmentPlan = enrollmentPlanService.getById(id);
+        if (enrollmentPlan == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(enrollmentPlan, EnrollmentPlanVo.class));
+    }
+
+
+
+    @PostMapping
+    @ApiOperation(value = "新增招生计划维护")
+    @SaCheckPermission("enrollmentplan:add")
+    public RT<Boolean> add(@Valid @RequestBody AddEnrollmentPlanDto dto){
+        EnrollmentPlan enrollmentPlan = BeanUtil.toBean(dto, EnrollmentPlan.class);
+        enrollmentPlan.setCreateDate(new Date());
+        enrollmentPlan.setCreateUserId(StpUtil.getLoginIdAsLong());
+        enrollmentPlan.setStatus(0);
+        //获取sortCode的最大数量
+        QueryWrapper<EnrollmentPlan> queryWrapperSortcode = new QueryWrapper<>();
+        queryWrapperSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
+        EnrollmentPlan e = enrollmentPlanService.getOne(queryWrapperSortcode);
+        int sortCode = e.getSortCode() + 1;
+        enrollmentPlan.setSortCode(sortCode);
+        boolean isSuccess = enrollmentPlanService.save(enrollmentPlan);
+        return RT.ok(isSuccess);
+    }
+
+    @PutMapping("/change-status")
+    @ApiOperation(value = "修改招生计划状态")
+    @SaCheckPermission("enrollmentplan:edit")
+    public RT<Boolean> changeStatus(@Valid @RequestBody UpdateEnrollmentPlanDto dto){
+        EnrollmentPlan oldEnrollmentPlan = enrollmentPlanService.getById(dto.getId());
+        if(oldEnrollmentPlan == null){
+            throw new MyException("该招生计划已经失效!!!");
+        }
+
+        EnrollmentPlan enrollmentPlan = BeanUtil.toBean(dto, EnrollmentPlan.class);
+        return RT.ok(enrollmentPlanService.updateById(enrollmentPlan));
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改招生计划维护")
+    @SaCheckPermission("enrollmentplan:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateEnrollmentPlanDto dto){
+
+        EnrollmentPlan enrollmentPlan = BeanUtil.toBean(dto, EnrollmentPlan.class);
+        return RT.ok(enrollmentPlanService.updateById(enrollmentPlan));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除招生计划维护")
+    @SaCheckPermission("enrollmentplan:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(enrollmentPlanService.removeBatchByIds(ids));
+
+    }
+
+}

+ 114 - 0
src/main/java/com/xjrsoft/module/student/controller/EnrollmentPlanGraduateSchoolController.java

@@ -0,0 +1,114 @@
+package com.xjrsoft.module.student.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.student.dto.AddEnrollmentPlanGraduateSchoolDto;
+import com.xjrsoft.module.student.dto.UpdateEnrollmentPlanGraduateSchoolDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.student.dto.EnrollmentPlanGraduateSchoolPageDto;
+import com.xjrsoft.module.student.entity.EnrollmentPlanGraduateSchool;
+import com.xjrsoft.module.student.mapper.EnrollmentPlanGraduateSchoolMapper;
+import com.xjrsoft.module.student.service.IEnrollmentPlanGraduateSchoolService;
+import com.xjrsoft.module.student.vo.EnrollmentPlanGraduateSchoolPageVo;
+
+import com.xjrsoft.module.student.vo.EnrollmentPlanGraduateSchoolVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/student" + "/enrollmentPlanGraduateSchool")
+@Api(value = "/student"  + "/enrollmentPlanGraduateSchool",tags = "毕业学校招生计划详情代码")
+@AllArgsConstructor
+public class EnrollmentPlanGraduateSchoolController {
+
+
+    private final IEnrollmentPlanGraduateSchoolService enrollmentPlanGraduateSchoolService;
+
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="毕业学校招生计划详情列表(分页)")
+    @SaCheckPermission("enrollmentplangraduateschool:detail")
+    public RT<PageOutput<EnrollmentPlanGraduateSchoolPageVo>> page(@Valid EnrollmentPlanGraduateSchoolPageDto dto){
+
+        MPJLambdaWrapper<EnrollmentPlanGraduateSchool> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .select(EnrollmentPlanGraduateSchool::getId)
+                .select("t1.name as baseGraduateSchoolIdCn")
+                .select(EnrollmentPlanGraduateSchool.class,x -> VoToColumnUtil.fieldsToColumns(EnrollmentPlanGraduateSchoolPageVo.class).contains(x.getProperty()))
+                .leftJoin("base_graduate_school t1 on t1.id = t.base_graduate_school_id")
+                .orderByDesc(EnrollmentPlanGraduateSchool::getCreateDate);
+        IPage<EnrollmentPlanGraduateSchoolPageVo> page = enrollmentPlanGraduateSchoolService.selectJoinListPage(ConventPage.getPage(dto), EnrollmentPlanGraduateSchoolPageVo.class, queryWrapper);
+        PageOutput<EnrollmentPlanGraduateSchoolPageVo> pageOutput = ConventPage.getPageOutput(page, EnrollmentPlanGraduateSchoolPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询毕业学校招生计划详情信息")
+    @SaCheckPermission("enrollmentplangraduateschool:detail")
+    public RT<EnrollmentPlanGraduateSchoolVo> info(@RequestParam Long id){
+        EnrollmentPlanGraduateSchool enrollmentPlanGraduateSchool = enrollmentPlanGraduateSchoolService.getById(id);
+        if (enrollmentPlanGraduateSchool == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(enrollmentPlanGraduateSchool, EnrollmentPlanGraduateSchoolVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增毕业学校招生计划详情")
+    @SaCheckPermission("enrollmentplangraduateschool:add")
+    public RT<Boolean> add(@Valid @RequestBody AddEnrollmentPlanGraduateSchoolDto dto){
+        EnrollmentPlanGraduateSchool enrollmentPlanGraduateSchool = BeanUtil.toBean(dto, EnrollmentPlanGraduateSchool.class);
+        boolean isSuccess = enrollmentPlanGraduateSchoolService.save(enrollmentPlanGraduateSchool);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改毕业学校招生计划详情")
+    @SaCheckPermission("enrollmentplangraduateschool:edit")
+    public RT<Boolean> update(@Valid @RequestBody List<UpdateEnrollmentPlanGraduateSchoolDto> dtos){
+
+        List<EnrollmentPlanGraduateSchool> enrollmentPlanGraduateSchools = new ArrayList<>();
+        for(UpdateEnrollmentPlanGraduateSchoolDto dto : dtos){
+            EnrollmentPlanGraduateSchool enrollmentPlanGraduateSchool = BeanUtil.toBean(dto, EnrollmentPlanGraduateSchool.class);
+            enrollmentPlanGraduateSchools.add(enrollmentPlanGraduateSchool);
+        }
+
+        return RT.ok(enrollmentPlanGraduateSchoolService.updateBatchById(enrollmentPlanGraduateSchools));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除毕业学校招生计划详情")
+    @SaCheckPermission("enrollmentplangraduateschool:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(enrollmentPlanGraduateSchoolService.removeBatchByIds(ids));
+
+    }
+
+}

+ 134 - 0
src/main/java/com/xjrsoft/module/student/controller/EnrollmentPlanMajorSetController.java

@@ -0,0 +1,134 @@
+package com.xjrsoft.module.student.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.base.entity.BaseMajorSet;
+import com.xjrsoft.module.organization.entity.Department;
+import com.xjrsoft.module.student.dto.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.student.entity.EnrollmentPlanGraduateSchool;
+import com.xjrsoft.module.student.entity.EnrollmentPlanMajorSet;
+import com.xjrsoft.module.student.service.IEnrollmentPlanGraduateSchoolService;
+import com.xjrsoft.module.student.service.IEnrollmentPlanMajorSetService;
+import com.xjrsoft.module.student.vo.BaseGraduateSchoolOfEnrollmentPlanListVo;
+import com.xjrsoft.module.student.vo.BaseMajorSetOfEnrollmentPlanPageVo;
+import com.xjrsoft.module.student.vo.EnrollmentPlanMajorSetPageVo;
+
+import com.xjrsoft.module.student.vo.EnrollmentPlanMajorSetVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/student" + "/enrollmentPlanMajorSet")
+@Api(value = "/student"  + "/enrollmentPlanMajorSet",tags = "专业方向招生计划详情代码")
+@AllArgsConstructor
+public class EnrollmentPlanMajorSetController {
+
+
+    private final IEnrollmentPlanMajorSetService enrollmentPlanMajorSetService;
+
+    @GetMapping(value = "/generated-relation-page")
+    @ApiOperation(value="已生成招生专业方向+毕业中学关系列表(分页)")
+    @SaCheckPermission("enrollmentplandetail:detail")
+    public RT<PageOutput<EnrollmentPlanMajorSetPageVo>> generatedRelationPage(@Valid EnrollmentPlanMajorSetPageDto dto){
+
+        MPJLambdaWrapper<EnrollmentPlanMajorSet> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .select(EnrollmentPlanMajorSet::getId)
+                .selectAs(BaseMajorSet::getStudyYear, EnrollmentPlanMajorSetPageVo::getStudyYear)
+                .selectAs(BaseMajorSet::getName, EnrollmentPlanMajorSetPageVo::getBaseMajorSetIdCn)
+                .select("t3.name as baseMajorGradationIdCn")
+                .selectAs(Department::getName, EnrollmentPlanMajorSetPageVo::getDepartmentIdCn)
+                .select("(select count(*) from enrollment_plan_graduate_school a where a.delete_mark = 0 and a.enrollment_plan_major_set_id = t.id) as graduateSchoolSum")
+                .select(EnrollmentPlanMajorSet.class,x -> VoToColumnUtil.fieldsToColumns(EnrollmentPlanMajorSetPageVo.class).contains(x.getProperty()))
+                .leftJoin(BaseMajorSet.class, BaseMajorSet::getId, EnrollmentPlanMajorSet::getBaseMajorSetId)
+                .leftJoin(Department.class, Department::getId, BaseMajorSet::getDepartmentId)
+                .leftJoin("base_major_gradation t3 on t3.id = t1.major_gradation_id")
+                .eq(dto.getEnrollmentPlanId() != null && dto.getEnrollmentPlanId() > 0, EnrollmentPlanMajorSet::getEnrollmentPlanId, dto.getEnrollmentPlanId())
+                .eq(dto.getDepartmentId() != null && dto.getDepartmentId() > 0, BaseMajorSet::getDepartmentId, dto.getDepartmentId())
+                .like(dto.getBaseMajorSetIdCn() != null && !dto.getBaseMajorSetIdCn().isEmpty(), BaseMajorSet::getName, dto.getBaseMajorSetIdCn())
+                .orderByDesc(EnrollmentPlanMajorSet::getCreateDate);
+        IPage<EnrollmentPlanMajorSetPageVo> page = enrollmentPlanMajorSetService.selectJoinListPage(ConventPage.getPage(dto), EnrollmentPlanMajorSetPageVo.class, queryWrapper);
+        PageOutput<EnrollmentPlanMajorSetPageVo> pageOutput = ConventPage.getPageOutput(page, EnrollmentPlanMajorSetPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/baseMajorSet-page")
+    @ApiOperation(value="专业分类(分页)")
+    @SaCheckPermission("enrollmentplandetail:detail")
+    public RT<PageOutput<BaseMajorSetOfEnrollmentPlanPageVo>> baseMajorSetOfEnrollmentPlan(@Valid BaseMajorSetOfEnrollmentPlanPageDto dto){
+        IPage<BaseMajorSetOfEnrollmentPlanPageVo> page = enrollmentPlanMajorSetService.baseMajorSetOfEnrollmentPlan(dto);
+        PageOutput<BaseMajorSetOfEnrollmentPlanPageVo> pageOutput = ConventPage.getPageOutput(page, BaseMajorSetOfEnrollmentPlanPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/baseGraduateSchool-list")
+    @ApiOperation(value="毕业学校")
+    @SaCheckPermission("enrollmentplandetail:detail")
+    public RT<List<BaseGraduateSchoolOfEnrollmentPlanListVo>> baseGraduateSchoolOfEnrollmentPlan(@Valid BaseGraduateSchoolOfEnrollmentPlanListDto dto){
+        List<BaseGraduateSchoolOfEnrollmentPlanListVo> result = enrollmentPlanMajorSetService.baseGraduateSchoolOfEnrollmentPlan(dto);
+        return RT.ok(result);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询专业方向招生计划详情信息")
+    @SaCheckPermission("enrollmentplanmajorset:detail")
+    public RT<EnrollmentPlanMajorSetVo> info(@RequestParam Long id){
+        EnrollmentPlanMajorSet enrollmentPlanMajorSet = enrollmentPlanMajorSetService.getById(id);
+        if (enrollmentPlanMajorSet == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(enrollmentPlanMajorSet, EnrollmentPlanMajorSetVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增专业方向招生计划详情")
+    @SaCheckPermission("enrollmentplanmajorset:add")
+    public RT<Boolean> add(@Valid @RequestBody AddEnrollmentPlanMajorSetDto dto){
+        boolean isSuccess = enrollmentPlanMajorSetService.add(dto);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改专业方向招生计划详情")
+    @SaCheckPermission("enrollmentplanmajorset:edit")
+    public RT<Boolean> update(@Valid @RequestBody List<UpdateEnrollmentPlanMajorSetDto> dtos){
+
+        List<EnrollmentPlanMajorSet> enrollmentPlanMajorSets = new ArrayList<>();
+        for (UpdateEnrollmentPlanMajorSetDto dto : dtos){
+            EnrollmentPlanMajorSet enrollmentPlanMajorSet = BeanUtil.toBean(dto, EnrollmentPlanMajorSet.class);
+            enrollmentPlanMajorSets.add(enrollmentPlanMajorSet);
+        }
+
+        return RT.ok(enrollmentPlanMajorSetService.updateBatchById(enrollmentPlanMajorSets));
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除专业方向招生计划详情")
+    @SaCheckPermission("enrollmentplanmajorset:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(enrollmentPlanMajorSetService.removeBatch(ids));
+    }
+
+}

+ 76 - 36
src/main/java/com/xjrsoft/module/student/controller/PbCseFeeobjupdateController.java

@@ -1,94 +1,133 @@
 package com.xjrsoft.module.student.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.enums.EnrollTypeEnum;
+import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
-import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.TreeUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.base.entity.BaseGrade;
+import com.xjrsoft.module.base.service.IBaseGradeService;
 import com.xjrsoft.module.student.dto.*;
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import com.alibaba.excel.EasyExcel;
-import com.xjrsoft.module.student.vo.*;
-import org.springframework.web.multipart.MultipartFile;
-import java.io.IOException;
-import com.alibaba.excel.support.ExcelTypeEnum;
-import org.springframework.http.ResponseEntity;
-import java.io.ByteArrayOutputStream;
-import java.util.ArrayList;
-
 import com.xjrsoft.module.student.entity.PbCseFeeobjupdate;
 import com.xjrsoft.module.student.service.IPbCseFeeobjupdateService;
-
+import com.xjrsoft.module.student.vo.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
-* @title: 
-* @Author szs
-* @Date: 2024-03-29
-* @Version 1.0
-*/
+ * @title:
+ * @Author szs
+ * @Date: 2024-03-29
+ * @Version 1.0
+ */
 @RestController
 @RequestMapping("/student" + "/pbCseFeeobjupdate")
-@Api(value = "/student"  + "/pbCseFeeobjupdate",tags = "攀宝学生信息")
+@Api(value = "/student" + "/pbCseFeeobjupdate", tags = "攀宝学生信息")
 @AllArgsConstructor
 public class PbCseFeeobjupdateController {
 
 
     private final IPbCseFeeobjupdateService pbCseFeeobjupdateService;
 
+    private final IBaseGradeService baseGradeService;
+
+    @GetMapping(value = "/grade-enrolltype-tree")
+    @ApiOperation(value = "年级招生类型树")
+    public RT<List<GradeEnrolltypeTreeVo>> gradeEnrolltypeTree() {
+
+        List<BaseGrade> baseGradeList = baseGradeService.list(
+                Wrappers.<BaseGrade>query().lambda()
+                        .eq(BaseGrade::getDeleteMark, DeleteMark.NODELETE));
+
+        List<GradeEnrolltypeTreeVo> voList = new ArrayList<>();
+
+        for (BaseGrade baseGrade : baseGradeList) {
+            voList.add(new GradeEnrolltypeTreeVo() {{
+                setId(baseGrade.getId().toString());
+                setName(baseGrade.getName());
+            }});
+            voList.add(new GradeEnrolltypeTreeVo() {{
+                setId(baseGrade.getId().toString() + "_" + EnrollTypeEnum.SPRING_ENROLLMENT.getCode());
+                setName(EnrollTypeEnum.SPRING_ENROLLMENT.getValue());
+                setParentId(baseGrade.getId().toString());
+            }});
+            voList.add(new GradeEnrolltypeTreeVo() {{
+                setId(baseGrade.getId().toString() + "_" + EnrollTypeEnum.AUTUMN_ENROLLMENT.getCode());
+                setName(EnrollTypeEnum.AUTUMN_ENROLLMENT.getValue());
+                setParentId(baseGrade.getId().toString());
+            }});
+        }
+
+        List<GradeEnrolltypeTreeVo> treeVoList = TreeUtil.build(voList);
+
+        return RT.ok(treeVoList);
+    }
+
+
     @GetMapping(value = "/enrollment-statistics")
-    @ApiOperation(value="招生统计")
+    @ApiOperation(value = "招生统计")
     @SaCheckPermission("pbcsefeeobjupdate:detail")
-    public RT<EnrollmentStatisticsInfoVo> getEnrollmentStatisticsInfo(@Valid EnrollmentStatisticsInfoDto dto){
+    public RT<EnrollmentStatisticsInfoVo> getEnrollmentStatisticsInfo(@Valid EnrollmentStatisticsInfoDto dto) {
         EnrollmentStatisticsInfoVo enrollmentStatisticsInfoVo = pbCseFeeobjupdateService.getEnrollmentStatisticsInfo(dto);
         return RT.ok(enrollmentStatisticsInfoVo);
     }
 
     @GetMapping(value = "/enrollment-statistics-calendar")
-    @ApiOperation(value="招生统计每日动态数据")
+    @ApiOperation(value = "招生统计每日动态数据")
     @SaCheckPermission("pbcsefeeobjupdate:detail")
-    public RT<EnrollmentStatisticsCalendarInfoVo> getEnrollmentStatisticsCalendarInfo(@Valid EnrollmentStatisticsCalendarInfoDto dto){
+    public RT<EnrollmentStatisticsCalendarInfoVo> getEnrollmentStatisticsCalendarInfo(@Valid EnrollmentStatisticsCalendarInfoDto dto) {
         EnrollmentStatisticsCalendarInfoVo enrollmentStatisticsCalendarInfoVo = pbCseFeeobjupdateService.getEnrollmentStatisticsCalendarInfo(dto);
         return RT.ok(enrollmentStatisticsCalendarInfoVo);
     }
 
     @GetMapping(value = "/enrollment-statistics-graduation")
-    @ApiOperation(value="招生统计毕业学校数据")
+    @ApiOperation(value = "招生统计毕业学校数据")
     @SaCheckPermission("pbcsefeeobjupdate:detail")
-    public RT<EnrollmentStatisticsGraduationInfoVo> getEnrollmentStatisticsGraduationInfo(@Valid EnrollmentStatisticsGraduationInfoDto dto){
+    public RT<EnrollmentStatisticsGraduationInfoVo> getEnrollmentStatisticsGraduationInfo(@Valid EnrollmentStatisticsGraduationInfoDto dto) {
         EnrollmentStatisticsGraduationInfoVo enrollmentStatisticsGraduationInfoVo = pbCseFeeobjupdateService.getEnrollmentStatisticsGraduationInfo(dto);
         return RT.ok(enrollmentStatisticsGraduationInfoVo);
     }
 
     @GetMapping(value = "/page")
-    @ApiOperation(value="列表(分页)")
+    @ApiOperation(value = "列表(分页)")
     @SaCheckPermission("pbcsefeeobjupdate:detail")
-    public RT<PageOutput<PbCseFeeobjupdatePageVo>> page(@Valid PbCseFeeobjupdatePageDto dto){
-
+    public RT<PageOutput<PbCseFeeobjupdatePageVo>> page(@Valid PbCseFeeobjupdatePageDto dto) {
         LambdaQueryWrapper<PbCseFeeobjupdate> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper
-                    //.orderByDesc(PbCseFeeobjupdate::getId)
-                .select(PbCseFeeobjupdate.class,x -> VoToColumnUtil.fieldsToColumns(PbCseFeeobjupdatePageVo.class).contains(x.getProperty()));
+                .select(PbCseFeeobjupdate.class, x -> VoToColumnUtil.fieldsToColumns(PbCseFeeobjupdatePageVo.class).contains(x.getProperty()))
+                .orderByDesc(PbCseFeeobjupdate::getCratetime)
+        ;
         IPage<PbCseFeeobjupdate> page = pbCseFeeobjupdateService.page(ConventPage.getPage(dto), queryWrapper);
         PageOutput<PbCseFeeobjupdatePageVo> pageOutput = ConventPage.getPageOutput(page, PbCseFeeobjupdatePageVo.class);
         return RT.ok(pageOutput);
     }
 
     @GetMapping(value = "/info")
-    @ApiOperation(value="根据id查询信息")
+    @ApiOperation(value = "根据id查询信息")
     @SaCheckPermission("pbcsefeeobjupdate:detail")
-    public RT<PbCseFeeobjupdateVo> info(@RequestParam Long id){
+    public RT<PbCseFeeobjupdateVo> info(@RequestParam Long id) {
         PbCseFeeobjupdate pbCseFeeobjupdate = pbCseFeeobjupdateService.getById(id);
         if (pbCseFeeobjupdate == null) {
-           return RT.error("找不到此数据!");
+            return RT.error("找不到此数据!");
         }
         return RT.ok(BeanUtil.toBean(pbCseFeeobjupdate, PbCseFeeobjupdateVo.class));
     }
@@ -97,16 +136,16 @@ public class PbCseFeeobjupdateController {
     @PostMapping
     @ApiOperation(value = "新增")
     @SaCheckPermission("pbcsefeeobjupdate:add")
-    public RT<Boolean> add(@Valid @RequestBody AddPbCseFeeobjupdateDto dto){
+    public RT<Boolean> add(@Valid @RequestBody AddPbCseFeeobjupdateDto dto) {
         PbCseFeeobjupdate pbCseFeeobjupdate = BeanUtil.toBean(dto, PbCseFeeobjupdate.class);
         boolean isSuccess = pbCseFeeobjupdateService.save(pbCseFeeobjupdate);
-    return RT.ok(isSuccess);
+        return RT.ok(isSuccess);
     }
 
     @PutMapping
     @ApiOperation(value = "修改")
     @SaCheckPermission("pbcsefeeobjupdate:edit")
-    public RT<Boolean> update(@Valid @RequestBody UpdatePbCseFeeobjupdateDto dto){
+    public RT<Boolean> update(@Valid @RequestBody UpdatePbCseFeeobjupdateDto dto) {
 
         PbCseFeeobjupdate pbCseFeeobjupdate = BeanUtil.toBean(dto, PbCseFeeobjupdate.class);
         return RT.ok(pbCseFeeobjupdateService.updateById(pbCseFeeobjupdate));
@@ -116,10 +155,11 @@ public class PbCseFeeobjupdateController {
     @DeleteMapping
     @ApiOperation(value = "删除")
     @SaCheckPermission("pbcsefeeobjupdate:delete")
-    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids) {
         return RT.ok(pbCseFeeobjupdateService.removeBatchByIds(ids));
 
     }
+
     @PostMapping("/import")
     @ApiOperation(value = "导入")
     public RT<Boolean> importData(@RequestParam MultipartFile file) throws IOException {

+ 64 - 0
src/main/java/com/xjrsoft/module/student/dto/AddEnrollmentPlanDto.java

@@ -0,0 +1,64 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class AddEnrollmentPlanDto implements Serializable {
+
+
+    /**
+     * 序号
+     */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+     * 计划名称
+     */
+    @ApiModelProperty("计划名称")
+    private String name;
+    /**
+     * 招生类型(xjr_dictionary_detail[enroll_type])
+     */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollType;
+    /**
+     * 招生年级(base_grade)
+     */
+    @ApiModelProperty("招生年级(base_grade)")
+    private Long gradeId;
+    /**
+     * 开始时间
+     */
+    @ApiModelProperty("开始时间")
+    private LocalDate startDate;
+    /**
+     * 结束时间
+     */
+    @ApiModelProperty("结束时间")
+    private LocalDate endDate;
+    /**
+     * 状态(0:未发布 1:已发布 2:过期)
+     */
+    @ApiModelProperty("状态(0:未发布 1:已发布 2:过期)")
+    private Integer status;
+
+
+}

+ 48 - 0
src/main/java/com/xjrsoft/module/student/dto/AddEnrollmentPlanGraduateSchoolDto.java

@@ -0,0 +1,48 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class AddEnrollmentPlanGraduateSchoolDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 专业方向招生计划详情id(enrollment_plan_major_set)
+    */
+    @ApiModelProperty("专业方向招生计划详情id(enrollment_plan_major_set)")
+    private Long enrollmentPlanMajorSetId;
+    /**
+    * 毕业学校id(base_graduate_school)
+    */
+    @ApiModelProperty("毕业学校id(base_graduate_school)")
+    private List<Long> baseGraduateSchoolId;
+    /**
+    * 毕业学校计划招生人数
+    */
+    @ApiModelProperty("毕业学校计划招生人数")
+    private Integer enrollmentNum;
+
+}

+ 48 - 0
src/main/java/com/xjrsoft/module/student/dto/AddEnrollmentPlanMajorSetDto.java

@@ -0,0 +1,48 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class AddEnrollmentPlanMajorSetDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+     * 招生计划维护id(enrollment_plan)
+     */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId;
+    /**
+     * 专业方向id(base_major_set)
+     */
+    @ApiModelProperty("专业方向id(base_major_set)")
+    private List<Long> baseMajorSetIds;
+    /**
+     * 毕业学校idid(base_graduate_school)
+     */
+    @ApiModelProperty("毕业学校id(base_graduate_school)")
+    private List<Long> baseGraduateSchoolIds;
+
+}

+ 31 - 0
src/main/java/com/xjrsoft/module/student/dto/BaseGraduateSchoolOfEnrollmentPlanListDto.java

@@ -0,0 +1,31 @@
+package com.xjrsoft.module.student.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class BaseGraduateSchoolOfEnrollmentPlanListDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 招生计划维护id(enrollment_plan)
+     */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId = -1L;
+    /**
+     * 专业方向id
+     */
+    @ApiModelProperty("专业方向id")
+    private Long baseMajorSetId = -1L;
+}

+ 35 - 0
src/main/java/com/xjrsoft/module/student/dto/BaseMajorSetOfEnrollmentPlanPageDto.java

@@ -0,0 +1,35 @@
+package com.xjrsoft.module.student.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class BaseMajorSetOfEnrollmentPlanPageDto extends PageInput implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("专业方向名称")
+    private String name;
+
+    @ApiModelProperty("所属机构")
+    private Long departmentId;
+
+    @ApiModelProperty("专业分类")
+    private Long majorCategorId;
+
+    /**
+     * 招生计划维护id(enrollment_plan)
+     */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId = -1L;
+}

+ 30 - 0
src/main/java/com/xjrsoft/module/student/dto/EnrollmentPlanGraduateSchoolPageDto.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.student.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 毕业学校招生计划详情分页查询入参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EnrollmentPlanGraduateSchoolPageDto extends PageInput {
+
+    /**
+     * 专业方向招生计划详情id(enrollment_plan_major_set)
+     */
+    @ApiModelProperty("专业方向招生计划详情id(enrollment_plan_major_set)")
+    private Long enrollmentPlanMajorSetId;
+}

+ 39 - 0
src/main/java/com/xjrsoft/module/student/dto/EnrollmentPlanMajorSetPageDto.java

@@ -0,0 +1,39 @@
+package com.xjrsoft.module.student.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 专业方向招生计划详情分页查询入参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EnrollmentPlanMajorSetPageDto extends PageInput {
+    /**
+     * 招生计划维护id(enrollment_plan)
+     */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId;
+    /**
+     * 所属专业部
+     */
+    @ApiModelProperty("所属专业部")
+    private Long departmentId;
+    /**
+     * 招生专业方向名称
+     */
+    @ApiModelProperty("招生专业方向名称")
+    private String baseMajorSetIdCn;
+}

+ 36 - 0
src/main/java/com/xjrsoft/module/student/dto/EnrollmentPlanPageDto.java

@@ -0,0 +1,36 @@
+package com.xjrsoft.module.student.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 招生计划维护分页查询入参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EnrollmentPlanPageDto extends PageInput {
+
+    /**
+     * 计划名称
+     */
+    @ApiModelProperty("计划名称")
+    private String name;
+    /**
+     * 招生类型(xjr_dictionary_detail[enroll_type])
+     */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollType;
+
+}

+ 18 - 1
src/main/java/com/xjrsoft/module/student/dto/PbCseFeeobjupdatePageDto.java

@@ -1,5 +1,7 @@
 package com.xjrsoft.module.student.dto;
 
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
 import com.xjrsoft.common.page.PageInput;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -22,5 +24,20 @@ import java.util.Date;
 @EqualsAndHashCode(callSuper = false)
 public class PbCseFeeobjupdatePageDto extends PageInput {
 
-
+    @ApiModelProperty("id")
+    private String gradeEnrolltypeId;
+    /**
+     *
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("")
+    @ApiModelProperty("姓名")
+    private String feeobjname;
+    /**
+     *
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("")
+    @ApiModelProperty("身份证号")
+    private String personalid;
 }

+ 25 - 0
src/main/java/com/xjrsoft/module/student/dto/PreviewEnrollmentPlanDto.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.student.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 招生计划维护分页查询入参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class PreviewEnrollmentPlanDto {
+
+    /**
+     * 招生计划维护id(enrollment_plan)
+     */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId = -1L;
+
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/student/dto/UpdateEnrollmentPlanDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class UpdateEnrollmentPlanDto extends AddEnrollmentPlanDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 38 - 0
src/main/java/com/xjrsoft/module/student/dto/UpdateEnrollmentPlanGraduateSchoolDto.java

@@ -0,0 +1,38 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class UpdateEnrollmentPlanGraduateSchoolDto{
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+     * 毕业学校计划招生人数
+     */
+    @ApiModelProperty("毕业学校计划招生人数")
+    private Integer enrollmentNum;
+
+}

+ 43 - 0
src/main/java/com/xjrsoft/module/student/dto/UpdateEnrollmentPlanMajorSetDto.java

@@ -0,0 +1,43 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class UpdateEnrollmentPlanMajorSetDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+
+    /**
+     * 专业方向计划招生人数
+     */
+    @ApiModelProperty("专业方向计划招生人数")
+    private Integer baseMajorSetEnrollmentNum;
+    /**
+     * 专业方向最大计划招生人数
+     */
+    @ApiModelProperty("专业方向最大计划招生人数")
+    private Integer baseMajorSetEnrollmentNumMax;
+}

+ 113 - 0
src/main/java/com/xjrsoft/module/student/entity/EnrollmentPlan.java

@@ -0,0 +1,113 @@
+package com.xjrsoft.module.student.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@TableName("enrollment_plan")
+@ApiModel(value = "enrollment_plan", description = "招生计划维护")
+public class EnrollmentPlan 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 Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 计划名称
+    */
+    @ApiModelProperty("计划名称")
+    private String name;
+    /**
+    * 招生类型(xjr_dictionary_detail[enroll_type])
+    */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollType;
+    /**
+    * 招生年级(base_grade)
+    */
+    @ApiModelProperty("招生年级(base_grade)")
+    private Long gradeId;
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private Date startDate;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private Date endDate;
+    /**
+    * 状态(0:未发布 1:已发布 2:过期)
+    */
+    @ApiModelProperty("状态(0:未发布 1:已发布 2:过期)")
+    private Integer status;
+
+
+}

+ 97 - 0
src/main/java/com/xjrsoft/module/student/entity/EnrollmentPlanGraduateSchool.java

@@ -0,0 +1,97 @@
+package com.xjrsoft.module.student.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@TableName("enrollment_plan_graduate_school")
+@ApiModel(value = "enrollment_plan_graduate_school", description = "毕业学校招生计划详情")
+public class EnrollmentPlanGraduateSchool 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 Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 专业方向招生计划详情id(enrollment_plan_major_set)
+    */
+    @ApiModelProperty("专业方向招生计划详情id(enrollment_plan_major_set)")
+    private Long enrollmentPlanMajorSetId;
+    /**
+    * 毕业学校id(base_graduate_school)
+    */
+    @ApiModelProperty("毕业学校id(base_graduate_school)")
+    private Long baseGraduateSchoolId;
+    /**
+    * 毕业学校计划招生人数
+    */
+    @ApiModelProperty("毕业学校计划招生人数")
+    private Integer enrollmentNum;
+
+}

+ 103 - 0
src/main/java/com/xjrsoft/module/student/entity/EnrollmentPlanMajorSet.java

@@ -0,0 +1,103 @@
+package com.xjrsoft.module.student.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@TableName("enrollment_plan_major_set")
+@ApiModel(value = "enrollment_plan_major_set", description = "专业方向招生计划详情")
+public class EnrollmentPlanMajorSet 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 Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 招生计划维护id(enrollment_plan)
+    */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId;
+    /**
+    * 专业方向id(base_major_set)
+    */
+    @ApiModelProperty("专业方向id(base_major_set)")
+    private Long baseMajorSetId;
+    /**
+    * 专业方向计划招生人数
+    */
+    @ApiModelProperty("专业方向计划招生人数")
+    private Integer baseMajorSetEnrollmentNum;
+    /**
+    * 专业方向最大计划招生人数
+    */
+    @ApiModelProperty("专业方向最大计划招生人数")
+    private Integer baseMajorSetEnrollmentNumMax;
+
+
+}

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

@@ -105,4 +105,8 @@ public class StudentAdmissionApplication implements Serializable {
      */
     @ApiModelProperty("状态(0:未结束 1:结束)")
     private Integer status;
+
+
+    @ApiModelProperty("海康接口返回内容")
+    private String hikvisionResult;
 }

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

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.student.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.student.entity.EnrollmentPlanGraduateSchool;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Mapper
+public interface EnrollmentPlanGraduateSchoolMapper extends MPJBaseMapper<EnrollmentPlanGraduateSchool> {
+
+}

+ 27 - 0
src/main/java/com/xjrsoft/module/student/mapper/EnrollmentPlanMajorSetMapper.java

@@ -0,0 +1,27 @@
+package com.xjrsoft.module.student.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.student.dto.BaseGraduateSchoolOfEnrollmentPlanListDto;
+import com.xjrsoft.module.student.entity.EnrollmentPlanMajorSet;
+import com.xjrsoft.module.student.dto.BaseMajorSetOfEnrollmentPlanPageDto;
+import com.xjrsoft.module.student.vo.BaseGraduateSchoolOfEnrollmentPlanListVo;
+import com.xjrsoft.module.student.vo.BaseMajorSetOfEnrollmentPlanPageVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Mapper
+public interface EnrollmentPlanMajorSetMapper extends MPJBaseMapper<EnrollmentPlanMajorSet> {
+    IPage<BaseMajorSetOfEnrollmentPlanPageVo> baseMajorSetOfEnrollmentPlan(IPage<BaseMajorSetOfEnrollmentPlanPageDto> page, BaseMajorSetOfEnrollmentPlanPageDto dto);
+
+
+    List<BaseGraduateSchoolOfEnrollmentPlanListVo> baseGraduateSchoolOfEnrollmentPlan(@Param("dto") BaseGraduateSchoolOfEnrollmentPlanListDto dto);
+}

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

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.student.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.student.entity.EnrollmentPlan;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Mapper
+public interface EnrollmentPlanMapper extends MPJBaseMapper<EnrollmentPlan> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/student/service/IEnrollmentPlanGraduateSchoolService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.student.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.student.entity.EnrollmentPlanGraduateSchool;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+
+public interface IEnrollmentPlanGraduateSchoolService extends MPJBaseService<EnrollmentPlanGraduateSchool> {
+}

+ 29 - 0
src/main/java/com/xjrsoft/module/student/service/IEnrollmentPlanMajorSetService.java

@@ -0,0 +1,29 @@
+package com.xjrsoft.module.student.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.student.dto.AddEnrollmentPlanMajorSetDto;
+import com.xjrsoft.module.student.dto.BaseGraduateSchoolOfEnrollmentPlanListDto;
+import com.xjrsoft.module.student.entity.EnrollmentPlanMajorSet;
+import com.xjrsoft.module.student.dto.BaseMajorSetOfEnrollmentPlanPageDto;
+import com.xjrsoft.module.student.vo.BaseGraduateSchoolOfEnrollmentPlanListVo;
+import com.xjrsoft.module.student.vo.BaseMajorSetOfEnrollmentPlanPageVo;
+
+import java.util.List;
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+
+public interface IEnrollmentPlanMajorSetService extends MPJBaseService<EnrollmentPlanMajorSet> {
+    IPage<BaseMajorSetOfEnrollmentPlanPageVo> baseMajorSetOfEnrollmentPlan(BaseMajorSetOfEnrollmentPlanPageDto dto);
+
+    List<BaseGraduateSchoolOfEnrollmentPlanListVo> baseGraduateSchoolOfEnrollmentPlan(BaseGraduateSchoolOfEnrollmentPlanListDto dto);
+
+    Boolean add(AddEnrollmentPlanMajorSetDto dto);
+
+    Boolean removeBatch(List<Long> ids);
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/student/service/IEnrollmentPlanService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.student.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.student.entity.EnrollmentPlan;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+
+public interface IEnrollmentPlanService extends MPJBaseService<EnrollmentPlan> {
+}

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

@@ -13,4 +13,7 @@ import com.xjrsoft.module.student.mapper.StudentAdmissionApplicationMapper;
 */
 
 public interface IStudentAdmissionApplicationService extends MPJBaseService<StudentAdmissionApplication> {
+
+
+    Boolean toHikvision(Long id);
 }

+ 25 - 0
src/main/java/com/xjrsoft/module/student/service/impl/EnrollmentPlanGraduateSchoolServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.student.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.student.entity.EnrollmentPlanGraduateSchool;
+import com.xjrsoft.module.student.mapper.EnrollmentPlanGraduateSchoolMapper;
+import com.xjrsoft.module.student.service.IEnrollmentPlanGraduateSchoolService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class EnrollmentPlanGraduateSchoolServiceImpl extends MPJBaseServiceImpl<EnrollmentPlanGraduateSchoolMapper, EnrollmentPlanGraduateSchool> implements IEnrollmentPlanGraduateSchoolService {
+}

+ 130 - 0
src/main/java/com/xjrsoft/module/student/service/impl/EnrollmentPlanMajorSetServiceImpl.java

@@ -0,0 +1,130 @@
+package com.xjrsoft.module.student.service.impl;
+
+import cn.dev33.satoken.stp.StpUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.module.student.dto.AddEnrollmentPlanMajorSetDto;
+import com.xjrsoft.module.student.dto.BaseGraduateSchoolOfEnrollmentPlanListDto;
+import com.xjrsoft.module.student.entity.EnrollmentPlanGraduateSchool;
+import com.xjrsoft.module.student.entity.EnrollmentPlanMajorSet;
+import com.xjrsoft.module.student.mapper.EnrollmentPlanGraduateSchoolMapper;
+import com.xjrsoft.module.student.mapper.EnrollmentPlanMajorSetMapper;
+import com.xjrsoft.module.student.service.IEnrollmentPlanMajorSetService;
+import com.xjrsoft.module.student.dto.BaseMajorSetOfEnrollmentPlanPageDto;
+import com.xjrsoft.module.student.vo.BaseGraduateSchoolOfEnrollmentPlanListVo;
+import com.xjrsoft.module.student.vo.BaseMajorSetOfEnrollmentPlanPageVo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class EnrollmentPlanMajorSetServiceImpl extends MPJBaseServiceImpl<EnrollmentPlanMajorSetMapper, EnrollmentPlanMajorSet> implements IEnrollmentPlanMajorSetService {
+
+    private EnrollmentPlanMajorSetMapper enrollmentPlanMajorSetMapper;
+
+    private EnrollmentPlanGraduateSchoolMapper enrollmentPlanGraduateSchoolMapper;
+
+    @Override
+    public IPage<BaseMajorSetOfEnrollmentPlanPageVo> baseMajorSetOfEnrollmentPlan(BaseMajorSetOfEnrollmentPlanPageDto dto) {
+        return enrollmentPlanMajorSetMapper.baseMajorSetOfEnrollmentPlan(ConventPage.getPage(dto),dto);
+    }
+
+    @Override
+    public List<BaseGraduateSchoolOfEnrollmentPlanListVo> baseGraduateSchoolOfEnrollmentPlan(BaseGraduateSchoolOfEnrollmentPlanListDto dto) {
+        return enrollmentPlanMajorSetMapper.baseGraduateSchoolOfEnrollmentPlan(dto);
+    }
+
+    @Override
+    @Transactional
+    public Boolean add(AddEnrollmentPlanMajorSetDto dto) {
+        boolean isSuccess = false;
+        //删除该招生计划下所有的专业方向招生详情和学校招生详情
+        MPJLambdaWrapper<EnrollmentPlanGraduateSchool> enrollmentPlanGraduateSchoolDelete = new MPJLambdaWrapper<>();
+        enrollmentPlanGraduateSchoolDelete
+                .selectAs(EnrollmentPlanGraduateSchool::getId, EnrollmentPlanGraduateSchool::getId)
+                .leftJoin(EnrollmentPlanMajorSet.class, EnrollmentPlanMajorSet::getId, EnrollmentPlanGraduateSchool::getEnrollmentPlanMajorSetId)
+                .eq(EnrollmentPlanMajorSet::getEnrollmentPlanId, dto.getEnrollmentPlanId())
+        ;
+
+        List<EnrollmentPlanGraduateSchool> enrollmentPlanGraduateSchoolDeleteList = enrollmentPlanGraduateSchoolMapper.selectJoinList(EnrollmentPlanGraduateSchool.class, enrollmentPlanGraduateSchoolDelete);
+        List<Long> idList = enrollmentPlanGraduateSchoolDeleteList.stream()
+                .map(EnrollmentPlanGraduateSchool::getId) // 获取对象的主键id
+                .collect(Collectors.toList()); // 将主键id收集到新的List中
+        if(!idList.isEmpty()){
+            enrollmentPlanGraduateSchoolMapper.deleteBatchIds(idList);
+        }
+
+        LambdaQueryWrapper<EnrollmentPlanMajorSet> enrollmentPlanMajorSetDelete = new LambdaQueryWrapper<>();
+        enrollmentPlanMajorSetDelete
+                .eq(EnrollmentPlanMajorSet::getEnrollmentPlanId, dto.getEnrollmentPlanId())
+        ;
+
+        this.remove(enrollmentPlanMajorSetDelete);
+
+        //获取sortCode的最大数量
+        QueryWrapper<EnrollmentPlanMajorSet> enrollmentPlanMajorSetSortcode = new QueryWrapper<>();
+        enrollmentPlanMajorSetSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
+        EnrollmentPlanMajorSet enrollmentPlanMajorSet = this.getOne(enrollmentPlanMajorSetSortcode);
+        int epmsSortCode = enrollmentPlanMajorSet.getSortCode() + 1;
+
+        QueryWrapper<EnrollmentPlanGraduateSchool> enrollmentPlanGraduateSchoolSortcode = new QueryWrapper<>();
+        enrollmentPlanGraduateSchoolSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
+        EnrollmentPlanGraduateSchool enrollmentPlanGraduateSchool = enrollmentPlanGraduateSchoolMapper.selectOne(enrollmentPlanGraduateSchoolSortcode);
+        int epgsSortCode = enrollmentPlanGraduateSchool.getSortCode() + 1;
+
+
+        for (Long baseMajorSetId : dto.getBaseMajorSetIds()){
+            EnrollmentPlanMajorSet newEnrollmentPlanMajorSet = new EnrollmentPlanMajorSet();
+            newEnrollmentPlanMajorSet.setEnrollmentPlanId(dto.getEnrollmentPlanId());
+            newEnrollmentPlanMajorSet.setBaseMajorSetId(baseMajorSetId);
+            newEnrollmentPlanMajorSet.setCreateDate(new Date());
+            newEnrollmentPlanMajorSet.setCreateUserId(StpUtil.getLoginIdAsLong());
+            newEnrollmentPlanMajorSet.setSortCode(epmsSortCode++);
+
+            isSuccess = this.save(newEnrollmentPlanMajorSet);
+            for (Long baseGraduateSchoolId : dto.getBaseGraduateSchoolIds()){
+                int finalEpgsSortCode = epgsSortCode;
+                isSuccess = enrollmentPlanGraduateSchoolMapper.insert(new EnrollmentPlanGraduateSchool() {{
+                    setEnrollmentPlanMajorSetId(newEnrollmentPlanMajorSet.getId());
+                    setBaseGraduateSchoolId(baseGraduateSchoolId);
+                    setCreateDate(new Date());
+                    setCreateUserId(StpUtil.getLoginIdAsLong());
+                    setSortCode(finalEpgsSortCode);
+                }}) > 0;
+                epgsSortCode += 1;
+            }
+        }
+
+        return isSuccess;
+    }
+
+    @Override
+    @Transactional
+    public Boolean removeBatch(List<Long> ids) {
+
+        LambdaUpdateWrapper<EnrollmentPlanGraduateSchool> enrollmentPlanGraduateSchoolLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+        enrollmentPlanGraduateSchoolLambdaUpdateWrapper
+                .in(EnrollmentPlanGraduateSchool::getEnrollmentPlanMajorSetId, ids)
+        ;
+        enrollmentPlanGraduateSchoolMapper.delete(enrollmentPlanGraduateSchoolLambdaUpdateWrapper);
+
+        return this.removeBatchByIds(ids);
+    }
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/student/service/impl/EnrollmentPlanServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.student.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.student.entity.EnrollmentPlan;
+import com.xjrsoft.module.student.mapper.EnrollmentPlanMapper;
+import com.xjrsoft.module.student.service.IEnrollmentPlanService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class EnrollmentPlanServiceImpl extends MPJBaseServiceImpl<EnrollmentPlanMapper, EnrollmentPlan> implements IEnrollmentPlanService {
+}

+ 86 - 3
src/main/java/com/xjrsoft/module/student/service/impl/StudentAdmissionApplicationServiceImpl.java

@@ -1,15 +1,24 @@
 package com.xjrsoft.module.student.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
-import com.xjrsoft.module.student.entity.BaseMajorCategor;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.xjrsoft.module.hikvision.entity.HikvisionData;
+import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
+import com.xjrsoft.module.hikvision.util.ApiUtil;
 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;
 
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * @title: 学生进校申请
  * @Author dzx
@@ -19,4 +28,78 @@ import org.springframework.stereotype.Service;
 @Service
 @AllArgsConstructor
 public class StudentAdmissionApplicationServiceImpl extends MPJBaseServiceImpl<StudentAdmissionApplicationMapper, StudentAdmissionApplication> implements IStudentAdmissionApplicationService {
+
+    private final HikvisionDataMapper hikvisionDataMapper;
+    @Override
+    public Boolean toHikvision(Long id) {
+        StudentAdmissionApplication application = this.getById(id);
+        //查询学生在海康的id
+        HikvisionData hikvisionData = hikvisionDataMapper.selectOne(
+                new QueryWrapper<HikvisionData>().lambda()
+                        .eq(HikvisionData::getSourceId, application.getStudentUserId())
+                        .eq(HikvisionData::getTableName, "base_student")
+        );
+        ApiUtil apiUtil = new ApiUtil();
+        String apiPath = "/api/acps/v1/auth_config/add";
+
+        String outputFormat = "yyyy-MM-dd'T'HH:mm:ss+08:00";
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(outputFormat);
+        JsonObject paramJson = new JsonObject();
+
+        paramJson.addProperty("startTime", application.getStartTime().format(formatter));
+        paramJson.addProperty("endTime", application.getEndTime().format(formatter));
+
+        //组装人员数据
+        JsonArray personDatas = new JsonArray();
+        JsonObject personData = new JsonObject();
+        personData.addProperty("personDataType", "person");
+
+        JsonArray indexCodes = new JsonArray();
+        indexCodes.add(hikvisionData.getHikvisionId());
+        personData.add("indexCodes", indexCodes);
+
+        personDatas.add(personData);
+        paramJson.add("personDatas", personDatas);
+
+        JsonArray resourceInfos = selectResource(apiUtil);
+        paramJson.add("resourceInfos", resourceInfos);
+
+        Map<String, String> header = new HashMap<>();
+        header.put("tagId", "studentleave");
+        //调用接口获取到返回内容,并将其存到数据库中
+        String result = apiUtil.doPost(apiPath, paramJson.toString(), null, header);
+        application.setHikvisionResult(result);
+        application.setStatus(1);
+        this.updateById(application);
+        return true;
+    }
+
+    JsonArray selectResource(ApiUtil apiUtil){
+        String apiPath = "/api/irds/v2/resource/resourcesByParams";
+        JsonObject jsonObject = new JsonObject();
+        jsonObject.addProperty("pageNo", 1);
+        jsonObject.addProperty("pageSize", 500);
+        jsonObject.addProperty("resourceType", "door");
+
+        String result = apiUtil.doPost(apiPath, jsonObject.toString(), null, null);
+        JsonParser parser = new JsonParser();
+        JsonObject resultJson = parser.parse(result).getAsJsonObject();
+        JsonArray resourceInfos = new JsonArray();
+
+        if("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())){
+            JsonArray list = resultJson.get("data").getAsJsonObject().get("list").getAsJsonArray();
+            for (JsonElement jsonElement : list) {
+                JsonObject listOne = jsonElement.getAsJsonObject();
+                JsonObject resourceInfo = new JsonObject();
+                resourceInfo.add("resourceIndexCode", listOne.get("indexCode"));
+                resourceInfo.add("resourceType", listOne.get("resourceType"));
+                JsonArray channelNos = new JsonArray();
+                channelNos.add(listOne.get("channelNo"));
+                resourceInfo.add("channelNos", channelNos);
+                resourceInfos.add(resourceInfo);
+            }
+        }
+
+        return resourceInfos;
+    }
 }

+ 30 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseGraduateSchoolOfEnrollmentPlanListVo.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 专业方向,招生计划维护分页列表出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class BaseGraduateSchoolOfEnrollmentPlanListVo {
+
+    /**
+    * 毕业学校主键编号
+    */
+    @ApiModelProperty("毕业学校主键编号")
+    private String id;
+
+    /**
+    * 毕业学校
+    */
+    @ApiModelProperty("毕业学校")
+    private String name;
+
+    @ApiModelProperty("是否在当前招生计划被选中")
+    private Integer isSelect;
+
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseMajorSetOfEnrollmentPlanPageVo.java

@@ -0,0 +1,49 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 专业方向,招生计划维护分页列表出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class BaseMajorSetOfEnrollmentPlanPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("专业方向主键编号")
+    private String id;
+    /**
+    * 专业方向
+    */
+    @ApiModelProperty("专业方向")
+    private String baseMajorSetCn;
+    /**
+     * 所属校区
+     */
+    @ApiModelProperty("所属校区")
+    private String homeCampus;
+    /**
+     * 所属专业部
+     */
+    @ApiModelProperty("所属专业部")
+    private Long departmentId;
+    /**
+     * 所属专业部
+     */
+    @ApiModelProperty("所属专业部")
+    private String departmentIdCn;
+    /**
+    * 办学层次
+    */
+    @ApiModelProperty("办学层次")
+    private String majorGradationIdCn;
+
+    @ApiModelProperty("是否在当前招生计划被选中")
+    private Integer isSelect;
+
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanGraduateSchoolPageVo.java

@@ -0,0 +1,49 @@
+package com.xjrsoft.module.student.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 毕业学校招生计划详情分页列表出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class EnrollmentPlanGraduateSchoolPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 专业方向招生计划详情id(enrollment_plan_major_set)
+    */
+    @ApiModelProperty("专业方向招生计划详情id(enrollment_plan_major_set)")
+    private Long enrollmentPlanMajorSetId;
+    /**
+    * 毕业学校id(base_graduate_school)
+    */
+    @ApiModelProperty("毕业学校id(base_graduate_school)")
+    private Long baseGraduateSchoolId;
+    /**
+     * 毕业学校id(base_graduate_school)
+     */
+    @ApiModelProperty("毕业学校id(base_graduate_school)")
+    private String baseGraduateSchoolIdCn;
+    /**
+    * 毕业学校计划招生人数
+    */
+    @ApiModelProperty("毕业学校计划招生人数")
+    private Integer enrollmentNum;
+
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanGraduateSchoolVo.java

@@ -0,0 +1,49 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 毕业学校招生计划详情表单出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class EnrollmentPlanGraduateSchoolVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 专业方向招生计划详情id(enrollment_plan_major_set)
+    */
+    @ApiModelProperty("专业方向招生计划详情id(enrollment_plan_major_set)")
+    private Long enrollmentPlanMajorSetId;
+    /**
+    * 毕业学校id(base_graduate_school)
+    */
+    @ApiModelProperty("毕业学校id(base_graduate_school)")
+    private Long baseGraduateSchoolId;
+    /**
+    * 毕业学校计划招生人数
+    */
+    @ApiModelProperty("毕业学校计划招生人数")
+    private Integer enrollmentNum;
+
+
+
+}

+ 76 - 0
src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanMajorSetPageVo.java

@@ -0,0 +1,76 @@
+package com.xjrsoft.module.student.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 专业方向招生计划详情分页列表出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class EnrollmentPlanMajorSetPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 招生计划维护id(enrollment_plan)
+    */
+//    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+//    private Long enrollmentPlanId;
+    /**
+    * 专业方向id(base_major_set)
+    */
+//    @ApiModelProperty("专业方向id(base_major_set)")
+//    private Long baseMajorSetId;
+    /**
+    * 专业方向计划招生人数
+    */
+    @ApiModelProperty("专业方向计划招生人数")
+    private Integer baseMajorSetEnrollmentNum;
+    /**
+    * 专业方向最大计划招生人数
+    */
+    @ApiModelProperty("专业方向最大计划招生人数")
+    private Integer baseMajorSetEnrollmentNumMax;
+
+    /**
+     * 招生毕业中学数
+     */
+    @ApiModelProperty("招生毕业中学数")
+    private Integer graduateSchoolSum;
+
+    /**
+     * 适用学制(base_major)
+     */
+    @ApiModelProperty("适用学制(base_major)")
+    private Double studyYear;
+
+    /**
+     * 招生专业方向名称
+     */
+    @ApiModelProperty("招生专业方向名称")
+    private String baseMajorSetIdCn;
+    /**
+     * 层次
+     */
+    @ApiModelProperty("层次")
+    private String baseMajorGradationIdCn;
+    /**
+     * 所属专业部
+     */
+    @ApiModelProperty("所属专业部")
+    private String departmentIdCn;
+}

+ 54 - 0
src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanMajorSetVo.java

@@ -0,0 +1,54 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 专业方向招生计划详情表单出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class EnrollmentPlanMajorSetVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 招生计划维护id(enrollment_plan)
+    */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId;
+    /**
+    * 专业方向id(base_major_set)
+    */
+    @ApiModelProperty("专业方向id(base_major_set)")
+    private Long baseMajorSetId;
+    /**
+    * 专业方向计划招生人数
+    */
+    @ApiModelProperty("专业方向计划招生人数")
+    private Integer baseMajorSetEnrollmentNum;
+    /**
+    * 专业方向最大计划招生人数
+    */
+    @ApiModelProperty("专业方向最大计划招生人数")
+    private Integer baseMajorSetEnrollmentNumMax;
+
+
+
+}

+ 87 - 0
src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanPageVo.java

@@ -0,0 +1,87 @@
+package com.xjrsoft.module.student.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 招生计划维护分页列表出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class EnrollmentPlanPageVo {
+
+
+    /**
+     * 主键编号
+     */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+     * 序号
+     */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+     * 计划名称
+     */
+    @ApiModelProperty("计划名称")
+    private String name;
+    /**
+     * 招生类型(xjr_dictionary_detail[enroll_type])
+     */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollType;
+    /**
+     * 招生类型(xjr_dictionary_detail[enroll_type])
+     */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollTypeCn;
+    /**
+     * 招生年级(base_grade)
+     */
+    @ApiModelProperty("招生年级(base_grade)")
+    private Long gradeId;
+    /**
+     * 招生年级(base_grade)
+     */
+    @ApiModelProperty("招生年级(base_grade)")
+    private String gradeIdCn;
+    /**
+     * 开始时间
+     */
+    @ApiModelProperty("开始时间")
+    private LocalDate startDate;
+    /**
+     * 结束时间
+     */
+    @ApiModelProperty("结束时间")
+    private LocalDate endDate;
+    /**
+     * 状态(0:未发布 1:已发布 2:过期)
+     */
+    @ApiModelProperty("状态(0:未发布 1:已发布 2:过期)")
+    private Integer status;
+
+    /**
+     * 总的招生专业方向个数
+     */
+    @ApiModelProperty("总的招生专业方向个数")
+    private Integer baseMajorSetSum;
+    /**
+     * 总计划招生人数
+     */
+    @ApiModelProperty("总计划招生人数")
+    private Integer enrollmentStuNum;
+}

+ 64 - 0
src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanVo.java

@@ -0,0 +1,64 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 招生计划维护表单出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class EnrollmentPlanVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 计划名称
+    */
+    @ApiModelProperty("计划名称")
+    private String name;
+    /**
+    * 招生类型(xjr_dictionary_detail[enroll_type])
+    */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollType;
+    /**
+    * 招生年级(base_grade)
+    */
+    @ApiModelProperty("招生年级(base_grade)")
+    private Long gradeId;
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private Date startDate;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private Date endDate;
+    /**
+    * 状态(0:未发布 1:已发布 2:过期)
+    */
+    @ApiModelProperty("状态(0:未发布 1:已发布 2:过期)")
+    private Integer status;
+
+
+
+}

+ 31 - 0
src/main/java/com/xjrsoft/module/student/vo/GradeEnrolltypeTreeVo.java

@@ -0,0 +1,31 @@
+package com.xjrsoft.module.student.vo;
+
+import com.xjrsoft.common.model.tree.ITreeNode;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author szs
+ * @date 2024/3/25
+ */
+@Data
+public class GradeEnrolltypeTreeVo implements ITreeNode<GradeEnrolltypeTreeVo, String>, Serializable {
+    @ApiModelProperty("id")
+    private String id;
+
+
+    @ApiModelProperty("name")
+    private String name;
+
+
+    @ApiModelProperty("parentId")
+    private String parentId;
+
+
+    @ApiModelProperty("children")
+    private List<GradeEnrolltypeTreeVo> children;
+
+}

+ 30 - 30
src/main/java/com/xjrsoft/module/student/vo/PbCseFeeobjupdatePageVo.java

@@ -28,175 +28,175 @@ public class PbCseFeeobjupdatePageVo {
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("学生主键")
     private String pkfeeobj;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("学号")
     private String studentcode;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("姓名")
     private String feeobjname;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("身份证号")
     private String personalid;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("民族")
     private String nationality;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("出生年月")
     private String birthday;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("所属院系编码")
     private String deptcode;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("所属院系名称")
     private String deptname;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("所属专业代码")
     private String speccode;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("所属专业名称")
     private String specname;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("所属班级代码")
     private String classcode;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("所属班级名称")
     private String classname;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("学制")
     private String ratetypename;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("性别")
     private String sex;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("在校状态")
     private String state;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("入校年度")
     private String enteryear;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("离校年度")
     private String leaveyear;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("学生联系电话")
     private String telephone;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("家长联系电话")
     private String jzlxdh;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("志愿调剂专业")
     private String zytjspec;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("身高")
     private String sg;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("体重")
     private String tz;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("招生老师")
     private String recruiters;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("毕业学校")
     private String graduations;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("备注")
     private String remarks;
     /**
     * 
@@ -210,35 +210,35 @@ public class PbCseFeeobjupdatePageVo {
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("资助类型")
     private String resourcename;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("住宿类型")
     private String quartername;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("地址")
     private String address;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("创建时间")
     private String cratetime;
     /**
     * 
     */
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("")
-    @ApiModelProperty("")
+    @ApiModelProperty("更新时间")
     private String updatetime;
     /**
     * 

+ 41 - 0
src/main/java/com/xjrsoft/module/student/vo/PreviewEnrollmentPlanListVo.java

@@ -0,0 +1,41 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+* @title: 招生计划维护表单出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class PreviewEnrollmentPlanListVo {
+    /**
+     * 层次
+     */
+    @ApiModelProperty("层次")
+    private String baseMajorGradationIdCn;
+    /**
+     * 招生专业方向名称
+     */
+    @ApiModelProperty("招生专业方向名称")
+    private String baseMajorSetIdCn;
+    /**
+     * 适用学制(base_major)
+     */
+    @ApiModelProperty("适用学制(base_major)")
+    private Double studyYear;
+    /**
+     * 专业方向计划招生人数
+     */
+    @ApiModelProperty("专业方向计划招生人数")
+    private Integer baseMajorSetEnrollmentNum;
+    /**
+     * 招生毕业中学
+     */
+    @ApiModelProperty("招生毕业中学")
+    private String graduateSchool;
+}

+ 60 - 0
src/main/java/com/xjrsoft/module/student/vo/PreviewEnrollmentPlanVo.java

@@ -0,0 +1,60 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+
+/**
+* @title: 招生计划维护表单出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class PreviewEnrollmentPlanVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 计划名称
+    */
+    @ApiModelProperty("计划名称")
+    private String name;
+    /**
+     * 招生类型(xjr_dictionary_detail[enroll_type])
+     */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollTypeCn;
+    /**
+     * 招生年级(base_grade)
+     */
+    @ApiModelProperty("招生年级(base_grade)")
+    private String gradeIdCn;
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private LocalDate startDate;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private LocalDate endDate;
+    /**
+     * 总计划招生人数
+     */
+    @ApiModelProperty("总计划招生人数")
+    private Integer enrollmentStuNum;
+    /**
+     * 计划列表
+     */
+    @ApiModelProperty("计划列表")
+    private List<PreviewEnrollmentPlanListVo> previewEnrollmentPlanListVoList;
+
+}

+ 2 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/WfTeacherleaveMapper.java

@@ -20,4 +20,6 @@ public interface WfTeacherleaveMapper extends MPJBaseMapper<WfTeacherleave> {
     Long getLeaveCount(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
 
     List<WfTeacherleave> getLeaveList(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
+
+    WfTeacherleave getLeaveByUserId(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime, @Param("userId")Long userId);
 }

+ 5 - 0
src/main/java/com/xjrsoft/module/teacher/service/IWfHeadTeacherLeaveService.java

@@ -6,6 +6,9 @@ import com.xjrsoft.module.teacher.dto.WfHeadTeacherLeavePageDto;
 import com.xjrsoft.module.teacher.entity.WfHeadTeacherLeave;
 import com.xjrsoft.module.teacher.vo.WfHeadTeacherLeavePageVo;
 
+import java.time.LocalDateTime;
+import java.util.Map;
+
 /**
 * @title: 班主任事项请假
 * @Author szs
@@ -20,4 +23,6 @@ public interface IWfHeadTeacherLeaveService extends MPJBaseService<WfHeadTeacher
      * @return
      */
     IPage<WfHeadTeacherLeavePageVo> getListPage(WfHeadTeacherLeavePageDto dto);
+
+    Map<Long, WfHeadTeacherLeave> getLeaveList(LocalDateTime startTime, LocalDateTime endTime);
 }

+ 2 - 0
src/main/java/com/xjrsoft/module/teacher/service/IWfTeacherleaveService.java

@@ -26,4 +26,6 @@ public interface IWfTeacherleaveService extends MPJBaseService<WfTeacherleave> {
     Long getLeaveCount(LocalDateTime startTime, LocalDateTime endTime);
 
     Map<Long, WfTeacherleave> getLeaveList(LocalDateTime startTime, LocalDateTime endTime);
+
+    WfTeacherleave getLeaveByUserId(LocalDateTime startTime, LocalDateTime endTime, Long userId);
 }

+ 24 - 0
src/main/java/com/xjrsoft/module/teacher/service/impl/WfHeadTeacherLeaveServiceImpl.java

@@ -2,15 +2,23 @@ package com.xjrsoft.module.teacher.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.teacher.dto.WfHeadTeacherLeavePageDto;
 import com.xjrsoft.module.teacher.entity.WfHeadTeacherLeave;
+import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.teacher.mapper.WfHeadTeacherLeaveMapper;
 import com.xjrsoft.module.teacher.service.IWfHeadTeacherLeaveService;
 import com.xjrsoft.module.teacher.vo.WfHeadTeacherLeavePageVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
 * @title: 班主任事项请假
 * @Author szs
@@ -27,4 +35,20 @@ public class WfHeadTeacherLeaveServiceImpl extends MPJBaseServiceImpl<WfHeadTeac
     public IPage<WfHeadTeacherLeavePageVo> getListPage(WfHeadTeacherLeavePageDto dto) {
         return wfHeadTeacherLeaveMapper.getListPage(ConventPage.getPage(dto),dto);
     }
+
+    @Override
+    public Map<Long, WfHeadTeacherLeave> getLeaveList(LocalDateTime startTime, LocalDateTime endTime) {
+        List<WfHeadTeacherLeave> list = wfHeadTeacherLeaveMapper.selectJoinList(WfHeadTeacherLeave.class,
+                new MPJLambdaWrapper<WfHeadTeacherLeave>()
+                        .select(WfHeadTeacherLeave.class, x -> VoToColumnUtil.fieldsToColumns(WfHeadTeacherLeave.class).contains(x.getProperty()))
+                        .innerJoin(XjrUser.class, XjrUser::getId, WfHeadTeacherLeave::getApplicantUserId)
+                        .eq(WfHeadTeacherLeave::getStatus, 1)
+                        .between(WfHeadTeacherLeave::getStartTime, startTime, endTime)
+        );
+        Map<Long, WfHeadTeacherLeave> result = new HashMap<>();
+        for (WfHeadTeacherLeave leave : list) {
+            result.put(leave.getApplicantUserId(), leave);
+        }
+        return result;
+    }
 }

+ 5 - 0
src/main/java/com/xjrsoft/module/teacher/service/impl/WfTeacherleaveServiceImpl.java

@@ -202,6 +202,11 @@ public class WfTeacherleaveServiceImpl extends MPJBaseServiceImpl<WfTeacherleave
         return result;
     }
 
+    @Override
+    public WfTeacherleave getLeaveByUserId(LocalDateTime startTime, LocalDateTime endTime, Long userId) {
+        return this.baseMapper.getLeaveByUserId(startTime, endTime, userId);
+    }
+
     JsonArray selectResource(ApiUtil apiUtil){
         String apiPath = "/api/irds/v2/resource/resourcesByParams";
         JsonObject jsonObject = new JsonObject();

+ 3 - 1
src/main/java/com/xjrsoft/module/textbook/controller/WfTextbookSubscriptionController.java

@@ -228,7 +228,7 @@ public class WfTextbookSubscriptionController {
 
     }
 
-    @GetMapping("/export")
+    @GetMapping("/subscription-export-query")
     @ApiOperation(value = "导出")
     public ResponseEntity<byte[]> exportData(@Valid WfTextbookSubscriptionPageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
         List<WfTextbookSubscriptionPageVo> customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput<WfTextbookSubscriptionPageVo>) page(dto).getData()).getList();
@@ -238,6 +238,8 @@ public class WfTextbookSubscriptionController {
         return RT.fileStream(bot.toByteArray(), "WfTextbookSubscription" + ExcelTypeEnum.XLSX.getValue());
     }
 
+
+
     @PostMapping("/textbook-subscription-export-query")
     @ApiOperation(value = "教材征订条件导出")
     public ResponseEntity<byte[]> textbookSubscriptionExportQuery(@Valid @RequestBody TextbookSubscriptionExportQueryListDto dto) {

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/service/impl/WfTextbookClaimServiceImpl.java

@@ -320,7 +320,7 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
                 setUserType(2);
             }});
             //申领类型是学生申领,学生代表可领取
-            if (wfTextbookClaim.getClaimType().equals(ClaimTypeEnum.ClaimStudent.getCode())) {
+            if (wfTextbookClaim.getClaimType().equals(ClaimTypeEnum.ClaimStudent.getCode()) && !Objects.equals(wfTextbookClaim.getApplicantUserId(), wfTextbookClaim.getStudentUserId())) {
                 textbookClaimUserList.add(new TextbookClaimUser() {{
                     setCreateDate(new Date());
                     setWfTextbookClaimId(wfTextbookClaim.getId());

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/vo/TextbookSubscriptionExportQueryListVo.java

@@ -42,7 +42,7 @@ public class TextbookSubscriptionExportQueryListVo {
      * 教材类型(xjr_dictionary_item[textbook_type])
      */
     @ContentStyle(dataFormat = 49)
-    @ExcelProperty("出版社")
+    @ExcelProperty("教材类型")
     @ApiModelProperty("教材类型")
     private String textbookTypeCn;
     /**

+ 16 - 0
src/main/resources/mapper/attendance/AttendanceRuleDetailsMapper.xml

@@ -27,4 +27,20 @@
         WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND NOW() BETWEEN start_date AND end_date
         AND t2.date_type = #{dayOfWeek}
     </select>
+
+    <select id="getTodayRulesByUserId" resultType="com.xjrsoft.module.attendance.vo.AttendanceRuleDetailsUserVo">
+        SELECT t2.*,t5.user_id FROM attendance_rule_category t1
+        INNER JOIN attendance_rule_details t2 ON t1.id = t2.attendance_rule_category_id
+        INNER JOIN attendance_user_relation t3 ON t1.id = t3.attendance_rule_category_id
+        INNER JOIN xjr_user t4 ON t3.user_id = t4.id
+        INNER JOIN base_teacher t5 ON t4.id = t5.user_id
+        WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND NOW() BETWEEN start_date AND end_date
+        AND t2.date_type = #{dayOfWeek}
+        <if test="userIds != null and !userIds.isEmpty()">
+            and t5.user_id in
+            <foreach item="id" index="index" collection="userIds" open="(" close=")" separator=",">
+            #{id}
+            </foreach>
+        </if>
+    </select>
 </mapper>

+ 59 - 0
src/main/resources/mapper/student/EnrollmentPlanMajorSetMapper.xml

@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.student.mapper.EnrollmentPlanMajorSetMapper">
+    <select id="baseMajorSetOfEnrollmentPlan" parameterType="com.xjrsoft.module.student.dto.BaseMajorSetOfEnrollmentPlanPageDto"
+            resultType="com.xjrsoft.module.student.vo.BaseMajorSetOfEnrollmentPlanPageVo">
+        select
+        t.id,
+        t.name as baseMajorSetCn,
+        t.department_id as departmentId,
+        t3.name as majorGradationIdCn,
+        t4.name as departmentIdCn,
+        (SELECT
+             COUNT(*)
+         FROM enrollment_plan_major_set a
+         WHERE  a.base_major_set_id = t.id
+           and a.delete_mark = 0
+        <if test="dto.enrollmentPlanId != null">
+            and a.enrollment_plan_id = #{dto.enrollmentPlanId}
+        </if>
+         ) as isSelect
+        from base_major_set t
+        left join base_major_gradation t3 on t3.id = t.major_gradation_id
+        left join xjr_department t4 on t4.id = t.department_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.departmentId != null and dto.departmentId > 0">
+            and t.department_id = #{dto.departmentId}
+        </if>
+        <if test="dto.majorCategorId != null and dto.majorCategorId > 0">
+            and t.major_categor_id = #{dto.majorCategorId}
+        </if>
+    </select>
+
+    <select id="baseGraduateSchoolOfEnrollmentPlan" parameterType="com.xjrsoft.module.student.dto.BaseGraduateSchoolOfEnrollmentPlanListDto"
+            resultType="com.xjrsoft.module.student.vo.BaseGraduateSchoolOfEnrollmentPlanListVo">
+        select
+        t.id,
+        t.name,
+        (SELECT
+        COUNT(*)
+        FROM enrollment_plan_graduate_school a
+        left join enrollment_plan_major_set b on b.id = a.enrollment_plan_major_set_id
+        WHERE  a.base_graduate_school_id = t.id
+        and a.delete_mark = 0
+        <if test="dto.enrollmentPlanId != null">
+            and b.enrollment_plan_id = #{dto.enrollmentPlanId}
+        </if>
+        <if test="dto.baseMajorSetId != null">
+            and b.base_major_set_id = #{dto.baseMajorSetId}
+        </if>
+        ) as isSelect
+        from base_graduate_school t
+        where t.delete_mark = 0
+    </select>
+</mapper>

+ 1 - 0
src/main/resources/mapper/teacher/WfHeadTeacherLeaveMapper.xml

@@ -33,4 +33,5 @@
         </if>
         order by t.id
     </select>
+
 </mapper>

+ 12 - 0
src/main/resources/mapper/teacher/WfTeacherleaveMapper.xml

@@ -26,4 +26,16 @@
                 OR (#{startTime} > leave_start_time and leave_end_time > #{endTime})
             )
     </select>
+    <select id="getLeaveByUserId" resultType="com.xjrsoft.module.teacher.entity.WfTeacherleave">
+        SELECT * FROM wf_teacherleave t1
+                          INNER JOIN xjr_user t2 ON t1.user_id = t2.id
+        WHERE t1.status = 1 AND t2.delete_mark = 0
+          AND (
+                (leave_start_time BETWEEN #{startTime} and #{endTime})
+                OR (leave_end_time BETWEEN #{startTime} and #{endTime})
+                OR (leave_start_time > #{startTime} and #{endTime} > leave_end_time)
+                OR (#{startTime} > leave_start_time and leave_end_time > #{endTime})
+            )
+        and t2.id = #{userId}
+    </select>
 </mapper>

+ 9 - 20
src/main/resources/mapper/textbook/TextbookMapper.xml

@@ -55,36 +55,25 @@
     <select id="subscriptionList" resultType="com.xjrsoft.module.textbook.vo.TextbookSubscriptionRecordVo">
         SELECT t2.create_date,
                t4.name AS applicant_user,
-               t3.issn,
-               t3.book_name,
-               t3.publishing_house,
-               t3.editor_in_chief,
-               t3.appraisal_price,
+               t8.issn,
+               t8.book_name,
+               t8.publishing_house,
+               t8.editor_in_chief,
+               t8.appraisal_price,
                t5.name AS is_textbook_plan_cn,
                t6.name AS course_name,
                t3.student_subscription_number,
                t3.teacher_subscription_number,
                t3.teacher_reference_number,
-               t7.name AS is_support_resources_cn,
-               t3.version,
-               t3.class_ids,
-               t3.student_subscription_number,
-               t3.teacher_subscription_number,
-               t3.teacher_reference_number,
-               t9.name as gradeName,
-               t10.group_name as subjectGroupIdCN
+               t3.class_ids
         FROM textbook_subscription_record t1
                  LEFT JOIN wf_textbook_subscription t2 ON t1.wf_textbook_subscription_id = t2.id
                  LEFT JOIN wf_textbook_subscription_item t3 ON t3.id = t1.wf_textbook_subscription_item_id
                  LEFT JOIN xjr_user t4 ON t2.applicant_user_id = t4.id
-                 LEFT JOIN xjr_dictionary_detail t5
-                           ON t3.is_textbook_plan = t5.code AND t5.item_id = 1737360269850038273
-                 LEFT JOIN base_course_subject t6 ON t3.course_subject_id = t6.id
-                 LEFT JOIN xjr_dictionary_detail t7
-                           ON t3.is_support_resources = t7.code AND t7.item_id = 1737360269850038273
                  LEFT JOIN textbook t8 ON t8.id = t1.textbook_id
-                 LEFT JOIN base_grade t9 ON t9.id = t8.grade_id
-                 LEFT JOIN subject_group t10 ON t10.id = t2.subject_group_id
+                 LEFT JOIN xjr_dictionary_detail t5
+                           ON t8.is_textbook_plan = t5.code AND t5.item_id = 1737360269850038273
+                 LEFT JOIN base_course_subject t6 ON t8.course_subject_id = t6.id
         WHERE t1.delete_mark = 0
           AND t1.textbook_id = #{id}
     </select>

+ 52 - 0
src/main/resources/sqlScript/20240613_sql.sql

@@ -0,0 +1,52 @@
+-- ----------------------------
+-- 专业方向招生计划详情
+-- ----------------------------
+DROP TABLE IF EXISTS enrollment_plan_major_set;
+create table if not exists enrollment_plan_major_set
+(
+    id                                bigint   not null comment '主键编号',
+    create_user_id                    bigint   null comment '创建人',
+    create_date                       datetime null comment '创建时间',
+    modify_user_id                    bigint   null comment '修改人',
+    modify_date                       datetime null comment '修改时间',
+    delete_mark                       int      not null comment '删除标记',
+    enabled_mark                      int      not null comment '有效标志',
+    sort_code                         int      null comment '序号',
+    enrollment_plan_id                bigint   not null comment '招生计划维护id(enrollment_plan)',
+    base_major_set_id                 bigint   not null comment '专业方向id(base_major_set)',
+    base_major_set_enrollment_num     int default 0 comment '专业方向计划招生人数',
+    base_major_set_enrollment_num_max int default 0 comment '专业方向最大计划招生人数',
+    PRIMARY KEY (`id`)
+) ENGINE = INNODB
+  DEFAULT CHARSET = utf8mb4
+  COLLATE = utf8mb4_0900_ai_ci COMMENT '专业方向招生计划详情';
+-- ----------------------------
+-- 毕业学校招生计划详情
+-- ----------------------------
+DROP TABLE IF EXISTS enrollment_plan_graduate_school;
+create table if not exists enrollment_plan_graduate_school
+(
+    id                           bigint   not null comment '主键编号',
+    create_user_id               bigint   null comment '创建人',
+    create_date                  datetime null comment '创建时间',
+    modify_user_id               bigint   null comment '修改人',
+    modify_date                  datetime null comment '修改时间',
+    delete_mark                  int      not null comment '删除标记',
+    enabled_mark                 int      not null comment '有效标志',
+    sort_code                    int      null comment '序号',
+    enrollment_plan_major_set_id bigint   not null comment '专业方向招生计划详情id(enrollment_plan_major_set)',
+    base_graduate_school_id      bigint   not null comment '毕业学校id(base_graduate_school)',
+    enrollment_num               int default 0 comment '毕业学校计划招生人数',
+    PRIMARY KEY (`id`)
+) ENGINE = INNODB
+  DEFAULT CHARSET = utf8mb4
+  COLLATE = utf8mb4_0900_ai_ci COMMENT '毕业学校招生计划详情';
+
+alter table enrollment_plan
+    modify name varchar(128) null comment '计划名称';
+alter table enrollment_plan
+    modify start_date date null comment '开始时间';
+alter table enrollment_plan
+    modify end_date date null comment '结束时间';
+
+ALTER TABLE enrollment_plan_graduate_school ADD INDEX index_enrollment_plan_major_set_id (enrollment_plan_major_set_id);

+ 4 - 3
src/test/java/com/xjrsoft/module/job/AttendanceMessageTaskTest.java

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.job;
 
+import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSONObject;
@@ -120,7 +121,7 @@ class AttendanceMessageTaskTest {
         userList.add("oWZy-wec72H78ApagVBFomC5TNyw");
         userList.add("oWZy-wUTki8Vi7ao3Wn5JGNDauVI");
         for (String xjrUser : userList) {
-            weChatSendMessageDto.setMsgId(xjrUser);
+            weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
             weChatSendMessageDto.setUserId(xjrUser);
             weChatService.sendTemplateMessage(weChatSendMessageDto);
         }
@@ -242,7 +243,7 @@ class AttendanceMessageTaskTest {
                 weChatSendMessageDto.setUrl(StrUtil.format("{}pages/attendance/teacher/index", commonPropertiesConfig.getDomainApp()));
 
                 for (XjrUser xjrUser : userList) {
-                    weChatSendMessageDto.setMsgId(xjrUser.getId().toString());
+                    weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
                     weChatSendMessageDto.setUserId(xjrUser.getOpenId());
                     weChatService.sendTemplateMessage(weChatSendMessageDto);
                 }
@@ -287,7 +288,7 @@ class AttendanceMessageTaskTest {
                 weChatSendMessageDto.setUrl(StrUtil.format("{}pages/attendance/class/index", commonPropertiesConfig.getDomainApp()));
 
                 for (XjrUser xjrUser : userList) {
-                    weChatSendMessageDto.setMsgId(xjrUser.getId().toString());
+                    weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
                     weChatSendMessageDto.setUserId(xjrUser.getOpenId());
                     weChatService.sendTemplateMessage(weChatSendMessageDto);
                 }

+ 56 - 23
src/test/java/com/xjrsoft/module/job/HikvisionBaseDataTaskTest.java

@@ -7,7 +7,10 @@ import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.xjrsoft.XjrSoftApplication;
 import com.xjrsoft.common.constant.GlobalConstant;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.common.utils.DatasourceUtil;
+import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
+import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.evaluate.controller.EvaluateItemController;
 import com.xjrsoft.module.hikvision.entity.HikvisionData;
 import com.xjrsoft.module.hikvision.util.ApiUtil;
@@ -17,6 +20,7 @@ import com.xjrsoft.module.organization.entity.Department;
 import com.xjrsoft.module.schedule.entity.JianyueData;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
+import com.yomahub.liteflow.util.JsonUtil;
 import lombok.var;
 import org.junit.jupiter.api.Test;
 import org.junit.runner.RunWith;
@@ -49,30 +53,59 @@ class HikvisionBaseDataTaskTest {
     OutInRecordUtil outInRecordUtil = new OutInRecordUtil();
 
     @Test
-    void test() throws Exception {
-        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
-        Db use = Db.use(datasource);
-        String sql = "SELECT distinct table_name FROM hikvision_data WHERE 1 = 1";
-        List<JianyueData> query = use.query(sql, JianyueData.class);
-        Set<String> tables = new HashSet<>();
-        for (JianyueData jianyueData : query) {
-            tables.add(jianyueData.getTableName());
+    void test2(){
+        String sql = "select * from base_class";
+        List<Map<String, Object>> maps = SqlRunnerAdapter.db().selectList(sql, BaseClass.class);
+
+        for (Map<String, Object> map : maps) {
+            BaseClass baseClass = SqlRunnerAdapterUtil.convertMapToEntity(map, BaseClass.class);
+
+            System.out.println(JsonUtil.toJsonString(baseClass));
         }
-        sql = "SELECT * FROM hikvision_data WHERE 0 = 0";
-        List<HikvisionData> list = use.query(sql, HikvisionData.class);
-        Map<String, Map<String, String>> dataMap = new HashMap<>();
-        for (String table : tables) {
-            Map<String, String> tableData = new HashMap<>();
-            for (HikvisionData hikvisiondata : list) {
-                if(!table.equals(hikvisiondata.getTableName())){
-                    continue;
-                }
-                tableData.put(hikvisiondata.getSourceId(), hikvisiondata.getHikvisionId());
-            }
-            dataMap.put(table, tableData);
+
+
+        sql = "SELECT DISTINCT LENGTH(hierarchy) FROM xjr_department WHERE delete_mark = 0";
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
+
+        Set<Integer> levelSet = new HashSet<>();
+        for (Map<String, Object> strings : list) {
+            Integer[] strings1 = SqlRunnerAdapterUtil.convertMapToIntegerArray(strings);
+            System.out.println(strings1.toString());
+            levelSet.add(strings1[0]);
         }
-        DataUtil dataUtil = new DataUtil();
-        String tableName = "xjr_department";
+    }
+
+
+
+
+
+
+
+    @Test
+    void test() throws Exception {
+//        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
+//        Db use = Db.use(datasource);
+//        String sql = "SELECT distinct table_name FROM hikvision_data WHERE 1 = 1";
+//        List<JianyueData> query = use.query(sql, JianyueData.class);
+//        Set<String> tables = new HashSet<>();
+//        for (JianyueData jianyueData : query) {
+//            tables.add(jianyueData.getTableName());
+//        }
+//        sql = "SELECT * FROM hikvision_data WHERE 0 = 0";
+//        List<HikvisionData> list = use.query(sql, HikvisionData.class);
+//        Map<String, Map<String, String>> dataMap = new HashMap<>();
+//        for (String table : tables) {
+//            Map<String, String> tableData = new HashMap<>();
+//            for (HikvisionData hikvisiondata : list) {
+//                if(!table.equals(hikvisiondata.getTableName())){
+//                    continue;
+//                }
+//                tableData.put(hikvisiondata.getSourceId(), hikvisiondata.getHikvisionId());
+//            }
+//            dataMap.put(table, tableData);
+//        }
+//        DataUtil dataUtil = new DataUtil();
+//        String tableName = "xjr_department";
 //        Map<String, String> department = dataUtil.insertDepartment(use, tableName, dataMap.get(tableName));
 //        if(department.isEmpty() && dataMap.get(tableName) != null){
 //            department = dataMap.get(tableName);
@@ -105,7 +138,7 @@ class HikvisionBaseDataTaskTest {
 //        selectCar(use, carTableName);
 
 //        outInRecordUtil.GetVehicleRecord(use,faceImportMapper);
-        outInRecordUtil.GetTeacherAndStudentRecords(use,faceImportMapper);
+//        outInRecordUtil.GetTeacherAndStudentRecords(use,faceImportMapper);
 ////        selecAllPersonById(use);
 //        selectResource(use);
     }

+ 376 - 307
src/test/java/com/xjrsoft/module/job/JianyuekbBaseDataTaskTest.java

@@ -1,317 +1,386 @@
-package com.xjrsoft.module.job;
-
-import cn.hutool.db.Db;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import com.xjrsoft.XjrSoftApplication;
-import com.xjrsoft.common.constant.GlobalConstant;
-import com.xjrsoft.common.utils.DatasourceUtil;
-import com.xjrsoft.module.base.entity.BaseClass;
-import com.xjrsoft.module.base.entity.BaseGrade;
-import com.xjrsoft.module.schedule.entity.JianyueData;
-import com.xjrsoft.module.schedule.util.DataUtil;
-import com.xjrsoft.module.schedule.util.ScheduleUtil;
-import org.junit.jupiter.api.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import javax.sql.DataSource;
-import java.sql.SQLException;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @author dzx
- * @date 2024/4/30
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = XjrSoftApplication.class)
-class JianyuekbBaseDataTaskTest {
-
-
-    @Test
-    public void RefreshConnectionPool() {
-        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
-        try {
-            Db use = Db.use(datasource);
-            String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
-            List<JianyueData> query = use.query(sql, JianyueData.class);
-            Set<String> tables = new HashSet<>();
-            for (JianyueData jianyueData : query) {
-                tables.add(jianyueData.getTableName());
-            }
-            sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
-            List<JianyueData> list = use.query(sql, JianyueData.class);
-            Map<String, Map<String, String>> dataMap = new HashMap<>();
-            for (String table : tables) {
-                Map<String, String> tableData = new HashMap<>();
-                for (JianyueData jianyueData : list) {
-                    if(!table.equals(jianyueData.getTableName())){
-                        continue;
-                    }
-                    tableData.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
-                }
-                dataMap.put(table, tableData);
-            }
-            DataUtil dataUtil = new DataUtil();
-            //查询校区
-            String tableName = "xjr_department";
-            Map<String, String> districtMap = dataUtil.insertSchoolDistrict(use, tableName, dataMap.get(tableName));
-            if(districtMap.isEmpty() && dataMap.get(tableName) != null){
-                districtMap = dataMap.get(tableName);
-            }
-
-            //推送年级
-            JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
-            tableName = "base_grade";
-            Map<String, String> grade = dataUtil.insertGrade(use, tableName, districtMap, dataMap.get(tableName));
-            if(grade.isEmpty() && dataMap.get(tableName) != null){
-                grade = dataMap.get(tableName);
-            }
-
-            //推送学期
-            tableName = "base_semester";
-            dataUtil.insertSemester(use, tableName, dataMap.get(tableName));
-            //推送标签
-            tableName = "base_label";
-            Map<String, String> tagMap = dataUtil.insertCourseTag(use, tableName, dataMap.get(tableName));
-            if(tagMap.isEmpty() && dataMap.get(tableName) != null){
-                tagMap = dataMap.get(tableName);
-            }
-            //推送课程
-            tableName = "base_course_subject";
-            dataUtil.insertCourse(use, tableName, dataMap.get(tableName), tagMap);
-            //推送教职工
-            tableName = "base_teacher";
-            Map<String, 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));
-            //推送教室
-            tableName = "base_classroom";
-            Map<String, String> classroomMap = dataUtil.insertClassRoom(use, tableName, schoolDistrictData.get(0).getAsString(), dataMap.get(tableName));
-            if(classroomMap.isEmpty() && dataMap.get(tableName) != null){
-                classroomMap = dataMap.get(tableName);
-            }
-            //推送行政班,先查询当前学期id
-            String currenSemeter = dataUtil.getCurrenSemeter();
-            tableName = "base_class";
-            dataUtil.insertClass(use, tableName, grade, teacherMap, currenSemeter, dataMap.get(tableName), classroomMap);
-
-        } catch (Exception e) {
-        }
-    }
-
-    @Test
-    void deleteData() throws SQLException {
-        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
-        Db use = Db.use(datasource);
-        //删除学生
-        String sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_student'";
-        List<JianyueData> studentList = use.query(sql, JianyueData.class);
-
-        String url  = ScheduleUtil.apiUrl + "student/del";
-        for (JianyueData jianyueData : studentList) {
-
-        }
-        //先查询班级,再查询学生
-    }
-
-    @Test
-    void updateGrade() throws Exception {
-        String url  = ScheduleUtil.apiUrl + "EduYear/page";
-        JsonObject paramJson = new JsonObject();
-        paramJson.addProperty("pageSize", 40);
-        paramJson.addProperty("pageIndex", 1);
-
-        long timestamp = System.currentTimeMillis();
-        //生成签名
-        String sign = ScheduleUtil.createSign(timestamp);
-
-        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
-        System.out.println(doPost);
-
+//package com.xjrsoft.module.job;
+//
+//import cn.hutool.db.Db;
+//import com.google.gson.JsonArray;
+//import com.google.gson.JsonElement;
+//import com.google.gson.JsonObject;
+//import com.google.gson.JsonParser;
+//import com.xjrsoft.XjrSoftApplication;
+//import com.xjrsoft.common.constant.GlobalConstant;
+//import com.xjrsoft.common.utils.DatasourceUtil;
+//import com.xjrsoft.module.base.entity.BaseClass;
+//import com.xjrsoft.module.base.entity.BaseGrade;
+//import com.xjrsoft.module.schedule.entity.JianyueData;
+//import com.xjrsoft.module.schedule.util.DataUtil;
+//import com.xjrsoft.module.schedule.util.ScheduleUtil;
+//import org.junit.jupiter.api.Test;
+//import org.junit.runner.RunWith;
+//import org.springframework.boot.test.context.SpringBootTest;
+//import org.springframework.test.context.junit4.SpringRunner;
+//
+//import javax.sql.DataSource;
+//import java.sql.SQLException;
+//import java.util.HashMap;
+//import java.util.HashSet;
+//import java.util.List;
+//import java.util.Map;
+//import java.util.Set;
+//
+///**
+// * @author dzx
+// * @date 2024/4/30
+// */
+//@RunWith(SpringRunner.class)
+//@SpringBootTest(classes = XjrSoftApplication.class)
+//class JianyuekbBaseDataTaskTest {
+//
+//
+//    @Test
+//    public void RefreshConnectionPool() {
+//        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
+//        try {
+//            Db use = Db.use(datasource);
+//            String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
+//            List<JianyueData> query = use.query(sql, JianyueData.class);
+//            Set<String> tables = new HashSet<>();
+//            for (JianyueData jianyueData : query) {
+//                tables.add(jianyueData.getTableName());
+//            }
+//            sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
+//            List<JianyueData> list = use.query(sql, JianyueData.class);
+//            Map<String, Map<String, String>> dataMap = new HashMap<>();
+//            for (String table : tables) {
+//                Map<String, String> tableData = new HashMap<>();
+//                for (JianyueData jianyueData : list) {
+//                    if(!table.equals(jianyueData.getTableName())){
+//                        continue;
+//                    }
+//                    tableData.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+//                }
+//                dataMap.put(table, tableData);
+//            }
+//            DataUtil dataUtil = new DataUtil();
+//            //查询校区
+//            String tableName = "xjr_department";
+//            Map<String, String> districtMap = dataUtil.insertSchoolDistrict(use, tableName, dataMap.get(tableName));
+//            if(districtMap.isEmpty() && dataMap.get(tableName) != null){
+//                districtMap = dataMap.get(tableName);
+//            }
+//
+//            //推送年级
+//            JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
+//            tableName = "base_grade";
+//            Map<String, String> grade = dataUtil.insertGrade(use, tableName, districtMap, dataMap.get(tableName));
+//            if(grade.isEmpty() && dataMap.get(tableName) != null){
+//                grade = dataMap.get(tableName);
+//            }
+//
+//            //推送学期
+//            tableName = "base_semester";
+//            dataUtil.insertSemester(use, tableName, dataMap.get(tableName));
+//            //推送标签
+//            tableName = "base_label";
+//            Map<String, String> tagMap = dataUtil.insertCourseTag(use, tableName, dataMap.get(tableName));
+//            if(tagMap.isEmpty() && dataMap.get(tableName) != null){
+//                tagMap = dataMap.get(tableName);
+//            }
+//            //推送课程
+//            tableName = "base_course_subject";
+//            dataUtil.insertCourse(use, tableName, dataMap.get(tableName), tagMap);
+//            //推送教职工
+//            tableName = "base_teacher";
+//            Map<String, 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));
+//            //推送教室
+//            tableName = "base_classroom";
+//            Map<String, String> classroomMap = dataUtil.insertClassRoom(use, tableName, schoolDistrictData.get(0).getAsString(), dataMap.get(tableName));
+//            if(classroomMap.isEmpty() && dataMap.get(tableName) != null){
+//                classroomMap = dataMap.get(tableName);
+//            }
+//            //推送行政班,先查询当前学期id
+//            String currenSemeter = dataUtil.getCurrenSemeter();
+//            tableName = "base_class";
+//            dataUtil.insertClass(use, tableName, grade, teacherMap, currenSemeter, dataMap.get(tableName), classroomMap);
+//
+//        } catch (Exception e) {
+//        }
+//    }
+//
+//    @Test
+//    public void RefreshConnectionPool2() {
+//        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
+//        try {
+//            Db use = Db.use(datasource);
+//            String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
+//            List<JianyueData> query = use.query(sql, JianyueData.class);
+//            Set<String> tables = new HashSet<>();
+//            for (JianyueData jianyueData : query) {
+//                tables.add(jianyueData.getTableName());
+//            }
+//            sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
+//            List<JianyueData> list = use.query(sql, JianyueData.class);
+//            Map<String, Map<String, String>> dataMap = new HashMap<>();
+//            for (String table : tables) {
+//                Map<String, String> tableData = new HashMap<>();
+//                for (JianyueData jianyueData : list) {
+//                    if(!table.equals(jianyueData.getTableName())){
+//                        continue;
+//                    }
+//                    tableData.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+//                }
+//                dataMap.put(table, tableData);
+//            }
+//            DataUtil dataUtil = new DataUtil();
+//            //查询校区
+//            String tableName = "xjr_department";
+//
+//            //推送年级
+//            JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
+//            tableName = "base_grade";
+//            Map<String, String> grade = dataMap.get(tableName);
+//            //推送教职工
+//            tableName = "base_teacher";
+//            Map<String, String> teacherMap = dataMap.get(tableName);
+//            //推送教室
+//            tableName = "base_classroom";
+//            Map<String, String> classroomMap = dataMap.get(tableName);
+//            //推送行政班,先查询当前学期id
+//            String currenSemeter = dataUtil.getCurrenSemeter();
+//            tableName = "base_class";
+//            dataUtil.insertClass(use, tableName, grade, teacherMap, currenSemeter, dataMap.get(tableName), classroomMap);
+//
+//        } catch (Exception e) {
+//        }
+//    }
+//
+//    @Test
+//    void test3() throws Exception {
+//        long timestamp = System.currentTimeMillis();
+//        //生成签名
+//        String sign = ScheduleUtil.createSign(timestamp);
+//
+//        System.out.println(timestamp);
+//
+//        System.out.println(sign);
+//    }
+//
+//    @Test
+//    void deleteData() throws Exception {
+//        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
+//        Db use = Db.use(datasource);
+//
+//        String url  = ScheduleUtil.apiUrl + "Class/page";
+//
+//        JsonObject pageJson = new JsonObject();
+//        pageJson.addProperty("pageSize", 120);
+//        pageJson.addProperty("pageIndex", 1);
+//        JsonParser parser = new JsonParser();
+//
+//
+//        String ids = "[\"CLA000000975\",\"CLA000001011\",\"CLA000000997\",\"CLA000000998\",\"CLA000000999\",\"CLA000001000\",\"CLA000001001\",\"CLA000001002\",\"CLA000001003\",\"CLA000001004\",\"CLA000001005\",\"CLA000000972\",\"CLA000000973\",\"CLA000000974\",\"CLA000000989\",\"CLA000000990\",\"CLA000001007\",\"CLA000001008\",\"CLA000001009\",\"CLA000001010\",\"CLA000001012\",\"CLA000000987\",\"CLA000000988\",\"CLA000000991\",\"CLA000000992\",\"CLA000000993\",\"CLA000000994\",\"CLA000000995\",\"CLA000000980\",\"CLA000000981\",\"CLA000000982\",\"CLA000000983\",\"CLA000000996\",\"CLA000000984\",\"CLA000000985\",\"CLA000000986\",\"CLA000001006\",\"CLA000000977\",\"CLA000000978\",\"CLA000000979\",\"CLA000000976\",\"CLA000001017\",\"CLA000001018\",\"CLA000001057\",\"CLA000001043\",\"CLA000001044\",\"CLA000001045\",\"CLA000001046\",\"CLA000001047\",\"CLA000001048\",\"CLA000001049\",\"CLA000001013\",\"CLA000001014\",\"CLA000001015\",\"CLA000001034\",\"CLA000001052\",\"CLA000001053\",\"CLA000001054\",\"CLA000001055\",\"CLA000001056\",\"CLA000001032\",\"CLA000001033\",\"CLA000001035\",\"CLA000001036\",\"CLA000001037\",\"CLA000001038\",\"CLA000001039\",\"CLA000001040\",\"CLA000001041\",\"CLA000001024\",\"CLA000001025\",\"CLA000001026\",\"CLA000001027\",\"CLA000001028\",\"CLA000001042\",\"CLA000001029\",\"CLA000001030\",\"CLA000001031\",\"CLA000001050\",\"CLA000001051\",\"CLA000001019\",\"CLA000001020\",\"CLA000001021\",\"CLA000001022\",\"CLA000001023\",\"CLA000001016\"]";
+//
+//        JsonArray paramJson = parser.parse(ids).getAsJsonArray();
+//
+//        System.out.println(paramJson.toString());
+//        long timestamp = System.currentTimeMillis();
+//        url  = ScheduleUtil.apiUrl + "class/Del";
+//        String sign = ScheduleUtil.createSign(timestamp);
+//
+//        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+//        System.out.println(doPost);
+//    }
+//
+//    @Test
+//    void updateGrade() throws Exception {
+//        String url  = ScheduleUtil.apiUrl + "EduYear/page";
+//        JsonObject paramJson = new JsonObject();
+//        paramJson.addProperty("pageSize", 40);
+//        paramJson.addProperty("pageIndex", 1);
+//
+//        long timestamp = System.currentTimeMillis();
+//        //生成签名
+//        String sign = ScheduleUtil.createSign(timestamp);
+//
+//        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+//        System.out.println(doPost);
+//
+////        JsonParser parser = new JsonParser();
+////        JsonObject jsonObject = parser.parse(doPost).getAsJsonObject();
+////        JsonArray jsonArray = jsonObject.get("data").getAsJsonObject().get("dataList").getAsJsonArray();
+////
+////        url = ScheduleUtil.apiUrl + "eduyear/update";
+////        for (JsonElement jsonElement : jsonArray) {
+////            JsonObject dataOne = jsonElement.getAsJsonObject();
+////            dataOne.addProperty("schoolDistrictId", "48e0a5ae-6d0b-34dd-f31a-3a12feca72d1");
+////
+////            timestamp = System.currentTimeMillis();
+////            //生成签名
+////            sign = ScheduleUtil.createSign(timestamp);
+////            String result = ScheduleUtil.doPost(url, dataOne.toString(), sign, timestamp);
+////
+////            System.out.println(result);
+////        }
+//    }
+//
+//    @Test
+//    void insertGrade() throws Exception {
+//        String url  = ScheduleUtil.apiUrl + "eduyear/create";
+//        JsonObject paramJson = new JsonObject();
+//        paramJson.addProperty("pageSize", 40);
+//        paramJson.addProperty("pageIndex", 1);
+//
+//        long timestamp = System.currentTimeMillis();
+//        //生成签名
+//        String sign = ScheduleUtil.createSign(timestamp);
+//
+//        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
+//        Db use = Db.use(datasource);
+//
+//        JsonParser jsonParser = new JsonParser();
+//
+//        Map<String, String> idMap = new HashMap<>();
+//        //删除学生
+//        String sql = "SELECT * FROM jianyue_data WHERE table_name = 'xjr_department'";
+//        List<JianyueData> gradeList = use.query(sql, JianyueData.class);
+//        for (JianyueData jianyueData : gradeList) {
+//            if("48e0a5ae-6d0b-34dd-f31a-3a12feca72d1".equals(jianyueData.getJianyueId())){
+//                continue;
+//            }
+//
+//            sql = "select * from base_grade where delete_mark = 0 and status = 1";
+//            List<BaseGrade> list = use.query(sql, BaseGrade.class);
+//            for (BaseGrade baseGrade : list) {
+//                url = ScheduleUtil.apiUrl + "eduyear/create";
+//                JsonObject dataJson = new JsonObject();
+//                dataJson.addProperty("schoolDistrictId", jianyueData.getJianyueId());
+//                dataJson.addProperty("period", 4);
+//                dataJson.addProperty("startYear", baseGrade.getTitle().replaceAll("年", ""));
+//                dataJson.addProperty("extendId", baseGrade.getId().toString());
+//                dataJson.addProperty("year", 3);
+//
+//                //获取时间戳
+//                timestamp = System.currentTimeMillis();
+//                //生成签名
+//                sign = ScheduleUtil.createSign(timestamp);
+//
+//                String result = ScheduleUtil.doPost(url, dataJson.toString(), sign, timestamp);
+//
+//                JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+//
+//                idMap.put(jianyueData.getSourceId() + "_" + baseGrade.getId().toString(), resultJson.get("data").getAsString());
+//            }
+//        }
+//        DataUtil dataUtil = new DataUtil();
+//        dataUtil.insertRecord(use, "base_grade", idMap);
+//    }
+//
+//    @Test
+//    void selectSchoolDistrict() throws Exception {
+//        String url  = ScheduleUtil.apiUrl + "SchoolDistrict/page";
+//        JsonObject paramJson = new JsonObject();
+//        paramJson.addProperty("pageSize", 40);
+//        paramJson.addProperty("pageIndex", 1);
+//
+//        long timestamp = System.currentTimeMillis();
+//        //生成签名
+//        String sign = ScheduleUtil.createSign(timestamp);
+//
+//        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+//        System.out.println(doPost);
+//
+//    }
+//
+//    @Test
+//    void updateClass() throws Exception {
+//        String url  = ScheduleUtil.apiUrl + "EduYear/page";
+//        JsonObject paramJson = new JsonObject();
+//        paramJson.addProperty("pageSize", 40);
+//        paramJson.addProperty("pageIndex", 1);
+//
+//        long timestamp = System.currentTimeMillis();
+//        //生成签名
+//        String sign = ScheduleUtil.createSign(timestamp);
+//
+//        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+//
+//
 //        JsonParser parser = new JsonParser();
 //        JsonObject jsonObject = parser.parse(doPost).getAsJsonObject();
 //        JsonArray jsonArray = jsonObject.get("data").getAsJsonObject().get("dataList").getAsJsonArray();
 //
-//        url = ScheduleUtil.apiUrl + "eduyear/update";
-//        for (JsonElement jsonElement : jsonArray) {
-//            JsonObject dataOne = jsonElement.getAsJsonObject();
-//            dataOne.addProperty("schoolDistrictId", "48e0a5ae-6d0b-34dd-f31a-3a12feca72d1");
+//        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
+//        Db use = Db.use(datasource);
+//        String sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_grade'";
+//        List<JianyueData> gradeList = use.query(sql, JianyueData.class);
+//        Map<String, String> gradeMap = new HashMap<>();
+//        for (JianyueData jianyueData : gradeList) {
+//            gradeMap.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+//        }
+//
+//        url  = ScheduleUtil.apiUrl + "class/update";
+//        paramJson = new JsonObject();
+//        paramJson.addProperty("pageSize", 200);
+//        paramJson.addProperty("pageIndex", 1);
+//
+//        timestamp = System.currentTimeMillis();
+//        //生成签名
+//        sign = ScheduleUtil.createSign(timestamp);
+//
+//        doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+//
+//        sql = "SELECT * FROM base_class WHERE delete_mark = 0 and is_graduate = 1";
+//        List<BaseClass> dataList = use.query(sql, BaseClass.class);
+//        Map<String, BaseClass> classMap = new HashMap<>();
+//        for (BaseClass baseClass : dataList) {
+//            classMap.put(baseClass.getId().toString(), baseClass);
+//        }
+//
+//        sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_class'";
+//        List<JianyueData> classList = use.query(sql, JianyueData.class);
+//        Map<String, BaseClass> classMap2 = new HashMap<>();
+//        Map<String, String> classMap3 = new HashMap<>();
+//        for (JianyueData jianyueData : classList) {
+//            classMap2.put(jianyueData.getJianyueId(), classMap.get(jianyueData.getSourceId()));
+//            classMap3.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+//        }
+//
+//        sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_classroom'";
+//        List<JianyueData> classroomList = use.query(sql, JianyueData.class);
+//        Map<String, String> classroomMap = new HashMap<>();
+//        for (JianyueData jianyueData : classroomList) {
+//            classroomMap.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+//        }
+//
+//        url  = ScheduleUtil.apiUrl + "class/update";
+//        DataUtil dataUtil = new DataUtil();
+//        String currenSemeter = dataUtil.getCurrenSemeter();
+//
+//        for (BaseClass baseClass : classMap2.values()) {
+//            if(baseClass == null){
+//                continue;
+//            }
+//            paramJson = new JsonObject();
+//            paramJson.addProperty("name", baseClass.getName());
+//
+//            paramJson.addProperty("semesterSerialNo", currenSemeter);
+//            paramJson.addProperty("eduYearSerialNo", gradeMap.get(baseClass.getOrgId() + "_" + baseClass.getGradeId().toString()));
+//            paramJson.addProperty("extendId", baseClass.getId());
+//            paramJson.addProperty("classRoomSerialNo", classroomMap.get(baseClass.getClassroomId().toString()));
+//            paramJson.addProperty("serialNo", classMap3.get(baseClass.getId().toString()));
 //
 //            timestamp = System.currentTimeMillis();
 //            //生成签名
 //            sign = ScheduleUtil.createSign(timestamp);
-//            String result = ScheduleUtil.doPost(url, dataOne.toString(), sign, timestamp);
+//            String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
 //
-//            System.out.println(result);
+//            System.out.println(baseClass.getName() + " -> " + result);
 //        }
-    }
-
-    @Test
-    void insertGrade() throws Exception {
-        String url  = ScheduleUtil.apiUrl + "eduyear/create";
-        JsonObject paramJson = new JsonObject();
-        paramJson.addProperty("pageSize", 40);
-        paramJson.addProperty("pageIndex", 1);
-
-        long timestamp = System.currentTimeMillis();
-        //生成签名
-        String sign = ScheduleUtil.createSign(timestamp);
-
-        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
-        Db use = Db.use(datasource);
-
-        JsonParser jsonParser = new JsonParser();
-
-        Map<String, String> idMap = new HashMap<>();
-        //删除学生
-        String sql = "SELECT * FROM jianyue_data WHERE table_name = 'xjr_department'";
-        List<JianyueData> gradeList = use.query(sql, JianyueData.class);
-        for (JianyueData jianyueData : gradeList) {
-            if("48e0a5ae-6d0b-34dd-f31a-3a12feca72d1".equals(jianyueData.getJianyueId())){
-                continue;
-            }
-
-            sql = "select * from base_grade where delete_mark = 0 and status = 1";
-            List<BaseGrade> list = use.query(sql, BaseGrade.class);
-            for (BaseGrade baseGrade : list) {
-                url = ScheduleUtil.apiUrl + "eduyear/create";
-                JsonObject dataJson = new JsonObject();
-                dataJson.addProperty("schoolDistrictId", jianyueData.getJianyueId());
-                dataJson.addProperty("period", 4);
-                dataJson.addProperty("startYear", baseGrade.getTitle().replaceAll("年", ""));
-                dataJson.addProperty("extendId", baseGrade.getId().toString());
-                dataJson.addProperty("year", 3);
-
-                //获取时间戳
-                timestamp = System.currentTimeMillis();
-                //生成签名
-                sign = ScheduleUtil.createSign(timestamp);
-
-                String result = ScheduleUtil.doPost(url, dataJson.toString(), sign, timestamp);
-
-                JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
-
-                idMap.put(jianyueData.getSourceId() + "_" + baseGrade.getId().toString(), resultJson.get("data").getAsString());
-            }
-        }
-        DataUtil dataUtil = new DataUtil();
-        dataUtil.insertRecord(use, "base_grade", idMap);
-    }
-
-    @Test
-    void selectSchoolDistrict() throws Exception {
-        String url  = ScheduleUtil.apiUrl + "SchoolDistrict/page";
-        JsonObject paramJson = new JsonObject();
-        paramJson.addProperty("pageSize", 40);
-        paramJson.addProperty("pageIndex", 1);
-
-        long timestamp = System.currentTimeMillis();
-        //生成签名
-        String sign = ScheduleUtil.createSign(timestamp);
-
-        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
-        System.out.println(doPost);
-
-    }
-
-    @Test
-    void updateClass() throws Exception {
-        String url  = ScheduleUtil.apiUrl + "EduYear/page";
-        JsonObject paramJson = new JsonObject();
-        paramJson.addProperty("pageSize", 40);
-        paramJson.addProperty("pageIndex", 1);
-
-        long timestamp = System.currentTimeMillis();
-        //生成签名
-        String sign = ScheduleUtil.createSign(timestamp);
-
-        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
-
-
-        JsonParser parser = new JsonParser();
-        JsonObject jsonObject = parser.parse(doPost).getAsJsonObject();
-        JsonArray jsonArray = jsonObject.get("data").getAsJsonObject().get("dataList").getAsJsonArray();
-
-        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
-        Db use = Db.use(datasource);
-        String sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_grade'";
-        List<JianyueData> gradeList = use.query(sql, JianyueData.class);
-        Map<String, String> gradeMap = new HashMap<>();
-        for (JianyueData jianyueData : gradeList) {
-            gradeMap.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
-        }
-
-        url  = ScheduleUtil.apiUrl + "class/update";
-        paramJson = new JsonObject();
-        paramJson.addProperty("pageSize", 200);
-        paramJson.addProperty("pageIndex", 1);
-
-        timestamp = System.currentTimeMillis();
-        //生成签名
-        sign = ScheduleUtil.createSign(timestamp);
-
-        doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
-
-        sql = "SELECT * FROM base_class WHERE delete_mark = 0 and is_graduate = 1";
-        List<BaseClass> dataList = use.query(sql, BaseClass.class);
-        Map<String, BaseClass> classMap = new HashMap<>();
-        for (BaseClass baseClass : dataList) {
-            classMap.put(baseClass.getId().toString(), baseClass);
-        }
-
-        sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_class'";
-        List<JianyueData> classList = use.query(sql, JianyueData.class);
-        Map<String, BaseClass> classMap2 = new HashMap<>();
-        Map<String, String> classMap3 = new HashMap<>();
-        for (JianyueData jianyueData : classList) {
-            classMap2.put(jianyueData.getJianyueId(), classMap.get(jianyueData.getSourceId()));
-            classMap3.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
-        }
-
-        sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_classroom'";
-        List<JianyueData> classroomList = use.query(sql, JianyueData.class);
-        Map<String, String> classroomMap = new HashMap<>();
-        for (JianyueData jianyueData : classroomList) {
-            classroomMap.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
-        }
-
-        url  = ScheduleUtil.apiUrl + "class/update";
-        DataUtil dataUtil = new DataUtil();
-        String currenSemeter = dataUtil.getCurrenSemeter();
-
-        for (BaseClass baseClass : classMap2.values()) {
-            if(baseClass == null){
-                continue;
-            }
-            paramJson = new JsonObject();
-            paramJson.addProperty("name", baseClass.getName());
-
-            paramJson.addProperty("semesterSerialNo", currenSemeter);
-            paramJson.addProperty("eduYearSerialNo", gradeMap.get(baseClass.getOrgId() + "_" + baseClass.getGradeId().toString()));
-            paramJson.addProperty("extendId", baseClass.getId());
-            paramJson.addProperty("classRoomSerialNo", classroomMap.get(baseClass.getClassroomId().toString()));
-            paramJson.addProperty("serialNo", classMap3.get(baseClass.getId().toString()));
-
-            timestamp = System.currentTimeMillis();
-            //生成签名
-            sign = ScheduleUtil.createSign(timestamp);
-            String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
-
-            System.out.println(baseClass.getName() + " -> " + result);
-        }
-    }
-
-
-}
+//    }
+//
+//
+//}

+ 5 - 0
src/test/java/com/xjrsoft/module/personnel/controller/StundentFaceProcessControllerTest.java

@@ -24,6 +24,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.Charset;
+import java.util.Base64;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -102,6 +103,10 @@ class StundentFaceProcessControllerTest {
 
         imageBytes = ImageUtil.compressUnderSize(imageBytes, 204800);
 
+        String base64String = Base64.getEncoder().encodeToString(imageBytes);
+        System.out.println("-----------------------------------------------------");
+        System.out.println(base64String);
+
         File file = new File("C:\\Users\\14263\\Downloads\\2023级剩余学籍找\\20240607-194930-压缩.jpg");
         try (FileOutputStream fos = new FileOutputStream(file)) {
             fos.write(imageBytes);

+ 73 - 0
src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

@@ -3213,5 +3213,78 @@ public class FreeMarkerGeneratorTest {
 
         apiGeneratorService.generateCodes(params);
     }
+    @Test
+    public void gcEnrollmentPlan() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("enrollment_plan");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("phoenix");//作者名称
+        params.setPackageName("student");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
 
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcEnrollmentPlanMajorSet() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("enrollment_plan_major_set");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("phoenix");//作者名称
+        params.setPackageName("student");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcEnrollmentPlanGraduateSchool() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("enrollment_plan_graduate_school");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("phoenix");//作者名称
+        params.setPackageName("student");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
 }

+ 45 - 0
src/test/java/com/xjrsoft/xjrsoftboot/StringTest.java

@@ -0,0 +1,45 @@
+package com.xjrsoft.xjrsoftboot;
+
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
+import com.xjrsoft.module.base.entity.BaseClass;
+import org.junit.jupiter.api.Test;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author dzx
+ * @date 2024/6/14
+ */
+public class StringTest {
+
+    @Test
+    void test2(){
+
+        System.out.println(underscoreToCamel("create_user_id"));
+    }
+
+    public static String underscoreToCamel(String input) {
+        if (input == null) {
+            return input;
+        }
+
+        StringBuilder builder = new StringBuilder();
+        boolean nextUpperCase = false;
+
+        for (char c : input.toCharArray()) {
+            if (c == '_') {
+                nextUpperCase = true;
+            } else {
+                if (nextUpperCase) {
+                    builder.append(Character.toUpperCase(c));
+                    nextUpperCase = false;
+                } else {
+                    builder.append(Character.toLowerCase(c));
+                }
+            }
+        }
+
+        return builder.toString();
+    }
+}