浏览代码

乐团档案

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

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1942,4 +1942,11 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     List<String> queryClassDateList(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    /**
+     * 统计班级内指定类型的课程数量
+     * @param musicGroupTrainPlanSaveDto
+     * @return
+     */
+    int countCourseByClassAndType(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
 }

+ 6 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupTrainPlanDao.java

@@ -16,17 +16,19 @@ public interface MusicGroupTrainPlanDao extends BaseDAO<Integer, MusicGroupTrain
 
     /**
      * 课程数量大于课程规划
-     * @param musicGroupId
+     * @param musicGroupTrainPlanSaveDto
      * @return
      */
-    List<WaitCourseTrainPlanDto> queryWaitCourseTrainPlan(String musicGroupId);
+    List<WaitCourseTrainPlanDto> queryWaitCourseTrainPlan(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
 
     /**
      * 课程数量小于课程规划
-     * @param musicGroupId
+     * @param musicGroupTrainPlanSaveDto
      * @return
      */
-    List<WaitCourseTrainPlanDto> queryWaitCourseTrainPlan1(String musicGroupId);
+    List<WaitCourseTrainPlanDto> queryWaitCourseTrainPlan1(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
 
     List<String> findAllPlan(Map<String, Object> paramMap);
+
+    int countPlanNum(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
 }

+ 25 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupTrainPlanServiceImpl.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.entity.MusicGroupTrainPlan;
 import com.ym.mec.biz.dal.entity.MusicGroupTrainPlanSaveDto;
 import com.ym.mec.biz.service.MusicGroupTrainPlanService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
@@ -17,7 +18,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
@@ -40,6 +43,16 @@ public class MusicGroupTrainPlanServiceImpl extends BaseServiceImpl<Integer, Mus
 	public int add(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto) {
 		//获取学期时间
 		getCourseDetail(musicGroupTrainPlanSaveDto);
+		List<String> plans = musicGroupTrainPlanSaveDto.getPlans();
+		if(plans == null || plans.size() == 0){
+			throw new BizException("请录入课程规划");
+		}
+		//获取当前班级的课程类型课程数
+		int courseNum = courseScheduleDao.countCourseByClassAndType(musicGroupTrainPlanSaveDto);
+		int planNum = musicGroupTrainPlanDao.countPlanNum(musicGroupTrainPlanSaveDto);
+		if((planNum + plans.size()) > courseNum){
+			throw new BizException("课程规划不得超过课程数");
+		}
 		return musicGroupTrainPlanDao.add(musicGroupTrainPlanSaveDto);
 	}
 
@@ -55,15 +68,9 @@ public class MusicGroupTrainPlanServiceImpl extends BaseServiceImpl<Integer, Mus
 		paramMap.put("endSchoolTerm",musicGroupTrainPlanSaveDto.getEndSchoolTerm());
 		//课程规划
 		List<MusicGroupTrainPlan> musicGroupTrainPlans = musicGroupTrainPlanDao.findAll(paramMap);
-		Map<String,Object> resultMap = new HashMap<>(4);
+		Map<String,Object> resultMap = new HashMap<>(2);
 		resultMap.put("classDates",classDates);
 		resultMap.put("musicGroupTrainPlans",musicGroupTrainPlans);
-		//未规划的课程明细
-		//获取乐团当前学期每个班级不同课程类型数量
-		List<WaitCourseTrainPlanDto> waitCourseTrainPlanDtos = musicGroupTrainPlanDao.queryWaitCourseTrainPlan(musicGroupTrainPlanSaveDto.getMusicGroupId());
-		resultMap.put("waitCourseTrainPlanDtos",waitCourseTrainPlanDtos);
-		List<WaitCourseTrainPlanDto> queryWaitCourseTrainPlan1 = musicGroupTrainPlanDao.queryWaitCourseTrainPlan1(musicGroupTrainPlanSaveDto.getMusicGroupId());
-		resultMap.put("waitCourseTrainPlanDtos1",queryWaitCourseTrainPlan1);
 		return resultMap;
 	}
 
@@ -103,16 +110,23 @@ public class MusicGroupTrainPlanServiceImpl extends BaseServiceImpl<Integer, Mus
 		getCourseDetail(musicGroupTrainPlanSaveDto);
 		Map<String,Object> resultMap = new HashMap<>(2);
 		//获取乐团当前学期每个班级不同课程类型数量
-		List<WaitCourseTrainPlanDto> waitCourseTrainPlanDtos = musicGroupTrainPlanDao.queryWaitCourseTrainPlan(musicGroupTrainPlanSaveDto.getMusicGroupId());
+		List<WaitCourseTrainPlanDto> waitCourseTrainPlanDtos = musicGroupTrainPlanDao.queryWaitCourseTrainPlan(musicGroupTrainPlanSaveDto);
 		resultMap.put("waitCourseTrainPlanDtos",waitCourseTrainPlanDtos);
-		List<WaitCourseTrainPlanDto> queryWaitCourseTrainPlan1 = musicGroupTrainPlanDao.queryWaitCourseTrainPlan1(musicGroupTrainPlanSaveDto.getMusicGroupId());
+		List<WaitCourseTrainPlanDto> queryWaitCourseTrainPlan1 = musicGroupTrainPlanDao.queryWaitCourseTrainPlan1(musicGroupTrainPlanSaveDto);
 		resultMap.put("waitCourseTrainPlanDtos1",queryWaitCourseTrainPlan1);
 		return resultMap;
 	}
 
 	private MusicGroupTrainPlanSaveDto getCourseDetail(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto){
 		String year = musicGroupTrainPlanSaveDto.getYear();
-		if(musicGroupTrainPlanSaveDto.getTerm() == 0){
+		if(StringUtils.isEmpty(year)){
+			throw new BizException("请录入年份");
+		}
+		Integer term = musicGroupTrainPlanSaveDto.getTerm();
+		if(term == null){
+			throw new BizException("请录入学期");
+		}
+		if(term == 0){
 			musicGroupTrainPlanSaveDto.setStartSchoolTerm(DateUtil.stringToDate(year + "-03-01 00:00:00"));
 			musicGroupTrainPlanSaveDto.setEndSchoolTerm(DateUtil.stringToDate(year + "-08-31 00:00:00"));
 		}else {

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -3995,4 +3995,15 @@
         AND cs.is_lock_ = 0 AND cs.pre_course_flag_ = 0 AND cs.del_flag_ = 0
         ORDER BY cs.class_date_,cs.start_class_time_
     </select>
+    <select id="countCourseByClassAndType" resultType="int">
+        SELECT COUNT(cs.id_) FROM course_schedule cs
+        WHERE cs.class_group_id_ = #{dto.classGroupId} AND cs.type_ = #{dto.courseScheduleType}
+        <if test="dto.startSchoolTerm != null">
+            AND cs.class_date_ >= DATE_FORMAT(#{dto.startSchoolTerm}, '%Y%m%d')
+        </if>
+        <if test="dto.endSchoolTerm != null">
+            AND cs.class_date_ &lt;= DATE_FORMAT(#{dto.endSchoolTerm}, '%Y%m%d')
+        </if>
+        AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+    </select>
 </mapper>

+ 39 - 5
mec-biz/src/main/resources/config/mybatis/MusicGroupTrainPlanMapper.xml

@@ -123,23 +123,57 @@
 		SELECT c.class_group_id_,c.type_,c.course_num_ - t.course_num_ num_,c.name_ FROM (
 		SELECT cs.class_group_id_,cs.type_,COUNT(cs.id_) course_num_,cg.name_ FROM course_schedule cs
 		LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
-		WHERE cs.music_group_id_ = #{musicGroupId}
+		WHERE cs.music_group_id_ = #{musicGroupId} AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+		<if test="dto.startSchoolTerm != null">
+			AND cs.class_date_ >= DATE_FORMAT(#{dto.startSchoolTerm}, '%Y%m%d')
+		</if>
+		<if test="dto.endSchoolTerm != null">
+			AND cs.class_date_ &lt;= DATE_FORMAT(#{dto.endSchoolTerm}, '%Y%m%d')
+		</if>
 		GROUP BY cs.class_group_id_,cs.type_) c
 		LEFT JOIN (SELECT tp.class_group_id_,tp.course_type_ type_,COUNT(tp.id_) course_num_,'' name_ FROM music_group_train_plan tp
-				   WHERE tp.music_group_id_ = #{musicGroupId}
-				   GROUP BY tp.class_group_id_,tp.course_type_) t ON 1=1
+				WHERE tp.music_group_id_ = #{musicGroupId}
+				<if test="dto.startSchoolTerm != null">
+					AND tp.start_school_term_ = #{dto.startSchoolTerm}
+				</if>
+				<if test="dto.endSchoolTerm != null">
+					AND tp.end_school_term_ = #{dto.endSchoolTerm}
+				</if>
+				GROUP BY tp.class_group_id_,tp.course_type_) t ON 1=1
 		WHERE c.class_group_id_ = t.class_group_id_ AND c.type_ = t.type_ AND c.course_num_ > t.course_num_
 	</select>
     <select id="queryWaitCourseTrainPlan1" resultMap="WaitCourseTrainPlanDto">
 		SELECT c.class_group_id_,c.type_,t.course_num_ - c.course_num_ num_,c.name_
 		FROM (SELECT tp.class_group_id_,tp.course_type_ type_,COUNT(tp.id_) course_num_,'' name_ FROM music_group_train_plan tp
 		WHERE tp.music_group_id_ = #{musicGroupId}
+		<if test="dto.startSchoolTerm != null">
+			AND tp.start_school_term_ = #{dto.startSchoolTerm}
+		</if>
+		<if test="dto.endSchoolTerm != null">
+			AND tp.end_school_term_ = #{dto.endSchoolTerm}
+		</if>
 		GROUP BY tp.class_group_id_,tp.course_type_) t
 		LEFT JOIN (
 		SELECT cs.class_group_id_,cs.type_,COUNT(cs.id_) course_num_,cg.name_ FROM course_schedule cs
 		LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
-		WHERE cs.music_group_id_ = #{musicGroupId}
+		WHERE cs.music_group_id_ = #{musicGroupId} AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.is_lock_ = 0
+		<if test="dto.startSchoolTerm != null">
+			AND cs.class_date_ >= DATE_FORMAT(#{dto.startSchoolTerm}, '%Y%m%d')
+		</if>
+		<if test="dto.endSchoolTerm != null">
+			AND cs.class_date_ &lt;= DATE_FORMAT(#{dto.endSchoolTerm}, '%Y%m%d')
+		</if>
 		GROUP BY cs.class_group_id_,cs.type_) c ON 1=1
-		WHERE c.class_group_id_ = t.class_group_id_ AND c.type_ = t.type_ AND c.course_num_ &lt; t.course_num_;
+		WHERE c.class_group_id_ = t.class_group_id_ AND c.type_ = t.type_ AND c.course_num_ &lt; t.course_num_
+	</select>
+	<select id="countPlanNum" resultType="int">
+		SELECT COUNT(id_) FROM music_group_train_plan
+		WHERE class_group_id_ = #{dto.classGroupId} AND course_type_ = #{dto.courseScheduleType}
+		<if test="dto.startSchoolTerm != null">
+			AND start_school_term_ = #{dto.startSchoolTerm}
+		</if>
+		<if test="dto.endSchoolTerm != null">
+			AND end_school_term_ = #{dto.endSchoolTerm}
+		</if>
 	</select>
 </mapper>

+ 7 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupTrainPlanController.java

@@ -29,6 +29,13 @@ public class MusicGroupTrainPlanController extends BaseController {
 		return succeed(musicGroupTrainPlanService.add(musicGroupTrainPlanSaveDto));
 	}
 
+	@ApiOperation("删除乐团训练规划")
+	@PostMapping(value = "del")
+	@PreAuthorize("@pcs.hasPermissions('musicGroupTrainPlan/del')")
+	public Object del(Integer id) {
+		return succeed(musicGroupTrainPlanService.delete(id));
+	}
+
 	@ApiOperation("修改乐团训练规划")
 	@PostMapping(value = "update")
 	@PreAuthorize("@pcs.hasPermissions('musicGroupTrainPlan/update')")