Przeglądaj źródła

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

Joburgess 4 lat temu
rodzic
commit
702f7803be
18 zmienionych plików z 1194 dodań i 259 usunięć
  1. 41 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  2. 64 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PageInfoReg.java
  3. 234 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterDto.java
  4. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentApplyDetailDto.java
  5. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java
  6. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  7. 70 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/RegistrationOrPreQueryInfo.java
  8. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentRegistrationQueryInfo.java
  9. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  10. 17 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  11. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  12. 79 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  13. 1 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  14. 450 185
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  15. 1 1
      mec-teacher/src/main/java/com/ym/mec/teacher/config/ResourceServerConfig.java
  16. 28 4
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherController.java
  17. 63 40
      mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java
  18. 91 13
      mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

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

@@ -539,9 +539,50 @@ 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);
+
+    /**
+     * 获取最小预报名时间和最小支付时间
+     *
+     * @return
+     */
+    RegisterDto getRegisterOrPreMinTime(@Param("musicGroupId") String musicGroupId);
+
+
+    /**
+     * 获取报名总人数
+     *
+     * @param musicGroupId
+     * @return
+     */
+    int getRegisterNum(@Param("musicGroupId") String musicGroupId);
+
+    /**
+     * 获取某时间段的缴费人数
+     *
+     * @return
+     */
+    int getFirstPayNum(@Param("musicGroupId") String musicGroupId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
 }

+ 64 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PageInfoReg.java

@@ -0,0 +1,64 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+public class PageInfoReg<T> extends PageInfo<T> {
+
+    @ApiModelProperty(value = "报名人数")
+    private Integer regNum = 0;
+
+    @ApiModelProperty(value = "第一天缴费人数")
+    private Integer firstDayPayNum = 0;
+
+    @ApiModelProperty(value = "总缴费人数")
+    private Integer payNum = 0;
+
+    @ApiModelProperty(value = "首天缴费人数占比")
+    private BigDecimal payScale = BigDecimal.ZERO;
+
+    public PageInfoReg() {
+    }
+
+    public PageInfoReg(Integer pageNo) {
+        super(pageNo);
+    }
+
+    public PageInfoReg(Integer pageNo, int pageSize) {
+        super(pageNo, pageSize);
+    }
+
+    public Integer getRegNum() {
+        return regNum;
+    }
+
+    public void setRegNum(Integer regNum) {
+        this.regNum = regNum;
+    }
+
+    public Integer getFirstDayPayNum() {
+        return firstDayPayNum;
+    }
+
+    public void setFirstDayPayNum(Integer firstDayPayNum) {
+        this.firstDayPayNum = firstDayPayNum;
+    }
+
+    public Integer getPayNum() {
+        return payNum;
+    }
+
+    public void setPayNum(Integer payNum) {
+        this.payNum = payNum;
+    }
+
+    public BigDecimal getPayScale() {
+        return payScale;
+    }
+
+    public void setPayScale(BigDecimal payScale) {
+        this.payScale = payScale;
+    }
+}

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

@@ -0,0 +1,234 @@
+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;
+
+    private String perRegIntervalStr;
+
+    private String payIntervalStr;
+
+    private Date minPerRegisterTime;
+
+    private Date minPayTime;
+
+    private Integer perRegSort;
+
+    private Integer paySort;
+
+    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;
+    }
+
+    public String getPerRegIntervalStr() {
+        return perRegIntervalStr;
+    }
+
+    public void setPerRegIntervalStr(String perRegIntervalStr) {
+        this.perRegIntervalStr = perRegIntervalStr;
+    }
+
+    public String getPayIntervalStr() {
+        return payIntervalStr;
+    }
+
+    public void setPayIntervalStr(String payIntervalStr) {
+        this.payIntervalStr = payIntervalStr;
+    }
+
+    public Date getMinPerRegisterTime() {
+        return minPerRegisterTime;
+    }
+
+    public void setMinPerRegisterTime(Date minPerRegisterTime) {
+        this.minPerRegisterTime = minPerRegisterTime;
+    }
+
+    public Date getMinPayTime() {
+        return minPayTime;
+    }
+
+    public void setMinPayTime(Date minPayTime) {
+        this.minPayTime = minPayTime;
+    }
+
+    public Integer getPerRegSort() {
+        return perRegSort;
+    }
+
+    public void setPerRegSort(Integer perRegSort) {
+        this.perRegSort = perRegSort;
+    }
+
+    public Integer getPaySort() {
+        return paySort;
+    }
+
+    public void setPaySort(Integer paySort) {
+        this.paySort = paySort;
+    }
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentApplyDetailDto.java

@@ -89,6 +89,9 @@ public class StudentApplyDetailDto{
 
     private String payingStatusStr;
 
+    @ApiModelProperty(value = "不需要要购买云教练",required = false)
+    private Integer noneNeedCloudTeacher;
+
     public KitGroupPurchaseTypeEnum getKitGroupPurchaseTypeEnum() {
         return kitGroupPurchaseTypeEnum;
     }
@@ -280,4 +283,12 @@ public class StudentApplyDetailDto{
     public void setPayingStatusStr(String payingStatusStr) {
         this.payingStatusStr = payingStatusStr;
     }
+
+    public Integer getNoneNeedCloudTeacher() {
+        return noneNeedCloudTeacher;
+    }
+
+    public void setNoneNeedCloudTeacher(Integer noneNeedCloudTeacher) {
+        this.noneNeedCloudTeacher = noneNeedCloudTeacher;
+    }
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java

@@ -133,6 +133,9 @@ public class StudentRegistration {
     @ApiModelProperty(value = "是否购买云教练 0-没有 1-有",required = true)
     private Integer hasCloudTeacher = 0;
 
+    @ApiModelProperty(value = "是否不需要云教练 0-需要 1-不需要",required = true)
+    private Integer noneNeedCloudTeacher = 0;
+
     public String getCertificateType() {
         return certificateType;
     }
@@ -467,4 +470,12 @@ public class StudentRegistration {
     public void setHasCloudTeacher(Integer hasCloudTeacher) {
         this.hasCloudTeacher = hasCloudTeacher;
     }
+
+    public Integer getNoneNeedCloudTeacher() {
+        return noneNeedCloudTeacher;
+    }
+
+    public void setNoneNeedCloudTeacher(Integer noneNeedCloudTeacher) {
+        this.noneNeedCloudTeacher = noneNeedCloudTeacher;
+    }
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -172,7 +172,8 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     BACKSTAGE_STUDENT_APPLY_QUIT_COURSE("BACKSTAGE_STUDENT_APPLY_QUIT_COURSE", "学员申请退课"),
     BACKSTAGE_STUDENT_APPLY_WITHDRAW("BACKSTAGE_STUDENT_APPLY_WITHDRAW", "学员申请提现"),
     CHILDREN_DAY_NOTICE_PUSH("CHILDREN_DAY_NOTICE_PUSH", "技能评测考级报名推送"),
-    CHILDREN_DAY_NOTICE_MSG("CHILDREN_DAY_NOTICE_MSG", "技能评测考级报名短信");
+    CHILDREN_DAY_NOTICE_MSG("CHILDREN_DAY_NOTICE_MSG", "技能评测考级报名短信"),
+    NO_BUY_CLOUD_TEACHER_MSG("NO_BUY_CLOUD_TEACHER_MSG", "未购买买云教练短信");
 
     MessageTypeEnum(String code, String msg) {
         this.code = code;

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

@@ -0,0 +1,70 @@
+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 Integer subjectId;
+
+    private List<Integer> userIds;
+
+    private String orderByPerRegister;
+
+    private String orderByPayTime;
+
+    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;
+    }
+
+    public String getOrderByPayTime() {
+        return orderByPayTime;
+    }
+
+    public void setOrderByPayTime(String orderByPayTime) {
+        this.orderByPayTime = orderByPayTime;
+    }
+
+    public String getOrderByPerRegister() {
+        return orderByPerRegister;
+    }
+
+    public void setOrderByPerRegister(String orderByPerRegister) {
+        this.orderByPerRegister = orderByPerRegister;
+    }
+
+    public Integer getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Integer subjectId) {
+        this.subjectId = subjectId;
+    }
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentRegistrationQueryInfo.java

@@ -42,6 +42,9 @@ public class StudentRegistrationQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "是否购买云教练 0-没有 1-有",required = false)
     private Integer hasCloudTeacher;
 
+    @ApiModelProperty(value = "是否不需要云教练 0-需要 1-不需要",required = false)
+    private Integer noneNeedCloudTeacher;
+
     private boolean isExport = false;
 
     public boolean getIsExport() {
@@ -139,4 +142,12 @@ public class StudentRegistrationQueryInfo extends QueryInfo {
     public void setHasCloudTeacher(Integer hasCloudTeacher) {
         this.hasCloudTeacher = hasCloudTeacher;
     }
+
+    public Integer getNoneNeedCloudTeacher() {
+        return noneNeedCloudTeacher;
+    }
+
+    public void setNoneNeedCloudTeacher(Integer noneNeedCloudTeacher) {
+        this.noneNeedCloudTeacher = noneNeedCloudTeacher;
+    }
 }

+ 18 - 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,21 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      * @return
      */
     List<Map<String, Integer>> countNormalNum(List<String> musicGroupIds);
+
+
+    /**
+     * 获取预报名或者报名列表
+     * @param queryInfo
+     * @return
+     */
+    PageInfoReg<RegisterDto> getRegisterOrPreList(RegistrationOrPreQueryInfo queryInfo);
+
+
+    /**
+     * 设置不需要云教练
+     * @param id
+     * @return
+     */
+    Boolean setNoneCloudTeacher(Long id);
+
 }

+ 17 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -15,6 +15,7 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -743,6 +744,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         studentRegistrationService.update(studentRegistration);
 
         if ("205".equals(studentPaymentOrder.getPaymentAccountNo())) {
+            Integer teacherId = musicGroup.getEducationalTeacherId();
+            SysUser endTeacher = sysUserFeignService.queryUserById(teacherId);
+            Map<Integer, String> userPhoneMap = new HashMap<>();
+            userPhoneMap.put(endTeacher.getId(), endTeacher.getPhone());
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.NO_BUY_CLOUD_TEACHER_MSG,
+                    userPhoneMap, null, 0, null, null, musicGroup.getName(), studentRegistration.getName());
+
             Map<String, String> notifyMap = new HashMap<>();
             notifyMap.put("hasPaidZero", "205");
             notifyMap.put("orderNo", studentPaymentOrder.getOrderNo());
@@ -924,6 +932,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         studentRegistrationService.update(studentRegistration);
 
         if ("205".equals(studentPaymentOrder.getPaymentAccountNo())) {
+            Integer teacherId = musicGroup.getEducationalTeacherId();
+            SysUser endTeacher = sysUserFeignService.queryUserById(teacherId);
+            Map<Integer, String> userPhoneMap = new HashMap<>();
+            userPhoneMap.put(endTeacher.getId(), endTeacher.getPhone());
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.NO_BUY_CLOUD_TEACHER_MSG,
+                    userPhoneMap, null, 0, null, null, musicGroup.getName(), studentRegistration.getName());
+
+
             Map<String, String> notifyMap = new HashMap<>();
             notifyMap.put("hasPaidZero", "205");
             notifyMap.put("orderNo", studentPaymentOrder.getOrderNo());
@@ -2668,7 +2684,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             updateTeamTeacher(group, musicGroup);
         }
         //修改了维修技师
-        if(musicGroup.getRepairUserId() != null && !musicGroup.getRepairUserId().equals(group.getRepairUserId())){
+        if (musicGroup.getRepairUserId() != null && !musicGroup.getRepairUserId().equals(group.getRepairUserId())) {
             refresh = true;
         }
         //不是导入的乐团

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -196,7 +196,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         List<String> orderNoList = new ArrayList<String>();
 
         for (StudentPaymentOrder payingOrder : payingOrders) {
-            if (payingOrder.getTransNo() == null && "205".equals(payingOrder.getPaymentAccountNo()) && DateUtil.isSameDay(payingOrder.getCreateTime(), new Date())) {
+            //if (payingOrder.getTransNo() == null && "205".equals(payingOrder.getPaymentAccountNo()) && DateUtil.isSameDay(payingOrder.getCreateTime(), new Date())) {
+            if (payingOrder.getTransNo() == null && "205".equals(payingOrder.getPaymentAccountNo())) {
                 continue;
             }
             if (payingOrder.getTransNo() == null) {

+ 79 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -6,16 +6,7 @@ import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
 
 import java.io.IOException;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
 
@@ -24,6 +15,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;
@@ -516,7 +508,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER_PLUS) && !buyCloudTeacherPlus)
         ) {
             paidZeroFlag = true;
-            if (paidZeroNum <= 0) {
+            if (studentRegistration.getNoneNeedCloudTeacher().equals(1)) {
                 musicOneSubjectClassPlan.setPaidZeroNum(paidZeroNum + 1);
                 musicOneSubjectClassPlan.setPaidStudentNum(paidNum + 1);
                 firstPaidZeroFlag = true;
@@ -533,7 +525,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         }
         if (paidZeroFlag) {
             studentPaymentOrder.setVersion(0);
-            String code = firstPaidZeroFlag ? "200" : "205";
+            String code = studentRegistration.getNoneNeedCloudTeacher().equals(1) ? "200" : "205";
             studentPaymentOrder.setPaymentAccountNo(code);
             studentPaymentOrderService.update(studentPaymentOrder);
         }
@@ -1831,4 +1823,79 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     public List<Map<String, Integer>> countNormalNum(List<String> musicGroupIds) {
         return studentRegistrationDao.countNormalNum(StringUtils.join(musicGroupIds, ","));
     }
+
+    @Override
+    public PageInfoReg<RegisterDto> getRegisterOrPreList(RegistrationOrPreQueryInfo queryInfo) {
+        PageInfoReg<RegisterDto> pageInfo = new PageInfoReg<>(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");
+        }
+        int registerNum = studentRegistrationDao.getRegisterNum(queryInfo.getMusicGroupId());
+        pageInfo.setRegNum(registerNum);
+        RegisterDto registerOrPreMinTime = studentRegistrationDao.getRegisterOrPreMinTime(queryInfo.getMusicGroupId());
+        if(registerOrPreMinTime.getMinPayTime() != null){
+            Date startTime = DateUtil.trunc(registerOrPreMinTime.getMinPayTime());
+            Date endTime = DateUtil.getLastTimeWithDay(startTime);
+            int firstPayNum = studentRegistrationDao.getFirstPayNum(queryInfo.getMusicGroupId(), startTime, endTime);
+            int totalPayNum = studentRegistrationDao.getFirstPayNum(queryInfo.getMusicGroupId(), startTime,null);
+            pageInfo.setFirstDayPayNum(firstPayNum);
+            pageInfo.setPayNum(totalPayNum);
+            pageInfo.setPayScale(new BigDecimal(firstPayNum).divide(new BigDecimal(totalPayNum),2,BigDecimal.ROUND_HALF_UP));
+        }
+
+        pageInfo.setTotal(count);
+        params.put("offset", pageInfo.getOffset());
+        if (queryInfo.getPage() <= pageInfo.getTotalPage()) {
+            Date firstPreTime = registerOrPreMinTime.getMinPerRegisterTime();
+            Date firstPayTime = registerOrPreMinTime.getMinPayTime();
+            dataList = studentRegistrationDao.getRegisterOrPreList(params);
+            for (RegisterDto registerDto : dataList) {
+                if (DateUtil.dateToString(registerDto.getPerRegisterTime()).equals("2099-12-31") ||
+                        DateUtil.dateToString(registerDto.getPerRegisterTime()).equals("1990-12-31")
+                ) {
+                    registerDto.setPerRegisterTime(null);
+                }
+
+                if (DateUtil.dateToString(registerDto.getPayTime()).equals("2099-12-31") ||
+                        DateUtil.dateToString(registerDto.getPayTime()).equals("1990-12-31")
+                ) {
+                    registerDto.setPayTime(null);
+                }
+                if (registerDto.getPerRegisterTime() != null) {
+                    int perRegInterval = DateUtil.secondsBetween(firstPreTime, registerDto.getPerRegisterTime());
+                    registerDto.setPerRegInterval(perRegInterval);
+                    registerDto.setPerRegIntervalStr(DateUtil.secondsFormat(perRegInterval));
+                }
+
+                if (registerDto.getPayTime() != null) {
+                    int payTimeInterval = DateUtil.secondsBetween(firstPayTime, registerDto.getPayTime());
+                    registerDto.setPayInterval(payTimeInterval);
+                    registerDto.setPayIntervalStr(DateUtil.secondsFormat(payTimeInterval));
+                }
+            }
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public Boolean setNoneCloudTeacher(Long id) {
+        StudentRegistration studentRegistration = studentRegistrationDao.get(id);
+        if (!studentRegistration.getPayingStatus().equals(2)) {
+            throw new BizException("该学生不在预约中");
+        }
+        if (studentRegistration.getNoneNeedCloudTeacher().equals(1)) {
+            throw new BizException("该学生已设置");
+        }
+        studentRegistration.setNoneNeedCloudTeacher(1);
+        if (studentRegistrationDao.update(studentRegistration) <= 0) {
+            throw new BizException("设置失败,请重试");
+        }
+        return true;
+    }
 }

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -753,7 +753,7 @@
         SELECT * FROM music_group WHERE cooperation_organ_id_ = #{cooperationOrganId} AND status_ IN ('PROGRESS','PAUSE','PREPARE')
     </select>
     <select id="findByCooperationId" resultMap="MusicGroup">
-        SELECT * FROM music_group WHERE cooperation_organ_id_ = #{cooperationId}
+        SELECT * FROM music_group WHERE cooperation_organ_id_ = #{cooperationId} AND del_flag_ = 0
     </select>
 
     <select id="getStudentLastMusicGroup" resultMap="MusicGroup">

Plik diff jest za duży
+ 450 - 185
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml


+ 1 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/config/ResourceServerConfig.java

@@ -32,7 +32,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 				.and()
 				.authorizeRequests()
 				.antMatchers("/v2/api-docs", "/code/*", "/teacher/queryStudentApply", "/teacher/querySubByMusicGroupId", "/studentRegistration/updateSubject",
-						"/studyReport/createEvaluate", "/teacherOrder/*").permitAll().anyRequest().authenticated().and().httpBasic();
+						"/studyReport/createEvaluate", "/teacherOrder/*","/teacher/getRegisterOrPreList").permitAll().anyRequest().authenticated().and().httpBasic();
 	}
 
 	@Override

+ 28 - 4
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherController.java

@@ -1,7 +1,13 @@
 package com.ym.mec.teacher.controller;
 
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.PageInfoReg;
+import com.ym.mec.biz.dal.dto.RegisterDto;
+import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -9,9 +15,13 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -20,10 +30,6 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.SubjectDao;
 import com.ym.mec.biz.dal.entity.Teacher;
-import com.ym.mec.biz.dal.page.TeacherCloseQueryInfo;
-import com.ym.mec.biz.dal.page.TeacherMusicClassQueryInfo;
-import com.ym.mec.biz.dal.page.VipClassQueryInfo;
-import com.ym.mec.biz.dal.page.queryMusicGroupStudentQueryInfo;
 import com.ym.mec.common.controller.BaseController;
 
 @RequestMapping("teacher")
@@ -45,6 +51,10 @@ public class TeacherController extends BaseController {
 	private SubjectDao subjectDao;
 	@Autowired
     private EmployeeService employeeService;
+	@Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
+	@Autowired
+    private StudentRegistrationService studentRegistrationService;
 
     @ApiOperation(value = "修改教师个人中心信息")
     @PostMapping("/update")
@@ -195,4 +205,18 @@ public class TeacherController extends BaseController {
         }
         return succeed(employeeService.findByRole("4,5",organIds));
     }
+
+
+    @ApiOperation(value = "获取报名/预报名列表")
+    @GetMapping("/getRegisterOrPreList")
+    public HttpResponseResult<PageInfoReg<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));
+    }
 }

+ 63 - 40
mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java

@@ -197,7 +197,7 @@ public class DateUtil {
 
 	/**
 	 * 设置系统默认的<code>java.util.TimeZone</code>
-	 * 
+	 *
 	 * @param timeZone <code>java.util.TimeZone</code>
 	 */
 	public static void setTimeZone(TimeZone timeZone) {
@@ -256,7 +256,7 @@ public class DateUtil {
 
 	/**
 	 * 将<code>java.util.Date</code>按照给定的模式转换成日期字符串。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param formatter 给定的模式
 	 * @return 转换后的日期字符串
@@ -272,7 +272,7 @@ public class DateUtil {
 
 	/**
 	 * 将<code>java.util.Date</code>按照给定的模式转换成日期字符串。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param formatter 给定的模式
 	 * @return 转换后的日期字符串
@@ -303,10 +303,10 @@ public class DateUtil {
 
 	/**
 	 * 确定给定的年份是否为闰年。
-	 * 
+	 *
 	 * <pre>
 	 * </pre>
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @return True 如果是闰年
 	 */
@@ -342,7 +342,7 @@ public class DateUtil {
 
 	/**
 	 * 根据日历的规则,为给定的日历字段添加或减去指定的时间量。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param field 给定的日历字段
 	 * @param amount 数量
@@ -361,7 +361,7 @@ public class DateUtil {
 
 	/**
 	 * 增加或减少指定数量的年份。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param amount 数量
 	 * @return 运算后的 <code>java.util.Date</code>
@@ -372,7 +372,7 @@ public class DateUtil {
 
 	/**
 	 * 增加或减少指定数量的月份。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param amount 数量
 	 * @return 运算后的 <code>java.util.Date</code>
@@ -383,7 +383,7 @@ public class DateUtil {
 
 	/**
 	 * 修改周,时间按周的量增加或减少。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param amount 数量
 	 * @return 运算后的 <code>java.util.Date</code>
@@ -394,7 +394,7 @@ public class DateUtil {
 
 	/**
 	 * 增加或减少指定数量的日数。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param amount 数量
 	 * @return 运算后的 <code>java.util.Date</code>
@@ -405,7 +405,7 @@ public class DateUtil {
 
 	/**
 	 * 增加或减少指定数量的小时数。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param amount 数量
 	 * @return 运算后的 <code>java.util.Date</code>
@@ -416,7 +416,7 @@ public class DateUtil {
 
 	/**
 	 * 增加或减少指定数量的分钟数。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param amount 数量
 	 * @return 运算后的 <code>java.util.Date</code>
@@ -427,7 +427,7 @@ public class DateUtil {
 
 	/**
 	 * 增加或减少指定数量的秒钟数。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param amount 数量
 	 * @return 运算后的 <code>java.util.Date</code>
@@ -438,7 +438,7 @@ public class DateUtil {
 
 	/**
 	 * 增加或减少指定数量的毫秒数。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param amount 数量
 	 * @return 运算后的 <code>java.util.Date</code>
@@ -449,7 +449,7 @@ public class DateUtil {
 
 	/**
 	 * 在给定的日历字段上添加或减去(上/下)单个时间单元,不更改更大的字段。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param field 给定的日历字段
 	 * @param up 添加或减去(上/下)
@@ -465,7 +465,7 @@ public class DateUtil {
 
 	/**
 	 * 向指定日历字段添加指定(有符号的)时间量,不更改更大的字段。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param field 给定的日历字段
 	 * @param amount 数量
@@ -481,7 +481,7 @@ public class DateUtil {
 
 	/**
 	 * 将毫秒时间戳转换成格里高利历的日数。日数是只从格里高利历第1年1月1日算起的日数。
-	 * 
+	 *
 	 * @param millis 给定的毫秒时间戳
 	 * @return 格里高利历的日数
 	 */
@@ -491,7 +491,7 @@ public class DateUtil {
 
 	/**
 	 * 将<code>java.util.Date</code>转换成格里高利历的日数。 日数是只从格里高利历第1年1月1日算起的日数。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @return 格里高利历的日数
 	 */
@@ -501,7 +501,7 @@ public class DateUtil {
 
 	/**
 	 * 计算两个日期之间相差的秒钟数。如果第一个日期在第二个日期之前,则返回正,反之返回负。
-	 * 
+	 *
 	 * @param early 第一个日期
 	 * @param late 第二个日期
 	 * @return 两个日期之间相差的秒钟数
@@ -512,7 +512,7 @@ public class DateUtil {
 
 	/**
 	 * 计算两个日期之间相差的分钟数。如果第一个日期在第二个日期之前,则返回正,反之返回负。
-	 * 
+	 *
 	 * @param early 第一个日期
 	 * @param late 第二个日期
 	 * @return 两个日期之间相差的分钟数
@@ -528,7 +528,7 @@ public class DateUtil {
 
 	/**
 	 * 计算两个日期之间相差的小时数。如果第一个日期在第二个日期之前,则返回正,反之返回负。
-	 * 
+	 *
 	 * @param early 第一个日期
 	 * @param late 第二个日期
 	 * @return 两个日期之间相差的小时数
@@ -539,7 +539,7 @@ public class DateUtil {
 
 	/**
 	 * 计算两个日期之间相差的天数。如果第一个日期在第二个日期之前,则返回正,反之返回负。
-	 * 
+	 *
 	 * @param early 第一个日期
 	 * @param late 第二个日期
 	 * @return 两个日期之间相差的天数
@@ -554,7 +554,7 @@ public class DateUtil {
 
 	/**
 	 * 计算两个日期之间相差的月数。如果第一个日期在第二个日期之前,则返回正,反之返回负。
-	 * 
+	 *
 	 * @param early 第一个日期
 	 * @param late 第二个日期
 	 * @return 两个日期之间相差的月数
@@ -569,7 +569,7 @@ public class DateUtil {
 
 	/**
 	 * 计算两个日期之间相差的年数。如果第一个日期在第二个日期之前,则返回正,反之返回负。
-	 * 
+	 *
 	 * @param early 第一个日期
 	 * @param late 第二个日期
 	 * @return 两个日期之间相差的年数
@@ -584,7 +584,7 @@ public class DateUtil {
 
 	/**
 	 * 将格里高利历日数转换成 <code>java.sql.Date</code>
-	 * 
+	 *
 	 * @param julian 格里高利历日数
 	 * @return <code>java.sql.Date</code>
 	 */
@@ -594,7 +594,7 @@ public class DateUtil {
 
 	/**
 	 * 将格里高利历日数转换成 <code>java.util.Date</code>
-	 * 
+	 *
 	 * @param julian 格里高利历日数
 	 * @return <code>java.util.Date</code>
 	 */
@@ -604,7 +604,7 @@ public class DateUtil {
 
 	/**
 	 * 将格里高利历日数转换成毫秒时间戳。
-	 * 
+	 *
 	 * @param julian 格里高利历日数
 	 * @return 毫秒时间戳
 	 */
@@ -615,7 +615,7 @@ public class DateUtil {
 	/**
 	 * 将日历转换成儒略历日期。算法参见: <a href="http://quasar.as.utexas.edu/BillInfo/JulianDatesG.html">Julian Day Calculations
 	 * (Gregorian Calendar)</a>, 由 Bill Jeffrys 提供。
-	 * 
+	 *
 	 * @param c 日历实例
 	 * @return 儒略历日期
 	 */
@@ -636,7 +636,7 @@ public class DateUtil {
 	/**
 	 * 将日期转换成儒略历日期。算法参见: <a href="http://quasar.as.utexas.edu/BillInfo/JulianDatesG.html">Julian Day Calculations
 	 * (Gregorian Calendar)</a>, 由 Bill Jeffrys 提供。
-	 * 
+	 *
 	 * @param date 日期
 	 * @return 儒略历日期
 	 */
@@ -655,7 +655,7 @@ public class DateUtil {
 
 	/**
 	 * 给定此 <code>java.util.Date</code> 的时间值,返回指定日历字段可能拥有的最大值。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param field 日历字段
 	 * @return 对于此 <code>java.util.Date</code> 的时间值而言,给定日历字段的最大值
@@ -670,7 +670,7 @@ public class DateUtil {
 
 	/**
 	 * 给定此 <code>java.util.Date</code> 的时间值,返回指定日历字段可能拥有的最小值。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @param field 日历字段
 	 * @return 对于此 <code>java.util.Date</code> 的时间值而言,给定日历字段的最小值
@@ -685,7 +685,7 @@ public class DateUtil {
 
 	/**
 	 * 截取日期,只保留年、月、日部分。
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @return 截取后的<code>java.util.Date</code>
 	 */
@@ -705,7 +705,7 @@ public class DateUtil {
 
 	/**
 	 * 返回当天的最后一秒
-	 * 
+	 *
 	 * @param date <code>java.util.Date</code>
 	 * @return 截取后的<code>java.util.Date</code>
 	 */
@@ -726,7 +726,7 @@ public class DateUtil {
 
 	/**
 	 * 判断两个日期是否是同一天,精确到天。
-	 * 
+	 *
 	 * @param date1 <code>java.util.Date</code>
 	 * @param date2 <code>java.util.Date</code>
 	 * @return true 如果两个日期是同一天
@@ -744,7 +744,7 @@ public class DateUtil {
 
 	/**
 	 * 判断两个日期是否是同一天,精确到天。
-	 * 
+	 *
 	 * @param cal1 <code>java.util.Calendar</code>
 	 * @param cal2 <code>java.util.Calendar</code>
 	 * @return true 如果两个日期是同一天
@@ -759,7 +759,7 @@ public class DateUtil {
 
 	/**
 	 * 判断两个时间是否完全相等,精确到毫秒。
-	 * 
+	 *
 	 * @param date1 <code>java.util.Date</code>
 	 * @param date2 <code>java.util.Date</code>
 	 * @return true 如果两个时间完全相等
@@ -777,7 +777,7 @@ public class DateUtil {
 
 	/**
 	 * 判断两个时间是否完全相等,精确到毫秒。
-	 * 
+	 *
 	 * @param cal1 <code>java.util.Calendar</code>
 	 * @param cal2 <code>java.util.Calendar</code>
 	 * @return true 如果两个时间完全相等
@@ -848,7 +848,7 @@ public class DateUtil {
 
 	/**
 	 * 解析毫秒时间格式
-	 * 
+	 *
 	 * @param millis
 	 * @return
 	 */
@@ -860,7 +860,7 @@ public class DateUtil {
 
 	/**
 	 * 返回date所在月的第一天
-	 * 
+	 *
 	 * @return
 	 */
 	public static Date getFirstDayOfMonth(Date date) {
@@ -912,7 +912,7 @@ public class DateUtil {
 
 	/**
 	 * 将字符串转换为指定格式的日期
-	 * 
+	 *
 	 * @param dateStr
 	 * @param pattern
 	 * @return
@@ -1239,6 +1239,29 @@ public class DateUtil {
 		return sdf.format(new Date(Long.valueOf(seconds+"000")));
 	}
 
+    public static String secondsFormat(int seconds) {
+        String formatStr = "";
+        if (seconds < 60) {
+            return seconds + "秒";
+        } else if (seconds < 3600) {
+            return seconds / 60 + "分钟";
+        } else if (seconds < 86400) {
+            int hour = seconds / 3600;
+            formatStr += hour + "小时";
+            int second = (seconds - (3600 * hour)) / 60;
+            formatStr += second + "分钟";
+            return formatStr;
+        } else {
+            int days = seconds / 86400;
+            formatStr += days + "天";
+            int hour = (seconds - (86400 * days)) / 3600;
+            formatStr += hour + "小时";
+            int second = (seconds - (86400 * days) - (3600 * hour)) / 60;
+            formatStr += second + "分钟";
+            return formatStr;
+        }
+    }
+
 	public static void main(String[] args) throws ParseException {
 		// DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
 		DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

+ 91 - 13
mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

@@ -2,11 +2,14 @@ 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.*;
 import com.ym.mec.biz.service.EmployeeService;
 
+import com.ym.mec.common.exception.BizException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -14,11 +17,8 @@ import io.swagger.annotations.ApiOperation;
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import javax.servlet.http.HttpServletResponse;
 
@@ -36,13 +36,7 @@ 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;
 import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
 import com.ym.mec.biz.service.StudentPreRegistrationService;
 import com.ym.mec.biz.service.StudentRegistrationService;
@@ -74,6 +68,8 @@ public class StudentRegistrationController extends BaseController {
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private EmployeeService employeeService;
+    @Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
 
     @ApiOperation(value = "乐团预报名列表分页查询")
     @GetMapping("/queryPreApplyList")
@@ -271,7 +267,7 @@ public class StudentRegistrationController extends BaseController {
         PageInfo<StudentPreRegistrationDto> studentPreRegistration = studentPreRegistrationService.queryListForPage(queryInfo);
         if (studentPreRegistration.getTotal() <= 0) {
             response.setStatus(200);
-            response.setContentType("Content-Type: application/json;charset=UTF-8");
+            response.setContentType("Content-Type:application/json;charset=UTF-8");
             response.getOutputStream().write("{\"data\": null, \"code\": 500, \"status\": false, \"msg\": \"没有可导出的记录\"}".getBytes());
             response.flushBuffer();
             return;
@@ -349,4 +345,86 @@ public class StudentRegistrationController extends BaseController {
         }
         return succeed(studentRegistrationService.queryNoClassMusicStudentInfo(queryInfo));
     }
+
+    @ApiOperation(value = "获取报名/预报名列表")
+    @GetMapping("/getRegisterOrPreList")
+    @PreAuthorize("@pcs.hasPermissions('studentRegistration/getRegisterOrPreList')")
+    public HttpResponseResult<PageInfoReg<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, HttpServletResponse response) throws Exception {
+        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);
+            }
+        }
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+
+        PageInfo<RegisterDto> registerOrPreList = studentRegistrationService.getRegisterOrPreList(queryInfo);
+        if (registerOrPreList.getTotal() <= 0) {
+            throw new BizException("没有可导出的记录");
+        }
+
+        List<RegisterDto> hasSoredPreRegs = registerOrPreList.getRows().stream().filter(e -> e.getPerRegisterTime() != null).sorted(Comparator.comparing(RegisterDto::getPerRegisterTime)).collect(Collectors.toList());
+        int i = 1;
+        for (RegisterDto hasSoredPreReg : hasSoredPreRegs) {
+            hasSoredPreReg.setPerRegSort(i);
+            i++;
+        }
+
+        i = 1;
+        List<RegisterDto> pays = registerOrPreList.getRows().stream().filter(e -> e.getPayTime() != null).sorted(Comparator.comparing(RegisterDto::getPayTime)).collect(Collectors.toList());
+        for (RegisterDto pay : pays) {
+            pay.setPaySort(i);
+            i++;
+        }
+
+        OutputStream outputStream = response.getOutputStream();
+        HSSFWorkbook workbook = null;
+        try {
+            String[] header = {"学员编号", "学员姓名", "声部", "预报名时间", "预报名时间差","预报名排名", "缴费时间", "缴费时间差","缴费排名"};
+            String[] body = {"userId", "studentName", "actualSubjectName", "perRegisterTime", "perRegIntervalStr","perRegSort", "payTime", "payIntervalStr","paySort"};
+            workbook = POIUtil.exportExcel(header, body, registerOrPreList.getRows());
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=registerOrPer-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+            workbook.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    workbook.close();
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+
+    @ApiOperation(value = "设置不需要云教练")
+    @GetMapping("/setNoneCloudTeacher")
+    @PreAuthorize("@pcs.hasPermissions('studentRegistration/setNoneCloudTeacher')")
+    public HttpResponseResult<Boolean> setNoneCloudTeacher(Long id) {
+        return succeed(studentRegistrationService.setNoneCloudTeacher(id));
+    }
 }

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików