Преглед изворни кода

Merge remote-tracking branch 'origin/master'

Joburgess пре 5 година
родитељ
комит
a73b5b8935

+ 14 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupActivityDao.java

@@ -9,17 +9,19 @@ import java.util.Map;
 
 public interface VipGroupActivityDao extends BaseDAO<Integer, VipGroupActivity> {
 
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/10/2
-     * 根据课程类型获取vip课 活动方案
-     */
-    List<VipGroupActivity> findByCategory(@Param("categoryId") Long categoryId,@Param("organIds") String organIds);
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/10/2
+	 * 根据课程类型获取vip课 活动方案
+	 */
+	List<VipGroupActivity> findByCategory(@Param("categoryId") Long categoryId, @Param("organIds") String organIds);
 
-    /**
-     * 根据活动方案编号列表获取名称
-     * @param activityIds
-     * @return
-     */
-    List<Map<Integer, String>> queryNamesById(String activityIds);
+	/**
+	 * 根据活动方案编号列表获取名称
+	 * @param activityIds
+	 * @return
+	 */
+	List<Map<Integer, String>> queryNamesById(String activityIds);
+
+	List<VipGroupActivity> queryByIds(@Param("activityIds") String activityIds);
 }

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroup.java

@@ -85,7 +85,7 @@ public class VipGroup {
 	private String organIdList;
 
 	@ApiModelProperty("活动方案编号")
-	private Long vipGroupActivityId;
+	private Integer vipGroupActivityId;
 
 	@ApiModelProperty(value = "活动方案名称")
 	private String vipGroupActivityName;
@@ -220,11 +220,11 @@ public class VipGroup {
 		this.status = status;
 	}
 
-	public Long getVipGroupActivityId() {
+	public Integer getVipGroupActivityId() {
 		return vipGroupActivityId;
 	}
 
-	public void setVipGroupActivityId(Long vipGroupActivityId) {
+	public void setVipGroupActivityId(Integer vipGroupActivityId) {
 		this.vipGroupActivityId = vipGroupActivityId;
 	}
 

+ 19 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultMusicGroupSalaryServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -25,6 +26,7 @@ import com.ym.mec.biz.dal.enums.TeachTypeEnum;
 import com.ym.mec.biz.service.TeacherDefaultMusicGroupSalaryService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.date.DateUtil;
 
 @Service
 public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<Long, TeacherDefaultMusicGroupSalary> implements
@@ -70,7 +72,9 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 				// 修改了哪些课酬
 				TeacherDefaultMusicGroupSalary oldMS = map.get(ms.getCourseScheduleType());
 
-				if (oldMS.getAssistantTeacher30MinSalary().doubleValue() != ms.getAssistantTeacher30MinSalary().doubleValue()
+				if (oldMS == null || oldMS.getAssistantTeacher30MinSalary() == null || oldMS.getMainTeacher30MinSalary() == null
+						|| oldMS.getAssistantTeacher90MinSalary() == null || oldMS.getMainTeacher90MinSalary() == null
+						|| oldMS.getAssistantTeacher30MinSalary().doubleValue() != ms.getAssistantTeacher30MinSalary().doubleValue()
 						|| oldMS.getMainTeacher30MinSalary().doubleValue() != ms.getMainTeacher30MinSalary().doubleValue()
 						|| oldMS.getAssistantTeacher90MinSalary().doubleValue() != ms.getAssistantTeacher90MinSalary().doubleValue()
 						|| oldMS.getMainTeacher90MinSalary().doubleValue() != ms.getMainTeacher90MinSalary().doubleValue()) {
@@ -80,6 +84,12 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 			}
 
 			if (salaryMap.size() > 0) {
+
+				// 删除当前教师所有的结算类型的数据
+				teacherDefaultMusicGroupSalaryDao.delByTeacherId(userId);
+				// 批量新增
+				teacherDefaultMusicGroupSalaryDao.batchAdd(salaries);
+
 				String typeList = salaryMap.keySet().stream().map(e -> e.getCode()).collect(Collectors.joining(","));
 				// 查询所有需要修改的课酬
 				List<CourseScheduleTeacherSalary> updateTeacherSalaryList = courseScheduleTeacherSalaryDao.queryUserNoSettlementListByTypeAndStartClassDate(
@@ -98,20 +108,24 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 						if (musicGroup != null) {
 							TeacherDefaultMusicGroupSalary tdms = salaryMap.get(ts.getCourseSchedule().getType());
 							if (tdms != null) {
+
+								BigDecimal duration = new BigDecimal(DateUtil.minutesBetween(ts.getCourseSchedule().getStartClassTime(), ts.getCourseSchedule()
+										.getEndClassTime()));
+
 								if (musicGroup.getSettlementType() == SalarySettlementTypeEnum.GRADIENT_SALARY) {// 3.0课酬
 
 									// 判断是助教、主教
 									if (ts.getTeacherRole() == TeachTypeEnum.BISHOP) {
-										ts.setExpectSalary(tdms.getMainTeacher90MinSalary());
+										ts.setExpectSalary(duration.divide(new BigDecimal(90)).multiply(tdms.getMainTeacher90MinSalary()));
 									} else {
-										ts.setExpectSalary(tdms.getAssistantTeacher90MinSalary());
+										ts.setExpectSalary(duration.divide(new BigDecimal(90)).multiply(tdms.getAssistantTeacher90MinSalary()));
 									}
 								} else if (musicGroup.getSettlementType() == SalarySettlementTypeEnum.TEACHER_DEFAULT) {// 默认课酬
 									// 判断是助教、主教
 									if (ts.getTeacherRole() == TeachTypeEnum.BISHOP) {
-										ts.setExpectSalary(tdms.getMainTeacher30MinSalary());
+										ts.setExpectSalary(duration.divide(new BigDecimal(30)).multiply(tdms.getMainTeacher30MinSalary()));
 									} else {
-										ts.setExpectSalary(tdms.getAssistantTeacher30MinSalary());
+										ts.setExpectSalary(duration.divide(new BigDecimal(30)).multiply(tdms.getAssistantTeacher30MinSalary()));
 									}
 								}
 							}
@@ -119,11 +133,6 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 					}
 					courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalarys(updateTeacherSalaryList);
 				}
-
-				// 删除当前教师所有的结算类型的数据
-				teacherDefaultMusicGroupSalaryDao.delByTeacherId(userId);
-				// 批量新增
-				teacherDefaultMusicGroupSalaryDao.batchAdd(salaries);
 			}
 		}
 	}

+ 57 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultVipGroupSalaryServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -14,30 +15,38 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
 import com.ym.mec.biz.dal.dao.TeacherDefaultVipGroupSalaryDao;
+import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
 import com.ym.mec.biz.dal.dao.VipGroupDao;
+import com.ym.mec.biz.dal.dto.VipGroupSalarySettlementDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
 import com.ym.mec.biz.dal.entity.VipGroup;
+import com.ym.mec.biz.dal.entity.VipGroupActivity;
+import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import com.ym.mec.biz.service.TeacherDefaultVipGroupSalaryService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
 @Service
-public class TeacherDefaultVipGroupSalaryServiceImpl extends BaseServiceImpl<Long, TeacherDefaultVipGroupSalary>  implements TeacherDefaultVipGroupSalaryService {
-	
+public class TeacherDefaultVipGroupSalaryServiceImpl extends BaseServiceImpl<Long, TeacherDefaultVipGroupSalary> implements TeacherDefaultVipGroupSalaryService {
+
 	@Autowired
 	private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
 
 	@Autowired
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
-	
+
 	@Autowired
 	private VipGroupDao vipGroupDao;
 
+	@Autowired
+	private VipGroupActivityDao vipGroupActivityDao;
+
 	@Override
 	public BaseDAO<Long, TeacherDefaultVipGroupSalary> getDAO() {
 		return teacherDefaultVipGroupSalaryDao;
@@ -46,7 +55,7 @@ public class TeacherDefaultVipGroupSalaryServiceImpl extends BaseServiceImpl<Lon
 	@Override
 	public TeacherDefaultVipGroupSalary findByTeacherAndCategory(Integer userId, Long categoryId) {
 		TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(userId, categoryId);
-		if(Objects.isNull(byTeacherAndCategory)){
+		if (Objects.isNull(byTeacherAndCategory)) {
 			byTeacherAndCategory.setOfflineClassesSalary(new BigDecimal(0));
 			byTeacherAndCategory.setOnlineClassesSalary(new BigDecimal(0));
 		}
@@ -75,14 +84,21 @@ public class TeacherDefaultVipGroupSalaryServiceImpl extends BaseServiceImpl<Lon
 				// 修改了哪些课酬
 				TeacherDefaultVipGroupSalary oldMS = map.get(ms.getVipGroupCategoryId());
 
-				if (oldMS.getOfflineClassesSalary().doubleValue() != ms.getOfflineClassesSalary().doubleValue()
-						|| oldMS.getOnlineClassesSalary().doubleValue() != ms.getOnlineClassesSalary().doubleValue()) {
+				if (oldMS == null || oldMS.getOfflineClassesSalary() == null
+						|| oldMS.getOfflineClassesSalary().doubleValue() != ms.getOfflineClassesSalary().doubleValue()
+						|| oldMS.getOnlineClassesSalary() == null || oldMS.getOnlineClassesSalary().doubleValue() != ms.getOnlineClassesSalary().doubleValue()) {
 					salaryMap.put(ms.getVipGroupCategoryId(), ms);
 				}
 
 			}
 
 			if (salaryMap.size() > 0) {
+
+				// 根据教师编号删除
+				teacherDefaultVipGroupSalaryDao.delByTeacherId(salary.getUserId());
+				// 新增
+				teacherDefaultVipGroupSalaryDao.batchAdd(teacherDefaultVipGroupSalaries);
+
 				String typeList = CourseScheduleType.VIP.getCode();
 				// 查询所有需要修改的课酬
 				List<CourseScheduleTeacherSalary> updateTeacherSalaryList = courseScheduleTeacherSalaryDao.queryUserNoSettlementListByTypeAndStartClassDate(
@@ -91,33 +107,58 @@ public class TeacherDefaultVipGroupSalaryServiceImpl extends BaseServiceImpl<Lon
 				if (updateTeacherSalaryList != null && updateTeacherSalaryList.size() > 0) {
 					Set<String> musicGroupIdList = updateTeacherSalaryList.stream().map(ts -> ts.getMusicGroupId()).collect(Collectors.toSet());
 					// 查询包含的VIP信息
-					Map<Long, VipGroup> vipGroupMap = vipGroupDao.queryByIds(StringUtils.join(musicGroupIdList, ",")).stream()
-							.collect(Collectors.toMap(VipGroup::getId, mg -> mg));
+					List<VipGroup> vipGroupList = vipGroupDao.queryByIds(StringUtils.join(musicGroupIdList, ","));
+					if (vipGroupList == null || vipGroupList.size() == 0) {
+						return;
+					}
+
+					Map<Long, VipGroup> vipGroupMap = vipGroupList.stream().collect(Collectors.toMap(VipGroup::getId, mg -> mg));
+
+					// 查询活动
+					Map<Integer, VipGroupActivity> vipGroupActivityMap = vipGroupActivityDao
+							.queryByIds(StringUtils.join(vipGroupList.stream().map(vg -> vg.getVipGroupActivityId()).collect(Collectors.toList()), ","))
+							.stream().collect(Collectors.toMap(VipGroupActivity::getId, va -> va));
 
 					// 批量修改课程课酬
+					List<CourseScheduleTeacherSalary> list = new ArrayList<CourseScheduleTeacherSalary>();
+
 					for (CourseScheduleTeacherSalary ts : updateTeacherSalaryList) {
 						VipGroup vipGroup = vipGroupMap.get(ts.getMusicGroupId());
 						// 课酬结算标准
 						if (vipGroup != null) {
+
+							VipGroupActivity vipGroupActivity = vipGroupActivityMap.get(vipGroup.getVipGroupActivityId());
+							if (vipGroupActivity == null) {
+								continue;
+							}
+
+							VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(),
+									VipGroupSalarySettlementDto.class);
+
+							if (vipGroupSalarySettlementDto == null) {
+								continue;
+							}
+
 							TeacherDefaultVipGroupSalary tdms = salaryMap.get(vipGroup.getVipGroupCategoryId());
 							if (tdms != null) {
-								if (ts.getCourseSchedule().getTeachMode() == TeachModeEnum.ONLINE) {// 线上课
+								if (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType() == SalarySettlementTypeEnum.FIXED_SALARY
+										&& (ts.getCourseSchedule().getTeachMode() == TeachModeEnum.ONLINE)) {// 线上课
 
 									ts.setExpectSalary(tdms.getOnlineClassesSalary());
-								} else if (ts.getCourseSchedule().getTeachMode() == TeachModeEnum.OFFLINE) {// 线下课
+									list.add(ts);
+								} else if (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType() == SalarySettlementTypeEnum.FIXED_SALARY
+										&& ts.getCourseSchedule().getTeachMode() == TeachModeEnum.OFFLINE) {// 线下课
 									ts.setExpectSalary(tdms.getOfflineClassesSalary());
+									list.add(ts);
 								}
 							}
 						}
 					}
+					if (list.size() > 0) {
+						courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalarys(list);
+					}
 				}
-				courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalarys(updateTeacherSalaryList);
 			}
-
-			// 根据教师编号删除
-			teacherDefaultVipGroupSalaryDao.delByTeacherId(salary.getUserId());
-			// 新增
-			teacherDefaultVipGroupSalaryDao.batchAdd(teacherDefaultVipGroupSalaries);
 		}
 	}
 }

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

@@ -101,7 +101,7 @@ public class TeacherLeaveRecordServiceImpl extends BaseServiceImpl<Long, Teacher
 				}
 
 				if(list.size() > 0){
-					checkCourseSchedulePlansExitLeaveRecord(list);
+					// checkCourseSchedulePlansExitLeaveRecord(list);
 				}
 			}
 		}
@@ -154,7 +154,9 @@ public class TeacherLeaveRecordServiceImpl extends BaseServiceImpl<Long, Teacher
 					list.add(his.getAfter());
 				}
 				// 课时调整
-				courseScheduleService.courseAdjust(list);
+				if (list.size() > 0) {
+					courseScheduleService.courseAdjust(list);
+				}
 			}
 		}
 		//教师请假结果通知

+ 4 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -23,6 +23,9 @@
 		<result column="class_group_id_" property="classGroupId" />
 		<result column="type_" property="courseSchedule.type" />
 		<result column="teach_mode_" property="courseSchedule.teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+		<result column="class_date_" property="courseSchedule.classDate" />
+		<result column="start_class_time_" property="courseSchedule.startClassTime" />
+		<result column="end_class_time_" property="courseSchedule.endClassTime" />
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -421,7 +424,7 @@
 	</delete>
 
 	<select id="queryUserNoSettlementListByTypeAndStartClassDate" resultMap="CourseScheduleTeacherSalary">
-		SELECT ts.*,cs.type_,cs.teach_mode_ FROM course_schedule_teacher_salary ts LEFT JOIN course_schedule cs ON ts.course_schedule_id_ = cs.id_
+		SELECT ts.*,cs.type_,cs.teach_mode_,cs.class_date_,cs.start_class_time_,cs.end_class_time_ FROM course_schedule_teacher_salary ts LEFT JOIN course_schedule cs ON ts.course_schedule_id_ = cs.id_
 		WHERE cs.type_ IN (#{typeList}) AND ts.user_id_ = #{userId} AND ts.settlement_time_ IS NULL AND cs.class_date_ &gt;= #{startClassDate}
 	</select>
 </mapper>

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

@@ -165,4 +165,8 @@
     <select id="queryNamesById" resultType="java.util.Map">
 		SELECT vga.id_ `key`,vga.name_ `value` FROM vip_group_activity vga WHERE FIND_IN_SET(vga.id_,#{activityIds}) AND vga.del_flag_=0
 	</select>
+	
+    <select id="queryByIds" resultMap="VipGroupActivity">
+		SELECT * FROM vip_group_activity vga WHERE FIND_IN_SET(vga.id_,#{activityIds})
+	</select>
 </mapper>

+ 25 - 2
mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultMusicGroupSalaryController.java

@@ -30,8 +30,8 @@ public class TeacherDefaultMusicGroupSalaryController extends BaseController {
     @ApiOperation(value = "批量新增、修改教师乐团课薪酬")
     @PostMapping("/batchUpset")
     @PreAuthorize("@pcs.hasPermissions('teacherDefaultMusicGroupSalary/batchUpset')")
-    public Object batchUpset(@RequestBody List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries, Date startDate) {
-        teacherDefaultMusicGroupSalaryService.batchUpset(teacherDefaultMusicGroupSalaries, startDate);
+    public Object batchUpset(@RequestBody TeacherDefaultMusicGroupSalaryTemp teacherDefaultMusicGroupSalaryTemp) {
+        teacherDefaultMusicGroupSalaryService.batchUpset(teacherDefaultMusicGroupSalaryTemp.teacherDefaultMusicGroupSalaries, teacherDefaultMusicGroupSalaryTemp.startDate);
         return succeed();
     }
 
@@ -41,4 +41,27 @@ public class TeacherDefaultMusicGroupSalaryController extends BaseController {
     public Object queryPage(TeacherMusicGroupSalaryQueryInfo queryInfo) {
         return succeed(teacherDefaultMusicGroupSalaryService.queryPage(queryInfo));
     }
+
+    static class TeacherDefaultMusicGroupSalaryTemp{
+    	
+    	private List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries;
+    	
+    	private Date startDate;
+
+		public List<TeacherDefaultMusicGroupSalary> getTeacherDefaultMusicGroupSalaries() {
+			return teacherDefaultMusicGroupSalaries;
+		}
+
+		public void setTeacherDefaultMusicGroupSalaries(List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries) {
+			this.teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaries;
+		}
+
+		public Date getStartDate() {
+			return startDate;
+		}
+
+		public void setStartDate(Date startDate) {
+			this.startDate = startDate;
+		}
+    }
 }

+ 24 - 2
mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultVipGroupSalaryController.java

@@ -48,9 +48,31 @@ public class TeacherDefaultVipGroupSalaryController extends BaseController {
     @ApiOperation(value = "批量新增、修改教师vip课酬")
     @PostMapping("/upSet")
     @PreAuthorize("@pcs.hasPermissions('teacherDefaultVipGroupSalary/upSet')")
-    public Object setVipGroupSalary(@RequestBody List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries, Date startDate){
-        teacherDefaultVipGroupSalaryService.upSet(teacherDefaultVipGroupSalaries, startDate);
+    public Object setVipGroupSalary(@RequestBody TeacherDefaultVipGroupSalaryTemp teacherDefaultVipGroupSalaryTemp){
+        teacherDefaultVipGroupSalaryService.upSet(teacherDefaultVipGroupSalaryTemp.teacherDefaultVipGroupSalaries, teacherDefaultVipGroupSalaryTemp.startDate);
         return succeed();
     }
 
+    static class TeacherDefaultVipGroupSalaryTemp{
+    	
+    	private List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries;
+    	
+    	private Date startDate;
+
+		public List<TeacherDefaultVipGroupSalary> getTeacherDefaultVipGroupSalaries() {
+			return teacherDefaultVipGroupSalaries;
+		}
+
+		public void setTeacherDefaultVipGroupSalaries(List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries) {
+			this.teacherDefaultVipGroupSalaries = teacherDefaultVipGroupSalaries;
+		}
+
+		public Date getStartDate() {
+			return startDate;
+		}
+
+		public void setStartDate(Date startDate) {
+			this.startDate = startDate;
+		}
+    }
 }