package com.xjrsoft.module.internship.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.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.xjrsoft.common.annotation.XjrLog; import com.xjrsoft.common.exception.MyException; import com.xjrsoft.common.model.result.RT; import com.xjrsoft.common.page.ConventPage; import com.xjrsoft.common.page.PageOutput; import com.xjrsoft.common.utils.VoToColumnUtil; import com.xjrsoft.module.base.entity.BaseSemester; import com.xjrsoft.module.internship.dto.AddInternshipTeacherCollectEnrollDto; import com.xjrsoft.module.internship.dto.InternshipTeacherCollectEnrollPageDto; import com.xjrsoft.module.internship.dto.InternshipTeacherCollectEnrollStatusDto; import com.xjrsoft.module.internship.dto.UpdateInternshipTeacherCollectEnrollDto; import com.xjrsoft.module.internship.entity.InternshipTeacherCollect; import com.xjrsoft.module.internship.entity.InternshipTeacherCollectEnroll; import com.xjrsoft.module.internship.service.IInternshipTeacherCollectEnrollService; import com.xjrsoft.module.internship.service.IInternshipTeacherCollectService; import com.xjrsoft.module.internship.vo.InternshipTeacherCollectEnrollExamPageVo; import com.xjrsoft.module.internship.vo.InternshipTeacherCollectEnrollListVo; import com.xjrsoft.module.internship.vo.InternshipTeacherCollectEnrollPageVo; import com.xjrsoft.module.internship.vo.InternshipTeacherCollectEnrollVo; import com.xjrsoft.module.internship.vo.InternshipTeacherCollectPageVo; import com.xjrsoft.module.organization.entity.User; import com.xjrsoft.module.organization.service.IUserService; import com.xjrsoft.module.system.entity.DictionaryDetail; import com.xjrsoft.module.system.entity.File; import com.xjrsoft.module.system.service.IFileService; import com.xjrsoft.module.teacher.entity.BaseTeacher; 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: 2025-06-25 * @Version 1.0 */ @RestController @RequestMapping("/internship" + "/internshipTeacherCollectEnroll") @Api(value = "/internship" + "/internshipTeacherCollectEnroll",tags = "实习带队教师报名表代码") @AllArgsConstructor public class InternshipTeacherCollectEnrollController { private final IInternshipTeacherCollectService internshipTeacherCollectService; private final IInternshipTeacherCollectEnrollService internshipTeacherCollectEnrollService; private final IUserService userService; private final IFileService fileService; @GetMapping(value = "/page") @ApiOperation(value="实习带队教师报名表列表(分页)") @SaCheckPermission("internshipteachercollectenroll:detail") @XjrLog(value = "实习带队教师报名表列表(分页)") public RT> page(@Valid InternshipTeacherCollectEnrollPageDto dto){ MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper .select(InternshipTeacherCollect::getId) .select(InternshipTeacherCollect.class,x -> VoToColumnUtil.fieldsToColumns(InternshipTeacherCollectPageVo.class).contains(x.getProperty())) .selectAs(BaseSemester::getName, InternshipTeacherCollectPageVo::getBaseSemesterName) .select("(SELECT COUNT(*) FROM internship_teacher_collect_enroll WHERE delete_mark = 0 AND internship_teacher_collect_id = t.id AND user_id = " + StpUtil.getLoginIdAsLong() +") as is_enroll") .innerJoin(BaseSemester.class, BaseSemester::getId, InternshipTeacherCollect::getBaseSemesterId) .orderByDesc(InternshipTeacherCollect::getId); IPage page = internshipTeacherCollectService.selectJoinListPage(ConventPage.getPage(dto), InternshipTeacherCollectEnrollPageVo.class, queryWrapper); PageOutput pageOutput = ConventPage.getPageOutput(page, InternshipTeacherCollectEnrollPageVo.class); return RT.ok(pageOutput); } @GetMapping(value = "/info") @ApiOperation(value="根据id查询实习带队教师报名表信息") @SaCheckPermission("internshipteachercollectenroll:detail") @XjrLog(value = "根据id查询实习带队教师报名表信息") public RT info(@RequestParam Long id){ InternshipTeacherCollectEnroll internshipTeacherCollectEnroll = internshipTeacherCollectEnrollService.getById(id); if (internshipTeacherCollectEnroll == null) { return RT.error("找不到此数据!"); } InternshipTeacherCollectEnrollVo enrollVo = BeanUtil.toBean(internshipTeacherCollectEnroll, InternshipTeacherCollectEnrollVo.class); User user = userService.getById(internshipTeacherCollectEnroll.getUserId()); if(user != null){ enrollVo.setName(user.getName()); enrollVo.setUserName(user.getUserName()); enrollVo.setMobile(user.getMobile()); } if(internshipTeacherCollectEnroll.getFolderId() != null){ File file = fileService.getOne( new QueryWrapper().lambda() .eq(File::getFolderId, internshipTeacherCollectEnroll.getFolderId()) ); if(file != null){ enrollVo.setFileUrl(file.getFileUrl()); } } return RT.ok(enrollVo); } @PostMapping @ApiOperation(value = "新增实习带队教师报名表") @SaCheckPermission("internshipteachercollectenroll:add") @XjrLog(value = "新增实习带队教师报名表") public RT add(@Valid @RequestBody AddInternshipTeacherCollectEnrollDto dto){ long userId = StpUtil.getLoginIdAsLong(); long count = internshipTeacherCollectEnrollService.count( new QueryWrapper().lambda() .eq(InternshipTeacherCollectEnroll::getInternshipTeacherCollectId, dto.getInternshipTeacherCollectId()) .eq(InternshipTeacherCollectEnroll::getUserId, userId) ); if(count > 0){ throw new MyException("已报名,无法重复报名"); } InternshipTeacherCollectEnroll internshipTeacherCollectEnroll = BeanUtil.toBean(dto, InternshipTeacherCollectEnroll.class); if(dto.getUserId() == null){ internshipTeacherCollectEnroll.setUserId(userId); } boolean isSuccess = internshipTeacherCollectEnrollService.save(internshipTeacherCollectEnroll); return RT.ok(isSuccess); } @PutMapping @ApiOperation(value = "修改实习带队教师报名表") @SaCheckPermission("internshipteachercollectenroll:edit") @XjrLog(value = "修改实习带队教师报名表") public RT update(@Valid @RequestBody UpdateInternshipTeacherCollectEnrollDto dto){ InternshipTeacherCollectEnroll internshipTeacherCollectEnroll = BeanUtil.toBean(dto, InternshipTeacherCollectEnroll.class); return RT.ok(internshipTeacherCollectEnrollService.updateById(internshipTeacherCollectEnroll)); } @DeleteMapping @ApiOperation(value = "删除实习带队教师报名表") @SaCheckPermission("internshipteachercollectenroll:delete") @XjrLog(value = "删除实习带队教师报名表") public RT delete(@Valid @RequestBody List ids){ return RT.ok(internshipTeacherCollectEnrollService.removeBatchByIds(ids)); } @PostMapping(value = "/change-status") @ApiOperation(value = "修改状态") @SaCheckPermission("officebuild:detail") @XjrLog(value = "修改状态", saveResponseData = true) public RT changeStatus(@Valid @RequestBody InternshipTeacherCollectEnrollStatusDto dto) throws Exception { for (Long id : dto.getIds()) { InternshipTeacherCollectEnroll teacherCollectEnroll = internshipTeacherCollectEnrollService.getById(id); teacherCollectEnroll.setStatus(dto.getStatus()); internshipTeacherCollectEnrollService.updateById(teacherCollectEnroll); } return RT.ok(true); } // @GetMapping(value = "/all-page") @ApiOperation(value="所有带队教师(分页)") @SaCheckPermission("internshipteachercollectenroll:detail") @XjrLog(value = "所有带队教师(分页)") public RT> allPage(@Valid InternshipTeacherCollectEnrollPageDto dto){ MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper .select(InternshipTeacherCollectEnroll::getId) .select(User::getName) .select(User::getMobile) .select(User::getUserName) .select(InternshipTeacherCollectEnroll::getStatus) .selectAs(DictionaryDetail::getName, InternshipTeacherCollectEnrollExamPageVo::getJobStateCn) .select("t4.name as employ_type_cn") .innerJoin(User.class, User::getId, InternshipTeacherCollectEnroll::getUserId) .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, InternshipTeacherCollectEnroll::getUserId) .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, BaseTeacher::getJobState) .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, BaseTeacher::getEmployType) .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName()) .like(StrUtil.isNotEmpty(dto.getUserName()), User::getUserName, dto.getUserName()) .like(StrUtil.isNotEmpty(dto.getMobile()), User::getMobile, dto.getMobile()) .orderByDesc(InternshipTeacherCollect::getId); IPage page = internshipTeacherCollectEnrollService.selectJoinListPage(ConventPage.getPage(dto), InternshipTeacherCollectEnrollExamPageVo.class, queryWrapper); PageOutput pageOutput = ConventPage.getPageOutput(page, InternshipTeacherCollectEnrollExamPageVo.class); return RT.ok(pageOutput); } @GetMapping(value = "/list") @ApiOperation(value="审核通过的带队老师") @SaCheckPermission("internshipteachercollectenroll:detail") @XjrLog(value = "审核通过的带队老师") public RT> list(@Valid InternshipTeacherCollectEnrollPageDto dto){ MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper .select(User::getId) .select(User::getName) .innerJoin(User.class, User::getId, InternshipTeacherCollectEnroll::getUserId) .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, InternshipTeacherCollectEnroll::getUserId) .eq(InternshipTeacherCollectEnroll::getStatus, 1) .orderByDesc(InternshipTeacherCollect::getId); List list = internshipTeacherCollectEnrollService.selectJoinList(InternshipTeacherCollectEnrollListVo.class, queryWrapper); return RT.ok(list); } }