周箭河 %!s(int64=4) %!d(string=hai) anos
pai
achega
91f7647eec

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CooperationOrganDao.java

@@ -4,6 +4,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import com.ym.mec.biz.dal.dto.OrganFullJobResourceNumDto;
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
@@ -14,6 +15,7 @@ public interface CooperationOrganDao extends BaseDAO<Integer, CooperationOrgan>
 
     /**
      * 根据机构编号获取合作单位(教学点)列表
+     *
      * @param organId
      * @return
      */
@@ -21,8 +23,12 @@ public interface CooperationOrganDao extends BaseDAO<Integer, CooperationOrgan>
 
     /**
      * 根据合作机构编号列表获取合作机构名称
+     *
      * @param organIds
      * @return
      */
-    List<Map<Integer,String>> queryNameByIds(String organIds);
+    List<Map<Integer, String>> queryNameByIds(String organIds);
+
+
+    List<OrganFullJobResourceNumDto> getOrganFullJobResourceNum();
 }

+ 47 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SellOrderDao.java

@@ -1,12 +1,59 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.entity.OperatingReport;
 import com.ym.mec.biz.dal.entity.SellOrder;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
 
     int batchInsert(@Param("sellOrders") List<SellOrder> sellOrders);
+
+    /**
+     * 获取分部学校的收入支出(乐团订单)
+     *
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<OperatingReport> getMusicGroupMonthReport(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    /**
+     * 获取分部学校的收入支出(VIP 网管课订单)
+     *
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<OperatingReport> getMusicVipPracticeMonthReport(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    /**
+     * 获取分部学校的收入支出(外部订单)
+     *
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<OperatingReport> getOutOrderMonthReport(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    /**
+     * 获取分部学校的收入支出(充值)
+     *
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<OperatingReport> getRechargeMonthReport(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    /**
+     * 获取分部学校的收入支出(零星支付)
+     *
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<OperatingReport> getSporadicMonthReport(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
 }

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/OrganFullJobResourceNumDto.java

@@ -0,0 +1,26 @@
+package com.ym.mec.biz.dal.dto;
+
+/**
+ * 合作单位全职资源数
+ */
+public class OrganFullJobResourceNumDto {
+    private Integer organId;
+
+    private Integer num;
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+}

+ 48 - 26
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OperatingReportServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.OrganFullJobResourceNumDto;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.OperatingReport;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
@@ -23,6 +24,8 @@ public class OperatingReportServiceImpl extends BaseServiceImpl<Integer, Operati
     private OperatingReportDao operatingReportDao;
     private StudentPaymentOrderDao studentPaymentOrderDao;
     private MusicGroupDao musicGroupDao;
+    private SellOrderDao sellOrderDao;
+    private CooperationOrganDao cooperationOrganDao;
 
 
     @Override
@@ -34,35 +37,54 @@ public class OperatingReportServiceImpl extends BaseServiceImpl<Integer, Operati
     public List<OperatingReport> statistics() {
         Date nowDate = new Date();
         Date startTime = DateUtil.addDays1(nowDate, -1);
-        Map<String, Object> params = new HashMap<>();
-        params.put("orderStartDate", DateUtil.getDate(startTime));
-        params.put("orderEndDate", DateUtil.getDate(startTime));
-        params.put("paymentStatus", "SUCCESS");
-
-//        APPLY("APPLY", "报名"),
-//                RENEW("RENEW", "续费"),
-//                SPORADIC("SPORADIC", "零星收费"),
-//                OTHER("OTHER", "其他"),
-//                SMALL_CLASS_TO_BUY("SMALL_CLASS_TO_BUY", "VIP购买"),
-//                PRACTICE_GROUP_BUY("PRACTICE_GROUP_BUY", "网管课购买"),
-//                PRACTICE_GROUP_RENEW("PRACTICE_GROUP_RENEW", "网管课续费"),
-//                COURSE_GROUP_BUY("COURSE_GROUP_BUY","对外课程购买"),
-//                LUCK("LUCK", "福袋活动"),
-//                TENANT_RECHARGE("TENANT_RECHARGE","租户充值"),
-//                REPAIR("REPAIR","乐器维修");
+        Date endTime = DateUtil.getLastDayOfMonth(startTime);
+
+        /**
+         * 	MUSIC("乐团课"),
+         * 	VIP("VIP课"),
+         * 	DEMO("试听课"),
+         * 	SPORADIC("零星收费"),
+         * 	PRACTICE("网管课"),
+         * 	COMM("对外课程"),
+         * 	REPAIR("乐器维修"),
+         * 	OUTORDER("外部订单");
+         */
+        /**
+         *         分摊费用计算公式:全职资源数*全职资源公摊金额/12
+         *
+         *         成本费用合计:销售成本+固定支出+变动支出+分摊费用
+         *
+         *         利润:收入合计-成本费用合计
+         *
+         *        【全职资源数】*【全职资源公摊金额】/12,该公式得出的值为【学校】【每月】的公摊费用
+         */
+
+        //1、获取分部的全职资源数的分摊费用
+        List<OrganFullJobResourceNumDto> organFullJobResourceNum = cooperationOrganDao.getOrganFullJobResourceNum();
+
+
+        //2、获取支出费用
+
+        //3.1、乐团订单的统计
+        List<OperatingReport> musicReports = sellOrderDao.getMusicGroupMonthReport(startTime, endTime);
+
+        //3.2、VIP、网管课订单的统计(关联学生注册取一条记录)
+        List<OperatingReport> VPReports = sellOrderDao.getMusicVipPracticeMonthReport(startTime, endTime);
+
+        //3.3、外部添加订单
+        List<OperatingReport> outOrderReports = sellOrderDao.getOutOrderMonthReport(startTime, endTime);
+
+        //3.4、乐器维修
+
+        //3.5、零星支付充值
+        List<OperatingReport> rechargeReports = sellOrderDao.getRechargeMonthReport(startTime, endTime);
+
+        //3.6、零星收费(不是充值部分的)
+        List<OperatingReport> sporadicReports = sellOrderDao.getSporadicMonthReport(startTime, endTime);
+
 
         Map<String, OperatingReport> schoolOperating = new HashMap<>();
         Map<String, OperatingReport> organOperating = new HashMap<>();
-        List<StudentPaymentOrder> orders = studentPaymentOrderDao.queryPageOrder(params);
-        for (StudentPaymentOrder order : orders) {
-            if(order.getType().equals(OrderTypeEnum.APPLY)){
-                continue;
-            }
-            if(order.getType().equals(OrderTypeEnum.RENEW)){
-                MusicGroup musicGroup = musicGroupDao.get(order.getMusicGroupId());
-            }
-
-        }
 
         return null;
 

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml

@@ -128,4 +128,10 @@
         SELECT co.id_ 'key',co.name_ 'value' FROM cooperation_organ co
         WHERE FIND_IN_SET(co.id_,#{organIds}) AND co.del_flag_ != 1
     </select>
+
+    <select id="getOrganFullJobResourceNum" resultType="com.ym.mec.biz.dal.dto.OrganFullJobResourceNumDto">
+        SELECT organ_id_ organId,COUNT(*) num FROM cooperation_organ
+        WHERE full_job_resource_ =1 AND is_enable_=1 AND del_flag_ = 0
+        GROUP BY organ_id_
+    </select>
 </mapper>

+ 89 - 2
mec-biz/src/main/resources/config/mybatis/SellOrderMapper.xml

@@ -185,7 +185,94 @@
         </where>
     </sql>
 
-    <select id="getSellOrder" resultMap="SellOrder">
+    <!-- 获取分部学校的收入支出(乐团订单) -->
+    <select id="getMusicGroupMonthReport" resultMap="com.ym.mec.biz.dal.dao.OperatingReportDao.OperatingReport"><![CDATA[
+        SELECT spo.organ_id_,
+               co.id_                  school_id_,
+               SUM(spo.actual_amount_) income_total_,
+               SUM(so.actual_amount_)  sell_amount_,
+               SUM(so.sell_cost_)      sellCost
+        FROM student_payment_order spo
+                 LEFT JOIN sell_order so on so.order_id_ = spo.id_
+                 LEFT JOIN music_group mg ON mg.id_ = spo.music_group_id_
+                 LEFT JOIN cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
+        WHERE spo.status_ = 'SUCCESS'
+          AND spo.group_type_ = 'MUSIC'
+          AND spo.create_time_ >= #{startTime}
+          AND spo.create_time_ <= #{endTime}
+        GROUP BY spo.organ_id_, co.id_
+        ]]></select>
 
-    </select>
+    <!-- 获取分部学校的收入支出(VIP,网管课) -->
+    <select id="getMusicVipPracticeMonthReport" resultMap="com.ym.mec.biz.dal.dao.OperatingReportDao.OperatingReport"><![CDATA[
+        SELECT spo.organ_id_,
+               co.id_                  school_id_,
+               SUM(spo.actual_amount_) income_total_
+        FROM student_payment_order spo
+                 LEFT JOIN
+             (SELECT MIN(music_group_id_) music_group_id_, user_id_
+              FROM student_registration
+              WHERE music_group_status_ = 'NORMAL'
+              GROUP BY user_id_) sr
+             ON sr.user_id_ = spo.user_id_
+                 LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
+                 LEFT JOIN cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
+        WHERE spo.status_ = 'SUCCESS'
+          AND spo.group_type_ IN ('VIP', 'PRACTICE')
+          AND spo.create_time_ >= #{startTime}
+          AND spo.create_time_ <= #{endTime}
+        GROUP BY spo.organ_id_, co.id_
+        ]]></select>
+
+
+    <!-- 获取分部学校的收入支出(外部添加订单) -->
+    <select id="getOutOrderMonthReport" resultMap="com.ym.mec.biz.dal.dao.OperatingReportDao.OperatingReport"><![CDATA[
+        SELECT spo.organ_id_,
+               co.id_                  school_id_,
+               SUM(spo.actual_amount_) income_total_,
+               SUM(so.actual_amount_)  sell_amount_,
+               SUM(so.sell_cost_)      sellCost
+        FROM student_payment_order spo
+                 LEFT JOIN sell_order so on so.order_id_ = spo.id_
+                 LEFT JOIN cooperation_organ co ON co.id_ = spo.music_group_id_
+        WHERE spo.status_ = 'SUCCESS'
+          AND spo.group_type_ = 'OUTORDER'
+          AND spo.create_time_ >= #{startTime}
+          AND spo.create_time_ <= #{endTime}
+        GROUP BY spo.organ_id_, co.id_
+        ]]></select>
+
+    <!-- 获取分部学校的收入支出(充值) -->
+    <select id="getRechargeMonthReport" resultMap="com.ym.mec.biz.dal.dao.OperatingReportDao.OperatingReport"><![CDATA[
+        SELECT spo.organ_id_,
+               co.id_                  school_id_,
+               SUM(spo.actual_amount_) income_total_
+        FROM student_payment_order spo
+                 LEFT JOIN sporadic_charge_info sci ON sci.id_ = spo.music_group_id_
+                 LEFT JOIN music_group mg ON mg.id_ = sci.music_group_id_
+                 LEFT JOIN cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
+        WHERE spo.status_ = 'SUCCESS'
+          AND spo.group_type_ = 'SPORADIC'
+          AND sci.charge_type_ = '9'
+          AND spo.create_time_ >= #{startTime}
+          AND spo.create_time_ <= #{endTime}
+        GROUP BY spo.organ_id_, co.id_
+        ]]></select>
+
+    <!-- 获取分部学校的收入支出(零星支付) -->
+    <select id="getSporadicMonthReport" resultMap="com.ym.mec.biz.dal.dao.OperatingReportDao.OperatingReport"><![CDATA[
+        SELECT spo.organ_id_,
+               co.id_                  school_id_,
+               SUM(spo.actual_amount_) income_total_
+        FROM student_payment_order spo
+                 LEFT JOIN sporadic_charge_info sci ON sci.id_ = spo.music_group_id_
+                 LEFT JOIN music_group mg ON mg.id_ = sci.music_group_id_
+                 LEFT JOIN cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
+        WHERE spo.status_ = 'SUCCESS'
+          AND spo.group_type_ = 'SPORADIC'
+          AND sci.charge_type_ != '9'
+          AND spo.create_time_ >= #{startTime}
+          AND spo.create_time_ <= #{endTime}
+        GROUP BY spo.organ_id_, co.id_
+        ]]></select>
 </mapper>