package com.xjrsoft.module.base.controller; 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.metadata.IPage; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.xjrsoft.common.annotation.XjrLog; 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.dto.AddBaseClassMergeDto; import com.xjrsoft.module.base.dto.BaseClassMergePageDto; import com.xjrsoft.module.base.dto.BaseClassMergeStudentPageDto; import com.xjrsoft.module.base.dto.UpdateBaseClassMergeDto; import com.xjrsoft.module.base.entity.BaseClass; import com.xjrsoft.module.base.entity.BaseClassMerge; import com.xjrsoft.module.base.service.IBaseClassMergeService; import com.xjrsoft.module.base.vo.BaseClassMergePageVo; import com.xjrsoft.module.base.vo.BaseClassMergeStudentVo; import com.xjrsoft.module.base.vo.BaseClassMergeVo; import com.xjrsoft.module.organization.entity.User; 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-04-08 * @Version 1.0 */ @RestController @RequestMapping("/base" + "/baseClassMerge") @Api(value = "/base" + "/baseClassMerge",tags = "班级合并代码") @AllArgsConstructor public class BaseClassMergeController { private final IBaseClassMergeService baseClassMergeService; @GetMapping(value = "/page") @ApiOperation(value="班级合并列表(分页)") @SaCheckPermission("baseclassmerge:detail") @XjrLog(value = "班级合并列表(分页)") public RT> page(@Valid BaseClassMergePageDto dto){ List classIds = null; if(StrUtil.isNotEmpty(dto.getMergeClassName())){ classIds = baseClassMergeService.getClassIdsByClassName(dto.getMergeClassName()); } MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper .select(BaseClassMerge::getId) .select(BaseClassMerge.class,x -> VoToColumnUtil.fieldsToColumns(BaseClassMerge.class).contains(x.getProperty())) .selectAs(BaseClass::getName, BaseClassMergePageVo::getTargetClassName) .selectAs(User::getName, BaseClassMergePageVo::getCreateUserName) .innerJoin(User.class, User::getId, BaseClassMerge::getCreateUserId) .innerJoin(BaseClass.class, BaseClass::getId, BaseClassMerge::getTargetClassId) .like(StrUtil.isNotEmpty(dto.getTargetClassName()), BaseClass::getName, dto.getTargetClassName()) .in(ObjectUtil.isNotNull(classIds), BaseClassMerge::getId, classIds) .orderByDesc(BaseClassMerge::getId); IPage page = baseClassMergeService.selectJoinListPage(ConventPage.getPage(dto), BaseClassMergePageVo.class, queryWrapper); for (BaseClassMergePageVo record : page.getRecords()) { record.setMergeClassName(baseClassMergeService.getClassNamesByMergeId(Long.parseLong(record.getId()))); } PageOutput pageOutput = ConventPage.getPageOutput(page, BaseClassMergePageVo.class); return RT.ok(pageOutput); } @GetMapping(value = "/info") @ApiOperation(value="根据id查询班级合并信息") @SaCheckPermission("baseclassmerge:detail") @XjrLog(value = "根据id查询班级合并信息") public RT info(@RequestParam Long id){ BaseClassMerge baseClassMerge = baseClassMergeService.getByIdDeep(id); if (baseClassMerge == null) { return RT.error("找不到此数据!"); } return RT.ok(BeanUtil.toBean(baseClassMerge, BaseClassMergeVo.class)); } @PostMapping @ApiOperation(value = "新增班级合并") @SaCheckPermission("baseclassmerge:add") @XjrLog(value = "新增班级合并") public RT add(@Valid @RequestBody AddBaseClassMergeDto dto){ BaseClassMerge baseClassMerge = BeanUtil.toBean(dto, BaseClassMerge.class); boolean isSuccess = baseClassMergeService.add(baseClassMerge); return RT.ok(isSuccess); } @PutMapping @ApiOperation(value = "修改班级合并") @SaCheckPermission("baseclassmerge:edit") @XjrLog(value = "修改班级合并") public RT update(@Valid @RequestBody UpdateBaseClassMergeDto dto){ BaseClassMerge baseClassMerge = BeanUtil.toBean(dto, BaseClassMerge.class); return RT.ok(baseClassMergeService.update(baseClassMerge)); } @DeleteMapping @ApiOperation(value = "删除班级合并") @SaCheckPermission("baseclassmerge:delete") @XjrLog(value = "删除班级合并") public RT delete(@Valid @RequestBody List ids){ return RT.ok(baseClassMergeService.delete(ids)); } @GetMapping(value = "/student-page") @ApiOperation(value="班级合并学生列表(分页)") @SaCheckPermission("baseclassmerge:detail") @XjrLog(value = "班级合并学生列表(分页)") public RT> studentPage(@Valid BaseClassMergeStudentPageDto dto){ IPage page = baseClassMergeService.getStudentPage(dto); PageOutput pageOutput = ConventPage.getPageOutput(page, BaseClassMergeStudentVo.class); return RT.ok(pageOutput); } }