Procházet zdrojové kódy

feat:乐团无班级学员异常

Joburgess před 4 roky
rodič
revize
fe58ce10c3

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -486,4 +486,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
     List<StudentRegistration> getStudentNormalRegistration(@Param("studentIds") Set<Integer> studentIds);
 
     StudentRegistration getByUserIdAndMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId);
+
+    List<NoClassMusicStudentDto> queryNoClassMusicStudents(Map<String, Object> params);
+    int countNoClassMusicStudents(Map<String, Object> params);
 }

+ 68 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/NoClassMusicStudentDto.java

@@ -0,0 +1,68 @@
+package com.ym.mec.biz.dal.dto;
+
+/**
+ * @Author Joburgess
+ * @Date 2021/3/25 0025
+ */
+public class NoClassMusicStudentDto {
+
+    private Integer organId;
+
+    private String organName;
+
+    private String groupId;
+
+    private String groupName;
+
+    private Integer studentId;
+
+    private String studentName;
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+}

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/NoClassMusicStudentQueryInfo.java

@@ -0,0 +1,44 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author Joburgess
+ * @Date 2021/3/25 0025
+ */
+public class NoClassMusicStudentQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "分部编号")
+    private String organIds;
+
+    @ApiModelProperty(value = "乐团名称/编号")
+    private String musicGroupSearch;
+
+    @ApiModelProperty(value = "学员姓名/编号")
+    private String studentSearch;
+
+    public String getOrganIds() {
+        return organIds;
+    }
+
+    public void setOrganIds(String organIds) {
+        this.organIds = organIds;
+    }
+
+    public String getMusicGroupSearch() {
+        return musicGroupSearch;
+    }
+
+    public void setMusicGroupSearch(String musicGroupSearch) {
+        this.musicGroupSearch = musicGroupSearch;
+    }
+
+    public String getStudentSearch() {
+        return studentSearch;
+    }
+
+    public void setStudentSearch(String studentSearch) {
+        this.studentSearch = studentSearch;
+    }
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -3,8 +3,10 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.io.IOException;
@@ -368,4 +370,13 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      */
     Map<String,Boolean> checkMusicGroupsRegOrPayStatus(List<String> ids);
 
+    /**
+     * @describe 查询乐团中未加入班级学员信息
+     * @author Joburgess
+     * @date 2021/3/25 0025
+     * @param queryInfo:
+     * @return com.ym.mec.common.page.PageInfo<com.ym.mec.biz.dal.dto.NoClassMusicStudentDto>
+     */
+    PageInfo<NoClassMusicStudentDto> queryNoClassMusicStudentInfo(NoClassMusicStudentQueryInfo queryInfo);
+
 }

+ 0 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -2325,16 +2325,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         //获取用户权限列表
         List<Integer> roles = employeeDao.queryUserRole(sysUser.getId());
         PageInfo<MusicGroup> musicGroupPageInfo;
-
-        List<Integer> organIds = new ArrayList<>();
-        if(StringUtils.isNotBlank(queryInfo.getOrganId())){
-            organIds = Arrays.stream(queryInfo.getOrganId().split(",")).map(id->Integer.valueOf(id)).collect(Collectors.toList());
-        }
-
-        if(Objects.nonNull(queryInfo.getNoClassStudentMusicGroup())){
-            List<String> noClassStudentMusicGroupIds = musicGroupDao.getNoClassStudentMusicGroupIds(organIds);
-            queryInfo.setMusicGroupIds(noClassStudentMusicGroupIds);
-        }
         if (roles != null && roles.size() == 1 && roles.contains(SysUserRole.EDUCATIONAL_TEACHER)) {
             //只有教务老师权限
             /*String musicGroupIds = musicGroupDao.queryEducationalMusicGroupId(sysUser.getId());

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -24,11 +24,14 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
 import com.ym.mec.biz.event.source.GroupEventSource;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.im.WebFeignService;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.formula.functions.T;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -1684,4 +1687,27 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 //        }
         return viewMap;
     }
+
+    @Override
+    public PageInfo<NoClassMusicStudentDto> queryNoClassMusicStudentInfo(NoClassMusicStudentQueryInfo queryInfo) {
+        PageInfo<NoClassMusicStudentDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        if(StringUtils.isNotBlank(queryInfo.getOrganIds())){
+            List<Integer> organIds = Arrays.stream(queryInfo.getOrganIds().split(",")).map(id -> Integer.valueOf(id)).collect(Collectors.toList());
+            params.put("organIds", organIds);
+        }
+
+        List<NoClassMusicStudentDto> dataList = new ArrayList<>();
+        int count = studentRegistrationDao.countNoClassMusicStudents(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList =studentRegistrationDao.queryNoClassMusicStudents(params);
+        }
+
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
 }

+ 66 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -837,4 +837,70 @@
     <select id="getByUserIdAndMusicGroupId" resultMap="StudentRegistration">
         SELECT * FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND user_id_ = #{userId}
     </select>
+
+    <resultMap id="NoClassMusicStudentDto" type="com.ym.mec.biz.dal.dto.NoClassMusicStudentDto">
+        <result property="organId" column="organ_id_"/>
+        <result property="organName" column="organ_name_"/>
+        <result property="groupId" column="music_group_id_"/>
+        <result property="groupName" column="music_group_name_"/>
+        <result property="studentId" column="student_id_"/>
+        <result property="studentName" column="student_name_"/>
+    </resultMap>
+
+    <sql id="queryNoClassMusicStudentsCondition">
+        <where>
+            sr.music_group_status_ = 'NORMAL'
+            AND mg.status_ = 'PROGRESS'
+            AND cgsm.id_ IS NULL
+            <if test="organIds!=null and organIds.size()>0">
+                AND mg.organ_id_ IN
+                <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+                    #{organId}
+                </foreach>
+            </if>
+            <if test="musicGroupSearch!=null and musicGroupSearch!=''">
+                AND (sr.music_group_id_ = #{musicGroupSearch} OR mg.name_ LIKE CONCAT('%', #{musicGroupSearch}, '%'))
+            </if>
+            <if test="studentSearch != null and studentSearch != ''">
+                AND (sr.user_id_ = #{studentSearch} OR stu.username_ LIKE CONCAT('%', #{studentSearch}, '%'))
+            </if>
+            <if test="organId!=null">
+                AND mg.organ_id_ = #{organId}
+            </if>
+        </where>
+    </sql>
+
+    <select id="queryNoClassMusicStudents" resultMap="NoClassMusicStudentDto">
+        SELECT
+            mg.organ_id_,
+            organ.name_ organ_name_,
+            sr.music_group_id_,
+            mg.name_ music_group_name_,
+            sr.user_id_ student_id_,
+            stu.username_ student_name_
+        FROM
+            student_registration sr
+                LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+                LEFT JOIN class_group_student_mapper cgsm ON cgsm.group_type_ = 'MUSIC'
+                    AND cgsm.music_group_id_ = sr.music_group_id_
+                    AND cgsm.user_id_ = sr.user_id_
+                LEFT JOIN sys_user stu ON stu.id_ = sr.user_id_
+                LEFT JOIN organization organ ON mg.organ_id_=organ.id_
+        <include refid="queryNoClassMusicStudentsCondition" />
+        ORDER BY mg.organ_id_,sr.user_id_
+        <include refid="global.limit"></include>
+    </select>
+
+    <select id="countNoClassMusicStudents" resultType="int">
+        SELECT
+            COUNT(sr.user_id_)
+        FROM
+        student_registration sr
+            LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+            LEFT JOIN class_group_student_mapper cgsm ON cgsm.group_type_ = 'MUSIC'
+                AND cgsm.music_group_id_ = sr.music_group_id_
+                AND cgsm.user_id_ = sr.user_id_
+            LEFT JOIN sys_user stu ON stu.id_ = sr.user_id_
+        <include refid="queryNoClassMusicStudentsCondition" />
+    </select>
 </mapper>

+ 32 - 5
mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

@@ -1,5 +1,10 @@
 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.entity.*;
+import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
+import com.ym.mec.biz.service.EmployeeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -7,6 +12,7 @@ import io.swagger.annotations.ApiOperation;
 
 import java.io.IOException;
 import java.io.OutputStream;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -29,11 +35,6 @@ import com.ym.mec.biz.dal.dto.DelRegisterDto;
 import com.ym.mec.biz.dal.dto.MusicGroupSubjectGoodsAndInfoDto;
 import com.ym.mec.biz.dal.dto.StudentAddDto;
 import com.ym.mec.biz.dal.dto.StudentPreRegistrationDto;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.page.StudentPreRegistrationQueryInfo;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
@@ -63,6 +64,10 @@ public class StudentRegistrationController extends BaseController {
     private StudentPreRegistrationService studentPreRegistrationService;
     @Autowired
     private MusicGroupDao musicGroupDao;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeService employeeService;
 
     @ApiOperation(value = "乐团预报名列表分页查询")
     @GetMapping("/queryPreApplyList")
@@ -303,4 +308,26 @@ public class StudentRegistrationController extends BaseController {
             }
         }
     }
+
+    @ApiOperation(value = "查询乐团中未加入班级学员信息")
+    @GetMapping("/queryNoClassMusicStudentInfo")
+    @PreAuthorize("@pcs.hasPermissions('studentRegistration/queryNoClassMusicStudentInfo')")
+    public HttpResponseResult queryNoClassMusicStudentInfo(NoClassMusicStudentQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        Employee employee = employeeService.get(sysUser.getId());
+        if (StringUtils.isBlank(queryInfo.getOrganIds())) {
+            queryInfo.setOrganIds(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.getOrganIds().split(",")))){
+                return failed("非法请求");
+            }
+        }
+        return succeed(studentRegistrationService.queryNoClassMusicStudentInfo(queryInfo));
+    }
 }