Ver código fonte

Merge branch 'feature/0529-live' of http://git.dayaedu.com/yonge/mec into master_saas

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
	mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java
	mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java
	mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
zouxuan 2 anos atrás
pai
commit
4e09d985f9
33 arquivos alterados com 278 adições e 219 exclusões
  1. BIN
      audio-analysis/src/main/.DS_Store
  2. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  3. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  4. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  5. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/HumanTypeDto.java
  6. 7 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/OASummaryExpensesDto.java
  7. 14 104
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupStudentDto.java
  8. 16 15
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java
  9. 1 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java
  10. 33 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseScheduleRecordDto.java
  11. 4 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/HumanCostTypeEnum.java
  12. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  13. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/LiveGroupWrapper.java
  14. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java
  15. 1 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  16. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  17. 3 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OperatingReportNewServiceImpl.java
  18. 12 15
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java
  19. 11 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  20. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  21. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java
  22. 66 27
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  23. 14 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  24. 20 13
      mec-biz/src/main/resources/config/mybatis/OperatingReportNewMapper.xml
  25. 8 2
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  26. 7 6
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  27. 4 0
      mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java
  28. 5 0
      mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java
  29. 19 0
      mec-task/src/main/java/com/ym/mec/task/jobs/LiveCourseRemindTask.java
  30. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  31. 4 1
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultVipGroupSalaryController.java
  32. 3 1
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupCategoryController.java
  33. 2 2
      mec-web/src/main/resources/exportColumnMapper.ini

BIN
audio-analysis/src/main/.DS_Store


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

@@ -2029,4 +2029,5 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     List<CourseSchedule> liveCourseRemind();
 
+    void updateRemindStatus(@Param("ids") List<Long> ids);
 }

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

@@ -463,5 +463,7 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
 
     int queryCount1(Map<String, Object> params);
 
+    List<BaseMapDto<Long, BigDecimal>> groupSellOrder(Map<String, Object> params);
+
     List<StudentPaymentOrder> queryVipQuitOrder(@Param("vipGroupId") Long vipGroupId, @Param("orderTypeEnum") OrderTypeEnum orderTypeEnum, @Param("success") DealStatusEnum success);
 }

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

@@ -171,6 +171,6 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
     List<Subject> getSubjectListByIdAndCoopId(@Param("musicGroupId") String musicGroupId, @Param("coopId") Integer coopId);
 
-    List<StudentSubjectDto> getSubjectByStudentId(@Param("studentIds") Set<Long> studentIds);
+    List<StudentSubjectDto> getSubjectByStudentId(@Param("studentIds") Set studentIds);
 
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/HumanTypeDto.java

@@ -13,4 +13,6 @@ public class HumanTypeDto {
     private BigDecimal cloudCoachingCost = BigDecimal.ZERO; // 云教练成本
     private BigDecimal internalSettlement = BigDecimal.ZERO; // 内部结算
     private BigDecimal studentManagementFeeAdjustment = BigDecimal.ZERO; // 学员管理费调整
+    private BigDecimal commission = BigDecimal.ZERO; // 手续费
+    private BigDecimal tax = BigDecimal.ZERO; // 税费
 }

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/OASummaryExpensesDto.java

@@ -69,6 +69,12 @@ public class OASummaryExpensesDto {
     // 内部结算
     private BigDecimal internalSettlement;
 
-    // 学员管理费调整
+    // 学员管理费
     private BigDecimal studentManagementFeeAdjustment;
+
+    // 手续费
+    private BigDecimal commission;
+
+    // 税费
+    private BigDecimal tax;
 }

+ 14 - 104
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupStudentDto.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -9,6 +10,7 @@ import java.util.Date;
  * @Author Joburgess
  * @Date 2019/10/9
  */
+@Data
 public class VipGroupStudentDto {
 
     @ApiModelProperty(value = "用户编号")
@@ -17,6 +19,18 @@ public class VipGroupStudentDto {
     @ApiModelProperty(value = "用户名称")
     private String userName;
 
+    @ApiModelProperty(value = "分部")
+    private Integer organId;
+
+    @ApiModelProperty(value = "声部")
+    private Integer subjectId;
+
+    @ApiModelProperty(value = "声部")
+    private String subjectName;
+
+    @ApiModelProperty(value = "分部")
+    private String organName;
+
     @ApiModelProperty(value = "手机号")
     private String phone;
 
@@ -43,108 +57,4 @@ public class VipGroupStudentDto {
 
     /** 线下课单价 */
     private java.math.BigDecimal offlineClassesUnitPrice;
-
-    public BigDecimal getOnlineClassesUnitPrice() {
-        return onlineClassesUnitPrice;
-    }
-
-    public void setOnlineClassesUnitPrice(BigDecimal onlineClassesUnitPrice) {
-        this.onlineClassesUnitPrice = onlineClassesUnitPrice;
-    }
-
-    public BigDecimal getOfflineClassesUnitPrice() {
-        return offlineClassesUnitPrice;
-    }
-
-    public void setOfflineClassesUnitPrice(BigDecimal offlineClassesUnitPrice) {
-        this.offlineClassesUnitPrice = offlineClassesUnitPrice;
-    }
-
-    public BigDecimal getBalance() {
-        return balance;
-    }
-
-    public void setBalance(BigDecimal balance) {
-        this.balance = balance;
-    }
-
-    public BigDecimal getAllBalance() {
-        return allBalance;
-    }
-
-    public void setAllBalance(BigDecimal allBalance) {
-        this.allBalance = allBalance;
-    }
-
-    public Date getApplyDate() {
-        return applyDate;
-    }
-
-    public void setApplyDate(Date applyDate) {
-        this.applyDate = applyDate;
-    }
-
-    public Date getRefundDate() {
-        return refundDate;
-    }
-
-    public void setRefundDate(Date refundDate) {
-        this.refundDate = refundDate;
-    }
-
-    public Integer getStudentStatus() {
-        return studentStatus;
-    }
-
-    public void setStudentStatus(Integer studentStatus) {
-        this.studentStatus = studentStatus;
-    }
-
-    public BigDecimal getCourseSalary() {
-        return courseSalary;
-    }
-
-    public void setCourseSalary(BigDecimal courseSalary) {
-        this.courseSalary = courseSalary;
-    }
-
-    public String getPhone() {
-        return phone;
-    }
-
-    public void setPhone(String phone) {
-        this.phone = phone;
-    }
-
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
-
-    public Integer getTotalClassTimes() {
-        return totalClassTimes;
-    }
-
-    public void setTotalClassTimes(Integer totalClassTimes) {
-        this.totalClassTimes = totalClassTimes;
-    }
-
-    public Integer getCurrentClassTimes() {
-        return currentClassTimes;
-    }
-
-    public void setCurrentClassTimes(Integer currentClassTimes) {
-        this.currentClassTimes = currentClassTimes;
-    }
 }

+ 16 - 15
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -221,6 +221,22 @@ public class CourseSchedule  extends BaseEntity{
     @ApiModelProperty("教学点")
     private String teachingPoint;
 
+	@ApiModelProperty("授课直播间编号")
+	private String liveRoomId;
+
+
+	@ApiModelProperty(value = "直播课通知标记")
+	private Boolean liveRemind;
+
+	public Boolean getLiveRemind() {
+		return liveRemind;
+	}
+
+	public void setLiveRemind(Boolean liveRemind) {
+		this.liveRemind = liveRemind;
+	}
+
+
     public String getTeachingPoint() {
         return teachingPoint;
     }
@@ -237,21 +253,6 @@ public class CourseSchedule  extends BaseEntity{
         this.simpleDateFormat = simpleDateFormat;
     }
 
-	@ApiModelProperty("授课直播间编号")
-	private String liveRoomId;
-
-
-    @ApiModelProperty(value = "直播课通知标记")
-    private Boolean liveRemind;
-
-    public Boolean getLiveRemind() {
-        return liveRemind;
-    }
-
-    public void setLiveRemind(Boolean liveRemind) {
-        this.liveRemind = liveRemind;
-    }
-
     public Boolean getSettlementReportFlag() {
 		return settlementReportFlag;
 	}

+ 1 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java

@@ -39,8 +39,7 @@ public class ImGroup extends BaseEntity {
 		VIP("VIP", "vip课"), DEMO("DEMO", "试听课"), PRACTICE("PRACTICE", "网管课"),
 		SNAP("SNAP","临时班级"), COMM("COMM", "对外课程"), HIGH_ONLINE("HIGH_ONLINE", "线上基础技能课"),
 		MUSIC_NETWORK("MUSIC_NETWORK","乐团网管课"),PARENT_MEETING("PARENT_MEETING","家长会"),
-		TRAINING("TRAINING","训练营"),REPERTOIRE_PLAY("REPERTOIRE_PLAY","曲目演奏课"), SCHOOL("SCHOOL","学校衔接群"),
-		LIVE("LIVE","直播课");
+		TRAINING("TRAINING","训练营"),REPERTOIRE_PLAY("REPERTOIRE_PLAY","曲目演奏课"), SCHOOL("SCHOOL","学校衔接群"),LIVE("LIVE","直播课");
 
 		private String code;
 

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseScheduleRecordDto.java

@@ -64,6 +64,15 @@ public class StudentCourseScheduleRecordDto {
     @ApiModelProperty(value = "是否达标1是0否")
     private Integer qualifiedFlag = 1;
 
+    @ApiModelProperty(value = "教学内容")
+    private String teachingContent;
+
+    @ApiModelProperty("教学要点")
+    private String teachingPoint;
+
+    @ApiModelProperty("直播课回放记录")
+    private Boolean hasVideoRecord;
+
     public Integer getQualifiedFlag() {
         return qualifiedFlag;
     }
@@ -191,4 +200,28 @@ public class StudentCourseScheduleRecordDto {
 	public void setTeachingAddress(String teachingAddress) {
 		this.teachingAddress = teachingAddress;
 	}
+
+    public String getTeachingContent() {
+        return teachingContent;
+    }
+
+    public void setTeachingContent(String teachingContent) {
+        this.teachingContent = teachingContent;
+    }
+
+    public String getTeachingPoint() {
+        return teachingPoint;
+    }
+
+    public void setTeachingPoint(String teachingPoint) {
+        this.teachingPoint = teachingPoint;
+    }
+
+    public Boolean getHasVideoRecord() {
+        return hasVideoRecord;
+    }
+
+    public void setHasVideoRecord(Boolean hasVideoRecord) {
+        this.hasVideoRecord = hasVideoRecord;
+    }
 }

+ 4 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/HumanCostTypeEnum.java

@@ -9,7 +9,10 @@ public enum HumanCostTypeEnum implements BaseEnum<String, HumanCostTypeEnum> {
 	NETWORK_CLASSROOM("NETWORK_CLASSROOM","网络教室成本"),
 	CLOUD_COACHING_COST("CLOUD_COACHING_COST","云教练成本"),
 	INTERNAL_SETTLEMENT("INTERNAL_SETTLEMENT","内部结算"),
-	STUDENT_MANAGEMENT_FEE_ADJUSTMENT("STUDENT_MANAGEMENT_FEE_ADJUSTMENT","学员管理费调整");
+	STUDENT_MANAGEMENT_FEE_ADJUSTMENT("STUDENT_MANAGEMENT_FEE_ADJUSTMENT","学员管理费调整"),
+	COMMISSION("COMMISSION","手续费"),
+	TAX("TAX","税费"),
+	;
 
 	@EnumValue
 	private String code;

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -293,6 +293,15 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
 
     // 学校端注册短信通知
     JIGUANG_SCHOOL_COURSE_CREATE("JIGUANG_SCHOOL_COURSE_CREATE","课程创建"),
+    // 老师直播课上课通知
+    JIGUANG_LIVE_COURSE_START("JIGUANG_LIVE_COURSE_START","老师直播课上课通知-极光推送"),
+
+    // 学生直播课上课通知
+    JIGUANG_LIVE_COURSE_START_STUDENT("JIGUANG_LIVE_COURSE_START_STUDENT","学生直播课上课通知-极光推送"),
+
+    // 群聊直播课上课通知
+    IM_LIVE_COURSE_START_GROUP("IM_LIVE_COURSE_START_GROUP","群聊直播课上课通知-极光推送"),
+
     ;
 
     MessageTypeEnum(String code, String msg) {

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/LiveGroupWrapper.java

@@ -48,7 +48,7 @@ public class LiveGroupWrapper {
         private String orderNo;
 
         @ApiModelProperty("学生编号")
-        private Long studentId;
+        private Integer studentId;
 
         @ApiModelProperty("分部名称")
         private String organName;

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java

@@ -113,5 +113,6 @@ public interface SubjectService extends BaseService<Integer, Subject> {
 
     Map<Integer,Subject> getMapByIds(List<Integer> subjectIds);
 
-    Map<Integer, StudentSubjectDto> getSubjectByStudentId(Set<Long> studentIds);
+    Map<Integer, StudentSubjectDto> getSubjectByStudentId(Set studentIds);
+
 }

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

@@ -2,9 +2,9 @@ package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.microsvc.toolkit.middleware.im.message.ImGroupMemberWrapper;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-import com.microsvc.toolkit.middleware.im.message.ImGroupMemberWrapper;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
@@ -160,10 +160,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private MusicGroupSchoolTermStudentCourseDetailDao musicGroupSchoolTermStudentCourseDetailDao;
     @Autowired
     private MusicGroupSchoolTermCourseDetailDao musicGroupSchoolTermCourseDetailDao;
-
     @Autowired
     private CooperationOrganService cooperationOrganService;
-
     @Autowired
     private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
     @Override

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

@@ -2,8 +2,8 @@ package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.google.common.collect.Maps;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
@@ -992,6 +992,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         }
         checkNewCourseSchedules(courseSchedules, false,false);
         createCourseScheduleName(courseSchedules);
+		courseScheduleDao.batchAddCourseSchedules(courseSchedules);
 		courseScheduleModifyLogService.pushSchoolCourseCreate(courseSchedules.get(0));
     }
 
@@ -1115,8 +1116,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             } else {
                 courseScheduleDto.setStatus(CourseStatusEnum.UNDERWAY);
             }
-            courseScheduleDto.setSubjectName(subjectNameCourseMap.get(courseScheduleDto.getId().intValue()));
-            courseScheduleDto.setSubjectId(subjectIdCourseMap.get(courseScheduleDto.getId().intValue()));
+            courseScheduleDto.setSubjectName(MapUtils.getString(subjectNameCourseMap, courseScheduleDto.getId()));
+            courseScheduleDto.setSubjectId(MapUtils.getString(subjectIdCourseMap, courseScheduleDto.getId()));
 			courseScheduleDto.setReviewId(reviewIdMap.get(courseScheduleDto.getId().intValue()));
 			courseScheduleDto.setStudentReviewId(StudentReviewIdMap.get(courseScheduleDto.getId()));
 			if(CourseScheduleType.PRACTICE.equals(courseScheduleDto.getType())&&Objects.nonNull(courseScheduleDto.getMusicGroupId())){

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

@@ -158,15 +158,6 @@ public class OperatingReportNewServiceImpl extends BaseServiceImpl<Integer, Oper
 			}
 			//业务退费
 			operatingReportNew.setBusinessRefund(getAmount(collect6.get(organId)));
-			//服务收入
-//			operatingReportNew.setServiceAmount(
-//					getAmount(collect3.get(organId))
-//					.add(getAmount(collect2.get(organId)))
-//					.add(getAmount(collect4.get(organId)))
-//					.add(getAmount(collect5.get(organId)))
-//					.add(getAmount(collect24.get(organId)))
-//					.add(getAmount(collect26.get(organId)))
-//					.add(operatingReportNew.getCourseAmount()));
 			//收入合计
 			operatingReportNew.setTotalIncome(operatingReportNew.getSaleAmount().add(operatingReportNew.getServiceAmount()).subtract(operatingReportNew.getBusinessRefund()));
 			//内部结算
@@ -174,7 +165,10 @@ public class OperatingReportNewServiceImpl extends BaseServiceImpl<Integer, Oper
 			//变动费用
 			operatingReportNew.setVariableCosts(getAmount(collect7.get(organId))
 					.add(humanTypeDto.getVariableCost())
+					.add(humanTypeDto.getCommission())
+					.add(humanTypeDto.getTax())
 					.add(humanTypeDto.getNetworkClassroomCost())
+					.add(humanTypeDto.getCloudCoachingCost())
 					.add(humanTypeDto.getStudentManagementFeeAdjustment()));
 			//固定费用
 			operatingReportNew.setFixedCosts(getAmount(collect8.get(organId)).add(humanTypeDto.getFixedCost()));

+ 12 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.entity.TenantInfo;
+import com.ym.mec.biz.dal.enums.EGroupGradeType;
 import com.ym.mec.biz.dal.enums.FivePlusGradeEnum;
 import com.ym.mec.biz.dal.enums.GradeTypeEnum;
 import com.ym.mec.biz.dal.enums.SixPlusGradeEnum;
@@ -218,6 +219,17 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 	public List<Organization> queryAll() {
 		return organizationDao.getOrgans(null,1);
 	}
+	@Override
+	public Map<Integer, Organization> getMapById(List<Integer> ids) {
+		if (CollectionUtils.isEmpty(ids)) {
+			return new HashMap<>();
+		}
+		List<Organization> organs = organizationDao.findOrgans(ids);
+		if (CollectionUtils.isEmpty(organs)) {
+			return new HashMap<>();
+		}
+		return organs.stream().collect(Collectors.toMap(Organization::getId, Function.identity()));
+	}
 
     /**
      * 获取分部信息
@@ -263,21 +275,6 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
     }
 
     @Transactional(rollbackFor = Exception.class)
-    @Override
-    public Map<Integer, Organization> getMapById(List<Integer> ids) {
-        if (CollectionUtils.isEmpty(ids)) {
-            return new HashMap<>();
-        }
-        List<Organization> organs = organizationDao.findOrgans(ids);
-        if (CollectionUtils.isEmpty(organs)) {
-            return new HashMap<>();
-        }
-        return organs.stream().collect(Collectors.toMap(Organization::getId, Function.identity()));
-
-
-    }
-
-    @Transactional(rollbackFor = Exception.class)
     public void updateOrganId(Integer userId,Integer organId){
 		Employee employee = employeeDao.get(userId);
 		String organIdList = employee.getOrganIdList();

+ 11 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -1702,7 +1702,12 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     public List<OperatingTotalIncomeDto> queryOperatingSummaryIncome(Map<String, Object> params) {
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderDao.ExportQueryPage1(params);
-//        studentPaymentOrderExportDtos.addAll(studentPaymentOrderDao.ExportQueryPage2(params));
+        studentPaymentOrderExportDtos.addAll(studentPaymentOrderDao.ExportQueryPage2(params));
+//        List<BaseMapDto<Long,BigDecimal>> sellOrderMap = studentPaymentOrderDao.groupSellOrder(params);
+//        Map<Long, BigDecimal> sellMap = new HashMap<>();
+//        if(CollectionUtils.isNotEmpty(sellOrderMap)){
+//            sellMap = sellOrderMap.stream().collect(Collectors.groupingBy(e -> e.getKey(), Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0).getValue())));
+//        }
         long i = 1;
         //获取机构费率
         List<Long> otherOrderIds = studentPaymentOrderExportDtos.stream().filter(e -> e.getGroupType() != GroupType.GOODS_SELL
@@ -1749,7 +1754,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                 if (row.getBalancePaymentAmount() == null) {
                     row.setBalancePaymentAmount(BigDecimal.ZERO);
                 }
-                if (row.getOrderDetailList() != null) {
+                if (row.getOrderDetailList() != null && GroupType.GOODS_SELL != row.getGroupType()) {
                     for (StudentPaymentOrderDetail orderDetail : row.getOrderDetailList()) {
                         switch (orderDetail.getType()) {
                             case COURSE:
@@ -1767,12 +1772,10 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                                 row.setMusicGroupCourseFee(row.getMusicGroupCourseFee().add(orderDetail.getPrice()));
                                 break;
                             case MUSICAL:
-                                if (row.getGroupType() != GroupType.GOODS_SELL) {
-                                    if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
-                                        row.setLeaseFee(getActualAmount(orderDetail.getPrice(), row));
-                                    } else {
-                                        row.setMusicalFee(orderDetail.getPrice());
-                                    }
+                                if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
+                                    row.setLeaseFee(getActualAmount(orderDetail.getPrice(), row));
+                                } else {
+                                    row.setMusicalFee(orderDetail.getPrice());
                                 }
                                 break;
                             case ACCESSORIES:

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

@@ -1654,7 +1654,6 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         studentMemberUpdateLogDao.insert(studentMemberUpdateLog);
     }
 
-
     @Transactional(rollbackFor = Exception.class)
     public  <T extends BaseStudentDto> void insertStudent(T baseStudent){
         Student student = new Student();

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

@@ -240,7 +240,7 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implem
     }
 
     @Override
-    public Map<Integer, StudentSubjectDto> getSubjectByStudentId(Set<Long> studentIds) {
+    public Map<Integer, StudentSubjectDto> getSubjectByStudentId(Set studentIds) {
 
         if (CollectionUtils.isEmpty(studentIds)) {
             return new HashMap<>();

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

@@ -18,6 +18,7 @@ import com.google.common.collect.Maps;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.dto.VipGroupClassGroupMapper;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.mapper.LiveGroupPlusMapper;
 import com.ym.mec.biz.dal.wrapper.LiveGroupWrapper;
 import com.ym.mec.biz.service.*;
@@ -67,25 +68,6 @@ import com.ym.mec.biz.dal.dao.VipGroupDefaultClassesCycleDao;
 import com.ym.mec.biz.dal.dao.VipGroupDefaultClassesUnitPriceDao;
 import com.ym.mec.biz.dal.dao.VipGroupStudentCoursePriceDao;
 import com.ym.mec.biz.dal.entity.StudentApplyRefunds.StudentApplyRefundsStatus;
-import com.ym.mec.biz.dal.enums.ActivityCourseType;
-import com.ym.mec.biz.dal.enums.AuditStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
-import com.ym.mec.biz.dal.enums.CouponDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.MessageTypeEnum;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.ReturnFeeEnum;
-import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
-import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
-import com.ym.mec.biz.dal.enums.SysUserRoleEnum;
-import com.ym.mec.biz.dal.enums.TeachModeEnum;
-import com.ym.mec.biz.dal.enums.TeachTypeEnum;
-import com.ym.mec.biz.dal.enums.VipGroupStatusEnum;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.ActivityUserQueryInfo;
 import com.ym.mec.biz.dal.page.StudentVipGroupQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
@@ -2032,6 +2014,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             List<StudentApplyRefunds> applyRefunds = studentApplyRefundsDao.findByGroupAndType(queryInfo.getVipGroupId().toString(), queryInfo.getGroupType());
             Map<Integer, List<StudentApplyRefunds>> studentApplyRefundsMap = applyRefunds.stream()
                     .collect(Collectors.groupingBy(StudentApplyRefunds::getUserId));
+            //获取学员基本信息
+            List<Integer> userIds = dataList.stream().map(e -> e.getId()).collect(Collectors.toList());
+            List<Integer> subjectIds = dataList.stream().map(e -> e.getSubjectId()).collect(Collectors.toList());
+            List<SimpleUserDto> usersSimpleInfo = teacherDao.getUsersSimpleInfo(userIds);
+            Map<Integer, SimpleUserDto> studentInfoMap = usersSimpleInfo.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, s -> s, (s1, s2) -> s1));
+            List<Integer> organIds = usersSimpleInfo.stream().map(e -> Integer.parseInt(e.getOrganIds())).collect(Collectors.toList());
+            Map<Integer, String> organMap = getMap("organization", "id_", "name_", organIds,queryInfo.getTenantId(), Integer.class, String.class);
+            Map<Integer, String> subjectMap = getMap("subject", "id_", "name_", subjectIds,queryInfo.getTenantId(), Integer.class, String.class);
             dataList.forEach(data -> {
                 List<StudentApplyRefunds> studentApplyRefunds = studentApplyRefundsMap.get(data.getId());
                 if (!CollectionUtils.isEmpty(studentApplyRefunds)) {
@@ -2042,6 +2032,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
                 } else if (data.getStudentStatus() == 0) {
                     data.setRefundDate(null);
                 }
+                SimpleUserDto userDto = studentInfoMap.get(data.getId());
+                if(Objects.nonNull(userDto)){
+                    data.setUserName(userDto.getNickName());
+                    data.setPhone(userDto.getPhone());
+                    data.setOrganId(Integer.parseInt(userDto.getOrganIds()));
+                    data.setOrganName(organMap.get(data.getOrganId()));
+                }
+                data.setSubjectName(subjectMap.get(data.getSubjectId()));
             });
         }
         if (count == 0) {
@@ -4845,7 +4843,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             return livedStudentList;
         }
         // 学生ID集合
-        List<Integer> studentIds = records.stream().map(LiveGroupWrapper.LiveGroupStudentList::getStudentId).map(o -> o.intValue()).collect(Collectors.toList());
+        List<Integer> studentIds = records.stream().map(e->e.getStudentId()).collect(Collectors.toList());
 
         // 学生信息
         Map<Integer, Student> studentMap = studentService.getMapByIds(studentIds);
@@ -4853,16 +4851,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             return livedStudentList;
         }
         // 手机号
-        List<SimpleUserDto> usersSimpleInfo = teacherDao.getUsersSimpleInfo(studentIds);
+        List<SimpleUserDto> usersSimpleInfo = teacherDao.getUsersSimpleInfo(studentIds.stream().collect(Collectors.toList()));
 
-        Set<Integer> subjectIds = new HashSet<>();
         Set<Integer> coopIds = new HashSet<>();
-        Set<Integer> organIds = new HashSet<>();
+        Set<Integer> organIds;
         studentMap.values().forEach(student -> {
-            subjectIds.add(Integer.parseInt(student.getSubjectIdList()));
             coopIds.add(student.getCooperationOrganId());
-            organIds.add(student.getOrganId());
         });
+        organIds = usersSimpleInfo.stream().map( o -> Integer.parseInt(o.getOrganIds())).collect(Collectors.toSet());
         // 分部
         Map<Integer, Organization> organizationMap = organizationService.getMapById(new ArrayList<>(organIds));
 
@@ -4870,7 +4866,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         Map<Integer, CooperationOrgan> cooperationOrganMap = cooperationOrganService.getMapByIds(new ArrayList<>(coopIds));
 
         // 声部
-        Map<Integer, StudentSubjectDto> studentSubjectDtoMap = subjectService.getSubjectByStudentId(studentIds.stream().map(Integer::longValue).collect(Collectors.toSet()));
+        Map<Integer, StudentSubjectDto> studentSubjectDtoMap = subjectService.getSubjectByStudentId(new HashSet<>(studentIds));
 
         Map<Integer,SimpleUserDto> userMap = new HashMap<>();
         if (!CollectionUtils.isEmpty(usersSimpleInfo)) {
@@ -4878,7 +4874,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         }
 
         for (LiveGroupWrapper.LiveGroupStudentList record : records) {
-            Student student = studentMap.get(record.getStudentId());
+            Student student = studentMap.get(record.getStudentId().longValue());
             if (Objects.nonNull(student)) {
                 record.setStudentName(student.getUsername());
                 record.setOrganName(organizationMap.getOrDefault(student.getOrganId(), new Organization()).getName());
@@ -4965,8 +4961,51 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         // 查询30分钟内要开始的并且没有直播通知的直播课
         List<CourseSchedule> courseSchedules = courseScheduleDao.liveCourseRemind();
 
+        if (CollectionUtils.isEmpty(courseSchedules)) {
+            return;
+        }
+
+        for (CourseSchedule courseSchedule : courseSchedules) {
+
+            // 获取班级名
+            ClassGroup classGroup = classGroupDao.get(courseSchedule.getClassGroupId());
+            if (Objects.isNull(classGroup)) {
+                continue;
+            }
+
+            // 通知老师
+            Integer actualTeacherId = courseSchedule.getActualTeacherId();
+            if (actualTeacherId != null) {
+                Map<Integer, String> userMap = new HashMap<>();
+                userMap.put(actualTeacherId, actualTeacherId.toString());
+
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_LIVE_COURSE_START,
+                        userMap, null, 0, null, "TEACHER", classGroup.getName());
+            }
+
+            // 通知学生
+            List<SimpleUserDto> courseStudents = courseScheduleStudentPaymentService.getCourseStudents(Lists.newArrayList(courseSchedule.getId()));
+            if (!CollectionUtils.isEmpty(courseStudents)) {
+                Map<Integer, String> userMap = new HashMap<>();
+                courseStudents.forEach(data -> {
+                    userMap.put(data.getUserId(), data.getUserId().toString());
+                });
+
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_LIVE_COURSE_START_STUDENT,
+                        userMap, null, 0, null, "STUDENT", classGroup.getName());
+            }
+
+            // im消息 TODO
+            sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_LIVE_COURSE_START_GROUP, courseSchedule.getActualTeacherId().toString(), "extra",
+                    new String[]{classGroup.getId().toString()},null);
+
+        }
 
+        // id 集合
+        List<Long> ids = courseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
 
+        // 更新通知状态
+        courseScheduleDao.updateRemindStatus(ids);
 
     }
 }

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

@@ -46,6 +46,7 @@
         <result column="settlement_report_flag_" property="settlementReportFlag"/>
         <result column="service_provider_" property="serviceProvider"/>
         <result column="mute_all_" property="muteAll"/>
+        <result column="live_remind_" property="liveRemind"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.Mapper" id="Mapper">
@@ -116,6 +117,8 @@
         <result column="class_group_id_" property="classGroupId"/>
         <result column="school_name_" property="teachingAddress" />
         <result column="qualified_flag_" property="qualifiedFlag" />
+        <result column="teaching_content_" property="teachingContent" />
+        <result column="teaching_point_" property="teachingPoint" />
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.StudentCourseInfoDto" id="StudentCourseInfoDto">
@@ -1159,6 +1162,8 @@
         CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
         cs.actual_teacher_id_ teacher_id_,
         cs.teach_mode_,
+        cs.teaching_content_,
+        cs.teaching_point_,
         s.name_ school_name_,
         sa.qualified_flag_
         FROM course_schedule_student_payment cssp
@@ -4312,4 +4317,13 @@
           and cs.class_date_ = date_format(now(),'%Y-%m-%d')
           and cs.start_class_time_ &lt;= date_format(now(),'%H:%i:%s')
     </select>
+
+    <update id="updateRemindStatus">
+        update course_schedule
+        set live_remind_ = 1
+        where id_  in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
 </mapper>

+ 20 - 13
mec-biz/src/main/resources/config/mybatis/OperatingReportNewMapper.xml

@@ -210,18 +210,18 @@
 		where #{month} BETWEEN DATE_FORMAT(orc.start_date_,'%Y-%m') AND DATE_FORMAT(orc.end_date_,'%Y-%m') AND orc.cloud_price_ > 0 AND orc.start_date_  IS NOT NULL;
 	</select>
 	<select id="sumRefundAmount" resultType="java.util.Map">
-		select organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure where process_id_ IN (19,22,23,28,51) AND fee_project_ = 19
+		select organ_id_ 'key',SUM(current_amount_) 'value' from financial_expenditure where process_id_ IN (19,22,23,28,51) AND fee_project_ = 19
 		AND effective_time_ = #{month} AND amount_ > 0 and del_flag_ = 0 group by organ_id_;
 	</select>
 	<select id="sumVariableCosts" resultType="java.util.Map">
-		select fe.organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure fe
+		select fe.organ_id_ 'key',SUM(current_amount_) 'value' from financial_expenditure fe
 		where effective_time_ = #{month} AND amount_ > 0 and del_flag_ = 0
-		AND fee_project_ BETWEEN 6 AND 21 AND process_id_ IN (19,22,23,28,51) group by fe.organ_id_;
+		AND fee_project_ IN (6,7,8,9,10,11,12,15,16,17,20,21) AND process_id_ IN (19,22,23,28,51) group by fe.organ_id_;
 	</select>
 	<select id="sumFixedCosts" resultType="java.util.Map">
-		select fe.organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure fe
+		select fe.organ_id_ 'key',SUM(current_amount_) 'value' from financial_expenditure fe
 		where effective_time_ = #{month} AND amount_ > 0 and del_flag_ = 0
-		AND fee_project_ IN (1,2,3,4,5) AND process_id_ IN (19,22,23,28,51) group by fe.organ_id_;
+		AND fee_project_ IN (3,4,5) AND process_id_ IN (19,22,23,28,51) group by fe.organ_id_;
 	</select>
 	<select id="sumCloudPreAmount" resultType="java.util.Map">
 		select cto.organ_id_ 'key',TRUNCATE(SUM(operating_amount_ / (TIMESTAMPDIFF(DAY,cto.start_time_,cto.end_time_) + 1) *
@@ -372,16 +372,21 @@
 			SUM(CASE WHEN fee_project_ = 17 THEN fe.current_amount_ ELSE 0 END) AS hospitality,
 			SUM(CASE WHEN fee_project_ = 19 THEN fe.current_amount_ ELSE 0 END) AS refund,
 			SUM(CASE WHEN fee_project_ = 26 THEN fe.current_amount_ ELSE 0 END) AS other,
-			SUM(CASE WHEN hc.human_cost_type_ = 'FIXED' THEN hc.amount_ ELSE 0 END) AS fixedHumanCost,
-			SUM(CASE WHEN hc.human_cost_type_ = 'VARIABLE' THEN hc.amount_ ELSE 0 END) AS variableHumanCost,
-			SUM(CASE WHEN hc.human_cost_type_ = 'NETWORK_CLASSROOM' THEN hc.amount_ ELSE 0 END) AS network,
-			SUM(CASE WHEN hc.human_cost_type_ = 'CLOUD_COACHING_COST' THEN hc.amount_ ELSE 0 END) AS cloudCoachingCost,
-			SUM(CASE WHEN hc.human_cost_type_ = 'INTERNAL_SETTLEMENT' THEN hc.amount_ ELSE 0 END) AS internalSettlement,
-			SUM(CASE WHEN hc.human_cost_type_ = 'STUDENT_MANAGEMENT_FEE_ADJUSTMENT' THEN hc.amount_ ELSE 0 END) AS studentManagementFeeAdjustment
+			hc.fixedHumanCost,hc.fixedHumanCost, hc.variableHumanCost, hc.network, hc.cloudCoachingCost, hc.internalSettlement, hc.studentManagementFeeAdjustment
 		FROM
 			organization o
 				left join financial_expenditure fe ON o.id_ = fe.organ_id_ AND fe.process_id_ IN (19,22,23,28,51) AND fe.fee_project_ NOT IN (1,2,13,14) AND effective_time_= #{month} AND fe.del_flag_ = 0
-				left join human_cost hc ON hc.organ_id_ = o.id_  AND hc.month_ = #{month}
+				left join (select organ_id_,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'FIXED' THEN hc.amount_ ELSE 0 END) AS fixedHumanCost,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'VARIABLE' THEN hc.amount_ ELSE 0 END) AS variableHumanCost,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'NETWORK_CLASSROOM' THEN hc.amount_ ELSE 0 END) AS network,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'CLOUD_COACHING_COST' THEN hc.amount_ ELSE 0 END) AS cloudCoachingCost,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'INTERNAL_SETTLEMENT' THEN hc.amount_ ELSE 0 END) AS internalSettlement,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'STUDENT_MANAGEMENT_FEE_ADJUSTMENT' THEN hc.amount_ ELSE 0 END) AS studentManagementFeeAdjustment,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'TAX' THEN hc.amount_ ELSE 0 END) AS tax,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'COMMISSION' THEN hc.amount_ ELSE 0 END) AS commission
+						   from human_cost hc where month_ = #{month}
+						   group by organ_id_) hc ON hc.organ_id_ = o.id_
 		WHERE
 			o.tenant_id_ = 1 AND o.del_flag_ = 0
 		GROUP BY
@@ -417,7 +422,9 @@
 			SUM(CASE WHEN human_cost_type_ = 'NETWORK_CLASSROOM' THEN amount_ ELSE 0 END) AS networkClassroomCost,
 			SUM(CASE WHEN human_cost_type_ = 'CLOUD_COACHING_COST' THEN amount_ ELSE 0 END) AS cloudCoachingCost,
 			SUM(CASE WHEN human_cost_type_ = 'INTERNAL_SETTLEMENT' THEN amount_ ELSE 0 END) AS internalSettlement,
-			SUM(CASE WHEN human_cost_type_ = 'STUDENT_MANAGEMENT_FEE_ADJUSTMENT' THEN amount_ ELSE 0 END) AS studentManagementFeeAdjustment
+			SUM(CASE WHEN human_cost_type_ = 'STUDENT_MANAGEMENT_FEE_ADJUSTMENT' THEN amount_ ELSE 0 END) AS studentManagementFeeAdjustment,
+			SUM(CASE WHEN human_cost_type_ = 'COMMISSION' THEN amount_ ELSE 0 END) AS commission,
+			SUM(CASE WHEN human_cost_type_ = 'TAX' THEN amount_ ELSE 0 END) AS tax
 		from human_cost
 		where month_ = #{month} group by organ_id_
 	</select>

+ 8 - 2
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -776,11 +776,11 @@
     <select id="ExportQueryPage2" resultMap="orderAndDetail" parameterType="map">
         select spo.*,spod.id_ detail_id_,spod.type_ detail_type_,spod.price_
                               detail_price_,spod.kit_group_purchase_type_ detail_kit_group_purchase_type_,
-               sci.charge_type_ from (select distinct order_no_ from sell_order where DATE_FORMAT(delivery_time_,'%Y-%m') = #{month}) so
-                                         left join student_payment_order spo ON so.order_no_ = spo.order_no_
+               sci.charge_type_ from student_payment_order spo
                                          LEFT JOIN student_payment_order_detail spod on spo.id_ = spod.payment_order_id_
                                          LEFT JOIN sporadic_charge_info sci on spo.music_group_id_ = sci.id_
         where spo.tenant_id_ = 1 AND spo.status_ = 'SUCCESS'
+        AND spo.order_no_ IN (select distinct order_no_ from sell_order where DATE_FORMAT(delivery_time_,'%Y-%m') = #{month})
     </select>
     <resultMap id="SporadicChargeInfoDtoMap" type="com.ym.mec.biz.dal.dto.SporadicChargeInfoDto">
         <result property="organName" column="organ_name_"/>
@@ -1225,6 +1225,12 @@
             #{activityId}
         </foreach>
     </select>
+    <select id="groupSellOrder" resultType="com.ym.mec.biz.dal.dto.BaseMapDto">
+        SELECT so.organ_id_ 'key',SUM(so.actual_amount_) 'value'
+        FROM sell_order so
+        where so.tenant_id_  = 1 AND DATE_FORMAT(so.delivery_time_,'%Y-%m') = #{month}
+        group by so.organ_id_
+    </select>
     <select id="queryVipQuitOrder" resultType="com.ym.mec.biz.dal.entity.StudentPaymentOrder">
         SELECT spo.* FROM student_payment_order spo
         left join class_group_student_mapper cgsm ON spo.class_group_id_ = cgsm.class_group_id_ and spo.music_group_id_ = cgsm.music_group_id_

+ 7 - 6
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -609,8 +609,10 @@
     </select>
 
     <resultMap id="vipGroupStudentDto" type="com.ym.mec.biz.dal.dto.VipGroupStudentDto">
-        <result column="id_" property="id"/>
+        <result column="user_id_" property="id"/>
         <result column="username_" property="userName"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="subject_id_list_" property="organId"/>
         <result column="phone_" property="phone"/>
         <result column="total_class_times_" property="totalClassTimes"/>
         <result column="current_class_times_" property="currentClassTimes"/>
@@ -622,9 +624,8 @@
 
     <select id="findVipGroupStudents" resultMap="vipGroupStudentDto">
         SELECT
-        su.id_,
-        su.username_,
-        su.phone_,
+        cgsm.user_id_,
+        s.subject_id_list_,
         cg.total_class_times_,
         cg.current_class_times_,
         suaa.course_balance_,
@@ -638,14 +639,14 @@
         FROM
         class_group cg
         LEFT JOIN class_group_student_mapper cgsm ON cg.id_=cgsm.class_group_id_
-        LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
         LEFT JOIN sys_user_cash_account suaa ON cgsm.user_id_=suaa.user_id_
+        left join student s ON s.user_id_ = cgsm.user_id_
         WHERE cg.music_group_id_=#{vipGroupId}
         <if test="groupType != null">
             AND cg.group_type_= #{groupType}
         </if>
         AND cgsm.user_id_ IS NOT NULL
-        ORDER BY su.id_
+        ORDER BY cgsm.user_id_
         <include refid="global.limit"/>
     </select>
 

+ 4 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -303,4 +303,8 @@ public interface TaskRemoteService {
 
     @GetMapping("task/degreeStatusChange")
     void degreeStatusChange() ;
+
+    // 直播课程提醒
+    @GetMapping("task/liveCourseRemind")
+    void liveCourseRemind() ;
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -354,4 +354,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
     public void degreeStatusChange() {
         logger.error("考级状态变更失败");
     }
+
+    @Override
+    public void liveCourseRemind() {
+        logger.error("直播课提醒失败");
+    }
 }

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/LiveCourseRemindTask.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class LiveCourseRemindTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.liveCourseRemind();
+	}
+}

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

@@ -234,7 +234,7 @@ public class ExportController extends BaseController {
                     "收费模式", "收费类型", "乐团主管", "成团人数", "在读人数", "申请时间", "成团时间", "清单状态", "收费标准"}, new String[]{
                     "organName", "id", "name", "cooperationOrganName", "status.msg", "courseViewType.msg", "chargeTypeName",
                     "educationalTeacherName", "groupMemberNum", "payNum"
-                    , "createTime", "updateTime", "hasVerifyMusicalList?'已确认':'未确认'", "chargeStandard"}, rows);
+                    , "createTime", "billStartDate", "hasVerifyMusicalList?'已确认':'未确认'", "chargeStandard"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");

+ 4 - 1
mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultVipGroupSalaryController.java

@@ -7,6 +7,7 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -50,8 +51,10 @@ public class TeacherDefaultVipGroupSalaryController extends BaseController {
 
         PageInfo<TeacherDefaultVipGroupSalary> salaryPageInfo = teacherDefaultVipGroupSalaryService.queryPage(queryInfo);
 
+        List<String> groupTypes = Arrays.stream(groupType.split(",")).collect(Collectors.toList());
+
         List<TeacherDefaultVipGroupSalary> collect = salaryPageInfo.getRows().stream()
-                .filter(x -> x.getGroupType().equals(groupType)).collect(Collectors.toList());
+                .filter(x -> groupTypes.contains(x.getGroupType())).collect(Collectors.toList());
         // 重置过滤后的数据
         salaryPageInfo.setRows(collect);
 

+ 3 - 1
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupCategoryController.java

@@ -18,6 +18,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Optional;
@@ -67,9 +68,10 @@ public class VipGroupCategoryController extends BaseController {
 	@PreAuthorize("@pcs.hasPermissions('vipGroupCategory/findTeacherDefaultSalary')")
 	public Object findTeacherDefaultSalary(Integer userId, @RequestParam(defaultValue = "VIP") String groupType) {
 
+		List<String> groupTypes = Arrays.stream(groupType.split(",")).collect(Collectors.toList());
 		// 返回LIVE, VIP课薪资设置
 		List<VipGroupCategory> teacherSalary = vipGroupCategoryService.findTeacherSalary(userId).stream()
-				.filter(x -> x.getGroupType().equals(groupType)).collect(Collectors.toList());
+				.filter(x -> groupTypes.contains(x.getGroupType())).collect(Collectors.toList());
 		
 		return succeed(teacherSalary);
 	}

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

@@ -343,8 +343,8 @@ headColumns = ["分部", "老师姓名", "声部", "课程时长(分)", "课
 fieldColumns = ["organName", "teacherName", "subjectName", "courseTime", "playTime", "totalPlayTime"]
 
 [oa费用汇总]
-headColumns = ["城市","固定人力成本","房屋","办公","水电物业","变动人力成本","差旅","外部服务","福利","活动","交通","考级","临时场地租赁","通讯","邮递运输","招待费","其他","学员管理费","云教练成本","网络教室成本","业务退费","内部结算"]
-fieldColumns = ["organName", "fixedHumanCost", "house", "office", "mainsProperty","variableHumanCost", "travel","services", "welfare", "activities", "traffic", "certificates", "instrument","communications", "postalTransport", "hospitality", "other", "studentManagementFeeAdjustment","cloudCoachingCost", "network", "refund", "internalSettlement"]
+headColumns = ["城市","固定人力成本","房屋","办公","水电物业","变动人力成本","差旅","外部服务","福利","活动","交通","考级","临时场地租赁","通讯","邮递运输","招待费","其他","学员管理费","云教练成本","网络教室成本","业务退费","内部结算","手续费","税费"]
+fieldColumns = ["organName", "fixedHumanCost", "house", "office", "mainsProperty","variableHumanCost", "travel","services", "welfare", "activities", "traffic", "certificates", "instrument","communications", "postalTransport", "hospitality", "other", "studentManagementFeeAdjustment","cloudCoachingCost", "network", "refund", "internalSettlement", "commission", "tax"]
 
 [oa费用明细]
 headColumns = ["城市","钉钉流程编号","费用归属学校","申请人","费用项目","费用类型","付款金额","付款时间","明细","学员编号","当期金额"]