Browse Source

Merge remote-tracking branch 'origin/dev' into dev

dzx 9 months ago
parent
commit
19ace216b8
44 changed files with 2285 additions and 23 deletions
  1. 194 0
      src/main/java/com/xjrsoft/module/student/controller/EnrollmentPlanController.java
  2. 114 0
      src/main/java/com/xjrsoft/module/student/controller/EnrollmentPlanGraduateSchoolController.java
  3. 134 0
      src/main/java/com/xjrsoft/module/student/controller/EnrollmentPlanMajorSetController.java
  4. 64 0
      src/main/java/com/xjrsoft/module/student/dto/AddEnrollmentPlanDto.java
  5. 48 0
      src/main/java/com/xjrsoft/module/student/dto/AddEnrollmentPlanGraduateSchoolDto.java
  6. 48 0
      src/main/java/com/xjrsoft/module/student/dto/AddEnrollmentPlanMajorSetDto.java
  7. 31 0
      src/main/java/com/xjrsoft/module/student/dto/BaseGraduateSchoolOfEnrollmentPlanListDto.java
  8. 35 0
      src/main/java/com/xjrsoft/module/student/dto/BaseMajorSetOfEnrollmentPlanPageDto.java
  9. 30 0
      src/main/java/com/xjrsoft/module/student/dto/EnrollmentPlanGraduateSchoolPageDto.java
  10. 39 0
      src/main/java/com/xjrsoft/module/student/dto/EnrollmentPlanMajorSetPageDto.java
  11. 36 0
      src/main/java/com/xjrsoft/module/student/dto/EnrollmentPlanPageDto.java
  12. 25 0
      src/main/java/com/xjrsoft/module/student/dto/PreviewEnrollmentPlanDto.java
  13. 32 0
      src/main/java/com/xjrsoft/module/student/dto/UpdateEnrollmentPlanDto.java
  14. 38 0
      src/main/java/com/xjrsoft/module/student/dto/UpdateEnrollmentPlanGraduateSchoolDto.java
  15. 43 0
      src/main/java/com/xjrsoft/module/student/dto/UpdateEnrollmentPlanMajorSetDto.java
  16. 113 0
      src/main/java/com/xjrsoft/module/student/entity/EnrollmentPlan.java
  17. 97 0
      src/main/java/com/xjrsoft/module/student/entity/EnrollmentPlanGraduateSchool.java
  18. 103 0
      src/main/java/com/xjrsoft/module/student/entity/EnrollmentPlanMajorSet.java
  19. 17 0
      src/main/java/com/xjrsoft/module/student/mapper/EnrollmentPlanGraduateSchoolMapper.java
  20. 27 0
      src/main/java/com/xjrsoft/module/student/mapper/EnrollmentPlanMajorSetMapper.java
  21. 17 0
      src/main/java/com/xjrsoft/module/student/mapper/EnrollmentPlanMapper.java
  22. 17 0
      src/main/java/com/xjrsoft/module/student/service/IEnrollmentPlanGraduateSchoolService.java
  23. 29 0
      src/main/java/com/xjrsoft/module/student/service/IEnrollmentPlanMajorSetService.java
  24. 17 0
      src/main/java/com/xjrsoft/module/student/service/IEnrollmentPlanService.java
  25. 25 0
      src/main/java/com/xjrsoft/module/student/service/impl/EnrollmentPlanGraduateSchoolServiceImpl.java
  26. 130 0
      src/main/java/com/xjrsoft/module/student/service/impl/EnrollmentPlanMajorSetServiceImpl.java
  27. 25 0
      src/main/java/com/xjrsoft/module/student/service/impl/EnrollmentPlanServiceImpl.java
  28. 30 0
      src/main/java/com/xjrsoft/module/student/vo/BaseGraduateSchoolOfEnrollmentPlanListVo.java
  29. 49 0
      src/main/java/com/xjrsoft/module/student/vo/BaseMajorSetOfEnrollmentPlanPageVo.java
  30. 49 0
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanGraduateSchoolPageVo.java
  31. 49 0
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanGraduateSchoolVo.java
  32. 76 0
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanMajorSetPageVo.java
  33. 54 0
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanMajorSetVo.java
  34. 87 0
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanPageVo.java
  35. 64 0
      src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanVo.java
  36. 41 0
      src/main/java/com/xjrsoft/module/student/vo/PreviewEnrollmentPlanListVo.java
  37. 60 0
      src/main/java/com/xjrsoft/module/student/vo/PreviewEnrollmentPlanVo.java
  38. 3 1
      src/main/java/com/xjrsoft/module/textbook/controller/WfTextbookSubscriptionController.java
  39. 1 1
      src/main/java/com/xjrsoft/module/textbook/service/impl/WfTextbookClaimServiceImpl.java
  40. 1 1
      src/main/java/com/xjrsoft/module/textbook/vo/TextbookSubscriptionExportQueryListVo.java
  41. 59 0
      src/main/resources/mapper/student/EnrollmentPlanMajorSetMapper.xml
  42. 9 20
      src/main/resources/mapper/textbook/TextbookMapper.xml
  43. 52 0
      src/main/resources/sqlScript/20240613_sql.sql
  44. 73 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 194 - 0
src/main/java/com/xjrsoft/module/student/controller/EnrollmentPlanController.java

@@ -0,0 +1,194 @@
+package com.xjrsoft.module.student.controller;
+
+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.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.base.entity.BaseGrade;
+import com.xjrsoft.module.base.entity.BaseMajorSet;
+import com.xjrsoft.module.organization.entity.Department;
+import com.xjrsoft.module.student.dto.AddEnrollmentPlanDto;
+import com.xjrsoft.module.student.dto.PreviewEnrollmentPlanDto;
+import com.xjrsoft.module.student.dto.UpdateEnrollmentPlanDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.student.dto.EnrollmentPlanPageDto;
+import com.xjrsoft.module.student.entity.EnrollmentPlan;
+import com.xjrsoft.module.student.entity.EnrollmentPlanMajorSet;
+import com.xjrsoft.module.student.service.IEnrollmentPlanMajorSetService;
+import com.xjrsoft.module.student.service.IEnrollmentPlanService;
+import com.xjrsoft.module.student.vo.*;
+
+import com.xjrsoft.module.system.entity.DictionaryDetail;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/student" + "/enrollmentPlan")
+@Api(value = "/student"  + "/enrollmentPlan",tags = "招生计划维护代码")
+@AllArgsConstructor
+public class EnrollmentPlanController {
+
+
+    private final IEnrollmentPlanService enrollmentPlanService;
+
+    private final IEnrollmentPlanMajorSetService enrollmentPlanMajorSetService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="招生计划维护列表(分页)")
+    @SaCheckPermission("enrollmentplan:detail")
+    public RT<PageOutput<EnrollmentPlanPageVo>> page(@Valid EnrollmentPlanPageDto dto){
+
+        MPJLambdaWrapper<EnrollmentPlan> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .disableSubLogicDel()
+                .select(EnrollmentPlan::getId)
+                .selectAs(DictionaryDetail::getName, EnrollmentPlanPageVo::getEnrollTypeCn)
+                .selectAs(BaseGrade::getName, EnrollmentPlanPageVo::getGradeIdCn)
+                .select("(select count(*) from enrollment_plan_major_set a where a.enrollment_plan_id = t.id and a.delete_mark = 0) as baseMajorSetSum")
+                .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")
+                .select(EnrollmentPlan.class,x -> VoToColumnUtil.fieldsToColumns(EnrollmentPlanPageVo.class).contains(x.getProperty()))
+                .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, EnrollmentPlan::getEnrollType)
+                .leftJoin(BaseGrade.class, BaseGrade::getId, EnrollmentPlan::getGradeId)
+                .like(dto.getName() != null && !dto.getName().isEmpty(), EnrollmentPlan::getName, dto.getName())
+                .eq(dto.getEnrollType() != null && !dto.getEnrollType().isEmpty(), EnrollmentPlan::getEnrollType, dto.getEnrollType())
+                .eq(EnrollmentPlan::getDeleteMark, DeleteMark.NODELETE)
+                .orderByDesc(EnrollmentPlan::getStartDate)
+                ;
+        IPage<EnrollmentPlanPageVo> page = enrollmentPlanService.selectJoinListPage(ConventPage.getPage(dto), EnrollmentPlanPageVo.class, queryWrapper);
+        PageOutput<EnrollmentPlanPageVo> pageOutput = ConventPage.getPageOutput(page, EnrollmentPlanPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/preview-page")
+    @ApiOperation(value="预览招生计划")
+    @SaCheckPermission("enrollmentplan:detail")
+    public RT<PreviewEnrollmentPlanVo> previewPage(@Valid PreviewEnrollmentPlanDto dto){
+
+        MPJLambdaWrapper<EnrollmentPlan> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .disableSubLogicDel()
+                .select(EnrollmentPlan::getId)
+                .selectAs(DictionaryDetail::getName, PreviewEnrollmentPlanVo::getEnrollTypeCn)
+                .selectAs(BaseGrade::getName, PreviewEnrollmentPlanVo::getGradeIdCn)
+                .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")
+                .select(EnrollmentPlan.class,x -> VoToColumnUtil.fieldsToColumns(PreviewEnrollmentPlanVo.class).contains(x.getProperty()))
+                .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, EnrollmentPlan::getEnrollType)
+                .leftJoin(BaseGrade.class, BaseGrade::getId, EnrollmentPlan::getGradeId)
+                .eq(EnrollmentPlan::getId, dto.getEnrollmentPlanId())
+                .eq(EnrollmentPlan::getDeleteMark, DeleteMark.NODELETE)
+                .orderByDesc(EnrollmentPlan::getStartDate)
+        ;
+        PreviewEnrollmentPlanVo result = enrollmentPlanService.selectJoinOne(PreviewEnrollmentPlanVo.class, queryWrapper);
+
+        if(result == null){
+            return RT.ok(result);
+        }
+
+        MPJLambdaWrapper<EnrollmentPlanMajorSet> queryWrapperPreviewEnrollmentPlanList = new MPJLambdaWrapper<>();
+        queryWrapperPreviewEnrollmentPlanList
+                .selectAs(BaseMajorSet::getStudyYear, PreviewEnrollmentPlanListVo::getStudyYear)
+                .selectAs(BaseMajorSet::getName, PreviewEnrollmentPlanListVo::getBaseMajorSetIdCn)
+                .selectAs(EnrollmentPlanMajorSet::getBaseMajorSetEnrollmentNum, PreviewEnrollmentPlanListVo::getBaseMajorSetEnrollmentNum)
+                .select("t3.name as baseMajorGradationIdCn")
+                .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")
+                .leftJoin(BaseMajorSet.class, BaseMajorSet::getId, EnrollmentPlanMajorSet::getBaseMajorSetId)
+                .leftJoin(Department.class, Department::getId, BaseMajorSet::getDepartmentId)
+                .leftJoin("base_major_gradation t3 on t3.id = t1.major_gradation_id")
+                .eq(EnrollmentPlanMajorSet::getEnrollmentPlanId, dto.getEnrollmentPlanId())
+                .orderByDesc(BaseMajorSet::getMajorGradationId);
+        List<PreviewEnrollmentPlanListVo> previewEnrollmentPlanList = enrollmentPlanMajorSetService.selectJoinList(PreviewEnrollmentPlanListVo.class, queryWrapperPreviewEnrollmentPlanList);
+
+        result.setPreviewEnrollmentPlanListVoList(previewEnrollmentPlanList);
+        return RT.ok(result);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询招生计划维护信息")
+    @SaCheckPermission("enrollmentplan:detail")
+    public RT<EnrollmentPlanVo> info(@RequestParam Long id){
+        EnrollmentPlan enrollmentPlan = enrollmentPlanService.getById(id);
+        if (enrollmentPlan == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(enrollmentPlan, EnrollmentPlanVo.class));
+    }
+
+
+
+    @PostMapping
+    @ApiOperation(value = "新增招生计划维护")
+    @SaCheckPermission("enrollmentplan:add")
+    public RT<Boolean> add(@Valid @RequestBody AddEnrollmentPlanDto dto){
+        EnrollmentPlan enrollmentPlan = BeanUtil.toBean(dto, EnrollmentPlan.class);
+        enrollmentPlan.setCreateDate(new Date());
+        enrollmentPlan.setCreateUserId(StpUtil.getLoginIdAsLong());
+        enrollmentPlan.setStatus(0);
+        //获取sortCode的最大数量
+        QueryWrapper<EnrollmentPlan> queryWrapperSortcode = new QueryWrapper<>();
+        queryWrapperSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
+        EnrollmentPlan e = enrollmentPlanService.getOne(queryWrapperSortcode);
+        int sortCode = e.getSortCode() + 1;
+        enrollmentPlan.setSortCode(sortCode);
+        boolean isSuccess = enrollmentPlanService.save(enrollmentPlan);
+        return RT.ok(isSuccess);
+    }
+
+    @PutMapping("/change-status")
+    @ApiOperation(value = "修改招生计划状态")
+    @SaCheckPermission("enrollmentplan:edit")
+    public RT<Boolean> changeStatus(@Valid @RequestBody UpdateEnrollmentPlanDto dto){
+        EnrollmentPlan oldEnrollmentPlan = enrollmentPlanService.getById(dto.getId());
+        if(oldEnrollmentPlan == null){
+            throw new MyException("该招生计划已经失效!!!");
+        }
+
+        EnrollmentPlan enrollmentPlan = BeanUtil.toBean(dto, EnrollmentPlan.class);
+        return RT.ok(enrollmentPlanService.updateById(enrollmentPlan));
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改招生计划维护")
+    @SaCheckPermission("enrollmentplan:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateEnrollmentPlanDto dto){
+
+        EnrollmentPlan enrollmentPlan = BeanUtil.toBean(dto, EnrollmentPlan.class);
+        return RT.ok(enrollmentPlanService.updateById(enrollmentPlan));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除招生计划维护")
+    @SaCheckPermission("enrollmentplan:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(enrollmentPlanService.removeBatchByIds(ids));
+
+    }
+
+}

+ 114 - 0
src/main/java/com/xjrsoft/module/student/controller/EnrollmentPlanGraduateSchoolController.java

@@ -0,0 +1,114 @@
+package com.xjrsoft.module.student.controller;
+
+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.core.toolkit.Wrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.student.dto.AddEnrollmentPlanGraduateSchoolDto;
+import com.xjrsoft.module.student.dto.UpdateEnrollmentPlanGraduateSchoolDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.student.dto.EnrollmentPlanGraduateSchoolPageDto;
+import com.xjrsoft.module.student.entity.EnrollmentPlanGraduateSchool;
+import com.xjrsoft.module.student.mapper.EnrollmentPlanGraduateSchoolMapper;
+import com.xjrsoft.module.student.service.IEnrollmentPlanGraduateSchoolService;
+import com.xjrsoft.module.student.vo.EnrollmentPlanGraduateSchoolPageVo;
+
+import com.xjrsoft.module.student.vo.EnrollmentPlanGraduateSchoolVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/student" + "/enrollmentPlanGraduateSchool")
+@Api(value = "/student"  + "/enrollmentPlanGraduateSchool",tags = "毕业学校招生计划详情代码")
+@AllArgsConstructor
+public class EnrollmentPlanGraduateSchoolController {
+
+
+    private final IEnrollmentPlanGraduateSchoolService enrollmentPlanGraduateSchoolService;
+
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="毕业学校招生计划详情列表(分页)")
+    @SaCheckPermission("enrollmentplangraduateschool:detail")
+    public RT<PageOutput<EnrollmentPlanGraduateSchoolPageVo>> page(@Valid EnrollmentPlanGraduateSchoolPageDto dto){
+
+        MPJLambdaWrapper<EnrollmentPlanGraduateSchool> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .select(EnrollmentPlanGraduateSchool::getId)
+                .select("t1.name as baseGraduateSchoolIdCn")
+                .select(EnrollmentPlanGraduateSchool.class,x -> VoToColumnUtil.fieldsToColumns(EnrollmentPlanGraduateSchoolPageVo.class).contains(x.getProperty()))
+                .leftJoin("base_graduate_school t1 on t1.id = t.base_graduate_school_id")
+                .orderByDesc(EnrollmentPlanGraduateSchool::getCreateDate);
+        IPage<EnrollmentPlanGraduateSchoolPageVo> page = enrollmentPlanGraduateSchoolService.selectJoinListPage(ConventPage.getPage(dto), EnrollmentPlanGraduateSchoolPageVo.class, queryWrapper);
+        PageOutput<EnrollmentPlanGraduateSchoolPageVo> pageOutput = ConventPage.getPageOutput(page, EnrollmentPlanGraduateSchoolPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询毕业学校招生计划详情信息")
+    @SaCheckPermission("enrollmentplangraduateschool:detail")
+    public RT<EnrollmentPlanGraduateSchoolVo> info(@RequestParam Long id){
+        EnrollmentPlanGraduateSchool enrollmentPlanGraduateSchool = enrollmentPlanGraduateSchoolService.getById(id);
+        if (enrollmentPlanGraduateSchool == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(enrollmentPlanGraduateSchool, EnrollmentPlanGraduateSchoolVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增毕业学校招生计划详情")
+    @SaCheckPermission("enrollmentplangraduateschool:add")
+    public RT<Boolean> add(@Valid @RequestBody AddEnrollmentPlanGraduateSchoolDto dto){
+        EnrollmentPlanGraduateSchool enrollmentPlanGraduateSchool = BeanUtil.toBean(dto, EnrollmentPlanGraduateSchool.class);
+        boolean isSuccess = enrollmentPlanGraduateSchoolService.save(enrollmentPlanGraduateSchool);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改毕业学校招生计划详情")
+    @SaCheckPermission("enrollmentplangraduateschool:edit")
+    public RT<Boolean> update(@Valid @RequestBody List<UpdateEnrollmentPlanGraduateSchoolDto> dtos){
+
+        List<EnrollmentPlanGraduateSchool> enrollmentPlanGraduateSchools = new ArrayList<>();
+        for(UpdateEnrollmentPlanGraduateSchoolDto dto : dtos){
+            EnrollmentPlanGraduateSchool enrollmentPlanGraduateSchool = BeanUtil.toBean(dto, EnrollmentPlanGraduateSchool.class);
+            enrollmentPlanGraduateSchools.add(enrollmentPlanGraduateSchool);
+        }
+
+        return RT.ok(enrollmentPlanGraduateSchoolService.updateBatchById(enrollmentPlanGraduateSchools));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除毕业学校招生计划详情")
+    @SaCheckPermission("enrollmentplangraduateschool:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(enrollmentPlanGraduateSchoolService.removeBatchByIds(ids));
+
+    }
+
+}

+ 134 - 0
src/main/java/com/xjrsoft/module/student/controller/EnrollmentPlanMajorSetController.java

@@ -0,0 +1,134 @@
+package com.xjrsoft.module.student.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.base.entity.BaseMajorSet;
+import com.xjrsoft.module.organization.entity.Department;
+import com.xjrsoft.module.student.dto.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.student.entity.EnrollmentPlanGraduateSchool;
+import com.xjrsoft.module.student.entity.EnrollmentPlanMajorSet;
+import com.xjrsoft.module.student.service.IEnrollmentPlanGraduateSchoolService;
+import com.xjrsoft.module.student.service.IEnrollmentPlanMajorSetService;
+import com.xjrsoft.module.student.vo.BaseGraduateSchoolOfEnrollmentPlanListVo;
+import com.xjrsoft.module.student.vo.BaseMajorSetOfEnrollmentPlanPageVo;
+import com.xjrsoft.module.student.vo.EnrollmentPlanMajorSetPageVo;
+
+import com.xjrsoft.module.student.vo.EnrollmentPlanMajorSetVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/student" + "/enrollmentPlanMajorSet")
+@Api(value = "/student"  + "/enrollmentPlanMajorSet",tags = "专业方向招生计划详情代码")
+@AllArgsConstructor
+public class EnrollmentPlanMajorSetController {
+
+
+    private final IEnrollmentPlanMajorSetService enrollmentPlanMajorSetService;
+
+    @GetMapping(value = "/generated-relation-page")
+    @ApiOperation(value="已生成招生专业方向+毕业中学关系列表(分页)")
+    @SaCheckPermission("enrollmentplandetail:detail")
+    public RT<PageOutput<EnrollmentPlanMajorSetPageVo>> generatedRelationPage(@Valid EnrollmentPlanMajorSetPageDto dto){
+
+        MPJLambdaWrapper<EnrollmentPlanMajorSet> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .select(EnrollmentPlanMajorSet::getId)
+                .selectAs(BaseMajorSet::getStudyYear, EnrollmentPlanMajorSetPageVo::getStudyYear)
+                .selectAs(BaseMajorSet::getName, EnrollmentPlanMajorSetPageVo::getBaseMajorSetIdCn)
+                .select("t3.name as baseMajorGradationIdCn")
+                .selectAs(Department::getName, EnrollmentPlanMajorSetPageVo::getDepartmentIdCn)
+                .select("(select count(*) from enrollment_plan_graduate_school a where a.delete_mark = 0 and a.enrollment_plan_major_set_id = t.id) as graduateSchoolSum")
+                .select(EnrollmentPlanMajorSet.class,x -> VoToColumnUtil.fieldsToColumns(EnrollmentPlanMajorSetPageVo.class).contains(x.getProperty()))
+                .leftJoin(BaseMajorSet.class, BaseMajorSet::getId, EnrollmentPlanMajorSet::getBaseMajorSetId)
+                .leftJoin(Department.class, Department::getId, BaseMajorSet::getDepartmentId)
+                .leftJoin("base_major_gradation t3 on t3.id = t1.major_gradation_id")
+                .eq(dto.getEnrollmentPlanId() != null && dto.getEnrollmentPlanId() > 0, EnrollmentPlanMajorSet::getEnrollmentPlanId, dto.getEnrollmentPlanId())
+                .eq(dto.getDepartmentId() != null && dto.getDepartmentId() > 0, BaseMajorSet::getDepartmentId, dto.getDepartmentId())
+                .like(dto.getBaseMajorSetIdCn() != null && !dto.getBaseMajorSetIdCn().isEmpty(), BaseMajorSet::getName, dto.getBaseMajorSetIdCn())
+                .orderByDesc(EnrollmentPlanMajorSet::getCreateDate);
+        IPage<EnrollmentPlanMajorSetPageVo> page = enrollmentPlanMajorSetService.selectJoinListPage(ConventPage.getPage(dto), EnrollmentPlanMajorSetPageVo.class, queryWrapper);
+        PageOutput<EnrollmentPlanMajorSetPageVo> pageOutput = ConventPage.getPageOutput(page, EnrollmentPlanMajorSetPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/baseMajorSet-page")
+    @ApiOperation(value="专业分类(分页)")
+    @SaCheckPermission("enrollmentplandetail:detail")
+    public RT<PageOutput<BaseMajorSetOfEnrollmentPlanPageVo>> baseMajorSetOfEnrollmentPlan(@Valid BaseMajorSetOfEnrollmentPlanPageDto dto){
+        IPage<BaseMajorSetOfEnrollmentPlanPageVo> page = enrollmentPlanMajorSetService.baseMajorSetOfEnrollmentPlan(dto);
+        PageOutput<BaseMajorSetOfEnrollmentPlanPageVo> pageOutput = ConventPage.getPageOutput(page, BaseMajorSetOfEnrollmentPlanPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/baseGraduateSchool-list")
+    @ApiOperation(value="毕业学校")
+    @SaCheckPermission("enrollmentplandetail:detail")
+    public RT<List<BaseGraduateSchoolOfEnrollmentPlanListVo>> baseGraduateSchoolOfEnrollmentPlan(@Valid BaseGraduateSchoolOfEnrollmentPlanListDto dto){
+        List<BaseGraduateSchoolOfEnrollmentPlanListVo> result = enrollmentPlanMajorSetService.baseGraduateSchoolOfEnrollmentPlan(dto);
+        return RT.ok(result);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询专业方向招生计划详情信息")
+    @SaCheckPermission("enrollmentplanmajorset:detail")
+    public RT<EnrollmentPlanMajorSetVo> info(@RequestParam Long id){
+        EnrollmentPlanMajorSet enrollmentPlanMajorSet = enrollmentPlanMajorSetService.getById(id);
+        if (enrollmentPlanMajorSet == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(enrollmentPlanMajorSet, EnrollmentPlanMajorSetVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增专业方向招生计划详情")
+    @SaCheckPermission("enrollmentplanmajorset:add")
+    public RT<Boolean> add(@Valid @RequestBody AddEnrollmentPlanMajorSetDto dto){
+        boolean isSuccess = enrollmentPlanMajorSetService.add(dto);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改专业方向招生计划详情")
+    @SaCheckPermission("enrollmentplanmajorset:edit")
+    public RT<Boolean> update(@Valid @RequestBody List<UpdateEnrollmentPlanMajorSetDto> dtos){
+
+        List<EnrollmentPlanMajorSet> enrollmentPlanMajorSets = new ArrayList<>();
+        for (UpdateEnrollmentPlanMajorSetDto dto : dtos){
+            EnrollmentPlanMajorSet enrollmentPlanMajorSet = BeanUtil.toBean(dto, EnrollmentPlanMajorSet.class);
+            enrollmentPlanMajorSets.add(enrollmentPlanMajorSet);
+        }
+
+        return RT.ok(enrollmentPlanMajorSetService.updateBatchById(enrollmentPlanMajorSets));
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除专业方向招生计划详情")
+    @SaCheckPermission("enrollmentplanmajorset:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(enrollmentPlanMajorSetService.removeBatch(ids));
+    }
+
+}

+ 64 - 0
src/main/java/com/xjrsoft/module/student/dto/AddEnrollmentPlanDto.java

@@ -0,0 +1,64 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class AddEnrollmentPlanDto implements Serializable {
+
+
+    /**
+     * 序号
+     */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+     * 计划名称
+     */
+    @ApiModelProperty("计划名称")
+    private String name;
+    /**
+     * 招生类型(xjr_dictionary_detail[enroll_type])
+     */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollType;
+    /**
+     * 招生年级(base_grade)
+     */
+    @ApiModelProperty("招生年级(base_grade)")
+    private Long gradeId;
+    /**
+     * 开始时间
+     */
+    @ApiModelProperty("开始时间")
+    private LocalDate startDate;
+    /**
+     * 结束时间
+     */
+    @ApiModelProperty("结束时间")
+    private LocalDate endDate;
+    /**
+     * 状态(0:未发布 1:已发布 2:过期)
+     */
+    @ApiModelProperty("状态(0:未发布 1:已发布 2:过期)")
+    private Integer status;
+
+
+}

+ 48 - 0
src/main/java/com/xjrsoft/module/student/dto/AddEnrollmentPlanGraduateSchoolDto.java

@@ -0,0 +1,48 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class AddEnrollmentPlanGraduateSchoolDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 专业方向招生计划详情id(enrollment_plan_major_set)
+    */
+    @ApiModelProperty("专业方向招生计划详情id(enrollment_plan_major_set)")
+    private Long enrollmentPlanMajorSetId;
+    /**
+    * 毕业学校id(base_graduate_school)
+    */
+    @ApiModelProperty("毕业学校id(base_graduate_school)")
+    private List<Long> baseGraduateSchoolId;
+    /**
+    * 毕业学校计划招生人数
+    */
+    @ApiModelProperty("毕业学校计划招生人数")
+    private Integer enrollmentNum;
+
+}

+ 48 - 0
src/main/java/com/xjrsoft/module/student/dto/AddEnrollmentPlanMajorSetDto.java

@@ -0,0 +1,48 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class AddEnrollmentPlanMajorSetDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+     * 招生计划维护id(enrollment_plan)
+     */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId;
+    /**
+     * 专业方向id(base_major_set)
+     */
+    @ApiModelProperty("专业方向id(base_major_set)")
+    private List<Long> baseMajorSetIds;
+    /**
+     * 毕业学校idid(base_graduate_school)
+     */
+    @ApiModelProperty("毕业学校id(base_graduate_school)")
+    private List<Long> baseGraduateSchoolIds;
+
+}

+ 31 - 0
src/main/java/com/xjrsoft/module/student/dto/BaseGraduateSchoolOfEnrollmentPlanListDto.java

@@ -0,0 +1,31 @@
+package com.xjrsoft.module.student.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class BaseGraduateSchoolOfEnrollmentPlanListDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 招生计划维护id(enrollment_plan)
+     */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId = -1L;
+    /**
+     * 专业方向id
+     */
+    @ApiModelProperty("专业方向id")
+    private Long baseMajorSetId = -1L;
+}

+ 35 - 0
src/main/java/com/xjrsoft/module/student/dto/BaseMajorSetOfEnrollmentPlanPageDto.java

@@ -0,0 +1,35 @@
+package com.xjrsoft.module.student.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class BaseMajorSetOfEnrollmentPlanPageDto extends PageInput implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("专业方向名称")
+    private String name;
+
+    @ApiModelProperty("所属机构")
+    private Long departmentId;
+
+    @ApiModelProperty("专业分类")
+    private Long majorCategorId;
+
+    /**
+     * 招生计划维护id(enrollment_plan)
+     */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId = -1L;
+}

+ 30 - 0
src/main/java/com/xjrsoft/module/student/dto/EnrollmentPlanGraduateSchoolPageDto.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.student.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 毕业学校招生计划详情分页查询入参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EnrollmentPlanGraduateSchoolPageDto extends PageInput {
+
+    /**
+     * 专业方向招生计划详情id(enrollment_plan_major_set)
+     */
+    @ApiModelProperty("专业方向招生计划详情id(enrollment_plan_major_set)")
+    private Long enrollmentPlanMajorSetId;
+}

+ 39 - 0
src/main/java/com/xjrsoft/module/student/dto/EnrollmentPlanMajorSetPageDto.java

@@ -0,0 +1,39 @@
+package com.xjrsoft.module.student.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 专业方向招生计划详情分页查询入参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EnrollmentPlanMajorSetPageDto extends PageInput {
+    /**
+     * 招生计划维护id(enrollment_plan)
+     */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId;
+    /**
+     * 所属专业部
+     */
+    @ApiModelProperty("所属专业部")
+    private Long departmentId;
+    /**
+     * 招生专业方向名称
+     */
+    @ApiModelProperty("招生专业方向名称")
+    private String baseMajorSetIdCn;
+}

+ 36 - 0
src/main/java/com/xjrsoft/module/student/dto/EnrollmentPlanPageDto.java

@@ -0,0 +1,36 @@
+package com.xjrsoft.module.student.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 招生计划维护分页查询入参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EnrollmentPlanPageDto extends PageInput {
+
+    /**
+     * 计划名称
+     */
+    @ApiModelProperty("计划名称")
+    private String name;
+    /**
+     * 招生类型(xjr_dictionary_detail[enroll_type])
+     */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollType;
+
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/student/dto/PreviewEnrollmentPlanDto.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.student.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 招生计划维护分页查询入参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class PreviewEnrollmentPlanDto {
+
+    /**
+     * 招生计划维护id(enrollment_plan)
+     */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId = -1L;
+
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/student/dto/UpdateEnrollmentPlanDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class UpdateEnrollmentPlanDto extends AddEnrollmentPlanDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 38 - 0
src/main/java/com/xjrsoft/module/student/dto/UpdateEnrollmentPlanGraduateSchoolDto.java

@@ -0,0 +1,38 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class UpdateEnrollmentPlanGraduateSchoolDto{
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+     * 毕业学校计划招生人数
+     */
+    @ApiModelProperty("毕业学校计划招生人数")
+    private Integer enrollmentNum;
+
+}

+ 43 - 0
src/main/java/com/xjrsoft/module/student/dto/UpdateEnrollmentPlanMajorSetDto.java

@@ -0,0 +1,43 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class UpdateEnrollmentPlanMajorSetDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+
+    /**
+     * 专业方向计划招生人数
+     */
+    @ApiModelProperty("专业方向计划招生人数")
+    private Integer baseMajorSetEnrollmentNum;
+    /**
+     * 专业方向最大计划招生人数
+     */
+    @ApiModelProperty("专业方向最大计划招生人数")
+    private Integer baseMajorSetEnrollmentNumMax;
+}

+ 113 - 0
src/main/java/com/xjrsoft/module/student/entity/EnrollmentPlan.java

@@ -0,0 +1,113 @@
+package com.xjrsoft.module.student.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@TableName("enrollment_plan")
+@ApiModel(value = "enrollment_plan", description = "招生计划维护")
+public class EnrollmentPlan implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 计划名称
+    */
+    @ApiModelProperty("计划名称")
+    private String name;
+    /**
+    * 招生类型(xjr_dictionary_detail[enroll_type])
+    */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollType;
+    /**
+    * 招生年级(base_grade)
+    */
+    @ApiModelProperty("招生年级(base_grade)")
+    private Long gradeId;
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private Date startDate;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private Date endDate;
+    /**
+    * 状态(0:未发布 1:已发布 2:过期)
+    */
+    @ApiModelProperty("状态(0:未发布 1:已发布 2:过期)")
+    private Integer status;
+
+
+}

+ 97 - 0
src/main/java/com/xjrsoft/module/student/entity/EnrollmentPlanGraduateSchool.java

@@ -0,0 +1,97 @@
+package com.xjrsoft.module.student.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@TableName("enrollment_plan_graduate_school")
+@ApiModel(value = "enrollment_plan_graduate_school", description = "毕业学校招生计划详情")
+public class EnrollmentPlanGraduateSchool implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 专业方向招生计划详情id(enrollment_plan_major_set)
+    */
+    @ApiModelProperty("专业方向招生计划详情id(enrollment_plan_major_set)")
+    private Long enrollmentPlanMajorSetId;
+    /**
+    * 毕业学校id(base_graduate_school)
+    */
+    @ApiModelProperty("毕业学校id(base_graduate_school)")
+    private Long baseGraduateSchoolId;
+    /**
+    * 毕业学校计划招生人数
+    */
+    @ApiModelProperty("毕业学校计划招生人数")
+    private Integer enrollmentNum;
+
+}

+ 103 - 0
src/main/java/com/xjrsoft/module/student/entity/EnrollmentPlanMajorSet.java

@@ -0,0 +1,103 @@
+package com.xjrsoft.module.student.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+@TableName("enrollment_plan_major_set")
+@ApiModel(value = "enrollment_plan_major_set", description = "专业方向招生计划详情")
+public class EnrollmentPlanMajorSet implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 招生计划维护id(enrollment_plan)
+    */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId;
+    /**
+    * 专业方向id(base_major_set)
+    */
+    @ApiModelProperty("专业方向id(base_major_set)")
+    private Long baseMajorSetId;
+    /**
+    * 专业方向计划招生人数
+    */
+    @ApiModelProperty("专业方向计划招生人数")
+    private Integer baseMajorSetEnrollmentNum;
+    /**
+    * 专业方向最大计划招生人数
+    */
+    @ApiModelProperty("专业方向最大计划招生人数")
+    private Integer baseMajorSetEnrollmentNumMax;
+
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/student/mapper/EnrollmentPlanGraduateSchoolMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.student.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.student.entity.EnrollmentPlanGraduateSchool;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Mapper
+public interface EnrollmentPlanGraduateSchoolMapper extends MPJBaseMapper<EnrollmentPlanGraduateSchool> {
+
+}

+ 27 - 0
src/main/java/com/xjrsoft/module/student/mapper/EnrollmentPlanMajorSetMapper.java

@@ -0,0 +1,27 @@
+package com.xjrsoft.module.student.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.student.dto.BaseGraduateSchoolOfEnrollmentPlanListDto;
+import com.xjrsoft.module.student.entity.EnrollmentPlanMajorSet;
+import com.xjrsoft.module.student.dto.BaseMajorSetOfEnrollmentPlanPageDto;
+import com.xjrsoft.module.student.vo.BaseGraduateSchoolOfEnrollmentPlanListVo;
+import com.xjrsoft.module.student.vo.BaseMajorSetOfEnrollmentPlanPageVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Mapper
+public interface EnrollmentPlanMajorSetMapper extends MPJBaseMapper<EnrollmentPlanMajorSet> {
+    IPage<BaseMajorSetOfEnrollmentPlanPageVo> baseMajorSetOfEnrollmentPlan(IPage<BaseMajorSetOfEnrollmentPlanPageDto> page, BaseMajorSetOfEnrollmentPlanPageDto dto);
+
+
+    List<BaseGraduateSchoolOfEnrollmentPlanListVo> baseGraduateSchoolOfEnrollmentPlan(@Param("dto") BaseGraduateSchoolOfEnrollmentPlanListDto dto);
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/student/mapper/EnrollmentPlanMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.student.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.student.entity.EnrollmentPlan;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Mapper
+public interface EnrollmentPlanMapper extends MPJBaseMapper<EnrollmentPlan> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/student/service/IEnrollmentPlanGraduateSchoolService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.student.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.student.entity.EnrollmentPlanGraduateSchool;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+
+public interface IEnrollmentPlanGraduateSchoolService extends MPJBaseService<EnrollmentPlanGraduateSchool> {
+}

+ 29 - 0
src/main/java/com/xjrsoft/module/student/service/IEnrollmentPlanMajorSetService.java

@@ -0,0 +1,29 @@
+package com.xjrsoft.module.student.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.student.dto.AddEnrollmentPlanMajorSetDto;
+import com.xjrsoft.module.student.dto.BaseGraduateSchoolOfEnrollmentPlanListDto;
+import com.xjrsoft.module.student.entity.EnrollmentPlanMajorSet;
+import com.xjrsoft.module.student.dto.BaseMajorSetOfEnrollmentPlanPageDto;
+import com.xjrsoft.module.student.vo.BaseGraduateSchoolOfEnrollmentPlanListVo;
+import com.xjrsoft.module.student.vo.BaseMajorSetOfEnrollmentPlanPageVo;
+
+import java.util.List;
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+
+public interface IEnrollmentPlanMajorSetService extends MPJBaseService<EnrollmentPlanMajorSet> {
+    IPage<BaseMajorSetOfEnrollmentPlanPageVo> baseMajorSetOfEnrollmentPlan(BaseMajorSetOfEnrollmentPlanPageDto dto);
+
+    List<BaseGraduateSchoolOfEnrollmentPlanListVo> baseGraduateSchoolOfEnrollmentPlan(BaseGraduateSchoolOfEnrollmentPlanListDto dto);
+
+    Boolean add(AddEnrollmentPlanMajorSetDto dto);
+
+    Boolean removeBatch(List<Long> ids);
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/student/service/IEnrollmentPlanService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.student.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.student.entity.EnrollmentPlan;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+
+public interface IEnrollmentPlanService extends MPJBaseService<EnrollmentPlan> {
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/student/service/impl/EnrollmentPlanGraduateSchoolServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.student.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.student.entity.EnrollmentPlanGraduateSchool;
+import com.xjrsoft.module.student.mapper.EnrollmentPlanGraduateSchoolMapper;
+import com.xjrsoft.module.student.service.IEnrollmentPlanGraduateSchoolService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 毕业学校招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class EnrollmentPlanGraduateSchoolServiceImpl extends MPJBaseServiceImpl<EnrollmentPlanGraduateSchoolMapper, EnrollmentPlanGraduateSchool> implements IEnrollmentPlanGraduateSchoolService {
+}

+ 130 - 0
src/main/java/com/xjrsoft/module/student/service/impl/EnrollmentPlanMajorSetServiceImpl.java

@@ -0,0 +1,130 @@
+package com.xjrsoft.module.student.service.impl;
+
+import cn.dev33.satoken.stp.StpUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.module.student.dto.AddEnrollmentPlanMajorSetDto;
+import com.xjrsoft.module.student.dto.BaseGraduateSchoolOfEnrollmentPlanListDto;
+import com.xjrsoft.module.student.entity.EnrollmentPlanGraduateSchool;
+import com.xjrsoft.module.student.entity.EnrollmentPlanMajorSet;
+import com.xjrsoft.module.student.mapper.EnrollmentPlanGraduateSchoolMapper;
+import com.xjrsoft.module.student.mapper.EnrollmentPlanMajorSetMapper;
+import com.xjrsoft.module.student.service.IEnrollmentPlanMajorSetService;
+import com.xjrsoft.module.student.dto.BaseMajorSetOfEnrollmentPlanPageDto;
+import com.xjrsoft.module.student.vo.BaseGraduateSchoolOfEnrollmentPlanListVo;
+import com.xjrsoft.module.student.vo.BaseMajorSetOfEnrollmentPlanPageVo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+* @title: 专业方向招生计划详情
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class EnrollmentPlanMajorSetServiceImpl extends MPJBaseServiceImpl<EnrollmentPlanMajorSetMapper, EnrollmentPlanMajorSet> implements IEnrollmentPlanMajorSetService {
+
+    private EnrollmentPlanMajorSetMapper enrollmentPlanMajorSetMapper;
+
+    private EnrollmentPlanGraduateSchoolMapper enrollmentPlanGraduateSchoolMapper;
+
+    @Override
+    public IPage<BaseMajorSetOfEnrollmentPlanPageVo> baseMajorSetOfEnrollmentPlan(BaseMajorSetOfEnrollmentPlanPageDto dto) {
+        return enrollmentPlanMajorSetMapper.baseMajorSetOfEnrollmentPlan(ConventPage.getPage(dto),dto);
+    }
+
+    @Override
+    public List<BaseGraduateSchoolOfEnrollmentPlanListVo> baseGraduateSchoolOfEnrollmentPlan(BaseGraduateSchoolOfEnrollmentPlanListDto dto) {
+        return enrollmentPlanMajorSetMapper.baseGraduateSchoolOfEnrollmentPlan(dto);
+    }
+
+    @Override
+    @Transactional
+    public Boolean add(AddEnrollmentPlanMajorSetDto dto) {
+        boolean isSuccess = false;
+        //删除该招生计划下所有的专业方向招生详情和学校招生详情
+        MPJLambdaWrapper<EnrollmentPlanGraduateSchool> enrollmentPlanGraduateSchoolDelete = new MPJLambdaWrapper<>();
+        enrollmentPlanGraduateSchoolDelete
+                .selectAs(EnrollmentPlanGraduateSchool::getId, EnrollmentPlanGraduateSchool::getId)
+                .leftJoin(EnrollmentPlanMajorSet.class, EnrollmentPlanMajorSet::getId, EnrollmentPlanGraduateSchool::getEnrollmentPlanMajorSetId)
+                .eq(EnrollmentPlanMajorSet::getEnrollmentPlanId, dto.getEnrollmentPlanId())
+        ;
+
+        List<EnrollmentPlanGraduateSchool> enrollmentPlanGraduateSchoolDeleteList = enrollmentPlanGraduateSchoolMapper.selectJoinList(EnrollmentPlanGraduateSchool.class, enrollmentPlanGraduateSchoolDelete);
+        List<Long> idList = enrollmentPlanGraduateSchoolDeleteList.stream()
+                .map(EnrollmentPlanGraduateSchool::getId) // 获取对象的主键id
+                .collect(Collectors.toList()); // 将主键id收集到新的List中
+        if(!idList.isEmpty()){
+            enrollmentPlanGraduateSchoolMapper.deleteBatchIds(idList);
+        }
+
+        LambdaQueryWrapper<EnrollmentPlanMajorSet> enrollmentPlanMajorSetDelete = new LambdaQueryWrapper<>();
+        enrollmentPlanMajorSetDelete
+                .eq(EnrollmentPlanMajorSet::getEnrollmentPlanId, dto.getEnrollmentPlanId())
+        ;
+
+        this.remove(enrollmentPlanMajorSetDelete);
+
+        //获取sortCode的最大数量
+        QueryWrapper<EnrollmentPlanMajorSet> enrollmentPlanMajorSetSortcode = new QueryWrapper<>();
+        enrollmentPlanMajorSetSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
+        EnrollmentPlanMajorSet enrollmentPlanMajorSet = this.getOne(enrollmentPlanMajorSetSortcode);
+        int epmsSortCode = enrollmentPlanMajorSet.getSortCode() + 1;
+
+        QueryWrapper<EnrollmentPlanGraduateSchool> enrollmentPlanGraduateSchoolSortcode = new QueryWrapper<>();
+        enrollmentPlanGraduateSchoolSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
+        EnrollmentPlanGraduateSchool enrollmentPlanGraduateSchool = enrollmentPlanGraduateSchoolMapper.selectOne(enrollmentPlanGraduateSchoolSortcode);
+        int epgsSortCode = enrollmentPlanGraduateSchool.getSortCode() + 1;
+
+
+        for (Long baseMajorSetId : dto.getBaseMajorSetIds()){
+            EnrollmentPlanMajorSet newEnrollmentPlanMajorSet = new EnrollmentPlanMajorSet();
+            newEnrollmentPlanMajorSet.setEnrollmentPlanId(dto.getEnrollmentPlanId());
+            newEnrollmentPlanMajorSet.setBaseMajorSetId(baseMajorSetId);
+            newEnrollmentPlanMajorSet.setCreateDate(new Date());
+            newEnrollmentPlanMajorSet.setCreateUserId(StpUtil.getLoginIdAsLong());
+            newEnrollmentPlanMajorSet.setSortCode(epmsSortCode++);
+
+            isSuccess = this.save(newEnrollmentPlanMajorSet);
+            for (Long baseGraduateSchoolId : dto.getBaseGraduateSchoolIds()){
+                int finalEpgsSortCode = epgsSortCode;
+                isSuccess = enrollmentPlanGraduateSchoolMapper.insert(new EnrollmentPlanGraduateSchool() {{
+                    setEnrollmentPlanMajorSetId(newEnrollmentPlanMajorSet.getId());
+                    setBaseGraduateSchoolId(baseGraduateSchoolId);
+                    setCreateDate(new Date());
+                    setCreateUserId(StpUtil.getLoginIdAsLong());
+                    setSortCode(finalEpgsSortCode);
+                }}) > 0;
+                epgsSortCode += 1;
+            }
+        }
+
+        return isSuccess;
+    }
+
+    @Override
+    @Transactional
+    public Boolean removeBatch(List<Long> ids) {
+
+        LambdaUpdateWrapper<EnrollmentPlanGraduateSchool> enrollmentPlanGraduateSchoolLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+        enrollmentPlanGraduateSchoolLambdaUpdateWrapper
+                .in(EnrollmentPlanGraduateSchool::getEnrollmentPlanMajorSetId, ids)
+        ;
+        enrollmentPlanGraduateSchoolMapper.delete(enrollmentPlanGraduateSchoolLambdaUpdateWrapper);
+
+        return this.removeBatchByIds(ids);
+    }
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/student/service/impl/EnrollmentPlanServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.student.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.student.entity.EnrollmentPlan;
+import com.xjrsoft.module.student.mapper.EnrollmentPlanMapper;
+import com.xjrsoft.module.student.service.IEnrollmentPlanService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 招生计划维护
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class EnrollmentPlanServiceImpl extends MPJBaseServiceImpl<EnrollmentPlanMapper, EnrollmentPlan> implements IEnrollmentPlanService {
+}

+ 30 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseGraduateSchoolOfEnrollmentPlanListVo.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 专业方向,招生计划维护分页列表出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class BaseGraduateSchoolOfEnrollmentPlanListVo {
+
+    /**
+    * 毕业学校主键编号
+    */
+    @ApiModelProperty("毕业学校主键编号")
+    private String id;
+
+    /**
+    * 毕业学校
+    */
+    @ApiModelProperty("毕业学校")
+    private String name;
+
+    @ApiModelProperty("是否在当前招生计划被选中")
+    private Integer isSelect;
+
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseMajorSetOfEnrollmentPlanPageVo.java

@@ -0,0 +1,49 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 专业方向,招生计划维护分页列表出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class BaseMajorSetOfEnrollmentPlanPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("专业方向主键编号")
+    private String id;
+    /**
+    * 专业方向
+    */
+    @ApiModelProperty("专业方向")
+    private String baseMajorSetCn;
+    /**
+     * 所属校区
+     */
+    @ApiModelProperty("所属校区")
+    private String homeCampus;
+    /**
+     * 所属专业部
+     */
+    @ApiModelProperty("所属专业部")
+    private Long departmentId;
+    /**
+     * 所属专业部
+     */
+    @ApiModelProperty("所属专业部")
+    private String departmentIdCn;
+    /**
+    * 办学层次
+    */
+    @ApiModelProperty("办学层次")
+    private String majorGradationIdCn;
+
+    @ApiModelProperty("是否在当前招生计划被选中")
+    private Integer isSelect;
+
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanGraduateSchoolPageVo.java

@@ -0,0 +1,49 @@
+package com.xjrsoft.module.student.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 毕业学校招生计划详情分页列表出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class EnrollmentPlanGraduateSchoolPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 专业方向招生计划详情id(enrollment_plan_major_set)
+    */
+    @ApiModelProperty("专业方向招生计划详情id(enrollment_plan_major_set)")
+    private Long enrollmentPlanMajorSetId;
+    /**
+    * 毕业学校id(base_graduate_school)
+    */
+    @ApiModelProperty("毕业学校id(base_graduate_school)")
+    private Long baseGraduateSchoolId;
+    /**
+     * 毕业学校id(base_graduate_school)
+     */
+    @ApiModelProperty("毕业学校id(base_graduate_school)")
+    private String baseGraduateSchoolIdCn;
+    /**
+    * 毕业学校计划招生人数
+    */
+    @ApiModelProperty("毕业学校计划招生人数")
+    private Integer enrollmentNum;
+
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanGraduateSchoolVo.java

@@ -0,0 +1,49 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 毕业学校招生计划详情表单出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class EnrollmentPlanGraduateSchoolVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 专业方向招生计划详情id(enrollment_plan_major_set)
+    */
+    @ApiModelProperty("专业方向招生计划详情id(enrollment_plan_major_set)")
+    private Long enrollmentPlanMajorSetId;
+    /**
+    * 毕业学校id(base_graduate_school)
+    */
+    @ApiModelProperty("毕业学校id(base_graduate_school)")
+    private Long baseGraduateSchoolId;
+    /**
+    * 毕业学校计划招生人数
+    */
+    @ApiModelProperty("毕业学校计划招生人数")
+    private Integer enrollmentNum;
+
+
+
+}

+ 76 - 0
src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanMajorSetPageVo.java

@@ -0,0 +1,76 @@
+package com.xjrsoft.module.student.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 专业方向招生计划详情分页列表出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class EnrollmentPlanMajorSetPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 招生计划维护id(enrollment_plan)
+    */
+//    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+//    private Long enrollmentPlanId;
+    /**
+    * 专业方向id(base_major_set)
+    */
+//    @ApiModelProperty("专业方向id(base_major_set)")
+//    private Long baseMajorSetId;
+    /**
+    * 专业方向计划招生人数
+    */
+    @ApiModelProperty("专业方向计划招生人数")
+    private Integer baseMajorSetEnrollmentNum;
+    /**
+    * 专业方向最大计划招生人数
+    */
+    @ApiModelProperty("专业方向最大计划招生人数")
+    private Integer baseMajorSetEnrollmentNumMax;
+
+    /**
+     * 招生毕业中学数
+     */
+    @ApiModelProperty("招生毕业中学数")
+    private Integer graduateSchoolSum;
+
+    /**
+     * 适用学制(base_major)
+     */
+    @ApiModelProperty("适用学制(base_major)")
+    private Double studyYear;
+
+    /**
+     * 招生专业方向名称
+     */
+    @ApiModelProperty("招生专业方向名称")
+    private String baseMajorSetIdCn;
+    /**
+     * 层次
+     */
+    @ApiModelProperty("层次")
+    private String baseMajorGradationIdCn;
+    /**
+     * 所属专业部
+     */
+    @ApiModelProperty("所属专业部")
+    private String departmentIdCn;
+}

+ 54 - 0
src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanMajorSetVo.java

@@ -0,0 +1,54 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 专业方向招生计划详情表单出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class EnrollmentPlanMajorSetVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 招生计划维护id(enrollment_plan)
+    */
+    @ApiModelProperty("招生计划维护id(enrollment_plan)")
+    private Long enrollmentPlanId;
+    /**
+    * 专业方向id(base_major_set)
+    */
+    @ApiModelProperty("专业方向id(base_major_set)")
+    private Long baseMajorSetId;
+    /**
+    * 专业方向计划招生人数
+    */
+    @ApiModelProperty("专业方向计划招生人数")
+    private Integer baseMajorSetEnrollmentNum;
+    /**
+    * 专业方向最大计划招生人数
+    */
+    @ApiModelProperty("专业方向最大计划招生人数")
+    private Integer baseMajorSetEnrollmentNumMax;
+
+
+
+}

+ 87 - 0
src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanPageVo.java

@@ -0,0 +1,87 @@
+package com.xjrsoft.module.student.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 招生计划维护分页列表出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class EnrollmentPlanPageVo {
+
+
+    /**
+     * 主键编号
+     */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+     * 序号
+     */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+     * 计划名称
+     */
+    @ApiModelProperty("计划名称")
+    private String name;
+    /**
+     * 招生类型(xjr_dictionary_detail[enroll_type])
+     */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollType;
+    /**
+     * 招生类型(xjr_dictionary_detail[enroll_type])
+     */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollTypeCn;
+    /**
+     * 招生年级(base_grade)
+     */
+    @ApiModelProperty("招生年级(base_grade)")
+    private Long gradeId;
+    /**
+     * 招生年级(base_grade)
+     */
+    @ApiModelProperty("招生年级(base_grade)")
+    private String gradeIdCn;
+    /**
+     * 开始时间
+     */
+    @ApiModelProperty("开始时间")
+    private LocalDate startDate;
+    /**
+     * 结束时间
+     */
+    @ApiModelProperty("结束时间")
+    private LocalDate endDate;
+    /**
+     * 状态(0:未发布 1:已发布 2:过期)
+     */
+    @ApiModelProperty("状态(0:未发布 1:已发布 2:过期)")
+    private Integer status;
+
+    /**
+     * 总的招生专业方向个数
+     */
+    @ApiModelProperty("总的招生专业方向个数")
+    private Integer baseMajorSetSum;
+    /**
+     * 总计划招生人数
+     */
+    @ApiModelProperty("总计划招生人数")
+    private Integer enrollmentStuNum;
+}

+ 64 - 0
src/main/java/com/xjrsoft/module/student/vo/EnrollmentPlanVo.java

@@ -0,0 +1,64 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 招生计划维护表单出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class EnrollmentPlanVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 计划名称
+    */
+    @ApiModelProperty("计划名称")
+    private String name;
+    /**
+    * 招生类型(xjr_dictionary_detail[enroll_type])
+    */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollType;
+    /**
+    * 招生年级(base_grade)
+    */
+    @ApiModelProperty("招生年级(base_grade)")
+    private Long gradeId;
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private Date startDate;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private Date endDate;
+    /**
+    * 状态(0:未发布 1:已发布 2:过期)
+    */
+    @ApiModelProperty("状态(0:未发布 1:已发布 2:过期)")
+    private Integer status;
+
+
+
+}

+ 41 - 0
src/main/java/com/xjrsoft/module/student/vo/PreviewEnrollmentPlanListVo.java

@@ -0,0 +1,41 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+* @title: 招生计划维护表单出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class PreviewEnrollmentPlanListVo {
+    /**
+     * 层次
+     */
+    @ApiModelProperty("层次")
+    private String baseMajorGradationIdCn;
+    /**
+     * 招生专业方向名称
+     */
+    @ApiModelProperty("招生专业方向名称")
+    private String baseMajorSetIdCn;
+    /**
+     * 适用学制(base_major)
+     */
+    @ApiModelProperty("适用学制(base_major)")
+    private Double studyYear;
+    /**
+     * 专业方向计划招生人数
+     */
+    @ApiModelProperty("专业方向计划招生人数")
+    private Integer baseMajorSetEnrollmentNum;
+    /**
+     * 招生毕业中学
+     */
+    @ApiModelProperty("招生毕业中学")
+    private String graduateSchool;
+}

+ 60 - 0
src/main/java/com/xjrsoft/module/student/vo/PreviewEnrollmentPlanVo.java

@@ -0,0 +1,60 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+
+/**
+* @title: 招生计划维护表单出参
+* @Author phoenix
+* @Date: 2024-06-13
+* @Version 1.0
+*/
+@Data
+public class PreviewEnrollmentPlanVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 计划名称
+    */
+    @ApiModelProperty("计划名称")
+    private String name;
+    /**
+     * 招生类型(xjr_dictionary_detail[enroll_type])
+     */
+    @ApiModelProperty("招生类型(xjr_dictionary_detail[enroll_type])")
+    private String enrollTypeCn;
+    /**
+     * 招生年级(base_grade)
+     */
+    @ApiModelProperty("招生年级(base_grade)")
+    private String gradeIdCn;
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private LocalDate startDate;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private LocalDate endDate;
+    /**
+     * 总计划招生人数
+     */
+    @ApiModelProperty("总计划招生人数")
+    private Integer enrollmentStuNum;
+    /**
+     * 计划列表
+     */
+    @ApiModelProperty("计划列表")
+    private List<PreviewEnrollmentPlanListVo> previewEnrollmentPlanListVoList;
+
+}

+ 3 - 1
src/main/java/com/xjrsoft/module/textbook/controller/WfTextbookSubscriptionController.java

@@ -228,7 +228,7 @@ public class WfTextbookSubscriptionController {
 
     }
 
-    @GetMapping("/export")
+    @GetMapping("/subscription-export-query")
     @ApiOperation(value = "导出")
     public ResponseEntity<byte[]> exportData(@Valid WfTextbookSubscriptionPageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
         List<WfTextbookSubscriptionPageVo> customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput<WfTextbookSubscriptionPageVo>) page(dto).getData()).getList();
@@ -238,6 +238,8 @@ public class WfTextbookSubscriptionController {
         return RT.fileStream(bot.toByteArray(), "WfTextbookSubscription" + ExcelTypeEnum.XLSX.getValue());
     }
 
+
+
     @PostMapping("/textbook-subscription-export-query")
     @ApiOperation(value = "教材征订条件导出")
     public ResponseEntity<byte[]> textbookSubscriptionExportQuery(@Valid @RequestBody TextbookSubscriptionExportQueryListDto dto) {

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/service/impl/WfTextbookClaimServiceImpl.java

@@ -320,7 +320,7 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
                 setUserType(2);
             }});
             //申领类型是学生申领,学生代表可领取
-            if (wfTextbookClaim.getClaimType().equals(ClaimTypeEnum.ClaimStudent.getCode())) {
+            if (wfTextbookClaim.getClaimType().equals(ClaimTypeEnum.ClaimStudent.getCode()) && !Objects.equals(wfTextbookClaim.getApplicantUserId(), wfTextbookClaim.getStudentUserId())) {
                 textbookClaimUserList.add(new TextbookClaimUser() {{
                     setCreateDate(new Date());
                     setWfTextbookClaimId(wfTextbookClaim.getId());

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/vo/TextbookSubscriptionExportQueryListVo.java

@@ -42,7 +42,7 @@ public class TextbookSubscriptionExportQueryListVo {
      * 教材类型(xjr_dictionary_item[textbook_type])
      */
     @ContentStyle(dataFormat = 49)
-    @ExcelProperty("出版社")
+    @ExcelProperty("教材类型")
     @ApiModelProperty("教材类型")
     private String textbookTypeCn;
     /**

+ 59 - 0
src/main/resources/mapper/student/EnrollmentPlanMajorSetMapper.xml

@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.student.mapper.EnrollmentPlanMajorSetMapper">
+    <select id="baseMajorSetOfEnrollmentPlan" parameterType="com.xjrsoft.module.student.dto.BaseMajorSetOfEnrollmentPlanPageDto"
+            resultType="com.xjrsoft.module.student.vo.BaseMajorSetOfEnrollmentPlanPageVo">
+        select
+        t.id,
+        t.name as baseMajorSetCn,
+        t.department_id as departmentId,
+        t3.name as majorGradationIdCn,
+        t4.name as departmentIdCn,
+        (SELECT
+             COUNT(*)
+         FROM enrollment_plan_major_set a
+         WHERE  a.base_major_set_id = t.id
+           and a.delete_mark = 0
+        <if test="dto.enrollmentPlanId != null">
+            and a.enrollment_plan_id = #{dto.enrollmentPlanId}
+        </if>
+         ) as isSelect
+        from base_major_set t
+        left join base_major_gradation t3 on t3.id = t.major_gradation_id
+        left join xjr_department t4 on t4.id = t.department_id
+        where t.delete_mark = 0
+        <if test="dto.name != null and dto.name != ''">
+            and t.name like concat('%', #{dto.name}, '%')
+        </if>
+        <if test="dto.departmentId != null and dto.departmentId > 0">
+            and t.department_id = #{dto.departmentId}
+        </if>
+        <if test="dto.majorCategorId != null and dto.majorCategorId > 0">
+            and t.major_categor_id = #{dto.majorCategorId}
+        </if>
+    </select>
+
+    <select id="baseGraduateSchoolOfEnrollmentPlan" parameterType="com.xjrsoft.module.student.dto.BaseGraduateSchoolOfEnrollmentPlanListDto"
+            resultType="com.xjrsoft.module.student.vo.BaseGraduateSchoolOfEnrollmentPlanListVo">
+        select
+        t.id,
+        t.name,
+        (SELECT
+        COUNT(*)
+        FROM enrollment_plan_graduate_school a
+        left join enrollment_plan_major_set b on b.id = a.enrollment_plan_major_set_id
+        WHERE  a.base_graduate_school_id = t.id
+        and a.delete_mark = 0
+        <if test="dto.enrollmentPlanId != null">
+            and b.enrollment_plan_id = #{dto.enrollmentPlanId}
+        </if>
+        <if test="dto.baseMajorSetId != null">
+            and b.base_major_set_id = #{dto.baseMajorSetId}
+        </if>
+        ) as isSelect
+        from base_graduate_school t
+        where t.delete_mark = 0
+    </select>
+</mapper>

+ 9 - 20
src/main/resources/mapper/textbook/TextbookMapper.xml

@@ -55,36 +55,25 @@
     <select id="subscriptionList" resultType="com.xjrsoft.module.textbook.vo.TextbookSubscriptionRecordVo">
         SELECT t2.create_date,
                t4.name AS applicant_user,
-               t3.issn,
-               t3.book_name,
-               t3.publishing_house,
-               t3.editor_in_chief,
-               t3.appraisal_price,
+               t8.issn,
+               t8.book_name,
+               t8.publishing_house,
+               t8.editor_in_chief,
+               t8.appraisal_price,
                t5.name AS is_textbook_plan_cn,
                t6.name AS course_name,
                t3.student_subscription_number,
                t3.teacher_subscription_number,
                t3.teacher_reference_number,
-               t7.name AS is_support_resources_cn,
-               t3.version,
-               t3.class_ids,
-               t3.student_subscription_number,
-               t3.teacher_subscription_number,
-               t3.teacher_reference_number,
-               t9.name as gradeName,
-               t10.group_name as subjectGroupIdCN
+               t3.class_ids
         FROM textbook_subscription_record t1
                  LEFT JOIN wf_textbook_subscription t2 ON t1.wf_textbook_subscription_id = t2.id
                  LEFT JOIN wf_textbook_subscription_item t3 ON t3.id = t1.wf_textbook_subscription_item_id
                  LEFT JOIN xjr_user t4 ON t2.applicant_user_id = t4.id
-                 LEFT JOIN xjr_dictionary_detail t5
-                           ON t3.is_textbook_plan = t5.code AND t5.item_id = 1737360269850038273
-                 LEFT JOIN base_course_subject t6 ON t3.course_subject_id = t6.id
-                 LEFT JOIN xjr_dictionary_detail t7
-                           ON t3.is_support_resources = t7.code AND t7.item_id = 1737360269850038273
                  LEFT JOIN textbook t8 ON t8.id = t1.textbook_id
-                 LEFT JOIN base_grade t9 ON t9.id = t8.grade_id
-                 LEFT JOIN subject_group t10 ON t10.id = t2.subject_group_id
+                 LEFT JOIN xjr_dictionary_detail t5
+                           ON t8.is_textbook_plan = t5.code AND t5.item_id = 1737360269850038273
+                 LEFT JOIN base_course_subject t6 ON t8.course_subject_id = t6.id
         WHERE t1.delete_mark = 0
           AND t1.textbook_id = #{id}
     </select>

+ 52 - 0
src/main/resources/sqlScript/20240613_sql.sql

@@ -0,0 +1,52 @@
+-- ----------------------------
+-- 专业方向招生计划详情
+-- ----------------------------
+DROP TABLE IF EXISTS enrollment_plan_major_set;
+create table if not exists enrollment_plan_major_set
+(
+    id                                bigint   not null comment '主键编号',
+    create_user_id                    bigint   null comment '创建人',
+    create_date                       datetime null comment '创建时间',
+    modify_user_id                    bigint   null comment '修改人',
+    modify_date                       datetime null comment '修改时间',
+    delete_mark                       int      not null comment '删除标记',
+    enabled_mark                      int      not null comment '有效标志',
+    sort_code                         int      null comment '序号',
+    enrollment_plan_id                bigint   not null comment '招生计划维护id(enrollment_plan)',
+    base_major_set_id                 bigint   not null comment '专业方向id(base_major_set)',
+    base_major_set_enrollment_num     int default 0 comment '专业方向计划招生人数',
+    base_major_set_enrollment_num_max int default 0 comment '专业方向最大计划招生人数',
+    PRIMARY KEY (`id`)
+) ENGINE = INNODB
+  DEFAULT CHARSET = utf8mb4
+  COLLATE = utf8mb4_0900_ai_ci COMMENT '专业方向招生计划详情';
+-- ----------------------------
+-- 毕业学校招生计划详情
+-- ----------------------------
+DROP TABLE IF EXISTS enrollment_plan_graduate_school;
+create table if not exists enrollment_plan_graduate_school
+(
+    id                           bigint   not null comment '主键编号',
+    create_user_id               bigint   null comment '创建人',
+    create_date                  datetime null comment '创建时间',
+    modify_user_id               bigint   null comment '修改人',
+    modify_date                  datetime null comment '修改时间',
+    delete_mark                  int      not null comment '删除标记',
+    enabled_mark                 int      not null comment '有效标志',
+    sort_code                    int      null comment '序号',
+    enrollment_plan_major_set_id bigint   not null comment '专业方向招生计划详情id(enrollment_plan_major_set)',
+    base_graduate_school_id      bigint   not null comment '毕业学校id(base_graduate_school)',
+    enrollment_num               int default 0 comment '毕业学校计划招生人数',
+    PRIMARY KEY (`id`)
+) ENGINE = INNODB
+  DEFAULT CHARSET = utf8mb4
+  COLLATE = utf8mb4_0900_ai_ci COMMENT '毕业学校招生计划详情';
+
+alter table enrollment_plan
+    modify name varchar(128) null comment '计划名称';
+alter table enrollment_plan
+    modify start_date date null comment '开始时间';
+alter table enrollment_plan
+    modify end_date date null comment '结束时间';
+
+ALTER TABLE enrollment_plan_graduate_school ADD INDEX index_enrollment_plan_major_set_id (enrollment_plan_major_set_id);

+ 73 - 0
src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

@@ -3213,5 +3213,78 @@ public class FreeMarkerGeneratorTest {
 
         apiGeneratorService.generateCodes(params);
     }
+    @Test
+    public void gcEnrollmentPlan() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("enrollment_plan");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("phoenix");//作者名称
+        params.setPackageName("student");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
 
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcEnrollmentPlanMajorSet() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("enrollment_plan_major_set");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("phoenix");//作者名称
+        params.setPackageName("student");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcEnrollmentPlanGraduateSchool() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("enrollment_plan_graduate_school");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("phoenix");//作者名称
+        params.setPackageName("student");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
 }