Przeglądaj źródła

add 预报名报名时间差表

周箭河 4 lat temu
rodzic
commit
d0dec38f66

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -539,9 +539,27 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 获取支付中的缴费和审核的人数
+     *
      * @param musicGroupId
      * @param payingStatus
      * @return
      */
     List<Map<Integer, Integer>> countPayingNum(@Param("musicGroupId") String musicGroupId, @Param("payingStatus") Integer payingStatus);
+
+    /**
+     * 获取预报名或者报名的列表
+     * @param params
+     * @return
+     */
+    List<RegisterDto> getRegisterOrPreList(Map<String, Object> params);
+
+
+
+    /**
+     * 获取预报名或者报名总数
+     *
+     * @param params
+     * @return
+     */
+    int getRegisterOrPreCount(Map<String, Object> params);
 }

+ 174 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterDto.java

@@ -0,0 +1,174 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.SubjectChange;
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
+import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.common.enums.UserGenderEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class RegisterDto {
+
+
+    @ApiModelProperty(value = "学生编号",required = false)
+    private Integer userId;
+
+    @ApiModelProperty(value = "学生姓名",required = false)
+    private String studentName;
+
+    @ApiModelProperty(value = "家长姓名",required = false)
+    private String parentsName;
+
+    @ApiModelProperty(value = "联系电话",required = false)
+    private String parentsPhone;
+
+    /** 当前所在年级 */
+    @ApiModelProperty(value = "当前所在年级",required = false)
+    private String currentGrade;
+
+    /** 当前所在班级 */
+    @ApiModelProperty(value = "当前所在班级",required = false)
+    private String currentClass;
+
+    @ApiModelProperty(value = "性别",required = false)
+    private UserGenderEnum gender;
+
+
+    @ApiModelProperty(value = "实际专业名称",required = false)
+    private String actualSubjectName;
+
+    @ApiModelProperty(value = "报名专业名称",required = false)
+    private Integer actualSubjectId;
+
+    /** 是否允许调剂 */
+    @ApiModelProperty(value = "是否允许调剂",required = false)
+    private YesOrNoEnum isAllowAdjust;
+
+
+    @ApiModelProperty(value = "预报名时间",required = false)
+    private Date perRegisterTime;
+
+    @ApiModelProperty(value = "与首位预报名时间差",required = false)
+    private Integer perRegInterval;
+
+    @ApiModelProperty(value = "缴费时间",required = false)
+    private Date payTime;
+
+    @ApiModelProperty(value = "与首位缴费时间差",required = false)
+    private Integer payInterval;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getParentsName() {
+        return parentsName;
+    }
+
+    public void setParentsName(String parentsName) {
+        this.parentsName = parentsName;
+    }
+
+    public String getParentsPhone() {
+        return parentsPhone;
+    }
+
+    public void setParentsPhone(String parentsPhone) {
+        this.parentsPhone = parentsPhone;
+    }
+
+    public String getCurrentGrade() {
+        return currentGrade;
+    }
+
+    public void setCurrentGrade(String currentGrade) {
+        this.currentGrade = currentGrade;
+    }
+
+    public String getCurrentClass() {
+        return currentClass;
+    }
+
+    public void setCurrentClass(String currentClass) {
+        this.currentClass = currentClass;
+    }
+
+    public UserGenderEnum getGender() {
+        return gender;
+    }
+
+    public void setGender(UserGenderEnum gender) {
+        this.gender = gender;
+    }
+
+    public String getActualSubjectName() {
+        return actualSubjectName;
+    }
+
+    public void setActualSubjectName(String actualSubjectName) {
+        this.actualSubjectName = actualSubjectName;
+    }
+
+    public Integer getActualSubjectId() {
+        return actualSubjectId;
+    }
+
+    public void setActualSubjectId(Integer actualSubjectId) {
+        this.actualSubjectId = actualSubjectId;
+    }
+
+    public YesOrNoEnum getIsAllowAdjust() {
+        return isAllowAdjust;
+    }
+
+    public void setIsAllowAdjust(YesOrNoEnum isAllowAdjust) {
+        this.isAllowAdjust = isAllowAdjust;
+    }
+
+    public Date getPerRegisterTime() {
+        return perRegisterTime;
+    }
+
+    public void setPerRegisterTime(Date perRegisterTime) {
+        this.perRegisterTime = perRegisterTime;
+    }
+
+    public Integer getPerRegInterval() {
+        return perRegInterval;
+    }
+
+    public void setPerRegInterval(Integer perRegInterval) {
+        this.perRegInterval = perRegInterval;
+    }
+
+    public Date getPayTime() {
+        return payTime;
+    }
+
+    public void setPayTime(Date payTime) {
+        this.payTime = payTime;
+    }
+
+    public Integer getPayInterval() {
+        return payInterval;
+    }
+
+    public void setPayInterval(Integer payInterval) {
+        this.payInterval = payInterval;
+    }
+}

+ 40 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/RegistrationOrPreQueryInfo.java

@@ -0,0 +1,40 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+public class RegistrationOrPreQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "乐团编号",required = false)
+    private String musicGroupId;
+
+    private List<Integer> userIds;
+
+    private boolean isExport = false;
+
+    public boolean getIsExport() {
+        return isExport;
+    }
+
+    public void setIsExport(boolean export) {
+        isExport = export;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public List<Integer> getUserIds() {
+        return userIds;
+    }
+
+    public void setUserIds(List<Integer> userIds) {
+        this.userIds = userIds;
+    }
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
+import com.ym.mec.biz.dal.page.RegistrationOrPreQueryInfo;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
@@ -395,4 +396,13 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      * @return
      */
     List<Map<String, Integer>> countNormalNum(List<String> musicGroupIds);
+
+
+    /**
+     * 获取预报名或者报名列表
+     * @param queryInfo
+     * @return
+     */
+    PageInfo<RegisterDto> getRegisterOrPreList(RegistrationOrPreQueryInfo queryInfo);
+
 }

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -24,6 +24,7 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
+import com.ym.mec.biz.dal.page.RegistrationOrPreQueryInfo;
 import com.ym.mec.biz.service.*;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -1831,4 +1832,24 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     public List<Map<String, Integer>> countNormalNum(List<String> musicGroupIds) {
         return studentRegistrationDao.countNormalNum(StringUtils.join(musicGroupIds, ","));
     }
+
+    @Override
+    public PageInfo<RegisterDto> getRegisterOrPreList(RegistrationOrPreQueryInfo queryInfo) {
+        PageInfo<RegisterDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<RegisterDto> dataList = new ArrayList<>();
+        int count = studentRegistrationDao.getRegisterOrPreCount(params);
+        if (queryInfo.getIsExport() && count > 50000) {
+            throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+        }
+        pageInfo.setTotal(count);
+        params.put("offset", pageInfo.getOffset());
+        if (queryInfo.getPage() <= pageInfo.getTotalPage()) {
+            dataList = studentRegistrationDao.getRegisterOrPreList(params);
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
 }

+ 49 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -1028,4 +1028,53 @@
         WHERE music_group_id_ = #{musicGroupId} AND paying_status_=#{payingStatus} AND music_group_status_ != 'QUIT' GROUP BY actual_subject_id_
     </select>
 
+    <select id="getRegisterOrPreList" resultType="com.ym.mec.biz.dal.dto.RegisterDto">
+        SELECT IFNULL(sr.user_id_, spr.user_id_)   userId,
+        IFNULL(su2.username_, su.username_) studentName,
+        IFNULL(s2.name_, s.name_)           actualSubjectName,
+        spr.create_time_                    perRegisterTime,
+        spo.payTime
+        FROM student_pre_registration spr
+        LEFT JOIN student_registration sr
+        ON sr.user_id_ = spr.user_id_ AND sr.music_group_id_ = spr.music_group_id_
+        LEFT JOIN subject s ON s.id_ = spr.subject_first_
+        LEFT JOIN subject s2 ON s2.id_ = sr.actual_subject_id_
+        LEFT JOIN sys_user su ON spr.user_id_ = su.id_
+        LEFT JOIN sys_user su2 ON sr.user_id_ = su2.id_
+        LEFT JOIN (
+        SELECT spo.user_id_, MAX(spo.pay_time_) payTime
+        FROM student_payment_order spo
+        WHERE spo.music_group_id_ = #{musicGroupId}
+        AND group_type_ = 'APPLY'
+        GROUP BY spo.user_id_
+        ) spo ON spo.user_id_ = sr.user_id_
+        <if test="userIds != null">
+            AND sr.user_id_ IN
+            <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+                #{userId}
+            </foreach>
+            OR spr.user_id_ IN
+            <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+                #{userId}
+            </foreach>
+        </if>
+        <include refid="global.limit"/>
+    </select>
+
+    <select id="getRegisterOrPreCount" resultType="int">
+        SELECT COUNT(*)
+        FROM student_pre_registration spr
+        LEFT JOIN student_registration sr
+        ON sr.user_id_ = spr.user_id_ AND sr.music_group_id_ = spr.music_group_id_
+        <if test="userIds != null">
+            AND sr.user_id_ IN
+            <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+                #{userId}
+            </foreach>
+            OR spr.user_id_ IN
+            <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+                #{userId}
+            </foreach>
+        </if>
+    </select>
 </mapper>

+ 33 - 4
mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

@@ -2,9 +2,12 @@ package com.ym.mec.web.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
 import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
+import com.ym.mec.biz.dal.page.RegistrationOrPreQueryInfo;
 import com.ym.mec.biz.service.EmployeeService;
 
 import io.swagger.annotations.Api;
@@ -19,6 +22,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import javax.servlet.http.HttpServletResponse;
 
@@ -36,10 +40,6 @@ import org.springframework.web.bind.annotation.RestController;
 import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderCourseSettingsDao;
 import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
-import com.ym.mec.biz.dal.dto.DelRegisterDto;
-import com.ym.mec.biz.dal.dto.MusicGroupSubjectGoodsAndInfoDto;
-import com.ym.mec.biz.dal.dto.StudentAddDto;
-import com.ym.mec.biz.dal.dto.StudentPreRegistrationDto;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.page.StudentPreRegistrationQueryInfo;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
@@ -74,6 +74,8 @@ public class StudentRegistrationController extends BaseController {
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private EmployeeService employeeService;
+    @Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
 
     @ApiOperation(value = "乐团预报名列表分页查询")
     @GetMapping("/queryPreApplyList")
@@ -349,4 +351,31 @@ public class StudentRegistrationController extends BaseController {
         }
         return succeed(studentRegistrationService.queryNoClassMusicStudentInfo(queryInfo));
     }
+
+    @ApiOperation(value = "获取报名/预报名列表")
+    @GetMapping("/getRegisterOrPreList")
+    @PreAuthorize("@pcs.hasPermissions('studentRegistration/getRegisterOrPreList')")
+    public HttpResponseResult<PageInfo<RegisterDto>> queryStudentApplyDetail(RegistrationOrPreQueryInfo queryInfo) {
+        if (StringUtils.isNotBlank(queryInfo.getSearch())) {
+            List<BasicUserDto> users = studentPaymentOrderDao.getUsers(queryInfo.getSearch());
+            List<Integer> userIds = users.stream().map(BasicUserDto::getUserId).collect(Collectors.toList());
+            if (userIds.size() > 0) {
+                queryInfo.setUserIds(userIds);
+            }
+        }
+        return succeed(studentRegistrationService.getRegisterOrPreList(queryInfo));
+    }
+
+    @ApiOperation(value = "获取报名/预报名列表导出")
+    @GetMapping("/registerOrPreListExport")
+    @PreAuthorize("@pcs.hasPermissions('studentRegistration/registerOrPreListExport')")
+    public void registerOrPreListExport(RegistrationOrPreQueryInfo queryInfo) {
+        if (StringUtils.isNotBlank(queryInfo.getSearch())) {
+            List<BasicUserDto> users = studentPaymentOrderDao.getUsers(queryInfo.getSearch());
+            List<Integer> userIds = users.stream().map(BasicUserDto::getUserId).collect(Collectors.toList());
+            if (userIds.size() > 0) {
+                queryInfo.setUserIds(userIds);
+            }
+        }
+    }
 }