Ver código fonte

1、课酬确认相关
2、VIP课导出添加学生姓名和编号

Joburgess 5 anos atrás
pai
commit
5a49ec0bd2

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -397,6 +397,15 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 											 @Param("month") String month);
 
 	/**
+	 * @describe 获取指定月份已结算的老师编号
+	 * @author Joburgess
+	 * @date 2020/4/16
+	 * @param month:
+	 * @return java.util.List<java.lang.Integer>
+	 */
+	List<Integer> findIsSettlementTeacherIdsWithMonth(@Param("month") String month);
+
+	/**
 	 * @describe 更新指定课酬的确认状态
 	 * @author Joburgess
 	 * @date 2020/4/15
@@ -408,6 +417,15 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
                                          @Param("confirmStatus") TeacherSalaryConfirmStatus confirmStatus);
 
 	/**
+	 * @describe 更新指定课酬的确认状态至已完成
+	 * @author Joburgess
+	 * @date 2020/4/16
+	 * @param ids:
+	 * @return int
+	 */
+	int updateTeacherSalaryConfirmStatusToComplied(@Param("ids") List<Long> ids);
+
+	/**
 	 * @describe 统计教师指定月份不同团体类型的课酬
 	 * @author Joburgess
 	 * @date 2020/4/15

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -135,7 +135,9 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     BACKSTAGE_STUDENT_APPLY_QUIT_COURSE("BACKSTAGE_STUDENT_APPLY_QUIT_COURSE", "学员申请退课"),
     BACKSTAGE_STUDENT_APPLY_WITHDRAW("BACKSTAGE_STUDENT_APPLY_WITHDRAW", "学员申请提现"),
     PUSH_STUDY_REPORT("PUSH_STUDY_REPORT", "陪练报告"),
-    NEED_POST_STUDY_REPORT("NEED_POST_STUDY_REPORT", "新增待填写月报");
+    NEED_POST_STUDY_REPORT("NEED_POST_STUDY_REPORT", "新增待填写月报"),
+
+    TEACHER_SALARY_CONFIRM_PUSH("TEACHER_SALARY_CONFIRM_PUSH", "课酬确认");
 
 
     MessageTypeEnum(String code, String msg) {

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

@@ -14,6 +14,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import org.slf4j.Logger;
@@ -75,6 +76,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     private StudentAttendanceDao studentAttendanceDao;
     @Autowired
     private TeacherSalaryComplaintsDao teacherSalaryComplaintsDao;
+    @Autowired
+    private SysMessageService sysMessageService;
 
     private static final Logger LOGGER = LoggerFactory
             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
@@ -830,6 +833,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void confirmTeacherMonthSalary(Integer teacherId, String month) {
         if(Objects.isNull(month)){
             month=DateUtil.dateToString(DateUtil.addMonths(new Date(), -1), "yyyy-MM");
@@ -919,12 +923,35 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void openSalaryConfirm(String month) {
-
+        if(Objects.isNull(month)){
+            month=DateUtil.dateToString(DateUtil.addMonths(new Date(), -1), "yyyy-MM");
+        }
+        int i = courseScheduleTeacherSalaryDao.countOpenConfirmSalarysWithMonth(month);
+        if(i>0){
+            throw new BizException("课酬确认已开启");
+        }
+        List<Long> teacherSalaryIds = courseScheduleTeacherSalaryDao.findTeacherSalaryIdsWithMonth(null, month);
+        if(CollectionUtils.isEmpty(teacherSalaryIds)){
+            return;
+        }
+        courseScheduleTeacherSalaryDao.updateTeacherSalaryConfirmStatus(teacherSalaryIds,TeacherSalaryConfirmStatus.UNCONFIRMED);
+        String notifyUrl="5?http://mteadev.dayaedu.com/#/remuneration?month=" + month;
+        String monthStr = DateUtil.dateToString(DateUtil.stringToDate(month, "yyyy-MM"),"yyyy年MM月");
+        List<Integer> teacherIds = courseScheduleTeacherSalaryDao.findIsSettlementTeacherIdsWithMonth(month);
+        Map<Integer, String> userMap = teacherIds.stream().collect(Collectors.toMap(Integer::valueOf, id->String.valueOf(id)));
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_SALARY_CONFIRM_PUSH,
+                userMap, null, 0, notifyUrl, "TEACHER", monthStr);
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void closeSalaryConfirm(String month) {
-
+        List<Long> teacherSalaryIds = courseScheduleTeacherSalaryDao.findTeacherSalaryIdsWithMonth(null, month);
+        if(CollectionUtils.isEmpty(teacherSalaryIds)){
+            return;
+        }
+        courseScheduleTeacherSalaryDao.updateTeacherSalaryConfirmStatusToComplied(teacherSalaryIds);
     }
 }

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

@@ -455,6 +455,14 @@
 			#{id}
 		</foreach>
 	</update>
+	<update id="updateTeacherSalaryConfirmStatusToComplied">
+		UPDATE course_schedule_teacher_salary SET confirm_status_=3
+		WHERE confirm_status_!=2
+		AND id_ IN
+		<foreach collection="ids" item="id" open="(" close=")" separator=",">
+			#{id}
+		</foreach>
+	</update>
 
 	<select id="findCourseScheduleTeacherSalaryByMusicGroupId" resultMap="CourseScheduleTeacherSalary">
 		SELECT * FROM course_schedule_teacher_salary WHERE music_group_id_=#{musicGroupId} AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
@@ -875,9 +883,22 @@
 		WHERE
 			( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
 			AND csts.settlement_time_ IS NOT NULL
-			AND csts.user_id_ = #{teacherId}
+			<if test="teacherId!=null">
+				AND csts.user_id_ = #{teacherId}
+			</if>
 			AND DATE_FORMAT( cs.class_date_, '%Y-%m' ) = #{month}
 	</select>
+    <select id="findIsSettlementTeacherIdsWithMonth" resultType="int">
+        SELECT
+          DISTINCT csts.user_id_
+        FROM
+        course_schedule_teacher_salary csts
+        LEFT JOIN course_schedule cs ON csts.course_schedule_id_ = cs.id_
+        WHERE
+        ( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
+        AND csts.settlement_time_ IS NOT NULL
+        AND DATE_FORMAT( cs.class_date_, '%Y-%m' ) = #{month}
+    </select>
 
 	<select id="countOpenConfirmSalarysWithMonth" resultType="int">
 		SELECT