Browse Source

新生报到

dzx 8 months ago
parent
commit
b792376801

+ 50 - 376
src/main/java/com/xjrsoft/module/student/controller/BaseNewStudentReportController.java

@@ -1,61 +1,45 @@
 package com.xjrsoft.module.student.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
-import cn.dev33.satoken.secure.BCrypt;
 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.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xjrsoft.common.annotation.XjrLog;
-import com.xjrsoft.common.constant.GlobalConstant;
+import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.EnabledMark;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
-import com.xjrsoft.common.utils.RedisUtil;
-import com.xjrsoft.common.utils.VoToColumnUtil;
-import com.xjrsoft.config.CommonPropertiesConfig;
-import com.xjrsoft.module.base.entity.BaseSemester;
-import com.xjrsoft.module.base.entity.BaseUserStudent;
-import com.xjrsoft.module.base.entity.WhitelistManagement;
+import com.xjrsoft.module.banding.entity.BandingTask;
+import com.xjrsoft.module.banding.service.IBandingTaskClassService;
+import com.xjrsoft.module.banding.service.IBandingTaskClassStudentService;
+import com.xjrsoft.module.banding.service.IBandingTaskService;
+import com.xjrsoft.module.base.service.IBaseGradeService;
 import com.xjrsoft.module.base.service.IBaseSemesterService;
-import com.xjrsoft.module.base.service.IBaseUserStudentService;
-import com.xjrsoft.module.base.service.IWhitelistManagementService;
-import com.xjrsoft.module.organization.entity.User;
-import com.xjrsoft.module.organization.entity.UserRoleRelation;
-import com.xjrsoft.module.organization.service.IUserRoleRelationService;
 import com.xjrsoft.module.organization.service.IUserService;
-import com.xjrsoft.module.student.dto.*;
-import com.xjrsoft.module.student.entity.BaseNewStudent;
-import com.xjrsoft.module.student.entity.BaseStudentFamilyMember;
+import com.xjrsoft.module.student.dto.StudentTryReadingReportPageDto;
+import com.xjrsoft.module.student.entity.EnrollmentPlan;
+import com.xjrsoft.module.student.entity.StudentReportPlan;
 import com.xjrsoft.module.student.service.IBaseNewStudentService;
-import com.xjrsoft.module.student.service.IBaseStudentFamilyMemberService;
-import com.xjrsoft.module.student.vo.*;
+import com.xjrsoft.module.student.service.IBaseStudentSchoolRollService;
+import com.xjrsoft.module.student.service.IEnrollmentPlanService;
+import com.xjrsoft.module.student.service.IStudentReportPlanService;
+import com.xjrsoft.module.student.service.IStudentReportRecordService;
+import com.xjrsoft.module.student.vo.StudentReportRecordPlanPageVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
-import java.util.concurrent.CompletableFuture;
+import java.util.List;
 
 /**
- * @title: 新生维护信息
+ * @title: 新生报到信息
  * @Author dzx
- * @Date: 2024-06-27
+ * @Date: 2025年3月19日
  * @Version 1.0
  */
 @RestController
@@ -64,359 +48,49 @@ import java.util.concurrent.CompletableFuture;
 @AllArgsConstructor
 public class BaseNewStudentReportController {
 
-    private final IUserService userService;
-    private final IBaseNewStudentService baseNewStudentService;
-    private final IBaseStudentFamilyMemberService familyMemberService;
-    private final IWhitelistManagementService whitelistManagementService;
-    private final IUserRoleRelationService userRoleRelationService;
-    private final RedisUtil redisUtil;
-    private final IBaseUserStudentService userStudentService;
-    private final CommonPropertiesConfig propertiesConfig;
+    private final IStudentReportRecordService recordService;
+    private final IBandingTaskClassStudentService classStudentService;
+    private final IStudentReportPlanService reportPlanService;
+    private final IBandingTaskClassService bandingTaskClassService;
     private final IBaseSemesterService semesterService;
+    private final IBaseGradeService gradeService;
+    private final IEnrollmentPlanService enrollmentPlanService;
+    private final IBandingTaskService bandingTaskService;
+    private final IUserService userService;
+    private final IBaseStudentSchoolRollService rollService;
+    private final IBaseNewStudentService newStudentService;
 
     @GetMapping(value = "/page")
     @ApiOperation(value = "新生维护信息列表(分页)")
     @SaCheckPermission("basenewstudent:detail")
     @XjrLog(value = "新生维护信息列表(分页)")
-    public RT<PageOutput<BaseNewStudentPageVo>> page(@Valid BaseNewStudentPageDto dto) {
-
-        Page<BaseNewStudentPageVo> page = baseNewStudentService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
-        PageOutput<BaseNewStudentPageVo> pageOutput = ConventPage.getPageOutput(page, BaseNewStudentPageVo.class);
-        return RT.ok(pageOutput);
-    }
-
-    @GetMapping(value = "/report-page")
-    @ApiOperation(value = "新生报到(分页)")
-    @SaCheckPermission("basenewstudent:detail")
-    @XjrLog(value = "新生报到(分页)")
-    public RT<PageOutput<BaseNewStudentPageVo>> reportPage(@Valid BaseNewStudentPageDto dto) {
+    public RT<PageOutput<StudentReportRecordPlanPageVo>> page(@Valid StudentTryReadingReportPageDto dto){
+        dto.setReportCategory(3);
         List<String> roleList = StpUtil.getRoleList();
-        if (roleList.contains("CLASSTE") && roleList.contains("TEACHER") && dto.getTeacherId() == null) {
+        if(roleList.contains("CLASSTE") && roleList.contains("TEACHER")){
             dto.setTeacherId(StpUtil.getLoginIdAsLong());
         }
-        if (dto.getBaseSemesterId() == null) {
-            LambdaQueryWrapper<BaseSemester> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper
-                    .orderByDesc(BaseSemester::getStartDate)
-                    .select(BaseSemester.class, x -> VoToColumnUtil.fieldsToColumns(BaseSemester.class).contains(x.getProperty()));
-            List<BaseSemester> semesterList = semesterService.list(queryWrapper);
-            if (!semesterList.isEmpty()) {
-                dto.setBaseSemesterId(semesterList.get(0).getId());
-            }
-        }
-        Page<BaseNewStudentPageVo> page = baseNewStudentService.getReportPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
-        PageOutput<BaseNewStudentPageVo> pageOutput = ConventPage.getPageOutput(page, BaseNewStudentPageVo.class);
-        return RT.ok(pageOutput);
-    }
-
-    @GetMapping(value = "/tree")
-    @ApiOperation(value = "新生维护信息树")
-    @SaCheckPermission("basenewstudent:detail")
-    @XjrLog(value = "新生维护信息树")
-    public RT<List<BaseNewStudentTreeVo>> tree() {
-
-        List<EnrollmentPlanGradeVo> gradeList = baseNewStudentService.getGradeList();
-        List<EnrollmentPlanTreeVo> list = baseNewStudentService.getEnrollmentPlanList();
-
-        List<BaseNewStudentTreeVo> result = new ArrayList<>();
-        for (EnrollmentPlanGradeVo gradeVo : gradeList) {
-            BaseNewStudentTreeVo treeVo = new BaseNewStudentTreeVo() {{
-                setId(gradeVo.getId());
-                setName(gradeVo.getName());
-                setTreeType(1);
-            }};
-            List<BaseNewStudentTreeVo> children = new ArrayList<>();
-            for (EnrollmentPlanTreeVo planTreeVo : list) {
-                if (planTreeVo.getGradeId().equals(gradeVo.getId())) {
-                    children.add(new BaseNewStudentTreeVo() {{
-                        setId(planTreeVo.getId());
-                        setName(planTreeVo.getEnrollTypeCn());
-                        setTreeType(2);
-                    }});
-                }
-            }
-
-            treeVo.setChildren(children);
-            result.add(treeVo);
-        }
-
-        return RT.ok(result);
-    }
-
-    @GetMapping(value = "/info")
-    @ApiOperation(value = "根据id查询新生维护信息信息")
-    @SaCheckPermission("basenewstudent:detail")
-    @XjrLog(value = "根据id查询新生维护信息信息", saveResponseData = true)
-    public RT<BaseNewStudentVo> info(@RequestParam Long id) {
-        BaseNewStudent baseNewStudent = baseNewStudentService.getById(id);
-        if (baseNewStudent == null) {
-            return RT.error("找不到此数据!");
-        }
-        return RT.ok(BeanUtil.toBean(baseNewStudent, BaseNewStudentVo.class));
-    }
-
-
-    @PostMapping
-    @ApiOperation(value = "新增新生维护信息")
-    @SaCheckPermission("basenewstudent:add")
-    @XjrLog(value = "新增新生维护信息", saveResponseData = true)
-    public RT<Boolean> add(@Valid @RequestBody AddBaseNewStudentDto dto) {
-        BaseNewStudent baseNewStudent = BeanUtil.toBean(dto, BaseNewStudent.class);
-        baseNewStudent.setFirstAmbitionId(Long.parseLong(dto.getFirstAmbition()));
-        baseNewStudent.setSecondAmbitionId(Long.parseLong(dto.getSecondAmbition()));
-        baseNewStudent.setCreateDate(new Date());
-        boolean isSuccess = baseNewStudentService.save(baseNewStudent);
-        return RT.ok(isSuccess);
-    }
-
-    @PutMapping
-    @ApiOperation(value = "修改新生维护信息")
-    @SaCheckPermission("basenewstudent:edit")
-    @XjrLog(value = "修改新生维护信息", saveResponseData = true)
-    public RT<Boolean> update(@Valid @RequestBody UpdateBaseNewStudentDto dto) {
-
-        BaseNewStudent baseNewStudent = BeanUtil.toBean(dto, BaseNewStudent.class);
-        return RT.ok(baseNewStudentService.updateById(baseNewStudent));
-
-    }
-
-    @DeleteMapping
-    @ApiOperation(value = "删除新生维护信息")
-    @SaCheckPermission("basenewstudent:delete")
-    @XjrLog(value = "删除新生维护信息", saveResponseData = true)
-    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids) {
-        return RT.ok(baseNewStudentService.removeBatchByIds(ids));
-    }
-
-    @DeleteMapping("deleteByUserIds")
-    @ApiOperation(value = "删除新生(保留新生信息,删除基础信息)")
-    @SaCheckPermission("basenewstudent:delete")
-    @XjrLog(value = "删除新生(保留新生信息,删除基础信息)", saveResponseData = true)
-    public RT<Boolean> deleteByUserIds(@Valid @RequestBody DeleteNewStudentDto dto) {
-        return RT.ok(baseNewStudentService.deleteByUserIds(dto));
-    }
-
-
-    @PostMapping("/import")
-    @ApiOperation(value = "导入")
-    @XjrLog(value = "导入", saveRequestData = false, saveResponseData = true)
-    public RT<List<Map<String, String>>> importData(@RequestParam Long treeId, @RequestParam MultipartFile file) throws IOException {
-        List<Map<Integer, Object>> errorList = baseNewStudentService.importData(treeId, file);
-        List<Map<String, String>> result = new ArrayList<>();
-
-        for (Map<Integer, Object> objectMap : errorList) {
-            Map<String, String> object = new LinkedHashMap<>();
-            object.put("毕业学校", objectMap.get(0) == null ? "" : objectMap.get(0).toString());
-            object.put("学生姓名", objectMap.get(1) == null ? "" : objectMap.get(1).toString());
-            object.put("性别", objectMap.get(2) == null ? "" : objectMap.get(2).toString());
-            object.put("身份证号", objectMap.get(3) == null ? "" : objectMap.get(3).toString());
-            object.put("身高(cm)", objectMap.get(4) == null ? "" : objectMap.get(4).toString());
-            object.put("体重(kg)", objectMap.get(5) == null ? "" : objectMap.get(5).toString());
-            object.put("毕业班级", objectMap.get(6) == null ? "" : objectMap.get(6).toString());
-            object.put("学生来源", objectMap.get(7) == null ? "" : objectMap.get(7).toString());
-            object.put("住宿类型", objectMap.get(8) == null ? "" : objectMap.get(8).toString());
-            object.put("手机号", objectMap.get(9) == null ? "" : objectMap.get(9).toString());
-            object.put("第一志愿", objectMap.get(10) == null ? "" : objectMap.get(10).toString());
-            object.put("第二志愿", objectMap.get(11) == null ? "" : objectMap.get(11).toString());
-            object.put("是否可调配", objectMap.get(12) == null ? "" : objectMap.get(12).toString());
-            object.put("家庭电话", objectMap.get(13) == null ? "" : objectMap.get(13).toString());
-            object.put("家庭地址", objectMap.get(14) == null ? "" : objectMap.get(14).toString());
-            object.put("错误信息", objectMap.get(15) == null ? "" : objectMap.get(15).toString());
-            result.add(object);
-        }
-        return RT.ok(result);
-    }
-
-    @PostMapping("/score-import")
-    @ApiOperation(value = "成绩导入")
-    @XjrLog(value = "成绩导入", saveRequestData = false, saveResponseData = true)
-    public RT<List<Map<String, String>>> scoreImport(@RequestParam MultipartFile file) throws IOException {
-        List<BaseNewStudentScoreExcelVo> errorList = baseNewStudentService.scoreImport(file);
-        List<Map<String, String>> result = new ArrayList<>();
-
-        for (BaseNewStudentScoreExcelVo objectMap : errorList) {
-            Map<String, String> object = new LinkedHashMap<>();
-            object.put("毕业学校", objectMap.getGraduateSchool());
-            object.put("姓名", objectMap.getName());
-            object.put("性别", objectMap.getGender());
-            object.put("班级", objectMap.getGraduateClass());
-            object.put("总成绩", objectMap.getScore().intValue() + "");
-            object.put("错误信息", "未能查询到该学生或该学生存在多个");
-            result.add(object);
-        }
-        return RT.ok(result);
-    }
-
-    @PostMapping("/active-account")
-    @ApiOperation(value = "激活账号")
-    @XjrLog(value = "激活账号", saveResponseData = true)
-    public RT<Boolean> activeAccount(@Valid @RequestBody ActiveAccountDto dto) {
-        User user = userService.getById(dto.getId());
-        user.setMobile(dto.getMobile());
-        user.setEnabledMark(EnabledMark.ENABLED.getCode());
-        user.setModifyDate(LocalDateTime.now());
-        userService.updateById(user);
-        // 新增家庭成员信息
-        if (StrUtil.isNotEmpty(dto.getParentName()) && StrUtil.isNotEmpty(dto.getParentMobile())) {
-            List<BaseStudentFamilyMember> list = familyMemberService.list(
-                    new QueryWrapper<BaseStudentFamilyMember>().lambda()
-                            .eq(BaseStudentFamilyMember::getName, dto.getParentName())
-                            .eq(BaseStudentFamilyMember::getUserId, dto.getId())
-                            .eq(BaseStudentFamilyMember::getMobile, dto.getParentMobile())
-            );
-            BaseStudentFamilyMember member;
-            if (list.isEmpty()) {
-                member = new BaseStudentFamilyMember();
-                member.setUserId(user.getId());
-                member.setName(dto.getParentName());
-                member.setMobile(dto.getParentMobile());
-                member.setCreateDate(LocalDateTime.now());
-                member.setCreateUserId(StpUtil.getLoginIdAsLong());
-                familyMemberService.save(member);
-            } else {
-                member = list.get(0);
-            }
-            List<User> parents = userService.list(
-                    new QueryWrapper<User>().lambda()
-                            .eq(User::getUserName, dto.getParentMobile())
-                            .or()
-                            .eq(User::getMobile, dto.getParentMobile())
+        if(dto.getIsMoible() != null && dto.getIsMoible() == 1){
+            StudentReportPlan plan = reportPlanService.getLastNewStudentReportPlan();
+            dto.setStudentReportPlanId(plan.getId());
+            BandingTask bandingTask = bandingTaskService.getById(plan.getBandingTaskId());
+            List<EnrollmentPlan> enrollmentPlans = enrollmentPlanService.list(
+                    new QueryWrapper<EnrollmentPlan>().lambda()
+                            .eq(EnrollmentPlan::getDeleteMark, DeleteMark.NODELETE.getCode())
+                            .eq(EnrollmentPlan::getEnabledMark, EnabledMark.ENABLED.getCode())
+                            .eq(EnrollmentPlan::getEnrollType, bandingTask.getEnrollType())
+                            .eq(EnrollmentPlan::getEnrollType, bandingTask.getEnrollType())
+                            .eq(EnrollmentPlan::getGradeId, bandingTask.getGradeId())
+                            .orderByDesc(EnrollmentPlan::getId)
             );
-            if (parents.isEmpty()) {
-                User parentUser = new User() {{
-                    setUserName(dto.getParentMobile());
-                    setName(dto.getParentName());
-                    setIsChangePassword(1);
-                    setDeleteMark(0);
-                    setEnabledMark(1);
-                    setPassword(BCrypt.hashpw(propertiesConfig.getDefaultPassword(), BCrypt.gensalt()));
-                    setMobile(dto.getParentMobile());
-                }};
-                userService.save(parentUser);
-
-                userRoleRelationService.save(new UserRoleRelation() {{
-                    setUserId(parentUser.getId());
-                    setRoleId(4L);
-                }});
-
-                BaseUserStudent userStudent = new BaseUserStudent();
-                userStudent.setStudentId(user.getId());
-                userStudent.setStudentNane(user.getName());
-                userStudent.setStudentIdentity(user.getCredentialNumber());
-                userStudent.setCreateDate(new Date());
-                userStudent.setUserId(parentUser.getId());
-                userStudent.setStatus(1);
-                userStudentService.save(userStudent);
-            } else {
-                User parentUser = parents.get(0);
-                BaseUserStudent userStudent = new BaseUserStudent();
-                userStudent.setStudentId(user.getId());
-                userStudent.setStudentNane(user.getName());
-                userStudent.setStudentIdentity(user.getCredentialNumber());
-                userStudent.setCreateDate(new Date());
-                userStudent.setUserId(parentUser.getId());
-                userStudent.setStatus(1);
-                userStudentService.save(userStudent);
-            }
-        }
-
-
-        //新增白名单信息
-        List<WhitelistManagement> managementList = whitelistManagementService.list(
-                new QueryWrapper<WhitelistManagement>().lambda()
-                        .eq(WhitelistManagement::getUserId, dto.getId())
-        );
-        if (managementList.isEmpty()) {
-            WhitelistManagement whitelistManagement = new WhitelistManagement() {{
-                setName(user.getName());
-                setUserId(user.getId());
-                setCreateDate(new Date());
-                setCredentialNumber(user.getCredentialNumber());
-                setPhone(user.getMobile());
-            }};
-            whitelistManagementService.save(whitelistManagement);
-        } else {
-            WhitelistManagement whitelistManagement = managementList.get(0);
-            whitelistManagement.setName(user.getName());
-            whitelistManagement.setUserId(user.getId());
-            whitelistManagement.setModifyDate(new Date());
-            whitelistManagement.setCredentialNumber(user.getCredentialNumber());
-            whitelistManagement.setPhone(user.getMobile());
-            whitelistManagementService.updateById(whitelistManagement);
-        }
-
-        CompletableFuture.runAsync(() -> {
-            List<User> userList = userService.list();
-            redisUtil.set(GlobalConstant.USER_CACHE_KEY, userList);
-
-            List<UserRoleRelation> userRoleRelationList = userRoleRelationService.list(Wrappers.lambdaQuery(UserRoleRelation.class));
-            redisUtil.set(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, userRoleRelationList);
-
-            whitelistManagementService.loadCaches();
-        });
-
-        return RT.ok(true);
-    }
-
-    @PostMapping("/report-export-query")
-    @ApiOperation(value = "导出")
-    @XjrLog(value = "导出")
-    public ResponseEntity<byte[]> exportData(@Valid @RequestBody BaseNewStudentPageDto dto) {
-        if (dto.getBaseSemesterId() == null) {
-            LambdaQueryWrapper<BaseSemester> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper
-                    .orderByDesc(BaseSemester::getStartDate)
-                    .select(BaseSemester.class, x -> VoToColumnUtil.fieldsToColumns(BaseSemester.class).contains(x.getProperty()));
-            List<BaseSemester> semesterList = semesterService.list(queryWrapper);
-            if (!semesterList.isEmpty()) {
-                dto.setBaseSemesterId(semesterList.get(0).getId());
-            }
-        }
-        List<String> roleList = StpUtil.getRoleList();
-        if (roleList.contains("CLASSTE") && roleList.contains("TEACHER") && dto.getTeacherId() == null) {
-            dto.setTeacherId(StpUtil.getLoginIdAsLong());
-        }
-        List<BaseNewStudentPageVo> reportList = baseNewStudentService.getReportList(dto);
-        List<BaseNewStudentExportVo> exportVos = new ArrayList<>();
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
-        for (BaseNewStudentPageVo el : reportList) {
-            BaseNewStudentExportVo vo = BeanUtil.toBean(el, BaseNewStudentExportVo.class);
-            if (el.getIsReport() == 1) {
-                vo.setReportStatus("是");
-            } else if (el.getIsReport() == 0) {
-                vo.setReportStatus("否");
-            }
-            if (el.getReportTime() != null) {
-                vo.setReportTime(el.getReportTime().format(formatter));
+            if(!enrollmentPlans.isEmpty()){
+                dto.setEnrollmentPlanId(enrollmentPlans.get(0).getId());
             }
-            exportVos.add(vo);
         }
-        ByteArrayOutputStream bot = new ByteArrayOutputStream();
-        EasyExcel.write(bot, BaseNewStudentExportVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(exportVos);
-
-        return RT.fileStream(bot.toByteArray(), "RoomBed" + ExcelTypeEnum.XLSX.getValue());
+        Page<StudentReportRecordPlanPageVo> page = recordService.getTryReadingPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<StudentReportRecordPlanPageVo> pageOutput = ConventPage.getPageOutput(page, StudentReportRecordPlanPageVo.class);
+        return RT.ok(pageOutput);
     }
 
-    @PostMapping("/change-banding-status")
-    @ApiOperation(value = "修改分班状态")
-    @SaCheckPermission("basenewstudent:add")
-    @XjrLog(value = "修改分班状态", saveResponseData = true)
-    public RT<Boolean> changeBandingStatus(@Valid @RequestBody List<ChangeBandingStatusDto> dto) {
-        for (ChangeBandingStatusDto el : dto) {
-            BaseNewStudent newStudent = baseNewStudentService.getById(el.getId());
-
-            UpdateWrapper<BaseNewStudent> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.eq("id", newStudent.getId());
-            updateWrapper.setSql("is_can_banding = " + el.getIsCanBanding());
-            if (StrUtil.isNotEmpty(el.getRemarks())) {
-                updateWrapper.setSql("remarks = '" + el.getRemarks() + "'");
-            } else {
-                updateWrapper.setSql("remarks = null");
-            }
-            baseNewStudentService.update(newStudent, updateWrapper);
-        }
-
-        return RT.ok(true);
-    }
 
 }

+ 24 - 2
src/main/java/com/xjrsoft/module/student/controller/StudentReportPlanController.java

@@ -230,9 +230,9 @@ public class StudentReportPlanController {
     }
 
     @GetMapping(value = "/try-reading-plan")
-    @ApiOperation(value = "根据分班任务id查询试读报到计划信息")
+    @ApiOperation(value = "根据招生计划id查询试读报到计划信息")
     @SaCheckPermission("bandingrule:try-reading-plan")
-    @XjrLog(value = "根据分班任务id查询试读报到计划信息")
+    @XjrLog(value = "根据招生计划id查询试读报到计划信息")
     public RT<StudentReportPlanVo> tryReadingPlan(@RequestParam Long id) {
         EnrollmentPlan enrollmentPlan = enrollmentPlanService.getById(id);
         StudentReportPlan plan = studentReportPlanService.getOne(
@@ -242,6 +242,28 @@ public class StudentReportPlanController {
                         .innerJoin(BandingTask.class, BandingTask::getId, StudentReportPlan::getBandingTaskId)
                         .eq(BandingTask::getEnrollType, enrollmentPlan.getEnrollType())
                         .eq(BandingTask::getGradeId, enrollmentPlan.getGradeId())
+                        .eq(StudentReportPlan::getCategory, 2)
+        );
+        if (plan == null) {
+            return RT.error("未能查询到有报到学生,无法设置");
+        }
+        return RT.ok(BeanUtil.toBean(plan, StudentReportPlanVo.class));
+    }
+
+    @GetMapping(value = "/new-student-plan")
+    @ApiOperation(value = "根据招生计划id查询新生报到计划信息")
+    @SaCheckPermission("bandingrule:new-student-plan")
+    @XjrLog(value = "根据招生计划id查询新生报到计划信息")
+    public RT<StudentReportPlanVo> newStudentPlan(@RequestParam Long id) {
+        EnrollmentPlan enrollmentPlan = enrollmentPlanService.getById(id);
+        StudentReportPlan plan = studentReportPlanService.getOne(
+                new MPJLambdaWrapper<StudentReportPlan>()
+                        .select(StudentReportPlan::getId)
+                        .select(StudentReportPlan.class, x -> VoToColumnUtil.fieldsToColumns(StudentReportPlan.class).contains(x.getProperty()))
+                        .innerJoin(BandingTask.class, BandingTask::getId, StudentReportPlan::getBandingTaskId)
+                        .eq(BandingTask::getEnrollType, enrollmentPlan.getEnrollType())
+                        .eq(BandingTask::getGradeId, enrollmentPlan.getGradeId())
+                        .eq(StudentReportPlan::getCategory, 3)
         );
         if (plan == null) {
             return RT.error("未能查询到有报到学生,无法设置");

+ 2 - 0
src/main/java/com/xjrsoft/module/student/controller/StudentTryReadingReportController.java

@@ -105,12 +105,14 @@ public class StudentTryReadingReportController {
     @SaCheckPermission("tryreadingreport:detail")
     @XjrLog(value="试读报到(分页)")
     public RT<PageOutput<StudentReportRecordPlanPageVo>> page(@Valid StudentTryReadingReportPageDto dto){
+        dto.setReportCategory(2);
         List<String> roleList = StpUtil.getRoleList();
         if(roleList.contains("CLASSTE") && roleList.contains("TEACHER")){
             dto.setTeacherId(StpUtil.getLoginIdAsLong());
         }
         if(dto.getIsMoible() != null && dto.getIsMoible() == 1){
             StudentReportPlan plan = reportPlanService.getLastTryReadingPlan();
+            dto.setStudentReportPlanId(plan.getId());
             BandingTask bandingTask = bandingTaskService.getById(plan.getBandingTaskId());
             List<EnrollmentPlan> enrollmentPlans = enrollmentPlanService.list(
                     new QueryWrapper<EnrollmentPlan>().lambda()

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

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.student.dto;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.xjrsoft.common.page.PageInput;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -72,4 +73,8 @@ public class StudentTryReadingReportPageDto extends PageInput {
     @ApiModelProperty("是否移动端(1:是 0:否)")
     private Integer isMoible;
 
+    @JsonIgnore
+    @ApiModelProperty("报到类别")
+    private Integer reportCategory;
+
 }

+ 2 - 0
src/main/java/com/xjrsoft/module/student/service/IStudentReportPlanService.java

@@ -56,4 +56,6 @@ public interface IStudentReportPlanService extends MPJBaseService<StudentReportP
     List<StudentReportPlanClassRelation> getStudentReportPlanClassRelationList(Long id);
 
     StudentReportPlan getLastTryReadingPlan();
+
+    StudentReportPlan getLastNewStudentReportPlan();
 }

+ 14 - 0
src/main/java/com/xjrsoft/module/student/service/impl/StudentReportPlanServiceImpl.java

@@ -257,4 +257,18 @@ public class StudentReportPlanServiceImpl extends MPJBaseServiceImpl<StudentRepo
         }
         return list.get(0);
     }
+
+    @Override
+    public StudentReportPlan getLastNewStudentReportPlan() {
+        List<StudentReportPlan> list = this.list(
+                new QueryWrapper<StudentReportPlan>().lambda()
+                        .eq(StudentReportPlan::getCategory, 3)
+                        .eq(StudentReportPlan::getStatus, 1)
+                        .orderByDesc(StudentReportPlan::getEndTime)
+        );
+        if (list.isEmpty()) {
+            return null;
+        }
+        return list.get(0);
+    }
 }

+ 5 - 0
src/main/resources/mapper/student/StudentReportRecordMapper.xml

@@ -245,6 +245,7 @@
         WHERE t1.delete_mark = 0 AND t1.enabled_mark = 1
         and t12.status in(1,2)
         and t3.enrollment_plan_id = #{dto.enrollmentPlanId}
+        and t1.student_report_plan_id = #{dto.studentReportPlanId}
         <if test="dto.keyword != null and dto.keyword != ''">
             and t1.name like concat('%', #{dto.keyword},'%')
         </if>
@@ -320,6 +321,10 @@
         WHERE t1.delete_mark = 0 AND t1.enabled_mark = 1
         and t12.status in(1,2)
         and t3.enrollment_plan_id = #{dto.enrollmentPlanId}
+        and t12.category = #{dto.reportCategory}
+        <if test="dto.studentReportPlanId != null">
+            and t1.student_report_plan_id = #{dto.studentReportPlanId}
+        </if>
         <if test="dto.keyword != null and dto.keyword != ''">
             and t1.name like concat('%', #{dto.keyword},'%')
         </if>