Ver código fonte

Merge branch 'reg_6_4'

周箭河 4 anos atrás
pai
commit
f116058f9a

+ 10 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -528,12 +528,20 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
     int quitAllStudent(@Param("musicGroupId") String musicGroupId, @Param("remark") String remark);
 
     /**
+     * @param groupIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentRegistration>
      * @describe 获取指定乐团中的注册学员
      * @author Joburgess
      * @date 2021/5/24 0024
-     * @param groupIds:
-     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentRegistration>
      */
     List<StudentRegistration> findByMusicGroupIds(@Param("groupIds") List<String> groupIds,
                                                   @Param("musicGroupStatus") StudentMusicGroupStatusEnum musicGroupStatus);
+
+    /**
+     * 获取支付中的缴费和审核的人数
+     * @param musicGroupId
+     * @param payingStatus
+     * @return
+     */
+    List<Map<Integer, Integer>> countPayingNum(@Param("musicGroupId") String musicGroupId, @Param("payingStatus") Integer payingStatus);
 }

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

@@ -81,6 +81,14 @@ public class StudentApplyDetailDto{
     @ApiModelProperty(value = "云教练金额",required = false)
     private BigDecimal cloudTeacherAmount = BigDecimal.ZERO;
 
+    @ApiModelProperty(value = "缴费中状态 0-正常 1-缴费中 2-审核中",required = false)
+    private Integer payingStatus;
+
+    @ApiModelProperty(value = "是否购买云教练",required = false)
+    private Integer hasCloudTeacher;
+
+    private String payingStatusStr;
+
     public KitGroupPurchaseTypeEnum getKitGroupPurchaseTypeEnum() {
         return kitGroupPurchaseTypeEnum;
     }
@@ -248,4 +256,28 @@ public class StudentApplyDetailDto{
     public void setCloudTeacherAmount(BigDecimal cloudTeacherAmount) {
         this.cloudTeacherAmount = cloudTeacherAmount;
     }
+
+    public Integer getHasCloudTeacher() {
+        return hasCloudTeacher;
+    }
+
+    public void setHasCloudTeacher(Integer hasCloudTeacher) {
+        this.hasCloudTeacher = hasCloudTeacher;
+    }
+
+    public Integer getPayingStatus() {
+        return payingStatus;
+    }
+
+    public void setPayingStatus(Integer payingStatus) {
+        this.payingStatus = payingStatus;
+    }
+
+    public String getPayingStatusStr() {
+        return payingStatusStr;
+    }
+
+    public void setPayingStatusStr(String payingStatusStr) {
+        this.payingStatusStr = payingStatusStr;
+    }
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SubjectApplyDetailDto.java

@@ -28,6 +28,12 @@ public class SubjectApplyDetailDto {
     @ApiModelProperty(value = "未分班人数",required = false)
     private Integer notPartClassNum;
 
+    @ApiModelProperty(value = "缴费中人数",required = false)
+    private Integer payingNum=0;
+
+    @ApiModelProperty(value = "审核中人数",required = false)
+    private Integer checkNum=0;
+
     public Integer getMusicGroupSubjectPlanId() {
         return musicGroupSubjectPlanId;
     }
@@ -83,4 +89,20 @@ public class SubjectApplyDetailDto {
     public void setPayNum(Integer payNum) {
         this.payNum = payNum;
     }
+
+    public Integer getPayingNum() {
+        return payingNum;
+    }
+
+    public void setPayingNum(Integer payingNum) {
+        this.payingNum = payingNum;
+    }
+
+    public Integer getCheckNum() {
+        return checkNum;
+    }
+
+    public void setCheckNum(Integer checkNum) {
+        this.checkNum = checkNum;
+    }
 }

+ 23 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java

@@ -121,12 +121,18 @@ public class StudentRegistration {
 
     //乐团
     private OwnershipType ownershipType;
-    
+
     private Integer chargeTypeId;
 
     @ApiModelProperty(value = "是否是合并的学员 0-否 1-是",required = true)
     private Integer isMerge = 0;
 
+    @ApiModelProperty(value = "缴费中状态 0-正常 1-缴费中 2-审核中",required = true)
+    private Integer payingStatus = 0;
+
+    @ApiModelProperty(value = "是否购买云教练 0-没有 1-有",required = true)
+    private Integer hasCloudTeacher = 0;
+
     public String getCertificateType() {
         return certificateType;
     }
@@ -445,4 +451,20 @@ public class StudentRegistration {
     public void setCurrentGradeNum(Integer currentGradeNum) {
         this.currentGradeNum = currentGradeNum;
     }
+
+    public Integer getPayingStatus() {
+        return payingStatus;
+    }
+
+    public void setPayingStatus(Integer payingStatus) {
+        this.payingStatus = payingStatus;
+    }
+
+    public Integer getHasCloudTeacher() {
+        return hasCloudTeacher;
+    }
+
+    public void setHasCloudTeacher(Integer hasCloudTeacher) {
+        this.hasCloudTeacher = hasCloudTeacher;
+    }
 }

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

@@ -36,6 +36,12 @@ public class StudentRegistrationQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "是否已回访",required = false)
     private Boolean visited;
 
+    @ApiModelProperty(value = "缴费中状态 0-正常 1-缴费中 2-审核中",required = false)
+    private Integer payingStatus;
+
+    @ApiModelProperty(value = "是否购买云教练 0-没有 1-有",required = false)
+    private Integer hasCloudTeacher;
+
     private boolean isExport = false;
 
     public boolean getIsExport() {
@@ -117,4 +123,20 @@ public class StudentRegistrationQueryInfo extends QueryInfo {
     public void setVisited(Boolean visited) {
         this.visited = visited;
     }
+
+    public Integer getPayingStatus() {
+        return payingStatus;
+    }
+
+    public void setPayingStatus(Integer payingStatus) {
+        this.payingStatus = payingStatus;
+    }
+
+    public Integer getHasCloudTeacher() {
+        return hasCloudTeacher;
+    }
+
+    public void setHasCloudTeacher(Integer hasCloudTeacher) {
+        this.hasCloudTeacher = hasCloudTeacher;
+    }
 }

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -685,11 +685,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
         studentRegistration.setOrganId(musicGroup.getOrganId());
+        studentRegistration.setPayingStatus(1);
+
         //云教练/云教练+
         if (registerPayDto.getBuyCloudTeacher() || registerPayDto.getBuyCloudTeacherPlus()) {
             OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(studentRegistration.getOrganId());
             BigDecimal cloudTeacherPrice = registerPayDto.getBuyCloudTeacher() ? cloudTeacher.getPrice() : cloudTeacher.getPlusPrice();
             orderAmount = orderAmount.add(cloudTeacherPrice);
+            studentRegistration.setHasCloudTeacher(1);
         }
 
         if (amount.compareTo(orderAmount) != 0) {
@@ -731,10 +734,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         if ("205".equals(studentPaymentOrder.getPaymentAccountNo())) {
             studentPaymentOrder.setPaymentChannel("ADAPAY");
+            studentRegistration.setPayingStatus(2);
         }
         studentPaymentOrderService.update(studentPaymentOrder);
         studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
 
+        //更新注册信息
+        studentRegistrationService.update(studentRegistration);
+
         if ("205".equals(studentPaymentOrder.getPaymentAccountNo())) {
             Map<String, String> notifyMap = new HashMap<>();
             notifyMap.put("hasPaidZero", "205");
@@ -859,11 +866,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
         studentRegistration.setOrganId(musicGroup.getOrganId());
+        studentRegistration.setPayingStatus(1);
+
         //云教练/云教练+
         if (registerPayDto.getBuyCloudTeacher() || registerPayDto.getBuyCloudTeacherPlus()) {
             OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(studentRegistration.getOrganId());
             BigDecimal cloudTeacherPrice = registerPayDto.getBuyCloudTeacher() ? cloudTeacher.getPrice() : cloudTeacher.getPlusPrice();
             orderAmount = orderAmount.add(cloudTeacherPrice);
+            studentRegistration.setHasCloudTeacher(1);
         }
 
         if (amount.compareTo(orderAmount) != 0) {
@@ -906,10 +916,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         if ("205".equals(studentPaymentOrder.getPaymentAccountNo())) {
             studentPaymentOrder.setPaymentChannel("ADAPAY");
+            studentRegistration.setPayingStatus(2);
         }
         studentPaymentOrderService.update(studentPaymentOrder);
         studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
 
+        studentRegistrationService.update(studentRegistration);
+
         if ("205".equals(studentPaymentOrder.getPaymentAccountNo())) {
             Map<String, String> notifyMap = new HashMap<>();
             notifyMap.put("hasPaidZero", "205");

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

@@ -1095,6 +1095,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             }
             studentRegistration.setPaymentStatus(YES);
             studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
+            studentRegistration.setPayingStatus(0);
 
             List<StudentPaymentOrderDetail> orderDetails = studentPaymentOrderDetailService.getOrderDetail(studentPaymentOrder.getId());
 
@@ -1219,6 +1220,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.FAILED)) {
             MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
+            studentRegistration.setPayingStatus(0);
+            studentRegistration.setHasCloudTeacher(0);
+            studentRegistrationDao.update(studentRegistration);
+
             //减去缴费人数(器乐收费,0元时不减缴费人数)
             if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER_PLUS)) {
                 if (studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("200")) {

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java

@@ -79,11 +79,17 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implem
 //        //统计当前乐团不同声部的报名人数
         Map<Integer, Integer> applyNum = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(studentRegistrationDao.countApplyNum(musicGroupId))), HashMap.class);
         Map<Integer, Integer> payNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(studentRegistrationDao.countPayNum(musicGroupId))), HashMap.class);
+        Map<Integer, Integer> payingMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(studentRegistrationDao.countPayingNum(musicGroupId, 1))), HashMap.class);
+        Map<Integer, Integer> payCheckMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(studentRegistrationDao.countPayingNum(musicGroupId, 2))), HashMap.class);
         subApplyDetail.forEach(detail -> {
             Integer num = payNumMap.get(detail.getSubjectId());
             detail.setPayNum(num == null ? 0 : num);
             num = applyNum.get(detail.getSubjectId());
             detail.setApplyStudentNum(num == null ? 0 : num);
+            num = payingMap.get(detail.getSubjectId());
+            detail.setPayingNum(num == null ? 0 : num);
+            num = payCheckMap.get(detail.getSubjectId());
+            detail.setCheckNum(num == null ? 0 : num);
         });
         return subApplyDetail;
     }

+ 30 - 8
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -42,8 +42,10 @@
         <result column="username_" property="name" />
         <result column="deposit_fee_" property="depositFee" />
         <result column="surplus_course_fee_" property="surplusCourseFee"/>
+        <result column="paying_status_" property="payingStatus"/>
+        <result column="has_cloud_teacher_" property="hasCloudTeacher"/>
     </resultMap>
-    
+
     <resultMap type="com.ym.mec.biz.dal.dto.StudentMusicGroupDto" id="StudentMusicGroupDto" extends="StudentRegistration">
     	<result column="music_group_quit_status_" property="musicGroupQuit.status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="group_status_" property="musicGroup.status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
@@ -240,6 +242,12 @@
             <if test="surplusCourseFee != null">
                 surplus_course_fee_ =#{surplusCourseFee},
             </if>
+            <if test="payingStatus != null">
+                paying_status_ =#{payingStatus},
+            </if>
+            <if test="hasCloudTeacher != null">
+                has_cloud_teacher_ =#{hasCloudTeacher},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>
@@ -306,6 +314,12 @@
             <if test="createYear != null">
                 AND DATE_FORMAT(sr.create_time_,'%Y') =  #{createYear}
             </if>
+            <if test="hasCloudTeacher != null">
+                AND sr.has_cloud_teacher_ =  #{hasCloudTeacher}
+            </if>
+            <if test="payingStatus != null">
+                AND sr.paying_status_ =  #{payingStatus}
+            </if>
         </where>
     </sql>
 
@@ -327,11 +341,13 @@
         <result column="remark_" property="remark"/>
         <result column="create_time_" property="createTime"/>
         <result column="visit_num_" property="visitNum"/>
+        <result column="paying_status_" property="payingStatus"/>
+        <result column="has_cloud_teacher_" property="hasCloudTeacher"/>
     </resultMap>
     <select id="queryStudentDetailPage" resultMap="studentApplyDetail">
         SELECT sr.id_,sr.create_time_, sr.user_id_,su.username_ username_,sr.parents_name_,sr.current_class_,sr.current_grade_,sr.current_grade_date_,
         su.gender_,sr.is_allow_adjust_, s.name_ subject_name_,ss.name_
-        actual_subject_name_,su.phone_ parents_phone_,sr.payment_status_,sr.remark_,sr.actual_subject_id_,IFNULL(sv.num,0) visit_num_
+        actual_subject_name_,su.phone_ parents_phone_,sr.payment_status_,sr.remark_,sr.actual_subject_id_,IFNULL(sv.num,0) visit_num_,sr.has_cloud_teacher_,sr.paying_status_
         FROM student_registration sr
         LEFT JOIN sys_user su ON sr.user_id_ = su.id_
         LEFT JOIN `subject` s ON sr.subject_id_ = s.id_
@@ -786,16 +802,16 @@
         SELECT COUNT(*) FROM student_registration WHERE music_group_id_=#{musicGroupId}
         AND INTE_ARRAY(actual_subject_id_,#{subjectIds}) AND music_group_status_ = 'NORMAL'
     </select>
-    
+
     <select id="queryStudentMusicGroupInfo" resultMap="StudentMusicGroupDto">
-    	select sr.*,s.name_ subject_name_,mg.status_ group_status_,mg.name_ music_group_name_,mgq.status_ music_group_quit_status_ 
+    	select sr.*,s.name_ subject_name_,mg.status_ group_status_,mg.name_ music_group_name_,mgq.status_ music_group_quit_status_
     	from student_registration sr left join subject s on s.id_ = sr.actual_subject_id_
     	left join music_group mg on sr.music_group_id_ = mg.id_
-    	left join (select mgq.* from music_group_quit mgq 
-		 where mgq.id_ in (select max(id_) from music_group_quit group by music_group_id_,user_id_)) mgq  ON mgq.music_group_id_ = sr.music_group_id_ 
+    	left join (select mgq.* from music_group_quit mgq
+		 where mgq.id_ in (select max(id_) from music_group_quit group by music_group_id_,user_id_)) mgq  ON mgq.music_group_id_ = sr.music_group_id_
 		 AND mgq.user_id_ = sr.user_id_ AND mgq.join_date_ = sr.create_time_
-    	where sr.user_id_ = #{userId} 
-    	order by sr.id_ 
+    	where sr.user_id_ = #{userId}
+    	order by sr.id_
     </select>
 
     <select id="querySurplusCourseFeeByClassGroupId" resultType="java.util.Map">
@@ -1006,4 +1022,10 @@
         UPDATE student_registration SET music_group_status_ = 'QUIT',remark_=#{remark} WHERE music_group_id_ = #{musicGroupId}
         AND music_group_status_ IN ('APPLY','NORMAL')
     </update>
+
+    <select id="countPayingNum" resultType="map">
+        SELECT COUNT(DISTINCT user_id_) `value`,actual_subject_id_ `key` FROM student_registration
+        WHERE music_group_id_ = #{musicGroupId} AND paying_status_=#{payingStatus} AND music_group_status_ != 'QUIT' GROUP BY actual_subject_id_
+    </select>
+
 </mapper>

+ 7 - 2
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -1303,11 +1303,16 @@ public class ExportController extends BaseController {
             if (PaymentStatusEnum.YES.equals(studentApplyDetailDto.getPaymentStatus()) && studentApplyDetailDto.getKitGroupPurchaseTypeEnum() == null) {
                 studentApplyDetailDto.setKitGroupPurchaseTypeEnum(KitGroupPurchaseTypeEnum.OWNED);
             }
+            if(studentApplyDetailDto.getPayingStatus().equals(1)){
+                studentApplyDetailDto.setPayingStatusStr("缴费中");
+            }else if(studentApplyDetailDto.getPayingStatus().equals(2)){
+                studentApplyDetailDto.setPayingStatusStr("审核中");
+            }
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学生姓名", "家长姓名", "年级", "班级", "性别", "服从调剂", "报名专业", "实际专业", "联系电话", "学员缴费状态", "乐器购买方式"}, new String[]{
-                    "studentName", "parentsName", "currentGrade", "currentClass", "gender.description", "isAllowAdjust.msg", "subjectName", "actualSubjectName", "parentsPhone", "paymentStatus.desc", "kitGroupPurchaseTypeEnum.msg"}, studentApplyDetail);
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学生姓名", "家长姓名", "年级", "班级", "性别", "服从调剂", "报名专业", "实际专业", "联系电话", "学员缴费状态", "乐器购买方式","缴费中/审核中","是否购买云教练"}, new String[]{
+                    "studentName", "parentsName", "currentGrade", "currentClass", "gender.description", "isAllowAdjust.msg", "subjectName", "actualSubjectName", "parentsPhone", "paymentStatus.desc", "kitGroupPurchaseTypeEnum.msg","payingStatusStr","hasCloudTeacher==1?'有':'没有'"}, studentApplyDetail);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             response.flushBuffer();