Browse Source

招生计划预览

大数据与最优化研究所 9 months ago
parent
commit
1176a1f298

+ 51 - 2
src/main/java/com/xjrsoft/module/student/controller/EnrollmentPlanController.java

@@ -18,16 +18,20 @@ 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.EnrollmentPlanPageVo;
+import com.xjrsoft.module.student.vo.*;
 
-import com.xjrsoft.module.student.vo.EnrollmentPlanVo;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -54,6 +58,8 @@ public class EnrollmentPlanController {
 
     private final IEnrollmentPlanService enrollmentPlanService;
 
+    private final IEnrollmentPlanMajorSetService enrollmentPlanMajorSetService;
+
     @GetMapping(value = "/page")
     @ApiOperation(value="招生计划维护列表(分页)")
     @SaCheckPermission("enrollmentplan:detail")
@@ -80,6 +86,49 @@ public class EnrollmentPlanController {
         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")

+ 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;
+
+}

+ 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;
+
+}

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

@@ -48,3 +48,5 @@ 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);