Joburgess 5 years ago
parent
commit
808996464b

+ 9 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamTeacherSalaryDao.java

@@ -40,6 +40,15 @@ public interface ExamTeacherSalaryDao extends BaseDAO<Long, ExamTeacherSalary> {
     List<BaseUserInfoDto> getTeachersWithExam(@Param("examId") Integer examId);
 
     /**
+     * @describe 获取指定老师的分润设置
+     * @author Joburgess
+     * @date 2020.07.20
+     * @param teacherIds:
+     * @return java.util.List<com.keao.edu.user.entity.ExamTeacherSalary>
+     */
+    List<ExamTeacherSalary> getWithTeachers(@Param("teacherIds") List<Integer> teacherIds);
+
+    /**
      * @describe 获取指定考级项目下指定老师的分润设置
      * @author Joburgess
      * @date 2020.07.02

+ 2 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/TeacherDao.java

@@ -13,6 +13,8 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
 
     List<Teacher> getWithTeachers(@Param("teacherIds") List<Integer> teacherIds);
 
+    int batchUpdate(@Param("teachers") List<Teacher> teachers);
+
     /**
      * 获取教师声部名
      * @param teacherIds

+ 33 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamTeacherSalaryServiceImpl.java

@@ -11,6 +11,7 @@ import com.keao.edu.user.dao.*;
 import com.keao.edu.user.dto.*;
 import com.keao.edu.user.entity.ExamTeacherSalary;
 import com.keao.edu.user.entity.Teacher;
+import com.keao.edu.user.enums.TeacherSettlementTypeEnum;
 import com.keao.edu.user.page.ExamTeacherSalaryQueryInfo;
 import com.keao.edu.user.service.ExamTeacherSalaryService;
 import com.keao.edu.util.collection.MapUtil;
@@ -83,10 +84,41 @@ public class ExamTeacherSalaryServiceImpl extends BaseServiceImpl<Long, ExamTeac
 			long studentNum = examRoomStudentRelations.stream().filter(e -> examRoomIds.contains(e.getExamRoomId())).count();
 			examTeacherSalary.setTotalInvigilationNum(examRoomIds.size());
 			examTeacherSalary.setTotalInvigilationStudentNum((int) studentNum);
-			examTeacherSalary.setTotalSettlementCost(examTeacherSalary.getShareProfitAmount().multiply(new BigDecimal(studentNum)));
+			if(TeacherSettlementTypeEnum.SINGLE.equals(examTeacherSalary.getSettlementType())){
+				examTeacherSalary.setTotalSettlementCost(examTeacherSalary.getShareProfitAmount().multiply(new BigDecimal(examRoomIds.size())));
+			}else if(TeacherSettlementTypeEnum.PEOPLE_NUM.equals(examTeacherSalary.getSettlementType())){
+				examTeacherSalary.setTotalSettlementCost(examTeacherSalary.getShareProfitAmount().multiply(new BigDecimal(studentNum)));
+			}
+
 		}
 		if(!CollectionUtils.isEmpty(examTeacherSalaries)){
 			examTeacherSalaryDao.batchUpdate(examTeacherSalaries);
+			Set<Integer> teacherIds = examTeacherSalaries.stream().map(ExamTeacherSalary::getTeacherId).collect(Collectors.toSet());
+			List<ExamTeacherSalary> teacherAllExamSalarys = examTeacherSalaryDao.getWithTeachers(new ArrayList<>(teacherIds));
+			Map<Integer, List<ExamTeacherSalary>> teacherExamSalarysMap = teacherAllExamSalarys.stream().collect(Collectors.groupingBy(ExamTeacherSalary::getTeacherId));
+			List<Teacher> updateTeachers=new ArrayList<>();
+			for (Integer teacherId : teacherIds) {
+				List<ExamTeacherSalary> examSalarys = teacherExamSalarysMap.get(teacherId);
+				Integer totalInvigilationNum=0;
+				Integer totalInvigilationStudentNum=0;
+				BigDecimal totalSettlementCost=BigDecimal.ZERO;
+				if(!CollectionUtils.isEmpty(examSalarys)){
+					for (ExamTeacherSalary examSalary : examSalarys) {
+						totalInvigilationNum += examSalary.getTotalInvigilationNum();
+						totalInvigilationStudentNum += examSalary.getTotalInvigilationStudentNum();
+						totalSettlementCost=totalSettlementCost.add(examSalary.getTotalSettlementCost());
+					}
+				}
+				Teacher teacher=new Teacher();
+				teacher.setUserId(teacherId);
+				teacher.setTotalInvigilationNum(totalInvigilationNum);
+				teacher.setTotalInvigilationStudentNum(totalInvigilationStudentNum);
+				teacher.setTotalSettlementCost(totalSettlementCost);
+				updateTeachers.add(teacher);
+			}
+			if(!CollectionUtils.isEmpty(updateTeachers)){
+				teacherDao.batchUpdate(updateTeachers);
+			}
 		}
 	}
 

+ 8 - 0
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamTeacherSalaryMapper.xml

@@ -193,6 +193,14 @@
 		WHERE ets.examination_basic_id_=#{examId}
 	</select>
 
+	<select id="getWithTeachers" resultMap="ExamTeacherSalary">
+		SELECT ets.* FROM exam_teacher_salary ets
+		WHERE ets.teacher_id_ IN
+		<foreach collection="teacherIds" item="teacherId" separator="," open="(" close=")">
+			#{teacherId}
+		</foreach>
+	</select>
+
 	<select id="getWithExamAndTeacher" resultMap="ExamTeacherSalary">
 		SELECT ets.*,su.real_name_ teacher_real_name_ FROM exam_teacher_salary ets
 		LEFT JOIN sys_user su ON ets.teacher_id_=su.id_

+ 18 - 0
edu-user/edu-user-server/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -78,6 +78,24 @@
 		WHERE user_id_ = #{userId}
 	</update>
 
+	<update id="batchUpdate" parameterType="com.keao.edu.user.entity.Teacher">
+		<foreach collection="teachers" item="teacher" separator=";">
+			UPDATE teacher
+			<set>
+				<if test="teacher.totalInvigilationNum != null">
+					total_invigilation_num_ = #{teacher.totalInvigilationNum},
+				</if>
+				<if test="teacher.totalInvigilationStudentNum != null">
+					total_invigilation_student_num_ = #{teacher.totalInvigilationStudentNum},
+				</if>
+				<if test="teacher.totalSettlementCost != null">
+					total_settlement_fee_ = #{teacher.totalSettlementCost},
+				</if>
+				update_time_ = NOW()
+			</set>
+			WHERE user_id_ = #{teacher.userId}
+		</foreach>
+	</update>
 
 	<!-- 全查询 -->
 	<select id="findAll" resultMap="Teacher">