Explorar o código

Merge branch 'adapay_new' of http://git.dayaedu.com/yonge/mec into adapay_new

yonge %!s(int64=4) %!d(string=hai) anos
pai
achega
18065fb81c

+ 0 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java

@@ -119,7 +119,6 @@ public class UserController extends BaseController {
 	}
 
 	@ApiOperation(value = "新增用户")
-	@PreAuthorize("@pcs.hasPermissions('user/add')")
 	@PostMapping(value = "/add", consumes = MediaType.APPLICATION_JSON_VALUE)
 	public HttpResponseResult<Integer> add(@RequestBody SysUser sysUser) {
 		return succeed(sysUserService.add(sysUser));

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SellOrderDao.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto;
 import com.ym.mec.biz.dal.entity.OperatingReport;
 import com.ym.mec.biz.dal.entity.SellOrder;
 import com.ym.mec.common.dal.BaseDAO;
@@ -92,6 +93,7 @@ public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
 
     /**
      * 商品销售
+     *
      * @param startTime
      * @param endTime
      * @return
@@ -191,4 +193,11 @@ public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
      * @return
      */
     List<SellOrder> getRefundSellOrder(@Param("orderId") Long orderId);
+
+    /**
+     * 获取订单的各类型费用
+     * @param orderId
+     * @return
+     */
+    StudentPaymentOrderExportDto getFeeByType(@Param("orderId") Long orderId);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderExportDto.java

@@ -27,6 +27,9 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     //教辅费用
     private BigDecimal teachingFee;
 
+    //维修费用
+    private BigDecimal repairFee;
+
     //手续费
     private BigDecimal transferFee;
 
@@ -193,4 +196,12 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     public void setHighOnlineCourseFee(BigDecimal highOnlineCourseFee) {
         this.highOnlineCourseFee = highOnlineCourseFee;
     }
+
+    public BigDecimal getRepairFee() {
+        return repairFee;
+    }
+
+    public void setRepairFee(BigDecimal repairFee) {
+        this.repairFee = repairFee;
+    }
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendancesDto.java

@@ -50,6 +50,8 @@ public class TeacherAttendancesDto {
     @ApiModelProperty(value = "签退状态(1正常签到,0异常签到) ",required = false)
     private SignOutStatusEnum signOutStatus;
 
+    private String schoolLongitudeLatitude;
+
     private String signInLongitudeLatitude;
 
     private String signOutLongitudeLatitude;
@@ -120,6 +122,14 @@ public class TeacherAttendancesDto {
         this.teacherRole = teacherRole;
     }
 
+    public String getSchoolLongitudeLatitude() {
+        return schoolLongitudeLatitude;
+    }
+
+    public void setSchoolLongitudeLatitude(String schoolLongitudeLatitude) {
+        this.schoolLongitudeLatitude = schoolLongitudeLatitude;
+    }
+
     public String getSignInLongitudeLatitude() {
         return signInLongitudeLatitude;
     }

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

@@ -1289,6 +1289,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             usersSimpleInfo = teacherDao.getUsersSimpleInfo(new ArrayList<>(teacherIds));
         }
         Map<Integer, SimpleUserDto> idUserMap = usersSimpleInfo.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, s -> s));
+
+        CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId);
+        School school = schoolService.get(courseSchedule.getSchoolId());
+
         for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
             TeacherAttendancesDto t = new TeacherAttendancesDto();
             t.setTeacherId(courseScheduleTeacherSalary.getUserId());
@@ -1297,12 +1301,15 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             if(idTeacherAttendanceMap.containsKey(t.getTeacherId())){
                 TeacherAttendance teacherAttendance = idTeacherAttendanceMap.get(t.getTeacherId());
                 t.setSignInTime(teacherAttendance.getSignInTime());
-                t.setSignInStatus(Objects.nonNull(teacherAttendance.getSignInStatus())?SignInStatusEnum.valueOf(teacherAttendance.getSignInStatus().getCode().toString()):SignInStatusEnum.NO);
+                t.setSignInStatus(Objects.nonNull(teacherAttendance.getSignInStatus())?(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())?SignInStatusEnum.UNUSUAL:SignInStatusEnum.NORMAL):SignInStatusEnum.NO);
                 t.setSignOutTime(teacherAttendance.getSignOutTime());
-                t.setSignOutStatus(Objects.nonNull(teacherAttendance.getSignOutStatus())?SignOutStatusEnum.valueOf(teacherAttendance.getSignOutStatus().getCode().toString()):SignOutStatusEnum.NO);
+                t.setSignOutStatus(Objects.nonNull(teacherAttendance.getSignOutStatus())?(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())?SignOutStatusEnum.UNUSUAL:SignOutStatusEnum.NORMAL):SignOutStatusEnum.NO);
                 t.setSignInLongitudeLatitude(teacherAttendance.getSignInLongitudeLatitude());
                 t.setSignOutLongitudeLatitude(teacherAttendance.getSignOutLongitudeLatitude());
             }
+            if(Objects.nonNull(school)){
+                t.setSchoolLongitudeLatitude(school.getLongitudeLatitude());
+            }
             result.add(t);
         }
         return result;

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

@@ -2335,7 +2335,7 @@
         COUNT(DISTINCT cs.id_)
         FROM
         course_schedule cs
-        LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
+        LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_ AND sa.remark_ IS NULL
         <include refid="endFindCourseSchedulesCondition"/>
     </select>
     <select id="findCourseIdsByStudent" resultType="int">

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

@@ -481,7 +481,7 @@
         FROM student_payment_order spo
                  LEFT JOIN sell_order so on so.order_id_ = spo.id_
         WHERE spo.status_ = 'SUCCESS'
-          AND spo.group_type_ ='GOODS_SELL'
+          AND spo.group_type_ = 'GOODS_SELL'
           AND spo.create_time_ >= #{startTime}
           AND spo.create_time_ <= #{endTime}
         GROUP BY spo.organ_id_, so.cooperation_organ_id_
@@ -586,4 +586,14 @@
             #{sellOrderId}
         </foreach>
     </select>
+
+    <select id="getFeeByType" resultType="com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto">
+        SELECT MAX(spo.expect_amount_)                                expectAmount,
+               SUM(IF(g.type_ = 'INSTRUMENT', so.expect_amount_, 0))  musicalFee,
+               SUM(IF(g.type_ != 'INSTRUMENT', so.expect_amount_, 0)) teachingFee
+        FROM student_payment_order spo
+                 LEFT JOIN sell_order so ON spo.id_ = so.order_id_
+                 LEFT JOIN goods g ON g.id_ = so.goods_id_
+        WHERE spo.id_ = #{orderId}
+    </select>
 </mapper>

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

@@ -542,7 +542,7 @@
     </select>
     <sql id="exportStudentAttendancesQueryPageSql">
         <where>
-            <if test="organId != null">
+            <if test="organId != null and organId != ''">
                 AND FIND_IN_SET(cs.organ_id_,#{organId})
             </if>
             <if test="groupType != null">

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

@@ -281,7 +281,7 @@
                 AND cs.status_ = #{courseScheduleStatus}
             </if>
             <if test="organId != null and organId != ''">
-                AND FIND_IN_SET(t.organ_id_,#{organId})
+                AND FIND_IN_SET(cs.organ_id_,#{organId})
             </if>
         </where>
     </sql>

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

@@ -107,6 +107,8 @@ public class ExportController extends BaseController {
     private MusicGroupBuildLogDao musicGroupBuildLogDao;
     @Autowired
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
+    @Autowired
+    private SellOrderDao sellOrderDao;
 
     @ApiOperation(value = "学员考勤记录导出")
     @PostMapping("export/exportStudentAttendances")
@@ -135,7 +137,7 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部编号", "分部名称", "课程组类型", "课程组编号", "课程组名称", "学员姓名",
-                    "学员编号", "课程编号", "课程名称", "上课日期", "上课开始时间","上课结束时间","指导老师名称","指导老师编号","教务老师名称","教务老师编号","学员考勤状态"}, new String[]{
+                    "学员编号", "课程编号", "课程名称", "上课日期", "上课开始时间", "上课结束时间", "指导老师名称", "指导老师编号", "教务老师名称", "教务老师编号", "学员考勤状态"}, new String[]{
                     "organId", "organName", "groupType.desc", "groupId", "groupName", "username",
                     "userId", "courseScheduleId", "courseScheduleName", "classDate", "startClassTime", "endClassTime", "guideTeacherName", "guideTeacherId"
                     , "educationalTeacherName", "educationalTeacherId", "studentAttendanceStatus.msg"}, rows);
@@ -937,14 +939,7 @@ public class ExportController extends BaseController {
             row.setMemo(goodsName);
             row.setHighOnlineCourseFee(highOnlineCourseFee);
             //专业
-            if (row.getGroupType().equals(GroupType.MUSIC)) {
-                StudentRegistration studentRegistration = studentRegistrationDao.findStudentByMusicGroupIdAndUserId(row.getMusicGroupId(), row.getUserId());
-                if (studentRegistration != null) {
-                    row.setSubjectName(studentRegistration.getSubjectName());
-                    row.setSchoolName(studentRegistration.getSchoolName());
-                    row.setCooperationOrganName(studentRegistration.getRemark());
-                }
-            } else if (row.getGroupType().equals(GroupType.VIP)) {
+            if (row.getGroupType().equals(GroupType.VIP)) {
                 row.setCourseFee(row.getActualAmount());
                 VipGroup vipGroupInfo = vipGroupDao.findVipGroupInfo(Integer.parseInt(row.getMusicGroupId()), row.getClassGroupId());
                 if (vipGroupInfo != null) {
@@ -976,6 +971,25 @@ public class ExportController extends BaseController {
                 if (practiceGroup != null) {
                     row.setSubjectName(practiceGroup.getSubjectName());
                 }
+            } else {
+                StudentPaymentOrderExportDto feeByType = sellOrderDao.getFeeByType(row.getId());
+                row.setMusicalFee(feeByType.getMusicalFee());
+                row.setTeachingFee(feeByType.getTeachingFee());
+                if (row.getGroupType().equals(GroupType.MUSIC)) {
+                    StudentRegistration studentRegistration = studentRegistrationDao.findStudentByMusicGroupIdAndUserId(row.getMusicGroupId(), row.getUserId());
+                    if (studentRegistration != null) {
+                        row.setSubjectName(studentRegistration.getSubjectName());
+                        row.setSchoolName(studentRegistration.getSchoolName());
+                        row.setCooperationOrganName(studentRegistration.getRemark());
+                    }
+                    if (row.getCourseFee().compareTo(BigDecimal.ZERO) == 0) {
+                        row.setCourseFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()));
+                    }
+                } else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
+                    row.setRepairFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()));
+                } else if (row.getType().equals(OrderTypeEnum.OUTORDER)) {
+                    row.setCourseFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()));
+                }
             }
             String paymentChannel = "";
             if (row.getPaymentChannel() == null) {
@@ -993,9 +1007,9 @@ public class ExportController extends BaseController {
 
         try {
             String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "到账时间",
-                    "关联乐团ID/VIP课ID", "课程形态", "课程费用", "新生专享课程费用", "乐器减免费用", "课程减免费用", "押金", "乐器", "教辅费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "合作机构", "备注"};
+                    "关联乐团ID/VIP课ID", "课程形态", "课程费用", "新生专享课程费用", "乐器减免费用", "课程减免费用", "押金", "乐器", "教辅费用", "维修费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "合作机构", "备注"};
             String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "payTime", "musicGroupId",
-                    "groupType.desc", "courseFee", "highOnlineCourseFee", "remitFee", "courseRemitFee", "leaseFee", "musicalFee", "teachingFee", "sporadicAmount", "sporadicType", "transferFee", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
+                    "groupType.desc", "courseFee", "highOnlineCourseFee", "remitFee", "courseRemitFee", "leaseFee", "musicalFee", "teachingFee", "repairFee", "sporadicAmount", "sporadicType", "transferFee", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -1270,7 +1284,7 @@ public class ExportController extends BaseController {
         Set<Integer> studentIds = vipGroupExports.stream().map(CourseGroupExportDto::getStudentId).collect(Collectors.toSet());
         List<Map<Integer, Date>> studentLastCourseSchedule = courseScheduleStudentPaymentDao.findStudentLastCourseSchedule(new ArrayList<>(studentIds));
         Map<Integer, String> studentLastCourseMap = new HashMap<>();
-        if(!CollectionUtils.isEmpty(studentLastCourseSchedule)){
+        if (!CollectionUtils.isEmpty(studentLastCourseSchedule)) {
             studentLastCourseMap = MapUtil.convertMybatisMap(studentLastCourseSchedule);
         }
         List<CourseGroupExportDto> studentCourseInfos = courseScheduleDao.getStudentVipCourseInfo(studentIds);
@@ -1279,7 +1293,7 @@ public class ExportController extends BaseController {
         for (CourseGroupExportDto vipGroupExport : vipGroupExports) {
 
             String lastClassDateStr = studentLastCourseMap.get(vipGroupExport.getStudentId());
-            if(StringUtils.isNotBlank(lastClassDateStr)){
+            if (StringUtils.isNotBlank(lastClassDateStr)) {
                 vipGroupExport.setLastClassDate(DateUtil.stringToDate(lastClassDateStr));
             }
 
@@ -2005,14 +2019,7 @@ public class ExportController extends BaseController {
             row.setLeaseFee(leaseFee);
             row.setMemo(goodsName);
             //专业
-            if (row.getGroupType().equals(GroupType.MUSIC)) {
-                StudentRegistration studentRegistration = studentRegistrationDao.findStudentByMusicGroupIdAndUserId(row.getMusicGroupId(), row.getUserId());
-                if (studentRegistration != null) {
-                    row.setSubjectName(studentRegistration.getSubjectName());
-                    row.setSchoolName(studentRegistration.getSchoolName());
-                    row.setCooperationOrganName(studentRegistration.getRemark());
-                }
-            } else if (row.getGroupType().equals(GroupType.VIP)) {
+            if (row.getGroupType().equals(GroupType.VIP)) {
                 row.setCourseFee(row.getActualAmount());
                 VipGroup vipGroupInfo = vipGroupDao.findVipGroupInfo(Integer.parseInt(row.getMusicGroupId()), row.getClassGroupId());
                 if (vipGroupInfo != null) {
@@ -2025,27 +2032,9 @@ public class ExportController extends BaseController {
                 row.setMusicalFee(BigDecimal.ZERO);
                 row.setTeachingFee(BigDecimal.ZERO);
                 if (row.getChargeType() != null) {
-
-                    if (row.getChargeType().equals(1)) {
-                        row.setSporadicType("考级");
-                    } else if (row.getChargeType().equals(2)) {
-                        row.setSporadicType("声部更改");
-                    } else if (row.getChargeType().equals(3)) {
-                        row.setSporadicType("乐器更换");
-                    } else if (row.getChargeType().equals(4)) {
-                        row.setSporadicType("配件销售");
-                    } else if (row.getChargeType().equals(5)) {
-                        row.setSporadicType("维修费");
-                    } else if (row.getChargeType().equals(6)) {
-                        row.setSporadicType("福袋活动");
-                    } else if (row.getChargeType().equals(7)) {
-                        row.setSporadicType("上门费");
-                    } else if (row.getChargeType().equals(9)) {
-                        row.setSporadicType("账户充值");
-                    } else if (row.getChargeType().equals(10)) {
-                        row.setSporadicType("乐保服务");
-                    } else if (row.getChargeType().equals(11)) {
-                        row.setSporadicType("其他");
+                    for (SporadicChargeTypeEnum chargeType : SporadicChargeTypeEnum.values()) {
+                        if (!chargeType.getCode().equals(row.getChargeType())) continue;
+                        row.setSporadicType(chargeType.getMsg());
                     }
                 }
                 School userSchool = musicGroupDao.findUserSchool(row.getUserId());
@@ -2062,6 +2051,25 @@ public class ExportController extends BaseController {
                 if (practiceGroup != null) {
                     row.setSubjectName(practiceGroup.getSubjectName());
                 }
+            }else {
+                StudentPaymentOrderExportDto feeByType = sellOrderDao.getFeeByType(row.getId());
+                row.setMusicalFee(feeByType.getMusicalFee());
+                row.setTeachingFee(feeByType.getTeachingFee());
+                if (row.getGroupType().equals(GroupType.MUSIC)) {
+                    StudentRegistration studentRegistration = studentRegistrationDao.findStudentByMusicGroupIdAndUserId(row.getMusicGroupId(), row.getUserId());
+                    if (studentRegistration != null) {
+                        row.setSubjectName(studentRegistration.getSubjectName());
+                        row.setSchoolName(studentRegistration.getSchoolName());
+                        row.setCooperationOrganName(studentRegistration.getRemark());
+                    }
+                    if (row.getCourseFee().compareTo(BigDecimal.ZERO) == 0) {
+                        row.setCourseFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()));
+                    }
+                } else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
+                    row.setRepairFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()));
+                } else if (row.getType().equals(OrderTypeEnum.OUTORDER)) {
+                    row.setCourseFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()));
+                }
             }
             String paymentChannel = "";
             if (row.getPaymentChannel() == null) {
@@ -2079,9 +2087,9 @@ public class ExportController extends BaseController {
 
         try {
             String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分润余额", "到账时间",
-                    "关联乐团ID/VIP课ID", "课程形态", "课程费用", "减免费用", "押金", "乐器", "教辅费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "合作机构", "备注"};
+                    "关联乐团ID/VIP课ID", "课程形态", "课程费用", "减免费用", "押金", "乐器", "教辅费用", "维修费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "合作机构", "备注"};
             String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance", "payTime", "musicGroupId",
-                    "groupType.desc", "courseFee", "remitFee", "leaseFee", "musicalFee", "teachingFee", "sporadicAmount", "sporadicType", "transferFee", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
+                    "groupType.desc", "courseFee", "remitFee", "leaseFee", "musicalFee", "teachingFee","repairFee", "sporadicAmount", "sporadicType", "transferFee", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls"); //    //收款账户