Browse Source

feat:学员不在班级异常提醒

Joburgess 4 years ago
parent
commit
239f273192

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.IndexBaseMonthData;
+import com.ym.mec.biz.dal.entity.IndexErrInfoDto;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
@@ -148,6 +149,8 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
 
     int queryErrInspection(@Param("organIds") Set<Integer> organIds, @Param("startTime") String startTime);
 
+    IndexErrInfoDto getNoClassMusicGroupStudentInfo(@Param("organIds") Set<Integer> organIds);
+
     int countNoPaymentStudentNum(@Param("organIds") Set<Integer> organIds);
     List<String> getNoPaymentMusicGroup(@Param("organIds") Set<Integer> organIds);
 

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -375,4 +375,6 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     List<MusicGroup> getMusicGroupByIds(@Param("ids") List<String> ids);
+
+    List<String> getNoClassStudentMusicGroupIds(@Param("organIds") List<Integer> organIds);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/IndexErrInfoDto.java

@@ -17,6 +17,8 @@ public class IndexErrInfoDto<T> {
 
     private int num = 0;
 
+    private int num2 = 0;
+
     private List<T> result;
 
     public IndexErrInfoDto() {
@@ -62,6 +64,14 @@ public class IndexErrInfoDto<T> {
         this.num = num;
     }
 
+    public int getNum2() {
+        return num2;
+    }
+
+    public void setNum2(int num2) {
+        this.num2 = num2;
+    }
+
     public List<T> getResult() {
         return result;
     }

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

@@ -10,6 +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", "当前有{}个乐团共{}名学员未加入任何班级"),
 
     STUDENT_INFO("STUDENT_INFO", "学员处理"),
     STUDENT_NOT_PAYMENT("STUDENT_NOT_PAYMENT", "未缴费学员数"),

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupQueryInfo.java

@@ -4,6 +4,8 @@ import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.List;
+
 public class MusicGroupQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "所属分部编号",required = false)
@@ -26,6 +28,26 @@ public class MusicGroupQueryInfo extends QueryInfo {
 
     private MusicGroupStatusEnum status;
 
+    private Boolean noClassStudentMusicGroup;
+
+    private List<String> musicGroupIds;
+
+    public List<String> getMusicGroupIds() {
+        return musicGroupIds;
+    }
+
+    public void setMusicGroupIds(List<String> musicGroupIds) {
+        this.musicGroupIds = musicGroupIds;
+    }
+
+    public Boolean getNoClassStudentMusicGroup() {
+        return noClassStudentMusicGroup;
+    }
+
+    public void setNoClassStudentMusicGroup(Boolean noClassStudentMusicGroup) {
+        this.noClassStudentMusicGroup = noClassStudentMusicGroup;
+    }
+
     public MusicGroupStatusEnum getStatus() {
         return status;
     }

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

@@ -299,6 +299,10 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			int errInspection = indexBaseMonthDataDao.queryErrInspection(organIds,startTime);
 			oneChild.add(new IndexErrInfoDto(IndexErrorType.MUSIC_PATROL_ITEM, IndexErrorType.MUSIC_PATROL_ITEM.getMsg(),errInspection, null));
 
+			IndexErrInfoDto noClassMusicGroupStudentInfo = indexBaseMonthDataDao.getNoClassMusicGroupStudentInfo(organIds);
+			noClassMusicGroupStudentInfo.setDesc(IndexErrorType.NO_CLASS_MUSIC_GROUP_STUDENT_INFO.getMsg());
+			oneChild.add(noClassMusicGroupStudentInfo);
+
 			one.setNum(oneChild.stream().mapToInt(IndexErrInfoDto::getNum).sum());
 			one.setResult(oneChild);
 			all.add(one);
@@ -441,6 +445,12 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 				flag1 = true;
 			}
 		}
+		if(!flag1){
+			IndexErrInfoDto noClassMusicGroupStudentInfo = indexBaseMonthDataDao.getNoClassMusicGroupStudentInfo(organIds);
+			if(Objects.nonNull(noClassMusicGroupStudentInfo) && noClassMusicGroupStudentInfo.getNum() > 0){
+				flag1 = true;
+			}
+		}
 		resultMap.put("musicPatrol",flag1);
 		boolean flag2 = false;
 		if(!flag2){

+ 11 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -6,15 +6,7 @@ import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import com.ym.mec.biz.dal.dao.*;
@@ -2475,6 +2467,16 @@ 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());

+ 22 - 0
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -838,6 +838,28 @@
 			</foreach>
 		</if>
 	</select>
+
+	<select id="getNoClassMusicGroupStudentInfo" resultType="com.ym.mec.biz.dal.entity.IndexErrInfoDto">
+		SELECT
+			'NO_CLASS_MUSIC_GROUP_STUDENT_INFO' errorType,
+			COUNT( DISTINCT sr.music_group_id_ ) num,
+			COUNT( DISTINCT sr.user_id_ ) num2
+		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_
+		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>
+	</select>
+
 	<select id="getFinancePayData"  resultMap="IndexBaseMonthData">
 		SELECT SUM(fe.amount_) total_num_,SUM(fe.amount_) activate_num_,SUM(fe.amount_) percent_,fe.organ_id_,#{dayStr} month_ FROM financial_expenditure fe
 		WHERE DATE_FORMAT(fe.create_time_,'%Y-%m-%d') = #{dayStr}

+ 25 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -218,6 +218,12 @@
             <if test="musicGroupId != null">
                 AND FIND_IN_SET(id_,#{musicGroupId})
             </if>
+            <if test="musicGroupIds!=null and musicGroupIds.size()>0">
+                AND id_ IN
+                <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+                    #{musicGroupId}
+                </foreach>
+            </if>
         </where>
     </sql>
 
@@ -685,4 +691,23 @@
             #{id}
         </foreach>
     </select>
+
+    <select id="getNoClassStudentMusicGroupIds" resultType="java.lang.String">
+        SELECT
+            DISTINCT sr.music_group_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_
+        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>
+    </select>
 </mapper>