dzx 1 год назад
Родитель
Сommit
7737148851
100 измененных файлов с 3318 добавлено и 176 удалено
  1. 3 23
      src/main/java/com/xjrsoft/common/advice/WorkflowResponseBodyAdvice.java
  2. 7 5
      src/main/java/com/xjrsoft/module/activity/controller/ActivityEnrollController.java
  3. 30 22
      src/main/java/com/xjrsoft/module/activity/controller/ActivityInfoController.java
  4. 28 0
      src/main/java/com/xjrsoft/module/activity/dto/ActivityEnrollExportDto.java
  5. 12 1
      src/main/java/com/xjrsoft/module/activity/dto/ActivityInfoPageDto.java
  6. 2 1
      src/main/java/com/xjrsoft/module/activity/mapper/ActivityEnrollMapper.java
  7. 2 1
      src/main/java/com/xjrsoft/module/activity/service/IActivityEnrollService.java
  8. 2 2
      src/main/java/com/xjrsoft/module/activity/service/IActivityInfoService.java
  9. 2 1
      src/main/java/com/xjrsoft/module/activity/service/impl/ActivityEnrollServiceImpl.java
  10. 6 32
      src/main/java/com/xjrsoft/module/activity/service/impl/ActivityInfoServiceImpl.java
  11. 3 0
      src/main/java/com/xjrsoft/module/activity/vo/ActivityInfoPageVo.java
  12. 14 4
      src/main/java/com/xjrsoft/module/banding/controller/BandingTaskClassController.java
  13. 25 1
      src/main/java/com/xjrsoft/module/banding/controller/BandingTaskMajorConditionController.java
  14. 6 1
      src/main/java/com/xjrsoft/module/banding/dto/BandingTaskClassPageDto.java
  15. 7 1
      src/main/java/com/xjrsoft/module/banding/dto/BandingTaskMajorConditionListDto.java
  16. 0 1
      src/main/java/com/xjrsoft/module/banding/dto/ChangeClassDto.java
  17. 14 4
      src/main/java/com/xjrsoft/module/banding/dto/StudentDto.java
  18. 3 3
      src/main/java/com/xjrsoft/module/banding/mapper/BandingTaskClassStudentMapper.java
  19. 5 0
      src/main/java/com/xjrsoft/module/banding/mapper/BandingTaskMajorConditionMapper.java
  20. 2 3
      src/main/java/com/xjrsoft/module/banding/service/IBandingTaskClassService.java
  21. 3 2
      src/main/java/com/xjrsoft/module/banding/service/IBandingTaskClassStudentService.java
  22. 4 1
      src/main/java/com/xjrsoft/module/banding/service/IBandingTaskMajorConditionService.java
  23. 13 0
      src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassServiceImpl.java
  24. 7 5
      src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassStudentServiceImpl.java
  25. 7 0
      src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskMajorConditionServiceImpl.java
  26. 2 2
      src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskServiceImpl.java
  27. 0 2
      src/main/java/com/xjrsoft/module/banding/vo/BandingTaskClassSureListVo.java
  28. 0 3
      src/main/java/com/xjrsoft/module/banding/vo/BandingTaskPageVo.java
  29. 258 0
      src/main/java/com/xjrsoft/module/courseTable/controller/SecondCourseController.java
  30. 75 0
      src/main/java/com/xjrsoft/module/courseTable/dto/AddSecondCourseDto.java
  31. 37 0
      src/main/java/com/xjrsoft/module/courseTable/dto/AddSecondCourseEnrollDto.java
  32. 42 0
      src/main/java/com/xjrsoft/module/courseTable/dto/AddSecondCourseEnrollRangeDto.java
  33. 50 0
      src/main/java/com/xjrsoft/module/courseTable/dto/AddSecondCourseTimeDto.java
  34. 25 0
      src/main/java/com/xjrsoft/module/courseTable/dto/SecondCourseEnrollPageDto.java
  35. 31 0
      src/main/java/com/xjrsoft/module/courseTable/dto/SecondCoursePageDto.java
  36. 24 0
      src/main/java/com/xjrsoft/module/courseTable/dto/UpdateSecondCourseDto.java
  37. 26 0
      src/main/java/com/xjrsoft/module/courseTable/dto/UserEnrollDto.java
  38. 137 0
      src/main/java/com/xjrsoft/module/courseTable/entity/SecondCourse.java
  39. 89 0
      src/main/java/com/xjrsoft/module/courseTable/entity/SecondCourseEnroll.java
  40. 94 0
      src/main/java/com/xjrsoft/module/courseTable/entity/SecondCourseEnrollRange.java
  41. 100 0
      src/main/java/com/xjrsoft/module/courseTable/entity/SecondCourseTime.java
  42. 16 0
      src/main/java/com/xjrsoft/module/courseTable/mapper/SecondCourseEnrollMapper.java
  43. 16 0
      src/main/java/com/xjrsoft/module/courseTable/mapper/SecondCourseEnrollRangeMapper.java
  44. 32 0
      src/main/java/com/xjrsoft/module/courseTable/mapper/SecondCourseMapper.java
  45. 16 0
      src/main/java/com/xjrsoft/module/courseTable/mapper/SecondCourseTimeMapper.java
  46. 54 0
      src/main/java/com/xjrsoft/module/courseTable/service/ISecondCourseService.java
  47. 205 0
      src/main/java/com/xjrsoft/module/courseTable/service/impl/SecondCourseServiceImpl.java
  48. 43 0
      src/main/java/com/xjrsoft/module/courseTable/vo/SecondCourseEnrollExcelVo.java
  49. 43 0
      src/main/java/com/xjrsoft/module/courseTable/vo/SecondCourseEnrollRangeVo.java
  50. 54 0
      src/main/java/com/xjrsoft/module/courseTable/vo/SecondCourseEnrollVo.java
  51. 69 0
      src/main/java/com/xjrsoft/module/courseTable/vo/SecondCoursePageVo.java
  52. 51 0
      src/main/java/com/xjrsoft/module/courseTable/vo/SecondCourseTimeVo.java
  53. 87 0
      src/main/java/com/xjrsoft/module/courseTable/vo/SecondCourseVo.java
  54. 10 1
      src/main/java/com/xjrsoft/module/form/service/impl/FormExecuteServiceImpl.java
  55. 1 1
      src/main/java/com/xjrsoft/module/organization/controller/UserController.java
  56. 0 8
      src/main/java/com/xjrsoft/module/personnel/controller/FaceManagementController.java
  57. 109 0
      src/main/java/com/xjrsoft/module/personnel/controller/PersonnelHealthyController.java
  58. 14 2
      src/main/java/com/xjrsoft/module/personnel/controller/TeacherFaceProcessController.java
  59. 42 0
      src/main/java/com/xjrsoft/module/personnel/dto/AddPersonnelHealthyDto.java
  60. 25 0
      src/main/java/com/xjrsoft/module/personnel/dto/PersonnelHealthyPageDto.java
  61. 24 0
      src/main/java/com/xjrsoft/module/personnel/dto/UpdatePersonnelHealthyDto.java
  62. 94 0
      src/main/java/com/xjrsoft/module/personnel/entity/PersonnelHealthy.java
  63. 16 0
      src/main/java/com/xjrsoft/module/personnel/mapper/PersonnelHealthyMapper.java
  64. 14 0
      src/main/java/com/xjrsoft/module/personnel/service/IPersonnelHealthyService.java
  65. 19 0
      src/main/java/com/xjrsoft/module/personnel/service/impl/PersonnelHealthyServiceImpl.java
  66. 73 0
      src/main/java/com/xjrsoft/module/personnel/vo/PersonnelHealthyPageVo.java
  67. 43 0
      src/main/java/com/xjrsoft/module/personnel/vo/PersonnelHealthyVo.java
  68. 2 4
      src/main/java/com/xjrsoft/module/student/controller/BaseStudentInfoController.java
  69. 19 2
      src/main/java/com/xjrsoft/module/student/controller/BaseStudentScholarshipApplicantController.java
  70. 22 7
      src/main/java/com/xjrsoft/module/student/controller/BaseStudentScholarshipCategoryController.java
  71. 162 0
      src/main/java/com/xjrsoft/module/student/controller/BaseStudentScholarshipReleaseController.java
  72. 0 7
      src/main/java/com/xjrsoft/module/student/controller/StudentManagerController.java
  73. 0 1
      src/main/java/com/xjrsoft/module/student/dto/ActiveAccountDto.java
  74. 6 0
      src/main/java/com/xjrsoft/module/student/dto/AddBaseStudentScholarshipCategoryDto.java
  75. 38 0
      src/main/java/com/xjrsoft/module/student/dto/AddBaseStudentScholarshipReleaseDto.java
  76. 42 0
      src/main/java/com/xjrsoft/module/student/dto/AddStudentScholarshipDto.java
  77. 40 0
      src/main/java/com/xjrsoft/module/student/dto/BaseStudentScholarshipReleasePageDto.java
  78. 3 0
      src/main/java/com/xjrsoft/module/student/dto/BaseStudentUserPageDto.java
  79. 24 0
      src/main/java/com/xjrsoft/module/student/dto/UpdateBaseStudentScholarshipReleaseDto.java
  80. 5 1
      src/main/java/com/xjrsoft/module/student/entity/BaseMajor.java
  81. 12 1
      src/main/java/com/xjrsoft/module/student/entity/BaseStudentScholarshipApplicant.java
  82. 89 0
      src/main/java/com/xjrsoft/module/student/entity/BaseStudentScholarshipRelease.java
  83. 6 0
      src/main/java/com/xjrsoft/module/student/mapper/BaseStudentScholarshipCategoryMapper.java
  84. 21 0
      src/main/java/com/xjrsoft/module/student/mapper/BaseStudentScholarshipReleaseMapper.java
  85. 7 0
      src/main/java/com/xjrsoft/module/student/service/IBaseStudentScholarshipApplicantService.java
  86. 7 0
      src/main/java/com/xjrsoft/module/student/service/IBaseStudentScholarshipCategoryService.java
  87. 19 0
      src/main/java/com/xjrsoft/module/student/service/IBaseStudentScholarshipReleaseService.java
  88. 1 1
      src/main/java/com/xjrsoft/module/student/service/IBaseStudentSchoolRollService.java
  89. 92 2
      src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentScholarshipApplicantServiceImpl.java
  90. 20 11
      src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentScholarshipCategoryServiceImpl.java
  91. 26 0
      src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentScholarshipReleaseServiceImpl.java
  92. 1 1
      src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentSchoolRollServiceImpl.java
  93. 22 3
      src/main/java/com/xjrsoft/module/student/service/impl/StudentManagerServiceImpl.java
  94. 9 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipCategoryPageVo.java
  95. 59 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipCategoryStatisticPageVo.java
  96. 6 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipCategoryVo.java
  97. 75 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipReleasePageVo.java
  98. 75 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipReleaseRecordVo.java
  99. 29 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipReleaseVo.java
  100. 12 2
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentSompleInfoVo.java

+ 3 - 23
src/main/java/com/xjrsoft/common/advice/WorkflowResponseBodyAdvice.java

@@ -3,11 +3,7 @@ package com.xjrsoft.common.advice;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.convert.Convert;
-import cn.hutool.core.util.CharsetUtil;
-import cn.hutool.core.util.ClassUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.ReflectUtil;
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.*;
 import cn.hutool.db.Entity;
 import cn.hutool.extra.servlet.ServletUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -19,7 +15,6 @@ import com.xjrsoft.common.enums.YesOrNoEnum;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.model.result.R;
 import com.xjrsoft.common.page.PageOutput;
-import com.xjrsoft.common.utils.RedisUtil;
 import com.xjrsoft.module.workflow.constant.WorkflowConstant;
 import com.xjrsoft.module.workflow.entity.WorkflowDraft;
 import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
@@ -28,13 +23,7 @@ import com.xjrsoft.module.workflow.model.WorkflowListResult;
 import com.xjrsoft.module.workflow.service.IWorkflowDraftService;
 import com.xjrsoft.module.workflow.service.IWorkflowFormRelationService;
 import com.xjrsoft.module.workflow.service.IWorkflowSchemaService;
-import javassist.CannotCompileException;
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.CtField;
-import javassist.CtMethod;
-import javassist.LoaderClassPath;
-import javassist.NotFoundException;
+import javassist.*;
 import lombok.AllArgsConstructor;
 import lombok.NonNull;
 import lombok.extern.slf4j.Slf4j;
@@ -52,12 +41,7 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -70,10 +54,6 @@ import java.util.stream.Collectors;
 @RestControllerAdvice
 @AllArgsConstructor
 public class WorkflowResponseBodyAdvice implements ResponseBodyAdvice<Object> {
-
-
-    private RedisUtil redisUtil;
-
     private IWorkflowFormRelationService formRelationService;
 
     private HistoryService historyService;

+ 7 - 5
src/main/java/com/xjrsoft/module/activity/controller/ActivityEnrollController.java

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.module.activity.dto.ActivityEnrollExportDto;
 import com.xjrsoft.module.activity.dto.ActivityEnrollPageDto;
 import com.xjrsoft.module.activity.dto.AddActivityEnrollDto;
 import com.xjrsoft.module.activity.dto.ChangeStatusDto;
@@ -119,7 +120,7 @@ public class ActivityEnrollController {
 
     @PostMapping("/export-query")
     @ApiOperation(value = "导出列表")
-    public ResponseEntity<byte[]> exportData(@Valid @RequestBody ActivityEnrollPageDto dto) {
+    public ResponseEntity<byte[]> exportData(@Valid @RequestBody ActivityEnrollExportDto dto) {
         List<ActivityEnrollPageVo> listVos = activityEnrollService.getList(dto);
         List<ActivityEnrollExcelVo> list = new ArrayList<>();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
@@ -127,9 +128,10 @@ public class ActivityEnrollController {
             list.add(new ActivityEnrollExcelVo(){{
                 setName(listVo.getName());
                 setMobile(listVo.getMobile());
-                if(listVo.getRoleId() == 2L){
+                if(listVo.getTeacherId() != null){
                     setRoleType("教师");
-                }else if(listVo.getRoleId() == 3L){
+                }
+                if(listVo.getStudentId() != null){
                     setRoleType("学生");
                 }
                 if(listVo.getStatus() == 0){
@@ -145,9 +147,9 @@ public class ActivityEnrollController {
         }
 
         ByteArrayOutputStream bot = new ByteArrayOutputStream();
-        EasyExcel.write(bot, BandingTaskClassExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
+        EasyExcel.write(bot, ActivityEnrollExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
 
-        return RT.fileStream(bot.toByteArray(), "banding" + ExcelTypeEnum.XLSX.getValue());
+        return RT.fileStream(bot.toByteArray(), "enroll" + ExcelTypeEnum.XLSX.getValue());
     }
 
     @PostMapping(value = "/enroll")

+ 30 - 22
src/main/java/com/xjrsoft/module/activity/controller/ActivityInfoController.java

@@ -4,13 +4,20 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.db.Entity;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.module.activity.dto.ActivityEnrollExportDto;
 import com.xjrsoft.module.activity.dto.ActivityEnrollPageDto;
 import com.xjrsoft.module.activity.dto.ActivityInfoPageDto;
 import com.xjrsoft.module.activity.dto.AddActivityInfoDto;
@@ -109,30 +116,33 @@ public class ActivityInfoController {
         }
 
         List<ActivityEnrollRangeVo> userRelationList = new ArrayList<>();
-        for (ActivityEnroll jsonElement : activityInfo.getActivityEnrollList()) {
-            ActivityEnrollRangeVo relationDto = BeanUtil.toBean(jsonElement, ActivityEnrollRangeVo.class);
-            if(relationDto.getUserId() != null){
-                XjrUser xjrUser = xjrUserService.getById(relationDto.getUserId());
-                if(xjrUser != null){
-                    relationDto.setName(xjrUser.getName());
-                }
-            }else if(relationDto.getDeptId() != null){
-                Department department = departmentService.getById(relationDto.getDeptId());
-                if(department != null){
-                    relationDto.setName(department.getName());
-                }
-
-            }else if(relationDto.getClassId() != null){
-                BaseClass aClass = classService.getById(relationDto.getClassId());
-                if(aClass != null){
-                    relationDto.setName(aClass.getName());
+        if(activityInfo.getEnrollRange() != null && !activityInfo.getEnrollRange().isEmpty()){
+            JSONArray asJsonArray = JSONUtil.parseArray(activityInfo.getEnrollRange());
+            for (Object jsonElement : asJsonArray) {
+                ActivityEnrollRangeVo relationDto = JSONUtil.toBean(JSONUtil.parseObj(jsonElement), ActivityEnrollRangeVo.class);
+                if(relationDto.getUserId() != null){
+                    XjrUser xjrUser = xjrUserService.getById(relationDto.getUserId());
+                    if(xjrUser != null){
+                        relationDto.setName(xjrUser.getName());
+                    }
+                }else if(relationDto.getDeptId() != null){
+                    Department department = departmentService.getById(relationDto.getDeptId());
+                    if(department != null){
+                        relationDto.setName(department.getName());
+                    }
+
+                }else if(relationDto.getClassId() != null){
+                    BaseClass aClass = classService.getById(relationDto.getClassId());
+                    if(aClass != null){
+                        relationDto.setName(aClass.getName());
+                    }
                 }
+                userRelationList.add(relationDto);
             }
-            userRelationList.add(relationDto);
         }
         infoVo.setActivityEnrollRangeList(userRelationList);
 
-        ActivityEnrollPageDto dto = new ActivityEnrollPageDto();
+        ActivityEnrollExportDto dto = new ActivityEnrollExportDto();
         dto.setActivityInfoId(id);
         List<ActivityEnrollPageVo> enrollList = enrollService.getList(dto);
         infoVo.setEnrollCount(enrollList.size());
@@ -178,9 +188,7 @@ public class ActivityInfoController {
     @ApiOperation(value = "修改活动信息")
     @SaCheckPermission("activityinfo:edit")
     public RT<Boolean> update(@Valid @RequestBody UpdateActivityInfoDto dto){
-
-        ActivityInfo activityInfo = BeanUtil.toBean(dto, ActivityInfo.class);
-        return RT.ok(activityInfoService.update(activityInfo));
+        return RT.ok(activityInfoService.update(dto));
 
     }
 

+ 28 - 0
src/main/java/com/xjrsoft/module/activity/dto/ActivityEnrollExportDto.java

@@ -0,0 +1,28 @@
+package com.xjrsoft.module.activity.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 活动信息分页查询入参
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ActivityEnrollExportDto {
+
+    @ApiModelProperty("活动id")
+    private Long activityInfoId;
+
+    @ApiModelProperty("状态(0:待确认 1:未参与 2:已参与)")
+    private Integer status;
+
+    @ApiModelProperty("登录人id")
+    private Long loginUserId;
+
+}

+ 12 - 1
src/main/java/com/xjrsoft/module/activity/dto/ActivityInfoPageDto.java

@@ -19,10 +19,21 @@ public class ActivityInfoPageDto extends PageInput {
     @ApiModelProperty("活动类别(1:校企合作活动 2:赛事活动)")
     private Integer category;
 
-
     @ApiModelProperty("是否有效活动(1:是 0:否)")
     private Integer isEffective;
 
     @ApiModelProperty("登录者id")
     private Long loginUserId;
+
+    @ApiModelProperty("活动名称")
+    private String name;
+
+    @ApiModelProperty("活动类型(xjr_dictionary_detail[match_activity_type])")
+    private String type;
+
+    @ApiModelProperty("组织部门(xjr_department)")
+    private Long orgId;
+
+    @ApiModelProperty("状态(0:未发布 1:报名中 2:报名结束 3:活动结束)")
+    private Integer status;
 }

+ 2 - 1
src/main/java/com/xjrsoft/module/activity/mapper/ActivityEnrollMapper.java

@@ -2,6 +2,7 @@ package com.xjrsoft.module.activity.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.activity.dto.ActivityEnrollExportDto;
 import com.xjrsoft.module.activity.dto.ActivityEnrollPageDto;
 import com.xjrsoft.module.activity.entity.ActivityEnroll;
 import com.xjrsoft.module.activity.vo.ActivityEnrollPageVo;
@@ -21,5 +22,5 @@ public interface ActivityEnrollMapper extends MPJBaseMapper<ActivityEnroll> {
 
     Page<ActivityEnrollPageVo> getPage(Page<ActivityEnrollPageVo> page, @Param("dto") ActivityEnrollPageDto dto);
 
-    List<ActivityEnrollPageVo> getList(@Param("dto") ActivityEnrollPageDto dto);
+    List<ActivityEnrollPageVo> getList(@Param("dto") ActivityEnrollExportDto dto);
 }

+ 2 - 1
src/main/java/com/xjrsoft/module/activity/service/IActivityEnrollService.java

@@ -2,6 +2,7 @@ package com.xjrsoft.module.activity.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.activity.dto.ActivityEnrollExportDto;
 import com.xjrsoft.module.activity.dto.ActivityEnrollPageDto;
 import com.xjrsoft.module.activity.dto.AddActivityEnrollDto;
 import com.xjrsoft.module.activity.entity.ActivityEnroll;
@@ -43,5 +44,5 @@ public interface IActivityEnrollService extends MPJBaseService<ActivityEnroll> {
 
     Page<ActivityEnrollPageVo> getPage(Page<ActivityEnrollPageVo> page, ActivityEnrollPageDto dto);
 
-    List<ActivityEnrollPageVo> getList(ActivityEnrollPageDto dto);
+    List<ActivityEnrollPageVo> getList(ActivityEnrollExportDto dto);
 }

+ 2 - 2
src/main/java/com/xjrsoft/module/activity/service/IActivityInfoService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.activity.dto.ActivityInfoPageDto;
 import com.xjrsoft.module.activity.dto.AddActivityInfoDto;
+import com.xjrsoft.module.activity.dto.UpdateActivityInfoDto;
 import com.xjrsoft.module.activity.entity.ActivityInfo;
 import com.xjrsoft.module.activity.vo.ActivityInfoPageVo;
 
@@ -27,10 +28,9 @@ public interface IActivityInfoService extends MPJBaseService<ActivityInfo> {
     /**
     * 更新
     *
-    * @param activityInfo
     * @return
     */
-    Boolean update(ActivityInfo activityInfo);
+    Boolean update(UpdateActivityInfoDto dto);
 
     /**
     * 删除

+ 2 - 1
src/main/java/com/xjrsoft/module/activity/service/impl/ActivityEnrollServiceImpl.java

@@ -6,6 +6,7 @@ import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.activity.dto.ActivityEnrollExportDto;
 import com.xjrsoft.module.activity.dto.ActivityEnrollPageDto;
 import com.xjrsoft.module.activity.dto.AddActivityEnrollDto;
 import com.xjrsoft.module.activity.dto.AddActivityEnrollRangeDto;
@@ -126,7 +127,7 @@ public class ActivityEnrollServiceImpl extends MPJBaseServiceImpl<ActivityEnroll
     }
 
     @Override
-    public List<ActivityEnrollPageVo> getList(ActivityEnrollPageDto dto) {
+    public List<ActivityEnrollPageVo> getList(ActivityEnrollExportDto dto) {
         return this.baseMapper.getList(dto);
     }
 }

+ 6 - 32
src/main/java/com/xjrsoft/module/activity/service/impl/ActivityInfoServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.xjrsoft.module.activity.dto.ActivityInfoPageDto;
 import com.xjrsoft.module.activity.dto.AddActivityInfoDto;
+import com.xjrsoft.module.activity.dto.UpdateActivityInfoDto;
 import com.xjrsoft.module.activity.entity.ActivityEnroll;
 import com.xjrsoft.module.activity.entity.ActivityEnrollRange;
 import com.xjrsoft.module.activity.entity.ActivityInfo;
@@ -14,6 +15,7 @@ import com.xjrsoft.module.activity.mapper.ActivityEnrollRangeMapper;
 import com.xjrsoft.module.activity.mapper.ActivityInfoMapper;
 import com.xjrsoft.module.activity.service.IActivityInfoService;
 import com.xjrsoft.module.activity.vo.ActivityInfoPageVo;
+import com.yomahub.liteflow.util.JsonUtil;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -46,7 +48,7 @@ public class ActivityInfoServiceImpl extends MPJBaseServiceImpl<ActivityInfoMapp
                 activityEnrollRange.setActivityInfoId(activityInfo.getId());
                 activityInfoActivityEnrollRangeMapper.insert(activityEnrollRange);
             }
-            activityInfo.setEnrollRange(activityInfo.getActivityEnrollRangeList().toString());
+            activityInfo.setEnrollRange(JsonUtil.toJsonString(dto.getActivityEnrollRangeList()));
         }
         activityInfoActivityInfoMapper.insert(activityInfo);
         return true;
@@ -54,7 +56,9 @@ public class ActivityInfoServiceImpl extends MPJBaseServiceImpl<ActivityInfoMapp
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean update(ActivityInfo activityInfo) {
+    public Boolean update(UpdateActivityInfoDto dto) {
+        ActivityInfo activityInfo = BeanUtil.toBean(dto, ActivityInfo.class);
+        activityInfo.setEnrollRange(JsonUtil.toJsonString(dto.getActivityEnrollRangeList()));
         activityInfoActivityInfoMapper.updateById(activityInfo);
         //********************************* ActivityEnrollRange  增删改  开始 *******************************************/
         {
@@ -84,36 +88,6 @@ public class ActivityInfoServiceImpl extends MPJBaseServiceImpl<ActivityInfoMapp
             }
         }
         //********************************* ActivityEnrollRange  增删改  结束 *******************************************/
-
-        //********************************* ActivityEnroll  增删改  开始 *******************************************/
-        {
-            // 查出所有子级的id
-            List<ActivityEnroll> activityEnrollList = activityInfoActivityEnrollMapper.selectList(Wrappers.lambdaQuery(ActivityEnroll.class).eq(ActivityEnroll::getActivityInfoId, activityInfo.getId()).select(ActivityEnroll::getId));
-            List<Long> activityEnrollIds = activityEnrollList.stream().map(ActivityEnroll::getId).collect(Collectors.toList());
-            //原有子表单 没有被删除的主键
-            List<Long> activityEnrollOldIds = activityInfo.getActivityEnrollList().stream().map(ActivityEnroll::getId).filter(Objects::nonNull).collect(Collectors.toList());
-            //找到需要删除的id
-            List<Long> activityEnrollRemoveIds = activityEnrollIds.stream().filter(item -> !activityEnrollOldIds.contains(item)).collect(Collectors.toList());
-
-            for (ActivityEnroll activityEnroll : activityInfo.getActivityEnrollList()) {
-                //如果不等于空则修改
-                if (activityEnroll.getId() != null) {
-                    activityInfoActivityEnrollMapper.updateById(activityEnroll);
-                }
-                //如果等于空 则新增
-                else {
-                    //已经不存在的id 删除
-                    activityEnroll.setActivityInfoId(activityInfo.getId());
-                    activityInfoActivityEnrollMapper.insert(activityEnroll);
-                }
-            }
-            //已经不存在的id 删除
-            if(activityEnrollRemoveIds.size() > 0){
-                activityInfoActivityEnrollMapper.deleteBatchIds(activityEnrollRemoveIds);
-            }
-        }
-        //********************************* ActivityEnroll  增删改  结束 *******************************************/
-
         return true;
     }
 

+ 3 - 0
src/main/java/com/xjrsoft/module/activity/vo/ActivityInfoPageVo.java

@@ -52,6 +52,9 @@ public class ActivityInfoPageVo {
     */
     @ApiModelProperty("组织部门(xjr_department)")
     private Long orgId;
+
+    @ApiModelProperty("组织部门名称")
+    private String orgCn;
     /**
     * 报名结束时间
     */

+ 14 - 4
src/main/java/com/xjrsoft/module/banding/controller/BandingTaskClassController.java

@@ -138,6 +138,8 @@ public class BandingTaskClassController {
     public RT<Boolean> update(@Valid @RequestBody List<UpdateBandingClassDto> dtoList){
         List<BandingTaskClass> insList = new ArrayList<>();
         List<BandingTaskClass> updList = new ArrayList<>();
+
+        List<BandingTaskClass> updNullList = new ArrayList<>();
         List<String> errorList = new ArrayList<>();
         for (UpdateBandingClassDto dto : dtoList) {
             if(dto.getSortCode() != null){
@@ -155,16 +157,24 @@ public class BandingTaskClassController {
             BandingTaskClass bandingTask = BeanUtil.toBean(dto, BandingTaskClass.class);
             if(bandingTask.getId() != null){
                 bandingTask.setModifyDate(new Date());
-                updList.add(bandingTask);
+                if(bandingTask.getSortCode() == null){
+                    updNullList.add(bandingTask);
+                }else{
+                    updList.add(bandingTask);
+                }
             }else{
                 bandingTask.setCreateDate(new Date());
                 insList.add(bandingTask);
             }
-
         }
         if(!errorList.isEmpty()){
             return RT.error(errorList.toString().replace("[", "").replace("]", "") + ",分班排序重复");
         }
+
+        if(!updNullList.isEmpty()){
+            bandingTaskClassService.updateNull(updNullList);
+        }
+
         boolean saveBatch = bandingTaskClassService.saveBatch(insList);
         boolean isSuccess = bandingTaskClassService.updateBatchById(updList);
         return RT.ok(isSuccess);
@@ -240,7 +250,7 @@ public class BandingTaskClassController {
     @ApiOperation(value = "满足学生")
     @SaCheckPermission("bandingTaskClass:satisfy-student")
     public RT<List<BaseNewStudentPageDto>> satisfyStudent(@Valid StudentDto dto){
-        List<BaseNewStudentPageDto> list = classStudentService.satisfyStudent(dto.getBandingTaskClassId());
+        List<BaseNewStudentPageDto> list = classStudentService.satisfyStudent(dto);
         return RT.ok(list);
     }
 
@@ -248,7 +258,7 @@ public class BandingTaskClassController {
     @ApiOperation(value = "剩余学生")
     @SaCheckPermission("bandingTaskClass:surplus-student")
     public RT<List<BaseNewStudentPageDto>> surplusStudent(@Valid StudentDto dto){
-        List<BaseNewStudentPageDto> list = classStudentService.surplusStudent(dto.getBandingTaskClassId());
+        List<BaseNewStudentPageDto> list = classStudentService.surplusStudent(dto);
         return RT.ok(list);
     }
 

+ 25 - 1
src/main/java/com/xjrsoft/module/banding/controller/BandingTaskMajorConditionController.java

@@ -2,10 +2,15 @@ package com.xjrsoft.module.banding.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.module.banding.dto.BandingTaskClassPageDto;
 import com.xjrsoft.module.banding.dto.BandingTaskMajorConditionListDto;
 import com.xjrsoft.module.banding.dto.SaveMajorConditionDto;
+import com.xjrsoft.module.banding.entity.BandingTask;
 import com.xjrsoft.module.banding.service.IBandingTaskMajorConditionService;
+import com.xjrsoft.module.banding.service.IBandingTaskService;
 import com.xjrsoft.module.banding.vo.BandingTaskMajorConditionListVo;
+import com.xjrsoft.module.student.entity.BaseNewStudent;
+import com.xjrsoft.module.student.service.IBaseNewStudentService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -16,7 +21,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
 * @title: 新生分班任务
@@ -32,11 +40,27 @@ public class BandingTaskMajorConditionController {
 
 
     private final IBandingTaskMajorConditionService conditionService;
-
+    private final IBandingTaskService taskService;
+    private final IBaseNewStudentService newStudentService;
     @GetMapping(value = "/list")
     @ApiOperation(value="专业限制条件列表")
     @SaCheckPermission("bandingtaskmajorcondition:detail")
     public RT<List<BandingTaskMajorConditionListVo>> page(@Valid BandingTaskMajorConditionListDto dto){
+        BandingTask bandingTask = taskService.getById(dto.getBandingTaskId());
+
+        BandingTaskClassPageDto dto2 = new BandingTaskClassPageDto(){{
+            setBandingTaskId(bandingTask.getId());
+            setEnrollType(bandingTask.getEnrollType());
+            setGradeId(bandingTask.getGradeId());
+        }};
+        List<BaseNewStudent> studentMajorId = conditionService.getStudentMajorId(dto2);
+        List<Long> majorIds = new ArrayList<>();
+        Set<Long> collect = studentMajorId.stream().filter(x -> x.getFirstAmbition() != null).map(BaseNewStudent::getFirstAmbition).collect(Collectors.toSet());
+        majorIds.addAll(collect.stream().collect(Collectors.toList()));
+
+        Set<Long> collect2 = studentMajorId.stream().filter(x -> x.getSecondAmbition() != null).map(BaseNewStudent::getSecondAmbition).collect(Collectors.toSet());
+        majorIds.addAll(collect2.stream().collect(Collectors.toList()));
+        dto.setMajorIds(majorIds);
         List<BandingTaskMajorConditionListVo> page = conditionService.getList(dto);
         return RT.ok(page);
     }

+ 6 - 1
src/main/java/com/xjrsoft/module/banding/dto/BandingTaskClassPageDto.java

@@ -1,6 +1,5 @@
 package com.xjrsoft.module.banding.dto;
 
-import com.xjrsoft.common.page.PageInput;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -24,4 +23,10 @@ public class BandingTaskClassPageDto{
 
     @ApiModelProperty("招生类型")
     private String enrollType;
+
+    @ApiModelProperty("班级名称")
+    private String name;
+
+    @ApiModelProperty("专业方向名称")
+    private String majorSetName;
 }

+ 7 - 1
src/main/java/com/xjrsoft/module/banding/dto/BandingTaskMajorConditionListDto.java

@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.math.BigDecimal;
+import java.util.List;
 
 
 /**
@@ -20,4 +20,10 @@ public class BandingTaskMajorConditionListDto {
     @ApiModelProperty("任务id")
     private Long bandingTaskId;
 
+    @ApiModelProperty("专业id")
+    private List<Long> majorIds;
+
+    @ApiModelProperty("专业方向名称")
+    private String majorSetName;
+
 }

+ 0 - 1
src/main/java/com/xjrsoft/module/banding/dto/ChangeClassDto.java

@@ -4,7 +4,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
 import java.util.List;
 
 

+ 14 - 4
src/main/java/com/xjrsoft/module/banding/dto/StudentDto.java

@@ -1,11 +1,9 @@
 package com.xjrsoft.module.banding.dto;
 
+import com.xjrsoft.common.page.PageInput;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.io.Serializable;
-import java.util.List;
-
 
 /**
 * @title: 调整班级
@@ -14,7 +12,7 @@ import java.util.List;
 * @Version 1.0
 */
 @Data
-public class StudentDto implements Serializable {
+public class StudentDto extends PageInput {
 
     private static final long serialVersionUID = 1L;
 
@@ -22,4 +20,16 @@ public class StudentDto implements Serializable {
     @ApiModelProperty("班级id")
     private Long bandingTaskClassId;
 
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ApiModelProperty("性别-字典")
+    private String gender;
+
+    @ApiModelProperty("身份证")
+    private String credentialNumber;
+
+    @ApiModelProperty("专业方向id")
+    private Long majorSetId;
+
 }

+ 3 - 3
src/main/java/com/xjrsoft/module/banding/mapper/BandingTaskClassStudentMapper.java

@@ -1,7 +1,7 @@
 package com.xjrsoft.module.banding.mapper;
 
 import com.github.yulichang.base.MPJBaseMapper;
-import com.xjrsoft.module.banding.entity.BandingTaskClass;
+import com.xjrsoft.module.banding.dto.StudentDto;
 import com.xjrsoft.module.banding.entity.BandingTaskClassStudent;
 import com.xjrsoft.module.student.dto.BaseNewStudentPageDto;
 import org.apache.ibatis.annotations.Mapper;
@@ -18,7 +18,7 @@ import java.util.List;
 @Mapper
 public interface BandingTaskClassStudentMapper extends MPJBaseMapper<BandingTaskClassStudent> {
 
-    List<BaseNewStudentPageDto> satisfyStudent(@Param("bandingTaskClassId") Long bandingTaskClassId);
+    List<BaseNewStudentPageDto> satisfyStudent(@Param("dto") StudentDto dto);
 
-    List<BaseNewStudentPageDto> surplusStudent(@Param("taskClass") BandingTaskClass taskClass);
+    List<BaseNewStudentPageDto> surplusStudent(@Param("dto") StudentDto dto);
 }

+ 5 - 0
src/main/java/com/xjrsoft/module/banding/mapper/BandingTaskMajorConditionMapper.java

@@ -1,9 +1,11 @@
 package com.xjrsoft.module.banding.mapper;
 
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.banding.dto.BandingTaskClassPageDto;
 import com.xjrsoft.module.banding.dto.BandingTaskMajorConditionListDto;
 import com.xjrsoft.module.banding.entity.BandingTaskMajorCondition;
 import com.xjrsoft.module.banding.vo.BandingTaskMajorConditionListVo;
+import com.xjrsoft.module.student.entity.BaseNewStudent;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -19,4 +21,7 @@ import java.util.List;
 public interface BandingTaskMajorConditionMapper extends MPJBaseMapper<BandingTaskMajorCondition> {
 
     List<BandingTaskMajorConditionListVo> getList(@Param("dto") BandingTaskMajorConditionListDto dto);
+
+
+    List<BaseNewStudent> getStudentMajorId(@Param("dto") BandingTaskClassPageDto dto);
 }

+ 2 - 3
src/main/java/com/xjrsoft/module/banding/service/IBandingTaskClassService.java

@@ -7,9 +7,6 @@ import com.xjrsoft.module.banding.entity.BandingTaskClass;
 import com.xjrsoft.module.banding.vo.BandingTaskClassPageVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassStudentListVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassSureListVo;
-import org.apache.ibatis.annotations.Param;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 import java.util.Map;
@@ -56,4 +53,6 @@ public interface IBandingTaskClassService extends MPJBaseService<BandingTaskClas
     List<BandingTaskClassSureListVo> getClassSure(BandingTaskClassStudentPageDto dto);
 
     Boolean importData(Long bandingTaskId, List<Map<Integer, Object>> excelDataList);
+
+    Boolean updateNull(List<BandingTaskClass> updNullList);
 }

+ 3 - 2
src/main/java/com/xjrsoft/module/banding/service/IBandingTaskClassStudentService.java

@@ -2,6 +2,7 @@ package com.xjrsoft.module.banding.service;
 
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.banding.dto.ChangeClassDto;
+import com.xjrsoft.module.banding.dto.StudentDto;
 import com.xjrsoft.module.banding.entity.BandingTaskClassStudent;
 import com.xjrsoft.module.student.dto.BaseNewStudentPageDto;
 
@@ -45,9 +46,9 @@ public interface IBandingTaskClassStudentService extends MPJBaseService<BandingT
     Boolean removeStudent(ChangeClassDto dto);
 
 
-    List<BaseNewStudentPageDto> satisfyStudent(Long bandingTaskClassId);
+    List<BaseNewStudentPageDto> satisfyStudent(StudentDto dto);
 
-    List<BaseNewStudentPageDto> surplusStudent(Long bandingTaskClassId);
+    List<BaseNewStudentPageDto> surplusStudent(StudentDto dto);
 
 
     Boolean insertStudent(ChangeClassDto dto);

+ 4 - 1
src/main/java/com/xjrsoft/module/banding/service/IBandingTaskMajorConditionService.java

@@ -1,11 +1,12 @@
 package com.xjrsoft.module.banding.service;
 
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.banding.dto.BandingTaskClassPageDto;
 import com.xjrsoft.module.banding.dto.BandingTaskMajorConditionListDto;
 import com.xjrsoft.module.banding.dto.SaveMajorConditionDto;
 import com.xjrsoft.module.banding.entity.BandingTaskMajorCondition;
 import com.xjrsoft.module.banding.vo.BandingTaskMajorConditionListVo;
-import org.apache.ibatis.annotations.Param;
+import com.xjrsoft.module.student.entity.BaseNewStudent;
 
 import java.util.List;
 
@@ -27,4 +28,6 @@ public interface IBandingTaskMajorConditionService extends MPJBaseService<Bandin
 
 
     List<BandingTaskMajorConditionListVo> getList(BandingTaskMajorConditionListDto dto);
+
+    List<BaseNewStudent> getStudentMajorId(BandingTaskClassPageDto dto);
 }

+ 13 - 0
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassServiceImpl.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.banding.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.DeleteMark;
@@ -184,4 +185,16 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
         Boolean result = this.saveBatch(classList);
         return result;
     }
+
+    @Override
+    public Boolean updateNull(List<BandingTaskClass> updNullList) {
+        for (BandingTaskClass taskClass : updNullList) {
+            UpdateWrapper<BandingTaskClass> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.eq("id", taskClass.getId());
+            updateWrapper.setSql("sort_code = null");
+            this.baseMapper.update(taskClass, updateWrapper);
+        }
+
+        return true;
+    }
 }

+ 7 - 5
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassStudentServiceImpl.java

@@ -12,6 +12,7 @@ import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.config.CommonPropertiesConfig;
 import com.xjrsoft.module.banding.dto.BandingTaskClassStudentPageDto;
 import com.xjrsoft.module.banding.dto.ChangeClassDto;
+import com.xjrsoft.module.banding.dto.StudentDto;
 import com.xjrsoft.module.banding.entity.BandingTask;
 import com.xjrsoft.module.banding.entity.BandingTaskClass;
 import com.xjrsoft.module.banding.entity.BandingTaskClassStudent;
@@ -289,14 +290,15 @@ public class BandingTaskClassStudentServiceImpl extends MPJBaseServiceImpl<Bandi
     }
 
     @Override
-    public List<BaseNewStudentPageDto> satisfyStudent(Long bandingTaskClassId) {
-        return this.baseMapper.satisfyStudent(bandingTaskClassId);
+    public List<BaseNewStudentPageDto> satisfyStudent(StudentDto dto) {
+        return this.baseMapper.satisfyStudent(dto);
     }
 
     @Override
-    public List<BaseNewStudentPageDto> surplusStudent(Long bandingTaskClassId) {
-        BandingTaskClass taskClass = taskClassMapper.selectById(bandingTaskClassId);
-        return this.baseMapper.surplusStudent(taskClass);
+    public List<BaseNewStudentPageDto> surplusStudent(StudentDto dto) {
+        BandingTaskClass taskClass = taskClassMapper.selectById(dto.getBandingTaskClassId());
+        dto.setMajorSetId(taskClass.getMajorSetId());
+        return this.baseMapper.surplusStudent(dto);
     }
 
     @Override

+ 7 - 0
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskMajorConditionServiceImpl.java

@@ -2,6 +2,7 @@ package com.xjrsoft.module.banding.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.banding.dto.BandingTaskClassPageDto;
 import com.xjrsoft.module.banding.dto.BandingTaskMajorConditionDto;
 import com.xjrsoft.module.banding.dto.BandingTaskMajorConditionListDto;
 import com.xjrsoft.module.banding.dto.SaveMajorConditionDto;
@@ -9,6 +10,7 @@ import com.xjrsoft.module.banding.entity.BandingTaskMajorCondition;
 import com.xjrsoft.module.banding.mapper.BandingTaskMajorConditionMapper;
 import com.xjrsoft.module.banding.service.IBandingTaskMajorConditionService;
 import com.xjrsoft.module.banding.vo.BandingTaskMajorConditionListVo;
+import com.xjrsoft.module.student.entity.BaseNewStudent;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
@@ -72,4 +74,9 @@ public class BandingTaskMajorConditionServiceImpl extends MPJBaseServiceImpl<Ban
     public List<BandingTaskMajorConditionListVo> getList(BandingTaskMajorConditionListDto dto) {
         return this.baseMapper.getList(dto);
     }
+
+    @Override
+    public List<BaseNewStudent> getStudentMajorId(BandingTaskClassPageDto dto) {
+        return this.baseMapper.getStudentMajorId(dto);
+    }
 }

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

@@ -33,6 +33,7 @@ import com.xjrsoft.module.banding.service.IBandingTaskMajorConditionService;
 import com.xjrsoft.module.banding.service.IBandingTaskService;
 import com.xjrsoft.module.banding.vo.BandingTaskClassSureListVo;
 import com.xjrsoft.module.banding.vo.BandingTaskPageVo;
+import com.xjrsoft.module.banding.vo.IdManyCountVo;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseMajorSet;
 import com.xjrsoft.module.base.mapper.BaseMajorSetMapper;
@@ -42,7 +43,6 @@ import com.xjrsoft.module.organization.entity.UserRoleRelation;
 import com.xjrsoft.module.organization.service.IUserRoleRelationService;
 import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.outint.vo.IdCountVo;
-import com.xjrsoft.module.banding.vo.IdManyCountVo;
 import com.xjrsoft.module.student.entity.BaseClassMajorSet;
 import com.xjrsoft.module.student.entity.BaseNewStudent;
 import com.xjrsoft.module.student.entity.BaseStudent;
@@ -147,7 +147,7 @@ public class BandingTaskServiceImpl extends MPJBaseServiceImpl<BandingTaskMapper
                         .select(BandingTaskClassStudent::getId)
                         .select(BandingTaskClassStudent.class, x -> VoToColumnUtil.fieldsToColumns(BandingTaskClassStudent.class).contains(x.getProperty()))
                         .leftJoin(BandingTaskClass.class, BandingTaskClass::getId, BandingTaskClassStudent::getBandingTaskClassId)
-                        .eq(BandingTaskClass::getStatus, 0)
+                        .eq(BandingTaskClass::getStatus, 1)
         );
         List<Long> studentIds = classStudents.stream().map(BandingTaskClassStudent::getNewStudentId).collect(Collectors.toList());
 

+ 0 - 2
src/main/java/com/xjrsoft/module/banding/vo/BandingTaskClassSureListVo.java

@@ -3,8 +3,6 @@ package com.xjrsoft.module.banding.vo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.math.BigDecimal;
-
 /**
 * @title: 新生分班任务分页列表出参
 * @Author dzx

+ 0 - 3
src/main/java/com/xjrsoft/module/banding/vo/BandingTaskPageVo.java

@@ -1,12 +1,9 @@
 package com.xjrsoft.module.banding.vo;
 
-import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ContentStyle;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.util.Date;
-
 /**
 * @title: 新生分班任务分页列表出参
 * @Author dzx

+ 258 - 0
src/main/java/com/xjrsoft/module/courseTable/controller/SecondCourseController.java

@@ -0,0 +1,258 @@
+package com.xjrsoft.module.courseTable.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+import com.xjrsoft.common.exception.MyException;
+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.activity.dto.ChangeStatusDto;
+import com.xjrsoft.module.courseTable.dto.UserEnrollDto;
+import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.service.IBaseClassService;
+import com.xjrsoft.module.concat.service.IXjrUserService;
+import com.xjrsoft.module.courseTable.dto.AddSecondCourseDto;
+import com.xjrsoft.module.courseTable.dto.SecondCourseEnrollPageDto;
+import com.xjrsoft.module.courseTable.dto.SecondCoursePageDto;
+import com.xjrsoft.module.courseTable.dto.UpdateSecondCourseDto;
+import com.xjrsoft.module.courseTable.entity.SecondCourse;
+import com.xjrsoft.module.courseTable.service.ISecondCourseService;
+import com.xjrsoft.module.courseTable.vo.SecondCourseEnrollExcelVo;
+import com.xjrsoft.module.courseTable.vo.SecondCourseEnrollRangeVo;
+import com.xjrsoft.module.courseTable.vo.SecondCourseEnrollVo;
+import com.xjrsoft.module.courseTable.vo.SecondCoursePageVo;
+import com.xjrsoft.module.courseTable.vo.SecondCourseVo;
+import com.xjrsoft.module.organization.entity.Department;
+import com.xjrsoft.module.organization.service.IDepartmentService;
+import com.xjrsoft.module.system.entity.File;
+import com.xjrsoft.module.system.service.IFileService;
+import com.xjrsoft.module.teacher.entity.XjrUser;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.io.ByteArrayOutputStream;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+* @title: 第二课堂
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/courseTable" + "/secondCourse")
+@Api(value = "/courseTable"  + "/secondCourse",tags = "第二课堂代码")
+@AllArgsConstructor
+public class SecondCourseController {
+
+
+    private final ISecondCourseService secondCourseService;
+    private final IBaseClassService classService;
+    private final IDepartmentService departmentService;
+    private final IXjrUserService xjrUserService;
+    private final IFileService fileService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="第二课堂列表(分页)")
+    @SaCheckPermission("secondcourse:detail")
+    public RT<PageOutput<SecondCoursePageVo>> page(@Valid SecondCoursePageDto dto){
+        if(dto.getUserId() == null){
+            dto.setUserId(StpUtil.getLoginIdAsLong());
+        }
+        Page<SecondCoursePageVo> page = secondCourseService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        for (SecondCoursePageVo record : page.getRecords()) {
+            if(record.getEnrollStatus() > 0){
+                record.setEnrollStatus(1);
+            }
+            if(record.getCoverId() != null){
+                File file = fileService.getOne(
+                        new QueryWrapper<File>().lambda()
+                                .select(File::getId)
+                                .select(File.class, x -> VoToColumnUtil.fieldsToColumns(File.class).contains(x.getProperty()))
+                                .eq(File::getFolderId, record.getCoverId())
+                );
+                record.setCoverUrl(file.getFileUrl());
+            }
+        }
+        PageOutput<SecondCoursePageVo> pageOutput = ConventPage.getPageOutput(page, SecondCoursePageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询第二课堂信息")
+    @SaCheckPermission("secondcourse:detail")
+    public RT<SecondCourseVo> info(@RequestParam Long id){
+        SecondCourse secondCourse = secondCourseService.getByIdDeep(id);
+        if (secondCourse == null) {
+           return RT.error("找不到此数据!");
+        }
+        SecondCourseVo courseVo = BeanUtil.toBean(secondCourse, SecondCourseVo.class);
+        if(secondCourse.getEnrollRange() != null && !"".equals(secondCourse.getEnrollRange())){
+            JsonParser parser = new JsonParser();
+            JsonArray asJsonArray = parser.parse(secondCourse.getEnrollRange()).getAsJsonArray();
+            List<SecondCourseEnrollRangeVo> list = new ArrayList<>();
+            for (JsonElement jsonElement : asJsonArray) {
+                SecondCourseEnrollRangeVo relationDto = JSONUtil.toBean(jsonElement.getAsJsonObject().toString(), SecondCourseEnrollRangeVo.class);
+                if(relationDto.getUserId() != null){
+                    XjrUser xjrUser = xjrUserService.getById(relationDto.getUserId());
+                    if(xjrUser != null){
+                        relationDto.setName(xjrUser.getName());
+                    }
+                }else if(relationDto.getDeptId() != null){
+                    Department department = departmentService.getById(relationDto.getDeptId());
+                    if(department != null){
+                        relationDto.setName(department.getName());
+                    }
+
+                }else if(relationDto.getClassId() != null){
+                    BaseClass aClass = classService.getById(relationDto.getClassId());
+                    if(aClass != null){
+                        relationDto.setName(aClass.getName());
+                    }
+                }
+                list.add(relationDto);
+            }
+            courseVo.setSecondCourseEnrollRangeList(list);
+        }
+        if(secondCourse.getCoverId() != null){
+            File file = fileService.getOne(
+                    new QueryWrapper<File>().lambda()
+                            .select(File::getId)
+                            .select(File.class, x -> VoToColumnUtil.fieldsToColumns(File.class).contains(x.getProperty()))
+                            .eq(File::getFolderId, secondCourse.getCoverId())
+            );
+            courseVo.setCoverUrl(file.getFileUrl());
+        }
+
+        Integer enrollCount = secondCourseService.getEnrollCount(secondCourse.getId());
+        courseVo.setEnrollCount(enrollCount);
+        return RT.ok(courseVo);
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增第二课堂")
+    @SaCheckPermission("secondcourse:add")
+    public RT<Boolean> add(@Valid @RequestBody AddSecondCourseDto dto){
+        boolean isSuccess = secondCourseService.add(dto);
+        return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改第二课堂")
+    @SaCheckPermission("secondcourse:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateSecondCourseDto dto){
+
+        return RT.ok(secondCourseService.update(dto));
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除第二课堂")
+    @SaCheckPermission("secondcourse:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(secondCourseService.delete(ids));
+    }
+
+    @PostMapping(value = "/change-status")
+    @ApiOperation(value="修改状态")
+    @SaCheckPermission("officebuild:detail")
+    public RT<Boolean> changeStatus(@Valid @RequestBody ChangeStatusDto dto) throws Exception {
+        SecondCourse secondCourse = secondCourseService.getById(dto.getId());
+        if(secondCourse == null){
+            throw new MyException("未能找到数据");
+        }
+        secondCourse.setStatus(dto.getStatus());
+        secondCourseService.updateById(secondCourse);
+        return RT.ok(true);
+    }
+
+    @GetMapping(value = "/enroll-page")
+    @ApiOperation(value="报名表")
+    @SaCheckPermission("secondcourse:detail")
+    public RT<PageOutput<SecondCourseEnrollVo>> enrollPage(@Valid SecondCourseEnrollPageDto dto){
+        Page<SecondCourseEnrollVo> enrollPage = secondCourseService.getEnrollPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        for (SecondCourseEnrollVo record : enrollPage.getRecords()) {
+            if(record.getStudentId() != null){
+                record.setRoleId(3L);
+            }else if(record.getTeacherId() != null){
+                record.setRoleId(2L);
+            }
+        }
+
+        PageOutput<SecondCourseEnrollVo> pageOutput = ConventPage.getPageOutput(enrollPage, SecondCourseEnrollVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @PostMapping("/export-query")
+    @ApiOperation(value = "导出列表")
+    public ResponseEntity<byte[]> exportData(@Valid @RequestBody SecondCourseEnrollPageDto dto) {
+        List<SecondCourseEnrollVo> enrollList = secondCourseService.getEnrollList(dto);
+        List<SecondCourseEnrollExcelVo> list = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
+        for (SecondCourseEnrollVo listVo : enrollList) {
+            list.add(new SecondCourseEnrollExcelVo(){{
+                setName(listVo.getName());
+                setMobile(listVo.getMobile());
+                if(listVo.getTeacherId() != null){
+                    setRoleType("教师");
+                }
+                if(listVo.getStudentId() != null){
+                    setRoleType("学生");
+                }
+                setUserName(listVo.getUserName());
+                setCreateDate(sdf.format(listVo.getCreateDate()));
+            }});
+        }
+
+        ByteArrayOutputStream bot = new ByteArrayOutputStream();
+        EasyExcel.write(bot, SecondCourseEnrollExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
+
+        return RT.fileStream(bot.toByteArray(), "enroll" + ExcelTypeEnum.XLSX.getValue());
+    }
+
+
+    @PostMapping(value = "/enroll")
+    @ApiOperation(value="报名")
+    @SaCheckPermission("secondcourse:detail")
+    public RT<Boolean> enroll(@Valid UserEnrollDto dto){
+        Boolean enroll = secondCourseService.enroll(dto);
+        return RT.ok(enroll);
+    }
+
+    @GetMapping(value = "/my-enroll-page")
+    @ApiOperation(value="我的报名记录(分页)")
+    @SaCheckPermission("secondcourse:detail")
+    public RT<PageOutput<SecondCoursePageVo>> myEnrollList(@Valid SecondCoursePageDto dto){
+        if(dto.getUserId() == null){
+            dto.setUserId(StpUtil.getLoginIdAsLong());
+        }
+
+        Page<SecondCoursePageVo> page = secondCourseService.getMyPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<SecondCoursePageVo> pageOutput = ConventPage.getPageOutput(page, SecondCoursePageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+}

+ 75 - 0
src/main/java/com/xjrsoft/module/courseTable/dto/AddSecondCourseDto.java

@@ -0,0 +1,75 @@
+package com.xjrsoft.module.courseTable.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+
+/**
+* @title: 第二课堂
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+public class AddSecondCourseDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 学期id
+    */
+    @ApiModelProperty("学期id")
+    private Long baseSemesterId;
+    /**
+    * 课程名称
+    */
+    @ApiModelProperty("课程名称")
+    private String name;
+    /**
+    * 课程主要内容
+    */
+    @ApiModelProperty("课程主要内容")
+    private String content;
+    /**
+    * 开课地点
+    */
+    @ApiModelProperty("开课地点")
+    private String place;
+    /**
+    * 讲课老师
+    */
+    @ApiModelProperty("讲课老师")
+    private String teacherName;
+    /**
+    * 封面图片
+    */
+    @ApiModelProperty("封面图片")
+    private Long coverId;
+    /**
+    * 参与范围
+    */
+    @ApiModelProperty("参与范围")
+    private String enrollRange;
+    /**
+    * 状态(0:未发布 1:进行中 2:已结束)
+    */
+    @ApiModelProperty("状态(0:未发布 1:进行中 2:已结束)")
+    private Integer status;
+
+    /**
+    * secondCourseTime
+    */
+    @ApiModelProperty("secondCourseTime子表")
+    private List<AddSecondCourseTimeDto> secondCourseTimeList;
+    /**
+    * secondCourseEnrollRange
+    */
+    @ApiModelProperty("secondCourseEnrollRange子表")
+    private List<AddSecondCourseEnrollRangeDto> secondCourseEnrollRangeList;
+
+
+}

+ 37 - 0
src/main/java/com/xjrsoft/module/courseTable/dto/AddSecondCourseEnrollDto.java

@@ -0,0 +1,37 @@
+package com.xjrsoft.module.courseTable.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+
+/**
+* @title: 第二课堂报名表
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+public class AddSecondCourseEnrollDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 第二课堂id
+    */
+    @ApiModelProperty("第二课堂id")
+    private Long secondCourseId;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+    * 状态
+    */
+    @ApiModelProperty("状态")
+    private Long status;
+
+}

+ 42 - 0
src/main/java/com/xjrsoft/module/courseTable/dto/AddSecondCourseEnrollRangeDto.java

@@ -0,0 +1,42 @@
+package com.xjrsoft.module.courseTable.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+
+/**
+* @title: 第二课堂参与范围
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+public class AddSecondCourseEnrollRangeDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 第二课堂id
+    */
+    @ApiModelProperty("第二课堂id")
+    private Long secondCourseId;
+    /**
+    * 班级id
+    */
+    @ApiModelProperty("班级id")
+    private Long classId;
+    /**
+    * 部门id
+    */
+    @ApiModelProperty("部门id")
+    private Long deptId;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+
+}

+ 50 - 0
src/main/java/com/xjrsoft/module/courseTable/dto/AddSecondCourseTimeDto.java

@@ -0,0 +1,50 @@
+package com.xjrsoft.module.courseTable.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.util.Date;
+
+
+
+/**
+* @title: 第二课堂开课时间
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+public class AddSecondCourseTimeDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 第二课堂id
+    */
+    @ApiModelProperty("第二课堂id")
+    private Long secondCourseId;
+    /**
+    * 上课日期
+    */
+    @ApiModelProperty("上课日期")
+    private String classTime;
+    /**
+    * 时段(1=上午 2=下午 3=晚上)
+    */
+    @ApiModelProperty("时段(1=上午 2=下午 3=晚上)")
+    private Integer timePeriod;
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private LocalTime startTime;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private LocalTime endTime;
+
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/courseTable/dto/SecondCourseEnrollPageDto.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.courseTable.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 第二课堂分页查询入参
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SecondCourseEnrollPageDto extends PageInput {
+
+        @ApiModelProperty("课程id")
+        private Long secondCourseId;
+
+        @ApiModelProperty("用户类型")
+        private Long roleId;
+
+}

+ 31 - 0
src/main/java/com/xjrsoft/module/courseTable/dto/SecondCoursePageDto.java

@@ -0,0 +1,31 @@
+package com.xjrsoft.module.courseTable.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 第二课堂分页查询入参
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SecondCoursePageDto extends PageInput {
+
+        @ApiModelProperty("学期id")
+        private Long semesterId;
+
+        @ApiModelProperty("课程名称")
+        private String name;
+
+        @ApiModelProperty("状态")
+        private Integer status;
+
+        @ApiModelProperty("用户id")
+        private Long userId;
+
+}

+ 24 - 0
src/main/java/com/xjrsoft/module/courseTable/dto/UpdateSecondCourseDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.courseTable.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+
+/**
+* @title: 第二课堂
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+public class UpdateSecondCourseDto extends AddSecondCourseDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+}

+ 26 - 0
src/main/java/com/xjrsoft/module/courseTable/dto/UserEnrollDto.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.courseTable.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+* @title: 活动信息
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Data
+public class UserEnrollDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("课程id")
+    private Long id;
+    /**
+    */
+    @ApiModelProperty("手机号")
+    private String mobile;
+}

+ 137 - 0
src/main/java/com/xjrsoft/module/courseTable/entity/SecondCourse.java

@@ -0,0 +1,137 @@
+package com.xjrsoft.module.courseTable.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+* @title: 第二课堂
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+@TableName("second_course")
+@ApiModel(value = "second_course", description = "第二课堂")
+public class SecondCourse 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;
+    /**
+    * 学期id
+    */
+    @ApiModelProperty("学期id")
+    private Long baseSemesterId;
+    /**
+    * 课程名称
+    */
+    @ApiModelProperty("课程名称")
+    private String name;
+    /**
+    * 课程主要内容
+    */
+    @ApiModelProperty("课程主要内容")
+    private String content;
+    /**
+    * 开课地点
+    */
+    @ApiModelProperty("开课地点")
+    private String place;
+    /**
+    * 讲课老师
+    */
+    @ApiModelProperty("讲课老师")
+    private String teacherName;
+    /**
+    * 封面图片
+    */
+    @ApiModelProperty("封面图片")
+    private Long coverId;
+    /**
+    * 参与范围
+    */
+    @ApiModelProperty("参与范围")
+    private String enrollRange;
+    /**
+    * 状态(0:未发布 1:进行中 2:已结束)
+    */
+    @ApiModelProperty("状态(0:未发布 1:进行中 2:已结束)")
+    private Integer status;
+
+    /**
+    * secondCourseTime
+    */
+    @ApiModelProperty("secondCourseTime子表")
+    @TableField(exist = false)
+    @EntityMapping(thisField = "id", joinField = "secondCourseId")
+    private List<SecondCourseTime> secondCourseTimeList;
+    /**
+    * secondCourseEnrollRange
+    */
+    @ApiModelProperty("secondCourseEnrollRange子表")
+    @TableField(exist = false)
+    @EntityMapping(thisField = "id", joinField = "secondCourseId")
+    private List<SecondCourseEnrollRange> secondCourseEnrollRangeList;
+    /**
+    * secondCourseEnroll
+    */
+    @ApiModelProperty("secondCourseEnroll子表")
+    @TableField(exist = false)
+    @EntityMapping(thisField = "id", joinField = "secondCourseId")
+    private List<SecondCourseEnroll> secondCourseEnrollList;
+
+}

+ 89 - 0
src/main/java/com/xjrsoft/module/courseTable/entity/SecondCourseEnroll.java

@@ -0,0 +1,89 @@
+package com.xjrsoft.module.courseTable.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+* @title: 第二课堂报名表
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+@TableName("second_course_enroll")
+@ApiModel(value = "second_course_enroll", description = "第二课堂报名表")
+public class SecondCourseEnroll 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;
+    /**
+    * 第二课堂id
+    */
+    @ApiModelProperty("第二课堂id")
+    private Long secondCourseId;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+    * 状态
+    */
+    @ApiModelProperty("状态")
+    private Long status;
+
+
+}

+ 94 - 0
src/main/java/com/xjrsoft/module/courseTable/entity/SecondCourseEnrollRange.java

@@ -0,0 +1,94 @@
+package com.xjrsoft.module.courseTable.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+* @title: 第二课堂参与范围
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+@TableName("second_course_enroll_range")
+@ApiModel(value = "second_course_enroll_range", description = "第二课堂参与范围")
+public class SecondCourseEnrollRange 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;
+    /**
+    * 第二课堂id
+    */
+    @ApiModelProperty("第二课堂id")
+    private Long secondCourseId;
+    /**
+    * 班级id
+    */
+    @ApiModelProperty("班级id")
+    private Long classId;
+    /**
+    * 部门id
+    */
+    @ApiModelProperty("部门id")
+    private Long deptId;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+
+
+}

+ 100 - 0
src/main/java/com/xjrsoft/module/courseTable/entity/SecondCourseTime.java

@@ -0,0 +1,100 @@
+package com.xjrsoft.module.courseTable.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.util.Date;
+
+
+/**
+* @title: 第二课堂开课时间
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+@TableName("second_course_time")
+@ApiModel(value = "second_course_time", description = "第二课堂开课时间")
+public class SecondCourseTime 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;
+    /**
+    * 第二课堂id
+    */
+    @ApiModelProperty("第二课堂id")
+    private Long secondCourseId;
+    /**
+    * 上课日期
+    */
+    @ApiModelProperty("上课日期")
+    private String classTime;
+    /**
+    * 时段(1=上午 2=下午 3=晚上)
+    */
+    @ApiModelProperty("时段(1=上午 2=下午 3=晚上)")
+    private Integer timePeriod;
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private LocalTime startTime;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private LocalTime endTime;
+
+
+}

+ 16 - 0
src/main/java/com/xjrsoft/module/courseTable/mapper/SecondCourseEnrollMapper.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.courseTable.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.courseTable.entity.SecondCourseEnroll;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 第二课堂报名表
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Mapper
+public interface SecondCourseEnrollMapper extends MPJBaseMapper<SecondCourseEnroll> {
+
+}

+ 16 - 0
src/main/java/com/xjrsoft/module/courseTable/mapper/SecondCourseEnrollRangeMapper.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.courseTable.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.courseTable.entity.SecondCourseEnrollRange;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 第二课堂参与范围
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Mapper
+public interface SecondCourseEnrollRangeMapper extends MPJBaseMapper<SecondCourseEnrollRange> {
+
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/courseTable/mapper/SecondCourseMapper.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.courseTable.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.courseTable.dto.SecondCourseEnrollPageDto;
+import com.xjrsoft.module.courseTable.dto.SecondCoursePageDto;
+import com.xjrsoft.module.courseTable.entity.SecondCourse;
+import com.xjrsoft.module.courseTable.vo.SecondCourseEnrollVo;
+import com.xjrsoft.module.courseTable.vo.SecondCoursePageVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @title: 第二课堂
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Mapper
+public interface SecondCourseMapper extends MPJBaseMapper<SecondCourse> {
+
+    Page<SecondCoursePageVo> getPage(Page<SecondCoursePageVo> page, @Param("dto") SecondCoursePageDto dto);
+
+    Page<SecondCourseEnrollVo> getEnrollPage(Page<SecondCourseEnrollVo> page, @Param("dto") SecondCourseEnrollPageDto dto);
+
+    List<SecondCourseEnrollVo> getEnrollList(@Param("dto") SecondCourseEnrollPageDto dto);
+
+
+    Page<SecondCoursePageVo> getMyPage(Page<SecondCoursePageVo> page, @Param("dto") SecondCoursePageDto dto);
+}

+ 16 - 0
src/main/java/com/xjrsoft/module/courseTable/mapper/SecondCourseTimeMapper.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.courseTable.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.courseTable.entity.SecondCourseTime;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 第二课堂开课时间
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Mapper
+public interface SecondCourseTimeMapper extends MPJBaseMapper<SecondCourseTime> {
+
+}

+ 54 - 0
src/main/java/com/xjrsoft/module/courseTable/service/ISecondCourseService.java

@@ -0,0 +1,54 @@
+package com.xjrsoft.module.courseTable.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.courseTable.dto.UserEnrollDto;
+import com.xjrsoft.module.courseTable.dto.AddSecondCourseDto;
+import com.xjrsoft.module.courseTable.dto.SecondCourseEnrollPageDto;
+import com.xjrsoft.module.courseTable.dto.SecondCoursePageDto;
+import com.xjrsoft.module.courseTable.dto.UpdateSecondCourseDto;
+import com.xjrsoft.module.courseTable.entity.SecondCourse;
+import com.xjrsoft.module.courseTable.vo.SecondCourseEnrollVo;
+import com.xjrsoft.module.courseTable.vo.SecondCoursePageVo;
+
+import java.util.List;
+
+/**
+* @title: 第二课堂
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+
+public interface ISecondCourseService extends MPJBaseService<SecondCourse> {
+    /**
+    * 新增
+    */
+    Boolean add(AddSecondCourseDto dto);
+
+    /**
+    * 更新
+    */
+    Boolean update(UpdateSecondCourseDto dto);
+
+    /**
+    * 删除
+    *
+    * @param ids
+    * @return
+    */
+    Boolean delete(List<Long> ids);
+
+
+    Page<SecondCoursePageVo> getPage(Page<SecondCoursePageVo> page, SecondCoursePageDto dto);
+
+    Integer getEnrollCount(Long secondCourseId);
+
+    Page<SecondCourseEnrollVo> getEnrollPage(Page<SecondCourseEnrollVo> page, SecondCourseEnrollPageDto dto);
+
+    List<SecondCourseEnrollVo> getEnrollList( SecondCourseEnrollPageDto dto);
+
+    Boolean enroll(UserEnrollDto dto);
+
+    Page<SecondCoursePageVo> getMyPage(Page<SecondCoursePageVo> page, SecondCoursePageDto dto);
+}

+ 205 - 0
src/main/java/com/xjrsoft/module/courseTable/service/impl/SecondCourseServiceImpl.java

@@ -0,0 +1,205 @@
+package com.xjrsoft.module.courseTable.service.impl;
+
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.module.concat.service.IXjrUserService;
+import com.xjrsoft.module.courseTable.dto.UserEnrollDto;
+import com.xjrsoft.module.courseTable.dto.AddSecondCourseDto;
+import com.xjrsoft.module.courseTable.dto.SecondCourseEnrollPageDto;
+import com.xjrsoft.module.courseTable.dto.SecondCoursePageDto;
+import com.xjrsoft.module.courseTable.dto.UpdateSecondCourseDto;
+import com.xjrsoft.module.courseTable.entity.SecondCourse;
+import com.xjrsoft.module.courseTable.entity.SecondCourseEnroll;
+import com.xjrsoft.module.courseTable.entity.SecondCourseEnrollRange;
+import com.xjrsoft.module.courseTable.entity.SecondCourseTime;
+import com.xjrsoft.module.courseTable.mapper.SecondCourseEnrollMapper;
+import com.xjrsoft.module.courseTable.mapper.SecondCourseEnrollRangeMapper;
+import com.xjrsoft.module.courseTable.mapper.SecondCourseMapper;
+import com.xjrsoft.module.courseTable.mapper.SecondCourseTimeMapper;
+import com.xjrsoft.module.courseTable.service.ISecondCourseService;
+import com.xjrsoft.module.courseTable.vo.SecondCourseEnrollVo;
+import com.xjrsoft.module.courseTable.vo.SecondCoursePageVo;
+import com.xjrsoft.module.teacher.entity.XjrUser;
+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;
+
+/**
+* @title: 第二课堂
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class SecondCourseServiceImpl extends MPJBaseServiceImpl<SecondCourseMapper, SecondCourse> implements ISecondCourseService {
+    private final SecondCourseMapper courseMapper;
+
+    private final SecondCourseTimeMapper courseTimeMapper;
+    private final SecondCourseEnrollRangeMapper enrollRangeMapper;
+    private final SecondCourseEnrollMapper enrollMapper;
+    private final IXjrUserService xjrUserService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean add(AddSecondCourseDto dto) {
+        SecondCourse secondCourse = BeanUtil.toBean(dto, SecondCourse.class);
+        secondCourse.setEnrollRange(JSONUtil.toJsonStr(dto.getSecondCourseEnrollRangeList()));
+        courseMapper.insert(secondCourse);
+        if(secondCourse.getSecondCourseEnrollList() != null){
+            for (SecondCourseTime secondCourseTime : secondCourse.getSecondCourseTimeList()) {
+                secondCourseTime.setSecondCourseId(secondCourse.getId());
+                courseTimeMapper.insert(secondCourseTime);
+            }
+        }
+        if(secondCourse.getSecondCourseEnrollRangeList() != null){
+            for (SecondCourseEnrollRange secondCourseEnrollRange : secondCourse.getSecondCourseEnrollRangeList()) {
+                secondCourseEnrollRange.setSecondCourseId(secondCourse.getId());
+                enrollRangeMapper.insert(secondCourseEnrollRange);
+            }
+        }
+
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean update(UpdateSecondCourseDto dto) {
+        SecondCourse secondCourse = BeanUtil.toBean(dto, SecondCourse.class);
+        secondCourse.setEnrollRange(JSONUtil.toJsonStr(dto.getSecondCourseEnrollRangeList()));
+        courseMapper.updateById(secondCourse);
+        //********************************* SecondCourseTime  增删改  开始 *******************************************/
+        {
+            // 查出所有子级的id
+            List<SecondCourseTime> secondCourseTimeList = courseTimeMapper.selectList(Wrappers.lambdaQuery(SecondCourseTime.class).eq(SecondCourseTime::getSecondCourseId, secondCourse.getId()).select(SecondCourseTime::getId));
+            List<Long> secondCourseTimeIds = secondCourseTimeList.stream().map(SecondCourseTime::getId).collect(Collectors.toList());
+            //原有子表单 没有被删除的主键
+            List<Long> secondCourseTimeOldIds = secondCourse.getSecondCourseTimeList().stream().map(SecondCourseTime::getId).filter(Objects::nonNull).collect(Collectors.toList());
+            //找到需要删除的id
+            List<Long> secondCourseTimeRemoveIds = secondCourseTimeIds.stream().filter(item -> !secondCourseTimeOldIds.contains(item)).collect(Collectors.toList());
+
+            for (SecondCourseTime secondCourseTime : secondCourse.getSecondCourseTimeList()) {
+                //如果不等于空则修改
+                if (secondCourseTime.getId() != null) {
+                    courseTimeMapper.updateById(secondCourseTime);
+                }
+                //如果等于空 则新增
+                else {
+                    //已经不存在的id 删除
+                    secondCourseTime.setSecondCourseId(secondCourse.getId());
+                    courseTimeMapper.insert(secondCourseTime);
+                }
+            }
+            //已经不存在的id 删除
+            if(!secondCourseTimeRemoveIds.isEmpty()){
+                courseTimeMapper.deleteBatchIds(secondCourseTimeRemoveIds);
+            }
+        }
+        //********************************* SecondCourseTime  增删改  结束 *******************************************/
+
+        //********************************* SecondCourseEnrollRange  增删改  开始 *******************************************/
+        {
+            // 查出所有子级的id
+            List<SecondCourseEnrollRange> secondCourseEnrollRangeList = enrollRangeMapper.selectList(Wrappers.lambdaQuery(SecondCourseEnrollRange.class).eq(SecondCourseEnrollRange::getSecondCourseId, secondCourse.getId()).select(SecondCourseEnrollRange::getId));
+            List<Long> secondCourseEnrollRangeIds = secondCourseEnrollRangeList.stream().map(SecondCourseEnrollRange::getId).collect(Collectors.toList());
+            //原有子表单 没有被删除的主键
+            List<Long> secondCourseEnrollRangeOldIds = secondCourse.getSecondCourseEnrollRangeList().stream().map(SecondCourseEnrollRange::getId).filter(Objects::nonNull).collect(Collectors.toList());
+            //找到需要删除的id
+            List<Long> secondCourseEnrollRangeRemoveIds = secondCourseEnrollRangeIds.stream().filter(item -> !secondCourseEnrollRangeOldIds.contains(item)).collect(Collectors.toList());
+
+            for (SecondCourseEnrollRange secondCourseEnrollRange : secondCourse.getSecondCourseEnrollRangeList()) {
+                //如果不等于空则修改
+                if (secondCourseEnrollRange.getId() != null) {
+                    enrollRangeMapper.updateById(secondCourseEnrollRange);
+                }
+                //如果等于空 则新增
+                else {
+                    //已经不存在的id 删除
+                    secondCourseEnrollRange.setSecondCourseId(secondCourse.getId());
+                    enrollRangeMapper.insert(secondCourseEnrollRange);
+                }
+            }
+            //已经不存在的id 删除
+            if(!secondCourseEnrollRangeRemoveIds.isEmpty()){
+                enrollRangeMapper.deleteBatchIds(secondCourseEnrollRangeRemoveIds);
+            }
+        }
+        //********************************* SecondCourseEnrollRange  增删改  结束 *******************************************/
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean delete(List<Long> ids) {
+        courseMapper.deleteBatchIds(ids);
+        courseTimeMapper.delete(Wrappers.lambdaQuery(SecondCourseTime.class).in(SecondCourseTime::getSecondCourseId, ids));
+        enrollRangeMapper.delete(Wrappers.lambdaQuery(SecondCourseEnrollRange.class).in(SecondCourseEnrollRange::getSecondCourseId, ids));
+        enrollMapper.delete(Wrappers.lambdaQuery(SecondCourseEnroll.class).in(SecondCourseEnroll::getSecondCourseId, ids));
+
+        return true;
+    }
+
+    @Override
+    public Page<SecondCoursePageVo> getPage(Page<SecondCoursePageVo> page, SecondCoursePageDto dto) {
+        return this.baseMapper.getPage(page, dto);
+    }
+
+    @Override
+    public Integer getEnrollCount(Long secondCourseId) {
+        Long count = enrollMapper.selectCount(
+                new QueryWrapper<SecondCourseEnroll>().lambda()
+                        .eq(SecondCourseEnroll::getSecondCourseId, secondCourseId)
+        );
+        return count.intValue();
+    }
+
+    @Override
+    public Page<SecondCourseEnrollVo> getEnrollPage(Page<SecondCourseEnrollVo> page, SecondCourseEnrollPageDto dto) {
+        return this.baseMapper.getEnrollPage(page, dto);
+    }
+
+    @Override
+    public List<SecondCourseEnrollVo> getEnrollList(SecondCourseEnrollPageDto dto) {
+        return this.baseMapper.getEnrollList(dto);
+    }
+
+    @Override
+    public Boolean enroll(UserEnrollDto dto) {
+        List<SecondCourseEnroll> enrollList = enrollMapper.selectList(
+                new QueryWrapper<SecondCourseEnroll>().lambda()
+                        .eq(SecondCourseEnroll::getUserId, StpUtil.getLoginIdAsLong())
+                        .eq(SecondCourseEnroll::getSecondCourseId, dto.getId())
+        );
+        if(!enrollList.isEmpty()){
+            throw  new MyException("已报名,无需重复报名");
+        }
+        SecondCourseEnroll enroll = new SecondCourseEnroll() {{
+            setUserId(StpUtil.getLoginIdAsLong());
+            setSecondCourseId(dto.getId());
+        }};
+        enrollMapper.insert(enroll);
+
+        XjrUser xjrUser = xjrUserService.getById(StpUtil.getLoginIdAsLong());
+        if(StrUtil.isNotEmpty(dto.getMobile()) && !dto.getMobile().equals(xjrUser.getMobile())){
+            xjrUser.setMobile(dto.getMobile());
+            xjrUserService.updateById(xjrUser);
+        }
+        return true;
+    }
+
+    @Override
+    public Page<SecondCoursePageVo> getMyPage(Page<SecondCoursePageVo> page, SecondCoursePageDto dto) {
+        return this.baseMapper.getMyPage(page, dto);
+    }
+}

+ 43 - 0
src/main/java/com/xjrsoft/module/courseTable/vo/SecondCourseEnrollExcelVo.java

@@ -0,0 +1,43 @@
+package com.xjrsoft.module.courseTable.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 第二课堂报名表表单出参
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+public class SecondCourseEnrollExcelVo {
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("用户类型")
+    @ApiModelProperty("用户类型")
+    private String roleType;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("姓名")
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("用户名")
+    @ApiModelProperty("用户名")
+    private String userName;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("手机号")
+    @ApiModelProperty("手机号")
+    private String mobile;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("报名时间")
+    @ApiModelProperty("报名时间")
+    private String createDate;
+
+}

+ 43 - 0
src/main/java/com/xjrsoft/module/courseTable/vo/SecondCourseEnrollRangeVo.java

@@ -0,0 +1,43 @@
+package com.xjrsoft.module.courseTable.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 第二课堂参与范围表单出参
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+public class SecondCourseEnrollRangeVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 第二课堂id
+    */
+    @ApiModelProperty("第二课堂id")
+    private Long secondCourseId;
+    /**
+    * 班级id
+    */
+    @ApiModelProperty("班级id")
+    private Long classId;
+    /**
+    * 部门id
+    */
+    @ApiModelProperty("部门id")
+    private Long deptId;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+
+    @ApiModelProperty("名称")
+    private String name;
+}

+ 54 - 0
src/main/java/com/xjrsoft/module/courseTable/vo/SecondCourseEnrollVo.java

@@ -0,0 +1,54 @@
+package com.xjrsoft.module.courseTable.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 第二课堂报名表表单出参
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+public class SecondCourseEnrollVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+
+
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+    * 状态
+    */
+    @ApiModelProperty("状态")
+    private Long status;
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ApiModelProperty("教师表id")
+    private Long teacherId;
+
+    @ApiModelProperty("学生表id")
+    private Long studentId;
+
+    @ApiModelProperty("用户名")
+    private String userName;
+
+    @ApiModelProperty("手机号")
+    private String mobile;
+
+    @ApiModelProperty("角色id")
+    private Long roleId;
+
+    @ApiModelProperty("报名时间")
+    private Date createDate;
+
+
+}

+ 69 - 0
src/main/java/com/xjrsoft/module/courseTable/vo/SecondCoursePageVo.java

@@ -0,0 +1,69 @@
+package com.xjrsoft.module.courseTable.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 第二课堂分页列表出参
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+public class SecondCoursePageVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String id;
+
+    @ApiModelProperty("学期名称")
+    private String semesterName;
+    /**
+    * 课程名称
+    */
+    @ApiModelProperty("课程名称")
+    private String name;
+    /**
+    * 课程主要内容
+    */
+    @ApiModelProperty("课程主要内容")
+    private String content;
+    /**
+    * 开课地点
+    */
+    @ApiModelProperty("开课地点")
+    private String place;
+    /**
+    * 讲课老师
+    */
+    @ApiModelProperty("讲课老师")
+    private String teacherName;
+
+    /**
+    * 参与范围
+    */
+    @ApiModelProperty("参与范围")
+    private String enrollRange;
+    /**
+    * 状态(0:未发布 1:进行中 2:已结束)
+    */
+    @ApiModelProperty("状态(0:未发布 1:进行中 2:已结束)")
+    private Integer status;
+
+    @ApiModelProperty("报名人数")
+    private Integer enrollCount;
+
+    @ApiModelProperty("是否报名(0:否 1:是)")
+    private Integer enrollStatus;
+
+    @ApiModelProperty("封面id")
+    private Long coverId;
+
+    @ApiModelProperty("封面url")
+    private String coverUrl;
+
+}

+ 51 - 0
src/main/java/com/xjrsoft/module/courseTable/vo/SecondCourseTimeVo.java

@@ -0,0 +1,51 @@
+package com.xjrsoft.module.courseTable.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.util.Date;
+
+/**
+* @title: 第二课堂开课时间表单出参
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+public class SecondCourseTimeVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 第二课堂id
+    */
+    @ApiModelProperty("第二课堂id")
+    private Long secondCourseId;
+    /**
+    * 上课日期
+    */
+    @ApiModelProperty("上课日期")
+    private String classTime;
+    /**
+    * 时段(1=上午 2=下午 3=晚上)
+    */
+    @ApiModelProperty("时段(1=上午 2=下午 3=晚上)")
+    private Integer timePeriod;
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private LocalTime startTime;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private LocalTime endTime;
+
+
+
+}

+ 87 - 0
src/main/java/com/xjrsoft/module/courseTable/vo/SecondCourseVo.java

@@ -0,0 +1,87 @@
+package com.xjrsoft.module.courseTable.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+* @title: 第二课堂表单出参
+* @Author dzx
+* @Date: 2024-07-29
+* @Version 1.0
+*/
+@Data
+public class SecondCourseVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 学期id
+    */
+    @ApiModelProperty("学期id")
+    private Long baseSemesterId;
+    /**
+    * 课程名称
+    */
+    @ApiModelProperty("课程名称")
+    private String name;
+    /**
+    * 课程主要内容
+    */
+    @ApiModelProperty("课程主要内容")
+    private String content;
+    /**
+    * 开课地点
+    */
+    @ApiModelProperty("开课地点")
+    private String place;
+    /**
+    * 讲课老师
+    */
+    @ApiModelProperty("讲课老师")
+    private String teacherName;
+    /**
+    * 封面图片
+    */
+    @ApiModelProperty("封面图片")
+    private Long coverId;
+    /**
+    * 参与范围
+    */
+    @ApiModelProperty("参与范围")
+    private String enrollRange;
+    /**
+    * 状态(0:未发布 1:进行中 2:已结束)
+    */
+    @ApiModelProperty("状态(0:未发布 1:进行中 2:已结束)")
+    private Integer status;
+
+
+    /**
+    * secondCourseTime
+    */
+    @ApiModelProperty("secondCourseTime子表")
+    private List<SecondCourseTimeVo> secondCourseTimeList;
+    /**
+    * secondCourseEnrollRange
+    */
+    @ApiModelProperty("secondCourseEnrollRange子表")
+    private List<SecondCourseEnrollRangeVo> secondCourseEnrollRangeList;
+    /**
+    * secondCourseEnroll
+    */
+    @ApiModelProperty("secondCourseEnroll子表")
+    private List<SecondCourseEnrollVo> secondCourseEnrollList;
+
+    @ApiModelProperty("封面图片地址")
+    private String coverUrl;
+
+
+    @ApiModelProperty("报名人数")
+    private Integer enrollCount;
+
+}

+ 10 - 1
src/main/java/com/xjrsoft/module/form/service/impl/FormExecuteServiceImpl.java

@@ -872,6 +872,11 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
 
     @Transactional
     public Long insertFormData(Map<String, Object> formData, FormTemplate template) {
+        for (Map.Entry<String, Object> entry : formData.entrySet()) {
+            if (entry.getValue().toString().isEmpty()) {
+                entry.setValue(null);
+            }
+        }
         String formJson = template.getFormJson();
         //自定义表单配置
         FormDesignConfig formDesignConfig = JSONUtil.toBean(formJson, FormDesignConfig.class);
@@ -901,7 +906,6 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
             List<String> autoCodeList = new ArrayList<>();
             // 处理字段值
             Map<String, Object> toSaveFormData = handleFormDataForSave(formData, formDesignConfig, tableName, autoCodeList);
-
             //formData 默认插入雪花Id主键
             if (pk.isPresent()) {
                 formData.put(pk.get().getName(), keyValue);
@@ -991,6 +995,11 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
 
             // 处理字段值
             formData = handleFormDataForSave(formData, formDesignConfig, tableName, null);
+            for (Map.Entry<String, Object> entry : formData.entrySet()) {
+                if (entry.getValue().toString().isEmpty()) {
+                    entry.setValue(null);
+                }
+            }
 
             //此时的formData 已经是剔除了子表单数据了
             entity.putAll(formData);

+ 1 - 1
src/main/java/com/xjrsoft/module/organization/controller/UserController.java

@@ -752,7 +752,7 @@ public class UserController {
 
         List<WhitelistManagement> managementList = whitelistManagementService.list(
                 new QueryWrapper<WhitelistManagement>().lambda()
-                        .eq(WhitelistManagement::getUserId, dto.getUserId())
+                        .eq(WhitelistManagement::getUserId, userStudentInfoVo.getId())
         );
         userStudentInfoVo.setWhitelistStatus(0);
         if(!managementList.isEmpty()){

+ 0 - 8
src/main/java/com/xjrsoft/module/personnel/controller/FaceManagementController.java

@@ -6,12 +6,10 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.toolkit.MPJWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.DeleteMark;
-import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
@@ -32,8 +30,6 @@ import com.xjrsoft.module.system.service.ICodeRuleService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
-import org.jetbrains.annotations.NotNull;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -45,12 +41,8 @@ import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
-import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 @RestController
 @RequestMapping("/personnel" + "/facemanager")

+ 109 - 0
src/main/java/com/xjrsoft/module/personnel/controller/PersonnelHealthyController.java

@@ -0,0 +1,109 @@
+package com.xjrsoft.module.personnel.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.personnel.dto.AddPersonnelHealthyDto;
+import com.xjrsoft.module.personnel.dto.PersonnelHealthyPageDto;
+import com.xjrsoft.module.personnel.dto.UpdatePersonnelHealthyDto;
+import com.xjrsoft.module.personnel.entity.PersonnelHealthy;
+import com.xjrsoft.module.personnel.service.IPersonnelHealthyService;
+import com.xjrsoft.module.personnel.vo.PersonnelHealthyPageVo;
+import com.xjrsoft.module.personnel.vo.PersonnelHealthyVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+* @title: 人员健康信息表
+* @Author dzx
+* @Date: 2024-07-23
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/personnel" + "/personnelHealthy")
+@Api(value = "/personnel"  + "/personnelHealthy",tags = "人员健康信息表代码")
+@AllArgsConstructor
+public class PersonnelHealthyController {
+
+
+    private final IPersonnelHealthyService personnelHealthyService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="人员健康信息表列表(分页)")
+    @SaCheckPermission("personnelhealthy:detail")
+    public RT<PageOutput<PersonnelHealthyPageVo>> page(@Valid PersonnelHealthyPageDto dto){
+
+        Long userId = StpUtil.getLoginIdAsLong();
+        if(dto.getUserId() != null){
+            userId = dto.getUserId();
+        }
+        LambdaQueryWrapper<PersonnelHealthy> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(PersonnelHealthy::getId)
+                .eq(StrUtil.isNotEmpty(dto.getType()), PersonnelHealthy::getType, dto.getType())
+                .eq(PersonnelHealthy::getUserId, userId)
+                .select(PersonnelHealthy.class,x -> VoToColumnUtil.fieldsToColumns(PersonnelHealthyPageVo.class).contains(x.getProperty()));
+        IPage<PersonnelHealthy> page = personnelHealthyService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<PersonnelHealthyPageVo> pageOutput = ConventPage.getPageOutput(page, PersonnelHealthyPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询人员健康信息表信息")
+    @SaCheckPermission("personnelhealthy:detail")
+    public RT<PersonnelHealthyVo> info(@RequestParam Long id){
+        PersonnelHealthy personnelHealthy = personnelHealthyService.getById(id);
+        if (personnelHealthy == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(personnelHealthy, PersonnelHealthyVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增人员健康信息表")
+    @SaCheckPermission("personnelhealthy:add")
+    public RT<Boolean> add(@Valid @RequestBody AddPersonnelHealthyDto dto){
+        PersonnelHealthy personnelHealthy = BeanUtil.toBean(dto, PersonnelHealthy.class);
+        boolean isSuccess = personnelHealthyService.save(personnelHealthy);
+        return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改人员健康信息表")
+    @SaCheckPermission("personnelhealthy:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdatePersonnelHealthyDto dto){
+
+        PersonnelHealthy personnelHealthy = BeanUtil.toBean(dto, PersonnelHealthy.class);
+        return RT.ok(personnelHealthyService.updateById(personnelHealthy));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除人员健康信息表")
+    @SaCheckPermission("personnelhealthy:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(personnelHealthyService.removeBatchByIds(ids));
+
+    }
+
+}

+ 14 - 2
src/main/java/com/xjrsoft/module/personnel/controller/TeacherFaceProcessController.java

@@ -45,7 +45,14 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
@@ -54,7 +61,12 @@ import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.nio.file.Files;
 import java.time.LocalDateTime;
-import java.util.*;
+import java.util.Base64;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 

+ 42 - 0
src/main/java/com/xjrsoft/module/personnel/dto/AddPersonnelHealthyDto.java

@@ -0,0 +1,42 @@
+package com.xjrsoft.module.personnel.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+
+/**
+* @title: 人员健康信息表
+* @Author dzx
+* @Date: 2024-07-23
+* @Version 1.0
+*/
+@Data
+public class AddPersonnelHealthyDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 疾病名称
+    */
+    @ApiModelProperty("疾病名称")
+    private Long userId;
+    /**
+    * 疾病名称
+    */
+    @ApiModelProperty("疾病名称")
+    private String name;
+    /**
+    * 疾病类别(xjr_dictionary_item[healthy_type])
+    */
+    @ApiModelProperty("疾病类别(xjr_dictionary_item[healthy_type])")
+    private String type;
+    /**
+    * 病史来源
+    */
+    @ApiModelProperty("病史来源")
+    private String source;
+
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/personnel/dto/PersonnelHealthyPageDto.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.personnel.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 人员健康信息表分页查询入参
+* @Author dzx
+* @Date: 2024-07-23
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class PersonnelHealthyPageDto extends PageInput {
+
+    @ApiModelProperty("疾病类别(xjr_dictionary_item[healthy_type])")
+    private String type;
+
+    @ApiModelProperty("用户id(xjr_user)")
+    private Long userId;
+
+}

+ 24 - 0
src/main/java/com/xjrsoft/module/personnel/dto/UpdatePersonnelHealthyDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.personnel.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+
+/**
+* @title: 人员健康信息表
+* @Author dzx
+* @Date: 2024-07-23
+* @Version 1.0
+*/
+@Data
+public class UpdatePersonnelHealthyDto extends AddPersonnelHealthyDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+}

+ 94 - 0
src/main/java/com/xjrsoft/module/personnel/entity/PersonnelHealthy.java

@@ -0,0 +1,94 @@
+package com.xjrsoft.module.personnel.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+* @title: 人员健康信息表
+* @Author dzx
+* @Date: 2024-07-23
+* @Version 1.0
+*/
+@Data
+@TableName("personnel_healthy")
+@ApiModel(value = "personnel_healthy", description = "人员健康信息表")
+public class PersonnelHealthy 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 Long userId;
+    /**
+    * 疾病名称
+    */
+    @ApiModelProperty("疾病名称")
+    private String name;
+    /**
+    * 疾病类别(xjr_dictionary_item[healthy_type])
+    */
+    @ApiModelProperty("疾病类别(xjr_dictionary_item[healthy_type])")
+    private String type;
+    /**
+    * 病史来源
+    */
+    @ApiModelProperty("病史来源")
+    private String source;
+
+
+}

+ 16 - 0
src/main/java/com/xjrsoft/module/personnel/mapper/PersonnelHealthyMapper.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.personnel.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.personnel.entity.PersonnelHealthy;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 人员健康信息表
+* @Author dzx
+* @Date: 2024-07-23
+* @Version 1.0
+*/
+@Mapper
+public interface PersonnelHealthyMapper extends MPJBaseMapper<PersonnelHealthy> {
+
+}

+ 14 - 0
src/main/java/com/xjrsoft/module/personnel/service/IPersonnelHealthyService.java

@@ -0,0 +1,14 @@
+package com.xjrsoft.module.personnel.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.personnel.entity.PersonnelHealthy;
+
+/**
+* @title: 人员健康信息表
+* @Author dzx
+* @Date: 2024-07-23
+* @Version 1.0
+*/
+
+public interface IPersonnelHealthyService extends MPJBaseService<PersonnelHealthy> {
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/personnel/service/impl/PersonnelHealthyServiceImpl.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.personnel.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.personnel.entity.PersonnelHealthy;
+import com.xjrsoft.module.personnel.mapper.PersonnelHealthyMapper;
+import com.xjrsoft.module.personnel.service.IPersonnelHealthyService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+* @title: 人员健康信息表
+* @Author dzx
+* @Date: 2024-07-23
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class PersonnelHealthyServiceImpl extends MPJBaseServiceImpl<PersonnelHealthyMapper, PersonnelHealthy> implements IPersonnelHealthyService {
+}

+ 73 - 0
src/main/java/com/xjrsoft/module/personnel/vo/PersonnelHealthyPageVo.java

@@ -0,0 +1,73 @@
+package com.xjrsoft.module.personnel.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 人员健康信息表分页列表出参
+* @Author dzx
+* @Date: 2024-07-23
+* @Version 1.0
+*/
+@Data
+public class PersonnelHealthyPageVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    private Integer enabledMark;
+    /**
+    * 疾病名称
+    */
+    @ApiModelProperty("疾病名称")
+    private Long userId;
+    /**
+    * 疾病名称
+    */
+    @ApiModelProperty("疾病名称")
+    private String name;
+    /**
+    * 疾病类别(xjr_dictionary_item[healthy_type])
+    */
+    @ApiModelProperty("疾病类别(xjr_dictionary_item[healthy_type])")
+    private String type;
+    /**
+    * 病史来源
+    */
+    @ApiModelProperty("病史来源")
+    private String source;
+
+}

+ 43 - 0
src/main/java/com/xjrsoft/module/personnel/vo/PersonnelHealthyVo.java

@@ -0,0 +1,43 @@
+package com.xjrsoft.module.personnel.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 人员健康信息表表单出参
+* @Author dzx
+* @Date: 2024-07-23
+* @Version 1.0
+*/
+@Data
+public class PersonnelHealthyVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 疾病名称
+    */
+    @ApiModelProperty("疾病名称")
+    private Long userId;
+    /**
+    * 疾病名称
+    */
+    @ApiModelProperty("疾病名称")
+    private String name;
+    /**
+    * 疾病类别(xjr_dictionary_item[healthy_type])
+    */
+    @ApiModelProperty("疾病类别(xjr_dictionary_item[healthy_type])")
+    private String type;
+    /**
+    * 病史来源
+    */
+    @ApiModelProperty("病史来源")
+    private String source;
+
+
+
+}

+ 2 - 4
src/main/java/com/xjrsoft/module/student/controller/BaseStudentInfoController.java

@@ -6,10 +6,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
-import com.xjrsoft.module.banding.dto.ChangeClassDto;
-import com.xjrsoft.module.student.dto.BaseStudentSimpleInfoDto;
 import com.xjrsoft.module.student.dto.BaseStudentInfoDetailDto;
 import com.xjrsoft.module.student.dto.BaseStudentInfoPageDto;
+import com.xjrsoft.module.student.dto.BaseStudentSimpleInfoDto;
 import com.xjrsoft.module.student.dto.UpdateBaseStudentInfoDto;
 import com.xjrsoft.module.student.entity.BaseStudentUser;
 import com.xjrsoft.module.student.service.IBaseStudentSchoolRollService;
@@ -23,7 +22,6 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -43,7 +41,7 @@ import java.util.List;
 @RequestMapping("/student" + "/basestudentinfo")
 @Api(value = "/student"  + "/basestudentinfo",tags = "学生信息修改管理")
 @AllArgsConstructor
-public class BaseStudentInfoController {
+public class  BaseStudentInfoController {
 
     private final IStudentManagerService studentManagerService;
     private final IBaseStudentSchoolRollService baseStudentSchoolRollService;

+ 19 - 2
src/main/java/com/xjrsoft/module/student/controller/BaseStudentScholarshipApplicantController.java

@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
 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.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.toolkit.MPJWrappers;
@@ -22,6 +23,7 @@ import com.xjrsoft.module.student.service.IBaseStudentScholarshipApplicantServic
 import com.xjrsoft.module.student.vo.BaseStudentScholarshipApplicantCategoryPageVo;
 import com.xjrsoft.module.student.vo.BaseStudentScholarshipApplicantPageVo;
 import com.xjrsoft.module.student.vo.BaseStudentScholarshipApplicantVo;
+import com.xjrsoft.module.student.vo.ScholarshipApplicantOptionVo;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -107,7 +109,7 @@ public class BaseStudentScholarshipApplicantController {
     public RT<Boolean> add(@Valid @RequestBody AddBaseStudentScholarshipApplicantDto dto){
         BaseStudentScholarshipApplicant baseStudentScholarshipApplicant = BeanUtil.toBean(dto, BaseStudentScholarshipApplicant.class);
         boolean isSuccess = applicantService.save(baseStudentScholarshipApplicant);
-    return RT.ok(isSuccess);
+        return RT.ok(isSuccess);
     }
 
     @PutMapping
@@ -117,7 +119,6 @@ public class BaseStudentScholarshipApplicantController {
 
         BaseStudentScholarshipApplicant baseStudentScholarshipApplicant = BeanUtil.toBean(dto, BaseStudentScholarshipApplicant.class);
         return RT.ok(applicantService.updateById(baseStudentScholarshipApplicant));
-
     }
 
     @DeleteMapping
@@ -125,7 +126,23 @@ public class BaseStudentScholarshipApplicantController {
     @SaCheckPermission("basestudentscholarshipapplicant:delete")
     public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
         return RT.ok(applicantService.removeBatchByIds(ids));
+    }
 
+    @GetMapping(value = "/option-select")
+    @ApiOperation(value="申请人下拉列表")
+    @SaCheckPermission("basestudentscholarshipapplicant:detail")
+    public RT<List<ScholarshipApplicantOptionVo>> optionSelect(@Valid BaseStudentScholarshipApplicantPageDto dto){
+        List<BaseStudentScholarshipApplicant> applicantList = applicantService.list(
+            new QueryWrapper<BaseStudentScholarshipApplicant>().lambda()
+            .select(BaseStudentScholarshipApplicant::getId)
+            .select(BaseStudentScholarshipApplicant.class,x -> VoToColumnUtil.fieldsToColumns(BaseStudentScholarshipApplicantPageVo.class).contains(x.getProperty()))
+            .eq(ObjectUtil.isNotNull(dto.getBaseStudentScholarshipCategoryId()),BaseStudentScholarshipApplicant::getBaseStudentScholarshipCategoryId, dto.getBaseStudentScholarshipCategoryId())
+            .eq(ObjectUtil.isNotNull(dto.getSemesterId()), BaseStudentScholarshipApplicant::getBaseSemesterId, dto.getSemesterId())
+            .eq(BaseStudentScholarshipApplicant::getStatus, 1)
+            .ne(BaseStudentScholarshipApplicant::getReviewStatus, 1)
+        );
+        List<ScholarshipApplicantOptionVo> voList = BeanUtil.copyToList(applicantList, ScholarshipApplicantOptionVo.class);
+        return RT.ok(voList);
     }
 
 }

+ 22 - 7
src/main/java/com/xjrsoft/module/student/controller/BaseStudentScholarshipCategoryController.java

@@ -5,6 +5,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.toolkit.MPJWrappers;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
@@ -12,10 +13,12 @@ import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.student.dto.AddBaseStudentScholarshipCategoryDto;
 import com.xjrsoft.module.student.dto.BaseStudentScholarshipCategoryPageDto;
+import com.xjrsoft.module.student.dto.BaseStudentScholarshipReleasePageDto;
 import com.xjrsoft.module.student.dto.UpdateBaseStudentScholarshipCategoryDto;
 import com.xjrsoft.module.student.entity.BaseStudentScholarshipCategory;
 import com.xjrsoft.module.student.service.IBaseStudentScholarshipCategoryService;
 import com.xjrsoft.module.student.vo.BaseStudentScholarshipCategoryPageVo;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipCategoryStatisticPageVo;
 import com.xjrsoft.module.student.vo.BaseStudentScholarshipCategoryVo;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
 import io.swagger.annotations.Api;
@@ -46,21 +49,23 @@ import java.util.List;
 public class BaseStudentScholarshipCategoryController {
 
 
-    private final IBaseStudentScholarshipCategoryService baseStudentScholarshipCategoryService;
+    private final IBaseStudentScholarshipCategoryService categoryService;
 
     @GetMapping(value = "/page")
     @ApiOperation(value="奖学金类别列表(分页)")
     @SaCheckPermission("basestudentscholarshipcategory:detail")
     public RT<PageOutput<BaseStudentScholarshipCategoryPageVo>> page(@Valid BaseStudentScholarshipCategoryPageDto dto){
-        IPage<BaseStudentScholarshipCategoryPageVo> page = baseStudentScholarshipCategoryService.selectJoinListPage(ConventPage.getPage(dto), BaseStudentScholarshipCategoryPageVo.class,
-            MPJWrappers.<BaseStudentScholarshipCategory>lambdaJoin()
+        IPage<BaseStudentScholarshipCategoryPageVo> page = categoryService.selectJoinListPage(ConventPage.getPage(dto), BaseStudentScholarshipCategoryPageVo.class,
+            MPJWrappers.<BaseStudentScholarshipCategory>lambdaJoin().disableSubLogicDel()
             .like(StrUtil.isNotEmpty(dto.getScholarshipName()), BaseStudentScholarshipCategory::getName, dto.getScholarshipName())
             .like(StrUtil.isNotEmpty(dto.getScholarshipSource()), DictionaryDetail::getName, dto.getScholarshipSource())
             .eq(ObjectUtil.isNotNull(dto.getScholarshipLevel()), BaseStudentScholarshipCategory::getScholarshipLevel, dto.getScholarshipLevel())
             .select(BaseStudentScholarshipCategory::getId)
             .selectAs(DictionaryDetail::getName, BaseStudentScholarshipCategoryPageVo::getScholarshipSourceCn)
+            .select("t2.name", BaseStudentScholarshipCategoryPageVo::getCategoryCn)
             .select(BaseStudentScholarshipCategory.class, x -> VoToColumnUtil.fieldsToColumns(BaseStudentScholarshipCategoryPageVo.class).contains(x.getProperty()))
             .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, BaseStudentScholarshipCategory::getScholarshipSource)
+            .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, BaseStudentScholarshipCategory::getCategory)
         );
 
         PageOutput<BaseStudentScholarshipCategoryPageVo> pageOutput = ConventPage.getPageOutput(page, BaseStudentScholarshipCategoryPageVo.class);
@@ -71,7 +76,7 @@ public class BaseStudentScholarshipCategoryController {
     @ApiOperation(value="根据id查询奖学金类别信息")
     @SaCheckPermission("basestudentscholarshipcategory:detail")
     public RT<BaseStudentScholarshipCategoryVo> info(@RequestParam Long id){
-        BaseStudentScholarshipCategory baseStudentScholarshipCategory = baseStudentScholarshipCategoryService.getByIdDeep(id);
+        BaseStudentScholarshipCategory baseStudentScholarshipCategory = categoryService.getByIdDeep(id);
         if (baseStudentScholarshipCategory == null) {
            return RT.error("找不到此数据!");
         }
@@ -84,7 +89,7 @@ public class BaseStudentScholarshipCategoryController {
     @SaCheckPermission("basestudentscholarshipcategory:add")
     public RT<Boolean> add(@Valid @RequestBody AddBaseStudentScholarshipCategoryDto dto){
         BaseStudentScholarshipCategory baseStudentScholarshipCategory = BeanUtil.toBean(dto, BaseStudentScholarshipCategory.class);
-        boolean isSuccess = baseStudentScholarshipCategoryService.add(baseStudentScholarshipCategory);
+        boolean isSuccess = categoryService.add(baseStudentScholarshipCategory);
         return RT.ok(isSuccess);
     }
 
@@ -94,7 +99,7 @@ public class BaseStudentScholarshipCategoryController {
     public RT<Boolean> update(@Valid @RequestBody UpdateBaseStudentScholarshipCategoryDto dto){
 
         BaseStudentScholarshipCategory baseStudentScholarshipCategory = BeanUtil.toBean(dto, BaseStudentScholarshipCategory.class);
-        return RT.ok(baseStudentScholarshipCategoryService.update(baseStudentScholarshipCategory));
+        return RT.ok(categoryService.update(baseStudentScholarshipCategory));
 
     }
 
@@ -102,8 +107,18 @@ public class BaseStudentScholarshipCategoryController {
     @ApiOperation(value = "删除奖学金类别")
     @SaCheckPermission("basestudentscholarshipcategory:delete")
     public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
-        return RT.ok(baseStudentScholarshipCategoryService.delete(ids));
+        return RT.ok(categoryService.delete(ids));
 
     }
 
+    @GetMapping(value = "/statistics-page")
+    @ApiOperation(value="奖学金统计(分页)")
+    @SaCheckPermission("basestudentscholarshipcategory:detail")
+    public RT<PageOutput<BaseStudentScholarshipCategoryStatisticPageVo>> statisticsPage(@Valid BaseStudentScholarshipReleasePageDto dto){
+        Page<BaseStudentScholarshipCategoryStatisticPageVo> page = categoryService.getStatisticsPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+
+        PageOutput<BaseStudentScholarshipCategoryStatisticPageVo> pageOutput = ConventPage.getPageOutput(page, BaseStudentScholarshipCategoryStatisticPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
 }

+ 162 - 0
src/main/java/com/xjrsoft/module/student/controller/BaseStudentScholarshipReleaseController.java

@@ -0,0 +1,162 @@
+package com.xjrsoft.module.student.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+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.organization.service.IUserService;
+import com.xjrsoft.module.student.dto.AddBaseStudentScholarshipReleaseDto;
+import com.xjrsoft.module.student.dto.AddStudentScholarshipDto;
+import com.xjrsoft.module.student.dto.BaseStudentScholarshipReleasePageDto;
+import com.xjrsoft.module.student.dto.UpdateBaseStudentScholarshipReleaseDto;
+import com.xjrsoft.module.student.entity.BaseStudentScholarshipApplicant;
+import com.xjrsoft.module.student.entity.BaseStudentScholarshipRelease;
+import com.xjrsoft.module.student.service.IBaseStudentScholarshipApplicantService;
+import com.xjrsoft.module.student.service.IBaseStudentScholarshipReleaseService;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipReleasePageVo;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipReleaseRecordVo;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipReleaseVo;
+import com.xjrsoft.module.student.vo.ScholarshipApplicantImportVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+* @title: 奖学金发放记录表
+* @Author dzx
+* @Date: 2024-07-25
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/student" + "/baseStudentScholarshipRelease")
+@Api(value = "/student"  + "/baseStudentScholarshipRelease",tags = "奖学金发放记录表代码")
+@AllArgsConstructor
+public class BaseStudentScholarshipReleaseController {
+
+    private final IBaseStudentScholarshipApplicantService applicantService;
+    private final IBaseStudentScholarshipReleaseService releaseService;
+    private final IUserService userService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value = "奖学金发放记录表列表(分页)")
+    @SaCheckPermission("basestudentscholarshiprelease:detail")
+    public RT<PageOutput<BaseStudentScholarshipReleasePageVo>> page(@Valid BaseStudentScholarshipReleasePageDto dto) {
+
+        Page<BaseStudentScholarshipReleasePageVo> page = releaseService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<BaseStudentScholarshipReleasePageVo> pageOutput = ConventPage.getPageOutput(page, BaseStudentScholarshipReleasePageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/record")
+    @ApiOperation(value = "奖学金发放记录表列表(分页)")
+    @SaCheckPermission("basestudentscholarshiprelease:detail")
+    public RT<PageOutput<BaseStudentScholarshipReleaseRecordVo>> record(@Valid BaseStudentScholarshipReleasePageDto dto) {
+
+        IPage<BaseStudentScholarshipReleaseRecordVo> page = releaseService.selectJoinListPage(ConventPage.getPage(dto), BaseStudentScholarshipReleaseRecordVo.class,
+                new MPJLambdaWrapper<BaseStudentScholarshipRelease>()
+                        .select(BaseStudentScholarshipRelease::getId)
+                        .select(BaseStudentScholarshipRelease.class,x -> VoToColumnUtil.fieldsToColumns(BaseStudentScholarshipRelease.class).contains(x.getProperty()))
+                        .eq(BaseStudentScholarshipRelease::getBaseStudentScholarshipApplicantId, dto.getApplicantId())
+        );
+        PageOutput<BaseStudentScholarshipReleaseRecordVo> pageOutput = ConventPage.getPageOutput(page, BaseStudentScholarshipReleaseRecordVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value = "根据申请id查询奖学金发放记录表信息")
+    @SaCheckPermission("basestudentscholarshiprelease:detail")
+    public RT<BaseStudentScholarshipReleaseVo> info(@RequestParam Long id) {
+        BaseStudentScholarshipApplicant applicant = applicantService.getById(id);
+        if (applicant == null) {
+            return RT.error("找不到此数据!");
+        }
+        List<BaseStudentScholarshipRelease> list = releaseService.list(
+                new QueryWrapper<BaseStudentScholarshipRelease>().lambda()
+                        .eq(BaseStudentScholarshipRelease::getBaseStudentScholarshipApplicantId, id)
+        );
+        double sum = list.stream().filter(value -> value.getAmount() != null).mapToDouble(value -> value.getAmount()).sum();
+        BaseStudentScholarshipReleaseVo releaseVo = new BaseStudentScholarshipReleaseVo();
+        releaseVo.setScholarshipApplicantId(applicant.getBaseStudentScholarshipCategoryId());
+        releaseVo.setTotalAmount(applicant.getAmount());
+        releaseVo.setReleaseAmount(sum);
+        return RT.ok(releaseVo);
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增奖学金发放记录表")
+    @SaCheckPermission("basestudentscholarshiprelease:add")
+    public RT<Boolean> add(@Valid @RequestBody AddBaseStudentScholarshipReleaseDto dto) {
+        BaseStudentScholarshipRelease baseStudentScholarshipRelease = BeanUtil.toBean(dto, BaseStudentScholarshipRelease.class);
+        boolean isSuccess = releaseService.save(baseStudentScholarshipRelease);
+        return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改奖学金发放记录表")
+    @SaCheckPermission("basestudentscholarshiprelease:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateBaseStudentScholarshipReleaseDto dto) {
+
+        BaseStudentScholarshipRelease baseStudentScholarshipRelease = BeanUtil.toBean(dto, BaseStudentScholarshipRelease.class);
+        return RT.ok(releaseService.updateById(baseStudentScholarshipRelease));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除奖学金发放记录表")
+    @SaCheckPermission("basestudentscholarshiprelease:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids) {
+        return RT.ok(releaseService.removeBatchByIds(ids));
+    }
+
+    @PostMapping("add-student")
+    @ApiOperation(value = "添加学生")
+    @SaCheckPermission("basestudentscholarshiprelease:add")
+    public RT<Boolean> addStudent(@Valid @RequestBody AddStudentScholarshipDto dto) {
+        if(dto.getApplicantIds() != null && !dto.getApplicantIds().isEmpty()){
+            List<BaseStudentScholarshipApplicant> applicantList = applicantService.list(
+                    new QueryWrapper<BaseStudentScholarshipApplicant>().lambda()
+                            .in(BaseStudentScholarshipApplicant::getId, dto.getApplicantIds())
+            );
+            List<BaseStudentScholarshipApplicant> dataList = new ArrayList<>();
+            for (BaseStudentScholarshipApplicant applicantVo : applicantList) {
+                applicantVo.setScholarshipLevel(dto.getScholarshipLevel());
+                applicantVo.setBaseStudentScholarshipCategoryId(dto.getBaseStudentScholarshipCategoryId());
+                dataList.add(applicantVo);
+            }
+            if(!dataList.isEmpty()){
+                applicantService.updateBatchById(dataList);
+            }
+        }
+        return RT.ok(true);
+    }
+
+    @PostMapping("/import")
+    @ApiOperation(value = "成绩导入")
+    public RT<List<Map<String, String>>> scoreImport(@RequestParam MultipartFile file) throws IOException {
+        List<Map<String, String>> maps = applicantService.importData(file);
+        return RT.ok(maps);
+    }
+}

+ 0 - 7
src/main/java/com/xjrsoft/module/student/controller/StudentManagerController.java

@@ -23,26 +23,19 @@ import com.xjrsoft.common.utils.TreeUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseGrade;
-import com.xjrsoft.module.base.entity.BaseMajorSet;
 import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.base.service.IBaseGradeService;
 import com.xjrsoft.module.concat.service.IXjrUserService;
 import com.xjrsoft.module.hikvision.util.DataUtil;
-import com.xjrsoft.module.organization.entity.Department;
 import com.xjrsoft.module.organization.entity.UserDeptRelation;
-import com.xjrsoft.module.organization.service.IDepartmentService;
 import com.xjrsoft.module.organization.service.IUserDeptRelationService;
 import com.xjrsoft.module.room.service.IRoomBedService;
 import com.xjrsoft.module.student.dto.AddBaseStudentUserDto;
 import com.xjrsoft.module.student.dto.BaseStudentUserPageDto;
 import com.xjrsoft.module.student.dto.UpdateBaseStudentUserDto;
-import com.xjrsoft.module.student.entity.BaseClassMajorSet;
-import com.xjrsoft.module.student.entity.BaseMajor;
 import com.xjrsoft.module.student.entity.BaseStudent;
 import com.xjrsoft.module.student.entity.BaseStudentUser;
-import com.xjrsoft.module.student.service.IBaseMajorService;
 import com.xjrsoft.module.student.service.IStudentManagerService;
-import com.xjrsoft.module.student.vo.BaseClassMajorSetVo;
 import com.xjrsoft.module.student.vo.BaseDepMajorGradeClassStudenTreeVo;
 import com.xjrsoft.module.student.vo.BaseStudentSchoolRollVo;
 import com.xjrsoft.module.student.vo.BaseStudentTreeVo;

+ 0 - 1
src/main/java/com/xjrsoft/module/student/dto/ActiveAccountDto.java

@@ -4,7 +4,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
 
 
 /**

+ 6 - 0
src/main/java/com/xjrsoft/module/student/dto/AddBaseStudentScholarshipCategoryDto.java

@@ -60,4 +60,10 @@ public class AddBaseStudentScholarshipCategoryDto implements Serializable {
     */
     @ApiModelProperty("baseStudentScholarshipLevel子表")
     private List<AddBaseStudentScholarshipLevelDto> baseStudentScholarshipLevelList;
+
+    @ApiModelProperty("奖助学金类型(xjr_dictionary_item[scholarship_category])")
+    private String category;
+
+    @ApiModelProperty("资助单位/个人")
+    private String supportSource;
 }

+ 38 - 0
src/main/java/com/xjrsoft/module/student/dto/AddBaseStudentScholarshipReleaseDto.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.util.Date;
+
+
+
+/**
+* @title: 奖学金发放记录表
+* @Author dzx
+* @Date: 2024-07-25
+* @Version 1.0
+*/
+@Data
+public class AddBaseStudentScholarshipReleaseDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 奖学金申请id
+    */
+    @ApiModelProperty("奖学金申请id")
+    private Long baseStudentScholarshipApplicantId;
+    /**
+    * 发放金额
+    */
+    @ApiModelProperty("发放金额")
+    private Double amount;
+    /**
+    * 发放日期
+    */
+    @ApiModelProperty("发放日期")
+    private Date releaseDate;
+
+}

+ 42 - 0
src/main/java/com/xjrsoft/module/student/dto/AddStudentScholarshipDto.java

@@ -0,0 +1,42 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+
+/**
+* @title: 新生维护信息
+* @Author dzx
+* @Date: 2024-06-27
+* @Version 1.0
+*/
+@Data
+public class AddStudentScholarshipDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("学期id")
+    private Long semesterId;
+    /**
+    * 毕业学校
+    */
+    @ApiModelProperty("奖助学金id")
+    private Long baseStudentScholarshipCategoryId;
+    /**
+    * 学生姓名
+    */
+    @ApiModelProperty("申请id")
+    private List<Long> applicantIds;
+    /**
+    * 性别
+    */
+    @ApiModelProperty("等级")
+    private Integer scholarshipLevel;
+}

+ 40 - 0
src/main/java/com/xjrsoft/module/student/dto/BaseStudentScholarshipReleasePageDto.java

@@ -0,0 +1,40 @@
+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 dzx
+* @Date: 2024-07-25
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BaseStudentScholarshipReleasePageDto extends PageInput {
+
+    @ApiModelProperty("申请奖助学金名称")
+    private String scholarshipCategory;
+
+    @ApiModelProperty("学期id")
+    private Long semesterId;
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ApiModelProperty("发放状态")
+    private Integer releaseStatus;
+
+    @ApiModelProperty("身份证号")
+    private String credentialNumber;
+
+    @ApiModelProperty("申请奖助学金id")
+    private Long scholarshipCategoryId;
+
+    @ApiModelProperty("申请id")
+    private Long applicantId;
+
+}

+ 3 - 0
src/main/java/com/xjrsoft/module/student/dto/BaseStudentUserPageDto.java

@@ -50,4 +50,7 @@ public class BaseStudentUserPageDto extends PageInput {
     @ApiModelProperty("树-查询id")
     private String queryId;
 
+    @ApiModelProperty("身份证号")
+    private String credentialNumber;
+
 }

+ 24 - 0
src/main/java/com/xjrsoft/module/student/dto/UpdateBaseStudentScholarshipReleaseDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+
+/**
+* @title: 奖学金发放记录表
+* @Author dzx
+* @Date: 2024-07-25
+* @Version 1.0
+*/
+@Data
+public class UpdateBaseStudentScholarshipReleaseDto extends AddBaseStudentScholarshipReleaseDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+}

+ 5 - 1
src/main/java/com/xjrsoft/module/student/entity/BaseMajor.java

@@ -1,6 +1,10 @@
 package com.xjrsoft.module.student.entity;
 
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 12 - 1
src/main/java/com/xjrsoft/module/student/entity/BaseStudentScholarshipApplicant.java

@@ -88,7 +88,7 @@ public class BaseStudentScholarshipApplicant implements Serializable {
     * 学期名称
     */
     @ApiModelProperty("学期Id")
-    private String baseSemesterId;
+    private Long baseSemesterId;
     /**
     * 年级名称
     */
@@ -155,5 +155,16 @@ public class BaseStudentScholarshipApplicant implements Serializable {
     @ApiModelProperty("发放状态(1:已发放 0:未发放)")
     private Integer releaseStatus;
 
+    @ApiModelProperty("银行账户名称")
+    private String bankUserName;
 
+
+    @ApiModelProperty("申请金额")
+    private Double amount;
+
+    @ApiModelProperty("奖学金等级 0=无等级")
+    private Integer scholarshipLevel;
+
+    @ApiModelProperty("评审状态")
+    private Integer reviewStatus;
 }

+ 89 - 0
src/main/java/com/xjrsoft/module/student/entity/BaseStudentScholarshipRelease.java

@@ -0,0 +1,89 @@
+package com.xjrsoft.module.student.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+* @title: 奖学金发放记录表
+* @Author dzx
+* @Date: 2024-07-25
+* @Version 1.0
+*/
+@Data
+@TableName("base_student_scholarship_release")
+@ApiModel(value = "base_student_scholarship_release", description = "奖学金发放记录表")
+public class BaseStudentScholarshipRelease 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;
+    /**
+    * 奖学金申请id
+    */
+    @ApiModelProperty("奖学金申请id")
+    private Long baseStudentScholarshipApplicantId;
+    /**
+    * 发放金额
+    */
+    @ApiModelProperty("发放金额")
+    private Double amount;
+    /**
+    * 发放日期
+    */
+    @ApiModelProperty("发放日期")
+    private Date releaseDate;
+
+
+}

+ 6 - 0
src/main/java/com/xjrsoft/module/student/mapper/BaseStudentScholarshipCategoryMapper.java

@@ -1,8 +1,13 @@
 package com.xjrsoft.module.student.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.student.dto.BaseStudentScholarshipReleasePageDto;
 import com.xjrsoft.module.student.entity.BaseStudentScholarshipCategory;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipCategoryStatisticPageVo;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipReleasePageVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
 * @title: 奖学金类别
@@ -13,4 +18,5 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface BaseStudentScholarshipCategoryMapper extends MPJBaseMapper<BaseStudentScholarshipCategory> {
 
+    Page<BaseStudentScholarshipCategoryStatisticPageVo> getStatisticsPage(Page<BaseStudentScholarshipReleasePageVo> page, @Param("dto") BaseStudentScholarshipReleasePageDto dto);
 }

+ 21 - 0
src/main/java/com/xjrsoft/module/student/mapper/BaseStudentScholarshipReleaseMapper.java

@@ -0,0 +1,21 @@
+package com.xjrsoft.module.student.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.student.dto.BaseStudentScholarshipReleasePageDto;
+import com.xjrsoft.module.student.entity.BaseStudentScholarshipRelease;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipReleasePageVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+* @title: 奖学金发放记录表
+* @Author dzx
+* @Date: 2024-07-25
+* @Version 1.0
+*/
+@Mapper
+public interface BaseStudentScholarshipReleaseMapper extends MPJBaseMapper<BaseStudentScholarshipRelease> {
+
+    Page<BaseStudentScholarshipReleasePageVo> getPage(Page<BaseStudentScholarshipReleasePageVo> page, @Param("dto") BaseStudentScholarshipReleasePageDto dto);
+}

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

@@ -5,6 +5,12 @@ import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.student.dto.BaseStudentScholarshipApplicantCategoryPageDto;
 import com.xjrsoft.module.student.entity.BaseStudentScholarshipApplicant;
 import com.xjrsoft.module.student.vo.BaseStudentScholarshipApplicantCategoryPageVo;
+import com.xjrsoft.module.student.vo.ScholarshipApplicantImportVo;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
 
 /**
 * @title: 奖学金申请
@@ -30,4 +36,5 @@ public interface IBaseStudentScholarshipApplicantService extends MPJBaseService<
      */
     Page<BaseStudentScholarshipApplicantCategoryPageVo> getScholarshiPage(Page<BaseStudentScholarshipApplicantCategoryPageDto> page, BaseStudentScholarshipApplicantCategoryPageDto dto);
 
+    List<Map<String, String>> importData(MultipartFile file) throws IOException;
 }

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

@@ -1,7 +1,12 @@
 package com.xjrsoft.module.student.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.student.dto.BaseStudentScholarshipReleasePageDto;
 import com.xjrsoft.module.student.entity.BaseStudentScholarshipCategory;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipCategoryStatisticPageVo;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipReleasePageVo;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -36,4 +41,6 @@ public interface IBaseStudentScholarshipCategoryService extends MPJBaseService<B
     * @return
     */
     Boolean delete(List<Long> ids);
+
+    Page<BaseStudentScholarshipCategoryStatisticPageVo> getStatisticsPage(Page<BaseStudentScholarshipReleasePageVo> page, BaseStudentScholarshipReleasePageDto dto);
 }

+ 19 - 0
src/main/java/com/xjrsoft/module/student/service/IBaseStudentScholarshipReleaseService.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.student.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.student.dto.BaseStudentScholarshipReleasePageDto;
+import com.xjrsoft.module.student.entity.BaseStudentScholarshipRelease;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipReleasePageVo;
+
+/**
+* @title: 奖学金发放记录表
+* @Author dzx
+* @Date: 2024-07-25
+* @Version 1.0
+*/
+
+public interface IBaseStudentScholarshipReleaseService extends MPJBaseService<BaseStudentScholarshipRelease> {
+
+    Page<BaseStudentScholarshipReleasePageVo> getPage(Page<BaseStudentScholarshipReleasePageVo> page, BaseStudentScholarshipReleasePageDto dto);
+}

+ 1 - 1
src/main/java/com/xjrsoft/module/student/service/IBaseStudentSchoolRollService.java

@@ -2,9 +2,9 @@ package com.xjrsoft.module.student.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
-import com.xjrsoft.module.student.dto.BaseStudentSimpleInfoDto;
 import com.xjrsoft.module.student.dto.BaseStudentInfoDetailDto;
 import com.xjrsoft.module.student.dto.BaseStudentInfoPageDto;
+import com.xjrsoft.module.student.dto.BaseStudentSimpleInfoDto;
 import com.xjrsoft.module.student.dto.UpdateBaseStudentInfoDto;
 import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
 import com.xjrsoft.module.student.vo.BaseStudentInfoDetailVo;

+ 92 - 2
src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentScholarshipApplicantServiceImpl.java

@@ -1,17 +1,36 @@
 package com.xjrsoft.module.student.service.impl;
 
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcel;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.GenderEnum;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.base.entity.BaseSemester;
+import com.xjrsoft.module.base.service.IBaseSemesterService;
 import com.xjrsoft.module.student.dto.BaseStudentScholarshipApplicantCategoryPageDto;
 import com.xjrsoft.module.student.entity.BaseStudentScholarshipApplicant;
+import com.xjrsoft.module.student.entity.BaseStudentScholarshipCategory;
 import com.xjrsoft.module.student.mapper.BaseStudentMapper;
 import com.xjrsoft.module.student.mapper.BaseStudentScholarshipApplicantMapper;
 import com.xjrsoft.module.student.service.IBaseStudentScholarshipApplicantService;
+import com.xjrsoft.module.student.service.IBaseStudentScholarshipCategoryService;
 import com.xjrsoft.module.student.vo.BaseStudentScholarshipApplicantCategoryPageVo;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipApplicantPageVo;
+import com.xjrsoft.module.student.vo.ScholarshipApplicantImportVo;
 import com.xjrsoft.module.student.vo.StudentInfoVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @title: 奖学金申请
@@ -22,13 +41,16 @@ import org.springframework.stereotype.Service;
 @Service
 @AllArgsConstructor
 public class BaseStudentScholarshipApplicantServiceImpl extends MPJBaseServiceImpl<BaseStudentScholarshipApplicantMapper, BaseStudentScholarshipApplicant> implements IBaseStudentScholarshipApplicantService {
-    private final BaseStudentScholarshipApplicantMapper baseStudentScholarshipApplicantMapper;
+    private final BaseStudentScholarshipApplicantMapper applicantMapper;
+    private final IBaseSemesterService semesterService;
+    private final IBaseStudentScholarshipCategoryService categoryService;
     @Override
     public Page<BaseStudentScholarshipApplicantCategoryPageVo> getScholarshiPage(Page<BaseStudentScholarshipApplicantCategoryPageDto> page, BaseStudentScholarshipApplicantCategoryPageDto dto) {
-        Page<BaseStudentScholarshipApplicantCategoryPageVo> result = baseStudentScholarshipApplicantMapper.getScholarshiPage(page, dto);
+        Page<BaseStudentScholarshipApplicantCategoryPageVo> result = applicantMapper.getScholarshiPage(page, dto);
         return result;
     }
 
+
     private final BaseStudentScholarshipApplicantMapper scholarshipApplicantMapper;
 
     private final BaseStudentMapper studentMapper;
@@ -52,4 +74,72 @@ public class BaseStudentScholarshipApplicantServiceImpl extends MPJBaseServiceIm
 
         return updateById(scholarshipApplicant);
     }
+
+    @Override
+    public List<Map<String, String>> importData(MultipartFile file) throws IOException {
+        List<ScholarshipApplicantImportVo> dataList = EasyExcel.read(file.getInputStream()).headRowNumber(2).head(ScholarshipApplicantImportVo.class).sheet().doReadSync();
+        List<BaseStudentScholarshipApplicant> applicantList = this.list(
+                new QueryWrapper<BaseStudentScholarshipApplicant>().lambda()
+                        .select(BaseStudentScholarshipApplicant::getId)
+                        .select(BaseStudentScholarshipApplicant.class,x -> VoToColumnUtil.fieldsToColumns(BaseStudentScholarshipApplicantPageVo.class).contains(x.getProperty()))
+                        .eq(BaseStudentScholarshipApplicant::getStatus, 1)
+        );
+
+        List<BaseSemester> semesterList = semesterService.list(
+                new QueryWrapper<BaseSemester>().lambda()
+                        .select(BaseSemester::getId)
+                        .select(BaseSemester.class, x -> VoToColumnUtil.fieldsToColumns(BaseSemester.class).contains(x.getProperty()))
+                        .eq(BaseSemester::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+        Map<String, Long> semesterMap = semesterList.stream().collect(Collectors.toMap(BaseSemester::getName, BaseSemester::getId));
+
+        List<BaseStudentScholarshipCategory> categoryList = categoryService.list(
+                new QueryWrapper<BaseStudentScholarshipCategory>().lambda()
+                        .select(BaseStudentScholarshipCategory::getId)
+                        .select(BaseStudentScholarshipCategory.class, x -> VoToColumnUtil.fieldsToColumns(BaseStudentScholarshipCategory.class).contains(x.getProperty()))
+                        .eq(BaseStudentScholarshipCategory::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+
+        Map<String, Long> categoryMap = categoryList.stream().collect(Collectors.toMap(BaseStudentScholarshipCategory::getName, BaseStudentScholarshipCategory::getId));
+
+        List<Map<String, String>> errorList = new ArrayList<>();
+        List<BaseStudentScholarshipApplicant> updateList = new ArrayList<>();
+        for (ScholarshipApplicantImportVo importVo : dataList) {
+            List<String> errorMsg = new ArrayList<>();
+            if(StrUtil.isEmpty(importVo.getSemesterName()) || StrUtil.isEmpty(importVo.getName()) || StrUtil.isEmpty(importVo.getCredentialNumber())
+            || StrUtil.isEmpty(importVo.getScholarshipCategoryName()) || importVo.getScholarshipLevel() == null){
+                errorMsg.add("有未填写的列");
+            }
+            if(semesterMap.get(importVo.getSemesterName()) == null){
+                errorMsg.add("学期名称填写不正确");
+            }
+            Long semesterId = semesterMap.get(importVo.getSemesterName());
+            if(categoryMap.get(importVo.getScholarshipCategoryName()) == null){
+                errorMsg.add("奖学金名称填写不正确");
+            }
+            Long categoryId = categoryMap.get(importVo.getScholarshipCategoryName());
+            for (BaseStudentScholarshipApplicant applicant : applicantList) {
+                if(applicant.getBaseSemesterId() == semesterId && importVo.getName().equals(applicant.getName()) && importVo.getCredentialNumber().equals(applicant.getStudentId())){
+                    applicant.setBaseStudentScholarshipCategoryId(categoryId);
+                    applicant.setReviewStatus(1);
+                    applicant.setScholarshipLevel(importVo.getScholarshipLevel());
+                    updateList.add(applicant);
+                }
+            }
+            if(!errorMsg.isEmpty()){
+                LinkedHashMap<String, String> map = new LinkedHashMap<>();
+                map.put("学期名称", importVo.getSemesterName());
+                map.put("姓名", importVo.getName());
+                map.put("身份证号", importVo.getCredentialNumber());
+                map.put("奖学金名称", importVo.getScholarshipCategoryName());
+                map.put("获奖等级", importVo.getScholarshipLevel() + "");
+                map.put("错误信息", errorMsg.toString().replace("[", "").replace("]", ""));
+                errorList.add(map);
+            }
+        }
+        if(!updateList.isEmpty()){
+            this.updateBatchById(updateList);
+        }
+        return errorList;
+    }
 }

+ 20 - 11
src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentScholarshipCategoryServiceImpl.java

@@ -1,12 +1,16 @@
 package com.xjrsoft.module.student.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.student.dto.BaseStudentScholarshipReleasePageDto;
 import com.xjrsoft.module.student.entity.BaseStudentScholarshipCategory;
 import com.xjrsoft.module.student.entity.BaseStudentScholarshipLevel;
 import com.xjrsoft.module.student.mapper.BaseStudentScholarshipCategoryMapper;
 import com.xjrsoft.module.student.mapper.BaseStudentScholarshipLevelMapper;
 import com.xjrsoft.module.student.service.IBaseStudentScholarshipCategoryService;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipCategoryStatisticPageVo;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipReleasePageVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -24,18 +28,18 @@ import java.util.stream.Collectors;
 @Service
 @AllArgsConstructor
 public class BaseStudentScholarshipCategoryServiceImpl extends MPJBaseServiceImpl<BaseStudentScholarshipCategoryMapper, BaseStudentScholarshipCategory> implements IBaseStudentScholarshipCategoryService {
-    private final BaseStudentScholarshipCategoryMapper baseStudentScholarshipCategoryBaseStudentScholarshipCategoryMapper;
+    private final BaseStudentScholarshipCategoryMapper categoryMapper;
 
-    private final BaseStudentScholarshipLevelMapper baseStudentScholarshipCategoryBaseStudentScholarshipLevelMapper;
+    private final BaseStudentScholarshipLevelMapper levelMapper;
 
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean add(BaseStudentScholarshipCategory baseStudentScholarshipCategory) {
-        baseStudentScholarshipCategoryBaseStudentScholarshipCategoryMapper.insert(baseStudentScholarshipCategory);
+        categoryMapper.insert(baseStudentScholarshipCategory);
         for (BaseStudentScholarshipLevel baseStudentScholarshipLevel : baseStudentScholarshipCategory.getBaseStudentScholarshipLevelList()) {
             baseStudentScholarshipLevel.setBaseStudentScholarshipCategoryId(baseStudentScholarshipCategory.getId());
-            baseStudentScholarshipCategoryBaseStudentScholarshipLevelMapper.insert(baseStudentScholarshipLevel);
+            levelMapper.insert(baseStudentScholarshipLevel);
         }
 
         return true;
@@ -44,11 +48,11 @@ public class BaseStudentScholarshipCategoryServiceImpl extends MPJBaseServiceImp
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean update(BaseStudentScholarshipCategory baseStudentScholarshipCategory) {
-        baseStudentScholarshipCategoryBaseStudentScholarshipCategoryMapper.updateById(baseStudentScholarshipCategory);
+        categoryMapper.updateById(baseStudentScholarshipCategory);
         //********************************* BaseStudentScholarshipLevel  增删改  开始 *******************************************/
         {
             // 查出所有子级的id
-            List<BaseStudentScholarshipLevel> baseStudentScholarshipLevelList = baseStudentScholarshipCategoryBaseStudentScholarshipLevelMapper.selectList(Wrappers.lambdaQuery(BaseStudentScholarshipLevel.class).eq(BaseStudentScholarshipLevel::getBaseStudentScholarshipCategoryId, baseStudentScholarshipCategory.getId()).select(BaseStudentScholarshipLevel::getId));
+            List<BaseStudentScholarshipLevel> baseStudentScholarshipLevelList = levelMapper.selectList(Wrappers.lambdaQuery(BaseStudentScholarshipLevel.class).eq(BaseStudentScholarshipLevel::getBaseStudentScholarshipCategoryId, baseStudentScholarshipCategory.getId()).select(BaseStudentScholarshipLevel::getId));
             List<Long> baseStudentScholarshipLevelIds = baseStudentScholarshipLevelList.stream().map(BaseStudentScholarshipLevel::getId).collect(Collectors.toList());
             //原有子表单 没有被删除的主键
             List<Long> baseStudentScholarshipLevelOldIds = baseStudentScholarshipCategory.getBaseStudentScholarshipLevelList().stream().map(BaseStudentScholarshipLevel::getId).filter(Objects::nonNull).collect(Collectors.toList());
@@ -58,18 +62,18 @@ public class BaseStudentScholarshipCategoryServiceImpl extends MPJBaseServiceImp
             for (BaseStudentScholarshipLevel baseStudentScholarshipLevel : baseStudentScholarshipCategory.getBaseStudentScholarshipLevelList()) {
                 //如果不等于空则修改
                 if (baseStudentScholarshipLevel.getId() != null) {
-                    baseStudentScholarshipCategoryBaseStudentScholarshipLevelMapper.updateById(baseStudentScholarshipLevel);
+                    levelMapper.updateById(baseStudentScholarshipLevel);
                 }
                 //如果等于空 则新增
                 else {
                     //已经不存在的id 删除
                     baseStudentScholarshipLevel.setBaseStudentScholarshipCategoryId(baseStudentScholarshipCategory.getId());
-                    baseStudentScholarshipCategoryBaseStudentScholarshipLevelMapper.insert(baseStudentScholarshipLevel);
+                    levelMapper.insert(baseStudentScholarshipLevel);
                 }
             }
             //已经不存在的id 删除
             if(baseStudentScholarshipLevelRemoveIds.size() > 0){
-                baseStudentScholarshipCategoryBaseStudentScholarshipLevelMapper.deleteBatchIds(baseStudentScholarshipLevelRemoveIds);
+                levelMapper.deleteBatchIds(baseStudentScholarshipLevelRemoveIds);
             }
         }
         //********************************* BaseStudentScholarshipLevel  增删改  结束 *******************************************/
@@ -80,9 +84,14 @@ public class BaseStudentScholarshipCategoryServiceImpl extends MPJBaseServiceImp
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean delete(List<Long> ids) {
-        baseStudentScholarshipCategoryBaseStudentScholarshipCategoryMapper.deleteBatchIds(ids);
-        baseStudentScholarshipCategoryBaseStudentScholarshipLevelMapper.delete(Wrappers.lambdaQuery(BaseStudentScholarshipLevel.class).in(BaseStudentScholarshipLevel::getBaseStudentScholarshipCategoryId, ids));
+        categoryMapper.deleteBatchIds(ids);
+        levelMapper.delete(Wrappers.lambdaQuery(BaseStudentScholarshipLevel.class).in(BaseStudentScholarshipLevel::getBaseStudentScholarshipCategoryId, ids));
 
         return true;
     }
+
+    @Override
+    public Page<BaseStudentScholarshipCategoryStatisticPageVo> getStatisticsPage(Page<BaseStudentScholarshipReleasePageVo> page, BaseStudentScholarshipReleasePageDto dto) {
+        return this.baseMapper.getStatisticsPage(page, dto);
+    }
 }

+ 26 - 0
src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentScholarshipReleaseServiceImpl.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.student.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.student.dto.BaseStudentScholarshipReleasePageDto;
+import com.xjrsoft.module.student.entity.BaseStudentScholarshipRelease;
+import com.xjrsoft.module.student.mapper.BaseStudentScholarshipReleaseMapper;
+import com.xjrsoft.module.student.service.IBaseStudentScholarshipReleaseService;
+import com.xjrsoft.module.student.vo.BaseStudentScholarshipReleasePageVo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+* @title: 奖学金发放记录表
+* @Author dzx
+* @Date: 2024-07-25
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class BaseStudentScholarshipReleaseServiceImpl extends MPJBaseServiceImpl<BaseStudentScholarshipReleaseMapper, BaseStudentScholarshipRelease> implements IBaseStudentScholarshipReleaseService {
+    @Override
+    public Page<BaseStudentScholarshipReleasePageVo> getPage(Page<BaseStudentScholarshipReleasePageVo> page, BaseStudentScholarshipReleasePageDto dto) {
+        return this.baseMapper.getPage(page, dto);
+    }
+}

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

@@ -13,9 +13,9 @@ import com.xjrsoft.module.base.mapper.BaseClassMapper;
 import com.xjrsoft.module.organization.mapper.UserMapper;
 import com.xjrsoft.module.room.mapper.RoomBedMapper;
 import com.xjrsoft.module.room.vo.RoomBedInfoVo;
-import com.xjrsoft.module.student.dto.BaseStudentSimpleInfoDto;
 import com.xjrsoft.module.student.dto.BaseStudentInfoDetailDto;
 import com.xjrsoft.module.student.dto.BaseStudentInfoPageDto;
+import com.xjrsoft.module.student.dto.BaseStudentSimpleInfoDto;
 import com.xjrsoft.module.student.dto.PbVXsxxsfytbDto;
 import com.xjrsoft.module.student.dto.UpdateBaseStudentInfoDto;
 import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;

+ 22 - 3
src/main/java/com/xjrsoft/module/student/service/impl/StudentManagerServiceImpl.java

@@ -42,13 +42,32 @@ import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.student.dto.AddBaseStudentUserDto;
 import com.xjrsoft.module.student.dto.BaseStudentUserPageDto;
 import com.xjrsoft.module.student.dto.UpdateBaseStudentUserDto;
-import com.xjrsoft.module.student.entity.*;
+import com.xjrsoft.module.student.entity.BaseClassMajorSet;
+import com.xjrsoft.module.student.entity.BaseMajor;
+import com.xjrsoft.module.student.entity.BaseStudent;
+import com.xjrsoft.module.student.entity.BaseStudentContact;
+import com.xjrsoft.module.student.entity.BaseStudentFamily;
+import com.xjrsoft.module.student.entity.BaseStudentFamilyMember;
+import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
+import com.xjrsoft.module.student.entity.BaseStudentSubsidize;
+import com.xjrsoft.module.student.entity.BaseStudentUser;
 import com.xjrsoft.module.student.mapper.BaseStudentFamilyMapper;
 import com.xjrsoft.module.student.mapper.BaseStudentFamilyMemberMapper;
 import com.xjrsoft.module.student.mapper.BaseStudentMapper;
 import com.xjrsoft.module.student.mapper.BaseStudentUserMapper;
-import com.xjrsoft.module.student.service.*;
-import com.xjrsoft.module.student.vo.*;
+import com.xjrsoft.module.student.service.IBaseMajorService;
+import com.xjrsoft.module.student.service.IBaseStudentContactService;
+import com.xjrsoft.module.student.service.IBaseStudentFamilyService;
+import com.xjrsoft.module.student.service.IBaseStudentSchoolRollService;
+import com.xjrsoft.module.student.service.IBaseStudentService;
+import com.xjrsoft.module.student.service.IBaseStudentSubsidizeService;
+import com.xjrsoft.module.student.service.IStudentManagerService;
+import com.xjrsoft.module.student.vo.BaseClassMajorSetVo;
+import com.xjrsoft.module.student.vo.BaseDepMajorGradeClassStudenTreeVo;
+import com.xjrsoft.module.student.vo.BaseStudentClassVo;
+import com.xjrsoft.module.student.vo.BaseStudentUserPageVo;
+import com.xjrsoft.module.student.vo.PersonalPortraitPersonalInfoVo;
+import com.xjrsoft.module.student.vo.StudentPersonalInfoVo;
 import com.xjrsoft.module.system.entity.Area;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
 import com.xjrsoft.module.system.entity.DictionaryItem;

+ 9 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipCategoryPageVo.java

@@ -58,4 +58,13 @@ public class BaseStudentScholarshipCategoryPageVo {
     @ApiModelProperty("备注")
     private String remark;
 
+    @ApiModelProperty("奖助学金类型(xjr_dictionary_item[scholarship_category])")
+    private String category;
+
+    @ApiModelProperty("资助单位/个人")
+    private String supportSource;
+
+    @ApiModelProperty("奖助学金类型-中文")
+    private String categoryCn;
+
 }

+ 59 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipCategoryStatisticPageVo.java

@@ -0,0 +1,59 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 奖学金类别分页列表出参
+* @Author dzx
+* @Date: 2023-11-23
+* @Version 1.0
+*/
+@Data
+public class BaseStudentScholarshipCategoryStatisticPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 名称
+    */
+    @ApiModelProperty("奖助学金名称")
+    private String name;
+    /**
+    * 奖学金来源(xjr_dictionary_item[scholarship_source])
+    */
+    @ApiModelProperty("奖助学金类型")
+    private String categoryCn;
+    /**
+     * 奖学金来源-中文
+     */
+    @ApiModelProperty("奖学金总金额")
+    private Double totalAmount;
+    /**
+    * 总金额
+    */
+    @ApiModelProperty("上报金额")
+    private Double applicantAmonut;
+    /**
+    * 奖学金等级 0=无等级
+    */
+    @ApiModelProperty("发放金额")
+    private Double releaseAmount;
+
+
+    @ApiModelProperty("申请人数")
+    private Integer applicantCount;
+
+    @ApiModelProperty("等级")
+    private Integer scholarshipLevel;
+
+    @ApiModelProperty("学期")
+    private String semesterName;
+
+    @ApiModelProperty("学期id")
+    private Long semesterId;
+
+}

+ 6 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipCategoryVo.java

@@ -62,4 +62,10 @@ public class BaseStudentScholarshipCategoryVo {
     @ApiModelProperty("baseStudentScholarshipLevel子表")
     private List<BaseStudentScholarshipLevelVo> baseStudentScholarshipLevelList;
 
+    @ApiModelProperty("奖助学金类型(xjr_dictionary_item[scholarship_category])")
+    private String category;
+
+    @ApiModelProperty("资助单位/个人")
+    private String supportSource;
+
 }

+ 75 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipReleasePageVo.java

@@ -0,0 +1,75 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 奖学金发放记录表分页列表出参
+* @Author dzx
+* @Date: 2024-07-25
+* @Version 1.0
+*/
+@Data
+public class BaseStudentScholarshipReleasePageVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String id;
+    /**
+    * 奖学金申请id
+    */
+    @ApiModelProperty("学期名称")
+    private String semesterName;
+    /**
+    * 发放金额
+    */
+    @ApiModelProperty("发放状态(2:全部发放 1:部分发放 0:未发放)")
+    private Integer releaseStatus;
+    /**
+    * 发放日期
+    */
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ApiModelProperty("性别")
+    private String genderCn;
+
+    @ApiModelProperty("身份证号")
+    private String credentialNumber;
+
+    @ApiModelProperty("班级名称")
+    private String className;
+
+    @ApiModelProperty("申请奖助学金名称")
+    private String scholarshipCategory;
+
+    @ApiModelProperty("奖助学金类型")
+    private String categoryCn;
+
+
+    @ApiModelProperty("等级")
+    private Integer scholarshipLevel;
+
+    @ApiModelProperty("金额")
+    private Double amount;
+
+    @ApiModelProperty("银行卡号")
+    private String bankNo;
+
+    @ApiModelProperty("收款银行名称")
+    private String bankType;
+
+    @ApiModelProperty("银行账户名称")
+    private String bankUserName;
+
+    @ApiModelProperty("发放金额")
+    private Double releaseAmount;
+
+    @ApiModelProperty("发放日期")
+    private Date releaseDate;
+
+}

+ 75 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipReleaseRecordVo.java

@@ -0,0 +1,75 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 奖学金发放记录表分页列表出参
+* @Author dzx
+* @Date: 2024-07-25
+* @Version 1.0
+*/
+@Data
+public class BaseStudentScholarshipReleaseRecordVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String id;
+    /**
+    * 奖学金申请id
+    */
+    @ApiModelProperty("学期名称")
+    private String semesterName;
+    /**
+    * 发放金额
+    */
+    @ApiModelProperty("发放状态(2:全部发放 1:部分发放 0:未发放)")
+    private Integer releaseStatus;
+    /**
+    * 发放日期
+    */
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ApiModelProperty("性别")
+    private String genderCn;
+
+    @ApiModelProperty("身份证号")
+    private String credentialNumber;
+
+    @ApiModelProperty("班级名称")
+    private String className;
+
+    @ApiModelProperty("申请奖助学金名称")
+    private String scholarshipCategory;
+
+    @ApiModelProperty("奖助学金类型")
+    private String categoryCn;
+
+
+    @ApiModelProperty("等级")
+    private Integer scholarshipLevel;
+
+    @ApiModelProperty("金额")
+    private Double amount;
+
+    @ApiModelProperty("银行卡号")
+    private String bankNo;
+
+    @ApiModelProperty("收款银行名称")
+    private String bankType;
+
+    @ApiModelProperty("银行账户名称")
+    private String bankUserName;
+
+    @ApiModelProperty("发放金额")
+    private Double releaseAmount;
+
+    @ApiModelProperty("发放日期")
+    private Date releaseDate;
+
+}

+ 29 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipReleaseVo.java

@@ -0,0 +1,29 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 奖学金发放记录表表单出参
+* @Author dzx
+* @Date: 2024-07-25
+* @Version 1.0
+*/
+@Data
+public class BaseStudentScholarshipReleaseVo {
+    /**
+    * 奖学金申请id
+    */
+    @ApiModelProperty("奖学金申请id")
+    private Long scholarshipApplicantId;
+    /**
+    * 发放金额
+    */
+    @ApiModelProperty("已发放金额")
+    private Double releaseAmount;
+    /**
+    * 发放日期
+    */
+    @ApiModelProperty("申请总金额")
+    private Double totalAmount;
+}

+ 12 - 2
src/main/java/com/xjrsoft/module/student/vo/BaseStudentSompleInfoVo.java

@@ -4,8 +4,6 @@ import com.alibaba.excel.annotation.write.style.ContentStyle;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.util.Date;
-
 /**
 * @title: 移动端学生修改信息列表
 * @Author dzx
@@ -57,4 +55,16 @@ public class BaseStudentSompleInfoVo {
 
     @ApiModelProperty("班主任id")
     private Long teahcerId;
+
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("班主任电话")
+    private String teacherMobile;
+
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("班主任工号")
+    private String teacherUserName;
+
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("教师名称")
+    private String classroomName;
 }

Некоторые файлы не были показаны из-за большого количества измененных файлов