Joburgess 5 years ago
parent
commit
0b6dad1004
22 changed files with 488 additions and 36 deletions
  1. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java
  3. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupCourseSchduleRecordDto.java
  4. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupManageDetailDto.java
  5. 58 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupSalaryBaseInfo.java
  6. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupSalaryDto.java
  7. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroup.java
  8. 4 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/VipGroupStatusEnum.java
  9. 35 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseScheduleQueryInfo.java
  10. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  11. 13 2
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java
  12. 31 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  13. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java
  14. 64 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  15. 41 7
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  16. 4 3
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  17. 1 1
      mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml
  18. 45 9
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  19. 1 1
      mec-education/src/main/java/com/ym/mec/education/EducationApplication.java
  20. 15 0
      mec-education/src/main/java/com/ym/mec/education/controller/CourseScheduleController.java
  21. 1 1
      mec-education/src/main/resources/application.yml
  22. 43 2
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

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

@@ -47,6 +47,15 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     /**
      * @Author: Joburgess
+     * @Date: 2019/10/11
+     * @params [courseScheduleId]
+     * @return java.util.List<java.lang.String>
+     * @describe 获取课程签到学生姓名
+     */
+    List<String> findStudentNamesByCourseSchedule(Long courseScheduleId);
+
+    /**
+     * @Author: Joburgess
      * @Date: 2019/9/17
      * 根据日期获取老师当日排课信息
      */
@@ -61,6 +70,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @describe 根据
      */
     List<CourseScheduleDto> getCourseSchedulesWithDate(Map<String,Object> params);
+    int countCourseSchedulesWithDate(Map<String,Object> params);
 
     /**
      * @Author: Joburgess

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java

@@ -105,6 +105,24 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
 
 	/**
 	 * @Author: Joburgess
+	 * @Date: 2019/10/11
+	 * @params [vipGroupId]
+	 * @return com.ym.mec.biz.dal.dto.VipGroupSalaryBaseInfo
+	 * @describe 获取vip课财务基本信息
+	 */
+	VipGroupSalaryBaseInfo getVipGroupSalaryInfo(Long vipGroupId);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/10/11
+	 * @params [vipGroupId]
+	 * @return int
+	 * @describe 统计扣费笔数
+	 */
+	int countVipGroupDeductionNum(Long vipGroupId);
+
+	/**
+	 * @Author: Joburgess
 	 * @Date: 2019/10/3
 	 * @params [params]
 	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>

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

@@ -28,6 +28,17 @@ public class VipGroupCourseSchduleRecordDto {
     @ApiModelProperty(value = "结算状态")
     private YesOrNoEnum isSalary;
 
+    @ApiModelProperty(value = "上课人数")
+    private Integer attendanceNum;
+
+    public Integer getAttendanceNum() {
+        return attendanceNum;
+    }
+
+    public void setAttendanceNum(Integer attendanceNum) {
+        this.attendanceNum = attendanceNum;
+    }
+
     public Long getId() {
         return id;
     }

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupManageDetailDto.java

@@ -15,12 +15,56 @@ public class VipGroupManageDetailDto extends VipGroup {
     @ApiModelProperty(value = "最新课次",required = false)
     private Integer latestClassTime;
 
+    @ApiModelProperty(value = "科目名称")
+    private String subjectName;
+
+    @ApiModelProperty(value = "科目编号列表")
+    private String subjectIdList;
+
+    @ApiModelProperty(value = "课程形式")
+    private String categoryName;
+
     @ApiModelProperty(value = "学生数量", required = false)
     private Integer studentNum;
 
     @ApiModelProperty(value = "小课学院",required = false)
     private List<SysUser> students;
 
+    @ApiModelProperty(value = "教学点名称")
+    private String teacherSchoolName;
+
+    public String getTeacherSchoolName() {
+        return teacherSchoolName;
+    }
+
+    public void setTeacherSchoolName(String teacherSchoolName) {
+        this.teacherSchoolName = teacherSchoolName;
+    }
+
+    public String getCategoryName() {
+        return categoryName;
+    }
+
+    public void setCategoryName(String categoryName) {
+        this.categoryName = categoryName;
+    }
+
+    public String getSubjectIdList() {
+        return subjectIdList;
+    }
+
+    public void setSubjectIdList(String subjectIdList) {
+        this.subjectIdList = subjectIdList;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
     public Integer getLatestClassTime() {
         return latestClassTime;
     }

+ 58 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupSalaryBaseInfo.java

@@ -0,0 +1,58 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.codehaus.jackson.annotate.JsonIgnore;
+
+import java.math.BigDecimal;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/10/11
+ */
+public class VipGroupSalaryBaseInfo {
+
+    @ApiModelProperty(value = "预计课酬总额")
+    @JsonIgnore
+    private BigDecimal expectTotalSalary;
+
+    @ApiModelProperty(value = "扣费笔数")
+    private Integer feeDeductionNum;
+
+    @ApiModelProperty(value = "扣费总额")
+    private BigDecimal totalFeeDeduction;
+
+    @ApiModelProperty(value = "课酬总额")
+    private BigDecimal totalSalary;
+
+    public BigDecimal getExpectTotalSalary() {
+        return expectTotalSalary;
+    }
+
+    public void setExpectTotalSalary(BigDecimal expectTotalSalary) {
+        this.expectTotalSalary = expectTotalSalary;
+    }
+
+    public Integer getFeeDeductionNum() {
+        return feeDeductionNum;
+    }
+
+    public void setFeeDeductionNum(Integer feeDeductionNum) {
+        this.feeDeductionNum = feeDeductionNum;
+    }
+
+    public BigDecimal getTotalFeeDeduction() {
+        return totalFeeDeduction;
+    }
+
+    public void setTotalFeeDeduction(BigDecimal totalFeeDeduction) {
+        this.totalFeeDeduction = totalFeeDeduction;
+    }
+
+    public BigDecimal getTotalSalary() {
+        return totalSalary;
+    }
+
+    public void setTotalSalary(BigDecimal totalSalary) {
+        this.totalSalary = totalSalary;
+    }
+}

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupSalaryDto.java

@@ -2,8 +2,10 @@ package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.enums.TeachModeEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -21,6 +23,28 @@ public class VipGroupSalaryDto extends CourseScheduleTeacherSalary {
     @ApiModelProperty(value = "教学形式")
     private TeachModeEnum teachMode;
 
+    @ApiModelProperty(value = "扣除费用")
+    private BigDecimal deductionFee;
+
+    @ApiModelProperty(value = "是否已结算")
+    private YesOrNoEnum isSalary;
+
+    public YesOrNoEnum getIsSalary() {
+        return isSalary;
+    }
+
+    public void setIsSalary(YesOrNoEnum isSalary) {
+        this.isSalary = isSalary;
+    }
+
+    public BigDecimal getDeductionFee() {
+        return deductionFee;
+    }
+
+    public void setDeductionFee(BigDecimal deductionFee) {
+        this.deductionFee = deductionFee;
+    }
+
     @Override
     public Long getCourseScheduleId() {
         return courseScheduleId;

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroup.java

@@ -81,6 +81,9 @@ public class VipGroup {
 	@ApiModelProperty("活动方案编号")
 	private Long vipGroupActivityId;
 
+	@ApiModelProperty(value = "活动方案名称")
+	private String vipGroupActivityName;
+
 	@ApiModelProperty(value = "课程状态")
 	private VipGroupStatusEnum status;
 
@@ -96,6 +99,14 @@ public class VipGroup {
 	@ApiModelProperty(value = "赠送课时类型")
 	private TeachModeEnum giveTeachMode;
 
+	public String getVipGroupActivityName() {
+		return vipGroupActivityName;
+	}
+
+	public void setVipGroupActivityName(String vipGroupActivityName) {
+		this.vipGroupActivityName = vipGroupActivityName;
+	}
+
 	public String getUserName() {
 		return userName;
 	}

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

@@ -8,7 +8,10 @@ import com.ym.mec.common.enums.BaseEnum;
  */
 public enum  VipGroupStatusEnum implements BaseEnum<Integer, VipGroupStatusEnum> {
 
-    NOT_START(0, "未开始"), APPLYING(1, "报名中"), FINISH(2, "报名已结束"), CANCEL(3, "取消");
+    NOT_START(0, "未开始"),
+    APPLYING(1, "报名中"),
+    FINISH(2, "报名已结束"),
+    CANCEL(3, "取消");
 
     private Integer code;
 

+ 35 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseScheduleQueryInfo.java

@@ -0,0 +1,35 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/10/11
+ */
+public class CourseScheduleQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "部门编号")
+    private Long organId;
+
+    @ApiModelProperty(value = "上课日期")
+    private Date date;
+
+    public Long getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Long organId) {
+        this.organId = organId;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+}

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -5,7 +5,9 @@ import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
+import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.Date;
@@ -59,6 +61,13 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
     /**
      * @Author: Joburgess
      * @Date: 2019/9/17
+     * 根据日期获取当日排课信息
+     */
+    PageInfo getCourseSchedulesWithDateByEdu(CourseScheduleQueryInfo queryInfo);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/9/17
      * 根据月份获取乐团在该月有课的日期
      */
     List<Date> getCourseScheduleDateByMonth(Long musicGroupID, Date month);

+ 13 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -8,6 +8,8 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
 
 public interface VipGroupService extends BaseService<Long, VipGroup> {
 
@@ -45,7 +47,7 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * @return com.ym.mec.common.page.PageInfo
      * @describe 获取vip课教学记录
      */
-    PageInfo findVipGroupTeachingRecord(VipGroupTeachingRecordQueryInfo queryInfo);
+    Map<String, Object> findVipGroupTeachingRecord(VipGroupTeachingRecordQueryInfo queryInfo);
 
     /**
      * @Author: Joburgess
@@ -153,6 +155,15 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * @return com.ym.mec.common.page.PageInfo
      * @describe vip财务记录
      */
-    PageInfo findVipGroupSalarys(VipGroupSalaryQueryInfo queryInfo);
+    Map<String, Object> findVipGroupSalarys(VipGroupSalaryQueryInfo queryInfo);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/11
+     * @params [courseScheduleId]
+     * @return java.util.List<java.lang.String>
+     * @describe 获取上课签到学员
+     */
+    List<String> findVipGroupAttendanceStudents(Long courseScheduleId);
 
 }

+ 31 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -14,6 +14,7 @@ import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.enums.ParamEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -145,6 +146,36 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
+	public PageInfo getCourseSchedulesWithDateByEdu(CourseScheduleQueryInfo queryInfo) {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if(null==user){
+			throw new BizException("请登录");
+		}
+		queryInfo.setOrganId(user.getOrganId().longValue());
+		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+
+		if(Objects.isNull(queryInfo.getDate())){
+			queryInfo.setDate(new Date());
+		}
+
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List dataList = null;
+		int count = courseScheduleDao.countCourseSchedulesWithDate(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = courseScheduleDao.getCourseSchedulesWithDate(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Override
 	public List<CourseScheduleDto> getTeacherCourseSchedulesWithDate(Date classDate) {
 		if(Objects.isNull(classDate)){
 			throw new BizException("请选择上课日期!");

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java

@@ -109,6 +109,11 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 	public void createCourseScheduleAndUpdateOrganId(Long demoGroupId,Long coursePlanId){
 		DemoGroup demoGroup=demoGroupDao.get(demoGroupId);
 
+		DemoGroupCoursesPlan demoGroupCoursesPlan1 = demoGroupCoursesPlanDao.get(coursePlanId);
+		if(demoGroupCoursesPlan1.getStatus()==YesOrNoEnum.YES){
+			throw new BizException("该时段课程已被预约");
+		}
+
 		SysUser user = sysUserFeignService.queryUserInfo();
 
 		//创建班级

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

@@ -19,7 +19,6 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
-
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -43,6 +42,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	@Autowired
 	private CourseScheduleService courseScheduleService;
 	@Autowired
+	private CourseScheduleDao courseScheduleDao;
+	@Autowired
 	private VipGroupDefaultClassesUnitPriceDao vipGroupDefaultClassesUnitPriceDao;
 	@Autowired
 	private VipGroupActivityDao vipGroupActivityDao;
@@ -72,6 +73,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
     @Autowired
 	private ImFeignService imFeignService;
+    @Autowired
+	private SubjectDao subjectDao;
 
 	@Override
 	public BaseDAO<Long, VipGroup> getDAO() {
@@ -302,15 +305,17 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	@Override
 	public PageInfo findVipGroups(VipGroupQueryInfo queryInfo) {
 		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<String, Object>();
+		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
 
-		List dataList = null;
+		List<VipGroup> dataList = null;
 		int count = vipGroupDao.countVipGroupByOrgan(params);
 		if (count > 0) {
 			pageInfo.setTotal(count);
 			params.put("offset", pageInfo.getOffset());
 			dataList = vipGroupDao.findAllByOrgan(params);
+			List<Long> vipGroupIds = dataList.stream().map(vipGroup -> vipGroup.getId()).collect(Collectors.toList());
+
 		}
 		if (count == 0) {
 			dataList = new ArrayList<>();
@@ -320,9 +325,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	}
 
 	@Override
-	public PageInfo findVipGroupTeachingRecord(VipGroupTeachingRecordQueryInfo queryInfo) {
+	public Map<String, Object> findVipGroupTeachingRecord(VipGroupTeachingRecordQueryInfo queryInfo) {
+		if(Objects.isNull(queryInfo.getVipGroupId())){
+			throw new BizException("请指定vip课程!");
+		}
 		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<String, Object>();
+		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
 
 		List dataList = null;
@@ -336,7 +344,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			dataList = new ArrayList<>();
 		}
 		pageInfo.setRows(dataList);
-		return pageInfo;
+		TeachingRecordBaseInfo classTimes = vipGroupDao.getClassTimes(queryInfo.getVipGroupId());
+		classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(queryInfo.getVipGroupId()));
+		classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(queryInfo.getVipGroupId()));
+		Map<String,Object> result=new HashMap<>();
+		result.put("pageInfo",pageInfo);
+		result.put("baseInfo",classTimes);
+		return result;
 	}
 
 	@Override
@@ -369,7 +383,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 	@Override
 	public VipGroupManageDetailDto getVipGroupDetail(Long vipGroupId) {
+		if(Objects.isNull(vipGroupId)){
+			throw new BizException("请指定vip课程");
+		}
 		VipGroupManageDetailDto vipGroupBaseInfo = vipGroupDao.getVipGroupBaseInfo(vipGroupId);
+		vipGroupBaseInfo.setSubjectName(StringUtils.join(subjectDao.findBySubIds(vipGroupBaseInfo.getSubjectIdList()),","));
 		return vipGroupBaseInfo;
 	}
 
@@ -598,7 +616,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	}
 
 	@Override
-	public PageInfo findVipGroupSalarys(VipGroupSalaryQueryInfo queryInfo) {
+	public Map<String, Object> findVipGroupSalarys(VipGroupSalaryQueryInfo queryInfo) {
 
     	if(Objects.isNull(queryInfo.getVipGroupId())){
     		throw new BizException("请指定vip课程!");
@@ -608,17 +626,54 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		Map<String, Object> params = new HashMap<String, Object>();
 		MapUtil.populateMap(params, queryInfo);
 
-		List dataList = null;
+		List<VipGroupSalaryDto> dataList = null;
 		int count = courseScheduleTeacherSalaryDao.countVipGroupSalarys(params);
 		if (count > 0) {
 			pageInfo.setTotal(count);
 			params.put("offset", pageInfo.getOffset());
 			dataList = courseScheduleTeacherSalaryDao.findVipGroupSalarys(params);
+			dataList.forEach(vipGroupSalaryDto -> {
+				if(Objects.isNull(vipGroupSalaryDto.getExpectSalary())){
+					vipGroupSalaryDto.setExpectSalary(new BigDecimal(0));
+				}
+				if(Objects.isNull(vipGroupSalaryDto.getActualSalary())){
+					vipGroupSalaryDto.setActualSalary(new BigDecimal(0));
+					vipGroupSalaryDto.setIsSalary(YesOrNoEnum.NO);
+				}else{
+					vipGroupSalaryDto.setIsSalary(YesOrNoEnum.YES);
+				}
+				vipGroupSalaryDto.setDeductionFee(vipGroupSalaryDto.getExpectSalary().subtract(vipGroupSalaryDto.getActualSalary()));
+			});
 		}
 		if (count == 0) {
 			dataList = new ArrayList<>();
 		}
 		pageInfo.setRows(dataList);
-		return pageInfo;
+
+		VipGroupSalaryBaseInfo vipGroupSalaryBaseInfo = vipGroupDao.getVipGroupSalaryInfo(queryInfo.getVipGroupId());
+		if(Objects.isNull(vipGroupSalaryBaseInfo)){
+			vipGroupSalaryBaseInfo=new VipGroupSalaryBaseInfo();
+		}
+		if(Objects.isNull(vipGroupSalaryBaseInfo.getExpectTotalSalary())){
+			vipGroupSalaryBaseInfo.setExpectTotalSalary(new BigDecimal(0));
+		}
+		if(Objects.isNull(vipGroupSalaryBaseInfo.getTotalSalary())){
+			vipGroupSalaryBaseInfo.setTotalSalary(new BigDecimal(0));
+		}
+		vipGroupSalaryBaseInfo.setTotalFeeDeduction(vipGroupSalaryBaseInfo.getExpectTotalSalary().subtract(vipGroupSalaryBaseInfo.getTotalSalary()));
+		vipGroupSalaryBaseInfo.setFeeDeductionNum(vipGroupDao.countVipGroupDeductionNum(queryInfo.getVipGroupId()));
+
+		Map<String,Object> result=new HashMap<>();
+		result.put("pageInfo",pageInfo);
+		result.put("baseInfo",vipGroupSalaryBaseInfo);
+		return result;
+	}
+
+	@Override
+	public List<String> findVipGroupAttendanceStudents(Long courseScheduleId) {
+    	if(Objects.isNull(courseScheduleId)){
+    		throw new BizException("请指定课程");
+		}
+		return courseScheduleDao.findStudentNamesByCourseSchedule(courseScheduleId);
 	}
 }

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

@@ -30,7 +30,6 @@
         <result column="school_name_" property="schoolName"/>
         <result column="attendance_status_" property="attendanceStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="seal_class_id_" property="sealClassId"/>
-        <result column="paran_value_" property="vipAppealDaysRange"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto" id="studentCourseScheduleRecord">
@@ -228,14 +227,40 @@
 
     <select id="getCourseSchedulesWithDate" resultMap="courseScheduleDto">
         SELECT
-            cg.*,
+            cg.id_ seal_class_id_,
+            cs.name_,
             cs.type_,
+            cs.id_,
             cs.class_date_,
-            cs.start_class_time_
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+            cs.status_,
+	        su.username_ teacher_name_,
+	        ta.status_ attendance_status_
         FROM
-            course_schedule cs
-        LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
-        WHERE cs.class_date_=DATE_FORMAT(#{classDate},'%Y%m%d')
+            music_group mg
+            LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
+            LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
+            LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
+	        LEFT JOIN teacher_attendance ta ON cs.id_=ta.class_group_id_ AND ta.teacher_id_=cs.teacher_id_
+        WHERE
+            mg.organ_id_ = #{organId}
+            AND cs.id_ IS NOT NULL
+            AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
+        <include refid="global.limit"/>
+    </select>
+
+    <select id="countCourseSchedulesWithDate" resultType="int">
+        SELECT
+        count(*)
+        FROM
+        music_group mg
+        LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
+        LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
+        WHERE
+        mg.organ_id_ = #{organId}
+        AND cs.id_ IS NOT NULL
+        AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
     </select>
 
     <select id="getStudentCourseSchedulesWithDate" resultMap="courseScheduleDto">
@@ -271,7 +296,7 @@
             CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
             cs.status_,
 	        s.name_ school_name_,
-	        ta.status_ attendance_status_
+	        ta.sign_in_status_ attendance_status_
         FROM
             course_schedule cs
             LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
@@ -542,4 +567,13 @@
         WHERE
             cs.id_=#{courseScheduleId}
     </select>
+
+    <select id="findStudentNamesByCourseSchedule" resultType="string">
+        SELECT
+            su.username_
+        FROM
+            student_attendance sa
+            LEFT JOIN sys_user su ON sa.user_id_=su.id_
+            WHERE sa.course_schedule_id_=#{courseScheduleId}
+    </select>
 </mapper>

+ 4 - 3
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -9,7 +9,7 @@
 	<resultMap type="com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary" id="CourseScheduleTeacherSalary">
 		<result column="id_" property="id" />
 		<result column="course_schedule_id_" property="courseScheduleId" />
-		<result column="teacher_role_" property="teacherRole" />
+		<result column="teacher_role_" property="teacherRole" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 		<result column="user_id_" property="userId" />
 		<result column="expect_salary_" property="expectSalary" />
 		<result column="create_time_" property="createTime" />
@@ -105,15 +105,16 @@ create_time_ = #{createTime},
 
 	<sql id="vipGroupSalaryQueryCondition">
 		<where>
-			vg.id=#{vipGroupId} AND FIND_IN_SET(#{organId},vg.organ_id_list_)
+			vg.id_=#{vipGroupId} AND FIND_IN_SET(#{organId},vg.organ_id_list_)
 			<if test="startTime!=null and endTime!=null">
-				AND (cs.class_date BETWEEN #{startTime} AND #{endTime})
+				AND (cs.class_date_ BETWEEN #{startTime} AND #{endTime})
 			</if>
 		</where>
 	</sql>
 
 	<select id="findVipGroupSalarys" resultMap="VipGroupSalaryDto">
 		SELECT
+
 			cs.id_ course_schedule_id_,
 			CONCAT(cs.class_date_," ",cs.start_class_time_) class_date_,
 			cs.teach_mode_,

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

@@ -159,7 +159,7 @@ create_time_ = #{createTime},
 				AND dgcp.start_time_=#{startTime}
 			</if>
 			<if test="startTime!=null and endTime!=null">
-				AND dgcp.start_time_&gt;=#{startTime} AND dgcp.start_time_ &lt;= #{endTime}
+				AND (CONCAT(dgcp.course_date_,' ',dgcp.start_time_) BETWEEN #{startTime} AND #{endTime})
 			</if>
 		</where>
 	</sql>

+ 45 - 9
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -22,6 +22,7 @@
         <result column="audit_status_" property="auditStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="organ_id_list_" property="organIdList"/>
         <result column="vip_group_activity_id_" property="vipGroupActivityId"/>
+        <result column="vip_group_activity_name_" property="vipGroupActivityName"/>
         <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="online_classes_unit_price_" property="onlineClassesUnitPrice"/>
         <result column="offline_classes_unit_price_" property="offlineClassesUnitPrice"/>
@@ -38,11 +39,14 @@
 
     <resultMap id="vipGroupManageDetailDto" type="com.ym.mec.biz.dal.dto.VipGroupManageDetailDto" extends="VipGroup">
         <result property="studentNum" column="student_num_"/>
+        <result property="subjectIdList" column="subject_id_list_"/>
         <result property="latestClassTime" column="current_class_times_"/>
-        <collection property="students" ofType="com.ym.mec.auth.api.entity.SysUser" column="user_id_">
-            <result property="id" column="user_id_"/>
-            <result property="username" column="username_"/>
-        </collection>
+        <result property="categoryName" column="category_name_"/>
+        <result column="teacher_school_name_" property="teacherSchoolName"/>
+        <!--<collection property="students" ofType="com.ym.mec.auth.api.entity.SysUser" column="student_id_">-->
+            <!--<result property="id" column="student_id_"/>-->
+            <!--<result property="username" column="username_"/>-->
+        <!--</collection>-->
     </resultMap>
 
     <resultMap id="studentVipGroupDetailDto" type="com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto" extends="studentVipGroup">
@@ -103,6 +107,7 @@
     <select id="findAllByOrgan" resultMap="VipGroup">
 		SELECT
             vg.*,
+            vga.name_ vip_group_activity_name_,
             su.username_,
             cg.student_num_,
             cg.total_class_times_,
@@ -112,6 +117,7 @@
             LEFT JOIN sys_user su ON vg.user_id_=su.id_
             LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
             LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
+            LEFT JOIN vip_group_activity vga ON vg.vip_group_activity_id_=vga.id_
         <include refid="vipGroupQueryCondition"/>
         ORDER BY vg.id_
         <include refid="global.limit"/>
@@ -273,17 +279,23 @@
     <select id="getVipGroupBaseInfo" resultMap="vipGroupManageDetailDto">
         SELECT
             vg.*,
+            vga.name_ vip_group_activity_name_,
+            su.username_,
             cg.student_num_,
+            cg.subject_id_list_,
+            cg.total_class_times_,
             cg.current_class_times_,
-            su.*
+            vgc.name_ category_name_,
+            s.name_ teacher_school_name_
         FROM
             vip_group vg
+            LEFT JOIN sys_user su ON vg.user_id_=su.id_
             LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
             LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
-            LEFT JOIN class_group_student_mapper cgsm ON vgcgm.class_group_id_=cgsm.class_group_id_
-            LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
-        WHERE vg.id_=1
-        ORDER BY vg.id_ DESC
+            LEFT JOIN vip_group_activity vga ON vg.vip_group_activity_id_=vga.id_
+            LEFT JOIN vip_group_category vgc ON vg.vip_group_category_id_=vgc.id_
+            LEFT JOIN school s ON vg.teacher_school_id_=s.id_
+        WHERE vg.id_=#{vipGroupId}
     </select>
 
     <sql id="vipGroupAttendanceQueryCondition">
@@ -396,6 +408,8 @@
         <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="give_teach_mode_" property="giveTeachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="is_salary_" property="isSalary" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="student_num_" property="attendanceNum"/>
     </resultMap>
 
     <sql id="teachingRecordQueryCondition">
@@ -419,6 +433,7 @@
             CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
             cs.status_,
             cs.teach_mode_,
+            cs.student_num_,
             csts.actual_salary_ IS NOT NULL is_salary_
         FROM
             vip_group_class_group_mapper vgcgm
@@ -465,4 +480,25 @@
         WHERE vgcgm.vip_group_id_=#{vipGroupId} AND csc.course_schedule_id_ IS NOT NULL
 
     </select>
+    <select id="getVipGroupSalaryInfo" resultType="com.ym.mec.biz.dal.dto.VipGroupSalaryBaseInfo">
+        SELECT
+             SUM(csts.expect_salary_) expectTotalSalary,
+             SUM(csts.actual_salary_) totalSalary
+        FROM
+            vip_group vg
+            LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
+            LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
+            LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
+        WHERE vg.id_=#{vipGroupId} AND cs.id_!=NULL AND csts.settlement_time_!=NULL
+    </select>
+    <select id="countVipGroupDeductionNum" resultType="int">
+        SELECT
+             COUNT(csts.id_)
+        FROM
+            vip_group vg
+            LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_=vgcgm.vip_group_id_
+            LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
+            LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
+        WHERE vg.id_=#{vipGroupId} AND cs.id_!=NULL AND csts.settlement_time_!=NULL AND csts.actual_salary_&lt;csts.expect_salary_
+    </select>
 </mapper>

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/EducationApplication.java

@@ -13,7 +13,7 @@ import org.springframework.web.client.RestTemplate;
 
 import com.spring4all.swagger.EnableSwagger2Doc;
 
-@MapperScan({"com.ym.mec.education.mapper", "com.ym.mec.biz.dal.dao"})
+@MapperScan({"com.ym.mec.education.mapper", "com.ym.mec.biz.dal.dao","com.ym.mec.biz.config.mybatis"})
 @SpringBootApplication
 @EnableDiscoveryClient
 @EnableFeignClients("com.ym.mec")

+ 15 - 0
mec-education/src/main/java/com/ym/mec/education/controller/CourseScheduleController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.education.controller;
 
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
+import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.education.base.BaseResponse;
 import com.ym.mec.education.base.PageResponse;
@@ -10,11 +11,13 @@ import com.ym.mec.education.resp.CourseScheduleResp;
 import com.ym.mec.education.service.ICourseScheduleService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Date;
 import java.util.Objects;
 
 /**
@@ -59,6 +62,18 @@ public class CourseScheduleController {
         return courseScheduleService.courseInfo(courseScheduleReq);
     }
 
+    @ApiOperation(value = "根据月份获取乐团在该月有课的日期")
+    @GetMapping("/getCourseScheduleDateByMonth")
+    public Object getCourseScheduleDateByMonth(@ApiParam(value = "月份", required = true) @RequestParam Date month) {
+        return BaseResponse.success(scheduleService.getCourseScheduleDates(month));
+    }
+
+    @ApiOperation(value = "根据日期获取当日排课")
+    @GetMapping("/getCourseSchedulesWithDate")
+    public Object getCourseSchedulesWithDate(CourseScheduleQueryInfo queryInfo) {
+        return BaseResponse.success(scheduleService.getCourseSchedulesWithDateByEdu(queryInfo));
+    }
+
     @ApiOperation(value = "课时调整")
     @PostMapping(value = "/classStartDateAdjust")
     public Object classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto){

+ 1 - 1
mec-education/src/main/resources/application.yml

@@ -51,7 +51,7 @@ spring:
       min-idle: 0
 
 mybatis-plus:
-  mapper-locations: classpath*:mapper/*.xml
+  mapper-locations: classpath*:mapper/*.xml,classpath*:config/mybatis/*.xml
   typeAliasesPackage : com.ym.mec.education.entity
   configuration:
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

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

@@ -1,21 +1,26 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
 import com.ym.mec.biz.dal.entity.StudentApplyRefunds;
 import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
+import com.ym.mec.biz.dal.page.VipGroupSalaryQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupTeachingRecordQueryInfo;
+import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * @Author Joburgess
@@ -28,6 +33,8 @@ public class VipGroupManageController extends BaseController {
 
     @Autowired
     private VipGroupService vipGroupService;
+    @Autowired
+    private CourseScheduleService scheduleService;
 
     @ApiOperation(value = "vip课申请")
     @PostMapping("/vipGroupApply")
@@ -49,8 +56,8 @@ public class VipGroupManageController extends BaseController {
     }
 
     @ApiOperation(value = "vip课详情")
-    @GetMapping("/getVipGroupDetail/{vipGroupId}")
-    public Object getVipGroupDetail(@PathVariable("vipGroupId") Long vipGroupId){
+    @GetMapping("/getVipGroupDetail")
+    public Object getVipGroupDetail(Long vipGroupId){
         return succeed(vipGroupService.getVipGroupDetail(vipGroupId));
     }
 
@@ -95,4 +102,38 @@ public class VipGroupManageController extends BaseController {
         return succeed(results);
     }
 
+    @ApiOperation(value = "停止vip课")
+    @PostMapping("/stopVipGroup")
+    public Object stopVipGroup(Long vipGroupId){
+        if(Objects.isNull(vipGroupId)){
+            return failed(HttpStatus.FORBIDDEN,"请指定vip课");
+        }
+
+        //停止vip课逻辑
+
+        return succeed();
+    }
+
+    @ApiOperation(value = "获取vip课财务信息")
+    @GetMapping("/findVipGroupSalarys")
+    public Object findVipGroupSalarys(VipGroupSalaryQueryInfo queryInfo){
+        return succeed(vipGroupService.findVipGroupSalarys(queryInfo));
+    }
+
+    @ApiOperation(value = "获取当前课程上课学员")
+    @GetMapping("/findVipGroupAttendanceStudents")
+    public Object findVipGroupStudents(Long courseScheduleId){
+        return succeed(vipGroupService.findVipGroupAttendanceStudents(courseScheduleId));
+    }
+
+    @ApiOperation(value = "课时调整")
+    @PostMapping(value = "/classStartDateAdjust")
+    public Object classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto){
+        if(Objects.isNull(classDateAdjustDto.getId())){
+            return failed(HttpStatus.FORBIDDEN, "请指定课程!");
+        }
+        scheduleService.classStartDateAdjust(classDateAdjustDto);
+        return succeed();
+    }
+
 }