package com.xjrsoft.module.student.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.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; import com.xjrsoft.common.page.PageOutput; import com.xjrsoft.common.utils.VoToColumnUtil; import com.xjrsoft.module.base.entity.BaseClass; import com.xjrsoft.module.base.mapper.BaseClassMapper; import com.xjrsoft.module.student.dto.AddBaseStudentAssessmentInspectionDto; import com.xjrsoft.module.student.dto.BaseStudentAssessmentInspectionPageDto; import com.xjrsoft.module.student.dto.UpdateBaseStudentAssessmentInspectionDto; import com.xjrsoft.module.student.entity.BaseStudentAssessmentCategory; import com.xjrsoft.module.student.entity.BaseStudentAssessmentClassRelation; import com.xjrsoft.module.student.entity.BaseStudentAssessmentInspection; import com.xjrsoft.module.student.entity.BaseStudentAssessmentProject; import com.xjrsoft.module.student.entity.BaseStudentAssessmentStudentRelation; import com.xjrsoft.module.student.mapper.BaseStudentAssessmentCategoryMapper; import com.xjrsoft.module.student.mapper.BaseStudentAssessmentProjectMapper; import com.xjrsoft.module.student.service.IBaseStudentAssessmentClassRelationService; import com.xjrsoft.module.student.service.IBaseStudentAssessmentInspectionService; import com.xjrsoft.module.student.service.IBaseStudentAssessmentStudentRelationService; import com.xjrsoft.module.student.vo.BaseStudentAssessmentClassRelationListVo; import com.xjrsoft.module.student.vo.BaseStudentAssessmentInspectionPageVo; import com.xjrsoft.module.student.vo.BaseStudentAssessmentInspectionVo; import com.xjrsoft.module.student.vo.BaseStudentAssessmentStudentRelationVo; import com.xjrsoft.module.teacher.entity.XjrUser; import com.xjrsoft.module.teacher.mapper.XjrUserMapper; 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; /** * @title: 学生班级巡查考核 * @Author dzx * @Date: 2023-11-16 * @Version 1.0 */ @RestController @RequestMapping("/student" + "/basestudentassessmentinspection") @Api(value = "/student" + "/basestudentassessmentinspection", tags = "学生班级巡查考核代码") @AllArgsConstructor public class BaseStudentAssessmentInspectionController { private final IBaseStudentAssessmentInspectionService baseStudentAssessmentInspectionService; private final IBaseStudentAssessmentClassRelationService baseStudentAssessmentClassRelationService; private final IBaseStudentAssessmentStudentRelationService baseStudentAssessmentStudentRelationService; private final BaseStudentAssessmentProjectMapper baseStudentAssessmentProjectMapper; private final BaseStudentAssessmentCategoryMapper baseStudentAssessmentCategoryMapper; private final XjrUserMapper xjrUserMapper; private final BaseClassMapper baseClassMapper; @GetMapping(value = "/page") @ApiOperation(value = "学生班级巡查考核列表(分页)") @SaCheckPermission("basestudentassessmentinspection:detail") public RT> page(@Valid BaseStudentAssessmentInspectionPageDto dto) { Page page = baseStudentAssessmentInspectionService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto); return RT.ok(ConventPage.getPageOutput(page, BaseStudentAssessmentInspectionPageVo.class)); } @GetMapping(value = "/mibliePage") @ApiOperation(value = "学生操行分记录管理列表(移动端分页)") @SaCheckPermission("basestudentbehaviormanage:detail") public RT> mibliePage(@Valid BaseStudentAssessmentInspectionPageDto dto) { List classList = baseClassMapper.selectList( MPJWrappers.lambdaJoin() .eq(BaseClass::getTeacherId, StpUtil.getLoginIdAsLong()) .select(BaseClass.class, x -> VoToColumnUtil.fieldsToColumns(BaseClass.class).contains(x.getProperty())) ); List classIds = new ArrayList<>(); for (BaseClass baseClass : classList) { classIds.add(baseClass.getId()); } dto.setClassIds(classIds); return RT.ok(getData(dto)); } PageOutput getData(BaseStudentAssessmentInspectionPageDto dto) { IPage page = baseStudentAssessmentInspectionService.selectJoinListPage(ConventPage.getPage(dto), BaseStudentAssessmentInspectionPageVo.class, MPJWrappers.lambdaJoin() .like(StrUtil.isNotEmpty(dto.getCreateUserName()), XjrUser::getName, dto.getCreateUserName()) .like(StrUtil.isNotEmpty(dto.getModifyUserName()), XjrUser::getName, dto.getModifyUserName()) .eq(StrUtil.isNotEmpty(dto.getEnrollType()), BaseClass::getEnrollType, dto.getEnrollType()) .eq(ObjectUtil.isNotNull(dto.getGradeId()), BaseClass::getGradeId, dto.getGradeId()) .eq(BaseStudentAssessmentInspection::getStatus, 1) .in(ObjectUtil.isNotNull(dto.getClassIds()), BaseStudentAssessmentClassRelation::getClassId, dto.getClassIds()) .in(ObjectUtil.isNotNull(dto.getBaseStudentAssessmentProjectIds()), BaseStudentAssessmentInspection::getBaseStudentAssessmentProjectId, dto.getBaseStudentAssessmentProjectIds()) .between(ObjectUtil.isNotNull(dto.getStartDate()) && ObjectUtil.isNotNull(dto.getEndDate()), BaseStudentAssessmentInspection::getCreateDate, dto.getStartDate(), dto.getEndDate()) .in(ObjectUtil.isNotNull(dto.getBaseStudentAssessmentProjectIds()), BaseStudentAssessmentInspection::getBaseStudentAssessmentProjectId, dto.getBaseStudentAssessmentProjectIds()) .select("c.name as class_name") .select("u.name as class_teacher") .select("d.name as dept_name") .select("(SELECT COUNT(*) FROM base_student_assessment_student_relation WHERE base_student_assessment_inspection_id = t.id) as student_count") .select("(SELECT name FROM xjr_user WHERE id = t.assessment_user_id) as assessment_user_name") .select(BaseStudentAssessmentInspection::getScore) .select(BaseStudentAssessmentInspection::getSortCode) .select(BaseStudentAssessmentInspection::getReason) .select(BaseStudentAssessmentInspection::getId) .select(BaseStudentAssessmentInspection::getFileId) .selectAs(BaseStudentAssessmentCategory::getName, BaseStudentAssessmentInspectionPageVo::getAssessmentCategoryName) .selectAs(BaseStudentAssessmentProject::getName, BaseStudentAssessmentInspectionPageVo::getAssessmentProjectName) .innerJoin(BaseStudentAssessmentCategory.class, BaseStudentAssessmentCategory::getId, BaseStudentAssessmentInspection::getBaseStudentAssessmentCategoryId) .innerJoin(BaseStudentAssessmentProject.class, BaseStudentAssessmentProject::getId, BaseStudentAssessmentInspection::getBaseStudentAssessmentProjectId) .leftJoin(XjrUser.class, XjrUser::getId, BaseStudentAssessmentInspection::getAssessmentUserId) .innerJoin("base_class c ON t.class_ids LIKE CONCAT('%', c.id, '%')") .innerJoin("xjr_user u on c.teacher_id = u.id") .innerJoin("xjr_department d on c.org_id = d.id") .leftJoin(BaseStudentAssessmentClassRelation.class, BaseStudentAssessmentClassRelation::getBaseStudentAssessmentInspectionId, BaseStudentAssessmentInspection::getId) ); return ConventPage.getPageOutput(page, BaseStudentAssessmentInspectionPageVo.class); } // @GetMapping(value = "/moblieInfo") // @ApiOperation(value="根据id查询学生班级巡查考核信息") // @SaCheckPermission("basestudentassessmentinspection:detail") // public RT> moblieInfo(@RequestParam Long id){ // BaseStudentAssessmentInspection baseStudentAssessmentInspection = baseStudentAssessmentInspectionService.getById(id); // if (baseStudentAssessmentInspection == null) { // return RT.error("找不到此数据!"); // } // List list = baseStudentAssessmentInspectionService.selectJoinList(BaseStudentAssessmentInspectionPageVo.class, // MPJWrappers.lambdaJoin() // .eq(ObjectUtil.isNotNull(id), BaseStudentAssessmentInspection::getId, id) // .eq(BaseStudentAssessmentInspection::getStatus, 1) // .selectAs(BaseClass::getName, BaseStudentAssessmentInspectionPageVo::getClassName) // .select("u.name as class_teacher") // .select("d.name as dept_name") // .select("(SELECT COUNT(*) FROM base_student_assessment_student_relation WHERE base_student_assessment_inspection_id = t.id) as student_count") // .select("(SELECT name FROM xjr_user WHERE id = t.assessment_user_id) as assessment_user_name") // .select(BaseStudentAssessmentInspection::getScore) // .select(BaseStudentAssessmentInspection::getSortCode) // .select(BaseStudentAssessmentInspection::getReason) // .select(BaseStudentAssessmentInspection::getId) // .select(BaseStudentAssessmentInspection::getFileId) // .selectAs(BaseStudentAssessmentCategory::getName, BaseStudentAssessmentInspectionPageVo::getAssessmentCategoryName) // .selectAs(BaseStudentAssessmentProject::getName, BaseStudentAssessmentInspectionPageVo::getAssessmentProjectName) // .innerJoin(BaseStudentAssessmentCategory.class, BaseStudentAssessmentCategory::getId, BaseStudentAssessmentInspection::getBaseStudentAssessmentCategoryId) // .innerJoin(BaseStudentAssessmentProject.class, BaseStudentAssessmentProject::getId, BaseStudentAssessmentInspection::getBaseStudentAssessmentProjectId) // .leftJoin(XjrUser.class, XjrUser::getId, BaseStudentAssessmentInspection::getAssessmentUserId) // .innerJoin(BaseStudentAssessmentClassRelation.class, BaseStudentAssessmentClassRelation::getBaseStudentAssessmentInspectionId, BaseStudentAssessmentInspection::getId) // .innerJoin(BaseClass.class, BaseClass::getId, BaseStudentAssessmentClassRelation::getClassId) // .innerJoin("xjr_user u on t5.teacher_id = u.id") // .innerJoin("xjr_department d on t5.org_id = d.id") // ); // for (BaseStudentAssessmentInspectionPageVo inspectionPageVo : list) { // //查询学生 // LambdaQueryWrapper studentQueryWrapper = new LambdaQueryWrapper<>(); // studentQueryWrapper // .eq(BaseStudentAssessmentStudentRelation::getBaseStudentAssessmentInspectionId, inspectionPageVo.getId()) // .select(BaseStudentAssessmentStudentRelation.class, x -> VoToColumnUtil.fieldsToColumns(BaseStudentAssessmentStudentRelationVo.class).contains(x.getProperty())); // List studentList = baseStudentAssessmentStudentRelationService.list(studentQueryWrapper); // inspectionPageVo.setStudentList(BeanUtil.copyToList(studentList, BaseStudentAssessmentStudentRelationVo.class)); // inspectionPageVo.setStudentCount(studentList.size()); // } // return RT.ok(list); // } @GetMapping(value = "/info") @ApiOperation(value = "根据id查询学生班级巡查考核信息") @SaCheckPermission("basestudentassessmentinspection:detail") public RT info(@RequestParam Long id) { BaseStudentAssessmentInspection baseStudentAssessmentInspection = baseStudentAssessmentInspectionService.getById(id); if (baseStudentAssessmentInspection == null) { return RT.error("找不到此数据!"); } BaseStudentAssessmentInspectionVo baseStudentAssessmentInspectionVo = BeanUtil.toBean(baseStudentAssessmentInspection, BaseStudentAssessmentInspectionVo.class); //查询班级 LambdaQueryWrapper classQueryWrapper = new LambdaQueryWrapper<>(); classQueryWrapper .eq(BaseStudentAssessmentClassRelation::getBaseStudentAssessmentInspectionId, id) .select(BaseStudentAssessmentClassRelation.class, x -> VoToColumnUtil.fieldsToColumns(BaseStudentAssessmentClassRelationListVo.class).contains(x.getProperty())); List classList = baseStudentAssessmentClassRelationService.list(classQueryWrapper); baseStudentAssessmentInspectionVo.setClassList(BeanUtil.copyToList(classList, BaseStudentAssessmentClassRelationListVo.class)); //查询学生 LambdaQueryWrapper studentQueryWrapper = new LambdaQueryWrapper<>(); studentQueryWrapper .eq(BaseStudentAssessmentStudentRelation::getBaseStudentAssessmentInspectionId, id) .select(BaseStudentAssessmentStudentRelation.class, x -> VoToColumnUtil.fieldsToColumns(BaseStudentAssessmentStudentRelationVo.class).contains(x.getProperty())); List studentList = baseStudentAssessmentStudentRelationService.list(studentQueryWrapper); baseStudentAssessmentInspectionVo.setStudentList(BeanUtil.copyToList(studentList, BaseStudentAssessmentStudentRelationVo.class)); baseStudentAssessmentInspectionVo.setStudentCount(studentList.size()); //查询考核项目 BaseStudentAssessmentProject project = baseStudentAssessmentProjectMapper.selectById(baseStudentAssessmentInspection.getBaseStudentAssessmentProjectId()); if (project != null) { baseStudentAssessmentInspectionVo.setAssessmentProjectName(project.getName()); } //查询考核类别 BaseStudentAssessmentCategory category = baseStudentAssessmentCategoryMapper.selectById(baseStudentAssessmentInspection.getBaseStudentAssessmentCategoryId()); if (category != null) { baseStudentAssessmentInspectionVo.setAssessmentCategoryName(category.getName()); } //登记人 XjrUser createUser = xjrUserMapper.selectById(baseStudentAssessmentInspection.getCreateUserId()); if (createUser != null) { baseStudentAssessmentInspectionVo.setCreateUserName(createUser.getName()); } //考核人 XjrUser assessmentUser = xjrUserMapper.selectById(baseStudentAssessmentInspection.getAssessmentUserId()); if (createUser != null) { baseStudentAssessmentInspectionVo.setAssessmentUserName(assessmentUser.getName()); } //修改人 XjrUser modifyUser = xjrUserMapper.selectById(baseStudentAssessmentInspection.getModifyUserId()); if (modifyUser != null) { baseStudentAssessmentInspectionVo.setModifyUserName(modifyUser.getName()); } return RT.ok(baseStudentAssessmentInspectionVo); } @PostMapping @ApiOperation(value = "新增学生班级巡查考核") @SaCheckPermission("basestudentassessmentinspection:add") public RT add(@Valid @RequestBody AddBaseStudentAssessmentInspectionDto dto) { BaseStudentAssessmentInspection baseStudentAssessmentInspection = BeanUtil.toBean(dto, BaseStudentAssessmentInspection.class); boolean isSuccess = baseStudentAssessmentInspectionService.save(baseStudentAssessmentInspection); return RT.ok(isSuccess); } @PutMapping @ApiOperation(value = "修改学生班级巡查考核") @SaCheckPermission("basestudentassessmentinspection:edit") public RT update(@Valid @RequestBody UpdateBaseStudentAssessmentInspectionDto dto) { BaseStudentAssessmentInspection baseStudentAssessmentInspection = BeanUtil.toBean(dto, BaseStudentAssessmentInspection.class); return RT.ok(baseStudentAssessmentInspectionService.updateById(baseStudentAssessmentInspection)); } @DeleteMapping @ApiOperation(value = "删除学生班级巡查考核") @SaCheckPermission("basestudentassessmentinspection:delete") public RT delete(@Valid @RequestBody List ids) { return RT.ok(baseStudentAssessmentInspectionService.removeBatchByIds(ids)); } }