Browse Source

教学伴奏加声部和分部

zouxuan 3 years ago
parent
commit
b2be9a33ad

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

@@ -6,6 +6,8 @@ import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 public interface SysMusicScoreCategoriesDao extends BaseDAO<Integer, SysMusicScoreCategories> {
 
@@ -20,4 +22,6 @@ public interface SysMusicScoreCategoriesDao extends BaseDAO<Integer, SysMusicSco
     void batchUpdate(@Param("categories") List<SysMusicScoreCategories> updateCategories, @Param("organId") String organId, @Param("enable") Boolean enable);
 
     void enable(@Param("categoriesIds") String categoriesIds, @Param("enable") boolean enable);
+
+    List<Map<Integer, String>> querOrganByIds(@Param("categoriesIds") Set<Integer> categoriesIds);
 }

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicScore.java

@@ -29,6 +29,10 @@ public class SysMusicScore {
 	
 	/** 声部列表 */
 	private String subjectIds;
+
+	private Integer subjectId;
+
+	private String subjectName;
 	
 	/** 速度 */
 	private Integer speed;
@@ -72,6 +76,32 @@ public class SysMusicScore {
 
 	private Boolean isOpenMetronome;
 
+	private String organName;
+
+	public Integer getSubjectId() {
+		return subjectId;
+	}
+
+	public void setSubjectId(Integer subjectId) {
+		this.subjectId = subjectId;
+	}
+
+	public String getSubjectName() {
+		return subjectName;
+	}
+
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
+	}
+
+	public String getOrganName() {
+		return organName;
+	}
+
+	public void setOrganName(String organName) {
+		this.organName = organName;
+	}
+
 	public Boolean getIsOpenMetronome() {
 		return isOpenMetronome;
 	}

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreServiceImpl.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.SubjectDao;
 import com.ym.mec.biz.dal.dao.SysMusicScoreAccompanimentDao;
 import com.ym.mec.biz.dal.dao.SysMusicScoreCategoriesDao;
 import com.ym.mec.biz.dal.dao.SysMusicScoreDao;
@@ -16,6 +17,8 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -35,6 +38,8 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
 	private SysUserFeignService sysUserFeignService;
 	@Autowired
 	private SysMusicScoreCategoriesDao sysMusicScoreCategoriesDao;
+	@Autowired
+	private SubjectDao subjectDao;
 
 	@Override
 	public BaseDAO<Integer, SysMusicScore> getDAO() {
@@ -155,12 +160,23 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
 		List<SysMusicScore> rows = sysMusicScorePageInfo.getRows();
 		if(rows != null && rows.size() > 0){
 			Set<Integer> categoriesIds = rows.stream().map(e -> e.getMusicScoreCategoriesId()).collect(Collectors.toSet());
+			//获取分部列表
+			Map<Integer,String> organMap = MapUtil.convertMybatisMap(sysMusicScoreCategoriesDao.querOrganByIds(categoriesIds));
+			//获取声部列表
+			Set<Integer> subjectIds = rows.stream().map(e -> e.getSubjectId()).collect(Collectors.toSet());
+			subjectIds.removeAll(Collections.singleton(null));
+			Map<Long, String> subjectMap = new HashMap();
+			if(subjectIds.size() > 0){
+				subjectMap = MapUtil.convertMybatisMap(subjectDao.findBySubjecIds(StringUtils.join(subjectIds, ",")));
+			}
 			Map<Integer,String> map = new HashMap<>(categoriesIds.size());
 			for (Integer categoriesId : categoriesIds) {
 				map.put(categoriesId,getParentTreeName(categoriesId));
 			}
 			for (SysMusicScore row : rows) {
 				row.setCategoriesName(map.get(row.getMusicScoreCategoriesId()));
+				row.setOrganName(organMap.get(row.getMusicScoreCategoriesId()));
+				row.setSubjectName(subjectMap.get(row.getSubjectId()));
 			}
 		}
 		return sysMusicScorePageInfo;

+ 10 - 1
mec-biz/src/main/resources/config/mybatis/SysMusicScoreCategoriesMapper.xml

@@ -161,7 +161,16 @@
 		SELECT GROUP_CONCAT(id_) FROM sys_music_score_categories
 		WHERE FIND_IN_SET(id_,#{categoriesIds}) OR FIND_IN_SET(parent_id_,#{categoriesIds})
 	</select>
-	<sql id="queryTree">
+    <select id="querOrganByIds" resultType="java.util.Map">
+		SELECT sms.id_ 'key',o.name_ 'value' FROM sys_music_score_categories sms
+		LEFT JOIN organization o ON FIND_IN_SET(o.id_,sms.organ_id_)
+		WHERE sms.id_ IN
+		<foreach collection="categoriesIds" item="id" open="(" close=")" separator=",">
+			#{id}
+		</foreach>
+		GROUP BY sms.id_
+	</select>
+    <sql id="queryTree">
 		<where>
 			<if test="enable != null">
 				AND sm.enable_ = #{enable}

+ 9 - 3
mec-biz/src/main/resources/config/mybatis/SysMusicScoreMapper.xml

@@ -26,6 +26,7 @@
 		<result column="show_flag_" property="showFlag" />
 		<result column="order_" property="order" />
 		<result column="rank_ids_" property="rankIds" />
+		<result column="subject_id_" property="subjectId" />
 		<result column="client_type_" property="clientType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 		<result column="update_time_" property="updateTime" />
 		<result column="create_time_" property="createTime" />
@@ -46,7 +47,8 @@
 		INSERT INTO sys_music_score (music_score_categories_id_,name_,type_,speed_,url_,metronome_url_,create_user_id_,order_,
 		                             update_time_,create_time_,client_type_,rank_ids_,show_flag_)
 		VALUES(#{musicScoreCategoriesId},#{name},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-		       #{speed},#{url},#{metronomeUrl},#{createUserId},#{order},NOW(),NOW(),#{clientType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{rankIds},#{showFlag})
+		       #{speed},#{url},#{metronomeUrl},#{createUserId},#{order},NOW(),NOW(),#{clientType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+		       #{rankIds},#{showFlag})
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
@@ -98,14 +100,14 @@
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="SysMusicScore" parameterType="map">
 		SELECT ses.*,su.real_name_ create_user_name_,smsc.name_ categories_name_,smsc.id_ categories_id_,
-		smsa.mp3_url_ accompaniment_url_,smsa.metronome_url_ accompaniment_metronome_url_,smsa.is_open_metronome_
+		smsa.mp3_url_ accompaniment_url_,smsa.metronome_url_ accompaniment_metronome_url_,smsa.is_open_metronome_,smsa.subject_id_
 		FROM sys_music_score ses
 		LEFT JOIN sys_music_score_accompaniment smsa ON smsa.exam_song_id_ = ses.id_
 		LEFT JOIN sys_user su ON ses.create_user_id_ = su.id_
 		LEFT JOIN sys_music_score_categories smsc ON smsc.id_ = ses.music_score_categories_id_
 		<include refid="queryPageSql"/>
 		GROUP BY ses.id_
-		ORDER BY ses.music_score_categories_id_ desc,ses.order_ asc,ses.create_time_ desc
+		ORDER BY ses.music_score_categories_id_ DESC,ses.order_ ASC,ses.create_time_ DESC
 		<include refid="global.limit"/>
 	</select>
 	
@@ -113,6 +115,7 @@
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(DISTINCT ses.id_) FROM sys_music_score ses
 		LEFT JOIN sys_music_score_categories smsc ON smsc.id_ = ses.music_score_categories_id_
+		LEFT JOIN sys_music_score_accompaniment smsa ON smsa.exam_song_id_ = ses.id_
 		<include refid="queryPageSql"/>
 	</select>
     <select id="findByIds" resultMap="SysMusicScore">
@@ -136,6 +139,9 @@
 			<if test="showFlag != null">
 				AND ses.show_flag_ = #{showFlag}
 			</if>
+			<if test="subjectId != null">
+				AND smsa.subject_id_ = #{subjectId}
+			</if>
 			<if test="clientType != null">
 				AND ses.client_type_ = #{clientType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			</if>