فهرست منبع

1、试听课

Joburgess 5 سال پیش
والد
کامیت
68afda3532

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1450,4 +1450,11 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     List<Map<String, String>> findLastOverTime(@Param("vipGroupIds") List<String> vipGroupIds);
+
+    /**
+     * 获取课程状态列表
+     * @param courseScheduleIds
+     * @return
+     */
+    List<Long> findNotStartCourseByIds(List<Long> courseScheduleIds);
 }

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherCourseRewardDao.java

@@ -11,6 +11,19 @@ import java.util.Map;
 public interface TeacherCourseRewardDao extends BaseDAO<Long, TeacherCourseReward> {
 
     /**
+     * 根据结算状态获取列表
+     * @param settlementStatus
+     * @return
+     */
+    List<TeacherCourseReward> findBySettlementStatus(@Param("settlementStatus") int settlementStatus);
+
+    /**
+     * 批量修改
+     * @param teacherCourseRewards
+     */
+    void batchUpdate(@Param("teacherCourseRewards") List<TeacherCourseReward> teacherCourseRewards);
+
+    /**
      * @describe 统计老师指定月份的奖励
      * @author Joburgess
      * @date 2020/4/24

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherCourseReward.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.math.BigDecimal;
@@ -34,6 +35,26 @@ public class TeacherCourseReward {
 
     private Date updateTime;
 
+    private YesOrNoEnum settlementStatus;
+
+    private Date settlementDate;
+
+    public YesOrNoEnum getSettlementStatus() {
+        return settlementStatus;
+    }
+
+    public void setSettlementStatus(YesOrNoEnum settlementStatus) {
+        this.settlementStatus = settlementStatus;
+    }
+
+    public Date getSettlementDate() {
+        return settlementDate;
+    }
+
+    public void setSettlementDate(Date settlementDate) {
+        this.settlementDate = settlementDate;
+    }
+
     public Long getId() {
         return id;
     }

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherCourseRewardService.java

@@ -6,6 +6,8 @@ import com.ym.mec.biz.dal.page.CourseSalaryQueryInfo4Web;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.List;
+
 public interface TeacherCourseRewardService extends BaseService<Long, TeacherCourseReward> {
 
     /**
@@ -26,5 +28,16 @@ public interface TeacherCourseRewardService extends BaseService<Long, TeacherCou
      * @return com.ym.mec.common.page.PageInfo<com.ym.mec.biz.dal.dto.TeacherCourseSalaryDetail4WebDto>
      */
     PageInfo<TeacherCourseSalaryDetail4WebDto> findTeacherRewards(CourseSalaryQueryInfo4Web queryInfo);
+    /**
+     * 根据结算状态获取列表
+     * @param settlementStatus
+     * @return
+     */
+    List<TeacherCourseReward> findBySettlementStatus(int settlementStatus);
 
+    /**
+     * 批量修改
+     * @param teacherCourseRewards
+     */
+    void batchUpdate(List<TeacherCourseReward> teacherCourseRewards);
 }

+ 65 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -77,6 +77,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     @Autowired
     private TeacherSalaryComplaintsDao teacherSalaryComplaintsDao;
     @Autowired
+    private TeacherCourseRewardService teacherCourseRewardService;
+    @Autowired
     private SysMessageService sysMessageService;
     @Autowired
     private TeacherCourseRewardDao teacherCourseRewardDao;
@@ -210,6 +212,69 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             courseScheduleTeacherSalary.setSettlementTime(now);
             courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
         });
+        //获取未转结的
+        List<TeacherCourseReward> teacherCourseRewards = teacherCourseRewardService.findBySettlementStatus(0);
+        if(teacherCourseRewards.size() > 0){
+            //逗号分隔的课程拆分
+            List<String> collect = teacherCourseRewards.stream().map(e -> e.getCourseScheduleIdList()).collect(Collectors.toList());
+            List<Long> courseScheduleIds = new ArrayList<>();
+            collect.forEach(e->{
+                if(!StringUtils.isEmpty(e)){
+                    String[] split = e.split(",");
+                    for (String s : split) {
+                        courseScheduleIds.add(Long.parseLong(s));
+                    }
+                }
+            });
+            if (courseScheduleIds.size() > 0){
+                //去掉有未结束课程的数据
+                List<Long> mapList = courseScheduleDao.findNotStartCourseByIds(courseScheduleIds);
+                List<TeacherAttendance> teacherAttendances = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
+                Map<Long, TeacherAttendance> teacherAttendancesMap = teacherAttendances.stream().collect(Collectors.toMap(TeacherAttendance::getCourseScheduleId,t -> t));
+                String courseScheduleIdList = null;
+                StringBuffer memo;
+                BigDecimal multiply;
+                BigDecimal add;
+                outer1:for (TeacherCourseReward e : teacherCourseRewards) {
+                    memo = new StringBuffer();
+                    courseScheduleIdList = e.getCourseScheduleIdList();
+                    if(!StringUtils.isEmpty(courseScheduleIdList)){
+                        String[] split = courseScheduleIdList.split(",");
+                        for (String s : split) {
+                            //如果包含未结算的课程,不转结
+                            if(mapList.contains(Long.parseLong(s))){
+                                continue outer1;
+                            }
+                        }
+                        //转结,是否正常签到,签退
+                        BigDecimal expectRewardAmount = e.getExpectRewardAmount().divide(new BigDecimal(split.length));
+                        multiply = expectRewardAmount.multiply(new BigDecimal(0.5));
+                        add = expectRewardAmount.multiply(new BigDecimal(0));
+                        for (String s : split) {
+                            //如果包含未结算的课程,不转结
+                            TeacherAttendance teacherAttendance = teacherAttendancesMap.get(Long.parseLong(s));
+                            if(teacherAttendance == null){
+                                throw new BizException("教师签到记录不存在 : courseScheduleId:{}",s);
+                            }
+                            if(teacherAttendance.getSignInStatus() != null && teacherAttendance.getSignInStatus() == YesOrNoEnum.NO){
+                                expectRewardAmount.subtract(multiply);
+                                memo.append("课程").append(s).append("异常签到");
+                            }
+                            if(teacherAttendance.getSignOutStatus() != null && teacherAttendance.getSignOutStatus() == YesOrNoEnum.NO){
+                                expectRewardAmount.subtract(multiply);
+                                memo.append("课程").append(s).append("异常签退");
+                            }
+                            add.add(expectRewardAmount);
+                            expectRewardAmount = e.getExpectRewardAmount().divide(new BigDecimal(split.length));
+                        }
+                        e.setActualRewardAmount(add);
+                        e.setSettlementStatus(YesOrNoEnum.YES);
+                        e.setSettlementDate(now);
+                    }
+                }
+                teacherCourseRewardService.batchUpdate(teacherCourseRewards);
+            }
+        }
     }
 
     @Override

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

@@ -17,7 +17,7 @@ import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import java.util.*;
+import java.util.List;
 
 @Service
 public class TeacherCourseRewardServiceImpl extends BaseServiceImpl<Long, TeacherCourseReward> implements TeacherCourseRewardService {
@@ -68,4 +68,15 @@ public class TeacherCourseRewardServiceImpl extends BaseServiceImpl<Long, Teache
         pageInfo.setRows(dataList);
         return pageInfo;
     }
+
+    @Override
+    public List<TeacherCourseReward> findBySettlementStatus(int settlementStatus) {
+        return teacherCourseRewardDao.findBySettlementStatus(settlementStatus);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void batchUpdate(List<TeacherCourseReward> teacherCourseRewards) {
+        teacherCourseRewardDao.batchUpdate(teacherCourseRewards);
+    }
 }

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -2973,5 +2973,12 @@
         </foreach>
         GROUP BY cs.music_group_id_
     </select>
+    <select id="findNotStartCourseByIds" resultType="java.lang.Long">
+        SELECT cs.id_ FROM course_schedule cs WHERE cs.id_ IN
+        <foreach collection="courseScheduleIds" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
+        AND cs.status_ = 'NOT_START'
+    </select>
 
 </mapper>

+ 38 - 1
mec-biz/src/main/resources/config/mybatis/TeacherCourseRewardDao.xml

@@ -14,6 +14,8 @@
         <result column="expect_reward_amount_" jdbcType="DECIMAL" property="expectRewardAmount"/>
         <result column="actual_reward_amount_" jdbcType="DECIMAL" property="actualRewardAmount"/>
         <result column="memo_" jdbcType="VARCHAR" property="memo"/>
+        <result column="settlement_status_" property="settlementStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="settlement_date_" property="settlementDate"/>
         <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
         <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
     </resultMap>
@@ -21,7 +23,7 @@
         <!--@mbg.generated-->
         id_, music_group_id_, group_type_, course_schedule_id_list_, course_group_name_,
         organ_id_, teacher_id_, expect_reward_amount_, actual_reward_amount_, memo_, create_time_,
-        update_time_
+        update_time_,settlement_status_,settlement_date_
     </sql>
     <select id="get" parameterType="java.lang.Long" resultMap="teacherCourseReward">
         select *
@@ -81,9 +83,41 @@
             <if test="updateTime != null">
                 update_time_ = #{updateTime,jdbcType=TIMESTAMP},
             </if>
+            <if test="settlementDate != null">
+                settlement_date_ = #{settlementDate},
+            </if>
+            <if test="settlementStatus != null">
+                settlement_status_ = #{settlementStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
         </set>
         where id_ = #{id,jdbcType=BIGINT}
     </update>
+    <update id="batchUpdate">
+        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
+            update teacher_course_reward
+            <set>
+                <if test="item.actualRewardAmount != null">
+                    actual_reward_amount_ = #{item.actualRewardAmount,jdbcType=DECIMAL},
+                </if>
+                <if test="item.memo != null">
+                    memo_ = #{item.memo,jdbcType=VARCHAR},
+                </if>
+                <if test="item.updateTime != null">
+                    update_time_ = #{item.updateTime,jdbcType=TIMESTAMP},
+                </if>
+                <if test="item.updateTime == null">
+                    update_time_ = NOW(),
+                </if>
+                <if test="item.settlementDate != null">
+                    settlement_date_ = #{item.settlementDate},
+                </if>
+                <if test="item.settlementStatus != null">
+                    settlement_status_ = #{item.settlementStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+                </if>
+            </set>
+            where id_ = #{item.id,jdbcType=BIGINT}
+        </foreach>
+    </update>
 
     <sql id="queryCondition">
         <where>
@@ -114,6 +148,9 @@
         SELECT count(*) FROM teacher_course_reward tcr
         <include refid="queryCondition"/>
     </select>
+    <select id="findBySettlementStatus" resultMap="teacherCourseReward">
+        SELECT * FROM teacher_course_reward tcr WHERE tcr.settlement_status_ = #{settlementStatus}
+    </select>
 
     <select id="teacherCourseRewardStatWithMonth" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao.CourseTeacherSalaryStatisticsDto">
         SELECT