Jelajahi Sumber

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

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
zouxuan 4 tahun lalu
induk
melakukan
4b696fdc5f

+ 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;
+    }
+}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/IndexErrorType.java

@@ -10,7 +10,7 @@ public enum IndexErrorType implements BaseEnum<String, IndexErrorType> {
     MUSIC_PATROL("MUSIC_PATROL", "乐团巡查"),
     HIGH_CLASS_STUDENT_LESS_THAN_THREE("HIGH_CLASS_STUDENT_LESS_THAN_THREE", "基础技能班学员数量异常"),
     MUSIC_PATROL_ITEM("MUSIC_PATROL_ITEM", "乐团巡查事项异常"),
-    NO_CLASS_MUSIC_GROUP_STUDENT_INFO("NO_CLASS_MUSIC_GROUP_STUDENT_INFO", "当前有{}个乐团共{}名学员未加入任何班级"),
+    NO_CLASS_MUSIC_GROUP_STUDENT_INFO("NO_CLASS_MUSIC_GROUP_STUDENT_INFO", "当前有{0}个乐团共{1}名学员未加入任何班级"),
 
     STUDENT_INFO("STUDENT_INFO", "学员处理"),
     STUDENT_NOT_PAYMENT("STUDENT_NOT_PAYMENT", "未缴费学员数"),

+ 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

@@ -2330,16 +2330,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());

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

@@ -24,6 +24,7 @@ import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.service.*;
 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;
@@ -764,6 +765,12 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public void insertStudent(String studentIds, String oldMusicGroupId, String newMusicGroupId, Map<Integer, List<MusicGroupPaymentCalenderStudentDetail>> collect) {
+        //获取欠费学员列表
+        List<Integer> studentIdList = Arrays.asList(studentIds.split(",")).stream().mapToInt(idStr -> Integer.valueOf(idStr)).boxed().collect(Collectors.toList());
+        List<Integer> noPaymentUserIds = musicGroupPaymentCalenderDetailDao.queryNoPaymentUserIds(newMusicGroupId,studentIdList);
+        if(noPaymentUserIds.size() > 0){
+            throw new BizException("操作失败:有欠费的学员不允许创建缴费");
+        }
         SysUser sysUser1 = sysUserFeignService.queryUserInfo();
         //获取旧乐团学员注册信息
         List<StudentRegistration> studentRegistrations = studentRegistrationDao.queryByUserIdsAndMusicGroupId(studentIds, oldMusicGroupId);
@@ -1689,4 +1696,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

@@ -850,4 +850,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));
+    }
 }