浏览代码

Merge remote-tracking branch 'origin/master'

zouxuan 4 年之前
父节点
当前提交
4d05c42f1f

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

@@ -108,4 +108,7 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
     List<String> getNoPaymentMusicGroup(@Param("organIds") Set<Integer> organIds);
 
     int countApplyForQuitGroupNum(@Param("organIds") Set<Integer> organIds);
+
+    int countStudentAttendanceInfo(@Param("organIds") Set<Integer> organIds,
+                                   @Param("type") String type);
 }

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

@@ -7,12 +7,22 @@ import com.ym.mec.common.enums.BaseEnum;
  * @Date 2021/1/18 0018
  **/
 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", "乐团巡查事项异常"),
 
+    STUDENT_INFO("STUDENT_INFO", "学员处理"),
     STUDENT_NOT_PAYMENT("STUDENT_NOT_PAYMENT", "学员未缴费"),
     STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP("STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP", "学员退团申请"),
     WAIT_CREATE_PAYMENT_CALENDER("WAIT_CREATE_PAYMENT_CALENDER", "待创建缴费项目"),
+    COURSE_TRUANT_STUDENT_NUM("COURSE_TRUANT_STUDENT_NUM", "学员考情异常旷课"),
+    COURSE_LEAVE_STUDENT_NUM("COURSE_LEAVE_STUDENT_NUM", "请假"),
+
+    TEACHER_INFO("TEACHER_INFO", "日常行政"),
+    TEACHER_EXCEPTION_ATTENDANCE("TEACHER_EXCEPTION_ATTENDANCE", "老师考勤异常"),
+    TEACHER_NOT_A_CLASS("TEACHER_NOT_A_CLASS", "未签到签退"),
+    TEACHER_LEAVE("TEACHER_LEAVE", "老师请假"),
+    TEACHER_EXPECT_SALARY_BE_LOW("TEACHER_EXPECT_SALARY_BE_LOW", "预计课酬较低"),
     ;
 
     private String code;

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

@@ -14,7 +14,7 @@ public interface IndexBaseMonthDataService extends BaseService<Long, IndexBaseMo
 
     Map<String, List<IndexBaseDto>> indexBaseDataTask(String month);
 
-    List<IndexErrInfoDto> getIndexErrData(String organIds);
+    Map<String, Object> getIndexErrData(String organIds);
 
     /**
      * 事项提醒

+ 37 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -113,7 +113,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			}
 			typeDateMapEntry.getValue().sort(Comparator.comparing(IndexBaseMonthData::getMonth));
 			if(IndexDataType.ACTIVATION_RATE.equals(typeDateMapEntry.getKey())||IndexDataType.HOMEWORK_CREATE_RATE.equals(typeDateMapEntry.getKey())
-					||IndexDataType.HOMEWORK_SUBMIT_RATE.equals(typeDateMapEntry.getKey())||IndexDataType.HOMEWORK_SUBMIT_RATE.equals(typeDateMapEntry.getKey())
+					||IndexDataType.HOMEWORK_SUBMIT_RATE.equals(typeDateMapEntry.getKey())||IndexDataType.HOMEWORK_COMMENT_RATE.equals(typeDateMapEntry.getKey())
 					||IndexDataType.STUDENT_CONVERSION.equals(typeDateMapEntry.getKey())){
 				for (IndexBaseMonthData indexBaseMonthData : typeDateMapEntry.getValue()) {
 					if(indexBaseMonthData.getTotalNum().compareTo(BigDecimal.ZERO)==0){
@@ -305,20 +305,51 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 	}
 
 	@Override
-	public List<IndexErrInfoDto> getIndexErrData(String organIdsStr) {
+	public Map<String, Object> getIndexErrData(String organIdsStr) {
 		Set<Integer> organIds = null;
 		if(StringUtils.isNotBlank(organIdsStr)){
 			organIds = Arrays.stream(organIdsStr.split(",")).map(Integer::new).collect(Collectors.toSet());
 		}
 
-		List<IndexErrInfoDto> result = new ArrayList<>();
+		List<IndexErrInfoDto> all = new ArrayList<>();
+
+		IndexErrInfoDto<IndexErrInfoDto> one = new IndexErrInfoDto<>();
+		one.setErrorType(IndexErrorType.MUSIC_PATROL);
+		one.setDesc(IndexErrorType.MUSIC_PATROL.getMsg());
+		List<IndexErrInfoDto> oneChild = new ArrayList<>();
+
+		oneChild.add(new IndexErrInfoDto(IndexErrorType.HIGH_CLASS_STUDENT_LESS_THAN_THREE, IndexErrorType.HIGH_CLASS_STUDENT_LESS_THAN_THREE.getMsg(), indexBaseMonthDataDao.countLessThenThreeClassGroupNum(organIds), indexBaseMonthDataDao.getLessThenThreeMusicGroup(organIds)));
+		one.setNum(oneChild.stream().mapToInt(IndexErrInfoDto::getNum).sum());
+		one.setResult(oneChild);
+		all.add(one);
+
+
+		IndexErrInfoDto<IndexErrInfoDto> two = new IndexErrInfoDto<>();
+		two.setErrorType(IndexErrorType.STUDENT_INFO);
+		two.setDesc(IndexErrorType.STUDENT_INFO.getMsg());
+		List<IndexErrInfoDto> twoChild = new ArrayList<>();
+
+		twoChild.add(new IndexErrInfoDto(IndexErrorType.STUDENT_NOT_PAYMENT, IndexErrorType.STUDENT_NOT_PAYMENT.getMsg(), indexBaseMonthDataDao.countNoPaymentStudentNum(organIds), indexBaseMonthDataDao.getNoPaymentMusicGroup(organIds)));
+		twoChild.add(new IndexErrInfoDto(IndexErrorType.STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP, IndexErrorType.STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP.getMsg(), indexBaseMonthDataDao.countApplyForQuitGroupNum(organIds),  null));
+		twoChild.add(new IndexErrInfoDto(IndexErrorType.COURSE_TRUANT_STUDENT_NUM, IndexErrorType.COURSE_TRUANT_STUDENT_NUM.getMsg(), indexBaseMonthDataDao.countStudentAttendanceInfo(organIds, StudentAttendanceStatusEnum.TRUANT.getCode()), null));
+		twoChild.add(new IndexErrInfoDto(IndexErrorType.COURSE_LEAVE_STUDENT_NUM, IndexErrorType.COURSE_LEAVE_STUDENT_NUM.getMsg(), indexBaseMonthDataDao.countStudentAttendanceInfo(organIds, StudentAttendanceStatusEnum.LEAVE.getCode()), null));
+		two.setNum(twoChild.stream().mapToInt(IndexErrInfoDto::getNum).sum());
+		two.setResult(twoChild);
+		all.add(two);
 
-		result.add(new IndexErrInfoDto(IndexErrorType.HIGH_CLASS_STUDENT_LESS_THAN_THREE, IndexErrorType.HIGH_CLASS_STUDENT_LESS_THAN_THREE.getMsg(), indexBaseMonthDataDao.countLessThenThreeClassGroupNum(organIds), indexBaseMonthDataDao.getLessThenThreeMusicGroup(organIds)));
 
-		result.add(new IndexErrInfoDto(IndexErrorType.STUDENT_NOT_PAYMENT, IndexErrorType.STUDENT_NOT_PAYMENT.getMsg(), indexBaseMonthDataDao.countNoPaymentStudentNum(organIds), indexBaseMonthDataDao.getNoPaymentMusicGroup(organIds)));
+		IndexErrInfoDto<IndexErrInfoDto> three = new IndexErrInfoDto<>();
+		three.setErrorType(IndexErrorType.TEACHER_INFO);
+		three.setDesc(IndexErrorType.TEACHER_INFO.getMsg());
+		List<IndexErrInfoDto> threeChild = new ArrayList<>();
 
-		result.add(new IndexErrInfoDto(IndexErrorType.STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP, IndexErrorType.STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP.getMsg(), indexBaseMonthDataDao.countApplyForQuitGroupNum(organIds),  null));
+		three.setNum(threeChild.stream().mapToInt(IndexErrInfoDto::getNum).sum());
+		three.setResult(threeChild);
+		all.add(three);
 
+		Map<String, Object> result = new HashMap<>();
+		result.put("totalNum", all.stream().mapToInt(IndexErrInfoDto::getNum).sum());
+		result.put("data", all);
 		return result;
 	}
 

+ 28 - 4
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -295,8 +295,9 @@
 			course_schedule m
 		WHERE
 			m.del_flag_ = 0
-			AND m.is_lock_ = 0
+			AND (m.is_lock_ = 0 OR m.is_lock_ IS NULL)
 		  	AND m.status_ = 'OVER'
+			AND (m.new_course_id_ IS NULL OR m.new_course_id_=m.id_)
 			AND m.organ_id_ IS NOT NULL
 			<if test="groupType!=null">
 				AND m.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
@@ -424,7 +425,7 @@
 	</select>
 
 	<select id="countLessThenThreeClassGroupNum" resultType="int">
-		SELECT COUNT(*) FROM (
+		SELECT COUNT(t.id_) FROM (
 			SELECT
 			DISTINCT cg.id_
 			FROM
@@ -445,7 +446,7 @@
 			cg.id_
 			HAVING
 			COUNT( DISTINCT cgsm.user_id_ )&lt;3
-		)
+		) t
 	</select>
 
     <select id="getLessThenThreeMusicGroup" resultType="java.lang.String">
@@ -473,7 +474,7 @@
 
 	<select id="countNoPaymentStudentNum" resultType="int">
 		SELECT
-			DISTINCT mgpcd.user_id_
+			COUNT(DISTINCT mgpcd.user_id_)
 		FROM
 		music_group_payment_calender_detail mgpcd
 		LEFT JOIN music_group_payment_calender mgpc ON mgpcd.music_group_payment_calender_id_ = mgpc.id_
@@ -521,4 +522,27 @@
 			</foreach>
 		</if>
 	</select>
+
+	<select id="countStudentAttendanceInfo" resultType="java.lang.Integer">
+		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 student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ AND sa.user_id_ = cssp.user_id_
+			LEFT JOIN student_visit sv ON cssp.id_=sv.object_id_
+		WHERE
+			<if test="type!=null and type=='LEAVE'">
+				(sa.status_ = 'LEAVE' AND sa.remark_ IS NOT NULL AND sv.id_ IS NULL)
+			</if>
+			<if test="type!=null and type=='TRUANT'">
+				(sa.status_ = 'TRUANT' OR sa.id_ IS NULL)
+			</if>
+			<if test="organIds!=null and organIds.size()>0">
+				AND cs.organ_id_ IN
+				<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+					#{organId}
+				</foreach>
+			</if>
+	</select>
 </mapper>