Pārlūkot izejas kodu

排课资格调整

zouxuan 3 gadi atpakaļ
vecāks
revīzija
02c3e80562

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ActivityUserMapperDao.java

@@ -1,11 +1,13 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.ActivityStudentDto;
 import com.ym.mec.biz.dal.entity.ActivityUserMapper;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Map;
 
 @Component
 public interface ActivityUserMapperDao extends BaseDAO<Integer, ActivityUserMapper> {
@@ -85,4 +87,22 @@ public interface ActivityUserMapperDao extends BaseDAO<Integer, ActivityUserMapp
      * @date 2021/11/1 16:21
      */
     void updateTeacherId(@Param("userId") Integer userId, @Param("teacherId") Integer teacherId);
+
+    /**
+    * @description: 获取学员活动排课资格列表
+     * @param params
+    * @return int
+    * @author zx
+    * @date 2021/11/15 16:38
+    */
+    int countActivityUserMapper(Map<String, Object> params);
+
+    /**
+     * @description: 获取学员活动排课资格列表
+     * @param params
+     * @return int
+     * @author zx
+     * @date 2021/11/15 16:38
+     */
+    List<ActivityStudentDto> queryActivityUserMapper(Map<String, Object> params);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1962,4 +1962,13 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     int getCourseNumNo(@Param("schoolTerm") MusicGroupTrainPlanSaveDto schoolTerm);
+
+    /**
+    * @description: 获取有课、没课的学员列表
+     * @param params
+    * @return java.util.List<java.lang.Integer>
+    * @author zx
+    * @date 2021/11/15 17:23
+    */
+    List<Integer> queryHasCourseStudentIds(Map<String, Object> params);
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -414,4 +414,8 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
     * @date 2021/10/13 13:34
     */
     void updateStudentMember(@Param("student") Student student);
+
+    int countStudent(Map<String, Object> params);
+
+    List<Student> queryStudent(Map<String, Object> params);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ActivityStudentQueryInfo.java

@@ -15,6 +15,16 @@ public class ActivityStudentQueryInfo extends QueryInfo {
 
     private Boolean giveFlag;
 
+    private String organId;
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
     public Boolean getGiveFlag() {
         return giveFlag;
     }

+ 68 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentActivityQueryInfo.java

@@ -0,0 +1,68 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+import java.util.List;
+
+public class StudentActivityQueryInfo extends QueryInfo {
+
+    private String organId;
+
+    private Integer subjectId;
+
+    private Boolean hasMusicCourse;
+
+    private Boolean hasVipCourse;
+
+    private Boolean hasPracticeCourse;
+
+    private Boolean hasMember;
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    public Integer getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Integer subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public Boolean getHasMusicCourse() {
+        return hasMusicCourse;
+    }
+
+    public void setHasMusicCourse(Boolean hasMusicCourse) {
+        this.hasMusicCourse = hasMusicCourse;
+    }
+
+    public Boolean getHasVipCourse() {
+        return hasVipCourse;
+    }
+
+    public void setHasVipCourse(Boolean hasVipCourse) {
+        this.hasVipCourse = hasVipCourse;
+    }
+
+    public Boolean getHasPracticeCourse() {
+        return hasPracticeCourse;
+    }
+
+    public void setHasPracticeCourse(Boolean hasPracticeCourse) {
+        this.hasPracticeCourse = hasPracticeCourse;
+    }
+
+    public Boolean getHasMember() {
+        return hasMember;
+    }
+
+    public void setHasMember(Boolean hasMember) {
+        this.hasMember = hasMember;
+    }
+}

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ActivityUserMapperService.java

@@ -1,6 +1,10 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.ActivityQueryDto;
+import com.ym.mec.biz.dal.dto.ActivityStudentDto;
 import com.ym.mec.biz.dal.entity.ActivityUserMapper;
+import com.ym.mec.biz.dal.page.ActivityStudentQueryInfo;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 import org.apache.ibatis.annotations.Param;
 
@@ -68,4 +72,13 @@ public interface ActivityUserMapperService extends BaseService<Integer, Activity
     * @date 2021/10/22 17:35
     */
     ActivityUserMapper findVipUserMapper(Long groupId,String groupType,Integer studentId);
+
+    /**
+    * @description: 获取学员活动排课资格列表
+     * @param queryInfo
+    * @return java.lang.Object
+    * @author zx
+    * @date 2021/11/15 16:34
+    */
+    PageInfo<ActivityStudentDto> queryActivityUserMapper(ActivityStudentQueryInfo queryInfo);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentManageService.java

@@ -218,4 +218,6 @@ public interface StudentManageService {
      * @param activityCourseDetailDto
      */
     void updateChildrenDayStudent(ActivityCourseDetailDto activityCourseDetailDto);
+
+    PageInfo<Student> queryStudent(StudentActivityQueryInfo queryInfo);
 }

+ 28 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java

@@ -1,14 +1,22 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.ActivityUserMapperDao;
+import com.ym.mec.biz.dal.dto.ActivityQueryDto;
+import com.ym.mec.biz.dal.dto.ActivityStudentDto;
 import com.ym.mec.biz.dal.entity.ActivityUserMapper;
+import com.ym.mec.biz.dal.page.ActivityStudentQueryInfo;
 import com.ym.mec.biz.service.ActivityUserMapperService;
 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.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, ActivityUserMapper>  implements ActivityUserMapperService {
@@ -50,4 +58,24 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 	public ActivityUserMapper findVipUserMapper(Long groupId, String groupType,Integer studentId) {
 		return activityUserMapperDao.findVipUserMapper(groupId,groupType,studentId);
 	}
+
+    @Override
+    public PageInfo<ActivityStudentDto> queryActivityUserMapper(ActivityStudentQueryInfo queryInfo) {
+		PageInfo<ActivityStudentDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<ActivityStudentDto> dataList = null;
+		int count = activityUserMapperDao.countActivityUserMapper(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = activityUserMapperDao.queryActivityUserMapper(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+    }
 }

+ 40 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -1013,4 +1013,44 @@ public class StudentManageServiceImpl implements StudentManageService {
         student.setActivityCourseDetail(JSON.toJSONString(activityCourseDetailDto));
         studentDao.update(student);
     }
+
+    @Override
+    public PageInfo<Student> queryStudent(StudentActivityQueryInfo queryInfo) {
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        List<Integer> studentIds = new ArrayList<>();
+        params.put("studentIds",studentIds);
+        if(queryInfo.getHasMusicCourse() != null){
+            params.put("groupType","MUSIC");
+            params.put("hasCourse",queryInfo.getHasMusicCourse());
+            studentIds = courseScheduleDao.queryHasCourseStudentIds(params);
+        }
+        if(queryInfo.getHasPracticeCourse() != null){
+            params.put("groupType","PRACTICE");
+            params.put("hasCourse",queryInfo.getHasPracticeCourse());
+            params.put("studentIds",studentIds);
+            studentIds = courseScheduleDao.queryHasCourseStudentIds(params);
+        }
+        if(queryInfo.getHasVipCourse() != null){
+            params.put("groupType","VIP");
+            params.put("hasCourse",queryInfo.getHasVipCourse());
+            params.put("studentIds",studentIds);
+            studentIds = courseScheduleDao.queryHasCourseStudentIds(params);
+        }
+        params.put("studentIds",studentIds);
+
+        PageInfo<Student> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        List<Student> dataList = null;
+        int count = studentDao.countStudent(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = studentDao.queryStudent(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
 }

+ 49 - 0
mec-biz/src/main/resources/config/mybatis/ActivityUserMapperMapper.xml

@@ -203,4 +203,53 @@
 		</if>
 		LIMIT 1
 	</select>
+	<select id="countActivityUserMapper" resultType="java.lang.Integer">
+		SELECT COUNT(DISTINCT aum.user_id_)
+		FROM activity_user_mapper aum
+		LEFT JOIN sys_user su ON su.id_ = aum.user_id_
+		LEFT JOIN organization o ON o.id_ = su.organ_id_
+		WHERE aum.return_fee_ = 0 AND aum.activity_id_ = #{activityId}
+		<if test="search != null and search != ''">
+			AND (aum.user_id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
+		</if>
+		<if test="organId != null and organId != ''">
+			AND FIND_IN_SET(su.organ_id_,#{organId})
+		</if>
+	</select>
+	<resultMap id="ActivityStudentDto" type="com.ym.mec.biz.dal.dto.ActivityStudentDto">
+		<result property="userId" column="user_id_"/>
+		<result property="username" column="username_"/>
+		<result property="organName" column="name_"/>
+		<result property="phone" column="phone_"/>
+		<result property="freeVipNum" column="free_vip_num_"/>
+		<result property="useVipNum" column="use_vip_num_"/>
+		<result property="freeGiveVipNum" column="free_give_vip_num_"/>
+		<result property="useGiveVipNum" column="use_give_vip_num_"/>
+		<result property="freePracticeNum" column="free_practice_num_"/>
+		<result property="usePracticeNum" column="use_practice_num_"/>
+		<result property="freeGivePracticeNum" column="free_give_practice_num_"/>
+		<result property="useGivePracticeNum" column="use_give_practice_num_"/>
+	</resultMap>
+	<select id="queryActivityUserMapper" resultMap="ActivityStudentDto">
+		SELECT o.name_,aum.user_id_,su.username_,su.phone_,
+		COUNT(CASE WHEN aum.vip_flag_ = 1 THEN 1 ELSE NULL END) free_vip_num_,
+		COUNT(CASE WHEN aum.vip_flag_ = 2 THEN 1 ELSE NULL END) use_vip_num_,
+		COUNT(CASE WHEN aum.give_vip_flag_ = 1 THEN 1 ELSE NULL END) free_give_vip_num_,
+		COUNT(CASE WHEN aum.give_vip_flag_ = 2 THEN 1 ELSE NULL END) use_give_vip_num_,
+		COUNT(CASE WHEN aum.practice_flag_ = 1 THEN 1 ELSE NULL END) free_practice_num_,
+		COUNT(CASE WHEN aum.practice_flag_ = 2 THEN 1 ELSE NULL END) use_practice_num_,
+		COUNT(CASE WHEN aum.give_practice_flag_ = 1 THEN 1 ELSE NULL END) free_give_practice_num_,
+		COUNT(CASE WHEN aum.give_practice_flag_ = 2 THEN 1 ELSE NULL END) use_give_practice_num_
+		FROM activity_user_mapper aum
+		LEFT JOIN sys_user su ON su.id_ = aum.user_id_
+		LEFT JOIN organization o ON o.id_ = su.organ_id_
+		WHERE aum.return_fee_ = 0 AND aum.activity_id_ = #{activityId}
+		<if test="search != null and search != ''">
+			AND (aum.user_id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
+		</if>
+		<if test="organId != null and organId != ''">
+			AND FIND_IN_SET(su.organ_id_,#{organId})
+		</if>
+		GROUP BY aum.user_id_
+	</select>
 </mapper>

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

@@ -4076,4 +4076,30 @@
             AND FIND_IN_SET(cs.type_,#{courseType})
         </if>
     </select>
+    <select id="queryHasCourseStudentIds" resultType="java.lang.Integer">
+        SELECT DISTINCT s.user_id_ FROM student s
+        LEFT JOIN course_schedule_student_payment cssp ON s.user_id_ = cssp.user_id_
+        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+        WHERE cs.group_type_ = #{groupType} AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0
+        <if test="hasCourse == '1'">
+            AND cs.status_ = 'NOT_START'
+        </if>
+        <if test="hasCourse == '0'">
+            AND cs.status_ != 'NOT_START'
+        </if>
+        <if test="hasMember != null">
+            <if test="hasMember == '1'">
+                AND s.member_rank_setting_id_ IS NOT NULL
+            </if>
+            <if test="hasMember == '0'">
+                AND s.member_rank_setting_id_ IS NULL
+            </if>
+        </if>
+        <if test="studentIds != null and studentIds.size > 0">
+            AND s.user_id_ IN
+            <foreach collection="studentIds" separator="," item="studentId" open="(" close=")">
+                #{studentId}
+            </foreach>
+        </if>
+    </select>
 </mapper>

+ 46 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -1375,4 +1375,50 @@
         AND sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ != 2 AND mg.`status_` = 'PROGRESS'
         GROUP BY sr.user_id_)t)
     </update>
+
+    <select id="queryStudent" resultMap="Student">
+        SELECT s.*,su.username_,su.phone_,o.name_ organ_name_ FROM student s
+        LEFT JOIN sys_user su ON su.id_ = s.user_id_
+        LEFT JOIN organization o ON o.id_ = su.organ_id_
+        <where>
+            <if test="studentIds != null and studentIds.size > 0">
+                AND s.user_id_ IN
+                <foreach collection="studentIds" separator="," item="studentId" open="(" close=")">
+                    #{studentId}
+                </foreach>
+            </if>
+            <if test="subjectId != null">
+                s.subject_id_list_ = #{subjectId}
+            </if>
+            <if test="search != null and search != ''">
+                AND (s.user_id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
+            </if>
+            <if test="organId != null and organId != ''">
+                AND FIND_IN_SET(su.organ_id_,#{organId})
+            </if>
+        </where>
+        ORDER BY user_id_
+        <include refid="global.limit"></include>
+    </select>
+    <select id="countStudent" resultType="int">
+        SELECT count(s.user_id_) FROM student s
+        LEFT JOIN sys_user su ON su.id_ = s.user_id_
+        <where>
+            <if test="studentIds != null and studentIds.size > 0">
+                AND s.user_id_ IN
+                <foreach collection="studentIds" separator="," item="studentId" open="(" close=")">
+                    #{studentId}
+                </foreach>
+            </if>
+            <if test="subjectId != null">
+                s.subject_id_list_ = #{subjectId}
+            </if>
+            <if test="search != null and search != ''">
+                AND (s.user_id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
+            </if>
+            <if test="organId != null and organId != ''">
+                AND FIND_IN_SET(su.organ_id_,#{organId})
+            </if>
+        </where>
+    </select>
 </mapper>

+ 7 - 24
mec-web/src/main/java/com/ym/mec/web/controller/ActivityUserMapperController.java

@@ -1,26 +1,14 @@
 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.dto.ActivityPlanAddDto;
-import com.ym.mec.biz.dal.entity.ActivityPlan;
-import com.ym.mec.biz.dal.entity.Employee;
-import com.ym.mec.biz.dal.page.ActivityPlanQueryInfo;
-import com.ym.mec.biz.service.ActivityPlanService;
+import com.ym.mec.biz.dal.page.ActivityStudentQueryInfo;
 import com.ym.mec.biz.service.ActivityUserMapperService;
 import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.exception.BizException;
 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.*;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 @Api(tags = "学员活动排课记录服务")
 @RequestMapping("activityUserMapper")
@@ -29,16 +17,11 @@ public class ActivityUserMapperController extends BaseController {
 
     @Autowired
     private ActivityUserMapperService activityUserMapperService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-	@Autowired
-	private EmployeeDao employeeDao;
 
     @ApiOperation(value = "获取学员活动排课资格列表")
-    @PostMapping("/queryActivityUserMapper")
-    @PreAuthorize("@pcs.hasPermissions('activityPlan/addActivityPlan')")
-    public Object addActivityPlan(@RequestBody ActivityPlanAddDto activityPlanAddDto){
-        activityPlanService.addActivityPlan(activityPlanAddDto);
-        return succeed();
+    @RequestMapping("/queryActivityUserMapper")
+    @PreAuthorize("@pcs.hasPermissions('activityUserMapper/queryActivityUserMapper')")
+    public Object queryActivityUserMapper(ActivityStudentQueryInfo queryInfo){
+        return succeed(activityUserMapperService.queryActivityUserMapper(queryInfo));
     }
 }

+ 22 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -105,6 +105,28 @@ public class StudentManageController extends BaseController {
         return succeed(studentManageService.findStudentsByOrganId(queryInfo));
     }
 
+    @ApiOperation(value = "获取学生列表")
+    @GetMapping("/queryStudent")
+    @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudent')")
+    public Object queryStudent(StudentActivityQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        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(studentManageService.queryStudent(queryInfo));
+    }
+
     @ApiOperation(value = "获取61活动学生列表")
     @GetMapping("/queryChildrenDayStudentList")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryChildrenDayStudentList')")