Explorar o código

Merge remote-tracking branch 'origin/master'

zouxuan %!s(int64=4) %!d(string=hai) anos
pai
achega
7634aaffad

+ 6 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -21,8 +21,9 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
     int deleteWithMonthAndType(@Param("months") Collection months,
                                @Param("dataType")IndexDataType dataType);
 
-    IndexBaseMonthData getWithDayAndDataType(@Param("day") String day,
-                                             @Param("dataType")IndexDataType dataType);
+    IndexBaseMonthData getOrganDataWithDayAndDataType(@Param("organId") Integer organId,
+                                                      @Param("day") String day,
+                                                      @Param("dataType")IndexDataType dataType);
 
     /**
      * @describe 获取首页统计数据
@@ -39,6 +40,9 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
                                               @Param("startMonth") String startMonth,
                                               @Param("endMonth") String endMonth);
 
+	List<IndexBaseMonthData> getWithDayAndDataType(@Param("day") String day,
+                                                   @Param("dataType")IndexDataType dataType);
+
 	/**
 	 * @describe 统计学员注册数据
 	 * @author Joburgess

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/IndexBaseDto.java

@@ -74,8 +74,8 @@ public class IndexBaseDto {
     public void setIndexMonthData(List<IndexBaseMonthData> indexMonthData, Date currentMonth) {
         this.indexMonthData = indexMonthData;
         if(!CollectionUtils.isEmpty(indexMonthData)){
-            BigDecimal total = indexMonthData.stream().map(IndexBaseMonthData::getTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add);
             if(dataType.getCollect()){
+                BigDecimal total = indexMonthData.stream().map(IndexBaseMonthData::getTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add);
                 if(total.compareTo(BigDecimal.ZERO)==0){
                     this.percent = BigDecimal.ZERO;
                 }else{

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
@@ -76,6 +77,9 @@ public class MusicGroup {
 
 	@ApiModelProperty(value = "老师课酬结算方式",required = false)
 	private SalarySettlementTypeEnum settlementType;
+
+	@ApiModelProperty(value = "课程展现形式",required = false)
+	private CourseViewTypeEnum courseViewType;
 	
 	/**  */
 	private java.util.Date createTime;
@@ -568,4 +572,12 @@ public class MusicGroup {
 	public void setHasVerifyMusicalList(Boolean hasVerifyMusicalList) {
 		this.hasVerifyMusicalList = hasVerifyMusicalList;
 	}
+
+	public CourseViewTypeEnum getCourseViewType() {
+		return courseViewType;
+	}
+
+	public void setCourseViewType(CourseViewTypeEnum courseViewType) {
+		this.courseViewType = courseViewType;
+	}
 }

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/CourseViewTypeEnum.java

@@ -0,0 +1,33 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+public enum CourseViewTypeEnum implements BaseEnum<Integer, CourseViewTypeEnum> {
+    COURSE_lIST(0,"课程详情"),
+    AMR(1,"器乐练习系统");
+
+    private Integer code;
+
+    private String msg;
+
+    CourseViewTypeEnum(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public Integer getCode() {
+        return this.code;
+    }}

+ 45 - 33
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/IndexDataType.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.enums;
 
+import com.sun.org.apache.xpath.internal.operations.Bool;
 import com.ym.mec.common.enums.BaseEnum;
 
 /**
@@ -8,66 +9,69 @@ import com.ym.mec.common.enums.BaseEnum;
  **/
 public enum IndexDataType implements BaseEnum<String, IndexDataType> {
     //学员数据类型
-    STUDENT_REGISTRATION_NUM("STUDENT_REGISTRATION_NUM", "注册学员", false),
-    CHARGE_STUDENT_CHANGE_RATE("CHARGE_STUDENT_CHANGE_RATE", "付费转化率", false),
-    ACTIVATION_RATE("ACTIVATION_RATE","激活率", true),
+    STUDENT_REGISTRATION_NUM("STUDENT_REGISTRATION_NUM", "注册学员", false, false),
+    CHARGE_STUDENT_CHANGE_RATE("CHARGE_STUDENT_CHANGE_RATE", "付费转化率", true, false),
+    ACTIVATION_RATE("ACTIVATION_RATE","激活率", true, false),
 
     //运营数据类型
-    SCHOOL("SCHOOL","合作单位", false),
-    PROGRESS_MUSIC_GROUP_NUM("PROGRESS_MUSIC_GROUP_NUM","进行中乐团", false),
+    SCHOOL("SCHOOL","合作单位", false, false),
+    PROGRESS_MUSIC_GROUP_NUM("PROGRESS_MUSIC_GROUP_NUM","进行中乐团", false, false),
 
     //人事数据
-    TEACHER_NUM("TEACHER_NUM","老师总数", false),
-    FULL_TIME_NUM("FULL_TIME_NUM","全职人数", false),
-    PART_TIME_NUM("PART_TIME_NUM","兼职人数", false),
+    TEACHER_NUM("TEACHER_NUM","老师总数", false, false),
+    FULL_TIME_NUM("FULL_TIME_NUM","全职人数", false, false),
+    PART_TIME_NUM("PART_TIME_NUM","兼职人数", false, false),
 
-    DIMISSION_NUM("DIMISSION_NUM","离职人数", false),
+    DIMISSION_NUM("DIMISSION_NUM","离职人数", false, false),
 
     //剩余课时
-    SURPLUS_COURSE_NUM("SURPLUS_COURSE_NUM", "剩余课时总数", false),
-    SURPLUS_MUSIC_COURSE_NUM("SURPLUS_MUSIC_COURSE_NUM", "剩余乐团课时", false),
-    SURPLUS_VIP_COURSE_NUM("SURPLUS_VIP_COURSE_NUM", "剩余VIP课时", false),
-    SURPLUS_PRACTICE_COURSE_NUM("SURPLUS_PRACTICE_COURSE_NUM", "剩余网管课时", false),
+    SURPLUS_COURSE_NUM("SURPLUS_COURSE_NUM", "剩余课时总数", false, false),
+    SURPLUS_MUSIC_COURSE_NUM("SURPLUS_MUSIC_COURSE_NUM", "剩余乐团课时", false, false),
+    SURPLUS_VIP_COURSE_NUM("SURPLUS_VIP_COURSE_NUM", "剩余VIP课时", false, false),
+    SURPLUS_PRACTICE_COURSE_NUM("SURPLUS_PRACTICE_COURSE_NUM", "剩余网管课时", false, false),
 
     //已消耗课时
-    OVER_COURSE_NUM("OVER_COURSE_NUM", "已消耗课时总数", false),
-    OVER_MUSIC_COURSE_NUM("OVER_MUSIC_COURSE_NUM", "已消耗乐团课时", false),
-    OVER_VIP_COURSE_NUM("OVER_VIP_COURSE_NUM", "已消耗VIP课时", false),
-    OVER_PRACTICE_COURSE_NUM("OVER_PRACTICE_COURSE_NUM", "已消耗网管课时", false),
+    OVER_COURSE_NUM("OVER_COURSE_NUM", "已消耗课时总数", false, false),
+    OVER_MUSIC_COURSE_NUM("OVER_MUSIC_COURSE_NUM", "已消耗乐团课时", false, false),
+    OVER_VIP_COURSE_NUM("OVER_VIP_COURSE_NUM", "已消耗VIP课时", false, false),
+    OVER_PRACTICE_COURSE_NUM("OVER_PRACTICE_COURSE_NUM", "已消耗网管课时", false, false),
 
     //经营数据
-    FINANCE_PAY("FINANCE_PAY","财务支出", false),
-    FINANCE_BALANCE_AMOUNT("FINANCE_BALANCE_AMOUNT","余额收入", false),
-    FINANCE_AMOUNT("FINANCE_AMOUNT","现金收入", false),
+    FINANCE_PAY("FINANCE_PAY","财务支出", false, false),
+    FINANCE_BALANCE_AMOUNT("FINANCE_BALANCE_AMOUNT","余额收入", false, false),
+    FINANCE_AMOUNT("FINANCE_AMOUNT","现金收入", false, false),
 
     //业务数据
-    HOMEWORK_CREATE_RATE("HOMEWORK_CREATE_RATE","作业布置率", true),
-    HOMEWORK_SUBMIT_RATE("HOMEWORK_SUBMIT_RATE","作业提交率", true),
-    HOMEWORK_COMMENT_RATE("HOMEWORK_COMMENT_RATE","作业点评率", true),
+    HOMEWORK_CREATE_RATE("HOMEWORK_CREATE_RATE","作业布置率", true, false),
+    HOMEWORK_SUBMIT_RATE("HOMEWORK_SUBMIT_RATE","作业提交率", true, false),
+    HOMEWORK_COMMENT_RATE("HOMEWORK_COMMENT_RATE","作业点评率", true, false),
 
     //课程数据
-    MUSIC_GROUP_COURSE("MUSIC_GROUP_COURSE","乐团课", false),
-    VIP_GROUP_COURSE("VIP_GROUP_COURSE","VIP课", false),
-    PRACTICE_GROUP_COURSE("PRACTICE_GROUP_COURSE","网管课", false),
+    MUSIC_GROUP_COURSE("MUSIC_GROUP_COURSE","乐团课", false, false),
+    VIP_GROUP_COURSE("VIP_GROUP_COURSE","VIP课", false, false),
+    PRACTICE_GROUP_COURSE("PRACTICE_GROUP_COURSE","网管课", false, false),
 
     //学员变动
-    ADD_STUDENT_REGISTRATION_NUM("ADD_STUDENT_REGISTRATION_NUM", "新增注册学员", false),
-    MUSIC_GROUP_STUDENT("MUSIC_GROUP_STUDENT","乐团在读学员", false),
-    NEWLY_STUDENT_NUM("NEWLY_STUDENT_NUM","乐团新增学员", false),
-    QUIT_MUSIC_GROUP_STUDENT_NUM("QUIT_MUSIC_GROUP_STUDENT_NUM","退团学员", false),
-    VIP_PRACTICE_STUDENT_NUM("VIP_PRACTICE_STUDENT_NUM", "VIP/网管在读", false),
-    VIP_PRACTICE_ADD_STUDENT_NUM("VIP_PRACTICE_ADD_STUDENT_NUM", "VIP/网管新增", false),
+    ADD_STUDENT_REGISTRATION_NUM("ADD_STUDENT_REGISTRATION_NUM", "新增注册学员", false, false),
+    MUSIC_GROUP_STUDENT("MUSIC_GROUP_STUDENT","乐团在读学员", false, false),
+    NEWLY_STUDENT_NUM("NEWLY_STUDENT_NUM","乐团新增学员", false, false),
+    QUIT_MUSIC_GROUP_STUDENT_NUM("QUIT_MUSIC_GROUP_STUDENT_NUM","退团学员", false, false),
+    VIP_PRACTICE_STUDENT_NUM("VIP_PRACTICE_STUDENT_NUM", "VIP/网管在读", false, false),
+    VIP_PRACTICE_ADD_STUDENT_NUM("VIP_PRACTICE_ADD_STUDENT_NUM", "VIP/网管新增", false, false),
     ;
 
     private String code;
 
     private String msg;
 
+    private Boolean percent;
+
     private Boolean collect;
 
-    IndexDataType(String code, String msg, Boolean collect) {
+    IndexDataType(String code, String msg, Boolean percent, Boolean collect) {
         this.code = code;
         this.msg = msg;
+        this.percent = percent;
         this.collect = collect;
     }
 
@@ -95,4 +99,12 @@ public enum IndexDataType implements BaseEnum<String, IndexDataType> {
     public void setCollect(Boolean collect) {
         this.collect = collect;
     }
+
+    public Boolean getPercent() {
+        return percent;
+    }
+
+    public void setPercent(Boolean percent) {
+        this.percent = percent;
+    }
 }

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/event/listener/GroupEventListener.java

@@ -60,7 +60,7 @@ public class GroupEventListener {
             if(userGroupIdMap.containsKey(studentId)&&userGroupIdMap.get(studentId).size()>1){
                 continue;
             }
-            if(userGroupIdMap.containsKey(userGroupIdMap)&&!userGroupIdMap.get(studentId).contains(musicGroupStatusChangeEvent.getMusicGroupId())){
+            if(userGroupIdMap.containsKey(studentId)&&!userGroupIdMap.get(studentId).contains(musicGroupStatusChangeEvent.getMusicGroupId())){
                 continue;
             }
             updateNum+=1;
@@ -70,10 +70,10 @@ public class GroupEventListener {
         IndexBaseMonthData indexBaseMonthData = null;
         switch (musicGroupStatusChangeEvent.getStudentMusicGroupStatus()){
             case NORMAL:
-                indexBaseMonthData = indexBaseMonthDataDao.getWithDayAndDataType(dayStr, IndexDataType.NEWLY_STUDENT_NUM);
+                indexBaseMonthData = indexBaseMonthDataDao.getOrganDataWithDayAndDataType(musicGroup.getOrganId(), dayStr, IndexDataType.NEWLY_STUDENT_NUM);
                 break;
             case QUIT:
-                indexBaseMonthData = indexBaseMonthDataDao.getWithDayAndDataType(dayStr, IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM);
+                indexBaseMonthData = indexBaseMonthDataDao.getOrganDataWithDayAndDataType(musicGroup.getOrganId(), dayStr, IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM);
                 break;
             default:
                 return;

+ 20 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -130,7 +130,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 				currentMonthDate = currentMonthDate.plusDays(1);
 			}
 			typeDateMapEntry.getValue().sort(Comparator.comparing(IndexBaseMonthData::getMonth));
-			if(typeDateMapEntry.getKey().getCollect()){
+			if(typeDateMapEntry.getKey().getPercent()){
 				for (IndexBaseMonthData indexBaseMonthData : typeDateMapEntry.getValue()) {
 					if(indexBaseMonthData.getTotalNum().compareTo(BigDecimal.ZERO)==0){
 						indexBaseMonthData.setPercent(BigDecimal.ZERO);
@@ -233,14 +233,31 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			dataList = new ArrayList<>();
 		}
 		Set<Integer> hasOrganIds = dataList.stream().map(IndexBaseMonthData::getOrganId).collect(Collectors.toSet());
+
+		boolean specialType = IndexDataType.NEWLY_STUDENT_NUM.equals(indexDataType)||IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM.equals(indexDataType);
+		Set<Integer> ignoreOrganIds = new HashSet<>();
+		if(specialType){
+			List<IndexBaseMonthData> indexBaseDatas = indexBaseMonthDataDao.getWithDayAndDataType(dayStr, indexDataType);
+			if(!CollectionUtils.isEmpty(indexBaseDatas)) {
+				ignoreOrganIds = indexBaseDatas.stream().map(IndexBaseMonthData::getOrganId).collect(Collectors.toSet());
+			}
+		}
+
 		for (Integer organId : this.organIds.get()) {
 			if(hasOrganIds.contains(organId)){
 				continue;
 			}
+			if(specialType&&ignoreOrganIds.contains(organId)){
+				continue;
+			}
 			dataList.add(new IndexBaseMonthData(date, organId));
 		}
-		indexBaseMonthDataDao.deleteWithMonthAndType(Arrays.asList(dayStr), indexDataType);
-		indexBaseMonthDataDao.batchInsertWithDataType(dataList, indexDataType);
+		if(!IndexDataType.NEWLY_STUDENT_NUM.equals(indexDataType)&&!IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM.equals(indexDataType)){
+			indexBaseMonthDataDao.deleteWithMonthAndType(Arrays.asList(dayStr), indexDataType);
+		}
+		if(!CollectionUtils.isEmpty(dataList)){
+			indexBaseMonthDataDao.batchInsertWithDataType(dataList, indexDataType);
+		}
 	}
 
 	@Override

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java

@@ -125,6 +125,7 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
         musicGroupSubjectGoodsAndInfo.setMusicGroupPaymentCalender(musicGroupRegCalender);
         musicGroupSubjectGoodsAndInfo.setMusicGroupSubjectGoodsGroupList(goodsGroups);
         musicGroupSubjectGoodsAndInfo.setOtherGoods(otherGoods);
+        musicGroupSubjectGoodsAndInfo.setMusicGroup(musicGroup);
         return musicGroupSubjectGoodsAndInfo;
     }
 

+ 13 - 4
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -28,8 +28,8 @@
 		SELECT * FROM index_base_month_data ORDER BY id_
 	</select>
 
-	<select id="getWithDayAndDataType" resultMap="IndexBaseMonthData">
-		SELECT * FROM index_base_month_data WHERE month_ = #{day} AND data_type_=#{dataType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} ORDER BY month_ DESC LIMIT 1;
+	<select id="getOrganDataWithDayAndDataType" resultMap="IndexBaseMonthData">
+		SELECT * FROM index_base_month_data WHERE organ_id_=#{organId} AND month_ = #{day} AND data_type_=#{dataType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} ORDER BY month_ DESC LIMIT 1;
 	</select>
 
 	<!-- 向数据库增加一条记录 -->
@@ -144,6 +144,15 @@
 		GROUP BY month_,data_type_
 	</select>
 
+	<select id="getWithDayAndDataType" resultMap="IndexBaseMonthData">
+		SELECT
+			*
+		FROM index_base_month_data
+		WHERE 1=1
+			AND data_type_ = #{dataType}
+			AND month_&gt;=#{day}
+	</select>
+
 	<select id="getStudentSignUpData" resultMap="IndexBaseMonthData">
 		SELECT
 			organ_id_,
@@ -167,8 +176,8 @@
 			 SELECT DISTINCT
 				 cssp.user_id_
 			 FROM
-				 course_schedule_student_payment cssp
-					 LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
+				course_schedule_student_payment cssp
+				LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
 			 WHERE
 				 cs.del_flag_ = 0
 			   AND ( cs.is_lock_ = 0 OR cs.is_lock_ IS NULL )

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

@@ -40,6 +40,7 @@
         <result column="payment_valid_end_date_" property="paymentValidEndDate"/>
         <result column="payment_pattern_" property="paymentPattern"/>
         <result column="is_classroom_lessons_" property="isClassroomLessons"/>
+        <result column="course_view_type_" property="courseViewType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -72,7 +73,7 @@
          bill_start_date_, improvent_classes_num_, enroll_classes_, payment_expire_date_, is_extra_class_,
          settlement_type_, cooperation_organ_id_, enlightenment_course_time_,
          parent_meeting_time_, img_, director_user_id_, is_classroom_lessons_, memo_, expect_start_group_date_,
-         ownership_type_, repair_user_id_, del_flag_,payment_valid_start_date_,payment_valid_end_date_,payment_pattern_)
+         ownership_type_, repair_user_id_, del_flag_,payment_valid_start_date_,payment_valid_end_date_,payment_pattern_,course_view_type_)
         VALUES (#{id}, #{name}, #{organId}, #{schoolId}, #{applyExpireDate},#{preApplyExpireDate}, #{teamTeacherId}, #{educationalTeacherId},
                 #{chargeTypeId}, #{courseForm}, now(), now(),
                 #{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{billStartDate},
@@ -82,7 +83,7 @@
                 #{cooperationOrganId}, #{enlightenmentCourseTime}, #{parentMeetingTime}, #{img}, #{directorUserId},
                 #{isClassroomLessons}, #{memo}, #{expectStartGroupDate},
                 #{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{repairUserId},
-                #{delFlag},#{paymentValidStartDate},#{paymentValidEndDate},#{paymentPattern})
+                #{delFlag},#{paymentValidStartDate},#{paymentValidEndDate},#{paymentPattern},#{courseViewType})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -172,6 +173,9 @@
             <if test="groupMemberNum != null">
                 group_member_num_ = #{groupMemberNum},
             </if>
+            <if test="courseViewType != null">
+                course_view_type_ = #{courseViewType},
+            </if>
             <if test="memo != null">
                 memo_ = #{memo},
             </if>

+ 0 - 4
mec-common/common-core/src/main/java/com/ym/mec/common/page/PageInfo.java

@@ -132,10 +132,6 @@ public class PageInfo<T> implements Serializable {
 	public void setTotal(int total) {
 		this.total = total;
 		this.totalPage=new BigDecimal(total).divide(new BigDecimal(limit),0,BigDecimal.ROUND_CEILING).intValue();
-		if(this.pageNo>total){
-			this.pageNo = total;
-			this.offset = (this.pageNo - 1) * this.limit;
-		}
 	}
 
 	public List<T> getRows() {

+ 1 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -148,6 +148,7 @@ public class StudentOrderController extends BaseController {
             orderDetail.put("ownershipType", musicGroup.getOwnershipType());
             orderDetail.put("detailType", orderDetailType);
             orderDetail.put("chargeTypeId", musicGroup.getChargeTypeId());
+            orderDetail.put("courseViewType", musicGroup.getCourseViewType());
 
             //新的课程形态10.27
             MusicGroupPaymentCalender musicGroupRegCalender = musicGroupPaymentCalenderDao.getMusicGroupRegCalender(musicGroup.getId());