Browse Source

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

# Conflicts:
#	src/main/resources/sqlScript/20240718_sql.sql
大数据与最优化研究所 3 months ago
parent
commit
ca5f0d89ed
100 changed files with 3839 additions and 77 deletions
  1. 182 0
      src/main/java/com/xjrsoft/module/activity/controller/ActivityEnrollController.java
  2. 251 0
      src/main/java/com/xjrsoft/module/activity/controller/ActivityInfoController.java
  3. 28 0
      src/main/java/com/xjrsoft/module/activity/dto/ActivityEnrollExportDto.java
  4. 28 0
      src/main/java/com/xjrsoft/module/activity/dto/ActivityEnrollPageDto.java
  5. 39 0
      src/main/java/com/xjrsoft/module/activity/dto/ActivityInfoPageDto.java
  6. 32 0
      src/main/java/com/xjrsoft/module/activity/dto/AddActivityEnrollDto.java
  7. 42 0
      src/main/java/com/xjrsoft/module/activity/dto/AddActivityEnrollRangeDto.java
  8. 99 0
      src/main/java/com/xjrsoft/module/activity/dto/AddActivityInfoDto.java
  9. 30 0
      src/main/java/com/xjrsoft/module/activity/dto/ChangeStatusDto.java
  10. 24 0
      src/main/java/com/xjrsoft/module/activity/dto/UpdateActivityInfoDto.java
  11. 26 0
      src/main/java/com/xjrsoft/module/activity/dto/UserEnrollDto.java
  12. 89 0
      src/main/java/com/xjrsoft/module/activity/entity/ActivityEnroll.java
  13. 94 0
      src/main/java/com/xjrsoft/module/activity/entity/ActivityEnrollRange.java
  14. 165 0
      src/main/java/com/xjrsoft/module/activity/entity/ActivityInfo.java
  15. 26 0
      src/main/java/com/xjrsoft/module/activity/mapper/ActivityEnrollMapper.java
  16. 16 0
      src/main/java/com/xjrsoft/module/activity/mapper/ActivityEnrollRangeMapper.java
  17. 23 0
      src/main/java/com/xjrsoft/module/activity/mapper/ActivityInfoMapper.java
  18. 48 0
      src/main/java/com/xjrsoft/module/activity/service/IActivityEnrollService.java
  19. 47 0
      src/main/java/com/xjrsoft/module/activity/service/IActivityInfoService.java
  20. 133 0
      src/main/java/com/xjrsoft/module/activity/service/impl/ActivityEnrollServiceImpl.java
  21. 113 0
      src/main/java/com/xjrsoft/module/activity/service/impl/ActivityInfoServiceImpl.java
  22. 47 0
      src/main/java/com/xjrsoft/module/activity/vo/ActivityEnrollExcelVo.java
  23. 63 0
      src/main/java/com/xjrsoft/module/activity/vo/ActivityEnrollPageVo.java
  24. 47 0
      src/main/java/com/xjrsoft/module/activity/vo/ActivityEnrollRangeVo.java
  25. 40 0
      src/main/java/com/xjrsoft/module/activity/vo/ActivityEnrollVo.java
  26. 117 0
      src/main/java/com/xjrsoft/module/activity/vo/ActivityInfoPageVo.java
  27. 127 0
      src/main/java/com/xjrsoft/module/activity/vo/ActivityInfoVo.java
  28. 1 1
      src/main/java/com/xjrsoft/module/attendance/controller/AttendanceMessageSetController.java
  29. 25 2
      src/main/java/com/xjrsoft/module/banding/controller/BandingTaskClassController.java
  30. 30 0
      src/main/java/com/xjrsoft/module/banding/dto/ChangeClassStatusDto.java
  31. 2 0
      src/main/java/com/xjrsoft/module/banding/entity/BandingTaskClass.java
  32. 2 3
      src/main/java/com/xjrsoft/module/banding/service/IBandingTaskClassService.java
  33. 15 0
      src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskClassServiceImpl.java
  34. 10 0
      src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskServiceImpl.java
  35. 3 0
      src/main/java/com/xjrsoft/module/banding/vo/BandingTaskClassPageVo.java
  36. 6 0
      src/main/java/com/xjrsoft/module/base/entity/BaseClassroom.java
  37. 5 1
      src/main/java/com/xjrsoft/module/organization/controller/UserController.java
  38. 3 0
      src/main/java/com/xjrsoft/module/organization/dto/UserPageDto.java
  39. 2 0
      src/main/java/com/xjrsoft/module/organization/vo/UserPageVo.java
  40. 0 8
      src/main/java/com/xjrsoft/module/personnel/controller/FaceManagementController.java
  41. 109 0
      src/main/java/com/xjrsoft/module/personnel/controller/PersonnelHealthyController.java
  42. 14 2
      src/main/java/com/xjrsoft/module/personnel/controller/TeacherFaceProcessController.java
  43. 42 0
      src/main/java/com/xjrsoft/module/personnel/dto/AddPersonnelHealthyDto.java
  44. 25 0
      src/main/java/com/xjrsoft/module/personnel/dto/PersonnelHealthyPageDto.java
  45. 24 0
      src/main/java/com/xjrsoft/module/personnel/dto/UpdatePersonnelHealthyDto.java
  46. 94 0
      src/main/java/com/xjrsoft/module/personnel/entity/PersonnelHealthy.java
  47. 16 0
      src/main/java/com/xjrsoft/module/personnel/mapper/PersonnelHealthyMapper.java
  48. 14 0
      src/main/java/com/xjrsoft/module/personnel/service/IPersonnelHealthyService.java
  49. 19 0
      src/main/java/com/xjrsoft/module/personnel/service/impl/PersonnelHealthyServiceImpl.java
  50. 73 0
      src/main/java/com/xjrsoft/module/personnel/vo/PersonnelHealthyPageVo.java
  51. 43 0
      src/main/java/com/xjrsoft/module/personnel/vo/PersonnelHealthyVo.java
  52. 2 4
      src/main/java/com/xjrsoft/module/student/controller/BaseStudentInfoController.java
  53. 29 12
      src/main/java/com/xjrsoft/module/student/controller/BaseStudentScholarshipApplicantController.java
  54. 22 7
      src/main/java/com/xjrsoft/module/student/controller/BaseStudentScholarshipCategoryController.java
  55. 162 0
      src/main/java/com/xjrsoft/module/student/controller/BaseStudentScholarshipReleaseController.java
  56. 0 7
      src/main/java/com/xjrsoft/module/student/controller/StudentManagerController.java
  57. 0 1
      src/main/java/com/xjrsoft/module/student/dto/ActiveAccountDto.java
  58. 6 0
      src/main/java/com/xjrsoft/module/student/dto/AddBaseStudentScholarshipCategoryDto.java
  59. 38 0
      src/main/java/com/xjrsoft/module/student/dto/AddBaseStudentScholarshipReleaseDto.java
  60. 42 0
      src/main/java/com/xjrsoft/module/student/dto/AddStudentScholarshipDto.java
  61. 40 0
      src/main/java/com/xjrsoft/module/student/dto/BaseStudentScholarshipReleasePageDto.java
  62. 3 0
      src/main/java/com/xjrsoft/module/student/dto/BaseStudentUserPageDto.java
  63. 24 0
      src/main/java/com/xjrsoft/module/student/dto/UpdateBaseStudentScholarshipReleaseDto.java
  64. 5 1
      src/main/java/com/xjrsoft/module/student/entity/BaseMajor.java
  65. 12 1
      src/main/java/com/xjrsoft/module/student/entity/BaseStudentScholarshipApplicant.java
  66. 6 0
      src/main/java/com/xjrsoft/module/student/entity/BaseStudentScholarshipCategory.java
  67. 89 0
      src/main/java/com/xjrsoft/module/student/entity/BaseStudentScholarshipRelease.java
  68. 6 0
      src/main/java/com/xjrsoft/module/student/mapper/BaseStudentScholarshipCategoryMapper.java
  69. 21 0
      src/main/java/com/xjrsoft/module/student/mapper/BaseStudentScholarshipReleaseMapper.java
  70. 7 0
      src/main/java/com/xjrsoft/module/student/service/IBaseStudentScholarshipApplicantService.java
  71. 7 0
      src/main/java/com/xjrsoft/module/student/service/IBaseStudentScholarshipCategoryService.java
  72. 19 0
      src/main/java/com/xjrsoft/module/student/service/IBaseStudentScholarshipReleaseService.java
  73. 1 1
      src/main/java/com/xjrsoft/module/student/service/IBaseStudentSchoolRollService.java
  74. 6 0
      src/main/java/com/xjrsoft/module/student/service/impl/BaseNewStudentServiceImpl.java
  75. 92 2
      src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentScholarshipApplicantServiceImpl.java
  76. 20 11
      src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentScholarshipCategoryServiceImpl.java
  77. 26 0
      src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentScholarshipReleaseServiceImpl.java
  78. 1 1
      src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentSchoolRollServiceImpl.java
  79. 22 3
      src/main/java/com/xjrsoft/module/student/service/impl/StudentManagerServiceImpl.java
  80. 3 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipApplicantPageVo.java
  81. 9 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipCategoryPageVo.java
  82. 59 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipCategoryStatisticPageVo.java
  83. 6 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipCategoryVo.java
  84. 75 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipReleasePageVo.java
  85. 75 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipReleaseRecordVo.java
  86. 29 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipReleaseVo.java
  87. 12 2
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentSompleInfoVo.java
  88. 0 5
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanTreeVo.java
  89. 38 0
      src/main/java/com/xjrsoft/module/student/vo/ScholarshipApplicantImportVo.java
  90. 110 0
      src/main/java/com/xjrsoft/module/student/vo/ScholarshipApplicantOptionVo.java
  91. 22 0
      src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookDto.java
  92. 19 0
      src/main/java/com/xjrsoft/module/textbook/entity/Textbook.java
  93. 19 0
      src/main/java/com/xjrsoft/module/textbook/vo/TextbookPageVo.java
  94. 19 0
      src/main/java/com/xjrsoft/module/textbook/vo/TextbookVo.java
  95. 1 0
      src/main/resources/application-dev.yml
  96. 1 0
      src/main/resources/application-pre.yml
  97. 1 0
      src/main/resources/application-prod.yml
  98. 27 0
      src/main/resources/mapper/activity/ActivityEnrollMapper.xml
  99. 51 0
      src/main/resources/mapper/activity/ActivityInfoMapper.xml
  100. 2 2
      src/main/resources/mapper/banding/BandingTaskClassMapper.xml

+ 182 - 0
src/main/java/com/xjrsoft/module/activity/controller/ActivityEnrollController.java

@@ -0,0 +1,182 @@
+package com.xjrsoft.module.activity.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.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.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;
+import com.xjrsoft.module.activity.dto.UpdateActivityInfoDto;
+import com.xjrsoft.module.activity.dto.UserEnrollDto;
+import com.xjrsoft.module.activity.entity.ActivityEnroll;
+import com.xjrsoft.module.activity.service.IActivityEnrollService;
+import com.xjrsoft.module.activity.vo.ActivityEnrollExcelVo;
+import com.xjrsoft.module.activity.vo.ActivityEnrollPageVo;
+import com.xjrsoft.module.banding.vo.BandingTaskClassExcelVo;
+import com.xjrsoft.module.concat.service.IXjrUserService;
+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.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-19
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/activity" + "/activityEnroll")
+@Api(value = "/activity"  + "/activityEnroll",tags = "活动登记代码")
+@AllArgsConstructor
+public class ActivityEnrollController {
+
+    private final IXjrUserService xjrUserService;
+    private final IActivityEnrollService activityEnrollService;
+
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="活动信息列表(分页)")
+    @SaCheckPermission("activityinfo:detail")
+    public RT<PageOutput<ActivityEnrollPageVo>> page(@Valid ActivityEnrollPageDto dto){
+
+        Page<ActivityEnrollPageVo> page = activityEnrollService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<ActivityEnrollPageVo> pageOutput = ConventPage.getPageOutput(page, ActivityEnrollPageVo.class);
+        for (ActivityEnrollPageVo item : pageOutput.getList()) {
+            if(item.getStudentId() != null){
+                item.setRoleId(3L);
+            }else if(item.getTeacherId() != null){
+                item.setRoleId(2L);
+            }
+        }
+        return RT.ok(pageOutput);
+    }
+
+    @PostMapping(value = "/change-status")
+    @ApiOperation(value="修改状态")
+    @SaCheckPermission("officebuild:detail")
+    public RT<Boolean> changeStatus(@Valid @RequestBody List<ChangeStatusDto> dtoList) throws Exception {
+        List<ActivityEnroll> enrollList = new ArrayList<>();
+        for (ChangeStatusDto dto : dtoList) {
+            ActivityEnroll enroll = activityEnrollService.getById(dto.getId());
+            enroll.setStatus(dto.getStatus());
+            enrollList.add(enroll);
+        }
+
+        activityEnrollService.updateBatchById(enrollList);
+        return RT.ok(true);
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增活动信息")
+    @SaCheckPermission("activityinfo:add")
+    public RT<Boolean> add(@Valid @RequestBody AddActivityEnrollDto dto){
+
+        boolean isSuccess = activityEnrollService.save(dto);
+        return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改活动信息")
+    @SaCheckPermission("activityinfo:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateActivityInfoDto dto){
+
+        ActivityEnroll activityInfo = BeanUtil.toBean(dto, ActivityEnroll.class);
+        return RT.ok(activityEnrollService.update(activityInfo));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除活动信息")
+    @SaCheckPermission("activityinfo:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(activityEnrollService.delete(ids));
+    }
+
+
+    @PostMapping("/export-query")
+    @ApiOperation(value = "导出列表")
+    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");
+        for (ActivityEnrollPageVo listVo : listVos) {
+            list.add(new ActivityEnrollExcelVo(){{
+                setName(listVo.getName());
+                setMobile(listVo.getMobile());
+                if(listVo.getTeacherId() != null){
+                    setRoleType("教师");
+                }
+                if(listVo.getStudentId() != null){
+                    setRoleType("学生");
+                }
+                if(listVo.getStatus() == 0){
+                    setStatus("待确认");
+                }else if(listVo.getStatus() == 1){
+                    setStatus("未参与");
+                }else if(listVo.getStatus() == 2){
+                    setStatus("已参与");
+                }
+                setUserName(listVo.getUserName());
+                setCreateDate(sdf.format(listVo.getCreateDate()));
+            }});
+        }
+
+        ByteArrayOutputStream bot = new ByteArrayOutputStream();
+        EasyExcel.write(bot, ActivityEnrollExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
+
+        return RT.fileStream(bot.toByteArray(), "enroll" + ExcelTypeEnum.XLSX.getValue());
+    }
+
+    @PostMapping(value = "/enroll")
+    @ApiOperation(value="报名")
+    @SaCheckPermission("activityinfo:detail")
+    public RT<Boolean> enroll(@Valid UserEnrollDto dto){
+        List<ActivityEnroll> enrollList = activityEnrollService.list(
+                new QueryWrapper<ActivityEnroll>().lambda()
+                        .eq(ActivityEnroll::getUserId, StpUtil.getLoginIdAsLong())
+                        .eq(ActivityEnroll::getActivityInfoId, dto.getActivityInfoId())
+        );
+        if(!enrollList.isEmpty()){
+            return RT.error("已报名,无需重复报名");
+        }
+        ActivityEnroll activityEnroll = new ActivityEnroll() {{
+            setUserId(StpUtil.getLoginIdAsLong());
+            setActivityInfoId(dto.getActivityInfoId());
+        }};
+        boolean save = activityEnrollService.save(activityEnroll);
+
+        XjrUser xjrUser = xjrUserService.getById(StpUtil.getLoginIdAsLong());
+        if(StrUtil.isNotEmpty(dto.getMobile()) && !dto.getMobile().equals(xjrUser.getMobile())){
+            xjrUser.setMobile(dto.getMobile());
+            xjrUserService.updateById(xjrUser);
+        }
+
+        return RT.ok(save);
+    }
+
+}

+ 251 - 0
src/main/java/com/xjrsoft/module/activity/controller/ActivityInfoController.java

@@ -0,0 +1,251 @@
+package com.xjrsoft.module.activity.controller;
+
+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;
+import com.xjrsoft.module.activity.dto.ChangeStatusDto;
+import com.xjrsoft.module.activity.dto.UpdateActivityInfoDto;
+import com.xjrsoft.module.activity.entity.ActivityEnroll;
+import com.xjrsoft.module.activity.entity.ActivityInfo;
+import com.xjrsoft.module.activity.service.IActivityEnrollService;
+import com.xjrsoft.module.activity.service.IActivityInfoService;
+import com.xjrsoft.module.activity.vo.ActivityEnrollPageVo;
+import com.xjrsoft.module.activity.vo.ActivityEnrollRangeVo;
+import com.xjrsoft.module.activity.vo.ActivityInfoPageVo;
+import com.xjrsoft.module.activity.vo.ActivityInfoVo;
+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.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.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.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+* @title: 活动信息
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/activity" + "/activityInfo")
+@Api(value = "/activity"  + "/activityInfo",tags = "活动信息代码")
+@AllArgsConstructor
+public class ActivityInfoController {
+
+
+    private final IActivityInfoService activityInfoService;
+    private final IBaseClassService classService;
+    private final IDepartmentService departmentService;
+    private final IXjrUserService xjrUserService;
+    private final IFileService fileService;
+    private final IActivityEnrollService enrollService;
+
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="活动信息列表(分页)")
+    @SaCheckPermission("activityinfo:detail")
+    public RT<PageOutput<ActivityInfoPageVo>> page(@Valid ActivityInfoPageDto dto){
+
+        Page<ActivityInfoPageVo> page = activityInfoService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<ActivityInfoPageVo> pageOutput = ConventPage.getPageOutput(page, ActivityInfoPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询活动信息信息")
+    @SaCheckPermission("activityinfo:detail")
+    public RT<ActivityInfoVo> info(@RequestParam Long id){
+        ActivityInfo activityInfo = activityInfoService.getByIdDeep(id);
+        if (activityInfo == null) {
+           return RT.error("找不到此数据!");
+        }
+        ActivityInfoVo infoVo = BeanUtil.toBean(activityInfo, ActivityInfoVo.class);
+        if(infoVo.getOrgId() != null){
+            Department department = departmentService.getById(infoVo.getOrgId());
+            if(department != null){
+                infoVo.setOrgName(department.getName());
+            }
+        }
+        if(infoVo.getEnterpriseId() != null){
+            String tableName = "company_coop";
+            Entity where = Entity.create(tableName);
+            where.set("id", infoVo.getEnterpriseId());
+            Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(tableName, where);
+
+            if(objectMap != null && objectMap.containsKey("company_name")){
+                infoVo.setEnterpriseName(objectMap.get("company_name").toString());
+            }
+        }
+
+        List<ActivityEnrollRangeVo> userRelationList = new ArrayList<>();
+        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);
+            }
+        }
+        infoVo.setActivityEnrollRangeList(userRelationList);
+
+        ActivityEnrollExportDto dto = new ActivityEnrollExportDto();
+        dto.setActivityInfoId(id);
+        List<ActivityEnrollPageVo> enrollList = enrollService.getList(dto);
+        infoVo.setEnrollCount(enrollList.size());
+
+        Set<ActivityEnrollPageVo> teacherSet = enrollList.stream().filter(x -> x.getTeacherId() != null).collect(Collectors.toSet());
+        infoVo.setTeacherCount(teacherSet.size());
+
+        Set<ActivityEnrollPageVo> studentSet = enrollList.stream().filter(x -> x.getStudentId() != null).collect(Collectors.toSet());
+        infoVo.setStudentCount(studentSet.size());
+
+        Set<ActivityEnrollPageVo> suretSet = enrollList.stream().filter(x -> (x.getStatus() == 1 || x.getStatus() == 2)).collect(Collectors.toSet());
+        infoVo.setSureCount(suretSet.size());
+
+        Set<ActivityEnrollPageVo> notSuretSet = enrollList.stream().filter(x -> x.getStatus() == 0).collect(Collectors.toSet());
+        infoVo.setNotSureCount(notSuretSet.size());
+        return RT.ok(infoVo);
+    }
+
+    @PostMapping(value = "/change-status")
+    @ApiOperation(value="修改状态")
+    @SaCheckPermission("officebuild:detail")
+    public RT<Boolean> changeStatus(@Valid @RequestBody ChangeStatusDto dto) throws Exception {
+        ActivityInfo activityInfo = activityInfoService.getById(dto.getId());
+        if(activityInfo == null){
+            throw new MyException("未能找到活动信息");
+        }
+        activityInfo.setStatus(dto.getStatus());
+        activityInfoService.updateById(activityInfo);
+        return RT.ok(true);
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增活动信息")
+    @SaCheckPermission("activityinfo:add")
+    public RT<Boolean> add(@Valid @RequestBody AddActivityInfoDto dto){
+
+        boolean isSuccess = activityInfoService.add(dto);
+        return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改活动信息")
+    @SaCheckPermission("activityinfo:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateActivityInfoDto dto){
+        return RT.ok(activityInfoService.update(dto));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除活动信息")
+    @SaCheckPermission("activityinfo:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(activityInfoService.delete(ids));
+    }
+
+
+    @GetMapping(value = "/effective-list")
+    @ApiOperation(value="移动端活动信息列表(分页)")
+    @SaCheckPermission("activityinfo:detail")
+    public RT<PageOutput<ActivityInfoPageVo>> mobilePage(@Valid ActivityInfoPageDto dto){
+        dto.setIsEffective(1);
+        Page<ActivityInfoPageVo> page = activityInfoService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+
+        List<ActivityEnroll> enrollList = enrollService.list(
+                new QueryWrapper<ActivityEnroll>().lambda()
+                        .eq(ActivityEnroll::getUserId, StpUtil.getLoginIdAsLong())
+        );
+        Set<Long> collect = enrollList.stream().map(ActivityEnroll::getActivityInfoId).collect(Collectors.toSet());
+
+        for (ActivityInfoPageVo record : page.getRecords()) {
+            record.setIsEnroll(0);
+            if(collect.contains(Long.parseLong(record.getId()))){
+                record.setIsEnroll(1);
+            }
+            if(record.getCoverFileId() != null){
+                File file = fileService.getOne(new QueryWrapper<File>().lambda().eq(File::getFolderId, record.getCoverFileId()));
+                if(file != null){
+                    record.setCoverFileUrl(file.getFileUrl());
+                }
+            }
+        }
+
+        PageOutput<ActivityInfoPageVo> pageOutput = ConventPage.getPageOutput(page, ActivityInfoPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/my-enroll-list")
+    @ApiOperation(value="我的报名记录(分页)")
+    @SaCheckPermission("activityinfo:detail")
+    public RT<PageOutput<ActivityInfoPageVo>> myEnrollList(@Valid ActivityInfoPageDto dto){
+        dto.setLoginUserId(StpUtil.getLoginIdAsLong());
+        Page<ActivityInfoPageVo> page = activityInfoService.getMyPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        for (ActivityInfoPageVo record : page.getRecords()) {
+            if(record.getCoverFileId() != null){
+                File file = fileService.getOne(new QueryWrapper<File>().lambda().eq(File::getFolderId, record.getCoverFileId()));
+                if(file != null){
+                    record.setCoverFileUrl(file.getFileUrl());
+                }
+            }
+        }
+
+        PageOutput<ActivityInfoPageVo> pageOutput = ConventPage.getPageOutput(page, ActivityInfoPageVo.class);
+        return RT.ok(pageOutput);
+    }
+}

+ 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;
+
+}

+ 28 - 0
src/main/java/com/xjrsoft/module/activity/dto/ActivityEnrollPageDto.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 ActivityEnrollPageDto extends PageInput {
+
+    @ApiModelProperty("活动id")
+    private Long activityInfoId;
+
+    @ApiModelProperty("状态(0:待确认 1:未参与 2:已参与)")
+    private Integer status;
+
+    @ApiModelProperty("登录人id")
+    private Long loginUserId;
+
+}

+ 39 - 0
src/main/java/com/xjrsoft/module/activity/dto/ActivityInfoPageDto.java

@@ -0,0 +1,39 @@
+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 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;
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/activity/dto/AddActivityEnrollDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.activity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+* @title: 活动登记表
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Data
+public class AddActivityEnrollDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 活动(activity_info)
+    */
+    @ApiModelProperty("活动(activity_info)")
+    private Long activityInfoId;
+    /**
+    * 参与人(xjr_user)
+    */
+    @ApiModelProperty("参与人")
+    private List<AddActivityEnrollRangeDto> enrollRangeList;
+
+}

+ 42 - 0
src/main/java/com/xjrsoft/module/activity/dto/AddActivityEnrollRangeDto.java

@@ -0,0 +1,42 @@
+package com.xjrsoft.module.activity.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 AddActivityEnrollRangeDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 所属班级id
+    */
+    @ApiModelProperty("所属班级id")
+    private Long classId;
+    /**
+    * 所属部门id
+    */
+    @ApiModelProperty("所属部门id")
+    private Long deptId;
+    /**
+    * 用id
+    */
+    @ApiModelProperty("用id")
+    private Long userId;
+    /**
+    * 活动(activity)
+    */
+    @ApiModelProperty("活动(activity)")
+    private Long activityInfoId;
+
+}

+ 99 - 0
src/main/java/com/xjrsoft/module/activity/dto/AddActivityInfoDto.java

@@ -0,0 +1,99 @@
+package com.xjrsoft.module.activity.dto;
+
+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-19
+* @Version 1.0
+*/
+@Data
+public class AddActivityInfoDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 赛事名称
+    */
+    @ApiModelProperty("赛事名称")
+    private String name;
+    /**
+    * 活动地点
+    */
+    @ApiModelProperty("活动地点")
+    private String place;
+    /**
+    * 活动开始时间
+    */
+    @ApiModelProperty("活动开始时间")
+    private Date startDate;
+    /**
+    * 活动结束时间
+    */
+    @ApiModelProperty("活动结束时间")
+    private Date endDate;
+    /**
+    * 活动类型(xjr_dictionary_detail[match_activity_type])
+    */
+    @ApiModelProperty("活动类型(xjr_dictionary_detail[match_activity_type])")
+    private String type;
+    /**
+    * 组织部门(xjr_department)
+    */
+    @ApiModelProperty("组织部门(xjr_department)")
+    private Long orgId;
+    /**
+    * 报名结束时间
+    */
+    @ApiModelProperty("报名结束时间")
+    private Date enrollEndTime;
+    /**
+    * 活动负责人
+    */
+    @ApiModelProperty("活动负责人")
+    private String dutyPerson;
+    /**
+    * 活动负责人电话
+    */
+    @ApiModelProperty("活动负责人电话")
+    private String dutyPersonMobile;
+    /**
+    * 封面图片
+    */
+    @ApiModelProperty("封面图片")
+    private String coverFileId;
+    /**
+    * 状态(0:未发布 1:报名中 2:报名结束 3:活动结束)
+    */
+    @ApiModelProperty("状态(0:未发布 1:报名中 2:报名结束 3:活动结束)")
+    private Integer status;
+    /**
+    * 活动内容
+    */
+    @ApiModelProperty("活动内容")
+    private String content;
+    /**
+    * 合作企业
+    */
+    @ApiModelProperty("合作企业(校企活动时填写)")
+    private Long enterpriseId;
+    /**
+    * 1:校企合作活动 2:赛事活动
+    */
+    @ApiModelProperty("1:校企合作活动 2:赛事活动")
+    private Integer category;
+
+    /**
+    * activityEnrollRange
+    */
+    @ApiModelProperty("activityEnrollRange子表")
+    private List<AddActivityEnrollRangeDto> activityEnrollRangeList;
+}

+ 30 - 0
src/main/java/com/xjrsoft/module/activity/dto/ChangeStatusDto.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.activity.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 ChangeStatusDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 赛事名称
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 状态(0:未发布 1:报名中 2:报名结束 3:活动结束)
+    */
+    @ApiModelProperty("状态")
+    private Integer status;
+}

+ 24 - 0
src/main/java/com/xjrsoft/module/activity/dto/UpdateActivityInfoDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.activity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+
+/**
+* @title: 活动信息
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Data
+public class UpdateActivityInfoDto extends AddActivityInfoDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+}

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

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.activity.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 activityInfoId;
+    /**
+    */
+    @ApiModelProperty("手机号")
+    private String mobile;
+}

+ 89 - 0
src/main/java/com/xjrsoft/module/activity/entity/ActivityEnroll.java

@@ -0,0 +1,89 @@
+package com.xjrsoft.module.activity.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-19
+* @Version 1.0
+*/
+@Data
+@TableName("activity_enroll")
+@ApiModel(value = "activity_enroll", description = "活动登记表")
+public class ActivityEnroll 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;
+    /**
+    * 活动(activity_info)
+    */
+    @ApiModelProperty("活动(activity_info)")
+    private Long activityInfoId;
+    /**
+    * 参与人(xjr_user)
+    */
+    @ApiModelProperty("参与人(xjr_user)")
+    private Long userId;
+    /**
+    * 状态(0:待确认 1:未参与 2:已参与)
+    */
+    @ApiModelProperty("状态(0:待确认 1:未参与 2:已参与)")
+    private Integer status;
+
+
+}

+ 94 - 0
src/main/java/com/xjrsoft/module/activity/entity/ActivityEnrollRange.java

@@ -0,0 +1,94 @@
+package com.xjrsoft.module.activity.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-19
+* @Version 1.0
+*/
+@Data
+@TableName("activity_enroll_range")
+@ApiModel(value = "activity_enroll_range", description = "活动报名范围")
+public class ActivityEnrollRange 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 classId;
+    /**
+    * 所属部门id
+    */
+    @ApiModelProperty("所属部门id")
+    private Long deptId;
+    /**
+    * 用id
+    */
+    @ApiModelProperty("用id")
+    private Long userId;
+    /**
+    * 活动(activity)
+    */
+    @ApiModelProperty("活动(activity)")
+    private Long activityInfoId;
+
+
+}

+ 165 - 0
src/main/java/com/xjrsoft/module/activity/entity/ActivityInfo.java

@@ -0,0 +1,165 @@
+package com.xjrsoft.module.activity.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-19
+* @Version 1.0
+*/
+@Data
+@TableName("activity_info")
+@ApiModel(value = "activity_info", description = "活动信息")
+public class ActivityInfo 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 String name;
+    /**
+    * 活动地点
+    */
+    @ApiModelProperty("活动地点")
+    private String place;
+    /**
+    * 活动开始时间
+    */
+    @ApiModelProperty("活动开始时间")
+    private Date startDate;
+    /**
+    * 活动结束时间
+    */
+    @ApiModelProperty("活动结束时间")
+    private Date endDate;
+    /**
+    * 活动类型(xjr_dictionary_detail[match_activity_type])
+    */
+    @ApiModelProperty("活动类型(xjr_dictionary_detail[match_activity_type])")
+    private String type;
+    /**
+    * 组织部门(xjr_department)
+    */
+    @ApiModelProperty("组织部门(xjr_department)")
+    private Long orgId;
+    /**
+    * 报名结束时间
+    */
+    @ApiModelProperty("报名结束时间")
+    private Date enrollEndTime;
+    /**
+    * 活动负责人
+    */
+    @ApiModelProperty("活动负责人")
+    private String dutyPerson;
+    /**
+    * 活动负责人电话
+    */
+    @ApiModelProperty("活动负责人电话")
+    private String dutyPersonMobile;
+    /**
+    * 封面图片
+    */
+    @ApiModelProperty("封面图片")
+    private String coverFileId;
+    /**
+    * 报名范围
+    */
+    @ApiModelProperty("报名范围")
+    private String enrollRange;
+    /**
+    * 状态(0:未发布 1:报名中 2:报名结束 3:活动结束)
+    */
+    @ApiModelProperty("状态(0:未发布 1:报名中 2:报名结束 3:活动结束)")
+    private Integer status;
+    /**
+    * 活动内容
+    */
+    @ApiModelProperty("活动内容")
+    private String content;
+    /**
+    * 合作企业
+    */
+    @ApiModelProperty("合作企业")
+    private Long enterpriseId;
+    /**
+    * 1:校企合作活动 2:赛事活动
+    */
+    @ApiModelProperty("活动类别(1:校企合作活动 2:赛事活动)")
+    private Integer category;
+
+    /**
+    * activityEnrollRange
+    */
+    @ApiModelProperty("activityEnrollRange子表")
+    @TableField(exist = false)
+    @EntityMapping(thisField = "id", joinField = "activityInfoId")
+    private List<ActivityEnrollRange> activityEnrollRangeList;
+    /**
+    * activityEnroll
+    */
+    @ApiModelProperty("activityEnroll子表")
+    @TableField(exist = false)
+    @EntityMapping(thisField = "id", joinField = "activityInfoId")
+    private List<ActivityEnroll> activityEnrollList;
+
+}

+ 26 - 0
src/main/java/com/xjrsoft/module/activity/mapper/ActivityEnrollMapper.java

@@ -0,0 +1,26 @@
+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;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @title: 活动登记表
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Mapper
+public interface ActivityEnrollMapper extends MPJBaseMapper<ActivityEnroll> {
+
+    Page<ActivityEnrollPageVo> getPage(Page<ActivityEnrollPageVo> page, @Param("dto") ActivityEnrollPageDto dto);
+
+    List<ActivityEnrollPageVo> getList(@Param("dto") ActivityEnrollExportDto dto);
+}

+ 16 - 0
src/main/java/com/xjrsoft/module/activity/mapper/ActivityEnrollRangeMapper.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.activity.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.activity.entity.ActivityEnrollRange;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 活动报名范围
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Mapper
+public interface ActivityEnrollRangeMapper extends MPJBaseMapper<ActivityEnrollRange> {
+
+}

+ 23 - 0
src/main/java/com/xjrsoft/module/activity/mapper/ActivityInfoMapper.java

@@ -0,0 +1,23 @@
+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.ActivityInfoPageDto;
+import com.xjrsoft.module.activity.entity.ActivityInfo;
+import com.xjrsoft.module.activity.vo.ActivityInfoPageVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+* @title: 活动信息
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Mapper
+public interface ActivityInfoMapper extends MPJBaseMapper<ActivityInfo> {
+
+    Page<ActivityInfoPageVo> getPage(Page<ActivityInfoPageVo> page, @Param("dto") ActivityInfoPageDto dto);
+
+    Page<ActivityInfoPageVo> getMyPage(Page<ActivityInfoPageVo> page, @Param("dto") ActivityInfoPageDto dto);
+}

+ 48 - 0
src/main/java/com/xjrsoft/module/activity/service/IActivityEnrollService.java

@@ -0,0 +1,48 @@
+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;
+import com.xjrsoft.module.activity.vo.ActivityEnrollPageVo;
+
+import java.util.List;
+
+/**
+* @title: 活动信息
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+
+public interface IActivityEnrollService extends MPJBaseService<ActivityEnroll> {
+    /**
+    * 新增
+    *
+    * @return
+    */
+    Boolean save(AddActivityEnrollDto dto);
+
+    /**
+    * 更新
+    *
+    * @param activityInfo
+    * @return
+    */
+    Boolean update(ActivityEnroll activityInfo);
+
+    /**
+    * 删除
+    *
+    * @param ids
+    * @return
+    */
+    Boolean delete(List<Long> ids);
+
+
+    Page<ActivityEnrollPageVo> getPage(Page<ActivityEnrollPageVo> page, ActivityEnrollPageDto dto);
+
+    List<ActivityEnrollPageVo> getList(ActivityEnrollExportDto dto);
+}

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

@@ -0,0 +1,47 @@
+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.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;
+
+import java.util.List;
+
+/**
+* @title: 活动信息
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+
+public interface IActivityInfoService extends MPJBaseService<ActivityInfo> {
+    /**
+    * 新增
+    *
+    * @return
+    */
+    Boolean add(AddActivityInfoDto dto);
+
+    /**
+    * 更新
+    *
+    * @return
+    */
+    Boolean update(UpdateActivityInfoDto dto);
+
+    /**
+    * 删除
+    *
+    * @param ids
+    * @return
+    */
+    Boolean delete(List<Long> ids);
+
+
+    Page<ActivityInfoPageVo> getPage(Page<ActivityInfoPageVo> page, ActivityInfoPageDto dto);
+
+    Page<ActivityInfoPageVo> getMyPage(Page<ActivityInfoPageVo> page, ActivityInfoPageDto dto);
+}

+ 133 - 0
src/main/java/com/xjrsoft/module/activity/service/impl/ActivityEnrollServiceImpl.java

@@ -0,0 +1,133 @@
+package com.xjrsoft.module.activity.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+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;
+import com.xjrsoft.module.activity.entity.ActivityEnroll;
+import com.xjrsoft.module.activity.mapper.ActivityEnrollMapper;
+import com.xjrsoft.module.activity.service.IActivityEnrollService;
+import com.xjrsoft.module.activity.vo.ActivityEnrollPageVo;
+import com.xjrsoft.module.organization.entity.User;
+import com.xjrsoft.module.organization.entity.UserDeptRelation;
+import com.xjrsoft.module.organization.service.IUserService;
+import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
+import com.xjrsoft.module.student.service.IBaseStudentSchoolRollService;
+import com.xjrsoft.module.teacher.entity.XjrUser;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+* @title: 活动信息
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class ActivityEnrollServiceImpl extends MPJBaseServiceImpl<ActivityEnrollMapper, ActivityEnroll> implements IActivityEnrollService {
+    private final IUserService userService;
+    private final IBaseStudentSchoolRollService rollService;
+    @Override
+    public Boolean save(AddActivityEnrollDto dto) {
+        List<ActivityEnroll> insertList = new ArrayList<>();
+        if(dto.getEnrollRangeList() != null){
+            List<ActivityEnroll> existList = this.list(
+                    new QueryWrapper<ActivityEnroll>().lambda()
+                            .eq(ActivityEnroll::getActivityInfoId, dto.getActivityInfoId())
+                            .eq(ActivityEnroll::getDeleteMark, DeleteMark.NODELETE.getCode())
+            );
+            Date createDate = new Date();
+            Set<Long> existUserId = existList.stream().map(ActivityEnroll::getUserId).collect(Collectors.toSet());
+            for (AddActivityEnrollRangeDto enrollRange : dto.getEnrollRangeList()) {
+                if(enrollRange.getUserId() != null){
+                    if(!existUserId.contains(enrollRange.getUserId() )){
+                        insertList.add(
+                                new ActivityEnroll(){{
+                                    setUserId(enrollRange.getUserId());
+                                    setCreateDate(createDate);
+                                    setActivityInfoId(dto.getActivityInfoId());
+                                    setStatus(0);
+                                }}
+                        );
+                    }
+                }else if(enrollRange.getDeptId() != null){
+                    List<User> userList = userService.list(
+                            new MPJLambdaWrapper<User>()
+                                    .select(XjrUser::getId)
+                                    .select(XjrUser.class, x -> VoToColumnUtil.fieldsToColumns(XjrUser.class).contains(x.getProperty()))
+                                    .innerJoin(UserDeptRelation.class, UserDeptRelation::getUserId, User::getId)
+                                    .eq(UserDeptRelation::getDeptId, enrollRange.getDeptId())
+                    );
+                    for (User user : userList) {
+                        if(!existUserId.contains(user.getId() )) {
+                            insertList.add(
+                                    new ActivityEnroll() {{
+                                        setUserId(user.getId());
+                                        setCreateDate(createDate);
+                                        setActivityInfoId(dto.getActivityInfoId());
+                                        setStatus(0);
+                                    }}
+                            );
+                        }
+                    }
+                }else if(enrollRange.getClassId() != null){
+                    List<BaseStudentSchoolRoll> userList = rollService.list(
+                            new MPJLambdaWrapper<BaseStudentSchoolRoll>()
+                                    .select(BaseStudentSchoolRoll::getId)
+                                    .select(BaseStudentSchoolRoll.class, x -> VoToColumnUtil.fieldsToColumns(BaseStudentSchoolRoll.class).contains(x.getProperty()))
+                                    .innerJoin(XjrUser.class, XjrUser::getId, BaseStudentSchoolRoll::getUserId)
+                                    .eq(BaseStudentSchoolRoll::getClassId, enrollRange.getClassId())
+                    );
+                    for (BaseStudentSchoolRoll user : userList) {
+                        if(!existUserId.contains(user.getId() )) {
+                            insertList.add(
+                                    new ActivityEnroll() {{
+                                        setUserId(user.getUserId());
+                                        setCreateDate(createDate);
+                                        setActivityInfoId(dto.getActivityInfoId());
+                                        setStatus(0);
+                                    }}
+                            );
+                        }
+                    }
+                }
+            }
+        }
+        if(!insertList.isEmpty()){
+            this.saveBatch(insertList);
+        }
+        return true;
+    }
+
+    @Override
+    public Boolean update(ActivityEnroll activityInfo) {
+        return null;
+    }
+
+    @Override
+    public Boolean delete(List<Long> ids) {
+        return null;
+    }
+
+    public Page<ActivityEnrollPageVo> getPage(Page<ActivityEnrollPageVo> page, ActivityEnrollPageDto dto) {
+        return this.baseMapper.getPage(page, dto);
+    }
+
+    @Override
+    public List<ActivityEnrollPageVo> getList(ActivityEnrollExportDto dto) {
+        return this.baseMapper.getList(dto);
+    }
+}

+ 113 - 0
src/main/java/com/xjrsoft/module/activity/service/impl/ActivityInfoServiceImpl.java

@@ -0,0 +1,113 @@
+package com.xjrsoft.module.activity.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+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.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;
+import com.xjrsoft.module.activity.mapper.ActivityEnrollMapper;
+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;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+* @title: 活动信息
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class ActivityInfoServiceImpl extends MPJBaseServiceImpl<ActivityInfoMapper, ActivityInfo> implements IActivityInfoService {
+    private final ActivityInfoMapper activityInfoActivityInfoMapper;
+
+    private final ActivityEnrollRangeMapper activityInfoActivityEnrollRangeMapper;
+    private final ActivityEnrollMapper activityInfoActivityEnrollMapper;
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean add(AddActivityInfoDto dto) {
+        ActivityInfo activityInfo = BeanUtil.toBean(dto, ActivityInfo.class);
+        if(activityInfo.getActivityEnrollRangeList() != null){
+            for (ActivityEnrollRange activityEnrollRange : activityInfo.getActivityEnrollRangeList()) {
+                activityEnrollRange.setActivityInfoId(activityInfo.getId());
+                activityInfoActivityEnrollRangeMapper.insert(activityEnrollRange);
+            }
+            activityInfo.setEnrollRange(JsonUtil.toJsonString(dto.getActivityEnrollRangeList()));
+        }
+        activityInfoActivityInfoMapper.insert(activityInfo);
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean update(UpdateActivityInfoDto dto) {
+        ActivityInfo activityInfo = BeanUtil.toBean(dto, ActivityInfo.class);
+        activityInfo.setEnrollRange(JsonUtil.toJsonString(dto.getActivityEnrollRangeList()));
+        activityInfoActivityInfoMapper.updateById(activityInfo);
+        //********************************* ActivityEnrollRange  增删改  开始 *******************************************/
+        {
+            // 查出所有子级的id
+            List<ActivityEnrollRange> activityEnrollRangeList = activityInfoActivityEnrollRangeMapper.selectList(Wrappers.lambdaQuery(ActivityEnrollRange.class).eq(ActivityEnrollRange::getActivityInfoId, activityInfo.getId()).select(ActivityEnrollRange::getId));
+            List<Long> activityEnrollRangeIds = activityEnrollRangeList.stream().map(ActivityEnrollRange::getId).collect(Collectors.toList());
+            //原有子表单 没有被删除的主键
+            List<Long> activityEnrollRangeOldIds = activityInfo.getActivityEnrollRangeList().stream().map(ActivityEnrollRange::getId).filter(Objects::nonNull).collect(Collectors.toList());
+            //找到需要删除的id
+            List<Long> activityEnrollRangeRemoveIds = activityEnrollRangeIds.stream().filter(item -> !activityEnrollRangeOldIds.contains(item)).collect(Collectors.toList());
+
+            for (ActivityEnrollRange activityEnrollRange : activityInfo.getActivityEnrollRangeList()) {
+                //如果不等于空则修改
+                if (activityEnrollRange.getId() != null) {
+                    activityInfoActivityEnrollRangeMapper.updateById(activityEnrollRange);
+                }
+                //如果等于空 则新增
+                else {
+                    //已经不存在的id 删除
+                    activityEnrollRange.setActivityInfoId(activityInfo.getId());
+                    activityInfoActivityEnrollRangeMapper.insert(activityEnrollRange);
+                }
+            }
+            //已经不存在的id 删除
+            if(activityEnrollRangeRemoveIds.size() > 0){
+                activityInfoActivityEnrollRangeMapper.deleteBatchIds(activityEnrollRangeRemoveIds);
+            }
+        }
+        //********************************* ActivityEnrollRange  增删改  结束 *******************************************/
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean delete(List<Long> ids) {
+        activityInfoActivityInfoMapper.deleteBatchIds(ids);
+        activityInfoActivityEnrollRangeMapper.delete(Wrappers.lambdaQuery(ActivityEnrollRange.class).in(ActivityEnrollRange::getActivityInfoId, ids));
+        activityInfoActivityEnrollMapper.delete(Wrappers.lambdaQuery(ActivityEnroll.class).in(ActivityEnroll::getActivityInfoId, ids));
+
+        return true;
+    }
+
+    @Override
+    public Page<ActivityInfoPageVo> getPage(Page<ActivityInfoPageVo> page, ActivityInfoPageDto dto) {
+        return this.baseMapper.getPage(page, dto);
+    }
+
+    @Override
+    public Page<ActivityInfoPageVo> getMyPage(Page<ActivityInfoPageVo> page, ActivityInfoPageDto dto) {
+        return this.baseMapper.getMyPage(page, dto);
+    }
+}

+ 47 - 0
src/main/java/com/xjrsoft/module/activity/vo/ActivityEnrollExcelVo.java

@@ -0,0 +1,47 @@
+package com.xjrsoft.module.activity.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-19
+* @Version 1.0
+*/
+@Data
+public class ActivityEnrollExcelVo {
+
+    @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;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("参与状态")
+    @ApiModelProperty("参与状态")
+    private String status;
+
+}

+ 63 - 0
src/main/java/com/xjrsoft/module/activity/vo/ActivityEnrollPageVo.java

@@ -0,0 +1,63 @@
+package com.xjrsoft.module.activity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 活动信息分页列表出参
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Data
+public class ActivityEnrollPageVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String id;
+    /**
+    * 赛事名称
+    */
+    @ApiModelProperty("参与人员名称")
+    private String name;
+    /**
+    * 报名时间
+    */
+    @ApiModelProperty("报名时间")
+    private Date createDate;
+    /**
+    * 活动结束时间
+    */
+    @ApiModelProperty("活动结束时间")
+    private Date endDate;
+    /**
+    * 用户名
+    */
+    @ApiModelProperty("用户名")
+    private String userName;
+
+    @ApiModelProperty("手机号")
+    private String mobile;
+
+    @ApiModelProperty("角色id")
+    private Long roleId;
+    /**
+    * 状态(0:待确认 1:未参与 2:已参与)
+    */
+    @ApiModelProperty("状态(0:待确认 1:未参与 2:已参与)")
+    private Integer status;
+
+    @ApiModelProperty("活动id")
+    private String activityInfoId;
+
+    @ApiModelProperty("教师表id")
+    private Long teacherId;
+
+    @ApiModelProperty("学生表id")
+    private Long studentId;
+
+}

+ 47 - 0
src/main/java/com/xjrsoft/module/activity/vo/ActivityEnrollRangeVo.java

@@ -0,0 +1,47 @@
+package com.xjrsoft.module.activity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 活动报名范围表单出参
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Data
+public class ActivityEnrollRangeVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 所属班级id
+    */
+    @ApiModelProperty("所属班级id")
+    private Long classId;
+    /**
+    * 所属部门id
+    */
+    @ApiModelProperty("所属部门id")
+    private Long deptId;
+    /**
+    * 用id
+    */
+    @ApiModelProperty("用id")
+    private Long userId;
+    /**
+    * 活动(activity)
+    */
+    @ApiModelProperty("活动(activity)")
+    private Long activityInfoId;
+
+
+    @ApiModelProperty("名称")
+    private String name;
+
+
+
+}

+ 40 - 0
src/main/java/com/xjrsoft/module/activity/vo/ActivityEnrollVo.java

@@ -0,0 +1,40 @@
+package com.xjrsoft.module.activity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 活动登记表表单出参
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Data
+public class ActivityEnrollVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 活动(activity_info)
+    */
+    @ApiModelProperty("活动(activity_info)")
+    private Long activityInfoId;
+    /**
+    * 参与人(xjr_user)
+    */
+    @ApiModelProperty("参与人(xjr_user)")
+    private Date userId;
+    /**
+    * 状态(0:待确认 1:未参与 2:已参与)
+    */
+    @ApiModelProperty("状态(0:待确认 1:未参与 2:已参与)")
+    private Integer STATUS;
+
+
+
+}

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

@@ -0,0 +1,117 @@
+package com.xjrsoft.module.activity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 活动信息分页列表出参
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Data
+public class ActivityInfoPageVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String id;
+    /**
+    * 赛事名称
+    */
+    @ApiModelProperty("活动名称")
+    private String name;
+    /**
+    * 活动地点
+    */
+    @ApiModelProperty("活动地点")
+    private String place;
+    /**
+    * 活动开始时间
+    */
+    @ApiModelProperty("活动开始时间")
+    private Date startDate;
+    /**
+    * 活动结束时间
+    */
+    @ApiModelProperty("活动结束时间")
+    private Date endDate;
+    /**
+    * 活动类型(xjr_dictionary_detail[match_activity_type])
+    */
+    @ApiModelProperty("活动类型(xjr_dictionary_detail[match_activity_type])")
+    private String type;
+
+    @ApiModelProperty("活动类型-中文")
+    private String typeCn;
+    /**
+    * 组织部门(xjr_department)
+    */
+    @ApiModelProperty("组织部门(xjr_department)")
+    private Long orgId;
+    /**
+    * 报名结束时间
+    */
+    @ApiModelProperty("报名结束时间")
+    private Date enrollEndTime;
+    /**
+    * 活动负责人
+    */
+    @ApiModelProperty("活动负责人")
+    private String dutyPerson;
+    /**
+    * 活动负责人电话
+    */
+    @ApiModelProperty("活动负责人电话")
+    private String dutyPersonMobile;
+    /**
+    * 封面图片
+    */
+    @ApiModelProperty("封面图片")
+    private String coverFileId;
+
+    @ApiModelProperty("封面图片地址")
+    private String coverFileUrl;
+    /**
+    * 报名范围
+    */
+    @ApiModelProperty("报名范围")
+    private String enrollRange;
+    /**
+    * 状态(0:未发布 1:报名中 2:报名结束 3:活动结束)
+    */
+    @ApiModelProperty("状态(0:未发布 1:报名中 2:报名结束 3:活动结束)")
+    private Integer status;
+    /**
+    * 活动内容
+    */
+    @ApiModelProperty("活动内容")
+    private String content;
+    /**
+    * 合作企业
+    */
+    @ApiModelProperty("合作企业")
+    private Long enterpriseId;
+    /**
+    * 1:校企合作活动 2:赛事活动
+    */
+    @ApiModelProperty("1:校企合作活动 2:赛事活动")
+    private Integer category;
+
+    @ApiModelProperty("合作企业名称")
+    private String enterpriseName;
+
+    @ApiModelProperty("报名人数")
+    private Integer enrollCount;
+
+
+    @ApiModelProperty("是否已报名(1:是 0:否)")
+    private Integer isEnroll;
+
+    @ApiModelProperty("参与状态(0:待确认 1:未参与 2:已参与)")
+    private Integer enrollStatus;
+
+}

+ 127 - 0
src/main/java/com/xjrsoft/module/activity/vo/ActivityInfoVo.java

@@ -0,0 +1,127 @@
+package com.xjrsoft.module.activity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+* @title: 活动信息表单出参
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Data
+public class ActivityInfoVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 赛事名称
+    */
+    @ApiModelProperty("赛事名称")
+    private String name;
+    /**
+    * 活动地点
+    */
+    @ApiModelProperty("活动地点")
+    private String place;
+    /**
+    * 活动开始时间
+    */
+    @ApiModelProperty("活动开始时间")
+    private Date startDate;
+    /**
+    * 活动结束时间
+    */
+    @ApiModelProperty("活动结束时间")
+    private Date endDate;
+    /**
+    * 活动类型(xjr_dictionary_detail[match_activity_type])
+    */
+    @ApiModelProperty("活动类型(xjr_dictionary_detail[match_activity_type])")
+    private String type;
+    /**
+    * 组织部门(xjr_department)
+    */
+    @ApiModelProperty("组织部门(xjr_department)")
+    private Long orgId;
+
+    @ApiModelProperty("组织部门名称")
+    private String orgName;
+    /**
+    * 报名结束时间
+    */
+    @ApiModelProperty("报名结束时间")
+    private Date enrollEndTime;
+    /**
+    * 活动负责人
+    */
+    @ApiModelProperty("活动负责人")
+    private String dutyPerson;
+    /**
+    * 活动负责人电话
+    */
+    @ApiModelProperty("活动负责人电话")
+    private String dutyPersonMobile;
+    /**
+    * 封面图片
+    */
+    @ApiModelProperty("封面图片")
+    private String coverFileId;
+    /**
+    * 报名范围
+    */
+    @ApiModelProperty("报名范围")
+    private String enrollRange;
+    /**
+    * 状态(0:未发布 1:报名中 2:报名结束 3:活动结束)
+    */
+    @ApiModelProperty("状态(0:未发布 1:报名中 2:报名结束 3:活动结束)")
+    private Integer status;
+    /**
+    * 活动内容
+    */
+    @ApiModelProperty("活动内容")
+    private String content;
+    /**
+    * 合作企业
+    */
+    @ApiModelProperty("合作企业")
+    private Long enterpriseId;
+
+    @ApiModelProperty("合作企业名称")
+    private String enterpriseName;
+    /**
+    * 1:校企合作活动 2:赛事活动
+    */
+    @ApiModelProperty("1:校企合作活动 2:赛事活动")
+    private Integer category;
+
+
+    /**
+    * activityEnrollRange
+    */
+    @ApiModelProperty("activityEnrollRange子表")
+    private List<ActivityEnrollRangeVo> activityEnrollRangeList;
+
+
+    @ApiModelProperty("报名人数")
+    private Integer enrollCount;
+
+    @ApiModelProperty("学生人数")
+    private Integer studentCount;
+
+    @ApiModelProperty("教师人数")
+    private Integer teacherCount;
+
+    @ApiModelProperty("确认参与人数")
+    private Integer sureCount;
+
+    @ApiModelProperty("未确认参与人数")
+    private Integer notSureCount;
+}

+ 1 - 1
src/main/java/com/xjrsoft/module/attendance/controller/AttendanceMessageSetController.java

@@ -128,7 +128,7 @@ public class AttendanceMessageSetController {
     public RT<Boolean> add(@Valid @RequestBody AddAttendanceMessageSetDto dto){
         AttendanceMessageSet attendanceMessageSet = BeanUtil.toBean(dto, AttendanceMessageSet.class);
         boolean isSuccess = attendanceMessageSetService.add(attendanceMessageSet);
-    return RT.ok(isSuccess);
+        return RT.ok(isSuccess);
     }
 
     @PutMapping

+ 25 - 2
src/main/java/com/xjrsoft/module/banding/controller/BandingTaskClassController.java

@@ -5,6 +5,7 @@ import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.support.ExcelTypeEnum;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.VoToColumnUtil;
@@ -13,6 +14,7 @@ import com.xjrsoft.module.banding.dto.BandingTaskClassListDto;
 import com.xjrsoft.module.banding.dto.BandingTaskClassPageDto;
 import com.xjrsoft.module.banding.dto.BandingTaskClassStudentPageDto;
 import com.xjrsoft.module.banding.dto.ChangeClassDto;
+import com.xjrsoft.module.banding.dto.ChangeClassStatusDto;
 import com.xjrsoft.module.banding.dto.StudentDto;
 import com.xjrsoft.module.banding.dto.SureBandingTaskDto;
 import com.xjrsoft.module.banding.dto.UpdateBandingClassDto;
@@ -26,6 +28,7 @@ import com.xjrsoft.module.banding.vo.BandingTaskClassPageVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassStudentListVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassSureListVo;
 import com.xjrsoft.module.banding.vo.BandingTaskClassVo;
+import com.xjrsoft.module.room.entity.RoomBed;
 import com.xjrsoft.module.student.dto.BaseNewStudentPageDto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -137,6 +140,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){
@@ -154,16 +159,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);
@@ -266,4 +279,14 @@ public class BandingTaskClassController {
         );
         return RT.ok(list);
     }
+
+    @PostMapping(value = "/change-status")
+    @ApiOperation(value="修改状态")
+    @SaCheckPermission("officebuild:detail")
+    public RT<Boolean> changeStatus(@Valid @RequestBody ChangeClassStatusDto dto) throws Exception {
+        BandingTaskClass taskClass = bandingTaskClassService.getById(dto.getId());
+        taskClass.setStatus(dto.getStatus());
+        bandingTaskClassService.updateById(taskClass);
+        return RT.ok(true);
+    }
 }

+ 30 - 0
src/main/java/com/xjrsoft/module/banding/dto/ChangeClassStatusDto.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.banding.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 ChangeClassStatusDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 赛事名称
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 状态(0:未发布 1:报名中 2:报名结束 3:活动结束)
+    */
+    @ApiModelProperty("是否锁定(0:否 1:是)")
+    private Integer status;
+}

+ 2 - 0
src/main/java/com/xjrsoft/module/banding/entity/BandingTaskClass.java

@@ -122,4 +122,6 @@ public class BandingTaskClass implements Serializable {
     @ApiModelProperty("班级类型")
     private String classType;
 
+    @ApiModelProperty("是否锁定(0:否 1:是)")
+    private Integer status;
 }

+ 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);
 }

+ 15 - 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;
@@ -24,6 +25,7 @@ import com.xjrsoft.module.base.service.IBaseClassroomService;
 import com.xjrsoft.module.base.service.IBaseMajorSetService;
 import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.service.IUserService;
+import com.xjrsoft.module.room.entity.RoomBed;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
 import com.xjrsoft.module.system.entity.DictionaryItem;
 import com.xjrsoft.module.system.mapper.DictionarydetailMapper;
@@ -89,6 +91,7 @@ public class BandingTaskClassServiceImpl extends MPJBaseServiceImpl<BandingTaskC
         List<BandingTaskClass> classList = this.baseMapper.selectList(
                 new QueryWrapper<BandingTaskClass>().lambda()
                         .eq(BandingTaskClass::getBandingTaskId, bandingTaskId)
+                        .eq(BandingTaskClass::getStatus, 0)
         );
 
         for (BandingTaskClass bandingTaskClass : classList) {
@@ -183,4 +186,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;
+    }
 }

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

@@ -142,6 +142,15 @@ public class BandingTaskServiceImpl extends MPJBaseServiceImpl<BandingTaskMapper
             throw new MyException("未能查询到该任务,无法自动分班");
         }
         //1、查询需要分班的学生信息
+        List<BandingTaskClassStudent> classStudents = classStudentService.selectJoinList(BandingTaskClassStudent.class,
+                new MPJLambdaWrapper<BandingTaskClassStudent>()
+                        .select(BandingTaskClassStudent::getId)
+                        .select(BandingTaskClassStudent.class, x -> VoToColumnUtil.fieldsToColumns(BandingTaskClassStudent.class).contains(x.getProperty()))
+                        .leftJoin(BandingTaskClass.class, BandingTaskClass::getId, BandingTaskClassStudent::getBandingTaskClassId)
+                        .eq(BandingTaskClass::getStatus, 1)
+        );
+        List<Long> studentIds = classStudents.stream().map(BandingTaskClassStudent::getNewStudentId).collect(Collectors.toList());
+
         List<String> orderColumn = new ArrayList();
         orderColumn.add("score");
         List<BaseNewStudent> baseNewStudents = newStudentService.selectJoinList(BaseNewStudent.class,
@@ -152,6 +161,7 @@ public class BandingTaskServiceImpl extends MPJBaseServiceImpl<BandingTaskMapper
                         .eq(EnrollmentPlan::getGradeId, bandingTask.getGradeId())
                         .eq(EnrollmentPlan::getEnrollType, bandingTask.getEnrollType())
                         .eq(BaseNewStudent::getStatus, 0)
+                        .notIn(!studentIds.isEmpty(), BaseNewStudent::getId, studentIds)
                         .orderByDescStr(orderColumn)
         );
         //2、查询所有班级信息

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

@@ -68,4 +68,7 @@ public class BandingTaskClassPageVo {
     @ApiModelProperty("班级类型")
     private String classType;
 
+    @ApiModelProperty("是否锁定(0:否 1:是)")
+    private Integer status;
+
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/base/entity/BaseClassroom.java

@@ -70,4 +70,10 @@ public class BaseClassroom implements Serializable {
 
     @ApiModelProperty("状态(1:可用 0:停用)")
     private Integer status;
+
+    @ApiModelProperty("描述")
+    private String explains;
+
+    @ApiModelProperty("座位数")
+    private Integer seatNumber;
 }

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

@@ -209,10 +209,12 @@ public class UserController {
                     .eq(ObjectUtil.isNotNull(dto.getUserType()), Role::getId, dto.getUserType())
                     .eq(ObjectUtil.isNotNull(dto.getEmployType()), BaseTeacher::getEmployType, dto.getEmployType())
                     .eq(ObjectUtil.isNotNull(dto.getEmployWay()), BaseTeacher::getEmployWay, dto.getEmployWay())
+                    .eq(ObjectUtil.isNotNull(dto.getClassId()), BaseStudentSchoolRoll::getClassId, dto.getClassId())
                     .orderByDesc(User::getId)
                     .select(User::getId)
                     .select("d1.name", UserPageVo::getEmployWay)
                     .select("d2.name", UserPageVo::getEmployType)
+                    .selectAs(BaseStudentSchoolRoll::getClassId, UserPageVo::getClassId)
                     .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
                     .leftJoin(UserDeptRelation.class, UserDeptRelation::getUserId, User::getId)
                     .leftJoin(UserRoleRelation.class, UserRoleRelation::getUserId, User::getId)
@@ -259,10 +261,12 @@ public class UserController {
                             .eq((ObjectUtil.isNotNull(dto.getTreeType()) && dto.getTreeType() == 4), BaseStudentSchoolRoll::getClassId, dto.getTreeId())
                             .eq(ObjectUtil.isNotNull(dto.getEmployType()), BaseTeacher::getEmployType, dto.getEmployType())
                             .eq(ObjectUtil.isNotNull(dto.getEmployWay()), BaseTeacher::getEmployWay, dto.getEmployWay())
+                            .eq(ObjectUtil.isNotNull(dto.getClassId()), BaseStudentSchoolRoll::getClassId, dto.getClassId())
                             .orderByDesc(User::getId)
                             .select(User::getId)
                             .select("d1.name", UserPageVo::getEmployWay)
                             .select("d2.name", UserPageVo::getEmployType)
+                            .selectAs(BaseStudentSchoolRoll::getClassId, UserPageVo::getClassId)
                             .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
                             .leftJoin(UserRoleRelation.class, UserRoleRelation::getUserId, User::getId)
                             .leftJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, User::getId)
@@ -748,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()){

+ 3 - 0
src/main/java/com/xjrsoft/module/organization/dto/UserPageDto.java

@@ -43,4 +43,7 @@ public class UserPageDto extends PageInput {
     private String employType;
 
     private String employWay;
+
+    @ApiModelProperty("班级id")
+    private Long classId;
 }

+ 2 - 0
src/main/java/com/xjrsoft/module/organization/vo/UserPageVo.java

@@ -102,4 +102,6 @@ public class UserPageVo implements Serializable {
     private String employType;
 
     private String employWay;
+
+    private Long classId;
 }

+ 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;

+ 29 - 12
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;
@@ -19,10 +20,10 @@ import com.xjrsoft.module.student.dto.UpdateBaseStudentScholarshipApplicantDto;
 import com.xjrsoft.module.student.entity.BaseStudentScholarshipApplicant;
 import com.xjrsoft.module.student.entity.BaseStudentScholarshipCategory;
 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.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;
@@ -52,14 +53,13 @@ import java.util.List;
 public class BaseStudentScholarshipApplicantController {
 
 
-    private final IBaseStudentScholarshipApplicantService baseStudentScholarshipApplicantService;
-    private final IBaseStudentScholarshipCategoryService baseStudentScholarshipCategoryService;
+    private final IBaseStudentScholarshipApplicantService applicantService;
 
     @GetMapping(value = "/page")
     @ApiOperation(value="奖学金申请列表(分页)")
     @SaCheckPermission("basestudentscholarshipapplicant:detail")
     public RT<PageOutput<BaseStudentScholarshipApplicantPageVo>> page(@Valid BaseStudentScholarshipApplicantPageDto dto){
-        IPage<BaseStudentScholarshipApplicantPageVo> page = baseStudentScholarshipApplicantService.selectJoinListPage(ConventPage.getPage(dto), BaseStudentScholarshipApplicantPageVo.class,
+        IPage<BaseStudentScholarshipApplicantPageVo> page = applicantService.selectJoinListPage(ConventPage.getPage(dto), BaseStudentScholarshipApplicantPageVo.class,
         MPJWrappers.<BaseStudentScholarshipApplicant>lambdaJoin()
                 .like(StrUtil.isNotEmpty(dto.getName()), BaseStudentScholarshipApplicant::getName, dto.getName())
                 .eq(ObjectUtil.isNotNull(dto.getSemesterId()), BaseStudentScholarshipCategory::getBaseSemesterId, dto.getSemesterId())
@@ -69,12 +69,14 @@ public class BaseStudentScholarshipApplicantController {
                 .eq(BaseStudentScholarshipApplicant::getBaseStudentScholarshipCategoryId,dto.getBaseStudentScholarshipCategoryId())
                 .orderByAsc(BaseStudentScholarshipApplicant::getSortCode)
                 .selectAs(BaseStudentScholarshipApplicant::getId, BaseStudentScholarshipApplicantPageVo::getId)
-                .selectAs(DictionaryDetail::getName, BaseStudentScholarshipApplicantPageVo::getBankTypeCn)
+                .select(" t4.name as bank_type_cn")
                 .selectAs(BaseSemester::getName, BaseStudentScholarshipApplicantPageVo::getSemesterName)
+                .select(" t5.name as category_cn")
                 .select(BaseStudentScholarshipApplicant.class,x -> VoToColumnUtil.fieldsToColumns(BaseStudentScholarshipApplicantPageVo.class).contains(x.getProperty()))
                 .innerJoin(BaseStudentScholarshipCategory.class, BaseStudentScholarshipCategory::getId, BaseStudentScholarshipApplicant::getBaseStudentScholarshipCategoryId)
                 .leftJoin(BaseSemester.class, BaseSemester::getId, BaseStudentScholarshipApplicant::getBaseSemesterId)
                 .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, BaseStudentScholarshipApplicant::getBankType)
+                .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, BaseStudentScholarshipCategory::getCategory)
         );
         PageOutput<BaseStudentScholarshipApplicantPageVo> pageOutput = ConventPage.getPageOutput(page, BaseStudentScholarshipApplicantPageVo.class);
         return RT.ok(pageOutput);
@@ -84,7 +86,7 @@ public class BaseStudentScholarshipApplicantController {
     @ApiOperation(value="奖学金名称表(分页)")
     @SaCheckPermission("basestudentscholarshipapplicant:detail")
     public RT<PageOutput<BaseStudentScholarshipApplicantCategoryPageVo>> scholarshiPage(@Valid BaseStudentScholarshipApplicantCategoryPageDto dto){
-        IPage<BaseStudentScholarshipApplicantCategoryPageVo> page = baseStudentScholarshipApplicantService.getScholarshiPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        IPage<BaseStudentScholarshipApplicantCategoryPageVo> page = applicantService.getScholarshiPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
         PageOutput<BaseStudentScholarshipApplicantCategoryPageVo> pageOutput = ConventPage.getPageOutput(page, BaseStudentScholarshipApplicantCategoryPageVo.class);
         return RT.ok(pageOutput);
     }
@@ -93,7 +95,7 @@ public class BaseStudentScholarshipApplicantController {
     @ApiOperation(value="根据id查询奖学金申请信息")
     @SaCheckPermission("basestudentscholarshipapplicant:detail")
     public RT<BaseStudentScholarshipApplicantVo> info(@RequestParam Long id){
-        BaseStudentScholarshipApplicant baseStudentScholarshipApplicant = baseStudentScholarshipApplicantService.getById(id);
+        BaseStudentScholarshipApplicant baseStudentScholarshipApplicant = applicantService.getById(id);
         if (baseStudentScholarshipApplicant == null) {
            return RT.error("找不到此数据!");
         }
@@ -106,8 +108,8 @@ public class BaseStudentScholarshipApplicantController {
     @SaCheckPermission("basestudentscholarshipapplicant:add")
     public RT<Boolean> add(@Valid @RequestBody AddBaseStudentScholarshipApplicantDto dto){
         BaseStudentScholarshipApplicant baseStudentScholarshipApplicant = BeanUtil.toBean(dto, BaseStudentScholarshipApplicant.class);
-        boolean isSuccess = baseStudentScholarshipApplicantService.save(baseStudentScholarshipApplicant);
-    return RT.ok(isSuccess);
+        boolean isSuccess = applicantService.save(baseStudentScholarshipApplicant);
+        return RT.ok(isSuccess);
     }
 
     @PutMapping
@@ -116,16 +118,31 @@ public class BaseStudentScholarshipApplicantController {
     public RT<Boolean> update(@Valid @RequestBody UpdateBaseStudentScholarshipApplicantDto dto){
 
         BaseStudentScholarshipApplicant baseStudentScholarshipApplicant = BeanUtil.toBean(dto, BaseStudentScholarshipApplicant.class);
-        return RT.ok(baseStudentScholarshipApplicantService.updateById(baseStudentScholarshipApplicant));
-
+        return RT.ok(applicantService.updateById(baseStudentScholarshipApplicant));
     }
 
     @DeleteMapping
     @ApiOperation(value = "删除奖学金申请")
     @SaCheckPermission("basestudentscholarshipapplicant:delete")
     public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
-        return RT.ok(baseStudentScholarshipApplicantService.removeBatchByIds(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)
+            .eq(BaseStudentScholarshipApplicant::getReviewStatus, 0)
+        );
+        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;
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/student/entity/BaseStudentScholarshipCategory.java

@@ -115,4 +115,10 @@ public class BaseStudentScholarshipCategory implements Serializable {
     @EntityMapping(thisField = "id", joinField = "baseStudentScholarshipCategoryId")
     private List<BaseStudentScholarshipLevel> baseStudentScholarshipLevelList;
 
+    @ApiModelProperty("奖助学金类型(xjr_dictionary_item[scholarship_category])")
+    private String category;
+
+    @ApiModelProperty("资助单位/个人")
+    private String supportSource;
+
 }

+ 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;

+ 6 - 0
src/main/java/com/xjrsoft/module/student/service/impl/BaseNewStudentServiceImpl.java

@@ -153,6 +153,9 @@ public class BaseNewStudentServiceImpl extends MPJBaseServiceImpl<BaseNewStudent
                 if(objectMap.get(14) != null){
                     student.setFamilyAddress(objectMap.get(14).toString());
                 }
+                if(objectMap.get(15) != null){
+                    student.setScore(BigDecimal.valueOf(Double.parseDouble(objectMap.get(15).toString())));
+                }
                 updateList.add(student);
                 continue;
             }
@@ -185,6 +188,9 @@ public class BaseNewStudentServiceImpl extends MPJBaseServiceImpl<BaseNewStudent
                     if(objectMap.get(14) != null){
                         setFamilyAddress(objectMap.get(14).toString());
                     }
+                    if(objectMap.get(15) != null){
+                        setScore(BigDecimal.valueOf(Double.parseDouble(objectMap.get(15).toString())));
+                    }
                     setEnrollmentPlanId(treeId);
                     setStatus(0);
                 }}

+ 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;

+ 3 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseStudentScholarshipApplicantPageVo.java

@@ -139,4 +139,7 @@ public class BaseStudentScholarshipApplicantPageVo {
     @ApiModelProperty("发放状态(1:已发放 0:未发放)")
     private Integer releaseStatus;
 
+    @ApiModelProperty("奖助学金类型-中文")
+    private String categoryCn;
+
 }

+ 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;
 }

+ 0 - 5
src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanTreeVo.java

@@ -1,12 +1,7 @@
 package com.xjrsoft.module.student.vo;
 
-import com.xjrsoft.common.model.tree.ITreeNode;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.io.Serializable;
-import java.util.List;
-
 /**
  * @author dzx
  * @date 2024年6月27日

+ 38 - 0
src/main/java/com/xjrsoft/module/student/vo/ScholarshipApplicantImportVo.java

@@ -0,0 +1,38 @@
+package com.xjrsoft.module.student.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 奖学金申请表单出参
+* @Author dzx
+* @Date: 2023-11-23
+* @Version 1.0
+*/
+@Data
+public class ScholarshipApplicantImportVo {
+
+    @ExcelProperty("学期名称")
+    @ApiModelProperty("学期名称")
+    private String semesterName;
+
+    @ExcelProperty("姓名")
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ExcelProperty("身份证号")
+    @ApiModelProperty("身份证号")
+    private String credentialNumber;
+
+    @ExcelProperty("奖学金名称")
+    @ApiModelProperty("奖学金名称")
+    private String scholarshipCategoryName;
+
+    @ExcelProperty("获奖等级")
+    @ApiModelProperty("获奖等级")
+    private Integer scholarshipLevel;
+
+}

+ 110 - 0
src/main/java/com/xjrsoft/module/student/vo/ScholarshipApplicantOptionVo.java

@@ -0,0 +1,110 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 奖学金申请表单出参
+* @Author dzx
+* @Date: 2023-11-23
+* @Version 1.0
+*/
+@Data
+public class ScholarshipApplicantOptionVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 奖学金类别ID(base_student_scholarship_category)
+    */
+    @ApiModelProperty("奖学金类别ID(base_student_scholarship_category)")
+    private Long baseStudentScholarshipCategoryId;
+    /**
+    * 申请人
+    */
+    @ApiModelProperty("申请人")
+    private Long applicantUserId;
+    /**
+    * 学期名称
+    */
+    @ApiModelProperty("学期名称")
+    private String semesterName;
+    /**
+    * 入学名称
+    */
+    @ApiModelProperty("入学名称")
+    private String gradeName;
+    /**
+    * 班级名称
+    */
+    @ApiModelProperty("班级名称")
+    private String className;
+    /**
+    * 姓名
+    */
+    @ApiModelProperty("姓名")
+    private String name;
+    /**
+    * 学号
+    */
+    @ApiModelProperty("学号")
+    private String studentId;
+    /**
+    * 性别
+    */
+    @ApiModelProperty("性别")
+    private String genderName;
+    /**
+    * 招生类型名称
+    */
+    @ApiModelProperty("招生类型名称")
+    private String enrollTypeCn;
+    /**
+    * 在读专业
+    */
+    @ApiModelProperty("在读专业")
+    private String majorName;
+    /**
+    * 获奖日期
+    */
+    @ApiModelProperty("获奖日期")
+    private Date awardDate;
+    /**
+    * 收款银行(xjr_dictionary_item[bank_type])
+    */
+    @ApiModelProperty("收款银行(xjr_dictionary_item[bank_type])")
+    private String bankType;
+    /**
+    * 银行卡号
+    */
+    @ApiModelProperty("银行卡号")
+    private String bankNo;
+    /**
+    * 文件ID(xjr_file)
+    */
+    @ApiModelProperty("文件ID(xjr_file)")
+    private Long fileId;
+    /**
+    * 状态(1:结束 0:未结束)
+    */
+    @ApiModelProperty("状态(1:结束 0:未结束)")
+    private Integer status;
+    /**
+    * 发放状态(1:已发放 0:未发放)
+    */
+    @ApiModelProperty("发放状态(1:已发放 0:未发放)")
+    private Integer releaseStatus;
+
+
+
+}

+ 22 - 0
src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookDto.java

@@ -2,9 +2,12 @@ package com.xjrsoft.module.textbook.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Date;
 import java.util.List;
 
 
@@ -132,4 +135,23 @@ public class AddTextbookDto implements Serializable {
      */
     @ApiModelProperty("使用类型(单位:学期)")
     private Integer useType;
+
+    @ApiModelProperty("是否校企合作开发教材")
+    private Integer isSecd;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("出版日期")
+    private LocalDate publishingDate;
+
+    @ApiModelProperty("分类号")
+    private String category;
+
+    @ApiModelProperty("规划批次")
+    private String planBatch;
+
+    @ApiModelProperty("编著作总数")
+    private Integer workTotalCount;
+
+    @ApiModelProperty("教材类型")
+    private String textbookCategory;
 }

+ 19 - 0
src/main/java/com/xjrsoft/module/textbook/entity/Textbook.java

@@ -193,4 +193,23 @@ public class Textbook implements Serializable {
      */
     @ApiModelProperty("使用类型(单位:学期)")
     private Integer useType;
+
+
+    @ApiModelProperty("是否校企合作开发教材")
+    private Integer isSecd;
+
+    @ApiModelProperty("出版日期")
+    private Date publishingDate;
+
+    @ApiModelProperty("分类号")
+    private String category;
+
+    @ApiModelProperty("规划批次")
+    private String planBatch;
+
+    @ApiModelProperty("编著作总数")
+    private Integer workTotalCount;
+
+    @ApiModelProperty("教材类型")
+    private String textbookCategory;
 }

+ 19 - 0
src/main/java/com/xjrsoft/module/textbook/vo/TextbookPageVo.java

@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
 * @title: 教材管理分页列表出参
@@ -170,4 +171,22 @@ public class TextbookPageVo {
      */
     @ApiModelProperty("使用类型(单位:学期)")
     private Integer useType;
+
+    @ApiModelProperty("是否校企合作开发教材")
+    private Integer isSecd;
+
+    @ApiModelProperty("出版日期")
+    private Date publishingDate;
+
+    @ApiModelProperty("分类号")
+    private String category;
+
+    @ApiModelProperty("规划批次")
+    private String planBatch;
+
+    @ApiModelProperty("编著作总数")
+    private Integer workTotalCount;
+
+    @ApiModelProperty("教材类型")
+    private String textbookCategory;
 }

+ 19 - 0
src/main/java/com/xjrsoft/module/textbook/vo/TextbookVo.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -118,4 +119,22 @@ public class TextbookVo {
      */
     @ApiModelProperty("使用类型(单位:学期)")
     private Integer useType;
+
+    @ApiModelProperty("是否校企合作开发教材")
+    private Integer isSecd;
+
+    @ApiModelProperty("出版日期")
+    private Date publishingDate;
+
+    @ApiModelProperty("分类号")
+    private String category;
+
+    @ApiModelProperty("规划批次")
+    private String planBatch;
+
+    @ApiModelProperty("编著作总数")
+    private Integer workTotalCount;
+
+    @ApiModelProperty("教材类型")
+    private String textbookCategory;
 }

+ 1 - 0
src/main/resources/application-dev.yml

@@ -116,6 +116,7 @@ xjrsoft:
       - /event/visit
       - /system/findUserByCode
       - /system/imgcaptcha-answer
+      - /student/basestudentinfo/studentinfoByKeyWord
     approval-time: 300 # 审核超时时间 目前设为5分钟
   email:
     host:  #邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>

+ 1 - 0
src/main/resources/application-pre.yml

@@ -99,6 +99,7 @@ xjrsoft:
       - /event/receiveCar
       - /event/visit
       - /system/findUserByCode
+      - /student/basestudentinfo/studentinfoByKeyWord
     approval-time: 300 # 审核超时时间 目前设为5分钟
   email:
     host:  #邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>

+ 1 - 0
src/main/resources/application-prod.yml

@@ -95,6 +95,7 @@ xjrsoft:
       - /event/receiveCar
       - /event/visit
       - /system/findUserByCode
+      - /student/basestudentinfo/studentinfoByKeyWord
     approval-time: 300 # 审核超时时间 目前设为5分钟
   email:
     host:  #邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>

+ 27 - 0
src/main/resources/mapper/activity/ActivityEnrollMapper.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.activity.mapper.ActivityEnrollMapper">
+    <select id="getPage" parameterType="com.xjrsoft.module.activity.dto.ActivityEnrollPageDto" resultType="com.xjrsoft.module.activity.vo.ActivityEnrollPageVo">
+        SELECT t1.id,t1.status,t2.name,t1.create_date,t2.user_name,t2.mobile,
+        (select id from base_teacher where user_id = t1.user_id) as teacher_id,
+        (select id from base_student where user_id = t1.user_id) as student_id FROM activity_enroll t1
+        INNER JOIN xjr_user t2 ON t1.user_id = t2.id
+        WHERE t1.delete_mark = 0 AND t1.activity_info_id = #{dto.activityInfoId}
+        <if test="dto.status != null">
+            and t1.status = #{dto.status}
+        </if>
+    </select>
+
+    <select id="getList" parameterType="com.xjrsoft.module.activity.dto.ActivityEnrollExportDto" resultType="com.xjrsoft.module.activity.vo.ActivityEnrollPageVo">
+        SELECT t1.id,t1.status,t2.name,t1.create_date,t2.user_name,t2.mobile,
+        (select id from base_teacher where user_id = t1.user_id) as teacher_id,
+        (select id from base_student where user_id = t1.user_id) as student_id FROM activity_enroll t1
+        INNER JOIN xjr_user t2 ON t1.user_id = t2.id
+        WHERE t1.delete_mark = 0 AND t1.activity_info_id = #{dto.activityInfoId}
+        <if test="dto.status != null">
+            and t1.status = #{dto.status}
+        </if>
+    </select>
+</mapper>

+ 51 - 0
src/main/resources/mapper/activity/ActivityInfoMapper.xml

@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.activity.mapper.ActivityInfoMapper">
+    <select id="getPage" parameterType="com.xjrsoft.module.activity.dto.ActivityInfoPageDto" resultType="com.xjrsoft.module.activity.vo.ActivityInfoPageVo">
+        SELECT t1.id,t2.name AS type_cn,t3.company_name AS enterprise_name,t1.name,t1.place,t1.start_date,t1.end_date,
+        t1.type, t4.name AS org_name, t1.enroll_end_time, t1.duty_person,t1.duty_person_mobile, t1.cover_file_id,
+        t1.enroll_range, t1.status,t1.content,t1.category,t4.name as org_name,t1.org_id,
+        (SELECT COUNT(*) FROM activity_enroll WHERE delete_mark = 0 AND activity_info_id = t1.id) as enroll_count FROM activity_info t1
+        LEFT JOIN xjr_dictionary_detail t2 ON t1.type = t2.code
+        LEFT JOIN company_coop t3 ON t1.enterprise_id = t3.id
+        LEFT JOIN xjr_department t4 ON t1.org_id = t4.id
+        WHERE t1.delete_mark = 0
+        <if test="dto.category != null">
+            and t1.category = #{dto.category}
+        </if>
+        <if test="dto.isEffective != null and dto.isEffective == 1">
+            and (t1.status = 1 or t1.status = 2) and NOW() between t1.start_date and t1.end_date
+        </if>
+        <if test="dto.name != null and dto.name != ''">
+            and t1.name like concat('%', #{dto.name},'%')
+        </if>
+        <if test="dto.type != null and dto.type != ''">
+            and t1.type = #{dto.type}
+        </if>
+        <if test="dto.orgId != null">
+            and t1.org_id = #{dto.orgId}
+        </if>
+        <if test="dto.status != null ">
+            and t1.status = #{dto.status}
+        </if>
+    </select>
+    <select id="getMyPage" parameterType="com.xjrsoft.module.activity.dto.ActivityInfoPageDto" resultType="com.xjrsoft.module.activity.vo.ActivityInfoPageVo">
+        SELECT t1.id,t2.name AS type_cn,t3.company_name AS enterprise_name,t1.name,t1.place,t1.start_date,t1.end_date,
+        t1.type, t4.name AS org_name, t1.enroll_end_time, t1.duty_person,t1.duty_person_mobile, t1.cover_file_id,
+        t1.enroll_range, t1.status,t1.content,t1.category,t5.status as enroll_status,
+        (SELECT COUNT(*) FROM activity_enroll WHERE delete_mark = 0 AND activity_info_id = t1.id) as enroll_count FROM activity_info t1
+        LEFT JOIN xjr_dictionary_detail t2 ON t1.type = t2.code
+        LEFT JOIN company_coop t3 ON t1.enterprise_id = t3.id
+        LEFT JOIN xjr_department t4 ON t1.org_id = t4.id
+        LEFT JOIN activity_enroll t5 ON t1.id = t5.activity_info_id
+        WHERE t1.delete_mark = 0 and t5.user_id = #{dto.loginUserId}
+        <if test="dto.category != null">
+            and t1.category = #{dto.category}
+        </if>
+        <if test="dto.isEffective != null and dto.isEffective == 1">
+            and (t1.status = 1 or t1.status = 2) and NOW() between t1.start_date and t1.end_date
+        </if>
+    </select>
+</mapper>

+ 2 - 2
src/main/resources/mapper/banding/BandingTaskClassMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xjrsoft.module.banding.mapper.BandingTaskClassMapper">
     <select id="getList" parameterType="com.xjrsoft.module.banding.dto.BandingTaskClassPageDto" resultType="com.xjrsoft.module.banding.vo.BandingTaskClassPageVo">
-        SELECT t1.id, t1.major_set_id,t2.name AS major_set_name, t1.name, t1.number,t1.sort_code,t1.is_order_class,t1.class_type,
+        SELECT t1.id, t1.major_set_id,t2.name AS major_set_name, t1.name, t1.number,t1.sort_code,t1.is_order_class,t1.class_type,t1.status,
         (SELECT COUNT(*) FROM base_new_student a1
         INNER JOIN enrollment_plan a2 ON a1.enrollment_plan_id = a2.id
         WHERE a1.delete_mark = 0 AND a1.first_ambition_id = t1.major_set_id
@@ -126,6 +126,6 @@
     </select>
 
     <select id="getListOrderByAsc" resultType="com.xjrsoft.module.banding.entity.BandingTaskClass">
-        SELECT * FROM banding_task_class WHERE delete_mark = 0 and banding_task_id = #{id} ORDER BY sort_code IS NULL, sort_code ASC
+        SELECT * FROM banding_task_class WHERE delete_mark = 0 and banding_task_id = #{id} and status = 0 ORDER BY sort_code IS NULL, sort_code ASC
     </select>
 </mapper>

Some files were not shown because too many files changed in this diff