Browse Source

经营报表统计调整

zouxuan 2 years ago
parent
commit
20d6da7d77

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -617,4 +617,6 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @return
      */
     List<StudentOrganDto> queryRemainCourseStudent(@Param("organIds") List<Integer> organIds);
+
+    List<Map> statCourseFee(@Param("cutFirstDayOfMonth") String cutFirstDayOfMonth, @Param("cutLastDayOfMonth") String cutLastDayOfMonth);
 }

+ 0 - 22
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExportTeacherSalaryDto.java

@@ -113,28 +113,6 @@ public class ExportTeacherSalaryDto{
     //实际上课学员
     private int realStudentNum;
 
-    @ApiModelProperty(value = "课程收入")
-    private BigDecimal courseIncome;
-
-    @ApiModelProperty(value = "云教练转结")
-    private BigDecimal cloudReverse;
-
-    public BigDecimal getCloudReverse() {
-        return cloudReverse;
-    }
-
-    public void setCloudReverse(BigDecimal cloudReverse) {
-        this.cloudReverse = cloudReverse;
-    }
-
-    public BigDecimal getCourseIncome() {
-        return courseIncome;
-    }
-
-    public void setCourseIncome(BigDecimal courseIncome) {
-        this.courseIncome = courseIncome;
-    }
-
     public String getDeductionReason() {
         return deductionReason;
     }

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

@@ -1028,27 +1028,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         //vip课(梯度课酬)
         //陪练课
         exportTeacherSalaryDtos.addAll(courseScheduleTeacherSalaryDao.exportPracticeTeacherSalary(params));
-
-        Set<Long> allCourseIds = exportTeacherSalaryDtos.stream().map(ExportTeacherSalaryDto::getCourseScheduleId).collect(Collectors.toSet());
-        Map<Long, BigDecimal> courseIncomeMap = new HashMap<>();
-        if(!CollectionUtils.isEmpty(allCourseIds)){
-            List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseScheduleIds(new ArrayList<>(allCourseIds));
-            if(!CollectionUtils.isEmpty(courseScheduleStudentPayments)){
-                courseIncomeMap = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId, Collectors.mapping(CourseScheduleStudentPayment::getActualPrice, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
-            }
-        }
-        Map<Long,BigDecimal> courseCast = MapUtil.convertIntegerMap(cloudTeacherFreeCourseDao.queryMapByClassDate(month));
-
-        for (ExportTeacherSalaryDto exportTeacherSalaryDto : exportTeacherSalaryDtos) {
-            BigDecimal castOrDefault = courseCast.getOrDefault(exportTeacherSalaryDto.getCourseScheduleId(), BigDecimal.ZERO);
-            exportTeacherSalaryDto.setCloudReverse(castOrDefault);
-            if(!courseIncomeMap.containsKey(exportTeacherSalaryDto.getCourseScheduleId())){
-                exportTeacherSalaryDto.setCourseIncome(BigDecimal.ZERO);
-            }else{
-                exportTeacherSalaryDto.setCourseIncome(courseIncomeMap.get(exportTeacherSalaryDto.getCourseScheduleId()));
-            }
-        }
-
         exportTeacherSalaryDtos.sort(Comparator.comparing(ExportTeacherSalaryDto::getTeacherId));
         return exportTeacherSalaryDtos;
     }

+ 17 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -2335,12 +2335,17 @@ public class ExportServiceImpl implements ExportService {
         List<OperatingTotalIncomeDto> incomeDtos = new ArrayList<>();
         //承担课程的云教练收入
         String month = params.get("month").toString();
-        String firstDayOfMonth = DateUtil.dateToString(DateUtil.getFirstDayOfMonth(DateUtil.stringToDate(month,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
-        String lastDayOfMonth = DateUtil.dateToString(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(month,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
-        Map<Integer, BigDecimal> groupCloudAmount = MapUtil.convertIntegerMap(cloudTeacherOrderDao.sumGroupCloudAmount(month,firstDayOfMonth,lastDayOfMonth));
-        //不承担课程的云教练收入
-        Map<Integer, BigDecimal> personalCloudAmount = MapUtil.convertIntegerMap(cloudTeacherOrderDao.sumPersonalCloudAmount(month,firstDayOfMonth,lastDayOfMonth));
+//        String firstDayOfMonth = DateUtil.dateToString(DateUtil.getFirstDayOfMonth(DateUtil.stringToDate(month,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
+//        String lastDayOfMonth = DateUtil.dateToString(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(month,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
 
+        String cutMonth = DateUtil.dateToString(DateUtil.addMonths(DateUtil.stringToDate(month,DateUtil.ISO_YEAR_MONTH_FORMAT),-1),DateUtil.ISO_YEAR_MONTH_FORMAT);
+        String cutFirstDayOfMonth = DateUtil.dateToString(DateUtil.getFirstDayOfMonth(DateUtil.stringToDate(cutMonth,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
+        String cutLastDayOfMonth = DateUtil.dateToString(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(cutMonth,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
+        Map<Integer, BigDecimal> groupCloudAmount = MapUtil.convertIntegerMap(cloudTeacherOrderDao.sumGroupCloudAmount(cutMonth,cutFirstDayOfMonth,cutLastDayOfMonth));
+        //不承担课程的云教练收入
+        Map<Integer, BigDecimal> personalCloudAmount = MapUtil.convertIntegerMap(cloudTeacherOrderDao.sumPersonalCloudAmount(cutMonth,cutFirstDayOfMonth,cutLastDayOfMonth));
+        List<Map> courseFeeStat = courseScheduleStudentPaymentDao.statCourseFee(cutFirstDayOfMonth,cutLastDayOfMonth);
+        Map<Integer, BigDecimal> courseIncome = courseFeeStat.stream().collect(Collectors.toMap(s -> Integer.parseInt(s.get("key").toString()), s -> BigDecimal.valueOf(Double.parseDouble(s.get("value").toString()))));
         for (Integer organId : listMap.keySet()) {
             OperatingTotalIncomeDto incomeDto = new OperatingTotalIncomeDto();
             incomeDto.setOrganName(userOrganNameMap.get(organId));
@@ -2530,11 +2535,11 @@ public class ExportServiceImpl implements ExportService {
                 row.setOrderAmount(row.getExpectAmount().add(row.getCouponRemitFee()));
                 i++;
                 //学员指导课费
-                incomeDto.setStudentGuidanceIncome(incomeDto.getStudentGuidanceIncome()
-                        .add(row.getMusicGroupCourseFee())
-                        .add(row.getVipCourseFee())
-                        .add(row.getPracticeCourseFee())
-                        .add(row.getTheoryCourseFee()));
+//                incomeDto.setStudentGuidanceIncome(incomeDto.getStudentGuidanceIncome()
+//                        .add(row.getMusicGroupCourseFee())
+//                        .add(row.getVipCourseFee())
+//                        .add(row.getPracticeCourseFee())
+//                        .add(row.getTheoryCourseFee()));
                 //学校课程采买
                 incomeDto.setCoursePurchaseIncome(incomeDto.getCoursePurchaseIncome()
                         .add(row.getCourseSchoolBuyAmount()));
@@ -2581,6 +2586,8 @@ public class ExportServiceImpl implements ExportService {
                 incomeDto.setLargeInstruments(incomeDto.getLargeInstruments()
                         .add(row.getLargeMusicalFee()));
             }
+            //学员指导课费
+            incomeDto.setStudentGuidanceIncome(incomeDto.getStudentGuidanceIncome().add(courseIncome.getOrDefault(organId,BigDecimal.ZERO)));
             incomeDto.setCloudCoachIncome(incomeDto.getCloudCoachIncome().add(groupCloudAmount.getOrDefault(organId,BigDecimal.ZERO)));
             incomeDto.setSaleCloudCoachIncome(incomeDto.getSaleCloudCoachIncome().add(personalCloudAmount.getOrDefault(organId,BigDecimal.ZERO)));
             //服务收入

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

@@ -1109,4 +1109,11 @@
         </foreach>
         group by cssp.user_id_ , u.organ_id_
 	</select>
+    <select id="statCourseFee" resultType="java.util.Map">
+		select cs.organ_id_,SUM(cssp.actual_price_) from mec_pro.course_schedule cs
+		left join mec_pro.course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+		where cs.class_date_ BETWEEN #{cutFirstDayOfMonth} AND #{cutLastDayOfMonth} AND cssp.actual_price_ > 0
+		AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 and cs.pre_course_flag_ = 0
+		order by cs.organ_id_
+	</select>
 </mapper>

+ 0 - 14
mec-web/src/main/java/com/ym/mec/web/controller/SellOrderController.java

@@ -1,27 +1,18 @@
 package com.ym.mec.web.controller;
 
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.EmployeeDao;
-import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.SellOrder;
 import com.ym.mec.biz.dal.enums.SellStatus;
 import com.ym.mec.biz.dal.enums.SellTypeEnum;
-import com.ym.mec.biz.dal.page.RepairStudentQueryInfo;
 import com.ym.mec.biz.dal.page.SellOrderQueryInfo;
 import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.SellOrderService;
-import com.ym.mec.biz.service.StudentRepairService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.commons.lang3.StringUtils;
-import org.snaker.engine.access.Page;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -30,10 +21,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
 import java.util.List;
 
 @RequestMapping("sellOrder")
@@ -42,8 +30,6 @@ import java.util.List;
 public class SellOrderController extends BaseController {
 
     @Autowired
-    private SysUserFeignService sysUserFeignService;
-    @Autowired
     private SellOrderService sellOrderService;
     @Autowired
     private OrganizationService organizationService;

+ 4 - 4
mec-web/src/main/resources/exportColumnMapper.ini

@@ -67,8 +67,8 @@ headColumns = ["交易流水号", "订单号", "订单日期", "交易类型", "
 fieldColumns = ["transNo", "orderNo", "createTime", "type.desc", "expectAmount", "actualAmount", "user.username", "user.phone", "paymentChannel", "merNos", "status.msg", "memo", "paymentChannel.desc"]
 
 [导出老师课酬]
-headColumns = ["课时编号", "老师编号", "老师姓名", "老师分部", "工作类别","课程分部", "课程组编号", "课程班名称", "乐团模式", "vip活动名称", "Vip课程类型", "阶梯奖励名称", "线上课/线下课", "线上课单价", "线下课单价","课程类别", "课时时长", "实际上课时长", "上课日期","上课时间", "教师签到状态", "教师签退状态", "教师签到时间", "教师签退时间", "考勤申诉处理状态", "处理意见","主辅", "上课地点", "应到学员", "学员签到时间", "学员签退时间", "课时课酬", "阶梯奖励", "扣款原因", "收入", "云教练转结"]
-fieldColumns = ["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", "studentSignInTime", "studentSignOutTime", "price", "rewards", "deductionReason", "courseIncome", "cloudReverse"]
+headColumns = ["课时编号", "老师编号", "老师姓名", "老师分部", "工作类别","课程分部", "课程组编号", "课程班名称", "乐团模式", "vip活动名称", "Vip课程类型", "阶梯奖励名称", "线上课/线下课", "线上课单价", "线下课单价","课程类别", "课时时长", "实际上课时长", "上课日期","上课时间", "教师签到状态", "教师签退状态", "教师签到时间", "教师签退时间", "考勤申诉处理状态", "处理意见","主辅", "上课地点", "应到学员", "学员签到时间", "学员签退时间", "课时课酬", "阶梯奖励", "扣款原因"]
+fieldColumns = ["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", "studentSignInTime", "studentSignOutTime", "price", "rewards", "deductionReason"]
 
 [导出老师结转奖励]
 headColumns = ["课程组编号", "课程组名称", "分部", "指导老师", "是否结转", "结转金额", "结转日期", "备注"]
@@ -199,8 +199,8 @@ headColumns = ["学员编号", "学员姓名", "指导老师", "教务老师", "
 fieldColumns = ["studentId", "studentName", "teacherName", "eduTeacherName", "createTime", "orderType.msg", "actualAmount"]
 
 [销售列表导出]
-headColumns = ["交易流水号", "订单号", "销售日期", "销售类型", "商品名称", "数量", "订单金额(元)", "应付金额(元)", "余额支付(元)","现金支付(元)", "优惠金额(元)", "销售成本(元)", "学员姓名", "交易方式", "收款账户", "账户类型", "扣减库存", "所属分部","所属学校", "教务老师", "确认收货", "状态"]
-fieldColumns = ["transNo", "orderNo", "sellTime", "type.desc", "goodsName", "num", "orderAmount", "expectAmount", "balanceAmount", "actualAmount", "couponRemitAmount", "sellCost", "userName", "paymentChannelStr", "merNo", "accountTypeStr", "stockType.msg", "organName", "schoolName", "eduTeacher", "receiveStatusStr", "status.msg"]
+headColumns = ["交易流水号", "订单号", "销售日期", "销售类型", "商品名称", "数量", "订单金额(元)", "应付金额(元)", "余额支付(元)","现金支付(元)", "优惠金额(元)", "总部销售成本(元)",  "分部销售成本(元)", "学员姓名", "交易方式", "收款账户", "账户类型", "扣减库存", "所属分部","所属学校", "教务老师", "确认收货", "状态"]
+fieldColumns = ["transNo", "orderNo", "sellTime", "type.desc", "goodsName", "num", "orderAmount", "expectAmount", "balanceAmount", "actualAmount", "couponRemitAmount", "sellCost","organSellCost", "userName", "paymentChannelStr", "merNo", "accountTypeStr", "stockType.msg", "organName", "schoolName", "eduTeacher", "receiveStatusStr", "status.msg"]
 
 [欠费学员列表导出]
 headColumns = ["学员编号", "学员姓名", "所属分部", "合作单位", "所在乐团", "乐团主管", "声部", "性别", "家长姓名", "家长联系电话", "欠费金额"]