瀏覽代碼

Merge remote-tracking branch 'origin/master'

zouxuan 4 年之前
父節點
當前提交
08877346f2

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java

@@ -144,7 +144,7 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
      * @param studentInfos:
      * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.String>>
      */
-    List<Map<Integer, Integer>> findStudentSubjectIdMaps(@Param("studentInfos") List<StudentAttendanceViewDto> studentInfos);
+    List<Map<Integer, Long>> findStudentSubjectIdMaps(@Param("studentInfos") List<StudentAttendanceViewDto> studentInfos);
 
     /**
      * 获取声部名称

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentRecoverInfoDto.java

@@ -20,14 +20,14 @@ public class StudentRecoverInfoDto {
 
     private int giveCourseTimes;
 
-    private LocalDate expireDate;
+    private int days;
 
-    public LocalDate getExpireDate() {
-        return expireDate;
+    public int getDays() {
+        return days;
     }
 
-    public void setExpireDate(LocalDate expireDate) {
-        this.expireDate = expireDate;
+    public void setDays(int days) {
+        this.days = days;
     }
 
     public Integer getVipGroupId() {

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

@@ -1629,11 +1629,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             if (!CollectionUtils.isEmpty(tempIds)&&schedule.getGroupType() == MUSIC) {
                 List<Map<Integer, String>> studentSubjectNameMaps = subjectDao.findStudentSubjectNameMaps(tempIds);
                 Map<Integer, String> studentSubjectNameMap = MapUtil.convertIntegerMap(studentSubjectNameMaps);
-                List<Map<Integer, Integer>> studentSubjectIdMaps = subjectDao.findStudentSubjectIdMaps(tempIds);
-                Map<Integer, Integer> studentSubjectIdMap = MapUtil.convertIntegerMap(studentSubjectIdMaps);
+                List<Map<Integer, Long>> studentSubjectIdMaps = subjectDao.findStudentSubjectIdMaps(tempIds);
+                Map<Integer, Long> studentSubjectIdMap = MapUtil.convertIntegerMap(studentSubjectIdMaps);
                 truantStudent.forEach(studentAttendanceViewDto -> {
                     studentAttendanceViewDto.setSubjectName(studentSubjectNameMap.get(studentAttendanceViewDto.getStudentId().intValue()));
-                    studentAttendanceViewDto.setSubjectId(studentSubjectIdMap.get(studentAttendanceViewDto.getStudentId().intValue()).longValue());
+                    studentAttendanceViewDto.setSubjectId(studentSubjectIdMap.get(studentAttendanceViewDto.getStudentId()));
                 });
             }else if(schedule.getGroupType() != MUSIC){
                 ClassGroup classGroup = classGroupDao.get(schedule.getClassGroupId());

+ 21 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -250,7 +250,12 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             }
 
             Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
-            if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
+
+            boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0;
+            boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.isNull(teacher.getFormalStaffDate())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod());
+
+            //如果上课日期在转正日期之前的按80%结算
+            if(Objects.isNull(teacher)||notPositive||isProbationPeriod){
                 expectSalary = expectSalary.multiply(new BigDecimal("0.8"));
                 deductReasons.add("未转正");
             }
@@ -387,7 +392,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             }
 
             Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
-            if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
+
+            boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0;
+            boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.isNull(teacher.getFormalStaffDate())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod());
+
+            if(Objects.isNull(teacher)||notPositive||isProbationPeriod){
                 expectSalary = expectSalary.multiply(new BigDecimal("0.8"));
                 deductReasons.add("未转正");
             }
@@ -594,8 +603,13 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     deductReasons.add("教学点补贴:" + subsidy);
                 }
 
+                //未转正
+                boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0;
+                //试用期
+                boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.isNull(teacher.getFormalStaffDate())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod());
+
                 //如果上课日期在转正日期之前的按80%结算
-                if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0){
+                if(Objects.isNull(teacher)||notPositive||isProbationPeriod){
                     teacherSalary = teacherSalary.multiply(new BigDecimal("0.8"));
                     deductReasons.add("未转正");
                 }
@@ -710,7 +724,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 deductReasons.add("教学点补贴:" + subsidy);
             }
 
-            if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0){
+            boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0;
+            boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.isNull(teacher.getFormalStaffDate())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod());
+
+            if(Objects.isNull(teacher)||notPositive||isProbationPeriod){
                 teacherSalary = teacherSalary.multiply(new BigDecimal("0.8"));
                 deductReasons.add("未转正");
             }

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

@@ -345,16 +345,9 @@ public class PayServiceImpl implements PayService {
             routingList.put("routingMerNo", routeScaleDto.getMerNo());//分佣账户
             routingList.put("routingFee", routingFee); //分佣金额
             tempRoutingList.add(routingList);
-            if (routeScaleDto.getFeeFlag().equals("Y")) {
-                feeFlag = true;
-            }
-            if (i == routeScaleDtos.size() && !feeFlag) {
-                routeScaleDto.setFeeFlag("Y");
-            }
+
             //ADAPAY 采用延迟分账模式,手续费各自承担(2021-01-01号正式执行)
-            String delayRouteStartDate = sysConfigDao.findConfigValue("delay_route_start_date");
-            if (routeScaleDto.getPayType().equals(PaymentChannelEnum.ADAPAY) &&
-                    new Date().after(Objects.requireNonNull(DateUtil.stringToDate(delayRouteStartDate, "yyyy-MM-dd HH:mm:ss")))) {
+            if (routeScaleDto.getPayType().equals(PaymentChannelEnum.ADAPAY)) {
                 routeScaleDto.setFeeFlag("Y");
             }
 

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

@@ -2185,7 +2185,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		if(courseInfo.containsKey("days")){
 			int surplusDays = Integer.valueOf(courseInfo.get("days").toString());
-			studentRecoverInfoDto.setExpireDate(LocalDate.now().plusDays(surplusDays));
+			studentRecoverInfoDto.setDays(surplusDays);
 		}
 		return studentRecoverInfoDto;
     }

+ 5 - 6
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -664,11 +664,10 @@
 		CASE WHEN ta.complaints_status_=0 THEN '拒绝' WHEN ta.complaints_status_ = 1 THEN '通过'
 		WHEN ta.complaints_status_=2 THEN '待处理' WHEN ta.complaints_status_ = 3 THEN '已撤销' END complaints_status_,ta.dispose_content_,
 		ROUND((UNIX_TIMESTAMP(ta.sign_out_time_)-UNIX_TIMESTAMP(ta.sign_in_time_))/60) currentTime,
-		ta.sign_in_time_ signInTime,ta.sign_out_time_ signOutTime,COUNT(DISTINCT sp.id_) studentNum,COUNT(DISTINCT sa.id_) realStudentNum,ts.deduction_reason_
+		ta.sign_in_time_ signInTime,ta.sign_out_time_ signOutTime,COUNT(DISTINCT sp.id_) studentNum,ts.deduction_reason_
 		FROM course_schedule_teacher_salary ts
 		LEFT JOIN course_schedule cs ON ts.course_schedule_id_ = cs.id_
 		LEFT JOIN `teacher_attendance` ta ON ta.`teacher_id_` = ts.`user_id_` AND ta.`course_schedule_id_` = ts.`course_schedule_id_`
-		LEFT JOIN `student_attendance` sa ON sa.`course_schedule_id_` = ts.`course_schedule_id_` AND sa.status_ = 'NORMAL'
 		LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
 		LEFT JOIN sys_user u ON ts.user_id_= u.id_
 		LEFT JOIN teacher t ON t.id_ = ts.user_id_
@@ -700,7 +699,7 @@
 		CASE WHEN ta.complaints_status_=0 THEN '拒绝' WHEN ta.complaints_status_ = 1 THEN '通过'
 		WHEN ta.complaints_status_=2 THEN '待处理' WHEN ta.complaints_status_ = 3 THEN '已撤销' END complaints_status_,ta.dispose_content_,
 		ROUND((UNIX_TIMESTAMP(ta.sign_out_time_)-UNIX_TIMESTAMP(ta.sign_in_time_))/60) currentTime,
-		ta.sign_in_time_ signInTime,ta.sign_out_time_ signOutTime,COUNT(DISTINCT sp.id_) studentNum,COUNT(DISTINCT sa.id_) realStudentNum,
+		ta.sign_in_time_ signInTime,ta.sign_out_time_ signOutTime,COUNT(DISTINCT sp.id_) studentNum,
 		vg.online_classes_unit_price_,vg.offline_classes_unit_price_,
 		GROUP_CONCAT(sa.sign_in_time_) studentSignInTime,GROUP_CONCAT(sa.sign_out_time_) studentSignOutTime,ts.deduction_reason_
 		FROM course_schedule_teacher_salary ts
@@ -712,7 +711,7 @@
 		LEFT JOIN organization o ON o.id_ = t.organ_id_
 		LEFT JOIN school s ON s.id_ = cs.schoole_id_
 		LEFT JOIN course_schedule_student_payment sp ON sp.course_schedule_id_ = ts.course_schedule_id_
-		LEFT JOIN `student_attendance` sa ON sa.`course_schedule_id_` = ts.`course_schedule_id_` AND sa.status_ = 'NORMAL'
+		LEFT JOIN `student_attendance` sa ON sa.`course_schedule_id_` = ts.`course_schedule_id_`
 		LEFT JOIN vip_group vg ON (vg.id_ = ts.music_group_id_ AND ts.group_type_ = 'VIP')
 		LEFT JOIN vip_group_activity vga ON vg.vip_group_activity_id_ = vga.id_
 		LEFT JOIN organization vgo ON vgo.id_ = vg.organ_id_
@@ -743,7 +742,7 @@
 		CASE WHEN ta.complaints_status_=0 THEN '拒绝' WHEN ta.complaints_status_ = 1 THEN '通过'
 		WHEN ta.complaints_status_=2 THEN '待处理' WHEN ta.complaints_status_ = 3 THEN '已撤销' END complaints_status_,ta.dispose_content_,
 		ROUND((UNIX_TIMESTAMP(ta.sign_out_time_)-UNIX_TIMESTAMP(ta.sign_in_time_))/60) currentTime,
-		ta.sign_in_time_ signInTime,ta.sign_out_time_ signOutTime,COUNT(DISTINCT sp.id_) studentNum,COUNT(DISTINCT sa.id_) realStudentNum,
+		ta.sign_in_time_ signInTime,ta.sign_out_time_ signOutTime,COUNT(DISTINCT sp.id_) studentNum,
 		GROUP_CONCAT(sa.sign_in_time_) studentSignInTime,GROUP_CONCAT(sa.sign_out_time_) studentSignOutTime,ts.deduction_reason_
 		FROM course_schedule_teacher_salary ts
 		LEFT JOIN course_schedule cs ON ts.course_schedule_id_ = cs.id_
@@ -754,7 +753,7 @@
 		LEFT JOIN organization o ON o.id_ = t.organ_id_
 		LEFT JOIN school s ON s.id_ = cs.schoole_id_
 		LEFT JOIN course_schedule_student_payment sp ON sp.course_schedule_id_ = ts.course_schedule_id_
-		LEFT JOIN `student_attendance` sa ON sa.`course_schedule_id_` = ts.`course_schedule_id_` AND sa.status_ = 'NORMAL'
+		LEFT JOIN `student_attendance` sa ON sa.`course_schedule_id_` = ts.`course_schedule_id_`
 		LEFT JOIN practice_group pg ON (pg.id_ = ts.music_group_id_ AND ts.group_type_ = 'PRACTICE')
 		LEFT JOIN organization pgo ON pgo.id_ = pg.organ_id_
 		WHERE cs.class_date_ BETWEEN #{firstDayOfMonth} AND #{lastDayOfMonth} AND cs.`del_flag_` != 1 AND cs.group_type_ = 'PRACTICE' AND ts.settlement_time_ IS NOT NULL

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

@@ -226,7 +226,7 @@
     <select id="findStudentSubjectIdMaps" resultType="java.util.Map">
         SELECT
             sr.user_id_ as 'key',
-            sr.subject_id_ as 'value'
+            sr.actual_subject_id_ as 'value'
         FROM
             student_registration sr
         WHERE 1=1

+ 18 - 7
mec-web/src/main/java/com/ym/mec/web/controller/AdapayController.java

@@ -148,6 +148,9 @@ public class AdapayController extends BaseController {
             if (payments != null && payments.size() > 0) {
                 for (Object payment : payments) {
                     Map<String, Object> paymentMap = (Map<String, Object>) payment;
+                    if (!paymentMap.get("status").equals("succeeded")) {
+                        continue;
+                    }
                     paymentMap.put("created_time", DateUtil.timeStamp2Date(paymentMap.get("created_time").toString(), null));
                     if (paymentMap.get("pay_channel").equals("alipay_qr")) {
                         paymentMap.put("pay_channel", "支付宝正扫");
@@ -165,10 +168,21 @@ public class AdapayController extends BaseController {
                         paymentMap.put("status", "交易失败");
                     }
                     if (paymentMap.get("pay_mode").equals("delay")) {
-                        Map<String, Object> confirmMap = Payment.queryConfirmList(paymentMap.get("id").toString());
-                        JSONArray confirms = (JSONArray) confirmMap.get("payment_confirms");
+                        if(!paymentMap.containsKey("payment_confirms")){
+                            Map<String, Object> confirmMap = Payment.queryConfirmList(paymentMap.get("id").toString());
+                            if(confirmMap.containsKey("payment_confirms")) {
+                                paymentMap.put("payment_confirms", confirmMap.get("payment_confirms"));
+                            }
+                        }
+                        if(!paymentMap.containsKey("payment_confirms")){
+                            paymentMap.put("memo","没有提交分账信息,请联系技术核查");
+                            data.add(paymentMap);
+                            continue;
+                        }
+                        JSONArray confirms = (JSONArray) paymentMap.get("payment_confirms");
                         for (Object confirm : confirms) {
                             Map<String, Object> divMemberMap = (Map<String, Object>) confirm;
+                            paymentMap.put("fee_amt",divMemberMap.get("fee_amt"));
                             divMemberMap.putAll(paymentMap);
 
                             JSONArray divMembers = (JSONArray) divMemberMap.get("div_members");
@@ -177,11 +191,8 @@ public class AdapayController extends BaseController {
                             if (divMemberMap.get("member_id").equals("0")) {
                                 divMemberMap.put("member_id", ConfigInit.merNo);
                             }
-                            BigDecimal feeAmt = (new BigDecimal(divMemberMap.get("amount").toString())).multiply(new BigDecimal("0.28")).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP);
-                            divMemberMap.put("fee_amt", feeAmt);
                             data.add(divMemberMap);
                         }
-
                     } else {
                         JSONArray divMembers = (JSONArray) paymentMap.get("div_members");
                         for (Object divMember : divMembers) {
@@ -206,8 +217,8 @@ public class AdapayController extends BaseController {
 
         OutputStream outputStream = response.getOutputStream();
         try {
-            String[] header = {"支付流水号", "订单号", "支付渠道", "交易金额", "商户号", "分润金额", "是否承担手续费", "手续费", "第三方订单号", "支付宝/微信订单号", "交易时间", "交易状态"};
-            String[] body = {"id", "order_no", "pay_channel", "pay_amt", "member_id", "amount", "fee_flag", "fee_amt", "party_order_id", "out_trans_id", "created_time", "status"};
+            String[] header = {"支付流水号", "订单号", "支付渠道", "交易金额", "商户号", "分润金额", "是否承担手续费", "手续费", "第三方订单号", "支付宝/微信订单号", "交易时间", "交易状态","备注"};
+            String[] body = {"id", "order_no", "pay_channel", "pay_amt", "member_id", "amount", "fee_flag", "fee_amt", "party_order_id", "out_trans_id", "created_time", "status",""};
 
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, data);
             response.setContentType("application/octet-stream");

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

@@ -537,11 +537,11 @@ public class ExportController extends BaseController {
                     "课程分部", "课程组编号", "课程班名称", "乐团模式", "vip活动名称", "Vip课程类型", "阶梯奖励名称", "线上课/线下课", "线上课单价", "线下课单价",
                     "课程类别", "课时时长", "实际上课时长", "上课日期",
                     "上课时间", "教师签到状态", "教师签退状态", "教师签到时间", "教师签退时间", "考勤申诉处理状态", "处理意见",
-                    "主辅", "上课地点", "应到学员", "实际到课学员", "学员签到时间", "学员签退时间", "课时课酬", "阶梯奖励", "扣款原因"}, new String[]{
+                    "主辅", "上课地点", "应到学员","学员签到时间", "学员签退时间", "课时课酬", "阶梯奖励", "扣款原因"}, new String[]{
                     "courseScheduleId", "teacherId", "teacherName", "teacherOrganName", "jobType",
                     "courseScheduleOrganName", "groupId", "groupName", "changeType", "vipActiveName", "vipCategoryName", "activeName", "teachMode", "onlineClassesUnitPrice", "offlineClassesUnitPrice",
                     "courseScheduleType", "signCourseScheduleTime", "currentTime", "classDate", "courseScheduleStartTime", "signInStatus",
-                    "signOutStatus", "signInTime", "signOutTime","complaintsStatus", "disposeContent", "teacherRole", "address", "studentNum", "realStudentNum",
+                    "signOutStatus", "signInTime", "signOutTime","complaintsStatus", "disposeContent", "teacherRole", "address", "studentNum",
                     "studentSignInTime", "studentSignOutTime", "price", "rewards", "deductionReason"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");