Pārlūkot izejas kodu

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 5 gadi atpakaļ
vecāks
revīzija
8da4216c03

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherCourseStatisticsDao.java

@@ -0,0 +1,18 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.TeacherCourseStatistics;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+public interface TeacherCourseStatisticsDao extends BaseDAO<Long, TeacherCourseStatistics> {
+
+    List<TeacherCourseStatistics> findUserByWarringSalary(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("salary") BigDecimal salary);
+
+    List<TeacherCourseStatistics> findUserCourseSalaryByUserIds(@Param("userIds") List<Integer> userIds);
+
+    int batchAdd(@Param("lists") List<TeacherCourseStatistics> lists);
+}

+ 209 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherCourseStatistics.java

@@ -0,0 +1,209 @@
+package com.ym.mec.biz.dal.entity;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class TeacherCourseStatistics {
+    private Long id;
+
+    /**
+     * 教师id
+     */
+    private Integer userId;
+
+    /**
+    * 分部
+    */
+    private Integer organId;
+
+    /**
+    * 月份
+    */
+    private Date month;
+
+    /**
+    * 专业
+    */
+    private String subjectIdList;
+
+    /**
+    * vip课节数
+    */
+    private Integer vipCourseNum;
+
+    /**
+    * 乐团课节数
+    */
+    private Integer musicCourseNum;
+
+    /**
+    * 预计乐团课酬
+    */
+    private BigDecimal expectMusicCourseSalary;
+
+    /**
+    * 预计小课课酬
+    */
+    private BigDecimal expectVipCourseSalary;
+
+    /**
+    * 预计合计课酬
+    */
+    private BigDecimal expectTotalSalary;
+
+    /**
+    * 平均上课时长
+    */
+    private Integer averageClassMinutes;
+
+    /**
+    * 统计时间
+    */
+    private Date statisticsDateTime;
+
+    private String groupType;
+
+    private String realName;
+
+    private String phone;
+
+    private String organName;
+
+    private String monthStr;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public Date getMonth() {
+        return month;
+    }
+
+    public void setMonth(Date month) {
+        this.month = month;
+    }
+
+    public String getSubjectIdList() {
+        return subjectIdList;
+    }
+
+    public void setSubjectIdList(String subjectIdList) {
+        this.subjectIdList = subjectIdList;
+    }
+
+    public Integer getVipCourseNum() {
+        return vipCourseNum;
+    }
+
+    public void setVipCourseNum(Integer vipCourseNum) {
+        this.vipCourseNum = vipCourseNum;
+    }
+
+    public Integer getMusicCourseNum() {
+        return musicCourseNum;
+    }
+
+    public void setMusicCourseNum(Integer musicCourseNum) {
+        this.musicCourseNum = musicCourseNum;
+    }
+
+    public BigDecimal getExpectMusicCourseSalary() {
+        return expectMusicCourseSalary;
+    }
+
+    public void setExpectMusicCourseSalary(BigDecimal expectMusicCourseSalary) {
+        this.expectMusicCourseSalary = expectMusicCourseSalary;
+    }
+
+    public BigDecimal getExpectVipCourseSalary() {
+        return expectVipCourseSalary;
+    }
+
+    public void setExpectVipCourseSalary(BigDecimal expectVipCourseSalary) {
+        this.expectVipCourseSalary = expectVipCourseSalary;
+    }
+
+    public BigDecimal getExpectTotalSalary() {
+        return expectTotalSalary;
+    }
+
+    public void setExpectTotalSalary(BigDecimal expectTotalSalary) {
+        this.expectTotalSalary = expectTotalSalary;
+    }
+
+    public Integer getAverageClassMinutes() {
+        return averageClassMinutes;
+    }
+
+    public void setAverageClassMinutes(Integer averageClassMinutes) {
+        this.averageClassMinutes = averageClassMinutes;
+    }
+
+    public Date getStatisticsDateTime() {
+        return statisticsDateTime;
+    }
+
+    public void setStatisticsDateTime(Date statisticsDateTime) {
+        this.statisticsDateTime = statisticsDateTime;
+    }
+
+    public String getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(String groupType) {
+        this.groupType = groupType;
+    }
+
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getMonthStr() {
+        return monthStr;
+    }
+
+    public void setMonthStr(String monthStr) {
+        this.monthStr = monthStr;
+    }
+}

+ 54 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherCourseStatisticsQueryInfo.java

@@ -0,0 +1,54 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+import java.util.List;
+
+public class TeacherCourseStatisticsQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "机构编号")
+    private String organId;
+
+    @ApiModelProperty(value = "教师编号")
+    private Integer userId;
+
+    @ApiModelProperty(value = "月份")
+    private String monthStr;
+
+    @ApiModelProperty(value = "月份")
+    private Date month;
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getMonthStr() {
+        return monthStr;
+    }
+
+    public void setMonthStr(String monthStr) {
+        this.monthStr = monthStr;
+    }
+
+    public Date getMonth() {
+        return month;
+    }
+
+    public void setMonth(Date month) {
+        this.month = month;
+    }
+}

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherCourseStatisticsService.java

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.entity.TeacherCourseStatistics;
+import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.BaseService;
+
+
+public interface TeacherCourseStatisticsService extends BaseService<Long, TeacherCourseStatistics> {
+
+    /**
+     * 分页查询查询
+     *
+     * @param queryInfo
+     * @return
+     */
+    PageInfo<TeacherCourseStatistics> queryPageDetail(TeacherCourseStatisticsQueryInfo queryInfo);
+
+}

+ 38 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherCourseStatisticsServiceImpl.java

@@ -0,0 +1,38 @@
+package com.ym.mec.biz.service.impl;
+
+
+import com.ym.mec.biz.dal.dao.TeacherCourseStatisticsDao;
+import com.ym.mec.biz.dal.entity.TeacherCourseStatistics;
+import com.ym.mec.biz.dal.page.TeacherCourseStatisticsQueryInfo;
+import com.ym.mec.biz.service.TeacherCourseStatisticsService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.collection.MapUtil;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+public class TeacherCourseStatisticsServiceImpl extends BaseServiceImpl<Long, TeacherCourseStatistics> implements TeacherCourseStatisticsService {
+
+    @Autowired
+    private TeacherCourseStatisticsDao teacherCourseStatisticsDao;
+
+    @Override
+    public BaseDAO<Long, TeacherCourseStatistics> getDAO() {
+        return teacherCourseStatisticsDao;
+    }
+
+    @Override
+    public PageInfo<TeacherCourseStatistics> queryPageDetail(TeacherCourseStatisticsQueryInfo queryInfo) {
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        PageInfo<TeacherCourseStatistics> pageInfo = queryPage(queryInfo);
+        List<TeacherCourseStatistics> rows = pageInfo.getRows();
+        return pageInfo;
+    }
+}

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

@@ -1245,6 +1245,7 @@
     <select id="queryTeacherCourseScheduleListByTimeRangeAndType" resultMap="CourseSchedule" parameterType="map">
         SELECT
             cs.id_,
+            cs.music_group_id_,
             cs.class_group_id_,
             cs.status_,
             cs.subsidy_,

+ 99 - 0
mec-biz/src/main/resources/config/mybatis/TeacherCourseStatisticsMapper.xml

@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.TeacherCourseStatisticsDao">
+    <resultMap id="TeacherCourseStatistics" type="com.ym.mec.biz.dal.entity.TeacherCourseStatistics">
+        <result column="id_" jdbcType="BIGINT" property="id"/>
+        <result column="user_id_" jdbcType="INTEGER" property="userId"/>
+        <result column="organ_id_" jdbcType="INTEGER" property="organId"/>
+        <result column="month_" jdbcType="DATE" property="month"/>
+        <result column="subject_id_list_" jdbcType="VARCHAR" property="subjectIdList"/>
+        <result column="vip_course_num_" jdbcType="INTEGER" property="vipCourseNum"/>
+        <result column="music_course_num_" jdbcType="INTEGER" property="musicCourseNum"/>
+        <result column="expect_music_course_salary_" jdbcType="DECIMAL" property="expectMusicCourseSalary"/>
+        <result column="expect_vip_course_salary_" jdbcType="DECIMAL" property="expectVipCourseSalary"/>
+        <result column="expect_total_salary_" jdbcType="DECIMAL" property="expectTotalSalary"/>
+        <result column="average_class_minutes_" jdbcType="INTEGER" property="averageClassMinutes"/>
+        <result column="statistics_date_time_" jdbcType="DATE" property="statisticsDateTime"/>
+        <result column="group_type_" jdbcType="VARCHAR" property="groupType"/>
+        <result column="real_name_" jdbcType="VARCHAR" property="realName"/>
+        <result column="phone_" jdbcType="VARCHAR" property="phone"/>
+        <result column="organ_name_" jdbcType="VARCHAR" property="organName"/>
+        <result column="month_str_" jdbcType="VARCHAR" property="monthStr"/>
+    </resultMap>
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.TeacherCourseStatistics" useGeneratedKeys="true"
+            keyColumn="id" keyProperty="id">
+        INSERT INTO teacher_course_statistics (id_, user_id_, organ_id_, month_,
+        subject_id_list_, vip_course_num_, music_course_num_,
+        expect_music_course_salary_, expect_vip_course_salary_,
+        expect_total_salary_, average_class_minutes_,
+        statistics_date_time_)
+        VALUES (#{id,jdbcType=BIGINT}, #{userId,jdbcType=INTEGER}, #{organId,jdbcType=INTEGER}, #{month,jdbcType=DATE},
+        #{subjectIdList,jdbcType=VARCHAR}, #{vipCourseNum,jdbcType=INTEGER}, #{musicCourseNum,jdbcType=INTEGER},
+        #{expectMusicCourseSalary,jdbcType=DECIMAL}, #{expectVipCourseSalary,jdbcType=DECIMAL},
+        #{expectTotalSalary,jdbcType=DECIMAL}, #{averageClassMinutes,jdbcType=INTEGER},NOW())
+    </insert>
+
+    <insert id="batchAdd" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+        INSERT INTO teacher_course_statistics (id_, user_id_, organ_id_, month_,
+        subject_id_list_, vip_course_num_, music_course_num_,
+        expect_music_course_salary_, expect_vip_course_salary_,
+        expect_total_salary_, average_class_minutes_,statistics_date_time_)
+        VALUE
+        <foreach collection="lists" item="list" separator=",">
+        (#{list.id,jdbcType=BIGINT}, #{list.userId,jdbcType=INTEGER}, #{list.organId,jdbcType=INTEGER}, #{list.month,jdbcType=DATE},
+        #{list.subjectIdList,jdbcType=VARCHAR}, #{list.vipCourseNum,jdbcType=INTEGER}, #{list.musicCourseNum,jdbcType=INTEGER},
+        #{list.expectMusicCourseSalary,jdbcType=DECIMAL}, #{list.expectVipCourseSalary,jdbcType=DECIMAL},
+        #{list.expectTotalSalary,jdbcType=DECIMAL}, #{list.averageClassMinutes,jdbcType=INTEGER},NOW())
+        </foreach>
+    </insert>
+
+    <!-- 查找下月排课小于基准课酬的老师-->
+    <select id="findUserByWarringSalary" resultMap="TeacherCourseStatistics"><![CDATA[
+        SELECT SUM(csts.expect_salary_) expect_total_salary_, csts.user_id_,t.organ_id_,t.subject_id_ subject_id_list_,
+        ROUND(AVG(TIMESTAMPDIFF(MINUTE,start_class_time_,end_class_time_)),0) average_class_minutes_
+        FROM course_schedule_teacher_salary csts
+        LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
+        LEFT JOIN teacher t on t.id_ = csts.user_id_
+        WHERE cs.class_date_ >= #{startDate} AND cs.class_date_ <= #{endDate}
+        GROUP BY csts.user_id_ HAVING expect_total_salary_ <= #{salary}
+        ]]>
+  </select>
+    <select id="findUserCourseSalaryByUserIds" resultMap="TeacherCourseStatistics">
+        SELECT SUM(csts.expect_salary_) expect_total_salary_, COUNT(csts.id_) music_course_num_, csts.user_id_, csts.group_type_
+        FROM course_schedule_teacher_salary csts LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
+        WHERE csts.user_id_ IN
+        <foreach collection="userIds" item="userId" open="(" separator="," close=")">
+            #{userId}
+        </foreach>
+        GROUP BY csts.user_id_, csts.group_type_;
+  </select>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="TeacherCourseStatistics" parameterType="map">
+        SELECT tcs.*,u.real_name_,u.phone_,o.name_ organ_name_,DATE_FORMAT(tcs.month_,'%Y年%m月') month_str_ FROM teacher_course_statistics tcs
+        left join sys_user u on tcs.user_id_ = u.id_
+        left join organization o on tcs.organ_id_ = o.id_
+        <include refid="queryParams"/>
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int" parameterType="map">
+        SELECT COUNT(*) FROM teacher_course_statistics tcs
+        <include refid="queryParams"/>
+    </select>
+
+    <sql id="queryParams">
+        <where>
+            <if test="organId != null">
+                AND FIND_IN_SET(tcs.organ_id_,#{organId})
+            </if>
+            <if test="monthStr != null">
+                AND DATE_FORMAT(tcs.month_,'%Y-%m-%d') &gt;= #{monthStr}
+            </if>
+            <if test="userId != null">
+                AND tcs.user_id_ = #{userId}
+            </if>
+        </where>
+    </sql>
+</mapper>

+ 48 - 8
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -2,10 +2,12 @@ package com.ym.mec.student.controller;
 
 import com.ym.mec.biz.dal.dao.OrganizationDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dao.TeacherCourseStatisticsDao;
 import com.ym.mec.biz.dal.dto.LuckStatisDto;
 import com.ym.mec.biz.dal.dto.OrderStatisDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -76,6 +78,8 @@ public class StudentOrderController extends BaseController {
     private SporadicChargeInfoService sporadicChargeInfoService;
     @Autowired
     private OrganizationDao organizationDao;
+    @Autowired
+    private TeacherCourseStatisticsDao teacherCourseStatisticsDao;
 
     @PostMapping("/notify")
     public Msg notify(@ModelAttribute Msg msg) throws Exception {
@@ -126,7 +130,7 @@ public class StudentOrderController extends BaseController {
             List<Goods> goodsList = studentPaymentOrderDetailService.findApplyOrderGoods(orderByOrderNo.getId());
             orderDetail.put("goods", goodsList);
             orderDetail.put("course", musicGroup.getCourseForm());
-            orderDetail.put("ownershipType",musicGroup.getOwnershipType());
+            orderDetail.put("ownershipType", musicGroup.getOwnershipType());
         } else if (orderByOrderNo.getGroupType().equals(GroupType.VIP)) {
             VipBuyResultDto vipBuyResultInfo = vipGroupService.findVipBuyResultInfo(Integer.valueOf(orderByOrderNo.getMusicGroupId()));
             orderDetail.put("detail", vipBuyResultInfo);
@@ -285,7 +289,7 @@ public class StudentOrderController extends BaseController {
 
 
     @RequestMapping("paymentResult")
-    public void paymentResult(HttpServletResponse response,String orderNo) {
+    public void paymentResult(HttpServletResponse response, String orderNo) {
         try {
             String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
             response.sendRedirect(baseApiUrl + "/#/paymentresult?orderNo=" + orderNo);
@@ -320,9 +324,9 @@ public class StudentOrderController extends BaseController {
         BigDecimal totalMoney = BigDecimal.ZERO;
         Integer totalNum = 0;
         Iterator<OrderStatisDto> iterator = orders.iterator();
-        while (iterator.hasNext()){
+        while (iterator.hasNext()) {
             OrderStatisDto order = iterator.next();
-            if (order.getOrganName().equals("总部国际") || order.getOrganName().equals("阳光总部国际") || order.getOrganName().equals("武汉小学")){
+            if (order.getOrganName().equals("总部国际") || order.getOrganName().equals("阳光总部国际") || order.getOrganName().equals("武汉小学")) {
                 iterator.remove();
                 continue;
             }
@@ -369,22 +373,58 @@ public class StudentOrderController extends BaseController {
                 if (tempRoutingResultList.contains("武汉大雅乐盟教育咨询有限公司")) {
                     type = "com";
                 }
-                fixUpdateOrder(orderNo,type);
+                fixUpdateOrder(orderNo, type);
             }
         }
     }
 
-    void fixUpdateOrder(String orderNo,String type) {
+    void fixUpdateOrder(String orderNo, String type) {
         StudentPaymentOrder order = studentPaymentOrderService.findOrderByOrderNo(orderNo);
-        if(type.equals("com")){
+        if (type.equals("com")) {
             order.setComAmount(order.getActualAmount());
             order.setPerAmount(BigDecimal.ZERO);
             order.setMerNos("0023115");
-        }else {
+        } else {
             order.setComAmount(BigDecimal.ZERO);
             order.setPerAmount(order.getActualAmount());
             order.setMerNos("0031215");
         }
         studentPaymentOrderService.update(order);
     }
+
+    @GetMapping("/teacherCourseStatistic")
+    public HttpResponseResult teacherCourseStatistic() {
+        Date nowDate = new Date();
+        Date startDate = DateUtil.getFirstDayOfMonth(nowDate);
+        Date endDate = DateUtil.getLastDayOfMonth(nowDate);
+        BigDecimal salary = new BigDecimal("4000");
+        List<TeacherCourseStatistics> teacherCourseStatisticsList = teacherCourseStatisticsDao.findUserByWarringSalary(startDate, endDate, salary);
+        if(teacherCourseStatisticsList.size() ==0){
+            return failed("没有做");
+        }
+        List<Integer> userIds = teacherCourseStatisticsList.stream().map(TeacherCourseStatistics::getUserId).collect(Collectors.toList());
+
+        List<TeacherCourseStatistics> teCourseSalaryStatisAndTypes = teacherCourseStatisticsDao.findUserCourseSalaryByUserIds(userIds);
+
+        for (TeacherCourseStatistics teacherCourseStatistics : teacherCourseStatisticsList) {
+            for (TeacherCourseStatistics teCourseSalaryStatisAndType : teCourseSalaryStatisAndTypes) {
+                if(!teacherCourseStatistics.getUserId().equals(teCourseSalaryStatisAndType.getUserId())) continue;
+
+                if(teCourseSalaryStatisAndType.getGroupType().equals("VIP")){
+                    teacherCourseStatistics.setExpectVipCourseSalary(teCourseSalaryStatisAndType.getExpectTotalSalary());
+                    teacherCourseStatistics.setVipCourseNum(teCourseSalaryStatisAndType.getMusicCourseNum());
+                }else if(teCourseSalaryStatisAndType.getGroupType().equals("MUSIC")){
+                    teacherCourseStatistics.setExpectMusicCourseSalary(teCourseSalaryStatisAndType.getExpectTotalSalary());
+                    teacherCourseStatistics.setMusicCourseNum(teCourseSalaryStatisAndType.getMusicCourseNum());
+                }
+            }
+            if(teacherCourseStatistics.getSubjectIdList()==null){
+                teacherCourseStatistics.setSubjectIdList("");
+            }
+            teacherCourseStatistics.setMonth(startDate);
+        }
+
+        teacherCourseStatisticsDao.batchAdd(teacherCourseStatisticsList);
+        return succeed(teacherCourseStatisticsList);
+    }
 }

+ 59 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherCourseStatisticsController.java

@@ -0,0 +1,59 @@
+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.EmployeeDao;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.page.TeacherCourseStatisticsQueryInfo;
+import com.ym.mec.biz.service.TeacherCourseStatisticsService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+import java.util.List;
+
+
+@RequestMapping("teacherCourseStatistics")
+@Api(tags = "教师服务")
+@RestController
+public class TeacherCourseStatisticsController extends BaseController {
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
+
+    @Autowired
+    private TeacherCourseStatisticsService teacherCourseStatisticsService;
+
+    @ApiOperation(value = "分页查询教师列表")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('teacherCourseStatistics/queryPage')")
+    public Object queryPage(TeacherCourseStatisticsQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if(!sysUser.getIsSuperAdmin()){
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+                queryInfo.setOrganId(employee.getOrganIdList());
+            }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+                return failed("用户所在分部异常");
+            }else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
+                    return failed("非法请求");
+                }
+            }
+        }
+        return succeed(teacherCourseStatisticsService.queryPage(queryInfo));
+    }
+}