Browse Source

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

zouxuan 4 years ago
parent
commit
3989830c7f
30 changed files with 1037 additions and 116 deletions
  1. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java
  2. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CooperationOrganDao.java
  3. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  4. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentInstrumentDao.java
  5. 169 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/BatchCourseAdjustDto.java
  6. 84 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentInstrumentExportDto.java
  7. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderExportDto.java
  8. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrderDetail.java
  9. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CooperationOrganService.java
  10. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  11. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java
  12. 15 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  13. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CooperationOrganServiceImpl.java
  14. 292 22
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  15. 34 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  16. 48 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java
  17. 14 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentInstrumentServiceImpl.java
  18. 15 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  19. 72 36
      mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml
  20. 1 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  21. 11 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  22. 3 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  23. 40 0
      mec-biz/src/main/resources/config/mybatis/StudentInstrumentMapper.xml
  24. 8 6
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderDetailMapper.xml
  25. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  26. 3 1
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  27. 17 8
      mec-web/src/main/java/com/ym/mec/web/controller/CooperationOrganController.java
  28. 12 0
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java
  29. 15 0
      mec-web/src/main/java/com/ym/mec/web/controller/PracticeGroupManageController.java
  30. 76 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentInstrumentController.java

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

@@ -45,7 +45,7 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
      * @author Joburgess
      * @author Joburgess
      * @date 2019/12/18
      * @date 2019/12/18
      */
      */
-    ClassGroupStudentMapper findClassGroupStudent(@Param("classGroupId") int classGroupId, @Param("userId") Integer userId);
+    ClassGroupStudentMapper findClassGroupStudent(@Param("classGroupId") Integer classGroupId, @Param("userId") Integer userId);
 
 
     /**
     /**
      * 根据乐团编号删除指定学生
      * 根据乐团编号删除指定学生

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CooperationOrganDao.java

@@ -5,6 +5,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.Set;
 
 
 import com.ym.mec.biz.dal.dto.OrganFullJobResourceNumDto;
 import com.ym.mec.biz.dal.dto.OrganFullJobResourceNumDto;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
@@ -34,7 +35,23 @@ public interface CooperationOrganDao extends BaseDAO<Integer, CooperationOrgan>
 
 
     /**
     /**
      * 获取全部使用中合作单位
      * 获取全部使用中合作单位
+     *
      * @return
      * @return
      */
      */
     List<CooperationOrgan> getAllCooperationOrgan();
     List<CooperationOrgan> getAllCooperationOrgan();
+
+    /**
+     * 获取合作单位乐团的学校缴费
+     *
+     * @param cooperationOrganId
+     * @return
+     */
+    List<MusicGroupPaymentCalender> getCooperationOrganCalender4School(@Param("cooperationOrganId") Integer cooperationOrganId);
+
+    /**
+     * 根据合作单位ids获取合作单位
+     * @param ids
+     * @return
+     */
+    List<CooperationOrgan> getCooperationOrganByIds(@Param("ids") List<Integer> ids);
 }
 }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -5,6 +5,7 @@ import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.entity.TeacherSalaryModifyLog;
 import com.ym.mec.biz.dal.entity.TeacherSalaryModifyLog;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
 import com.ym.mec.biz.dal.enums.TeacherSalaryConfirmStatus;
 import com.ym.mec.biz.dal.enums.TeacherSalaryConfirmStatus;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
@@ -36,6 +37,17 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	int batchDeleteByCourseScheduleIds(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 	int batchDeleteByCourseScheduleIds(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 
 
 	/**
 	/**
+	 * @describe 根据课程和教师类型删除教师课酬记录
+	 * @author Joburgess
+	 * @date 2021/4/9 0009
+	 * @param courseIds:
+	 * @param teachType:
+	 * @return int
+	 */
+	int deleteWithCourseAndTeachRole(@Param("courseIds") List<Long> courseIds,
+									 @Param("teachType") TeachTypeEnum teachType);
+
+	/**
 	 * @return java.util.List<com.ym.mec.biz.dal.dto.VipGroupSalaryDto>
 	 * @return java.util.List<com.ym.mec.biz.dal.dto.VipGroupSalaryDto>
 	 * @Author: Joburgess
 	 * @Author: Joburgess
 	 * @Date: 2019/10/11
 	 * @Date: 2019/10/11

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentInstrumentDao.java

@@ -1,6 +1,8 @@
 package com.ym.mec.biz.dal.dao;
 package com.ym.mec.biz.dal.dao;
 
 
+import com.ym.mec.biz.dal.dto.StudentInstrumentExportDto;
 import com.ym.mec.biz.dal.entity.StudentInstrument;
 import com.ym.mec.biz.dal.entity.StudentInstrument;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
@@ -55,4 +57,21 @@ public interface StudentInstrumentDao extends BaseDAO<Long, StudentInstrument> {
      * @return
      * @return
      */
      */
     List<StudentInstrument> getOldStudentInstrument(@Param("startTime") Date startTime, @Param("goodsIds") List<Integer> goodsIds);
     List<StudentInstrument> getOldStudentInstrument(@Param("startTime") Date startTime, @Param("goodsIds") List<Integer> goodsIds);
+
+    /**
+     * 获取乐保订单列表
+     *
+     * @param startTime
+     * @param endTime
+     * @param organId
+     * @return
+     */
+    List<StudentInstrumentExportDto> getInstruments(@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("organId") String organId);
+
+    /**
+     * 获取学生的乐团信息
+     * @param userId
+     * @return
+     */
+    StudentRegistration findStudentMusicGroup(@Param("userId") Integer userId);
 }
 }

+ 169 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/BatchCourseAdjustDto.java

@@ -0,0 +1,169 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
+import io.swagger.annotations.ApiModelProperty;
+import org.codehaus.jackson.map.ObjectMapper;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @Author Joburgess
+ * @Date 2021/4/9 0009
+ */
+public class BatchCourseAdjustDto {
+
+    @ApiModelProperty(value = "需要调整的课程编号")
+    private List<Long> courseScheduleIds;
+
+    @ApiModelProperty(value = "是否修改主教")
+    private Boolean changeMainTeacher = false;
+
+    @ApiModelProperty(value = "是否修改助教")
+    private Boolean changeTeachingTeacher = false;
+
+    @ApiModelProperty(value = "是否跳过节假日 true-跳过 false-不跳过", required = true)
+    private Boolean isHoliday = false;
+
+    @ApiModelProperty(value = "开始日期", required = true)
+    private String startDate;
+
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "课程暂停时间")
+    private String pauseDate;
+
+    @ApiModelProperty(value = "课程恢复时间")
+    private String recoveryDate;
+
+    @ApiModelProperty(value = "老师设置", required = true)
+    private List<ClassGroupTeacherMapper> classGroupTeacherMapperList;
+
+    @ApiModelProperty(value = "教学形式")
+    private TeachModeEnum teachMode;
+
+    @ApiModelProperty(value = "是否允许0课酬")
+    private Boolean allowZeroSalary = false;
+
+    @ApiModelProperty(value = "教学点")
+    private Integer schoolId;
+
+    @ApiModelProperty(value = "确认生成课程")
+    private Boolean confirmGenerate = false;
+
+    private Integer operatorId;
+
+    public Integer getOperatorId() {
+        return operatorId;
+    }
+
+    public void setOperatorId(Integer operatorId) {
+        this.operatorId = operatorId;
+    }
+
+    public String getPauseDate() {
+        return pauseDate;
+    }
+
+    public void setPauseDate(String pauseDate) {
+        this.pauseDate = pauseDate;
+    }
+
+    public String getRecoveryDate() {
+        return recoveryDate;
+    }
+
+    public void setRecoveryDate(String recoveryDate) {
+        this.recoveryDate = recoveryDate;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public TeachModeEnum getTeachMode() {
+        return teachMode;
+    }
+
+    public void setTeachMode(TeachModeEnum teachMode) {
+        this.teachMode = teachMode;
+    }
+
+    public List<ClassGroupTeacherMapper> getClassGroupTeacherMapperList() {
+        return classGroupTeacherMapperList;
+    }
+
+    public void setClassGroupTeacherMapperList(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) {
+        this.classGroupTeacherMapperList = classGroupTeacherMapperList;
+    }
+
+    public Boolean getConfirmGenerate() {
+        return confirmGenerate;
+    }
+
+    public void setConfirmGenerate(Boolean confirmGenerate) {
+        this.confirmGenerate = confirmGenerate;
+    }
+
+    public Boolean getChangeMainTeacher() {
+        return changeMainTeacher;
+    }
+
+    public void setChangeMainTeacher(Boolean changeMainTeacher) {
+        this.changeMainTeacher = changeMainTeacher;
+    }
+
+    public List<Long> getCourseScheduleIds() {
+        return courseScheduleIds;
+    }
+
+    public void setCourseScheduleIds(List<Long> courseScheduleIds) {
+        this.courseScheduleIds = courseScheduleIds;
+    }
+
+    public Boolean getChangeTeachingTeacher() {
+        return changeTeachingTeacher;
+    }
+
+    public void setChangeTeachingTeacher(Boolean changeTeachingTeacher) {
+        this.changeTeachingTeacher = changeTeachingTeacher;
+    }
+
+    public Boolean getHoliday() {
+        return isHoliday;
+    }
+
+    public void setHoliday(Boolean holiday) {
+        isHoliday = holiday;
+    }
+
+    public String getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(String startDate) {
+        this.startDate = startDate;
+    }
+
+    public Boolean getAllowZeroSalary() {
+        return allowZeroSalary;
+    }
+
+    public void setAllowZeroSalary(Boolean allowZeroSalary) {
+        this.allowZeroSalary = allowZeroSalary;
+    }
+
+    public Integer getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Integer schoolId) {
+        this.schoolId = schoolId;
+    }
+}

+ 84 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentInstrumentExportDto.java

@@ -0,0 +1,84 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.StudentInstrument;
+import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+public class StudentInstrumentExportDto extends StudentInstrument {
+    @ApiModelProperty(value = "订单编号")
+    private String orderNo;
+
+    @ApiModelProperty(value = "订单流水号")
+    private String transNo;
+
+    @ApiModelProperty(value = "乐团名称")
+    private String musicGroupName;
+
+    @ApiModelProperty(value = "学员状态")
+    private StudentMusicGroupStatusEnum studentStatus;
+
+    @ApiModelProperty(value = "维修技师id")
+    private Integer repairerId;
+
+    @ApiModelProperty(value = "维修技师")
+    private String repairerName;
+
+    @ApiModelProperty(value = "乐保类型")
+    private String type = "新增";
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public String getTransNo() {
+        return transNo;
+    }
+
+    public void setTransNo(String transNo) {
+        this.transNo = transNo;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public StudentMusicGroupStatusEnum getStudentStatus() {
+        return studentStatus;
+    }
+
+    public void setStudentStatus(StudentMusicGroupStatusEnum studentStatus) {
+        this.studentStatus = studentStatus;
+    }
+
+    public Integer getRepairerId() {
+        return repairerId;
+    }
+
+    public void setRepairerId(Integer repairerId) {
+        this.repairerId = repairerId;
+    }
+
+    public String getRepairerName() {
+        return repairerName;
+    }
+
+    public void setRepairerName(String repairerName) {
+        this.repairerName = repairerName;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+}

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

@@ -58,6 +58,8 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     private String schoolName;
     private String schoolName;
     private String subjectName;
     private String subjectName;
     private String cooperationOrganName;
     private String cooperationOrganName;
+    //乐团主管
+    private String eduTeacher;
 
 
     private Integer chargeType;
     private Integer chargeType;
 
 
@@ -329,4 +331,12 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     public void setMaintenanceProductFee(BigDecimal maintenanceProductFee) {
     public void setMaintenanceProductFee(BigDecimal maintenanceProductFee) {
         this.maintenanceProductFee = maintenanceProductFee;
         this.maintenanceProductFee = maintenanceProductFee;
     }
     }
+
+    public String getEduTeacher() {
+        return eduTeacher;
+    }
+
+    public void setEduTeacher(String eduTeacher) {
+        this.eduTeacher = eduTeacher;
+    }
 }
 }

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

@@ -54,6 +54,9 @@ public class StudentPaymentOrderDetail {
 	//学生乐器id
 	//学生乐器id
 	private Long studentInstrumentId;
 	private Long studentInstrumentId;
 
 
+	//乐保是否是续费 0-否 1-是
+	private Integer isRenew;
+
 	@ApiModelProperty(value = "子商品列表",required = false)
 	@ApiModelProperty(value = "子商品列表",required = false)
 	private List<Goods> childGoodsList;
 	private List<Goods> childGoodsList;
 
 
@@ -165,4 +168,12 @@ public class StudentPaymentOrderDetail {
 	public void setStudentInstrumentId(Long studentInstrumentId) {
 	public void setStudentInstrumentId(Long studentInstrumentId) {
 		this.studentInstrumentId = studentInstrumentId;
 		this.studentInstrumentId = studentInstrumentId;
 	}
 	}
+
+	public Integer getIsRenew() {
+		return isRenew;
+	}
+
+	public void setIsRenew(Integer isRenew) {
+		this.isRenew = isRenew;
+	}
 }
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CooperationOrganService.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service;
 package com.ym.mec.biz.service;
 
 
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 import com.ym.mec.common.service.BaseService;
 import com.ym.mec.common.service.BaseService;
 
 
 import java.util.List;
 import java.util.List;
@@ -9,8 +10,18 @@ public interface CooperationOrganService extends BaseService<Integer, Cooperatio
 
 
     /**
     /**
      * 根据机构编号获取合作单位(教学点)列表
      * 根据机构编号获取合作单位(教学点)列表
+     *
      * @param organId
      * @param organId
      * @return
      * @return
      */
      */
     List<CooperationOrgan> queryByOrganId(String organId);
     List<CooperationOrgan> queryByOrganId(String organId);
+
+
+    /**
+     * 获取合作单位乐团的学校缴费
+     *
+     * @param id
+     * @return
+     */
+    List<MusicGroupPaymentCalender> getCooperationOrganCalender4School(Integer id);
 }
 }

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

@@ -238,6 +238,15 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	void vipCourseAdjust(VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo);
 	void vipCourseAdjust(VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo);
 
 
 	/**
 	/**
+	 * @describe 课程批量调整
+	 * @author Joburgess
+	 * @date 2021/4/9 0009
+	 * @param batchCourseAdjustInfo:
+	 * @return void
+	 */
+	HttpResponseResult batchCourseAdjust(BatchCourseAdjustDto batchCourseAdjustInfo);
+
+	/**
 	 * @describe 课程顺延
 	 * @describe 课程顺延
 	 * @author Joburgess
 	 * @author Joburgess
 	 * @date 2020/1/2
 	 * @date 2020/1/2

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java

@@ -169,6 +169,16 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
     List<CourseScheduleTeacherSalary> createTeacherCourseSalary(CourseSchedule courseSchedule, List<Integer> teacherIds);
     List<CourseScheduleTeacherSalary> createTeacherCourseSalary(CourseSchedule courseSchedule, List<Integer> teacherIds);
 
 
     /**
     /**
+     * @describe 计算课程课酬
+     * @author Joburgess
+     * @date 2021/4/12 0012
+     * @param courseSchedule:
+     * @param courseScheduleTeacherSalaries:
+     * @return void
+     */
+    void updateSingleCourseTeacherSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalaries);
+
+    /**
      * @describe 计算乐团课教师课酬
      * @describe 计算乐团课教师课酬
      * @author Joburgess
      * @author Joburgess
      * @date 2020/12/16 0016
      * @date 2020/12/16 0016

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

@@ -1226,14 +1226,21 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             classGroupDao.addStudentNum(classGroup);
             classGroupDao.addStudentNum(classGroup);
 
 
             // 2、插入关联关系
             // 2、插入关联关系
-            ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
-            classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
-            classGroupStudentMapper.setClassGroupId(classGroup.getId());
-            classGroupStudentMapper.setUserId(studentId);
-            classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-            classGroupStudentMapper.setGroupType(classGroup.getGroupType());
-            classGroupStudentMapper.setCreateTime(date);
-            classGroupStudentMapperDao.insert(classGroupStudentMapper);
+            ClassGroupStudentMapper classGroupStudent = classGroupStudentMapperDao.findClassGroupStudent(classGroup.getId(), studentId);
+            if(Objects.nonNull(classGroupStudent)){
+                classGroupStudent.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+                classGroupStudent.setUpdateTime(date);
+                classGroupStudentMapperDao.update(classGroupStudent);
+            }else {
+                ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
+                classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
+                classGroupStudentMapper.setClassGroupId(classGroup.getId());
+                classGroupStudentMapper.setUserId(studentId);
+                classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+                classGroupStudentMapper.setGroupType(classGroup.getGroupType());
+                classGroupStudentMapper.setCreateTime(date);
+                classGroupStudentMapperDao.insert(classGroupStudentMapper);
+            }
 
 
             // 3、学生加入级未开始课程
             // 3、学生加入级未开始课程
             List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
             List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CooperationOrganServiceImpl.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service.impl;
 
 
 import java.util.List;
 import java.util.List;
 
 
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
@@ -26,4 +27,9 @@ public class CooperationOrganServiceImpl extends BaseServiceImpl<Integer, Cooper
 	public List<CooperationOrgan> queryByOrganId(String organId) {
 	public List<CooperationOrgan> queryByOrganId(String organId) {
 		return cooperationOrganDao.queryByOrganId(organId);
 		return cooperationOrganDao.queryByOrganId(organId);
 	}
 	}
+
+    @Override
+    public List<MusicGroupPaymentCalender> getCooperationOrganCalender4School(Integer id) {
+		return cooperationOrganDao.getCooperationOrganCalender4School(id);
+    }
 }
 }

+ 292 - 22
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -7,24 +7,12 @@ import static com.ym.mec.biz.dal.enums.PracticeGroupType.*;
 
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.TreeSet;
+import java.time.LocalTime;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import java.util.stream.Stream;
 
 
@@ -36,6 +24,7 @@ import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.HttpResponseResult;
 import org.apache.commons.collections.ListUtils;
 import org.apache.commons.collections.ListUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.codehaus.jackson.map.util.BeanUtil;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
@@ -269,16 +258,24 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 
 		List<CourseSchedule> courseScheduleList = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds);
 		List<CourseSchedule> courseScheduleList = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds);
 
 
+		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
+		Set<Long> settlementCourseIds = new HashSet<>();
+		if(!CollectionUtils.isEmpty(courseScheduleTeacherSalaries)){
+			settlementCourseIds = courseScheduleTeacherSalaries.stream().filter(c->Objects.nonNull(c.getSettlementTime())).map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toSet());
+		}
+
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 		Date date = new Date();
 		Date date = new Date();
 		if (courseScheduleList != null) {
 		if (courseScheduleList != null) {
 			for (CourseSchedule cs : courseScheduleList) {
 			for (CourseSchedule cs : courseScheduleList) {
-				if (cs.getStatus() != CourseStatusEnum.NOT_START) {
-					throw new BizException("删除失败,未开始的课程才能删除");
+				if(settlementCourseIds.contains(cs.getId())){
+					throw new BizException("删除失败,已结算的课程不能删除");
+				}
+				if (CourseStatusEnum.UNDERWAY.equals(cs.getStatus())) {
+					throw new BizException("删除失败,进行中的课程不能删除");
 				}
 				}
-				String endDateStr = DateUtil.format(cs.getClassDate(), "yyyy-MM-dd") + " " + DateUtil.format(cs.getStartClassTime(), "HH:mm:ss");
-				if (DateUtil.stringToDate(endDateStr, sdf).before(date)) {
-					throw new BizException("删除失败,未开始的课程才能删除");
+				if (Objects.nonNull(cs.getIsLock())&&cs.getIsLock()==1) {
+					throw new BizException("删除失败,被锁定的课程不能删除");
 				}
 				}
 				if(Objects.nonNull(cs.getNewCourseId())){
 				if(Objects.nonNull(cs.getNewCourseId())){
 					throw new BizException("删除失败,被合并课程不能删除");
 					throw new BizException("删除失败,被合并课程不能删除");
@@ -2822,7 +2819,268 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		saveModifyLog(modifyLogs,courseScheduleIds);
 		saveModifyLog(modifyLogs,courseScheduleIds);
     }
     }
 
 
-    @Override
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public HttpResponseResult batchCourseAdjust(BatchCourseAdjustDto courseAdjustInfo) {
+		if(CollectionUtils.isEmpty(courseAdjustInfo.getCourseScheduleIds())){
+			return BaseController.failed("请指定需要调整的课程");
+		}
+
+		//未更新课程列表
+		List<CourseSchedule> oldCourses = courseScheduleDao.findByCourseScheduleIds(courseAdjustInfo.getCourseScheduleIds());
+
+		if(CollectionUtils.isEmpty(oldCourses)){
+			return BaseController.succeed();
+		}
+
+		Set<String> musicGroupIds = oldCourses.stream().filter(c -> MUSIC.equals(c.getGroupType())).map(CourseSchedule::getMusicGroupId).collect(Collectors.toSet());
+		if(!CollectionUtils.isEmpty(musicGroupIds)){
+			List<MusicGroup> musicGroups = musicGroupDao.getMusicGroupByIds(new ArrayList<>(musicGroupIds));
+			if(CollectionUtils.isEmpty(musicGroups)){
+				throw new BizException("调整失败:乐团信息异常");
+			}
+			long errMusicGroupNum = musicGroups.stream().filter(m -> !MusicGroupStatusEnum.PROGRESS.equals(m.getStatus())).count();
+			if(errMusicGroupNum>0){
+				throw new BizException("调整失败:调整的课程所在乐团处于非进行中");
+			}
+		}
+
+		Date now = new Date();
+
+		//获取修改日志
+		List<CourseScheduleModifyLog> modifyLogs = getModifyLogs(courseAdjustInfo.getCourseScheduleIds(),oldCourses,courseAdjustInfo.getOperatorId(),now);
+
+		List<CourseScheduleTeacherSalary> oldCourseScheduleTeacherSalaryList = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseAdjustInfo.getCourseScheduleIds());
+		Map<Long, List<CourseScheduleTeacherSalary>> courseSalaryListMap = new HashMap<>();
+		if(!CollectionUtils.isEmpty(oldCourseScheduleTeacherSalaryList)){
+			courseSalaryListMap = oldCourseScheduleTeacherSalaryList.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
+		}
+
+		//需要变更课酬的教师类型
+		Set<TeachTypeEnum> changeSalaryTeachTypes = new HashSet<>();
+
+		if(courseAdjustInfo.getChangeMainTeacher()){
+			changeSalaryTeachTypes.add(TeachTypeEnum.BISHOP);
+			courseScheduleTeacherSalaryDao.deleteWithCourseAndTeachRole(courseAdjustInfo.getCourseScheduleIds(), TeachTypeEnum.BISHOP);
+		}
+		if(courseAdjustInfo.getChangeTeachingTeacher()){
+			changeSalaryTeachTypes.add(TeachTypeEnum.TEACHING);
+			courseScheduleTeacherSalaryDao.deleteWithCourseAndTeachRole(courseAdjustInfo.getCourseScheduleIds(), TeachTypeEnum.TEACHING);
+		}
+
+		if(CollectionUtils.isEmpty(courseAdjustInfo.getClassGroupTeacherMapperList())){
+			courseAdjustInfo.setClassGroupTeacherMapperList(new ArrayList<>());
+		}
+
+		//获取主教编号
+		Integer mainTeacherId = null;
+		if(!CollectionUtils.isEmpty(courseAdjustInfo.getClassGroupTeacherMapperList())){
+			Map<Integer, Long> userNumMap = courseAdjustInfo.getClassGroupTeacherMapperList().stream().collect(Collectors.groupingBy(ClassGroupTeacherMapper::getUserId, Collectors.counting()));
+			if(userNumMap.containsValue(Long.valueOf("2"))){
+				throw new BizException("主教与助教不可重复");
+			}
+			ClassGroupTeacherMapper classGroupTeacherMapper = courseAdjustInfo.getClassGroupTeacherMapperList().stream().filter(c -> TeachTypeEnum.BISHOP.equals(c.getTeacherRole())).findAny().get();
+			if(Objects.nonNull(classGroupTeacherMapper)){
+				mainTeacherId = classGroupTeacherMapper.getUserId();
+			}
+		}
+
+		//上课日期变更
+		//间隔天数
+		int betweenDays = 0;
+		//节假日
+		Set<String> holidayDays = new HashSet<>();
+		if(Objects.nonNull(courseAdjustInfo.getPauseDate())&&Objects.nonNull(courseAdjustInfo.getRecoveryDate())){
+			if (courseAdjustInfo.getHoliday()) {
+				SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING);
+				if(Objects.nonNull(holidaySetting)&&StringUtils.isNotBlank(holidaySetting.getParanValue())){
+					holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
+				}
+			}
+
+			LocalDate pauseDate = LocalDate.parse(courseAdjustInfo.getPauseDate(), DateUtil.dateFormatter);
+			LocalDate recoveryDate = LocalDate.parse(courseAdjustInfo.getRecoveryDate(), DateUtil.dateFormatter);
+
+			betweenDays = (int) (recoveryDate.toEpochDay()-pauseDate.toEpochDay());
+		}
+
+		//上课时间变更
+		LocalTime startTime = null;
+		if(Objects.nonNull(courseAdjustInfo.getStartTime())){
+			startTime = LocalTime.parse(courseAdjustInfo.getStartTime(), DateUtil.timeFormatter);
+		}
+
+		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
+
+		oldCourses.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
+		for (int i = 0; i < oldCourses.size(); i++) {
+			if(Objects.nonNull(oldCourses.get(i).getNewCourseId())){
+				throw new BizException("选择的课程中存在已合并课程,无法进行调整");
+			}
+			if(!CourseStatusEnum.NOT_START.equals(oldCourses.get(i).getStatus())){
+				throw new BizException("选择的课程中存在进行中或已结束的课程,无法进行调整");
+			}
+			//上课日期变更
+			if(betweenDays!=0){
+				LocalDate classDate = LocalDateTime.ofInstant(oldCourses.get(i).getClassDate().toInstant(), DateUtil.zoneId).toLocalDate();
+				classDate = classDate.plusDays(betweenDays);
+				if (courseAdjustInfo.getHoliday() && holidayDays.contains(classDate.toString())) {
+					betweenDays=betweenDays+7;
+					i=i-1;
+					continue;
+				}
+				oldCourses.get(i).setClassDate(Date.from(classDate.atStartOfDay().atZone(DateUtil.zoneId).toInstant()));
+			}
+
+			//上课时间变更
+			if(Objects.nonNull(startTime)){
+				//课程时长
+				int minutes = DateUtil.minutesBetween(oldCourses.get(i).getStartClassTime(), oldCourses.get(i).getEndClassTime());
+				LocalTime endTime = startTime.plusMinutes(minutes);
+				String courseStartTimeStr = DateUtil.dateToString(oldCourses.get(i).getClassDate(), "yyyy-MM-dd") + " " + startTime.toString();
+				String courseEndTimeStr = DateUtil.dateToString(oldCourses.get(i).getClassDate(), "yyyy-MM-dd") + " " + endTime.toString();
+				oldCourses.get(i).setStartClassTime(DateUtil.stringToDate(courseStartTimeStr, "yyyy-MM-dd HH:mm"));
+				try {
+					oldCourses.get(i).setStartClassTimeStr(startTime.toString());
+				} catch (ParseException e) {
+					e.printStackTrace();
+				}
+				oldCourses.get(i).setEndClassTime(DateUtil.stringToDate(courseEndTimeStr, "yyyy-MM-dd HH:mm"));
+				try {
+					oldCourses.get(i).setEndClassTimeStr(endTime.toString());
+				} catch (ParseException e) {
+					e.printStackTrace();
+				}
+			}
+
+			if(Objects.nonNull(courseAdjustInfo.getSchoolId())){
+				oldCourses.get(i).setSchoolId(courseAdjustInfo.getSchoolId());
+			}
+
+			if(Objects.nonNull(courseAdjustInfo.getTeachMode())&&!courseAdjustInfo.getTeachMode().equals(oldCourses.get(i).getTeachMode())){
+				oldCourses.get(i).setTeachMode(courseAdjustInfo.getTeachMode());
+				if(VIP.equals(oldCourses.get(i).getGroupType())){
+					changeSalaryTeachTypes.add(TeachTypeEnum.BISHOP);
+					if(courseSalaryListMap.containsKey(oldCourses.get(i).getId())){
+						List<CourseScheduleTeacherSalary> ctss = courseSalaryListMap.get(oldCourses.get(i).getId());
+						for (CourseScheduleTeacherSalary teacherSalary : ctss) {
+							courseScheduleTeacherSalaryService.updateSingleCourseTeacherSalary(oldCourses.get(i), teacherSalary);
+						}
+						courseScheduleTeacherSalaryDao.batchUpdate(ctss);
+					}
+				}
+			}
+
+			if(TeachModeEnum.ONLINE.equals(oldCourses.get(i).getTeachMode())){
+				oldCourses.get(i).setSchoolId(null);
+			}
+
+			//主教变更
+			if(Objects.nonNull(mainTeacherId)){
+				oldCourses.get(i).setActualTeacherId(mainTeacherId);
+			}
+
+			if(oldCourses.get(i).getStartClassTime().compareTo(now)<0){
+				throw new BizException("上课时间不得早于当前时间");
+			}
+
+			for (ClassGroupTeacherMapper classGroupTeacherMapper : courseAdjustInfo.getClassGroupTeacherMapperList()) {
+				if(!changeSalaryTeachTypes.contains(classGroupTeacherMapper.getTeacherRole())){
+					continue;
+				}
+				CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
+				courseScheduleTeacherSalary.setCourseScheduleId(oldCourses.get(i).getId());
+				courseScheduleTeacherSalary.setGroupType(oldCourses.get(i).getGroupType());
+				courseScheduleTeacherSalary.setMusicGroupId(oldCourses.get(i).getMusicGroupId());
+				courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
+				courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
+				courseScheduleTeacherSalary.setClassGroupId(oldCourses.get(i).getClassGroupId());
+				courseScheduleTeacherSalary.setCreateTime(now);
+				courseScheduleTeacherSalary.setUpdateTime(now);
+				if(CourseScheduleType.PRACTICE.equals(oldCourses.get(i).getType())&&courseSalaryListMap.containsKey(oldCourses.get(i).getId())){
+					courseScheduleTeacherSalary.setExpectSalary(courseSalaryListMap.get(oldCourses.get(i).getId()).get(0).getExpectSalary());
+				}
+				courseScheduleTeacherSalaryService.updateSingleCourseTeacherSalary(oldCourses.get(i), courseScheduleTeacherSalary);
+				courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
+
+				if (courseAdjustInfo.getConfirmGenerate() && !courseAdjustInfo.getAllowZeroSalary() && BigDecimal.ZERO.compareTo(courseScheduleTeacherSalary.getExpectSalary()) == 0) {
+					TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+					return BaseController.failed(HttpStatus.MULTI_STATUS, "当前课程课酬预计为0,是否继续");
+				}
+			}
+		}
+
+		//老师结算表
+		if (courseScheduleTeacherSalaries.size() > 0) {
+			teacherAttendanceDao.batchDeleteByCourseSchedules(courseAdjustInfo.getCourseScheduleIds());
+			courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaries);
+		}
+
+		try {
+			checkNewCourseSchedules(oldCourses, false, false);
+		} catch (Exception e) {
+			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+			String errMessage = e.getMessage();
+			if (errMessage.equals("您设置的循环周期存在时间冲突")) {
+				errMessage = "日期相同课程不可批量调整上课时间";
+			}
+			return BaseController.failed(HttpStatus.INTERNAL_SERVER_ERROR, errMessage);
+		}
+
+		if (!courseAdjustInfo.getConfirmGenerate()) {
+			List<CourseScheduleTeacherSalary> cstss = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseAdjustInfo.getCourseScheduleIds());
+			Map<Long, Set<Integer>> courseTeachTypeTeacherIdsMap = new HashMap<>();
+			if(!CollectionUtils.isEmpty(cstss)){
+				courseTeachTypeTeacherIdsMap = cstss.stream().filter(c->TeachTypeEnum.TEACHING.equals(c.getTeacherRole())).collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId, Collectors.mapping(CourseScheduleTeacherSalary::getUserId, Collectors.toSet())));
+			}
+			Set<Integer> allTeacherIds = cstss.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toSet());
+			List<SimpleUserDto> teachers = teacherDao.getUsersSimpleInfo(new ArrayList<>(allTeacherIds));
+			Map<Integer, String> idNameMap = new HashMap<>();
+			if(!CollectionUtils.isEmpty(teachers)){
+				idNameMap = teachers.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, s->s.getRealName(), (s1, s2)->s1));
+			}
+			//获取班级声部名称
+			List<Map<Integer, String>> classGroupSubjectNameMaps = classGroupDao.findClassGroupSubjectNameMaps(courseAdjustInfo.getCourseScheduleIds());
+			Map<Integer, String> classGroupSubjectNameMap = MapUtil.convertIntegerMap(classGroupSubjectNameMaps);
+
+			List<Integer> schoolIds = oldCourses.stream().filter(o -> Objects.nonNull(o.getSchoolId())).map(CourseSchedule::getSchoolId).collect(Collectors.toList());
+			Map<Integer, String> idSchoolNameMap = new HashMap<>();
+			if(!CollectionUtils.isEmpty(schoolIds)){
+				List<School> schools = schoolDao.getSchools(schoolIds);
+				idSchoolNameMap = schools.stream().collect(Collectors.toMap(School::getId, s->s.getName(), (s1, s2)->s1));
+			}
+
+			List<CourseScheduleEndDto> results = new ArrayList<>();
+			for (CourseSchedule oldCours : oldCourses) {
+				CourseScheduleEndDto courseEnd = new CourseScheduleEndDto();
+				BeanUtils.copyProperties(oldCours, courseEnd);
+				courseEnd.setTeacherName(idNameMap.get(oldCours.getActualTeacherId()));
+				if(courseTeachTypeTeacherIdsMap.containsKey(oldCours.getId())){
+					Set<Integer> teacherIds = courseTeachTypeTeacherIdsMap.get(oldCours.getId());
+					Set<String> teacherNames = new HashSet<>();
+					for (Integer teacherId : teacherIds) {
+						teacherNames.add(idNameMap.get(teacherId));
+					}
+					courseEnd.setTeachingTeacherNames(StringUtils.join(teacherNames, ","));
+				}
+				courseEnd.setSubjectName(classGroupSubjectNameMap.get(oldCours.getId()));
+				courseEnd.setSchoolName(idSchoolNameMap.get(oldCours.getSchoolId()));
+
+				results.add(courseEnd);
+			}
+			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+			oldCourses.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
+			return BaseController.failed(HttpStatus.PARTIAL_CONTENT, results, "");
+		}
+
+		courseScheduleDao.batchUpdate(oldCourses);
+
+		saveModifyLog(modifyLogs, courseAdjustInfo.getCourseScheduleIds());
+
+		return BaseController.succeed();
+	}
+
+	@Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     public void coursePostpone(CoursePostponeDto coursePostPoneInfo) {
     public void coursePostpone(CoursePostponeDto coursePostPoneInfo) {
         SysUser user = sysUserFeignService.queryUserInfo();
         SysUser user = sysUserFeignService.queryUserInfo();
@@ -3160,7 +3418,19 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			}
 			}
         }
         }
 
 
-        //课程冲突检测
+		Set<String> musicGroupIds = oldCourseScheduleList.stream().filter(c -> MUSIC.equals(c.getGroupType())).map(CourseSchedule::getMusicGroupId).collect(Collectors.toSet());
+        if(!CollectionUtils.isEmpty(musicGroupIds)){
+			List<MusicGroup> musicGroups = musicGroupDao.getMusicGroupByIds(new ArrayList<>(musicGroupIds));
+			if(CollectionUtils.isEmpty(musicGroups)){
+				throw new BizException("调整失败:乐团信息异常");
+			}
+			long errMusicGroupNum = musicGroups.stream().filter(m -> !MusicGroupStatusEnum.PROGRESS.equals(m.getStatus())).count();
+			if(errMusicGroupNum>0){
+				throw new BizException("调整失败:调整的课程所在乐团处于非进行中");
+			}
+		}
+
+		//课程冲突检测
         checkNewCourseSchedules(newCourseSchedules, false,false);
         checkNewCourseSchedules(newCourseSchedules, false,false);
 
 
 		Map<Long, List<TeacherAttendance>> teacherAttendanceMap = new HashMap<Long, List<TeacherAttendance>>();
 		Map<Long, List<TeacherAttendance>> teacherAttendanceMap = new HashMap<Long, List<TeacherAttendance>>();

+ 34 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -1160,6 +1160,27 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     }
     }
 
 
     @Override
     @Override
+    public void updateSingleCourseTeacherSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary) {
+        List<CourseScheduleTeacherSalary> teacherSalaries = new ArrayList<>();
+        teacherSalaries.add(courseScheduleTeacherSalary);
+        switch (courseSchedule.getGroupType()){
+            case MUSIC:
+                //生成乐团课课酬
+                createMusicGroupCourseTeacherSalaries(null, courseSchedule, teacherSalaries);
+                break;
+            case VIP:
+                //生成vip课课酬
+                createVipGroupCourseTeacherSalaries(courseSchedule, teacherSalaries);
+                break;
+            case PRACTICE:
+                //生成网管课课酬
+                createPracticeGroupCourseTeacherSalaries(courseSchedule, teacherSalaries);
+                break;
+        }
+        courseScheduleTeacherSalary.setExpectSalary(teacherSalaries.get(0).getExpectSalary());
+    }
+
+    @Override
     public void createMusicGroupCourseTeacherSalary(MusicGroup musicGroup, CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary) {
     public void createMusicGroupCourseTeacherSalary(MusicGroup musicGroup, CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary) {
         List<CourseScheduleTeacherSalary> teacherSalaries = new ArrayList<>();
         List<CourseScheduleTeacherSalary> teacherSalaries = new ArrayList<>();
         teacherSalaries.add(courseScheduleTeacherSalary);
         teacherSalaries.add(courseScheduleTeacherSalary);
@@ -1306,14 +1327,22 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     private void createPracticeGroupCourseTeacherSalaries(CourseSchedule courseSchedule, List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries){
     private void createPracticeGroupCourseTeacherSalaries(CourseSchedule courseSchedule, List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries){
         List<Integer> teacherIds = courseScheduleTeacherSalaries.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toList());
         List<Integer> teacherIds = courseScheduleTeacherSalaries.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toList());
 
 
+        SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
+        BigDecimal freeTeacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
+
         List<TeacherDefaultPracticeGroupSalary> allTeacherDefaultPracticeGroupSalaryList = teacherDefaultPracticeGroupSalaryDao.queryByUserIdList(teacherIds);
         List<TeacherDefaultPracticeGroupSalary> allTeacherDefaultPracticeGroupSalaryList = teacherDefaultPracticeGroupSalaryDao.queryByUserIdList(teacherIds);
         Map<Integer, List<TeacherDefaultPracticeGroupSalary>> teacherSalaryMap = allTeacherDefaultPracticeGroupSalaryList.stream().collect(Collectors.groupingBy(TeacherDefaultPracticeGroupSalary::getUserId));
         Map<Integer, List<TeacherDefaultPracticeGroupSalary>> teacherSalaryMap = allTeacherDefaultPracticeGroupSalaryList.stream().collect(Collectors.groupingBy(TeacherDefaultPracticeGroupSalary::getUserId));
         for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
         for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
-            final List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList = teacherSalaryMap.get(courseScheduleTeacherSalary.getUserId());
-            if (teacherDefaultPracticeGroupSalaryList != null && teacherDefaultPracticeGroupSalaryList.size() > 0) {
-                courseScheduleTeacherSalary.setExpectSalary(teacherDefaultPracticeGroupSalaryList.get(0).getMainTeacherSalary());
-            } else {
-                throw new BizException("请设置老师 的网管课课酬");
+            List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList = teacherSalaryMap.get(courseScheduleTeacherSalary.getUserId());
+
+            if(Objects.nonNull(courseScheduleTeacherSalary.getExpectSalary())&&freeTeacherSalary.compareTo(courseScheduleTeacherSalary.getExpectSalary())==0){
+                courseScheduleTeacherSalary.setExpectSalary(freeTeacherSalary);
+            }else{
+                if (teacherDefaultPracticeGroupSalaryList != null && teacherDefaultPracticeGroupSalaryList.size() > 0) {
+                    courseScheduleTeacherSalary.setExpectSalary(teacherDefaultPracticeGroupSalaryList.get(0).getMainTeacherSalary());
+                } else {
+                    throw new BizException("请设置老师 的网管课课酬");
+                }
             }
             }
         }
         }
     }
     }

+ 48 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -55,12 +55,25 @@ public class ExportServiceImpl implements ExportService {
     private StoragePluginContext storagePluginContext;
     private StoragePluginContext storagePluginContext;
     @Autowired
     @Autowired
     private ManagerDownloadDao managerDownloadDao;
     private ManagerDownloadDao managerDownloadDao;
+    @Autowired
+    private CooperationOrganDao cooperationOrganDao;
 
 
     @Override
     @Override
     @Async
     @Async
     public void orderList(Map<String, Object> params, ManagerDownload managerDownload) throws Exception {
     public void orderList(Map<String, Object> params, ManagerDownload managerDownload) throws Exception {
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderService.ExportQueryPage(params);
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderService.ExportQueryPage(params);
         long i = 1;
         long i = 1;
+        Map<Integer, String> cooperationOrganMap = new HashMap<>();
+        List<Integer> cooperationOrganIds = studentPaymentOrderExportDtos.stream()
+                .filter(e -> OrderTypeEnum.OUTORDER.equals(e.getType()))
+                .filter(e -> e.getMusicGroupId() != null)
+                .map(e -> Integer.valueOf(e.getMusicGroupId()))
+                .distinct()
+                .collect(Collectors.toList());
+        if (cooperationOrganIds.size() > 0) {
+            List<CooperationOrgan> cooperationOrgans = cooperationOrganDao.getCooperationOrganByIds(cooperationOrganIds);
+            cooperationOrganMap = cooperationOrgans.stream().collect(Collectors.toMap(CooperationOrgan::getId, CooperationOrgan::getName));
+        }
         for (StudentPaymentOrderExportDto row : studentPaymentOrderExportDtos) {
         for (StudentPaymentOrderExportDto row : studentPaymentOrderExportDtos) {
             if (row.getActualAmount() == null) {
             if (row.getActualAmount() == null) {
                 row.setActualAmount(BigDecimal.ZERO);
                 row.setActualAmount(BigDecimal.ZERO);
@@ -145,6 +158,7 @@ public class ExportServiceImpl implements ExportService {
                 if (vipGroupInfo != null) {
                 if (vipGroupInfo != null) {
                     row.setSchoolName(vipGroupInfo.getSchoolName());
                     row.setSchoolName(vipGroupInfo.getSchoolName());
                     row.setSubjectName(vipGroupInfo.getSubjectName());
                     row.setSubjectName(vipGroupInfo.getSubjectName());
+                    row.setEduTeacher(vipGroupInfo.getEducationalTeacherName());
                 }
                 }
             } else if (row.getGroupType().equals(GroupType.SPORADIC)) {
             } else if (row.getGroupType().equals(GroupType.SPORADIC)) {
                 //考级报名
                 //考级报名
@@ -189,6 +203,7 @@ public class ExportServiceImpl implements ExportService {
                 PracticeCourseDto practiceGroup = practiceGroupDao.findByGroupId(Integer.parseInt(row.getMusicGroupId()));
                 PracticeCourseDto practiceGroup = practiceGroupDao.findByGroupId(Integer.parseInt(row.getMusicGroupId()));
                 if (practiceGroup != null) {
                 if (practiceGroup != null) {
                     row.setSubjectName(practiceGroup.getSubjectName());
                     row.setSubjectName(practiceGroup.getSubjectName());
+                    row.setEduTeacher(practiceGroup.getEduTeacherName());
                 }
                 }
             } else {
             } else {
                 StudentPaymentOrderExportDto feeByType = sellOrderDao.getFeeByType(row.getId());
                 StudentPaymentOrderExportDto feeByType = sellOrderDao.getFeeByType(row.getId());
@@ -203,6 +218,7 @@ public class ExportServiceImpl implements ExportService {
                         row.setSubjectName(studentRegistration.getSubjectName());
                         row.setSubjectName(studentRegistration.getSubjectName());
                         row.setSchoolName(studentRegistration.getSchoolName());
                         row.setSchoolName(studentRegistration.getSchoolName());
                         row.setCooperationOrganName(studentRegistration.getRemark());
                         row.setCooperationOrganName(studentRegistration.getRemark());
+                        row.setEduTeacher(studentRegistration.getName());
                     }
                     }
                     row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(row.getTeachingFee()).subtract(row.getMaintenanceFee()).subtract(row.getMaintenanceProductFee()).subtract(feeByType.getOtherFee()).subtract(row.getLeaseFee()));
                     row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(row.getTeachingFee()).subtract(row.getMaintenanceFee()).subtract(row.getMaintenanceProductFee()).subtract(feeByType.getOtherFee()).subtract(row.getLeaseFee()));
                 } else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
                 } else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
@@ -212,11 +228,17 @@ public class ExportServiceImpl implements ExportService {
                     row.setTransferFee(BigDecimal.ZERO);
                     row.setTransferFee(BigDecimal.ZERO);
                 }
                 }
             }
             }
-            //如果合作单位不存在取学员的第一个乐团的合作单位和教学点
+            //如果合作单位不存在取学员的第一个乐团的合作单位,乐团主管
             if (row.getCooperationOrganName() == null) {
             if (row.getCooperationOrganName() == null) {
                 CooperationOrgan cooperationOrgan = musicGroupDao.findUserMusicGroupCooperationOrgan(row.getUserId());
                 CooperationOrgan cooperationOrgan = musicGroupDao.findUserMusicGroupCooperationOrgan(row.getUserId());
                 if (cooperationOrgan != null) {
                 if (cooperationOrgan != null) {
                     row.setCooperationOrganName(cooperationOrgan.getName());
                     row.setCooperationOrganName(cooperationOrgan.getName());
+                    row.setEduTeacher(cooperationOrgan.getLinkman() != null ? cooperationOrgan.getLinkman() : row.getEduTeacher());
+                }
+            }
+            if (row.getType().equals(OrderTypeEnum.OUTORDER) && row.getMusicGroupId() != null) {
+                if (cooperationOrganMap.containsKey(Integer.valueOf(row.getMusicGroupId()))) {
+                    row.setCooperationOrganName(cooperationOrganMap.get(Integer.valueOf(row.getMusicGroupId())));
                 }
                 }
             }
             }
             if (row.getMusicGroupId() != null && row.getMusicGroupId().equals("null")) {
             if (row.getMusicGroupId() != null && row.getMusicGroupId().equals("null")) {
@@ -244,9 +266,9 @@ public class ExportServiceImpl implements ExportService {
         HSSFWorkbook workbook = null;
         HSSFWorkbook workbook = null;
         try {
         try {
             String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "押金", "乐器", "教辅费用", "其它", "手续费", "到账时间",
             String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "押金", "乐器", "教辅费用", "其它", "手续费", "到账时间",
-                    "关联乐团ID/VIP课ID", "课程形态", "零星收款类别", "专业", "分部", "教学点", "合作单位", "备注"};
+                    "关联乐团ID/VIP课ID", "课程形态", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"};
             String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "leaseFee", "musicalFee", "teachingFee", "otherFee", "transferFee", "payTime", "musicGroupId",
             String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "leaseFee", "musicalFee", "teachingFee", "otherFee", "transferFee", "payTime", "musicGroupId",
-                    "groupType.desc", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
+                    "groupType.desc", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"};
             workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             workbook.write(fileOutputStream);
             workbook.write(fileOutputStream);
             fileOutputStream.getFD().sync();
             fileOutputStream.getFD().sync();
@@ -275,6 +297,18 @@ public class ExportServiceImpl implements ExportService {
     @Async
     @Async
     public void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload) throws Exception {
     public void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload) throws Exception {
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.ExportQueryPage(params);
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.ExportQueryPage(params);
+
+        Map<Integer, String> cooperationOrganMap = new HashMap<>();
+        List<Integer> cooperationOrganIds = studentPaymentOrderExportDtos.stream()
+                .filter(e -> OrderTypeEnum.OUTORDER.equals(e.getType()))
+                .filter(e -> e.getMusicGroupId() != null)
+                .map(e -> Integer.valueOf(e.getMusicGroupId()))
+                .distinct()
+                .collect(Collectors.toList());
+        if (cooperationOrganIds.size() > 0) {
+            List<CooperationOrgan> cooperationOrgans = cooperationOrganDao.getCooperationOrganByIds(cooperationOrganIds);
+            cooperationOrganMap = cooperationOrgans.stream().collect(Collectors.toMap(CooperationOrgan::getId, CooperationOrgan::getName));
+        }
         long i = 1;
         long i = 1;
         for (StudentPaymentOrderExportDto row : studentPaymentOrderExportDtos) {
         for (StudentPaymentOrderExportDto row : studentPaymentOrderExportDtos) {
             if (row.getActualAmount() == null) {
             if (row.getActualAmount() == null) {
@@ -360,6 +394,7 @@ public class ExportServiceImpl implements ExportService {
                 if (vipGroupInfo != null) {
                 if (vipGroupInfo != null) {
                     row.setSchoolName(vipGroupInfo.getSchoolName());
                     row.setSchoolName(vipGroupInfo.getSchoolName());
                     row.setSubjectName(vipGroupInfo.getSubjectName());
                     row.setSubjectName(vipGroupInfo.getSubjectName());
+                    row.setEduTeacher(vipGroupInfo.getEducationalTeacherName());
                 }
                 }
             } else if (row.getGroupType().equals(GroupType.SPORADIC)) {
             } else if (row.getGroupType().equals(GroupType.SPORADIC)) {
                 //考级报名
                 //考级报名
@@ -404,6 +439,7 @@ public class ExportServiceImpl implements ExportService {
                 PracticeCourseDto practiceGroup = practiceGroupDao.findByGroupId(Integer.parseInt(row.getMusicGroupId()));
                 PracticeCourseDto practiceGroup = practiceGroupDao.findByGroupId(Integer.parseInt(row.getMusicGroupId()));
                 if (practiceGroup != null) {
                 if (practiceGroup != null) {
                     row.setSubjectName(practiceGroup.getSubjectName());
                     row.setSubjectName(practiceGroup.getSubjectName());
+                    row.setEduTeacher(practiceGroup.getEduTeacherName());
                 }
                 }
             } else {
             } else {
                 StudentPaymentOrderExportDto feeByType = sellOrderDao.getFeeByType(row.getId());
                 StudentPaymentOrderExportDto feeByType = sellOrderDao.getFeeByType(row.getId());
@@ -418,6 +454,7 @@ public class ExportServiceImpl implements ExportService {
                         row.setSubjectName(studentRegistration.getSubjectName());
                         row.setSubjectName(studentRegistration.getSubjectName());
                         row.setSchoolName(studentRegistration.getSchoolName());
                         row.setSchoolName(studentRegistration.getSchoolName());
                         row.setCooperationOrganName(studentRegistration.getRemark());
                         row.setCooperationOrganName(studentRegistration.getRemark());
+                        row.setEduTeacher(studentRegistration.getName());
                     }
                     }
                     row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(row.getTeachingFee()).subtract(row.getMaintenanceFee()).subtract(row.getMaintenanceProductFee()).subtract(feeByType.getOtherFee()).subtract(row.getLeaseFee()));
                     row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(row.getTeachingFee()).subtract(row.getMaintenanceFee()).subtract(row.getMaintenanceProductFee()).subtract(feeByType.getOtherFee()).subtract(row.getLeaseFee()));
                 } else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
                 } else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
@@ -432,6 +469,12 @@ public class ExportServiceImpl implements ExportService {
                 CooperationOrgan cooperationOrgan = musicGroupDao.findUserMusicGroupCooperationOrgan(row.getUserId());
                 CooperationOrgan cooperationOrgan = musicGroupDao.findUserMusicGroupCooperationOrgan(row.getUserId());
                 if (cooperationOrgan != null) {
                 if (cooperationOrgan != null) {
                     row.setCooperationOrganName(cooperationOrgan.getName());
                     row.setCooperationOrganName(cooperationOrgan.getName());
+                    row.setEduTeacher(cooperationOrgan.getLinkman() != null ? cooperationOrgan.getLinkman() : row.getEduTeacher());
+                }
+            }
+            if (row.getType().equals(OrderTypeEnum.OUTORDER) && row.getMusicGroupId() != null) {
+                if (cooperationOrganMap.containsKey(Integer.valueOf(row.getMusicGroupId()))) {
+                    row.setCooperationOrganName(cooperationOrganMap.get(Integer.valueOf(row.getMusicGroupId())));
                 }
                 }
             }
             }
             if (row.getMusicGroupId() != null && row.getMusicGroupId().equals("null")) {
             if (row.getMusicGroupId() != null && row.getMusicGroupId().equals("null")) {
@@ -595,9 +638,9 @@ public class ExportServiceImpl implements ExportService {
         HSSFWorkbook workbook = null;
         HSSFWorkbook workbook = null;
         try {
         try {
             String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分润余额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "押金", "乐器", "教辅费用", "其它", "手续费", "到账时间",
             String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分润余额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "押金", "乐器", "教辅费用", "其它", "手续费", "到账时间",
-                    "关联乐团ID/VIP课ID", "课程形态", "零星收款类别", "专业", "分部", "教学点", "合作单位", "备注"};
+                    "关联乐团ID/VIP课ID", "课程形态", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"};
             String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance", "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "leaseFee", "musicalFee", "teachingFee", "otherFee", "transferFee", "payTime", "musicGroupId",
             String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance", "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "leaseFee", "musicalFee", "teachingFee", "otherFee", "transferFee", "payTime", "musicGroupId",
-                    "groupType.desc", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
+                    "groupType.desc", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"};
             workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             workbook.write(fileOutputStream);
             workbook.write(fileOutputStream);
             fileOutputStream.getFD().sync();
             fileOutputStream.getFD().sync();

+ 14 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentInstrumentServiceImpl.java

@@ -80,7 +80,7 @@ public class StudentInstrumentServiceImpl extends BaseServiceImpl<Long, StudentI
         }
         }
 
 
         String channelType = "";
         String channelType = "";
-        Date date = new Date();
+        Date nowDate = new Date();
 
 
         BigDecimal balance = BigDecimal.ZERO;
         BigDecimal balance = BigDecimal.ZERO;
         if (maintenancePayDto.getUseBalance() && amount.compareTo(BigDecimal.ZERO) > 0) {
         if (maintenancePayDto.getUseBalance() && amount.compareTo(BigDecimal.ZERO) > 0) {
@@ -112,22 +112,27 @@ public class StudentInstrumentServiceImpl extends BaseServiceImpl<Long, StudentI
         studentPaymentOrder.setCourseRemitFee(BigDecimal.ZERO);
         studentPaymentOrder.setCourseRemitFee(BigDecimal.ZERO);
         studentPaymentOrder.setOrganId(studentInstrument.getOrganId());
         studentPaymentOrder.setOrganId(studentInstrument.getOrganId());
         studentPaymentOrder.setRoutingOrganId(studentInstrument.getOrganId());
         studentPaymentOrder.setRoutingOrganId(studentInstrument.getOrganId());
-        studentPaymentOrder.setCreateTime(date);
-        studentPaymentOrder.setUpdateTime(date);
+        studentPaymentOrder.setCreateTime(nowDate);
+        studentPaymentOrder.setUpdateTime(nowDate);
         studentPaymentOrderService.insert(studentPaymentOrder);
         studentPaymentOrderService.insert(studentPaymentOrder);
 
 
+        int isRenew = 0;
+        if (studentInstrument.getEndTime() != null) {
+            isRenew = 1;
+        }
+
         StudentPaymentOrderDetail maintenanceOrderDetail = new StudentPaymentOrderDetail();
         StudentPaymentOrderDetail maintenanceOrderDetail = new StudentPaymentOrderDetail();
         maintenanceOrderDetail.setType(OrderDetailTypeEnum.MAINTENANCE);
         maintenanceOrderDetail.setType(OrderDetailTypeEnum.MAINTENANCE);
         maintenanceOrderDetail.setPrice(orderAmount);
         maintenanceOrderDetail.setPrice(orderAmount);
         maintenanceOrderDetail.setRemitFee(BigDecimal.ZERO);
         maintenanceOrderDetail.setRemitFee(BigDecimal.ZERO);
-        maintenanceOrderDetail.setCreateTime(date);
-        maintenanceOrderDetail.setUpdateTime(date);
         maintenanceOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
         maintenanceOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
         maintenanceOrderDetail.setStudentInstrumentId(maintenancePayDto.getId());
         maintenanceOrderDetail.setStudentInstrumentId(maintenancePayDto.getId());
+        maintenanceOrderDetail.setIsRenew(isRenew);
+        maintenanceOrderDetail.setCreateTime(nowDate);
+        maintenanceOrderDetail.setUpdateTime(nowDate);
         studentPaymentOrderDetailDao.insert(maintenanceOrderDetail);
         studentPaymentOrderDetailDao.insert(maintenanceOrderDetail);
 
 
         studentPaymentOrder.setVersion(0);
         studentPaymentOrder.setVersion(0);
-
         if (amount.compareTo(BigDecimal.ZERO) == 0) {
         if (amount.compareTo(BigDecimal.ZERO) == 0) {
             studentPaymentRouteOrderService.addRouteOrder(orderNo, studentInstrument.getOrganId(), balance);
             studentPaymentRouteOrderService.addRouteOrder(orderNo, studentInstrument.getOrganId(), balance);
             Map<String, String> notifyMap = new HashMap<>();
             Map<String, String> notifyMap = new HashMap<>();
@@ -159,7 +164,7 @@ public class StudentInstrumentServiceImpl extends BaseServiceImpl<Long, StudentI
         studentPaymentOrder.setOrganId(studentInstrument.getOrganId());
         studentPaymentOrder.setOrganId(studentInstrument.getOrganId());
         studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
         studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
         studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
         studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
-        studentPaymentOrder.setUpdateTime(date);
+        studentPaymentOrder.setUpdateTime(nowDate);
         studentPaymentOrderService.update(studentPaymentOrder);
         studentPaymentOrderService.update(studentPaymentOrder);
         return payMap;
         return payMap;
     }
     }
@@ -196,7 +201,7 @@ public class StudentInstrumentServiceImpl extends BaseServiceImpl<Long, StudentI
             Date startTime = nowDate;
             Date startTime = nowDate;
             Date endTime = DateUtil.addYears(nowDate, 1);
             Date endTime = DateUtil.addYears(nowDate, 1);
             if (studentInstrument.getEndTime() != null &&
             if (studentInstrument.getEndTime() != null &&
-                    studentInstrument.getEndTime().compareTo(nowDate) >= 0) {
+                    studentInstrument.getEndTime().compareTo(nowDate) > 0) {
                 startTime = studentInstrument.getStartTime();
                 startTime = studentInstrument.getStartTime();
                 endTime = DateUtil.addYears(studentInstrument.getEndTime(), 1);
                 endTime = DateUtil.addYears(studentInstrument.getEndTime(), 1);
             }
             }
@@ -389,7 +394,7 @@ public class StudentInstrumentServiceImpl extends BaseServiceImpl<Long, StudentI
         }
         }
         List<Goods> goodies = goodsDao.getGoodsByBaseGoodsId(76);
         List<Goods> goodies = goodsDao.getGoodsByBaseGoodsId(76);
         List<Integer> goodsIds = goodies.stream().map(Goods::getId).collect(Collectors.toList());
         List<Integer> goodsIds = goodies.stream().map(Goods::getId).collect(Collectors.toList());
-        List<StudentInstrument> oldStudentInstruments = studentInstrumentDao.getOldStudentInstrument(startTime,goodsIds);
+        List<StudentInstrument> oldStudentInstruments = studentInstrumentDao.getOldStudentInstrument(startTime, goodsIds);
         for (StudentInstrument oldStudentInstrument : oldStudentInstruments) {
         for (StudentInstrument oldStudentInstrument : oldStudentInstruments) {
             oldStudentInstrument.setChangeOrderId(oldStudentInstrument.getOrderId());
             oldStudentInstrument.setChangeOrderId(oldStudentInstrument.getOrderId());
             if (oldStudentInstrument.getEndTime().compareTo(nowDate) > 0) {
             if (oldStudentInstrument.getEndTime().compareTo(nowDate) > 0) {

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

@@ -18,6 +18,7 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.enums.*;
@@ -158,7 +159,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         Map<String, Object> params = new HashMap<>();
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
         MapUtil.populateMap(params, queryInfo);
 
 
-        List<StudentApplyDetailDto> dataList =  new ArrayList<>();
+        List<StudentApplyDetailDto> dataList = new ArrayList<>();
         int count = studentRegistrationDao.queryStudentDetailCount(params);
         int count = studentRegistrationDao.queryStudentDetailCount(params);
         if (queryInfo.getIsExport() && count > 50000) {
         if (queryInfo.getIsExport() && count > 50000) {
             throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
             throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
@@ -343,7 +344,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         studentDao.update(student);
         studentDao.update(student);
         imGroupDao.updateNickname(userId, studentRegistration.getName());
         imGroupDao.updateNickname(userId, studentRegistration.getName());
         imGroupDao.updateUserFriendNickname(userId, studentRegistration.getName());
         imGroupDao.updateUserFriendNickname(userId, studentRegistration.getName());
-        imFeignService.update(new ImUserModel(userId.toString(),studentRegistration.getName(),sysUser.getAvatar()));
+        imFeignService.update(new ImUserModel(userId.toString(), studentRegistration.getName(), sysUser.getAvatar()));
         // 增加报名学生数
         // 增加报名学生数
         musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId(), 1);
         musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId(), 1);
         // 报名成功后,发送短信
         // 报名成功后,发送短信
@@ -451,6 +452,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             maintenanceOrderDetail.setCreateTime(date);
             maintenanceOrderDetail.setCreateTime(date);
             maintenanceOrderDetail.setUpdateTime(date);
             maintenanceOrderDetail.setUpdateTime(date);
             maintenanceOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
             maintenanceOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+            maintenanceOrderDetail.setIsRenew(0);
             studentPaymentOrderDetailList.add(maintenanceOrderDetail);
             studentPaymentOrderDetailList.add(maintenanceOrderDetail);
         }
         }
         studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
         studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
@@ -576,6 +578,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             maintenanceOrderDetail.setCreateTime(date);
             maintenanceOrderDetail.setCreateTime(date);
             maintenanceOrderDetail.setUpdateTime(date);
             maintenanceOrderDetail.setUpdateTime(date);
             maintenanceOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
             maintenanceOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+            maintenanceOrderDetail.setIsRenew(0);
             studentPaymentOrderDetailList.add(maintenanceOrderDetail);
             studentPaymentOrderDetailList.add(maintenanceOrderDetail);
         }
         }
         studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
         studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
@@ -646,9 +649,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             } else {
             } else {
                 StudentRegistration oldReg = studentRegistrationDao.getByUserIdAndMusicGroupId(musicGroupId, sysUser.getId());
                 StudentRegistration oldReg = studentRegistrationDao.getByUserIdAndMusicGroupId(musicGroupId, sysUser.getId());
                 if (oldReg != null && oldReg.getMusicGroupStatus() != StudentMusicGroupStatusEnum.QUIT && oldReg.getMusicGroupStatus() != StudentMusicGroupStatusEnum.APPLY) {
                 if (oldReg != null && oldReg.getMusicGroupStatus() != StudentMusicGroupStatusEnum.QUIT && oldReg.getMusicGroupStatus() != StudentMusicGroupStatusEnum.APPLY) {
-                    throw new BizException("该学员已存在,原手机号为"+oldReg.getParentsPhone());
+                    throw new BizException("该学员已存在,原手机号为" + oldReg.getParentsPhone());
                 }
                 }
-                if(oldReg != null){
+                if (oldReg != null) {
                     phoneAndMusicGroupId = oldReg;
                     phoneAndMusicGroupId = oldReg;
                 }
                 }
                 if (StringUtils.isNotEmpty(sysUser.getUsername())) {
                 if (StringUtils.isNotEmpty(sysUser.getUsername())) {
@@ -684,8 +687,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                         studentDao.update(student);
                         studentDao.update(student);
                     }
                     }
                 }
                 }
-                imGroupDao.updateNickname(userId,sysUser.getUsername());
-                imGroupDao.updateUserFriendNickname(userId,sysUser.getUsername());
+                imGroupDao.updateNickname(userId, sysUser.getUsername());
+                imGroupDao.updateUserFriendNickname(userId, sysUser.getUsername());
             }
             }
             MusicGroupStudentFee studentFeeDaoByUser = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
             MusicGroupStudentFee studentFeeDaoByUser = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
             if (studentFeeDaoByUser != null) {
             if (studentFeeDaoByUser != null) {
@@ -763,7 +766,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             student.setCurrentClass(studentRegistration.getCurrentClass());
             student.setCurrentClass(studentRegistration.getCurrentClass());
             studentDao.update(student);
             studentDao.update(student);
             //studentRegistrationDao.updateCurrentClass(studentRegistration);
             //studentRegistrationDao.updateCurrentClass(studentRegistration);
-            imFeignService.update(new ImUserModel(userId.toString(),sysUser.getUsername(),sysUser.getAvatar()));
+            imFeignService.update(new ImUserModel(userId.toString(), sysUser.getUsername(), sysUser.getAvatar()));
             return userId;
             return userId;
         }
         }
     }
     }
@@ -773,8 +776,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     public void insertStudent(String studentIds, String oldMusicGroupId, String newMusicGroupId, Map<Integer, List<MusicGroupPaymentCalenderStudentDetail>> collect) {
     public void insertStudent(String studentIds, String oldMusicGroupId, String newMusicGroupId, Map<Integer, List<MusicGroupPaymentCalenderStudentDetail>> collect) {
         //获取欠费学员列表
         //获取欠费学员列表
         List<Integer> studentIdList = Arrays.asList(studentIds.split(",")).stream().mapToInt(idStr -> Integer.valueOf(idStr)).boxed().collect(Collectors.toList());
         List<Integer> studentIdList = Arrays.asList(studentIds.split(",")).stream().mapToInt(idStr -> Integer.valueOf(idStr)).boxed().collect(Collectors.toList());
-        List<Integer> noPaymentUserIds = musicGroupPaymentCalenderDetailDao.queryNoPaymentUserIds(newMusicGroupId,studentIdList);
-        if(noPaymentUserIds.size() > 0){
+        List<Integer> noPaymentUserIds = musicGroupPaymentCalenderDetailDao.queryNoPaymentUserIds(newMusicGroupId, studentIdList);
+        if (noPaymentUserIds.size() > 0) {
             throw new BizException("操作失败:有欠费的学员不允许创建缴费");
             throw new BizException("操作失败:有欠费的学员不允许创建缴费");
         }
         }
         SysUser sysUser1 = sysUserFeignService.queryUserInfo();
         SysUser sysUser1 = sysUserFeignService.queryUserInfo();
@@ -1393,7 +1396,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         String studentGrade = studentService.getStudentGrade(organization.getGradeType(), studentRegistration.getCurrentGradeNum());
         String studentGrade = studentService.getStudentGrade(organization.getGradeType(), studentRegistration.getCurrentGradeNum());
         studentRegistration.setCurrentGrade(studentGrade);
         studentRegistration.setCurrentGrade(studentGrade);
         update(studentRegistration);
         update(studentRegistration);
-        studentRegistrationDao.updateUser(student.getUserId(),student.getName(), student.getParentsName(), student.getIdCardNo(), student.getGender(),studentRegistration.getCertificateType());
+        studentRegistrationDao.updateUser(student.getUserId(), student.getName(), student.getParentsName(), student.getIdCardNo(), student.getGender(), studentRegistration.getCertificateType());
         //更新年级信息
         //更新年级信息
         Student studentInfo = studentDao.get(student.getUserId());
         Student studentInfo = studentDao.get(student.getUserId());
         studentInfo.setCurrentGradeNum(studentRegistration.getCurrentGradeNum());
         studentInfo.setCurrentGradeNum(studentRegistration.getCurrentGradeNum());
@@ -1709,7 +1712,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         Map<String, Object> params = new HashMap<String, Object>();
         Map<String, Object> params = new HashMap<String, Object>();
         MapUtil.populateMap(params, queryInfo);
         MapUtil.populateMap(params, queryInfo);
 
 
-        if(StringUtils.isNotBlank(queryInfo.getOrganIds())){
+        if (StringUtils.isNotBlank(queryInfo.getOrganIds())) {
             List<Integer> organIds = Arrays.stream(queryInfo.getOrganIds().split(",")).map(id -> Integer.valueOf(id)).collect(Collectors.toList());
             List<Integer> organIds = Arrays.stream(queryInfo.getOrganIds().split(",")).map(id -> Integer.valueOf(id)).collect(Collectors.toList());
             params.put("organIds", organIds);
             params.put("organIds", organIds);
         }
         }
@@ -1725,7 +1728,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         if (count > 0) {
         if (count > 0) {
             pageInfo.setTotal(count);
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
             params.put("offset", pageInfo.getOffset());
-            dataList =studentRegistrationDao.queryNoClassMusicStudents(params);
+            dataList = studentRegistrationDao.queryNoClassMusicStudents(params);
         }
         }
 
 
         pageInfo.setRows(dataList);
         pageInfo.setRows(dataList);

+ 72 - 36
mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml

@@ -13,36 +13,42 @@
         <result column="mobile_no_" property="mobileNo"/>
         <result column="mobile_no_" property="mobileNo"/>
         <result column="address_" property="address"/>
         <result column="address_" property="address"/>
         <result column="is_enable_" property="isEnable"/>
         <result column="is_enable_" property="isEnable"/>
-        <result column="ownership_type_" property="ownershipType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="ownership_type_" property="ownershipType"
+                typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="create_time_" property="createTime"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
         <result column="update_time_" property="updateTime"/>
         <result column="full_job_resource_" property="fullJobResource"/>
         <result column="full_job_resource_" property="fullJobResource"/>
     </resultMap>
     </resultMap>
-    
+
     <resultMap type="com.ym.mec.biz.dal.entity.CooperationOrgan" id="ExtCooperationOrgan" extends="CooperationOrgan">
     <resultMap type="com.ym.mec.biz.dal.entity.CooperationOrgan" id="ExtCooperationOrgan" extends="CooperationOrgan">
-    	<result column="organ_id_" property="organization.id"/>
-    	<result column="organ_name_" property="organization.name"/>
+        <result column="organ_id_" property="organization.id"/>
+        <result column="organ_name_" property="organization.name"/>
     </resultMap>
     </resultMap>
 
 
     <!-- 根据主键查询一条记录 -->
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="CooperationOrgan">
     <select id="get" resultMap="CooperationOrgan">
-		SELECT * FROM
-		cooperation_organ WHERE id_ = #{id}
-	</select>
+        SELECT *
+        FROM cooperation_organ
+        WHERE id_ = #{id}
+    </select>
 
 
     <!-- 全查询 -->
     <!-- 全查询 -->
     <select id="findAll" resultMap="CooperationOrgan">
     <select id="findAll" resultMap="CooperationOrgan">
-		SELECT * FROM cooperation_organ AND del_flag_ != 1
-		ORDER BY id_
-	</select>
+        SELECT *
+        FROM cooperation_organ
+        WHERE del_flag_ != 1
+        ORDER BY id_
+    </select>
 
 
     <!-- 向数据库增加一条记录 -->
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CooperationOrgan"
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CooperationOrgan"
             useGeneratedKeys="true" keyColumn="id" keyProperty="id">
             useGeneratedKeys="true" keyColumn="id" keyProperty="id">
         INSERT INTO cooperation_organ
         INSERT INTO cooperation_organ
-        (id_,name_,linkman_,job_,mobile_no_,address_,organ_id_,create_time_,update_time_,ownership_type_,is_enable_,full_job_resource_)
-        VALUES(#{id},#{name},#{linkman},#{job},#{mobileNo},#{address},#{organId},now(),now(),
-        #{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{isEnable},#{fullJobResource})
+        (id_, name_, linkman_, job_, mobile_no_, address_, organ_id_, create_time_, update_time_, ownership_type_,
+         is_enable_, full_job_resource_)
+        VALUES (#{id}, #{name}, #{linkman}, #{job}, #{mobileNo}, #{address}, #{organId}, now(), now(),
+                #{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{isEnable},
+                #{fullJobResource})
     </insert>
     </insert>
 
 
     <!-- 根据主键查询一条记录 -->
     <!-- 根据主键查询一条记录 -->
@@ -85,24 +91,26 @@
 
 
     <!-- 根据主键删除一条记录 -->
     <!-- 根据主键删除一条记录 -->
     <update id="delete">
     <update id="delete">
-		UPDATE cooperation_organ SET del_flag_ = 1 WHERE id_ =#{id}
-	</update>
+        UPDATE cooperation_organ
+        SET del_flag_ = 1
+        WHERE id_ = #{id}
+    </update>
 
 
     <!-- 分页查询 -->
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="ExtCooperationOrgan"
     <select id="queryPage" resultMap="ExtCooperationOrgan"
             parameterType="map">
             parameterType="map">
         SELECT co.*,o.name_ organ_name_ FROM cooperation_organ co left join organization o on co.organ_id_ = o.id_
         SELECT co.*,o.name_ organ_name_ FROM cooperation_organ co left join organization o on co.organ_id_ = o.id_
         <where>
         <where>
-                co.del_flag_ != 1
+            co.del_flag_ != 1
             <if test="search != null">
             <if test="search != null">
                 AND (co.id_ LIKE CONCAT('%',#{search},'%') OR co.name_ LIKE CONCAT('%',#{search},'%'))
                 AND (co.id_ LIKE CONCAT('%',#{search},'%') OR co.name_ LIKE CONCAT('%',#{search},'%'))
             </if>
             </if>
-	        <if test="organId != null">
-	            AND FIND_IN_SET(co.organ_id_,#{organId})
-	        </if>
-	        <if test="isEnable != null">
-	            AND co.is_enable_ = #{isEnable}
-	        </if>
+            <if test="organId != null">
+                AND FIND_IN_SET(co.organ_id_,#{organId})
+            </if>
+            <if test="isEnable != null">
+                AND co.is_enable_ = #{isEnable}
+            </if>
             <if test="fullJobResource != null">
             <if test="fullJobResource != null">
                 AND co.full_job_resource_ = #{fullJobResource}
                 AND co.full_job_resource_ = #{fullJobResource}
             </if>
             </if>
@@ -113,42 +121,70 @@
 
 
     <!-- 查询当前表的总记录数 -->
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
     <select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM cooperation_organ
+        SELECT COUNT(*) FROM cooperation_organ
         <where>
         <where>
             del_flag_ != 1
             del_flag_ != 1
             <if test="search != null">
             <if test="search != null">
                 AND (id_ LIKE CONCAT('%',#{search},'%') OR name_ LIKE CONCAT('%',#{search},'%'))
                 AND (id_ LIKE CONCAT('%',#{search},'%') OR name_ LIKE CONCAT('%',#{search},'%'))
             </if>
             </if>
-	        <if test="organId != null">
-	            AND FIND_IN_SET(organ_id_,#{organId})
-	        </if>
-	        <if test="isEnable != null">
-	            AND is_enable_ = #{isEnable}
-	        </if>
+            <if test="organId != null">
+                AND FIND_IN_SET(organ_id_,#{organId})
+            </if>
+            <if test="isEnable != null">
+                AND is_enable_ = #{isEnable}
+            </if>
             <if test="fullJobResource != null">
             <if test="fullJobResource != null">
                 AND full_job_resource_ = #{fullJobResource}
                 AND full_job_resource_ = #{fullJobResource}
             </if>
             </if>
         </where>
         </where>
-	</select>
+    </select>
 
 
     <select id="queryByOrganId" resultMap="CooperationOrgan">
     <select id="queryByOrganId" resultMap="CooperationOrgan">
-        SELECT * FROM cooperation_organ WHERE FIND_IN_SET(organ_id_,#{organId}) AND del_flag_ != 1 AND is_enable_ = 1
+        SELECT *
+        FROM cooperation_organ
+        WHERE FIND_IN_SET(organ_id_, #{organId})
+          AND del_flag_ != 1
+          AND is_enable_ = 1
     </select>
     </select>
 
 
     <select id="queryNameByIds" resultType="java.util.Map">
     <select id="queryNameByIds" resultType="java.util.Map">
-        SELECT co.id_ 'key',co.name_ 'value' FROM cooperation_organ co
-        WHERE FIND_IN_SET(co.id_,#{organIds}) AND co.del_flag_ != 1
+        SELECT co.id_ 'key', co.name_ 'value'
+        FROM cooperation_organ co
+        WHERE FIND_IN_SET(co.id_, #{organIds})
+          AND co.del_flag_ != 1
     </select>
     </select>
 
 
     <select id="getOrganFullJobResourceNum" resultType="com.ym.mec.biz.dal.dto.OrganFullJobResourceNumDto">
     <select id="getOrganFullJobResourceNum" resultType="com.ym.mec.biz.dal.dto.OrganFullJobResourceNumDto">
-        SELECT organ_id_ organId,COUNT(*) num FROM cooperation_organ
-        WHERE full_job_resource_ =1 AND del_flag_ = 0
+        SELECT organ_id_ organId, COUNT(*) num
+        FROM cooperation_organ
+        WHERE full_job_resource_ = 1
+          AND del_flag_ = 0
         GROUP BY organ_id_
         GROUP BY organ_id_
     </select>
     </select>
 
 
     <!-- 获取全部使用中的合作单位 -->
     <!-- 获取全部使用中的合作单位 -->
     <select id="getAllCooperationOrgan" resultMap="CooperationOrgan">
     <select id="getAllCooperationOrgan" resultMap="CooperationOrgan">
-        SELECT * FROM cooperation_organ
+        SELECT *
+        FROM cooperation_organ
         WHERE del_flag_ = 0
         WHERE del_flag_ = 0
     </select>
     </select>
+
+    <!-- 获取合作单位乐团的的学校缴费 -->
+    <select id="getCooperationOrganCalender4School"
+            resultMap="com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao.MusicGroupPaymentCalender">
+        SELECT mgpc.*
+        FROM music_group mg
+                 LEFT JOIN music_group_payment_calender mgpc ON mgpc.music_group_id_ = mg.id_
+        WHERE mg.cooperation_organ_id_ = #{cooperationOrganId}
+          AND mgpc.pay_user_type_ = 'SCHOOL'
+          AND mgpc.status_ IN ('NO', 'OPEN', 'OVER')
+        ORDER BY mgpc.payment_valid_start_date_ ASC
+    </select>
+
+    <select id="getCooperationOrganByIds" resultMap="CooperationOrgan">
+        SELECT * FROM cooperation_organ WHERE id_ IN
+        <foreach collection="ids" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
 </mapper>
 </mapper>

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

@@ -2416,6 +2416,7 @@
             cs.schoole_id_,
             cs.schoole_id_,
             cs.create_time_,
             cs.create_time_,
             cs.is_lock_,
             cs.is_lock_,
+            cs.organ_id_,
             s.name_ schoole_name_,
             s.name_ schoole_name_,
             o.name_ organ_name_,
             o.name_ organ_name_,
             CASE WHEN COUNT(sa.id_) > 0 THEN 1 ELSE 0 END isCallNames,
             CASE WHEN COUNT(sa.id_) > 0 THEN 1 ELSE 0 END isCallNames,

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -168,6 +168,17 @@
 		</foreach>
 		</foreach>
 	</delete>
 	</delete>
 
 
+	<delete id="deleteWithCourseAndTeachRole">
+		DELETE FROM course_schedule_teacher_salary
+		WHERE course_schedule_id_ IN
+			<foreach collection="courseIds" item="courseScheduleId" open="(" close=")" separator=",">
+				#{courseScheduleId}
+			</foreach>
+			<if test="teachType!=null">
+				AND teacher_role_ = #{teachType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			</if>
+	</delete>
+
 	<sql id="courseScheduleTeacherSalaryQueryPage">
 	<sql id="courseScheduleTeacherSalaryQueryPage">
 		<where>
 		<where>
 			(cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
 			(cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)

+ 3 - 2
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -674,14 +674,15 @@
     </select>
     </select>
 
 
     <select id="findUserMusicGroupCooperationOrgan" resultMap="com.ym.mec.biz.dal.dao.CooperationOrganDao.CooperationOrgan">
     <select id="findUserMusicGroupCooperationOrgan" resultMap="com.ym.mec.biz.dal.dao.CooperationOrganDao.CooperationOrgan">
-        SELECT co.name_
+        SELECT co.name_,su.real_name_ linkman_
         FROM music_group mg
         FROM music_group mg
         LEFT JOIN student_registration sr ON sr.music_group_id_ = mg.id_
         LEFT JOIN student_registration sr ON sr.music_group_id_ = mg.id_
         LEFT JOIN cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
         LEFT JOIN cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
+        LEFT JOIN sys_user su ON su.id_ = mg.educational_teacher_id_
         WHERE sr.user_id_ = #{userId}
         WHERE sr.user_id_ = #{userId}
         AND mg.status_ IN ('PREPARE','PROGRESS','PAUSE','CLOSE')
         AND mg.status_ IN ('PREPARE','PROGRESS','PAUSE','CLOSE')
         AND sr.payment_status_ = 2
         AND sr.payment_status_ = 2
-        ORDER BY sr.id_ ASC
+        ORDER BY sr.id_ DESC
         LIMIT 1
         LIMIT 1
     </select>
     </select>
 
 

+ 40 - 0
mec-biz/src/main/resources/config/mybatis/StudentInstrumentMapper.xml

@@ -229,4 +229,44 @@
         ORDER BY spo.create_time_ ASC
         ORDER BY spo.create_time_ ASC
     </select>
     </select>
 
 
+    <resultMap id="StudentInstrumentExportDto" type="com.ym.mec.biz.dal.dto.StudentInstrumentExportDto"
+               extends="StudentInstrument">
+        <result column="order_no_" property="orderNo"/>
+        <result column="trans_no_" property="transNo"/>
+        <result column="type_" property="type"/>
+    </resultMap>
+
+    <select id="getInstruments" resultMap="StudentInstrumentExportDto">
+        SELECT si.*,spo.create_time_,o.name_ organName,su.username_
+        studentName,spo.order_no_,spo.trans_no_,spod.is_renew_ type_,spo.id_
+        FROM student_payment_order_detail spod
+        LEFT JOIN student_payment_order spo ON spo.id_ = spod.payment_order_id_
+        LEFT JOIN student_instrument si ON si.id_ = spod.student_instrument_id_
+        LEFT JOIN organization o ON spo.organ_id_ = o.id_
+        LEFT JOIN sys_user su ON su.id_ = si.student_id_
+        WHERE spo.status_ = 'SUCCESS' AND spod.type_='MAINTENANCE'
+        <if test="startTime != null ">
+            AND spo.create_time_ >= #{startTime}
+        </if>
+        <if test="endTime != null ">
+            <![CDATA[AND spo.create_time_ <= #{endTime}]]>
+        </if>
+        <if test="organId != null">
+            AND FIND_IN_SET(spo.organ_id_,#{organId})
+        </if>
+    </select>
+
+    <select id="findStudentMusicGroup"
+            resultMap="com.ym.mec.biz.dal.dao.StudentRegistrationDao.StudentRegistration">
+        SELECT sr.id_, sr.user_id_, mg.name_ class_group_name_, su.real_name_ parents_name_, sr.music_group_status_
+        FROM student_registration sr
+                 LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+                 LEFT JOIN sys_user su ON su.id_ = mg.repair_user_id_
+        WHERE sr.user_id_ = #{userId}
+          AND sr.payment_status_ = 2
+          AND mg.status_ IN ('PREPARE', 'PROGRESS', 'PAUSE', 'CLOSE')
+        ORDER BY sr.id_ DESC
+        LIMIT 1
+    </select>
+
 </mapper>
 </mapper>

+ 8 - 6
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderDetailMapper.xml

@@ -16,6 +16,8 @@
         <result column="payment_order_id_" property="paymentOrderId"/>
         <result column="payment_order_id_" property="paymentOrderId"/>
         <result column="kit_group_purchase_type_" property="kitGroupPurchaseType"
         <result column="kit_group_purchase_type_" property="kitGroupPurchaseType"
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="student_instrument_id_" property="studentInstrumentId"/>
+        <result column="is_renew_" property="isRenew"/>
         <collection property="goodsList" ofType="com.ym.mec.biz.dal.entity.Goods">
         <collection property="goodsList" ofType="com.ym.mec.biz.dal.entity.Goods">
             <result column="goods_id_" property="id"/>
             <result column="goods_id_" property="id"/>
             <result column="goods_name_" property="name"/>
             <result column="goods_name_" property="name"/>
@@ -50,9 +52,9 @@
         </selectKey>
         </selectKey>
         -->
         -->
         INSERT INTO student_payment_order_detail
         INSERT INTO student_payment_order_detail
-        (id_,type_,goods_id_list_,price_,create_time_,update_time_,payment_order_id_,kit_group_purchase_type_)
-        VALUES(#{id},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-        #{goodsIdList},#{price},now(),now(),#{paymentOrderId},#{kitGroupPurchaseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+        (id_,type_,goods_id_list_,price_,create_time_,update_time_,payment_order_id_,kit_group_purchase_type_,student_instrument_id_,is_renew_)
+        VALUES(#{id},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{goodsIdList},#{price},now(),now(),
+        #{paymentOrderId},#{kitGroupPurchaseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{studentInstrumentId},#{isRenew})
     </insert>
     </insert>
 
 
     <!-- 根据主键查询一条记录 -->
     <!-- 根据主键查询一条记录 -->
@@ -106,12 +108,12 @@
 
 
     <insert id="batchAdd" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
     <insert id="batchAdd" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
         INSERT INTO student_payment_order_detail
         INSERT INTO student_payment_order_detail
-        (id_,type_,goods_id_list_,price_,remit_fee_,create_time_,update_time_,payment_order_id_,kit_group_purchase_type_)
-        VALUES
+        (id_,type_,goods_id_list_,price_,remit_fee_,create_time_,update_time_,payment_order_id_,kit_group_purchase_type_,student_instrument_id_,is_renew_)
+        VALUE
         <foreach collection="studentPaymentOrderDetailList" item="orderDetail" separator=",">
         <foreach collection="studentPaymentOrderDetailList" item="orderDetail" separator=",">
             (#{orderDetail.id},#{orderDetail.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             (#{orderDetail.id},#{orderDetail.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             #{orderDetail.goodsIdList},#{orderDetail.price},#{orderDetail.remitFee},now(),now(),#{orderDetail.paymentOrderId},
             #{orderDetail.goodsIdList},#{orderDetail.price},#{orderDetail.remitFee},now(),now(),#{orderDetail.paymentOrderId},
-            #{orderDetail.kitGroupPurchaseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+            #{orderDetail.kitGroupPurchaseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{orderDetail.studentInstrumentId},#{orderDetail.isRenew})
         </foreach>
         </foreach>
     </insert>
     </insert>
 
 

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

@@ -666,11 +666,12 @@
     </update>
     </update>
 
 
     <select id="findStudentByMusicGroupIdAndUserId" resultMap="StudentRegistration">
     <select id="findStudentByMusicGroupIdAndUserId" resultMap="StudentRegistration">
-        SELECT s.name_ school_name_,s2.name_ subject_name_,co.name_ remark_ FROM student_registration sr
+        SELECT s.name_ school_name_,s2.name_ subject_name_,co.name_ remark_,su.real_name_ name_ FROM student_registration sr
         LEFT JOIN music_group mg ON mg.id_ =sr.music_group_id_
         LEFT JOIN music_group mg ON mg.id_ =sr.music_group_id_
         LEFT JOIN school s ON mg.school_id_ = s.id_
         LEFT JOIN school s ON mg.school_id_ = s.id_
         LEFT JOIN subject s2 ON sr.actual_subject_id_ = s2.id_
         LEFT JOIN subject s2 ON sr.actual_subject_id_ = s2.id_
         LEFT JOIN cooperation_organ co ON mg.cooperation_organ_id_ = co.id_
         LEFT JOIN cooperation_organ co ON mg.cooperation_organ_id_ = co.id_
+        LEFT JOIN sys_user su on mg.educational_teacher_id_ = su.id_
         WHERE sr.music_group_id_ = #{musicGroupId} AND sr.user_id_ = #{userId} AND sr.payment_status_ =2 ORDER BY sr.id_ DESC LIMIT 1
         WHERE sr.music_group_id_ = #{musicGroupId} AND sr.user_id_ = #{userId} AND sr.payment_status_ =2 ORDER BY sr.id_ DESC LIMIT 1
     </select>
     </select>
     <select id="queryStudentMusicGroup" resultType="java.lang.String">
     <select id="queryStudentMusicGroup" resultType="java.lang.String">

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

@@ -46,6 +46,7 @@
         <result column="subject_name_" property="subjectName"/>
         <result column="subject_name_" property="subjectName"/>
         <result column="educational_teacher_id_" property="educationalTeacherId"/>
         <result column="educational_teacher_id_" property="educationalTeacherId"/>
         <result column="vip_group_category_name_" property="vipGroupCategoryName"/>
         <result column="vip_group_category_name_" property="vipGroupCategoryName"/>
+        <result column="educational_teacher_name_" property="educationalTeacherName" />
     </resultMap>
     </resultMap>
 
 
     <resultMap type="com.ym.mec.biz.dal.entity.School" id="School">
     <resultMap type="com.ym.mec.biz.dal.entity.School" id="School">
@@ -954,11 +955,12 @@
     </select>
     </select>
 
 
     <select id="findVipGroupInfo" resultMap="VipGroup">
     <select id="findVipGroupInfo" resultMap="VipGroup">
-        SELECT vg.*, s.name_ subject_name_, s2.name_ school_name_
+        SELECT vg.*, s.name_ subject_name_, s2.name_ school_name_,su.real_name_ educational_teacher_name_
         FROM vip_group vg
         FROM vip_group vg
                  LEFT JOIN class_group cg on vg.id_ = cg.music_group_id_
                  LEFT JOIN class_group cg on vg.id_ = cg.music_group_id_
                  LEFT JOIN subject s on cg.subject_id_list_ = s.id_
                  LEFT JOIN subject s on cg.subject_id_list_ = s.id_
                  LEFT JOIN school s2 on vg.teacher_school_id_ = s2.id_
                  LEFT JOIN school s2 on vg.teacher_school_id_ = s2.id_
+                 LEFT JOIN sys_user su on vg.educational_teacher_id_ = su.id_
         WHERE vg.id_ = #{id}
         WHERE vg.id_ = #{id}
           AND cg.id_ = #{classGroupId}
           AND cg.id_ = #{classGroupId}
           AND cg.group_type_ = 'VIP'
           AND cg.group_type_ = 'VIP'

+ 17 - 8
mec-web/src/main/java/com/ym/mec/web/controller/CooperationOrganController.java

@@ -5,9 +5,11 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 import com.ym.mec.biz.dal.page.CooperationOrganQueryInfo;
 import com.ym.mec.biz.dal.page.CooperationOrganQueryInfo;
 import com.ym.mec.biz.service.CooperationOrganService;
 import com.ym.mec.biz.service.CooperationOrganService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import io.swagger.annotations.ApiParam;
@@ -61,18 +63,18 @@ public class CooperationOrganController extends BaseController {
     @GetMapping("/queryPage")
     @GetMapping("/queryPage")
     @PreAuthorize("@pcs.hasPermissions('cooperationOrgan/queryPage')")
     @PreAuthorize("@pcs.hasPermissions('cooperationOrgan/queryPage')")
     public Object queryPage(CooperationOrganQueryInfo queryInfo) {
     public Object queryPage(CooperationOrganQueryInfo queryInfo) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed("用户信息获取失败");
-		}
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
         Employee employee = employeeDao.get(sysUser.getId());
         Employee employee = employeeDao.get(sysUser.getId());
         if (StringUtils.isEmpty(queryInfo.getOrganId())) {
         if (StringUtils.isEmpty(queryInfo.getOrganId())) {
             queryInfo.setOrganId(employee.getOrganIdList());
             queryInfo.setOrganId(employee.getOrganIdList());
-        }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+        } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
             return failed("用户所在分部异常");
             return failed("用户所在分部异常");
-        }else {
+        } else {
             List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
             List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
-            if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
+            if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
                 return failed("非法请求");
                 return failed("非法请求");
             }
             }
         }
         }
@@ -82,7 +84,14 @@ public class CooperationOrganController extends BaseController {
     @ApiOperation(value = "根据机构编号获取合作单位(教学点)列表")
     @ApiOperation(value = "根据机构编号获取合作单位(教学点)列表")
     @GetMapping("/queryByOrganId")
     @GetMapping("/queryByOrganId")
     @PreAuthorize("@pcs.hasPermissions('cooperationOrgan/queryByOrganId')")
     @PreAuthorize("@pcs.hasPermissions('cooperationOrgan/queryByOrganId')")
-    public Object queryByOrganId(String organId){
+    public Object queryByOrganId(String organId) {
         return succeed(cooperationOrganService.queryByOrganId(organId));
         return succeed(cooperationOrganService.queryByOrganId(organId));
     }
     }
+
+    @ApiOperation(value = "根据合作单位id获取学校缴费")
+    @GetMapping("/getCalenders")
+    @PreAuthorize("@pcs.hasPermissions('cooperationOrgan/getCalenders')")
+    public HttpResponseResult<List<MusicGroupPaymentCalender>> getCalenders(Integer id) {
+        return succeed(cooperationOrganService.getCooperationOrganCalender4School(id));
+    }
 }
 }

+ 12 - 0
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -382,6 +382,18 @@ public class CourseScheduleController extends BaseController {
         return succeed();
         return succeed();
     }
     }
 
 
+    @ApiOperation(value = "课程调整-批量")
+    @PostMapping("/batchCourseAdjust")
+    @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchCourseAdjust')")
+    public Object batchCourseAdjust(@RequestBody BatchCourseAdjustDto batchCourseAdjustInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        batchCourseAdjustInfo.setOperatorId(sysUser.getId());
+        return courseScheduleService.batchCourseAdjust(batchCourseAdjustInfo);
+    }
+
     @ApiOperation(value = "课程顺延")
     @ApiOperation(value = "课程顺延")
     @PostMapping("/coursePostpone")
     @PostMapping("/coursePostpone")
     @PreAuthorize("@pcs.hasPermissions('courseSchedule/coursePostpone')")
     @PreAuthorize("@pcs.hasPermissions('courseSchedule/coursePostpone')")

+ 15 - 0
mec-web/src/main/java/com/ym/mec/web/controller/PracticeGroupManageController.java

@@ -138,6 +138,21 @@ public class PracticeGroupManageController extends BaseController {
     @GetMapping("studentBuys")
     @GetMapping("studentBuys")
     @PreAuthorize("@pcs.hasPermissions('practiceGroupManage/studentBuys')")
     @PreAuthorize("@pcs.hasPermissions('practiceGroupManage/studentBuys')")
     public Object studentBuys(StudentBuyPracticeQueryInfo queryInfo) {
     public Object studentBuys(StudentBuyPracticeQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        Employee employee = employeeDao.get(sysUser.getId());
+        if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+            queryInfo.setOrganId(employee.getOrganIdList());
+        } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
+            return failed("用户所在分部异常");
+        } else {
+            List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+            if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
+                return failed("非法请求");
+            }
+        }
         return succeed(practiceGroupService.studentBuys(queryInfo));
         return succeed(practiceGroupService.studentBuys(queryInfo));
     }
     }
 }
 }

+ 76 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentInstrumentController.java

@@ -1,23 +1,32 @@
 package com.ym.mec.web.controller;
 package com.ym.mec.web.controller;
 
 
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dao.StudentInstrumentDao;
 import com.ym.mec.biz.dal.dao.StudentInstrumentDao;
+import com.ym.mec.biz.dal.dto.RepairGoodsDto;
+import com.ym.mec.biz.dal.dto.StudentInstrumentExportDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.StudentInstrument;
 import com.ym.mec.biz.dal.entity.StudentInstrument;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.StudentRepair;
 import com.ym.mec.biz.dal.page.StudentInstrumentQueryInfo;
 import com.ym.mec.biz.dal.page.StudentInstrumentQueryInfo;
 import com.ym.mec.biz.service.StudentInstrumentService;
 import com.ym.mec.biz.service.StudentInstrumentService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 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.common.page.PageInfo;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.date.DateUtil;
+import com.ym.mec.util.excel.POIUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.annotations.Param;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -26,10 +35,14 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 @RequestMapping("studentInstrument")
 @RequestMapping("studentInstrument")
 @Api(tags = "乐器与乐保服务")
 @Api(tags = "乐器与乐保服务")
@@ -180,4 +193,67 @@ public class StudentInstrumentController extends BaseController {
         studentInstrument.setDelFlag(1);
         studentInstrument.setDelFlag(1);
         return succeed(studentInstrumentService.updateStudentInstrument(studentInstrument));
         return succeed(studentInstrumentService.updateStudentInstrument(studentInstrument));
     }
     }
+
+    @ApiOperation(value = "导出")
+    @GetMapping("/export")
+    @PreAuthorize("@pcs.hasPermissions('studentInstrument/export')")
+    public void export(Date startTime, Date endTime, HttpServletResponse response) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("用户信息获取失败");
+        }
+        Employee employee = employeeDao.get(sysUser.getId());
+        String organId = null;
+        if (StringUtils.isEmpty(employee.getOrganIdList())) {
+            throw new BizException("用户所在分部异常");
+        } else {
+            organId = employee.getOrganIdList();
+        }
+        if (startTime != null) {
+            startTime = DateUtil.trunc(startTime);
+        }
+        if (endTime != null) {
+            endTime = DateUtil.getLastTimeWithDay(endTime);
+        }
+
+        List<StudentInstrumentExportDto> instruments = studentInstrumentDao.getInstruments(startTime, endTime, organId);
+
+        if (instruments.size() <= 0) {
+            throw new BizException("没有可导出的记录");
+        }
+        for (StudentInstrumentExportDto instrument : instruments) {
+            StudentRegistration studentMusicGroup = studentInstrumentDao.findStudentMusicGroup(instrument.getStudentId());
+            if (studentMusicGroup != null) {
+                instrument.setRepairerName(studentMusicGroup.getParentsName());
+                instrument.setMusicGroupName(studentMusicGroup.getClassGroupName());
+                instrument.setStudentStatus(studentMusicGroup.getMusicGroupStatus());
+            }
+        }
+
+        OutputStream outputStream = response.getOutputStream();
+        HSSFWorkbook workbook = null;
+        try {
+            String[] header = {"交易流水号", "订单号", "订单日期", "分部", "学员姓名", "学员编号", "所属乐团", "学员状态", "维修技师", "乐器名称", "具体型号", "乐保类型"};
+            String[] body = {"transNo", "orderNo", "createTime", "organName", "studentName", "studentId", "musicGroupName", "studentStatus.msg", "repairerName", "goodsName", "specification", "type == '0' ? '新增' : '续费'"};
+            workbook = POIUtil.exportExcel(header, body, instruments);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=maintenance-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+            workbook.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    workbook.close();
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 }
 }