Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

zouxuan 3 gadi atpakaļ
vecāks
revīzija
4a0dff2b38

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -542,4 +542,14 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      */
     Set<Integer> getHasVipCourseStudentIds(@Param("studentIds") List<Integer> studentIds);
 
+    /**
+     * @describe 查询分部还有小课和网管课的学员数量
+     * @author Joburgess
+     * @date 2021/8/18 0018
+     * @param studentIds:
+     * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
+     */
+    int getHasVPCourseStudentNum(@Param("organId") Integer organId);
+    List<Map<Integer, Integer>> getOrganHasVPCourseStudentNum(@Param("organIds") List<Integer> organIds);
+
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMusicCompareRecordDao.java

@@ -50,5 +50,15 @@ public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareR
     int countMusicGroupStudentTrainData(Map<String, Object> params);
 
     List<EduOrganStudentListDto> queryStudentTrainData(@Param("studentIds") List<Integer> studentIds);
+
+    /**
+     * @describe 统计分部云教练新增人数
+     * @author Joburgess
+     * @date 2021/8/18 0018
+     * @param organId:
+     * @return int
+     */
+    int getOrganNewCloudStudyNum(@Param("organId") Integer organId);
+    List<Map<Integer, Integer>> getOrgansNewCloudStudyNum(@Param("organIds") List<Integer> organIds);
 	
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EduOrganStudentDataDto.java

@@ -34,6 +34,9 @@ public class EduOrganStudentDataDto {
     @ApiModelProperty("活跃人数")
     private int cloudStudyLivelyStudentNum;
 
+    @ApiModelProperty("云教练新增人数")
+    private int newCloudStudyStudentNum;
+
     public Integer getOrganId() {
         return organId;
     }
@@ -105,4 +108,12 @@ public class EduOrganStudentDataDto {
     public void setCloudStudyLivelyStudentNum(int cloudStudyLivelyStudentNum) {
         this.cloudStudyLivelyStudentNum = cloudStudyLivelyStudentNum;
     }
+
+    public int getNewCloudStudyStudentNum() {
+        return newCloudStudyStudentNum;
+    }
+
+    public void setNewCloudStudyStudentNum(int newCloudStudyStudentNum) {
+        this.newCloudStudyStudentNum = newCloudStudyStudentNum;
+    }
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/OrganizationService.java

@@ -21,7 +21,7 @@ public interface OrganizationService extends BaseService<Integer, Organization>
      * 获取员工坐在分部列表
      * @return
      */
-    List<Organization> queryEmployeeOrgan() throws Exception;
+    List<Organization> queryEmployeeOrgan(Integer userId) throws Exception;
 
     /**
      * 获取员工坐在分部列表

+ 1 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java

@@ -42,12 +42,7 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 	}
 
 	@Override
-	public List<Organization> queryEmployeeOrgan(){
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if(sysUser == null){
-			throw new BizException("获取用户信息失败");
-		}
-		Integer userId = sysUser.getId();
+	public List<Organization> queryEmployeeOrgan(Integer userId){
 		return organizationDao.queryEmployeeOrgan(userId);
 	}
 

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -492,6 +492,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             organStudentVipData.seteVipStudentNum(studentDao.getOrganEVipStudentNum(queryInfo.getOrganId()));
             organStudentVipData.setCloudStudyUseStudentNum(studentDao.getCloudStudyStudentNum(queryInfo.getOrganId()));
             organStudentVipData.setCloudStudyLivelyStudentNum(studentDao.getCloudStudyLivelyStudentNum(queryInfo.getOrganId()));
+            organStudentVipData.setNewCloudStudyStudentNum(sysMusicCompareRecordDao.getOrganNewCloudStudyNum(queryInfo.getOrganId()));
             if(organStudentVipData.getVipStudentNum()>0&&organStudentVipData.getTotalStudentNum()>0){
                 organStudentVipData.setVipStudentDuty(new BigDecimal(organStudentVipData.getVipStudentNum()).divide(new BigDecimal(organStudentVipData.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
             }
@@ -535,6 +536,11 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         if(!CollectionUtils.isEmpty(organCloudStudyLivelyStudentNumMapList)){
             organCloudStudyLivelyStudentNumMap = MapUtil.convertIntegerMap(organCloudStudyLivelyStudentNumMapList);
         }
+        List<Map<Integer, Integer>> organsNewCloudStudyNumMapList = sysMusicCompareRecordDao.getOrgansNewCloudStudyNum(organIds);
+        Map<String, Long> organsNewCloudStudyNumMap = new HashMap<>();
+        if(!CollectionUtils.isEmpty(organsNewCloudStudyNumMapList)){
+            organsNewCloudStudyNumMap = MapUtil.convertIntegerMap(organsNewCloudStudyNumMapList);
+        }
 
         List<EduOrganStudentDataDto> result = new ArrayList<>();
 
@@ -563,6 +569,9 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             if(organStudentVipData.getCloudStudyUseStudentNum()>0&&organStudentVipData.getTotalStudentNum()>0){
                 organStudentVipData.setCloudStudyUseStudentDuty(new BigDecimal(organStudentVipData.getCloudStudyUseStudentNum()).divide(new BigDecimal(organStudentVipData.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
             }
+            if(organsNewCloudStudyNumMap.containsKey(organ.getId().toString())){
+                organStudentVipData.setNewCloudStudyStudentNum(organsNewCloudStudyNumMap.get(organ.getId().toString()).intValue());
+            }
             result.add(organStudentVipData);
         }
         return result;

+ 36 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -777,4 +777,40 @@
 			</foreach>
 		</if>
 	</select>
+
+	<select id="getHasVPCourseStudentNum" resultType="int">
+		SELECT
+			COUNT( DISTINCT cssp.user_id_ )
+		FROM
+			course_schedule_student_payment cssp
+			LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
+			LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
+		WHERE
+			cssp.group_type_ IN ('VIP', 'PRACTICE')
+			AND cs.status_='NOT_START'
+			AND su.del_flag_ = 0
+			AND su.organ_id_ = #{organId}
+	</select>
+
+    <select id="getOrganHasVPCourseStudentNum" resultType="map">
+		SELECT
+			su.organ_id_ 'key',
+			COUNT( DISTINCT cssp.user_id_ ) 'value'
+		FROM
+			course_schedule_student_payment cssp
+				LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
+				LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
+		WHERE
+			cssp.group_type_ IN ('VIP', 'PRACTICE')
+			  AND cs.status_='NOT_START'
+			  AND su.del_flag_ = 0
+			<if test="studentIds!=null and studentIds.size()>0">
+				AND su.organ_id_ IN
+				<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+					#{organId}
+				</foreach>
+			</if>
+		GROUP BY
+			su.organ_id_
+	</select>
 </mapper>

+ 43 - 14
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -776,29 +776,58 @@
     </select>
 
     <select id="getOrganStudentNum" resultType="int">
-        SELECT COUNT(stu.user_id_) totalStudentNum
-        FROM student stu
-            LEFT JOIN sys_user su ON stu.user_id_=su.id_
-        WHERE su.del_flag_=0
-        <if test="organId!=null">
-            AND su.organ_id_=#{organId}
-        </if>
+        SELECT COUNT(DISTINCT user_id_)
+        FROM ((SELECT sr.user_id_
+               FROM student_registration sr
+                        LEFT JOIN sys_user su ON sr.user_id_=su.id_
+               WHERE su.del_flag_=0
+                 AND sr.music_group_status_='NORMAL'
+                 AND su.organ_id_ = #{organId})
+              UNION ALL
+              (SELECT
+                   cssp.user_id_
+               FROM
+                   course_schedule_student_payment cssp
+                       LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
+                       LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
+               WHERE
+                   cssp.group_type_ IN ('VIP', 'PRACTICE')
+                 AND cs.status_='NOT_START'
+                 AND su.del_flag_ = 0
+                 AND su.organ_id_ = #{organId})) t
     </select>
 
     <select id="getOrgansStudentNum" resultType="map">
-        SELECT
-               su.organ_id_ 'key',
-               COUNT(stu.user_id_) 'value'
-        FROM student stu
-        LEFT JOIN sys_user su ON stu.user_id_=su.id_
+        SELECT t.organ_id_ 'key',COUNT(DISTINCT user_id_) 'value'
+        FROM ((SELECT su.organ_id_,sr.user_id_
+        FROM student_registration sr
+        LEFT JOIN sys_user su ON sr.user_id_=su.id_
         WHERE su.del_flag_=0
+        AND sr.music_group_status_='NORMAL'
         <if test="organIds!=null and organIds.size()>0">
             AND su.organ_id_ IN
             <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
                 #{organId}
             </foreach>
-        </if>
-        GROUP BY su.organ_id_
+        </if>)
+        UNION ALL
+        (SELECT
+        su.organ_id_,cssp.user_id_
+        FROM
+        course_schedule_student_payment cssp
+        LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
+        LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
+        WHERE
+        cssp.group_type_ IN ('VIP', 'PRACTICE')
+        AND cs.status_='NOT_START'
+        AND su.del_flag_ = 0
+        <if test="organIds!=null and organIds.size()>0">
+            AND su.organ_id_ IN
+            <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+                #{organId}
+            </foreach>
+        </if>)) t
+        GROUP BY t.organ_id_
     </select>
 
     <select id="getCloudStudyStudentNum" resultType="int">

+ 53 - 0
mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -233,4 +233,57 @@
 		GROUP BY
 			user_id_
 	</select>
+
+	<select id="getOrganNewCloudStudyNum" resultType="int">
+		SELECT
+			COUNT( DISTINCT user_id_ )
+		FROM
+			(
+				SELECT
+					su.organ_id_,
+					smcr.user_id_
+				FROM
+					sys_music_compare_record smcr
+						LEFT JOIN sys_user su ON smcr.user_id_ = su.id_
+				WHERE
+					su.del_flag_ = 0
+					AND su.organ_id_ = #{organId}
+				GROUP BY
+					user_id_
+				HAVING
+						COUNT(
+								DISTINCT DATE( smcr.create_time_ ))= 1
+				   AND MAX(
+							   DATE( smcr.create_time_ ))= CURDATE()) t
+	</select>
+
+	<select id="getOrgansNewCloudStudyNum" resultType="map">
+		SELECT
+			organ_id_ 'key',
+			COUNT( DISTINCT user_id_ ) 'value'
+		FROM
+			(
+				SELECT
+					su.organ_id_,
+					smcr.user_id_
+				FROM
+					sys_music_compare_record smcr
+						LEFT JOIN sys_user su ON smcr.user_id_ = su.id_
+				WHERE
+					su.del_flag_ = 0
+					<if test="organIds!=null and organIds.size()>0">
+						AND su.organ_id_ IN
+						<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+							#{organId}
+						</foreach>
+					</if>
+				GROUP BY
+					user_id_
+				HAVING
+						COUNT(
+								DISTINCT DATE( smcr.create_time_ ))= 1
+				   AND MAX(
+							   DATE( smcr.create_time_ ))= CURDATE()) t
+		GROUP BY t.organ_id_
+	</select>
 </mapper>

+ 9 - 1
mec-web/src/main/java/com/ym/mec/web/controller/OrganizationController.java

@@ -7,9 +7,12 @@ import com.ym.mec.biz.dal.page.OrganizationQueryInfo;
 import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -42,7 +45,12 @@ public class OrganizationController extends BaseController {
     @GetMapping("/queryEmployeeOrgan")
     @PreAuthorize("@pcs.hasPermissions('organization/queryEmployeeOrgan')")
     public Object queryEmployeeOrgan() throws Exception {
-        return succeed(organizationService.queryEmployeeOrgan());
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if(sysUser == null){
+			throw new BizException("获取用户信息失败");
+		}
+		Integer userId = sysUser.getId();
+        return succeed(organizationService.queryEmployeeOrgan(userId));
     }
 
     @ApiOperation(value = "获取员工所在分部列表(管理员查看所有的分部)")

+ 27 - 8
mec-web/src/main/java/com/ym/mec/web/controller/education/EduOrganizationController.java

@@ -1,17 +1,23 @@
 package com.ym.mec.web.controller.education;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
 import com.ym.mec.biz.service.CooperationOrganService;
 import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
+import com.ym.mec.common.exception.BizException;
 
 @RequestMapping("eduOrganization")
 @Api(tags = "分部服务")
@@ -22,11 +28,24 @@ public class EduOrganizationController extends BaseController {
     private OrganizationService organizationService;
     @Autowired
     private CooperationOrganService cooperationOrganService;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "获取员工所在分部列表")
+    @GetMapping("/queryAllOrgan")
+    public Object queryAllOrgan() throws Exception {
+        return succeed(organizationService.queryEmployeeOrgan(null));
+    }
 
     @ApiOperation(value = "获取员工所在分部列表")
     @GetMapping("/queryEmployeeOrgan")
     public Object queryEmployeeOrgan() throws Exception {
-        return succeed(organizationService.queryEmployeeOrgan());
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if(sysUser == null){
+			throw new BizException("获取用户信息失败");
+		}
+		Integer userId = sysUser.getId();
+        return succeed(organizationService.queryEmployeeOrgan(userId));
     }
 
     @ApiOperation(value = "根据分部id获取合作单位(学校)列表")

+ 13 - 1
mec-web/src/main/java/com/ym/mec/web/controller/education/EduStudentController.java

@@ -1,5 +1,7 @@
 package com.ym.mec.web.controller.education;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.EduOrganStudentDataDto;
 import com.ym.mec.biz.dal.dto.StatDto;
 import com.ym.mec.biz.dal.entity.Organization;
@@ -8,8 +10,11 @@ import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.StudentService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -33,6 +38,8 @@ public class EduStudentController extends BaseController {
     private StudentService studentService;
     @Autowired
     private OrganizationService organizationService;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "云教练学员数据")
     @GetMapping("/organStudentData")
@@ -43,7 +50,12 @@ public class EduStudentController extends BaseController {
     @ApiOperation(value = "分部云教练学员数据预览")
     @GetMapping("/organStudentOverView")
     public HttpResponseResult<List<EduOrganStudentDataDto>> organStudentOverView() throws Exception {
-        List<Organization> organizations = organizationService.queryEmployeeOrgan();
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if(sysUser == null){
+			throw new BizException("获取用户信息失败");
+		}
+		Integer userId = sysUser.getId();
+        List<Organization> organizations = organizationService.queryEmployeeOrgan(userId);
         if(CollectionUtils.isEmpty(organizations)){
             return succeed(Collections.emptyList());
         }