Browse Source

系统收费首页经营报表

zouxuan 4 years ago
parent
commit
573cf4b0f6

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -295,6 +295,14 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
                                                                  @Param("orderType") String orderType,
                                                                  @Param("notOrderType") List<String> notOrderType);
 
+    List<IndexBaseMonthData> getVipAmountDataWithTimelyDetails(@Param("startDate") String startDate,
+                                                                 @Param("endDate") String endDate,
+                                                                 @Param("organIds") List<Integer> organIds);
+
+    List<IndexBaseMonthData> getOtherAmountDataWithTimelyDetails(@Param("startDate") String startDate,
+                                                                 @Param("endDate") String endDate,
+                                                                 @Param("organIds") List<Integer> organIds);
+
     int countStudentErrorLeave(@Param("organIdList") Set<Integer> organIdList, @Param("format") String format, @Param("classGroupIds") List<Long> classGroupIds);
 
     int countStudentErrorLeave1(Map<String, Object> params);

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

@@ -1,7 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
 import com.ym.mec.biz.dal.enums.IndexDataType;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -36,8 +35,6 @@ public class IndexBaseMonthData {
 
 	private IndexDataType dataType;
 
-	private OrderTypeEnum orderType;
-
 	private String extendInfo;
 
 	private Date createTime;
@@ -52,14 +49,6 @@ public class IndexBaseMonthData {
 		this.monthStr = monthStr;
 	}
 
-	public OrderTypeEnum getOrderType() {
-		return orderType;
-	}
-
-	public void setOrderType(OrderTypeEnum orderType) {
-		this.orderType = orderType;
-	}
-
 	public IndexBaseMonthData() {
 	}
 

+ 2 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -152,22 +152,15 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			List<IndexBaseMonthData> totalAmountDataWithTimely = indexBaseMonthDataDao.getTotalAmountDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds));
 			typeDateMap.put(IndexDataType.TOTAL_AMOUNT,totalAmountDataWithTimely);
 			//经营报表细化
-			List<String> orderTypeList = new ArrayList<>();
-			orderTypeList.add("APPLY");
-			orderTypeList.add("RENEW");
-			orderTypeList.add("SMALL_CLASS_TO_BUY");
-			orderTypeList.add("DOUBLE_ELEVEN2020");
-			orderTypeList.add("PRACTICE_GROUP_BUY");
-			orderTypeList.add("PRACTICE_GROUP_RENEW");
 			List<IndexBaseMonthData> applyAmount = indexBaseMonthDataDao.getTotalAmountDataWithTimelyDetails(startDate.toString(), endDate.toString(), new ArrayList<>(organIds),"APPLY",null);
 			typeDateMap.put(APPLY_AMOUNT,applyAmount);
 			List<IndexBaseMonthData> renewAmount = indexBaseMonthDataDao.getTotalAmountDataWithTimelyDetails(startDate.toString(), endDate.toString(), new ArrayList<>(organIds),"RENEW",null);
 			typeDateMap.put(RENEW_AMOUNT,renewAmount);
-			List<IndexBaseMonthData> vipAmount = indexBaseMonthDataDao.getTotalAmountDataWithTimelyDetails(startDate.toString(), endDate.toString(), new ArrayList<>(organIds),"SMALL_CLASS_TO_BUY,DOUBLE_ELEVEN2020",null);
+			List<IndexBaseMonthData> vipAmount = indexBaseMonthDataDao.getVipAmountDataWithTimelyDetails(startDate.toString(), endDate.toString(), new ArrayList<>(organIds));
 			typeDateMap.put(VIP_AMOUNT,vipAmount);
 			List<IndexBaseMonthData> practiceAmount = indexBaseMonthDataDao.getTotalAmountDataWithTimelyDetails(startDate.toString(), endDate.toString(), new ArrayList<>(organIds),"PRACTICE_GROUP_BUY,PRACTICE_GROUP_RENEW",null);
 			typeDateMap.put(PRACTICE_AMOUNT,practiceAmount);
-			List<IndexBaseMonthData> otherAmount = indexBaseMonthDataDao.getTotalAmountDataWithTimelyDetails(startDate.toString(), endDate.toString(), new ArrayList<>(organIds),null,orderTypeList);
+			List<IndexBaseMonthData> otherAmount = indexBaseMonthDataDao.getOtherAmountDataWithTimelyDetails(startDate.toString(), endDate.toString(), new ArrayList<>(organIds));
 			typeDateMap.put(OTHER_AMOUNT,otherAmount);
 		}
 

+ 64 - 3
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -15,7 +15,6 @@
 		<result column="activate_num_" property="activateNum" />
 		<result column="percent_" property="percent" />
 		<result column="data_type_" property="dataType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-		<result column="type_" property="orderType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 		<result column="extend_info_" property="extendInfo"/>
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
@@ -1337,7 +1336,7 @@
 			   SUM(CASE WHEN spo.actual_amount_ IS NULL THEN 0 ELSE spo.actual_amount_ END +
 		CASE WHEN spo.balance_payment_amount_ IS NULL THEN 0 ELSE spo.balance_payment_amount_ END) activate_num_,
 			   SUM(CASE WHEN spo.actual_amount_ IS NULL THEN 0 ELSE spo.actual_amount_ END +
-		CASE WHEN spo.balance_payment_amount_ IS NULL THEN 0 ELSE spo.balance_payment_amount_ END) percent_,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') month_,spo.type_
+		CASE WHEN spo.balance_payment_amount_ IS NULL THEN 0 ELSE spo.balance_payment_amount_ END) percent_,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') month_
 		FROM student_payment_order spo
 		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
 		<if test="orderType != null">
@@ -1355,7 +1354,69 @@
 				#{organId}
 			</foreach>
 		</if>
-		GROUP BY spo.type_,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
+		GROUP BY DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
+	</select>
+
+	<select id="getVipAmountDataWithTimelyDetails" resultMap="IndexBaseMonthData">
+		SELECT organ_id_,SUM(c.total_num_) total_num_,SUM(c.total_num_) activate_num_,SUM(c.total_num_) percent_,month_ FROM (
+		SELECT spo.organ_id_,SUM(CASE WHEN spod.price_ IS NULL THEN 0 ELSE spod.price_ END) total_num_,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') month_
+		FROM student_payment_order spo
+		LEFT JOIN student_payment_order_detail spod ON spo.id_ = spod.payment_order_id_
+		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+		AND spo.type_ = 'DEGREE' AND spod.type_ IN ('THEORY_COURSE','VIP')
+		<if test="organIds!=null and organIds.size()>0">
+			AND spo.organ_id_ IN
+			<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+				#{organId}
+			</foreach>
+		</if>
+		GROUP BY DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
+		UNION
+		SELECT spo.organ_id_,SUM(CASE WHEN spo.actual_amount_ IS NULL THEN 0 ELSE spo.actual_amount_ END +
+		CASE WHEN spo.balance_payment_amount_ IS NULL THEN 0 ELSE spo.balance_payment_amount_ END) total_num_
+		,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') month_
+		FROM student_payment_order spo
+		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+		AND spo.type_ = 'SMALL_CLASS_TO_BUY'
+		<if test="organIds!=null and organIds.size()>0">
+			AND spo.organ_id_ IN
+			<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+				#{organId}
+			</foreach>
+		</if>
+		GROUP BY DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
+		)c GROUP BY DATE_FORMAT(c.month_,'%Y-%m-%d')
+	</select>
+
+	<select id="getOtherAmountDataWithTimelyDetails" resultMap="IndexBaseMonthData">
+		SELECT organ_id_,SUM(c.total_num_) total_num_,month_ FROM (
+		SELECT spo.organ_id_,SUM(CASE WHEN spo.actual_amount_ IS NULL THEN 0 ELSE spo.actual_amount_ END +
+							   CASE WHEN spo.balance_payment_amount_ IS NULL THEN 0 ELSE spo.balance_payment_amount_ END) total_num_
+		   ,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') month_
+		FROM student_payment_order spo
+		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+		AND spo.type_ NOT IN ('APPLY','RENEW','PRACTICE_GROUP_BUY','PRACTICE_GROUP_RENEW','SMALL_CLASS_TO_BUY','DEGREE')
+		<if test="organIds!=null and organIds.size()>0">
+			AND spo.organ_id_ IN
+			<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+				#{organId}
+			</foreach>
+		</if>
+		GROUP BY DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
+		UNION
+		SELECT spo.organ_id_,SUM(CASE WHEN spod.price_ IS NULL THEN 0 ELSE spod.price_ END) total_num_,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') month_
+		FROM student_payment_order spo
+			   LEFT JOIN student_payment_order_detail spod ON spo.id_ = spod.payment_order_id_
+		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+		AND spo.type_ = 'DEGREE' AND spod.type_ = 'DEGREE_REGISTRATION'
+		<if test="organIds!=null and organIds.size()>0">
+			AND spo.organ_id_ IN
+			<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+				#{organId}
+			</foreach>
+		</if>
+		GROUP BY DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
+		)c GROUP BY DATE_FORMAT(c.month_,'%Y-%m-%d')
 	</select>
 
 	<sql id="queryTeacherServeInfoCondition">