Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

Joburgess 4 лет назад
Родитель
Сommit
cbbdc2c9ee

+ 23 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleStudentPayment.java

@@ -11,7 +11,7 @@ import java.math.BigDecimal;
 /**
  * 对应数据库表(course_schedule_student_payment):
  */
-public class CourseScheduleStudentPayment {
+public class CourseScheduleStudentPayment implements Comparable<CourseScheduleStudentPayment> {
 
 	/**  */
 	private Long id;
@@ -25,6 +25,8 @@ public class CourseScheduleStudentPayment {
 	/**  */
 	private Long courseScheduleId;
 	
+	private CourseSchedule courseSchedule;
+	
 	/**  */
 	private Integer userId;
 
@@ -168,9 +170,29 @@ public class CourseScheduleStudentPayment {
 		this.batchNo = batchNo;
 	}
 
+	public CourseSchedule getCourseSchedule() {
+		return courseSchedule;
+	}
+
+	public void setCourseSchedule(CourseSchedule courseSchedule) {
+		this.courseSchedule = courseSchedule;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 	}
 
+	@Override
+	public int compareTo(CourseScheduleStudentPayment cssp) {
+		if(courseSchedule != null){
+			int r = courseSchedule.getClassDate().compareTo(cssp.getCourseSchedule().getClassDate());
+			if(r == 0){
+				return courseSchedule.getStartClassTime().compareTo(cssp.getCourseSchedule().getStartClassTime());
+			}
+			return r;
+		}
+		return 0;
+	}
+
 }

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

@@ -28,6 +28,8 @@ public class EmployeeInfoQueryInfo extends QueryInfo {
 	@ApiModelProperty(value = "状态", required = false)
 	private StaffStatusEnum status;
 	
+	private String operator;
+	
 	private Date startDate;
 	
 	private Date endDate;
@@ -95,4 +97,12 @@ public class EmployeeInfoQueryInfo extends QueryInfo {
 	public void setEndDate(Date endDate) {
 		this.endDate = endDate;
 	}
+
+	public String getOperator() {
+		return operator;
+	}
+
+	public void setOperator(String operator) {
+		this.operator = operator;
+	}
 }

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

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
@@ -184,7 +185,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param classGroupIdListStr
      * @return
      */
-    boolean addStudentToClassGroupAndCourseArranging(Integer studentId, String classGroupIdListStr);
+    boolean addStudentToClassGroupAndCourseArranging(Integer studentId, String classGroupIdListStr, List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingsList);
 
     /**
      * 获取未分配合奏的单技班列表

+ 95 - 83
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -83,6 +83,7 @@ import com.ym.mec.biz.dal.entity.ClassGroupRelation;
 import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
 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;
 import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
 import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
@@ -90,6 +91,7 @@ import com.ym.mec.biz.dal.entity.CoursesGroup;
 import com.ym.mec.biz.dal.entity.Group;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
 import com.ym.mec.biz.dal.entity.PracticeGroup;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.entity.Subject;
@@ -1125,89 +1127,99 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-	public boolean addStudentToClassGroupAndCourseArranging(Integer studentId, String classGroupIdListStr) {
-    	
-    	List<ClassGroup> classGroupList = classGroupDao.findClassGroupByIds(classGroupIdListStr);
-    	if(classGroupList == null || classGroupList.size() == 0){
-    		throw new BizException("班级查询失败");
-    	}
-
-        Date date = new Date();
-        List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
-        
-    	for(ClassGroup classGroup : classGroupList){
-    		//1、增加班级人数
-    		classGroupDao.addStudentNum(classGroup);
-    		
-    		//2、插入关联关系
-    		ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
-            classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
-            classGroupStudentMapper.setClassGroupId(classGroup.getId());
-            classGroupStudentMapper.setUserId(studentId);
-            classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-            classGroupStudentMapper.setGroupType(classGroup.getGroupType());
-            classGroupStudentMapper.setCreateTime(date);
-            classGroupStudentMapperDao.insert(classGroupStudentMapper);
-          
-            //3、学生加入级未开始课程
-            List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
-            for (CourseSchedule courseSchedule : courseScheduleList) {
-                CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
-                courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
-                courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
-                courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
-                courseScheduleStudentPayment.setUserId(studentId);
-                courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
-                courseScheduleStudentPayment.setCreateTime(date);
-                courseScheduleStudentPayment.setUpdateTime(date);
-                courseScheduleStudentPayments.add(courseScheduleStudentPayment);
-            }
-
-            List<Long> courseScheduleIds = courseScheduleList.stream().map(CourseSchedule::getId).collect(Collectors.toList());
-            //4、调整线上基础技能班未上课课酬
-            List<ClassGroupTeacherMapper> classGroupTeachers = classGroupTeacherMapperService.getClassGroupTeachers(classGroup.getId());
-            int hasTeacherSalaryCount = 0;
-            if (courseScheduleIds.size() > 0) {
-                hasTeacherSalaryCount = courseScheduleTeacherSalaryDao.getHasTeacherSalaryCount(courseScheduleIds);
-            }
-            if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) && hasTeacherSalaryCount > 0) {
-                Integer studentNum = classGroup.getStudentNum() + 1;
-                List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
-                courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
-                for (CourseSchedule courseSchedule : courseScheduleList) {
-                    for (ClassGroupTeacherMapper classGroupTeacher : classGroupTeachers) {
-                        List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacher.getUserId(), ClassGroupTypeEnum.HIGH_ONLINE.getCode(), null);
-                        Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
-                        TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(courseSchedule.getType());
-                        BigDecimal salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
-
-                        CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
-                        courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
-                        courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
-                        courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
-                        courseScheduleTeacherSalary.setTeacherRole(classGroupTeacher.getTeacherRole());
-                        courseScheduleTeacherSalary.setUserId(classGroupTeacher.getUserId());
-                        courseScheduleTeacherSalary.setExpectSalary(salary);
-                        courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
-                        courseScheduleTeacherSalary.setCreateTime(date);
-                        courseScheduleTeacherSalary.setUpdateTime(date);
-                        courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
-                    }
-                }
-                courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
-            }
-
-            //5、加入班级群组
-            ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(studentId.toString())};
-            imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
-
-    	}
-
-        if (courseScheduleStudentPayments.size() != 0) {
-            courseScheduleStudentPaymentService.batchInsert(courseScheduleStudentPayments);
-        }
-
-    	return true;
+	public boolean addStudentToClassGroupAndCourseArranging(Integer studentId, String classGroupIdListStr,
+			List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingsList) {
+
+		List<ClassGroup> classGroupList = classGroupDao.findClassGroupByIds(classGroupIdListStr);
+		if (classGroupList == null || classGroupList.size() == 0) {
+			throw new BizException("班级查询失败");
+		}
+
+		Date date = new Date();
+		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
+
+		// 计算单价
+		Map<CourseScheduleType, BigDecimal> unitPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
+		Map<CourseScheduleType, BigDecimal> OriginTotalPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
+		for (MusicGroupPaymentCalenderCourseSettings musicGroupPaymentCalenderCourseSettings : musicGroupPaymentCalenderCourseSettingsList) {
+			unitPriceMap.put(
+					musicGroupPaymentCalenderCourseSettings.getCourseType(),
+					musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice().divide(
+							new BigDecimal(musicGroupPaymentCalenderCourseSettings.getCourseTotalMinuties())));
+			
+			OriginTotalPriceMap.put(musicGroupPaymentCalenderCourseSettings.getCourseType(), musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice());
+		}
+
+		Map<CourseScheduleType, BigDecimal> totalPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
+
+		BigDecimal unitPrice = new BigDecimal(0);
+		CourseScheduleType courseType = null;
+		for (ClassGroup classGroup : classGroupList) {
+			// 1、增加班级人数
+			classGroupDao.addStudentNum(classGroup);
+
+			// 2、插入关联关系
+			ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
+			classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
+			classGroupStudentMapper.setClassGroupId(classGroup.getId());
+			classGroupStudentMapper.setUserId(studentId);
+			classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+			classGroupStudentMapper.setGroupType(classGroup.getGroupType());
+			classGroupStudentMapper.setCreateTime(date);
+			classGroupStudentMapperDao.insert(classGroupStudentMapper);
+
+			// 3、学生加入级未开始课程
+			List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
+			for (CourseSchedule courseSchedule : courseScheduleList) {
+				CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+				courseScheduleStudentPayment.setCourseSchedule(courseSchedule);
+				courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
+				courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
+				courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
+				courseScheduleStudentPayment.setUserId(studentId);
+
+				unitPrice = unitPriceMap.get(courseSchedule.getType());
+				if (unitPrice != null) {
+					courseType = courseSchedule.getType();
+					BigDecimal duration = new BigDecimal(DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime()));
+					courseScheduleStudentPayment.setExpectPrice(unitPrice.multiply(duration).setScale(2, BigDecimal.ROUND_DOWN));
+
+					if (totalPriceMap.containsKey(courseType)) {
+						totalPriceMap.put(courseType, totalPriceMap.get(courseType).add(courseScheduleStudentPayment.getExpectPrice()));
+					} else {
+						totalPriceMap.put(courseType, courseScheduleStudentPayment.getExpectPrice());
+					}
+				}
+				courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
+				courseScheduleStudentPayment.setCreateTime(date);
+				courseScheduleStudentPayment.setUpdateTime(date);
+				courseScheduleStudentPayments.add(courseScheduleStudentPayment);
+			}
+
+			// 5、加入班级群组
+			ImGroupMember[] imGroupMembers = new ImGroupMember[] { new ImGroupMember(studentId.toString()) };
+			imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+
+		}
+
+		if (courseScheduleStudentPayments.size() > 0) {
+			// 排序
+			Collections.sort(courseScheduleStudentPayments);
+			List<CourseScheduleType> list = new ArrayList<CourseSchedule.CourseScheduleType>();
+			for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
+				courseType = courseScheduleStudentPayment.getCourseSchedule().getType();
+				if (!list.contains(courseType)) {
+					list.add(courseType);
+
+					// 修改第一节课的金额
+					courseScheduleStudentPayment.setExpectPrice(courseScheduleStudentPayment.getExpectPrice().add(
+							OriginTotalPriceMap.get(courseType).subtract(totalPriceMap.get(courseType))));
+				}
+			}
+			courseScheduleStudentPaymentService.batchInsert(courseScheduleStudentPayments);
+		}
+
+		return true;
 	}
 
 	@Override

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

@@ -269,7 +269,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 						// 学生加到班级
 						String classGroupIdStr = musicGroupPaymentCalender.getAttribute1();
 						if (StringUtils.isNotBlank(classGroupIdStr)) {
-							classGroupService.addStudentToClassGroupAndCourseArranging(Integer.parseInt(studentId), classGroupIdStr);
+							classGroupService.addStudentToClassGroupAndCourseArranging(Integer.parseInt(studentId), classGroupIdStr, musicGroupPaymentCalenderCourseSettingsList);
 						}
 					}
 				}
@@ -479,7 +479,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 						// 学生加到班级
 						String classGroupIdStr = musicGroupPaymentCalender.getAttribute1();
 						if(StringUtils.isNotBlank(classGroupIdStr)){
-							classGroupService.addStudentToClassGroupAndCourseArranging(Integer.parseInt(studentId), classGroupIdStr);
+							classGroupService.addStudentToClassGroupAndCourseArranging(Integer.parseInt(studentId), classGroupIdStr, musicGroupPaymentCalenderCourseSettingsList);
 						}
 					}
 				}

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/EmployeeInfoMapper.xml

@@ -144,6 +144,9 @@
 	        <if test="endDate != null">
 	            AND ei.update_time_ &lt;= #{endDate}
 	        </if>
+	        <if test="operator != null">
+	            AND (ei.operator_id_ like concat('%',#{operator},'%') or u.real_name_ like concat('%',#{operator},'%'))
+	        </if>
 		</where>
     </sql>
 
@@ -162,6 +165,7 @@
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(ei.id_) FROM employee_info ei
+		left join sys_user u on u.id_ = ei.operator_id_
         <include refid="queryPageMap"/>
 	</select>
 </mapper>