浏览代码

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 5 年之前
父节点
当前提交
41b86c31cc

+ 17 - 11
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1,16 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.ibatis.annotations.Param;
-
-import com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto;
-import com.ym.mec.biz.dal.dto.CourseScheduleDto;
-import com.ym.mec.biz.dal.dto.Mapper;
-import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
-import com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
@@ -18,6 +8,11 @@ import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
@@ -453,4 +448,15 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 	 * @return
 	 */
 	List<Mapper> queryNotStartCourseScheduleIn90Mins();
+
+	/**
+	 * @describe 获取课程编号和与之对应教师编号列表
+	 * @author Joburgess
+	 * @date 2019/11/2
+	 * @param courseScheduleIds: 课程编号列表
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.IntegerAndIntegerListDto>
+	 */
+	List<IntegerAndIntegerListDto> findCourseScheduleIdAndUserIdsMap(@Param("courseScheduleIds") List<Integer> courseScheduleIds);
+
+
 }

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPurchaseListDao.java

@@ -2,8 +2,12 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.MusicGroupPurchaseList;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface MusicGroupPurchaseListDao extends BaseDAO<Integer, MusicGroupPurchaseList> {
 
-	
+
+    int batchInsert(@Param("musicGroupPurchaseLists") List<MusicGroupPurchaseList> MusicGroupPurchaseLists);
 }

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/IntegerAndIntegerListDto.java

@@ -0,0 +1,30 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.util.List;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/11/2
+ */
+public class IntegerAndIntegerListDto {
+
+    private Integer id;
+
+    private List<Integer> ids;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public List<Integer> getIds() {
+        return ids;
+    }
+
+    public void setIds(List<Integer> ids) {
+        this.ids = ids;
+    }
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -124,6 +124,9 @@ public class MusicGroup {
 
 	@ApiModelProperty(value = "在读人数",required = true)
 	private Integer payNum;
+	
+	@ApiModelProperty(value = "是否是课堂课",required = true)
+	private boolean isClassroomLessons;
 
 	public String getCooperationOrganName() {
 		return cooperationOrganName;
@@ -389,6 +392,14 @@ public class MusicGroup {
 		this.settlementType = settlementType;
 	}
 
+	public boolean isClassroomLessons() {
+		return isClassroomLessons;
+	}
+
+	public void setClassroomLessons(boolean isClassroomLessons) {
+		this.isClassroomLessons = isClassroomLessons;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderDetailService.java

@@ -34,4 +34,11 @@ public interface StudentPaymentOrderDetailService extends BaseService<Long, Stud
      */
     List<Goods> getMusicalList(String musicGroupId);
 
+    /**
+     * 确认采购清单
+     * @param musicGroupId
+     * @return
+     */
+    List<Goods> verifyMusicalList(String musicGroupId);
+
 }

+ 65 - 50
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -268,6 +268,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				.filter(courseSchedule -> Objects.nonNull(courseSchedule.getId()))
 				.map(CourseSchedule::getId)
 				.collect(Collectors.toList());
+
 		//排除只需调整的课程
 		existCourseSchedules=existCourseSchedules.stream()
 				.filter(courseSchedule -> !updateCourseScheduleIds.contains(courseSchedule.getId()))
@@ -280,7 +281,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			allCourseSchedules = courseSchedules;
 		}
 		//所有课程的班级编号
-		List<Integer> classGroupIds = courseSchedules
+		List<Integer> classGroupIds = allCourseSchedules
 				.stream()
 				.map(CourseSchedule::getClassGroupId)
 				.distinct()
@@ -291,58 +292,72 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				.stream()
 				.collect(Collectors.groupingBy(ClassGroupStudentMapper::getClassGroupId));
 
+
+        courseScheduleDao.findCourseScheduleIdAndUserIdsMap(new ArrayList<>());
+
 		//将课程计划按照开课时间排序
 		allCourseSchedules.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
 		if(allCourseSchedules.size()>1){
-			for (int i=0;i<allCourseSchedules.size()-1;i++){
-				//当前课程
-				CourseSchedule preCourseSchedule = allCourseSchedules.get(i);
-				//后面一节课程
-				CourseSchedule backCourseSchedule = allCourseSchedules.get(i+1);
-				//判断存在时间重叠的课程
-				if(backCourseSchedule.getStartClassTime().before(preCourseSchedule.getEndClassTime())){
-					//提示信息
-					StringBuffer errInfo = new StringBuffer("在");
-					errInfo.append(DateUtil.dateToString(preCourseSchedule.getStartClassTime(),DateUtil.EXPANDED_DATE_TIME_FORMAT));
-					errInfo.append("至");
-					errInfo.append(DateUtil.dateToString(backCourseSchedule.getEndClassTime(),DateUtil.EXPANDED_DATE_TIME_FORMAT));
-					errInfo.append("时间段内");
-					//如果存在时间重叠,则需要判断前后两节课的教师和学生是否存在冲突
-					//教师冲突检测
-					if(Objects.nonNull(preCourseSchedule.getActualTeacherId())
-							&&preCourseSchedule.getActualTeacherId().equals(backCourseSchedule.getActualTeacherId())){
-						errInfo.append("安排的教师有课程冲突");
-						throw new BizException(errInfo.toString());
-					}
-					//学生冲突检测
-					if(preCourseSchedule.getClassGroupId().equals(backCourseSchedule.getClassGroupId())){
-						//如果班级相同,则学生肯定存在冲突
-						errInfo.append("安排的课程存在学生冲突");
-						throw new BizException(errInfo.toString());
-					}
-					//如果班级不同,则需要检测两个班级是否存在重复的学生
-					List<ClassGroupStudentMapper> preClassGroupStudents=classGroupStudentsMap.get(preCourseSchedule.getClassGroupId());
-					List<ClassGroupStudentMapper> backClassGroupStudents=classGroupStudentsMap.get(backCourseSchedule.getClassGroupId());
-					//如果有一个存在没有学生的班级则不存在冲突
-					if(CollectionUtils.isEmpty(preClassGroupStudents)||CollectionUtils.isEmpty(backClassGroupStudents)){
-						continue;
-					}
-					//当前课程所在班级的学生编号列表
-					List<Integer> preClassGroupStudentIds = preClassGroupStudents.stream()
-							.map(ClassGroupStudentMapper::getUserId)
-							.collect(Collectors.toList());
-					//后面一节课程所在班级的学生编号列表
-					List<Integer> backClassGroupStudentIds = backClassGroupStudents.stream()
-							.map(ClassGroupStudentMapper::getUserId)
-							.collect(Collectors.toList());
-					List<Integer> repeatStudentIds = preClassGroupStudentIds.stream()
-							.filter(backClassGroupStudentIds::contains)
-							.collect(Collectors.toList());
-					if(!CollectionUtils.isEmpty(repeatStudentIds)){
-						errInfo.append("安排的课程存在学生冲突");
-						throw new BizException(errInfo.toString());
-					}
-				}
+		    //记录连续冲突的次数
+		    Integer repeatTimes=1;
+			for (int i=1;i<allCourseSchedules.size();i++){
+				for(int j=repeatTimes;j>0;j--){
+                    //当前课程
+                    CourseSchedule preCourseSchedule = allCourseSchedules.get(i-j);
+                    //后面一节课程
+                    CourseSchedule backCourseSchedule = allCourseSchedules.get(i);
+                    //判断前后两届课是否存在冲突
+                    if(backCourseSchedule.getStartClassTime().before(preCourseSchedule.getEndClassTime())){
+                        //提示信息
+                        StringBuffer errInfo = new StringBuffer("在");
+                        errInfo.append(DateUtil.dateToString(preCourseSchedule.getStartClassTime(),DateUtil.EXPANDED_DATE_TIME_FORMAT));
+                        errInfo.append("至");
+                        errInfo.append(DateUtil.dateToString(backCourseSchedule.getEndClassTime(),DateUtil.EXPANDED_DATE_TIME_FORMAT));
+                        errInfo.append("时间段内");
+                        //如果存在时间重叠,则需要判断前后两节课的教师和学生是否存在冲突
+                        //教师冲突检测
+                        if(Objects.nonNull(preCourseSchedule.getActualTeacherId())
+                                &&preCourseSchedule.getActualTeacherId().equals(backCourseSchedule.getActualTeacherId())){
+                            errInfo.append("安排的教师有课程冲突");
+                            throw new BizException(errInfo.toString());
+                        }
+                        //学生冲突检测
+                        if(preCourseSchedule.getClassGroupId().equals(backCourseSchedule.getClassGroupId())){
+                            //如果班级相同,则学生肯定存在冲突
+                            errInfo.append("安排的课程存在学生冲突");
+                            throw new BizException(errInfo.toString());
+                        }
+                        //如果班级不同,则需要检测两个班级是否存在重复的学生
+                        List<ClassGroupStudentMapper> preClassGroupStudents=classGroupStudentsMap.get(preCourseSchedule.getClassGroupId());
+                        List<ClassGroupStudentMapper> backClassGroupStudents=classGroupStudentsMap.get(backCourseSchedule.getClassGroupId());
+                        //如果有一个存在没有学生的班级则不存在冲突
+                        if(CollectionUtils.isEmpty(preClassGroupStudents)||CollectionUtils.isEmpty(backClassGroupStudents)){
+                            continue;
+                        }
+                        //当前课程所在班级的学生编号列表
+                        List<Integer> preClassGroupStudentIds = preClassGroupStudents.stream()
+                                .map(ClassGroupStudentMapper::getUserId)
+                                .collect(Collectors.toList());
+                        //后面一节课程所在班级的学生编号列表
+                        List<Integer> backClassGroupStudentIds = backClassGroupStudents.stream()
+                                .map(ClassGroupStudentMapper::getUserId)
+                                .collect(Collectors.toList());
+                        List<Integer> repeatStudentIds = preClassGroupStudentIds.stream()
+                                .filter(backClassGroupStudentIds::contains)
+                                .collect(Collectors.toList());
+                        if(!CollectionUtils.isEmpty(repeatStudentIds)){
+                            errInfo.append("安排的课程存在学生冲突");
+                            throw new BizException(errInfo.toString());
+                        }
+                        if(j==repeatTimes){
+                            repeatTimes+=1;
+                        }
+                    }else{
+                        if(j==repeatTimes){
+                            repeatTimes=1;
+                        }
+                    }
+                }
 			}
 		}
 	}

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

@@ -819,4 +819,4 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 //        String content = sysConfigDao.findConfigValue(MessageTypeEnum.SMS_BASICS_SKILL_APPLY_MESSAGE.getCode());
 //        sysMessageService.batchSendMessage(MessageSender.YIMEI,"",content,parentsPhones,date,0,"");
     }
-}
+}

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java

@@ -1,8 +1,11 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.biz.dal.dao.MusicGroupPurchaseListDao;
 import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MusicGroupPurchaseList;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.service.GoodsService;
+import com.ym.mec.biz.service.MusicGroupPurchaseListService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -12,6 +15,8 @@ import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 @Service
@@ -21,6 +26,8 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
     private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
     @Autowired
     private GoodsService goodsService;
+    @Autowired
+    private MusicGroupPurchaseListDao musicGroupPurchaseListDao;
 
     @Override
     public BaseDAO<Long, StudentPaymentOrderDetail> getDAO() {
@@ -65,4 +72,22 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
         }
         return goodies;
     }
+
+    @Override
+    public List<Goods> verifyMusicalList(String musicGroupId) {
+        List<Goods> musicalList = getMusicalList(musicGroupId);
+        Date date = new Date();
+        List<MusicGroupPurchaseList> musicGroupPurchaseLists = new ArrayList<>();
+        for (Goods goods : musicalList) {
+            MusicGroupPurchaseList musicGroupPurchaseList = new MusicGroupPurchaseList();
+            musicGroupPurchaseList.setGoodsId(goods.getId());
+            musicGroupPurchaseList.setMusicGroupId(musicGroupId);
+            musicGroupPurchaseList.setPurchaseNum(goods.getSellCount());
+            musicGroupPurchaseList.setCreateTime(date);
+            musicGroupPurchaseList.setUpdateTime(date);
+            musicGroupPurchaseLists.add(musicGroupPurchaseList);
+        }
+        musicGroupPurchaseListDao.batchInsert(musicGroupPurchaseLists);
+        return  musicalList;
+    }
 }

+ 21 - 5
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -441,6 +441,7 @@
         cs.status_,
         csts.user_id_ actual_teacher_id_,
         csts.teacher_role_,
+        cs.schoole_id_,
         s.name_ school_name_,
         if(ta.sign_in_status_ IS NULL,0,1) sign_in_status_,
         if(ta.sign_out_status_ IS NULL,0,1) sign_out_status_,
@@ -450,8 +451,7 @@
         LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
         LEFT JOIN sys_user su ON csts.user_id_ = su.id_
         LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
-        LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
-        LEFT JOIN school s ON mg.school_id_ = s.id_
+        LEFT JOIN school s ON cs.schoole_id_ = s.id_
         LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{teacherId}
         WHERE
         cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
@@ -1081,7 +1081,7 @@
             CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
             CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
             cs.teacher_id_,
-            csts.user_id_ actual_teacher_id_,
+            cs.actual_teacher_id_,
             cs.create_time_,
             cs.update_time_,
             cs.teach_mode_,
@@ -1092,9 +1092,7 @@
             cs.schoole_id_
         FROM
             course_schedule cs
-            LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
             WHERE cs.class_date_ BETWEEN DATE_FORMAT(#{startTime},'%Y%m%d') AND DATE_FORMAT(#{endTime},'%Y%m%d')
-            AND csts.teacher_role_='BISHOP'
     </select>
     
     <select id="queryStudentCoursesTimesOfTomorrow" resultMap="Mapper">
@@ -1104,4 +1102,22 @@
     <select id="queryNotStartCourseScheduleIn90Mins" resultMap="Mapper">
     	select cssp.user_id_ key_,cs.name_ value_ from course_schedule cs right join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_ where CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt; DATE_ADD(now(),INTERVAL 90 MINUTE) and cs.status_ = 'NOT_START'
     </select>
+
+    <resultMap id="IntegerAndIntegerListDto" type="com.ym.mec.biz.dal.dto.IntegerAndIntegerListDto">
+        <result property="id" column="id_"/>
+        <collection property="ids" ofType="string" javaType="list">
+            <result column="relate_id"/>
+        </collection>
+    </resultMap>
+
+    <select id="findCourseScheduleIdAndUserIdsMap" resultMap="IntegerAndIntegerListDto">
+        select
+          course_schedule_id_ id_,
+          user_id_ relate_ids
+        from course_schedule_teacher_salary
+        where course_schedule_id_ IN
+        <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+            #{courseScheduleId}
+        </foreach>
+    </select>
 </mapper>

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

@@ -83,4 +83,13 @@
             </if>
         </where>
 	</select>
+
+    <insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupPurchaseList" useGeneratedKeys="true"
+            keyColumn="id" keyProperty="id">
+        INSERT INTO music_group_purchase_list (id_,music_group_id_,goods_id_,purchase_num_,create_time_,update_time_)
+        VALUES
+        <foreach collection="musicGroupPurchaseLists" item="item" index="index" separator=",">
+        (#{item.id},#{item.musicGroupId},#{item.goodsId},#{item.purchaseNum},now(),now())
+        </foreach>
+    </insert>
 </mapper>

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

@@ -72,6 +72,7 @@ public class CourseScheduleController extends BaseController {
                 throw new BizException("乐团老师设置有误");
             }
             courseSchedule.setTeacherId(classGroupTeacherMappers.get(0).getUserId());
+            courseSchedule.setActualTeacherId(classGroupTeacherMappers.get(0).getUserId());
             courseSchedule.setSchoolId(musicGroup.getSchoolId());
         });
 

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentOrderController.java

@@ -41,5 +41,13 @@ public class StudentPaymentOrderController extends BaseController {
         return succeed(studentPaymentOrderDetailService.getMusicalList(musicGroupId));
     }
 
+    @ApiOperation(value = "乐器清单确认")
+    @GetMapping("/verifyMusicalList")
+    @PreAuthorize("@pcs.hasPermissions('order/verifyMusicalList')")
+    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String")})
+    public Object verifyMusicalListMusicalList(String musicGroupId){
+        return succeed(studentPaymentOrderDetailService.verifyMusicalList(musicGroupId));
+    }
+
 
 }

+ 2 - 3
mec-web/src/main/java/com/ym/mec/web/controller/teacher/TeacherDefaultMusicGroupSalaryController.java → mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultMusicGroupSalaryController.java

@@ -1,6 +1,5 @@
-package com.ym.mec.web.controller.teacher;
+package com.ym.mec.web.controller;
 
-import com.ym.mec.biz.dal.page.TeacherMusicGroupSalaryQueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -14,9 +13,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
+import com.ym.mec.biz.dal.page.TeacherMusicGroupSalaryQueryInfo;
 import com.ym.mec.biz.service.TeacherDefaultMusicGroupSalaryService;
 import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.page.QueryInfo;
 
 @RequestMapping("teacherDefaultMusicGroupSalary")
 @Api(tags = "教师薪酬服务")

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/teacher/TeacherLeaveRecordController.java → mec-web/src/main/java/com/ym/mec/web/controller/TeacherLeaveRecordController.java

@@ -1,4 +1,4 @@
-package com.ym.mec.web.controller.teacher;
+package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.dto.TeacherLeaveRecordDto;
 import com.ym.mec.biz.dal.entity.TeacherLeaveRecord;