PbSemesterConfigController.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package com.xjrsoft.module.student.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.hutool.core.bean.BeanUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.xjrsoft.common.annotation.XjrLog;
  7. import com.xjrsoft.common.model.result.RT;
  8. import com.xjrsoft.common.page.ConventPage;
  9. import com.xjrsoft.common.page.PageOutput;
  10. import com.xjrsoft.common.utils.VoToColumnUtil;
  11. import com.xjrsoft.module.base.entity.BaseSemester;
  12. import com.xjrsoft.module.base.service.IBaseSemesterService;
  13. import com.xjrsoft.module.student.dto.AddPbSemesterConfigDto;
  14. import com.xjrsoft.module.student.dto.PbSemesterConfigPageDto;
  15. import com.xjrsoft.module.student.dto.UpdatePbSemesterConfigDto;
  16. import com.xjrsoft.module.student.entity.PbSemesterConfig;
  17. import com.xjrsoft.module.student.service.IPbSemesterConfigService;
  18. import com.xjrsoft.module.student.vo.PbSemesterConfigPageVo;
  19. import com.xjrsoft.module.student.vo.PbSemesterConfigVo;
  20. import com.xjrsoft.module.student.vo.SemesterYeatTreeVo;
  21. import io.swagger.annotations.Api;
  22. import io.swagger.annotations.ApiOperation;
  23. import lombok.AllArgsConstructor;
  24. import org.springframework.web.bind.annotation.*;
  25. import javax.validation.Valid;
  26. import java.util.*;
  27. /**
  28. * @title: 攀宝学期对应
  29. * @Author zsz
  30. * @Date: 2024-03-18
  31. * @Version 1.0
  32. */
  33. @RestController
  34. @RequestMapping("/student" + "/pbSemesterConfig")
  35. @Api(value = "/student" + "/pbSemesterConfig", tags = "攀宝学期对应代码")
  36. @AllArgsConstructor
  37. public class PbSemesterConfigController {
  38. private final IPbSemesterConfigService pbSemesterConfigService;
  39. private final IBaseSemesterService baseSemesterService;
  40. @GetMapping(value = "/tree")
  41. @ApiOperation(value = "年和学期树")
  42. @SaCheckPermission("pbsemesterconfig:tree")
  43. @XjrLog(value = "年和学期树")
  44. public RT<List<SemesterYeatTreeVo>> tree() {
  45. LambdaQueryWrapper<BaseSemester> baseSemesterLambdaQueryWrapper = new LambdaQueryWrapper<>();
  46. baseSemesterLambdaQueryWrapper
  47. .eq(BaseSemester::getDeleteMark, 0);
  48. List<BaseSemester> baseSemesterList = baseSemesterService.list(baseSemesterLambdaQueryWrapper);
  49. baseSemesterList.forEach(element -> {
  50. // 处理元素
  51. element.setModifyUserId(Long.parseLong(element.getName().substring(0, 4)));
  52. });
  53. Map<Long, SemesterYeatTreeVo> yearMap = new HashMap<>();
  54. for (BaseSemester node : baseSemesterList) {
  55. Long year = node.getModifyUserId();
  56. if (!yearMap.containsKey(year)) {
  57. yearMap.put(year, new SemesterYeatTreeVo() {{
  58. setId(year);
  59. setName(year + "年");
  60. setChildren(new ArrayList<>());
  61. }});
  62. }
  63. yearMap.get(year).getChildren().add(new SemesterYeatTreeVo() {{
  64. setId(node.getId());
  65. setName(node.getName());
  66. setParentId(year);
  67. setChildren(new ArrayList<>());
  68. }});
  69. }
  70. Map<Long, SemesterYeatTreeVo> sortedMap = new TreeMap<>(yearMap);
  71. List<SemesterYeatTreeVo> voList = new ArrayList<>(sortedMap.values());
  72. return RT.ok(voList);
  73. }
  74. @GetMapping(value = "/page")
  75. @ApiOperation(value = "攀宝学期对应列表(分页)")
  76. @SaCheckPermission("pbsemesterconfig:page")
  77. @XjrLog(value = "攀宝学期对应列表(分页)")
  78. public RT<PageOutput<PbSemesterConfigPageVo>> page(@Valid PbSemesterConfigPageDto dto) {
  79. LambdaQueryWrapper<PbSemesterConfig> queryWrapper = new LambdaQueryWrapper<>();
  80. queryWrapper
  81. .orderByDesc(PbSemesterConfig::getId)
  82. .eq(dto.getBaseSemesterId() != null && dto.getBaseSemesterId() > 0, PbSemesterConfig::getBaseSemesterId, dto.getBaseSemesterId())
  83. .select(PbSemesterConfig.class, x -> VoToColumnUtil.fieldsToColumns(PbSemesterConfigPageVo.class).contains(x.getProperty()));
  84. IPage<PbSemesterConfig> page = pbSemesterConfigService.page(ConventPage.getPage(dto), queryWrapper);
  85. PageOutput<PbSemesterConfigPageVo> pageOutput = ConventPage.getPageOutput(page, PbSemesterConfigPageVo.class);
  86. return RT.ok(pageOutput);
  87. }
  88. @GetMapping(value = "/info")
  89. @ApiOperation(value = "根据id查询攀宝学期对应信息")
  90. @SaCheckPermission("pbsemesterconfig:info")
  91. @XjrLog(value = "根据id查询攀宝学期对应信息", saveResponseData = true)
  92. public RT<PbSemesterConfigVo> info(@RequestParam Long id) {
  93. PbSemesterConfig pbSemesterConfig = pbSemesterConfigService.getById(id);
  94. if (pbSemesterConfig == null) {
  95. return RT.error("找不到此数据!");
  96. }
  97. return RT.ok(BeanUtil.toBean(pbSemesterConfig, PbSemesterConfigVo.class));
  98. }
  99. @PostMapping
  100. @ApiOperation(value = "新增攀宝学期对应")
  101. @SaCheckPermission("pbsemesterconfig:add")
  102. @XjrLog(value = "新增攀宝学期对应", saveResponseData = true)
  103. public RT<Boolean> add(@Valid @RequestBody AddPbSemesterConfigDto dto) {
  104. PbSemesterConfig pbSemesterConfig = BeanUtil.toBean(dto, PbSemesterConfig.class);
  105. boolean isSuccess = pbSemesterConfigService.save(pbSemesterConfig);
  106. return RT.ok(isSuccess);
  107. }
  108. @PutMapping
  109. @ApiOperation(value = "修改攀宝学期对应")
  110. @SaCheckPermission("pbsemesterconfig:edit")
  111. @XjrLog(value = "修改攀宝学期对应", saveResponseData = true)
  112. public RT<Boolean> update(@Valid @RequestBody UpdatePbSemesterConfigDto dto) {
  113. PbSemesterConfig pbSemesterConfig = BeanUtil.toBean(dto, PbSemesterConfig.class);
  114. return RT.ok(pbSemesterConfigService.updateById(pbSemesterConfig));
  115. }
  116. @DeleteMapping
  117. @ApiOperation(value = "删除攀宝学期对应")
  118. @SaCheckPermission("pbsemesterconfig:delete")
  119. @XjrLog(value = "删除攀宝学期对应", saveResponseData = true)
  120. public RT<Boolean> delete(@Valid @RequestBody List<Long> ids) {
  121. return RT.ok(pbSemesterConfigService.removeBatchByIds(ids));
  122. }
  123. }