浏览代码

Merge branch 'cooperation_education' of http://git.dayaedu.com/yonge/mec into transaction_teacher

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

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

@@ -395,4 +395,25 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     List<Map<Long, String>> queryEduNameMapByCourseId(@Param("courseIds") List<Long> courseIds);
+
+    /**
+     * 根据合作单位获取乐团列表
+     * @param cooperationOrganId
+     * @return
+     */
+    List<MusicGroup> findByCooperationIdAndStatus(Integer cooperationOrganId);
+
+    /**
+     * 根据合作单位获取乐团列表
+     * @param cooperationOrganId
+     * @return
+     */
+    List<MusicGroup> findByCooperationId(Integer cooperationOrganId);
+
+    /**
+     * 批量修改乐团主管
+     * @param cooperationOrganId
+     * @param educationUserId
+     */
+    void batchUpdateEdu(@Param("cooperationOrganId") Integer cooperationOrganId, @Param("educationUserId") Integer educationUserId);
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CooperationOrgan.java

@@ -34,6 +34,12 @@ public class CooperationOrgan {
 	/**  */
 	private Integer id;
 
+	/**  */
+	private Integer educationUserId;
+
+	/**  */
+	private String realName;
+
 	/** 单位名称 */
 	@ApiModelProperty(value = "班级编号", required = false)
 	private String name;
@@ -75,6 +81,22 @@ public class CooperationOrgan {
 	@ApiModelProperty(value = "是否全职资源",required = false)
 	private Integer fullJobResource;
 
+	public String getRealName() {
+		return realName;
+	}
+
+	public void setRealName(String realName) {
+		this.realName = realName;
+	}
+
+	public Integer getEducationUserId() {
+		return educationUserId;
+	}
+
+	public void setEducationUserId(Integer educationUserId) {
+		this.educationUserId = educationUserId;
+	}
+
 	public Integer getFullJobResource() {
 		return fullJobResource;
 	}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CooperationOrganQueryInfo.java

@@ -10,6 +10,16 @@ public class CooperationOrganQueryInfo extends QueryInfo {
 
     private Integer fullJobResource;
 
+    private Integer educationUserId;
+
+	public Integer getEducationUserId() {
+		return educationUserId;
+	}
+
+	public void setEducationUserId(Integer educationUserId) {
+		this.educationUserId = educationUserId;
+	}
+
 	public Integer getFullJobResource() {
 		return fullJobResource;
 	}

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CooperationOrganService.java

@@ -24,4 +24,6 @@ public interface CooperationOrganService extends BaseService<Integer, Cooperatio
      * @return
      */
     List<MusicGroupPaymentCalender> getCooperationOrganCalender4School(Integer id);
+
+    void updateCooperation(CooperationOrgan cooperationOrgan);
 }

+ 71 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CooperationOrganServiceImpl.java

@@ -1,22 +1,37 @@
 package com.ym.mec.biz.service.impl;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.dao.ClassGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.service.ImGroupMemberService;
+import com.ym.mec.biz.service.ImGroupService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.ym.mec.biz.dal.dao.CooperationOrganDao;
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
 import com.ym.mec.biz.service.CooperationOrganService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
 
 @Service
 public class CooperationOrganServiceImpl extends BaseServiceImpl<Integer, CooperationOrgan>  implements CooperationOrganService {
 	
 	@Autowired
 	private CooperationOrganDao cooperationOrganDao;
+	@Autowired
+	private MusicGroupDao musicGroupDao;
+	@Autowired
+	private ClassGroupDao classGroupDao;
+	@Autowired
+	private ImGroupMemberService imGroupMemberService;
+	@Autowired
+	private ImGroupService imGroupService;
 
 	@Override
 	public BaseDAO<Integer, CooperationOrgan> getDAO() {
@@ -32,4 +47,58 @@ public class CooperationOrganServiceImpl extends BaseServiceImpl<Integer, Cooper
     public List<MusicGroupPaymentCalender> getCooperationOrganCalender4School(Integer id) {
 		return cooperationOrganDao.getCooperationOrganCalender4School(id);
     }
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateCooperation(CooperationOrgan cooperationOrgan) {
+		CooperationOrgan cooperationOrgan1 = cooperationOrganDao.get(cooperationOrgan.getId());
+		//修改了乐团主管后,修改关联乐团的乐团主管
+		if(!cooperationOrgan.getEducationUserId().equals(cooperationOrgan1.getEducationUserId())){
+			//获取进行中和暂停的乐团列表
+			List<MusicGroup> musicGroups = musicGroupDao.findByCooperationIdAndStatus(cooperationOrgan.getId());
+			if(musicGroups.size() > 0){
+				for (MusicGroup musicGroup : musicGroups) {
+					//获取当前乐团所有班级
+					List<ClassGroup> classGroups = classGroupDao.findClassGroups(musicGroup.getId());
+					if (classGroups == null || classGroups.size() == 0) {
+						continue;
+					}
+					Integer educationalTeacherId = musicGroup.getEducationalTeacherId();
+					List<Integer> quitUserIdList = new ArrayList<Integer>();
+					if(educationalTeacherId != null){
+						quitUserIdList.add(educationalTeacherId);
+					}
+					Map<Integer, String> userRoleMap = new HashMap<Integer, String>(1);
+					userRoleMap.put(cooperationOrgan.getEducationUserId(), "乐团主管");
+					classGroups.forEach(e -> {
+						if(educationalTeacherId != null){
+							imGroupMemberService.quit(e.getId().longValue(), quitUserIdList);
+						}
+						imGroupMemberService.join(e.getId().longValue(), userRoleMap);
+					});
+				}
+			}
+			//更新预报名群信息
+			List<MusicGroup> musicGroupList = musicGroupDao.findByCooperationId(cooperationOrgan.getId());
+			if(musicGroupList.size() > 0){
+				for (MusicGroup musicGroup : musicGroupList) {
+					//乐团主管有变更
+					if(!cooperationOrgan.getEducationUserId().equals(musicGroup.getEducationalTeacherId())){
+						//不是导入的乐团
+						if(musicGroup.getId().length() > 10){
+							//是否有预报名的群聊
+							ImGroup imGroup = imGroupService.get(Long.parseLong(musicGroup.getId()));
+							if(imGroup != null){
+								imGroupMemberService.quit(Long.parseLong(musicGroup.getId()),musicGroup.getEducationalTeacherId());
+								imGroupMemberService.join(Long.parseLong(musicGroup.getId()),cooperationOrgan.getEducationUserId(),"乐团主管",false);
+							}
+						}
+					}
+				}
+			}
+			//修改乐团主管
+			musicGroupDao.batchUpdateEdu(cooperationOrgan.getId(),cooperationOrgan.getEducationUserId());
+		}
+		cooperationOrganDao.update(cooperationOrgan);
+	}
 }

+ 23 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -241,6 +241,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             throw new BizException("乐团初始状态错误");
         }
         musicGroup.setDelFlag(false);
+        CooperationOrgan cooperationOrgan = cooperationOrganDao.get(musicGroup.getCooperationOrganId());
+        if(cooperationOrgan.getEducationUserId() == null){
+            throw new BizException("操作失败:请先配置合作单位: {} 关联的乐团主管",cooperationOrgan.getName());
+        }
+        musicGroup.setEducationalTeacherId(cooperationOrgan.getEducationUserId());
         // 保存乐团基本信息
         musicGroupDao.insert(musicGroup);
 
@@ -2559,7 +2564,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     private void updateTeamTeacher(MusicGroup oldMusicGroup, MusicGroup newMusicGroup) {
         //获取当前乐团所有班级
         List<ClassGroup> classGroups = classGroupDao.findClassGroups(newMusicGroup.getId());
-        if (classGroups == null || classGroups.size() == 0) {
+        if (classGroups != null || classGroups.size() == 0) {
             return;
         }
         Integer teamTeacherId = newMusicGroup.getTeamTeacherId();
@@ -2614,9 +2619,26 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             //如果已生成课表,那么修改未上课时教学点
             courseScheduleDao.updateCourseScheduleSchool("MUSIC", musicGroupId, musicGroup.getSchoolId());
         }
+        CooperationOrgan cooperationOrgan = cooperationOrganDao.get(musicGroup.getCooperationOrganId());
+        if(cooperationOrgan.getEducationUserId() == null){
+            throw new BizException("操作失败:请先配置合作单位: {} 关联的乐团主管",cooperationOrgan.getName());
+        }
+        musicGroup.setEducationalTeacherId(cooperationOrgan.getEducationUserId());
         if (group.getStatus() == MusicGroupStatusEnum.PROGRESS) {
             updateTeamTeacher(group, musicGroup);
         }
+        //乐团主管有变更
+        if(!cooperationOrgan.getEducationUserId().equals(group.getEducationalTeacherId())){
+            //不是导入的乐团
+            if(musicGroupId.length() > 10){
+                //是否有预报名的群聊
+                ImGroup imGroup = imGroupService.get(Long.parseLong(musicGroupId));
+                if(imGroup != null){
+                    imGroupMemberService.quit(Long.parseLong(musicGroupId),group.getEducationalTeacherId());
+                    imGroupMemberService.join(Long.parseLong(musicGroupId),cooperationOrgan.getEducationUserId(),"乐团主管",false);
+                }
+            }
+        }
 
         Date date = new Date();
         //缴费方式不同

+ 22 - 23
mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml

@@ -6,6 +6,8 @@
     <resultMap type="com.ym.mec.biz.dal.entity.CooperationOrgan"
                id="CooperationOrgan">
         <result column="id_" property="id"/>
+        <result column="education_user_id_" property="educationUserId"/>
+        <result column="real_name_" property="realName"/>
         <result column="name_" property="name"/>
         <result column="linkman_" property="linkman"/>
         <result column="organ_id_" property="organId"/>
@@ -45,16 +47,19 @@
             useGeneratedKeys="true" keyColumn="id" keyProperty="id">
         INSERT INTO cooperation_organ
         (id_, name_, linkman_, job_, mobile_no_, address_, organ_id_, create_time_, update_time_, ownership_type_,
-         is_enable_, full_job_resource_)
+         is_enable_, full_job_resource_,education_user_id_)
         VALUES (#{id}, #{name}, #{linkman}, #{job}, #{mobileNo}, #{address}, #{organId}, now(), now(),
                 #{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{isEnable},
-                #{fullJobResource})
+                #{fullJobResource},#{educationUserId})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.CooperationOrgan">
         UPDATE cooperation_organ
         <set>
+            <if test="educationUserId != null">
+                education_user_id_ = #{educationUserId},
+            </if>
             <if test="fullJobResource != null">
                 full_job_resource_ = #{fullJobResource},
             </if>
@@ -99,11 +104,20 @@
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="ExtCooperationOrgan"
             parameterType="map">
-        SELECT co.*,o.name_ organ_name_ FROM cooperation_organ co left join organization o on co.organ_id_ = o.id_
+        SELECT co.*,o.name_ organ_name_,su.real_name_ FROM cooperation_organ co
+        LEFT JOIN organization o ON co.organ_id_ = o.id_
+        LEFT JOIN sys_user su ON su.id_ = co.education_user_id_
+        <include refid="queryPageSql"/>
+        ORDER BY co.update_time_ DESC
+        <include refid="global.limit"/>
+    </select>
+
+    <sql id="queryPageSql">
         <where>
             co.del_flag_ != 1
             <if test="search != null">
-                AND (co.id_ LIKE CONCAT('%',#{search},'%') OR co.name_ LIKE CONCAT('%',#{search},'%'))
+                AND (co.education_user_id_ = #{search} OR su.real_name_ LIKE CONCAT('%',#{search},'%')
+                OR co.id_ LIKE CONCAT('%',#{search},'%') OR co.name_ LIKE CONCAT('%',#{search},'%'))
             </if>
             <if test="organId != null">
                 AND FIND_IN_SET(co.organ_id_,#{organId})
@@ -115,28 +129,13 @@
                 AND co.full_job_resource_ = #{fullJobResource}
             </if>
         </where>
-        ORDER BY co.update_time_ DESC
-        <include refid="global.limit"/>
-    </select>
+    </sql>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
-        SELECT COUNT(*) FROM cooperation_organ
-        <where>
-            del_flag_ != 1
-            <if test="search != null">
-                AND (id_ LIKE CONCAT('%',#{search},'%') OR name_ LIKE CONCAT('%',#{search},'%'))
-            </if>
-            <if test="organId != null">
-                AND FIND_IN_SET(organ_id_,#{organId})
-            </if>
-            <if test="isEnable != null">
-                AND is_enable_ = #{isEnable}
-            </if>
-            <if test="fullJobResource != null">
-                AND full_job_resource_ = #{fullJobResource}
-            </if>
-        </where>
+        SELECT COUNT(co.id_) FROM cooperation_organ co
+        LEFT JOIN sys_user su ON su.id_ = co.education_user_id_
+        <include refid="queryPageSql"/>
     </select>
 
     <select id="queryByOrganId" resultMap="CooperationOrgan">

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

@@ -190,6 +190,9 @@
         </set>
         WHERE id_ = #{id}
     </update>
+    <update id="batchUpdateEdu">
+        UPDATE music_group SET educational_teacher_id_ = #{educationUserId} WHERE cooperation_organ_id_ = #{cooperationOrganId}
+    </update>
 
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">
@@ -744,4 +747,10 @@
         </foreach>
         AND mg.educational_teacher_id_ IS NOT NULL
     </select>
+    <select id="findByCooperationId" resultMap="MusicGroup">
+        SELECT * FROM music_group WHERE cooperation_organ_id_ = #{cooperationOrganId}
+    </select>
+    <select id="findByCooperationIdAndStatus" resultMap="MusicGroup">
+        SELECT * FROM music_group WHERE cooperation_organ_id_ = #{cooperationOrganId} AND status_ IN ('PROGRESS','PAUSE')
+    </select>
 </mapper>

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/CooperationOrganController.java

@@ -55,7 +55,7 @@ public class CooperationOrganController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('cooperationOrgan/update')")
     public Object update(CooperationOrgan cooperationOrgan) {
         cooperationOrgan.setUpdateTime(new Date());
-        cooperationOrganService.update(cooperationOrgan);
+        cooperationOrganService.updateCooperation(cooperationOrgan);
         return succeed();
     }