EnrollmentPlanController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package com.xjrsoft.module.student.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.dev33.satoken.stp.StpUtil;
  4. import cn.hutool.core.bean.BeanUtil;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.core.metadata.IPage;
  7. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  8. import com.xjrsoft.common.annotation.XjrLog;
  9. import com.xjrsoft.common.enums.DeleteMark;
  10. import com.xjrsoft.common.exception.MyException;
  11. import com.xjrsoft.common.model.result.RT;
  12. import com.xjrsoft.common.page.ConventPage;
  13. import com.xjrsoft.common.page.PageOutput;
  14. import com.xjrsoft.common.utils.VoToColumnUtil;
  15. import com.xjrsoft.module.base.entity.BaseGrade;
  16. import com.xjrsoft.module.base.entity.BaseMajorSet;
  17. import com.xjrsoft.module.organization.entity.Department;
  18. import com.xjrsoft.module.student.dto.AddEnrollmentPlanDto;
  19. import com.xjrsoft.module.student.dto.EnrollmentPlanPageDto;
  20. import com.xjrsoft.module.student.dto.PreviewEnrollmentPlanDto;
  21. import com.xjrsoft.module.student.dto.UpdateEnrollmentPlanDto;
  22. import com.xjrsoft.module.student.entity.EnrollmentPlan;
  23. import com.xjrsoft.module.student.entity.EnrollmentPlanMajorSet;
  24. import com.xjrsoft.module.student.service.IEnrollmentPlanMajorSetService;
  25. import com.xjrsoft.module.student.service.IEnrollmentPlanService;
  26. import com.xjrsoft.module.student.vo.EnrollmentPlanPageVo;
  27. import com.xjrsoft.module.student.vo.EnrollmentPlanVo;
  28. import com.xjrsoft.module.student.vo.PreviewEnrollmentPlanListVo;
  29. import com.xjrsoft.module.student.vo.PreviewEnrollmentPlanVo;
  30. import com.xjrsoft.module.system.entity.DictionaryDetail;
  31. import io.swagger.annotations.Api;
  32. import io.swagger.annotations.ApiOperation;
  33. import lombok.AllArgsConstructor;
  34. import org.springframework.web.bind.annotation.*;
  35. import javax.validation.Valid;
  36. import java.util.Date;
  37. import java.util.List;
  38. /**
  39. * @title: 招生计划维护
  40. * @Author phoenix
  41. * @Date: 2024-06-13
  42. * @Version 1.0
  43. */
  44. @RestController
  45. @RequestMapping("/student" + "/enrollmentPlan")
  46. @Api(value = "/student" + "/enrollmentPlan", tags = "招生计划维护代码")
  47. @AllArgsConstructor
  48. public class EnrollmentPlanController {
  49. private final IEnrollmentPlanService enrollmentPlanService;
  50. private final IEnrollmentPlanMajorSetService enrollmentPlanMajorSetService;
  51. @GetMapping(value = "/page")
  52. @ApiOperation(value = "招生计划维护列表(分页)")
  53. @SaCheckPermission("enrollmentplan:detail")
  54. @XjrLog(value = "招生计划维护列表(分页)")
  55. public RT<PageOutput<EnrollmentPlanPageVo>> page(@Valid EnrollmentPlanPageDto dto) {
  56. MPJLambdaWrapper<EnrollmentPlan> queryWrapper = new MPJLambdaWrapper<>();
  57. queryWrapper
  58. .disableSubLogicDel()
  59. .select(EnrollmentPlan::getId)
  60. .selectAs(DictionaryDetail::getName, EnrollmentPlanPageVo::getEnrollTypeCn)
  61. .selectAs(BaseGrade::getName, EnrollmentPlanPageVo::getGradeIdCn)
  62. .select("(select count(*) from enrollment_plan_major_set a where a.enrollment_plan_id = t.id and a.delete_mark = 0) as baseMajorSetSum")
  63. .select("(select sum(a.base_major_set_enrollment_num) from enrollment_plan_major_set a where a.enrollment_plan_id = t.id and a.delete_mark = 0) as enrollmentStuNum")
  64. .select(EnrollmentPlan.class, x -> VoToColumnUtil.fieldsToColumns(EnrollmentPlanPageVo.class).contains(x.getProperty()))
  65. .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, EnrollmentPlan::getEnrollType)
  66. .leftJoin(BaseGrade.class, BaseGrade::getId, EnrollmentPlan::getGradeId)
  67. .like(dto.getName() != null && !dto.getName().isEmpty(), EnrollmentPlan::getName, dto.getName())
  68. .eq(dto.getEnrollType() != null && !dto.getEnrollType().isEmpty(), EnrollmentPlan::getEnrollType, dto.getEnrollType())
  69. .eq(EnrollmentPlan::getDeleteMark, DeleteMark.NODELETE)
  70. .eq(dto.getGradeId() != null, EnrollmentPlan::getGradeId, dto.getGradeId())
  71. .orderByDesc(EnrollmentPlan::getStartDate)
  72. ;
  73. IPage<EnrollmentPlanPageVo> page = enrollmentPlanService.selectJoinListPage(ConventPage.getPage(dto), EnrollmentPlanPageVo.class, queryWrapper);
  74. PageOutput<EnrollmentPlanPageVo> pageOutput = ConventPage.getPageOutput(page, EnrollmentPlanPageVo.class);
  75. return RT.ok(pageOutput);
  76. }
  77. @GetMapping(value = "/preview-page")
  78. @ApiOperation(value = "预览招生计划")
  79. @SaCheckPermission("enrollmentplan:detail")
  80. @XjrLog(value = "预览招生计划", saveResponseData = true)
  81. public RT<PreviewEnrollmentPlanVo> previewPage(@Valid PreviewEnrollmentPlanDto dto) {
  82. MPJLambdaWrapper<EnrollmentPlan> queryWrapper = new MPJLambdaWrapper<>();
  83. queryWrapper
  84. .disableSubLogicDel()
  85. .select(EnrollmentPlan::getId)
  86. .selectAs(DictionaryDetail::getName, PreviewEnrollmentPlanVo::getEnrollTypeCn)
  87. .selectAs(BaseGrade::getName, PreviewEnrollmentPlanVo::getGradeIdCn)
  88. .select("(select sum(a.base_major_set_enrollment_num) from enrollment_plan_major_set a where a.enrollment_plan_id = t.id and a.delete_mark = 0) as enrollmentStuNum")
  89. .select(EnrollmentPlan.class, x -> VoToColumnUtil.fieldsToColumns(PreviewEnrollmentPlanVo.class).contains(x.getProperty()))
  90. .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, EnrollmentPlan::getEnrollType)
  91. .leftJoin(BaseGrade.class, BaseGrade::getId, EnrollmentPlan::getGradeId)
  92. .eq(EnrollmentPlan::getId, dto.getEnrollmentPlanId())
  93. .eq(EnrollmentPlan::getDeleteMark, DeleteMark.NODELETE)
  94. .orderByDesc(EnrollmentPlan::getStartDate)
  95. ;
  96. PreviewEnrollmentPlanVo result = enrollmentPlanService.selectJoinOne(PreviewEnrollmentPlanVo.class, queryWrapper);
  97. if (result == null) {
  98. return RT.ok(result);
  99. }
  100. MPJLambdaWrapper<EnrollmentPlanMajorSet> queryWrapperPreviewEnrollmentPlanList = new MPJLambdaWrapper<>();
  101. queryWrapperPreviewEnrollmentPlanList
  102. .selectAs(BaseMajorSet::getStudyYear, PreviewEnrollmentPlanListVo::getStudyYear)
  103. .selectAs(BaseMajorSet::getName, PreviewEnrollmentPlanListVo::getBaseMajorSetIdCn)
  104. .selectAs(EnrollmentPlanMajorSet::getBaseMajorSetEnrollmentNum, PreviewEnrollmentPlanListVo::getBaseMajorSetEnrollmentNum)
  105. .select("t3.name as baseMajorGradationIdCn")
  106. .select("(select group_concat(b.name) from enrollment_plan_graduate_school a left join base_graduate_school b on a.base_graduate_school_id = b.id where a.enrollment_plan_major_set_id = t.id) as graduateSchool")
  107. .leftJoin(BaseMajorSet.class, BaseMajorSet::getId, EnrollmentPlanMajorSet::getBaseMajorSetId)
  108. .leftJoin(Department.class, Department::getId, BaseMajorSet::getDepartmentId)
  109. .leftJoin("base_major_gradation t3 on t3.id = t1.major_gradation_id")
  110. .eq(EnrollmentPlanMajorSet::getEnrollmentPlanId, dto.getEnrollmentPlanId())
  111. .orderByDesc(BaseMajorSet::getMajorGradationId);
  112. List<PreviewEnrollmentPlanListVo> previewEnrollmentPlanList = enrollmentPlanMajorSetService.selectJoinList(PreviewEnrollmentPlanListVo.class, queryWrapperPreviewEnrollmentPlanList);
  113. result.setPreviewEnrollmentPlanListVoList(previewEnrollmentPlanList);
  114. return RT.ok(result);
  115. }
  116. @GetMapping(value = "/info")
  117. @ApiOperation(value = "根据id查询招生计划维护信息")
  118. @SaCheckPermission("enrollmentplan:detail")
  119. @XjrLog(value = "根据id查询招生计划维护信息", saveResponseData = true)
  120. public RT<EnrollmentPlanVo> info(@RequestParam Long id) {
  121. EnrollmentPlan enrollmentPlan = enrollmentPlanService.getById(id);
  122. if (enrollmentPlan == null) {
  123. return RT.error("找不到此数据!");
  124. }
  125. return RT.ok(BeanUtil.toBean(enrollmentPlan, EnrollmentPlanVo.class));
  126. }
  127. @PostMapping
  128. @ApiOperation(value = "新增招生计划维护")
  129. @SaCheckPermission("enrollmentplan:add")
  130. @XjrLog(value = "新增招生计划维护", saveResponseData = true)
  131. public RT<Boolean> add(@Valid @RequestBody AddEnrollmentPlanDto dto) {
  132. EnrollmentPlan enrollmentPlan = BeanUtil.toBean(dto, EnrollmentPlan.class);
  133. enrollmentPlan.setCreateDate(new Date());
  134. enrollmentPlan.setCreateUserId(StpUtil.getLoginIdAsLong());
  135. enrollmentPlan.setStatus(0);
  136. //获取sortCode的最大数量
  137. QueryWrapper<EnrollmentPlan> queryWrapperSortcode = new QueryWrapper<>();
  138. queryWrapperSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
  139. EnrollmentPlan e = enrollmentPlanService.getOne(queryWrapperSortcode);
  140. int sortCode = e.getSortCode() + 1;
  141. enrollmentPlan.setSortCode(sortCode);
  142. boolean isSuccess = enrollmentPlanService.save(enrollmentPlan);
  143. return RT.ok(isSuccess);
  144. }
  145. @PutMapping("/change-status")
  146. @ApiOperation(value = "修改招生计划状态")
  147. @SaCheckPermission("enrollmentplan:edit")
  148. @XjrLog(value = "修改招生计划状态", saveResponseData = true)
  149. public RT<Boolean> changeStatus(@Valid @RequestBody UpdateEnrollmentPlanDto dto) {
  150. EnrollmentPlan oldEnrollmentPlan = enrollmentPlanService.getById(dto.getId());
  151. if (oldEnrollmentPlan == null) {
  152. throw new MyException("该招生计划已经失效!!!");
  153. }
  154. EnrollmentPlan enrollmentPlan = BeanUtil.toBean(dto, EnrollmentPlan.class);
  155. return RT.ok(enrollmentPlanService.updateById(enrollmentPlan));
  156. }
  157. @PutMapping
  158. @ApiOperation(value = "修改招生计划维护")
  159. @SaCheckPermission("enrollmentplan:edit")
  160. @XjrLog(value = "修改招生计划维护", saveResponseData = true)
  161. public RT<Boolean> update(@Valid @RequestBody UpdateEnrollmentPlanDto dto) {
  162. EnrollmentPlan enrollmentPlan = BeanUtil.toBean(dto, EnrollmentPlan.class);
  163. return RT.ok(enrollmentPlanService.updateById(enrollmentPlan));
  164. }
  165. @DeleteMapping
  166. @ApiOperation(value = "删除招生计划维护")
  167. @SaCheckPermission("enrollmentplan:delete")
  168. @XjrLog(value = "删除招生计划维护", saveResponseData = true)
  169. public RT<Boolean> delete(@Valid @RequestBody List<Long> ids) {
  170. return RT.ok(enrollmentPlanService.removeBatchByIds(ids));
  171. }
  172. }