فهرست منبع

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

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
	mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml
zouxuan 4 سال پیش
والد
کامیت
90d0e27d12
100فایلهای تغییر یافته به همراه3273 افزوده شده و 426 حذف شده
  1. 18 4
      cms/src/main/java/com/ym/mec/cms/controller/NewsController.java
  2. 10 0
      cms/src/main/java/com/ym/mec/cms/controller/queryinfo/NewsInformationQueryInfo.java
  3. 1 1
      cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsInformationServiceImpl.java
  4. 22 11
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUser.java
  5. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/handler/BaseAuthenticationSuccessEventHandler.java
  6. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java
  7. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java
  8. 54 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/config/NioAudioInputStream.java
  9. 55 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/config/SoundCompareConfig.java
  10. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  11. 1 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java
  12. 39 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CooperationOrganLinkmanDao.java
  13. 49 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  14. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java
  15. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeInfoDao.java
  16. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeVisitDao.java
  17. 10 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java
  18. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  19. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupNewsDao.java
  20. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPerformanceDao.java
  21. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupQuestionnaireDao.java
  22. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupTrainPlanDao.java
  23. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PhotoAlbumDao.java
  24. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PhotoDao.java
  25. 12 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/QuestionnaireUserResultDao.java
  26. 9 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java
  27. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentInstrumentDao.java
  28. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDetailDao.java
  29. 34 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  30. 84 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CirculationUser.java
  31. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleRateDto.java
  32. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EduHomeworkCardDto.java
  33. 33 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EmployeeDto.java
  34. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EmployeeInfoDto.java
  35. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/Mapper.java
  36. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicCardDto.java
  37. 33 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupBasicDto.java
  38. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentCalenderDto.java
  39. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupStudentsDto.java
  40. 65 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicPitchDetailDto.java
  41. 109 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/OAFinancialDto.java
  42. 107 10
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SoundCompareHelper.java
  43. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentApplyInstrumentDto.java
  44. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentAttendanceViewDto.java
  45. 161 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentRegisterInstrumentsDetailDto.java
  46. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceComplaintsDto.java
  47. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceDto.java
  48. 46 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/WaitCourseTrainPlanDto.java
  49. 53 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/WebSocketClientDetail.java
  50. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CooperationOrgan.java
  51. 81 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CooperationOrganLinkman.java
  52. 23 12
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Employee.java
  53. 109 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/EmployeeInfo.java
  54. 91 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/EmployeeVisit.java
  55. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java
  56. 137 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupNews.java
  57. 170 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPerformance.java
  58. 125 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupQuestionnaire.java
  59. 114 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupTrainPlan.java
  60. 118 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupTrainPlanSaveDto.java
  61. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicMemberDto.java
  62. 125 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Photo.java
  63. 150 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/PhotoAlbum.java
  64. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/QuestionnaireUserResult.java
  65. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentAttendance.java
  66. 90 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicCompareRecord.java
  67. 35 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/DeviceTypeEnum.java
  68. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/IndexErrorType.java
  69. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  70. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/PayStatus.java
  71. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/QuestionnaireActiveTypeEnum.java
  72. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/StaffStatusEnum.java
  73. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/YesOrNoEnum.java
  74. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ArrearageStudentsQueryInfo.java
  75. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/EmployeeInfoQueryInfo.java
  76. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/EndCourseScheduleQueryInfo.java
  77. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupPerformanceQueryInfo.java
  78. 51 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupRecordStudentQueryInfo.java
  79. 76 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/PhotoQueryInfo.java
  80. 40 361
      mec-biz/src/main/java/com/ym/mec/biz/handler/WebSocketHandler.java
  81. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  82. 1 2
      mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherOrderService.java
  83. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ContractService.java
  84. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CooperationOrganLinkmanService.java
  85. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  86. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeInfoService.java
  87. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java
  88. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeVisitService.java
  89. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupNewsService.java
  90. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderDetailService.java
  91. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderService.java
  92. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentStudentCourseDetailService.java
  93. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPerformanceService.java
  94. 32 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupQuestionnaireService.java
  95. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  96. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupTrainPlanService.java
  97. 37 0
      mec-biz/src/main/java/com/ym/mec/biz/service/OaUserService.java
  98. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/service/PhotoAlbumService.java
  99. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/service/PhotoService.java
  100. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ReplacementInstrumentActivityService.java

+ 18 - 4
cms/src/main/java/com/ym/mec/cms/controller/NewsController.java

@@ -8,6 +8,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -26,6 +27,7 @@ import com.ym.mec.cms.service.SysNewsInformationService;
 import com.ym.mec.cms.service.SysNewsTypeService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.web.WebFeignService;
 import com.yonge.log.model.AuditLogAnnotation;
 
 @RestController
@@ -44,16 +46,28 @@ public class NewsController extends BaseController {
 	
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
-
+	
+	@Autowired
+	private WebFeignService webFeignService;
+	
 	@ApiOperation("资讯列表分页查询")
 	@GetMapping(value = "/list")
 	public Object getList(NewsInformationQueryInfo queryInfo) {
+
 		SysUser user = sysUserFeignService.queryUserInfo();
-		if (user == null || user.getId() == null) {
-			queryInfo.setOrganId(43);
+		
+		String clientId = queryInfo.getClientId();
+		
+		if (!StringUtils.equalsIgnoreCase("student", clientId)) {
+			queryInfo.setOrganIdList(webFeignService.queryOrganIdByUserId(user.getId(), clientId));
 		} else {
-			queryInfo.setOrganId(user.getOrganId());
+			if (user == null || user.getId() == null) {
+				queryInfo.setOrganId(43);
+			} else {
+				queryInfo.setOrganId(user.getOrganId());
+			}
 		}
+		
 		Map<String, Object> params = new HashMap<String, Object>();
 		MapUtil.populateMap(params, queryInfo);
 		int count = sysNewsInformationDao.queryCount(params);

+ 10 - 0
cms/src/main/java/com/ym/mec/cms/controller/queryinfo/NewsInformationQueryInfo.java

@@ -35,6 +35,8 @@ public class NewsInformationQueryInfo extends QueryInfo {
 	
 	private String clientName;
 	
+	private String clientId;
+	
 	private String organIdList;
 	
 	private Date date;
@@ -126,4 +128,12 @@ public class NewsInformationQueryInfo extends QueryInfo {
 	public void setOrganIdList(String organIdList) {
 		this.organIdList = organIdList;
 	}
+
+	public String getClientId() {
+		return clientId;
+	}
+
+	public void setClientId(String clientId) {
+		this.clientId = clientId;
+	}
 }

+ 1 - 1
cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsInformationServiceImpl.java

@@ -23,8 +23,8 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-import com.ym.mec.im.WebFeignService;
 import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.web.WebFeignService;
 
 @Service
 public class SysNewsInformationServiceImpl extends BaseServiceImpl<Long, SysNewsInformation> implements SysNewsInformationService {

+ 22 - 11
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUser.java

@@ -135,11 +135,14 @@ public class SysUser implements Serializable{
 
 	private String certificateType;
 
-	@ApiModelProperty(value = "部门id",required = false)
-	private Integer deptId;
+	@ApiModelProperty(value = "部门ids",required = false)
+	private String deptIds;
 
 	@ApiModelProperty(value = "岗位id",required = false)
-	private Integer postId;
+	private String postIds;
+
+	@ApiModelProperty(value = "岗位管理部门",required = false)
+	private String postDeptIds;
 
 	@ApiModelProperty(value = "银行卡号",required = false)
 	private String bankCard;
@@ -434,20 +437,20 @@ public class SysUser implements Serializable{
 		this.currentGradeNum = currentGradeNum;
 	}
 
-	public Integer getDeptId() {
-		return deptId;
+	public String getDeptIds() {
+		return deptIds;
 	}
 
-	public void setDeptId(Integer deptId) {
-		this.deptId = deptId;
+	public void setDeptIds(String deptId) {
+		this.deptIds = deptId;
 	}
 
-	public Integer getPostId() {
-		return postId;
+	public String getPostIds() {
+		return postIds;
 	}
 
-	public void setPostId(Integer postId) {
-		this.postId = postId;
+	public void setPostIds(String postIds) {
+		this.postIds = postIds;
 	}
 
 	public String getBankCard() {
@@ -465,4 +468,12 @@ public class SysUser implements Serializable{
 	public void setOpenBankAddress(String openBankAddress) {
 		this.openBankAddress = openBankAddress;
 	}
+
+	public String getPostDeptIds() {
+		return postDeptIds;
+	}
+
+	public void setPostDeptIds(String postDeptIds) {
+		this.postDeptIds = postDeptIds;
+	}
 }

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/handler/BaseAuthenticationSuccessEventHandler.java

@@ -12,7 +12,7 @@ import javax.servlet.http.HttpServletResponse;
 import com.ym.mec.common.entity.ImResult;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.im.ImFeignService;
-import com.ym.mec.im.WebFeignService;
+import com.ym.mec.web.WebFeignService;
 
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -23,7 +23,7 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
-import com.ym.mec.im.WebFeignService;
+import com.ym.mec.web.WebFeignService;
 
 @Service
 public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implements SysUserService {

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

@@ -1,6 +1,5 @@
 package com.ym.mec.auth.web.controller;
 
-import com.ym.mec.im.WebFeignService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -40,6 +39,7 @@ import com.ym.mec.thirdparty.eseal.ESealPlugin;
 import com.ym.mec.thirdparty.user.realname.RealnameAuthenticationPluginContext;
 import com.ym.mec.thirdparty.user.realname.provider.LinkfaceRealnameAuthenticationPlugin;
 import com.ym.mec.util.date.DateUtil;
+import com.ym.mec.web.WebFeignService;
 
 @RestController()
 @RequestMapping("user")

+ 54 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/config/NioAudioInputStream.java

@@ -0,0 +1,54 @@
+package com.ym.mec.biz.dal.config;
+
+import be.tarsos.dsp.io.TarsosDSPAudioFormat;
+import be.tarsos.dsp.io.TarsosDSPAudioInputStream;
+import org.springframework.stereotype.Component;
+
+import javax.sound.sampled.AudioFormat;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+
+/**
+ * @Author Joburgess
+ * @Date 2021/8/4 0004
+ */
+public class NioAudioInputStream implements TarsosDSPAudioInputStream {
+
+    private RandomAccessFile randomAccessFile;
+    private AudioFormat format;
+
+    public NioAudioInputStream() {
+    }
+
+    public NioAudioInputStream(RandomAccessFile randomAccessFile, AudioFormat audioFormat) {
+        this.randomAccessFile = randomAccessFile;
+        this.format = audioFormat;
+    }
+
+    @Override
+    public long skip(long bytesToSkip) throws IOException {
+        return randomAccessFile.skipBytes((int) bytesToSkip);
+    }
+
+    @Override
+    public int read(byte[] b, int off, int len) throws IOException {
+        return randomAccessFile.read(b, off, len);
+    }
+
+    @Override
+    public void close() throws IOException {
+        randomAccessFile.close();
+    }
+
+    @Override
+    public TarsosDSPAudioFormat getFormat() {
+        boolean isSigned = format.getEncoding() == AudioFormat.Encoding.PCM_SIGNED;
+        TarsosDSPAudioFormat tarsosDSPFormat = new TarsosDSPAudioFormat(format.getSampleRate(), format.getSampleSizeInBits(), format.getChannels(), isSigned, format.isBigEndian());
+        return tarsosDSPFormat;
+    }
+
+    @Override
+    public long getFrameLength() {
+        return 0;
+    }
+}

+ 55 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/config/SoundCompareConfig.java

@@ -0,0 +1,55 @@
+package com.ym.mec.biz.dal.config;
+
+import be.tarsos.dsp.pitch.PitchProcessor;
+
+import javax.sound.sampled.AudioFormat;
+
+/**
+ * @Author Joburgess
+ * @Date 2021/8/4 0004
+ */
+public class SoundCompareConfig {
+
+    /**
+     * @describe 采样率
+     */
+    public float simpleRate = 44100;
+    /**
+     * @describe 采样大小
+     */
+    public int simpleSize = 1024;
+    /**
+     * @describe 帧覆盖大小
+     */
+    public int overlap = 256;
+
+    /**
+     * @describe 音频解析格式
+     */
+    public AudioFormat audioFormat = new AudioFormat(simpleRate, 16, 1, true, false);
+    /**
+     * @describe 音频解析算法
+     */
+    public PitchProcessor.PitchEstimationAlgorithm algo = PitchProcessor.PitchEstimationAlgorithm.FFT_YIN;
+
+    /**
+     * @describe 有效分贝大小
+     */
+    public int validDb = -70;
+    /**
+     * @describe 有效频率
+     */
+    public int validFrequency = 20;
+    /**
+     * @describe 音准前后音分误差范围
+     */
+    public int intonationCentsRange = 3;
+    /**
+     * @describe 节奏有效阈值
+     */
+    public float cadenceValidDuty = 0.09f;
+    /**
+     * @describe 完整性有效频率误差范围
+     */
+    public int integrityFrequencyRange = 30;
+}

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -10,6 +10,7 @@ import com.ym.mec.biz.dal.dto.ClassGroupTeachersDto;
 import com.ym.mec.biz.dal.dto.ConditionDto;
 import com.ym.mec.biz.dal.dto.CourseListDto;
 import com.ym.mec.biz.dal.dto.HighClassGroupDto;
+import com.ym.mec.biz.dal.dto.Mapper;
 import com.ym.mec.biz.dal.dto.MusicGroupClassGroupDto;
 import com.ym.mec.biz.dal.dto.MusicGroupCourseScheduleDto;
 import com.ym.mec.biz.dal.dto.StudentPayInfoDto;
@@ -456,6 +457,16 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     List<ConditionDto> queryStudentClassGroup(@Param("musicGroupId") String musicGroupId, @Param("teacherId") Integer teacherId);
 
     /**
+     * 获取学员班级列表
+     *
+     * @param musicGroupId
+     * @param studentId
+     * @return
+     */
+    List<ClassGroup> queryStudentClassGroups(@Param("musicGroupId") String musicGroupId,
+                                             @Param("studentId") Integer studentId);
+
+    /**
      * 批量新增班级上的课次数
      *
      * @param classGroupList
@@ -836,4 +847,6 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     List<Long> queryGroupClassGroupIds(Integer userId);
 
     int countCourseNum(@Param("classGroupId") Integer classGroupId, @Param("teachMode") String teachMode);
+    
+    List<Mapper> countTeacherByMusicGroupId(String musicGroupId);
 }

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

@@ -38,10 +38,9 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
     /**
      * 获取乐团报名的云教练订单
      * @param studentId
-     * @param musicGroupId
      * @return
      */
-    List<CloudTeacherOrder> getStudentCloudTeacherOrder(@Param("studentId") Integer studentId, @Param("musicGroupId") String musicGroupId);
+    List<CloudTeacherOrder> getStudentCloudTeacherOrder(@Param("studentId") Integer studentId);
     
     /**
      * 根据订单编号查询订单详情

+ 39 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CooperationOrganLinkmanDao.java

@@ -0,0 +1,39 @@
+package com.ym.mec.biz.dal.dao;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.CooperationOrganLinkman;
+
+public interface CooperationOrganLinkmanDao extends BaseDAO<Integer, CooperationOrganLinkman> {
+
+	/**
+	 * 批量新增
+	 * @param cooperationOrganLinkmanList
+	 * @return
+	 */
+	long batchInsert(List<CooperationOrganLinkman> cooperationOrganLinkmanList);
+
+	/**
+	 * 批量修改
+	 * @param cooperationOrganLinkmanList
+	 * @return
+	 */
+	int batchUpdate(@Param("cooperationOrganLinkmans") List<CooperationOrganLinkman> cooperationOrganLinkmanList);
+
+	/**
+	 * 根据合作单位编号查询联系人
+	 * @param cooperationOrganId
+	 * @return
+	 */
+	List<CooperationOrganLinkman> queryByCooperationOrganId(Integer cooperationOrganId);
+
+	/**
+	 * 根据合作单位删除记录
+	 * @param cooperationOrganId
+	 * @return
+	 */
+	int deleteByCooperationOrganId(Integer cooperationOrganId);
+}

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

@@ -1118,6 +1118,24 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<Map<Integer, Long>> countPreTotalNumByClassGroupId(@Param("classGroupIds") List<Integer> classGroupIds);
 
     /**
+     * 根据班级编号count总课时
+     *
+     * @param classGroupIds
+     * @return
+     */
+    List<Map<Integer, Long>> countTotalNumByClassGroupIds(@Param("classGroupIds") List<Integer> classGroupIds,
+                                                         @Param("startClassDate") Date startClassDate,
+                                                         @Param("endClassDate") Date endClassDate);
+
+    /**
+     * 根据班级编号获取课程类型
+     *
+     * @param musicGroupTrainPlanSaveDto
+     * @return
+     */
+    List<String> queryCourseTypeByClassGroupIds(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    /**
      * 根据班级编号count当前课时(已上总数)
      *
      * @param classGroupIds
@@ -1126,6 +1144,16 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<Map<Integer, Long>> countExpendNumByClassGroupId(@Param("classGroupIds") List<Integer> classGroupIds);
 
     /**
+     * 根据班级编号count当前课时(已上总数)
+     *
+     * @param classGroupIds
+     * @return
+     */
+    List<Map<Integer, Long>> countExpendNumByClassGroupIds(@Param("classGroupIds") List<Integer> classGroupIds,
+                                                           @Param("startClassDate") Date startClassDate,
+                                                           @Param("endClassDate") Date endClassDate);
+
+    /**
      * 根据班级编号count剩余课时(未上)
      *
      * @param classGroupIds
@@ -1907,4 +1935,25 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     int queryOverPreCourseListByMusicGroupId(String musicGroupId);
+
+    /**
+     * 获取课程时间列表
+     * @param musicGroupTrainPlanSaveDto
+     * @return
+     */
+    List<String> queryClassDateList(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    /**
+     * 统计班级内指定类型的课程数量
+     * @param musicGroupTrainPlanSaveDto
+     * @return
+     */
+    int countCourseByClassAndType(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    /**
+     * 获取当前课程在该学期的排序号
+     * @param schoolTerm
+     * @return
+     */
+    int getCourseNumNo(@Param("schoolTerm") MusicGroupTrainPlanSaveDto schoolTerm);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java

@@ -194,4 +194,11 @@ public interface EmployeeDao extends BaseDAO<Integer, Employee> {
      * @return
      */
     List<String> queryVipGroupIdByUserId(Integer levelUserId);
+
+    /**
+     * 获取用户信息
+     * @param userIds
+     * @return
+     */
+    List<SysUser> getUsers(@Param("userIds") List<Integer> userIds);
 }

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

@@ -1,9 +1,10 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.EmployeeInfoDto;
 import com.ym.mec.biz.dal.entity.EmployeeInfo;
 import com.ym.mec.common.dal.BaseDAO;
 
 public interface EmployeeInfoDao extends BaseDAO<Long, EmployeeInfo> {
 
-	
+	EmployeeInfoDto queryDetail(Long id);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeVisitDao.java

@@ -0,0 +1,11 @@
+package com.ym.mec.biz.dal.dao;
+
+import java.util.List;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.EmployeeVisit;
+
+public interface EmployeeVisitDao extends BaseDAO<Long, EmployeeVisit> {
+
+	List<EmployeeVisit> queryByEmployeeInfoId(Long employeeInfoId);
+}

+ 10 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -148,14 +148,20 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
                                                 @Param("courseStatus") CourseStatusEnum courseStatus);
 
     List<IndexBaseMonthData> getGroupCourseDataWithGroup(@Param("dayStr") String dayStr,
-                                                @Param("groupType")GroupType groupType,
-                                                @Param("courseStatus") CourseStatusEnum courseStatus,
-                                                         @Param("teachMode") TeachModeEnum teachMode);
+                                                        @Param("startDate") String startDate,
+                                                        @Param("endDate") String endDate,
+                                                        @Param("groupType")GroupType groupType,
+                                                        @Param("courseStatus") CourseStatusEnum courseStatus,
+                                                         @Param("teachMode") TeachModeEnum teachMode,
+                                                         @Param("organIds") List<Integer> organIds);
 
     List<OrganVipGroupCategoryCourseNumDto> getVipGroupCategoryCourseData(@Param("dayStr") String dayStr,
+                                                                          @Param("startDate") String startDate,
+                                                                          @Param("endDate") String endDate,
                                                                           @Param("groupType")GroupType groupType,
                                                                           @Param("courseStatus") CourseStatusEnum courseStatus,
-                                                                          @Param("teachMode") TeachModeEnum teachMode);
+                                                                          @Param("teachMode") TeachModeEnum teachMode,
+                                                                          @Param("organIds") List<Integer> organIds);
 
     int countLessThenThreeClassGroupNum(@Param("organIds") Set<Integer> organIds, @Param("educationUserId") Integer educationUserId);
 

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

@@ -21,6 +21,13 @@ import java.util.Set;
 public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     MusicGroup getLocked(String id);
+    
+    /**
+     * 查询乐团基本信息
+     * @param id
+     * @return
+     */
+    MusicGroupBasicDto queryBasicInfo(String id);
 
     /**
      * 获取学员所在乐团详情列表
@@ -451,4 +458,6 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     List<MusicMemberDto> queryMusicMemberList(Map<String, Object> params);
+    
+	int updateIsShowRecordOfStudent(@Param("musicGroupId") String musicGroupId, @Param("isShowRecordOfStudent") Boolean isShowRecordOfStudent);
 }

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

@@ -0,0 +1,9 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.MusicGroupNews;
+
+public interface MusicGroupNewsDao extends BaseDAO<Long, MusicGroupNews> {
+
+	
+}

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

@@ -0,0 +1,19 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.MusicGroupPerformance;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface MusicGroupPerformanceDao extends BaseDAO<Integer, MusicGroupPerformance> {
+
+
+    List<MusicGroupPerformance> findNoStart(@Param("educationUserId") Integer educationUserId,
+                                            @Param("organIds") String organIds);
+
+    List<MusicGroupPerformance> queryNoStart(Map<String, Object> params);
+
+    int countNoStart(Map<String, Object> params);
+}

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

@@ -0,0 +1,9 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.MusicGroupQuestionnaire;
+
+public interface MusicGroupQuestionnaireDao extends BaseDAO<Integer, MusicGroupQuestionnaire> {
+
+	
+}

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupTrainPlanDao.java

@@ -0,0 +1,36 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.dto.WaitCourseTrainPlanDto;
+import com.ym.mec.biz.dal.entity.MusicGroupTrainPlan;
+import com.ym.mec.biz.dal.entity.MusicGroupTrainPlanSaveDto;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface MusicGroupTrainPlanDao extends BaseDAO<Integer, MusicGroupTrainPlan> {
+
+
+    int add(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    /**
+     * 课程数量大于课程规划
+     * @param musicGroupTrainPlanSaveDto
+     * @return
+     */
+    List<WaitCourseTrainPlanDto> queryWaitCourseTrainPlan(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    /**
+     * 课程数量小于课程规划
+     * @param musicGroupTrainPlanSaveDto
+     * @return
+     */
+    List<WaitCourseTrainPlanDto> queryWaitCourseTrainPlan1(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    List<String> findAllPlan(Map<String, Object> paramMap);
+
+    int countPlanNum(@Param("dto") MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    List<MusicGroupTrainPlan> queryPlan(@Param("schoolTerm") MusicGroupTrainPlanSaveDto schoolTerm);
+}

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PhotoAlbumDao.java

@@ -0,0 +1,21 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.PhotoAlbum;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface PhotoAlbumDao extends BaseDAO<Integer, PhotoAlbum> {
+
+
+    List<Map<Integer,Long>> countTotalNumByAlbumIds(@Param("albumIds") List<Integer> albumIds, @Param("clientShow") YesOrNoEnum clientShow);
+
+    PhotoAlbum findByTypeAndGroupId(@Param("musicGroupId") String musicGroupId, @Param("type") String type);
+
+    void batchUpdate(@Param("photoAlbumList") List<PhotoAlbum> photoAlbumList);
+
+    void deleteByIds(@Param("ids") String ids);
+}

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

@@ -0,0 +1,19 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.Photo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface PhotoDao extends BaseDAO<Integer, Photo> {
+
+
+    void deleteByAlbumIds(String albumIds);
+
+    int deleteByIds(@Param("ids") String ids);
+
+    int batchInsert(@Param("photoList") List<Photo> photoList);
+
+    int batchUpdate(@Param("photoList") List<Photo> photoList);
+}

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.QuestionnaireResultDto;
 import com.ym.mec.biz.dal.dto.QuestionnaireUserResultDto;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
@@ -18,11 +19,21 @@ public interface QuestionnaireUserResultDao extends BaseDAO<Long, QuestionnaireU
      */
     int countByTopicId(Integer topicId);
 
-    void delByActiveIdAndUserId(@Param("activityId") Integer activityId, @Param("userId") Integer userId);
+    void delByActiveIdAndUserId(@Param("activityId") Integer activityId,
+                                @Param("userId") Integer userId,
+                                @Param("activeType") String activeType);
 
     void batchInsert1(@Param("questionnaireUserResultList") List<QuestionnaireUserResult> questionnaireUserResultList);
 
     int findDetailCount(Map<String, Object> params);
 
     List<QuestionnaireUserResultDto> queryDetailPage(Map<String, Object> params);
+
+    /**
+     * 获取乐团满意度答案
+     * @param activeId
+     * @param activeType
+     * @return
+     */
+    List<QuestionnaireResultDto> getQuestionResult(@Param("activeId") Integer activeId, @Param("activeType") String activeType);
 }

+ 9 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.dto.StudentExercisesSituationDto;
 import com.ym.mec.biz.dal.dto.TeacherExercisesServiceDto;
 import com.ym.mec.biz.dal.dto.TeacherServeDto;
+import com.ym.mec.biz.dal.entity.IndexBaseMonthData;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation;
 import com.ym.mec.common.dal.BaseDAO;
@@ -107,10 +108,10 @@ public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Lon
      * @describe 统计指定星期的服务记录数量
      * @author Joburgess
      * @date 2020/12/25 0025
-     * @param sunday:
+     * @param monday:
      * @return int
      */
-    int countWeekServiceNum(@Param("sunday") String sunday);
+    int countWeekServiceNum(@Param("monday") String monday);
 
     /**
      * @describe 获取指定周指定学员的服务指标
@@ -135,4 +136,10 @@ public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Lon
                                                                             @Param("teacherIds") List<Integer> teacherIds,
                                                                             @Param("serveType") String serveType);
 
+    List<IndexBaseMonthData> getHomeworkData(@Param("startDay") String startDay,
+                                             @Param("endDay") String endDay,
+                                             @Param("musicGroupId") String musicGroupId,
+                                             @Param("type") String type,
+                                             @Param("studentIds") List<Integer> studentIds);
+
 }

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

@@ -18,6 +18,8 @@ public interface StudentInstrumentDao extends BaseDAO<Long, StudentInstrument> {
      * @return
      */
     int batchAdd(@Param("studentInstruments") List<StudentInstrument> studentInstruments);
+    
+    int batchModify(@Param("studentInstruments") List<StudentInstrument> studentInstruments);
 
     /**
      * 批量修改
@@ -91,4 +93,6 @@ public interface StudentInstrumentDao extends BaseDAO<Long, StudentInstrument> {
      * @return
      */
     StudentInstrument getStudentMaintenance(@Param("studentId") Integer studentId, @Param("musicGroupId") String musicGroupId);
+    
+    List<StudentInstrument> queryById(@Param("idList") List<Long> idList);
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDetailDao.java

@@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.biz.dal.dto.Mapper;
 import com.ym.mec.biz.dal.dto.MusicalListDetailDto;
+import com.ym.mec.biz.dal.dto.StudentApplyInstrumentDto;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
@@ -153,4 +154,6 @@ public interface StudentPaymentOrderDetailDao extends BaseDAO<Long, StudentPayme
      * @return
      */
     List<Mapper> getInstrumentNumInMusicApply(@Param("musicGroupIds") List<String> musicGroupIds);
+    
+	List<StudentApplyInstrumentDto> queryByType(@Param("musicGroupId") String musicGroupId, @Param("orderDetailType") OrderDetailTypeEnum orderDetailType);
 }

+ 34 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -421,7 +421,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @param userId
      * @return
      */
-    List<StudentMusicGroupDto> queryStudentMusicGroupInfo(Integer userId);
+    List<StudentMusicGroupDto> queryStudentMusicGroupInfo(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId);
 
     /**
      * 获取学员剩余课程费用
@@ -633,5 +633,37 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
                                                           @Param("educationUserId") Integer educationUserId,
                                                           @Param("organIds") String organIds);
     
-    List<SubjectApplyDetailDto> queryStudentApplyDetail(@Param("musicGroupId") String musicGroupId);
+    /**
+     * 统计指定乐团在读的声部人数
+     * @param musicGroupId
+     * @return
+     */
+    List<Mapper> countStudentWithSubjectByMusicGroupId(String musicGroupId);
+
+    /**
+     * 统计各年级人数
+     * @param musicGroupId
+     * @return
+     */
+    List<Mapper> countStudentWithGradeByMusicGroupId(String musicGroupId);
+    
+    /**
+     * 查询学生报名购买的乐器详情
+     * @param params
+     * @return
+     */
+    List<StudentRegisterInstrumentsDetailDto> queryStudentRegisterInstrumentsDetailList(Map<String, Object> params);
+    
+    int queryStudentRegisterInstrumentsDetailCount(Map<String, Object> params);
+	
+	List<SubjectApplyDetailDto> queryStudentApplyDetail(@Param("musicGroupId") String musicGroupId);
+
+    void cleanMusicMember(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId);
+
+    /**
+     * 会员结束前15天自动创建乐团缴费
+     * @param pushMemberRenew
+     * @return
+     */
+    List<Map<String,String>> queryAutoCreateStudentMap(@Param("pushMemberRenew") String pushMemberRenew);
 }

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

@@ -0,0 +1,84 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.SysUserTsign;
+import io.swagger.annotations.ApiModelProperty;
+
+public class CirculationUser {
+
+    @ApiModelProperty(value = "OA审批id", required = false)
+    private Integer workOrder;
+
+    @ApiModelProperty(value = "审批节点", required = false)
+    private String state;
+
+    @ApiModelProperty(value = "审批意见", required = false)
+    private String remarks;
+
+    @ApiModelProperty(value = "审批用户id", required = false)
+    private Integer userId;
+
+    @ApiModelProperty(value = "审批用户姓名", required = false)
+    private String realName;
+
+    @ApiModelProperty(value = "审批用户身份证号", required = false)
+    private String idCard;
+
+    @ApiModelProperty(value = "审批用户手机号", required = false)
+    private String phone;
+
+    public Integer getWorkOrder() {
+        return workOrder;
+    }
+
+    public void setWorkOrder(Integer workOrder) {
+        this.workOrder = workOrder;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+
+    public String getIdCard() {
+        return idCard;
+    }
+
+    public void setIdCard(String idCard) {
+        this.idCard = idCard;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+}

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

@@ -18,6 +18,16 @@ public class CourseScheduleRateDto {
 
     private Boolean isDefault = false;
 
+    private String coursePlan;
+
+    public String getCoursePlan() {
+        return coursePlan;
+    }
+
+    public void setCoursePlan(String coursePlan) {
+        this.coursePlan = coursePlan;
+    }
+
     public Boolean getIsDefault() {
         return isDefault;
     }

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

@@ -26,6 +26,8 @@ public class EduHomeworkCardDto {
 
     private String teacherName;
 
+    private String teacherAvatar;
+
     private Integer exceptStudentNum;
 
     private Integer submitStudentNum;
@@ -34,6 +36,14 @@ public class EduHomeworkCardDto {
 
     private Date createTime;
 
+    public String getTeacherAvatar() {
+        return teacherAvatar;
+    }
+
+    public void setTeacherAvatar(String teacherAvatar) {
+        this.teacherAvatar = teacherAvatar;
+    }
+
     public String getContent() {
         return content;
     }

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EmployeeDto.java

@@ -60,6 +60,15 @@ public class EmployeeDto {
 
     private String postalCode;
 
+    @ApiModelProperty(value = "OA部门ids",required = false)
+    private String deptIds;
+
+    @ApiModelProperty(value = "OA岗位ids",required = false)
+    private String postIds;
+
+    @ApiModelProperty(value = "岗位管理范围",required = false)
+    private String postDeptIds;
+
     public String getOrganIdStr() {
         return organIdStr;
     }
@@ -187,4 +196,28 @@ public class EmployeeDto {
     public void setDemissionDate(Date demissionDate) {
         this.demissionDate = demissionDate;
     }
+
+    public String getDeptIds() {
+        return deptIds;
+    }
+
+    public void setDeptIds(String deptIds) {
+        this.deptIds = deptIds;
+    }
+
+    public String getPostIds() {
+        return postIds;
+    }
+
+    public void setPostIds(String postIds) {
+        this.postIds = postIds;
+    }
+
+    public String getPostDeptIds() {
+        return postDeptIds;
+    }
+
+    public void setPostDeptIds(String postDeptIds) {
+        this.postDeptIds = postDeptIds;
+    }
 }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EmployeeInfoDto.java

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.ym.mec.biz.dal.entity.EmployeeInfo;
+import com.ym.mec.biz.dal.entity.EmployeeVisit;
+
+public class EmployeeInfoDto extends EmployeeInfo {
+
+	private List<EmployeeVisit> employeeVisitList = new ArrayList<EmployeeVisit>();
+
+	public List<EmployeeVisit> getEmployeeVisitList() {
+		return employeeVisitList;
+	}
+
+	public void setEmployeeVisitList(List<EmployeeVisit> employeeVisitList) {
+		this.employeeVisitList = employeeVisitList;
+	}
+}

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

@@ -8,6 +8,16 @@ public class Mapper {
 
 	private Integer courseScheduleId;
 
+	private String type;
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
 	public Integer getCourseScheduleId() {
 		return courseScheduleId;
 	}

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

@@ -42,6 +42,9 @@ public class MusicCardDto {
 
     @ApiModelProperty(value = "vip课数量",required = true)
     private Integer vipClassNum;
+	
+    @ApiModelProperty(value = "学生端是否展示乐团档案",required = true)
+	private Boolean isShowRecordOfStudent = false;
 
     public String getPaymentStatus() {
         return paymentStatus;
@@ -141,4 +144,12 @@ public class MusicCardDto {
     public void setSubjectId(String subjectId) {
         this.subjectId = subjectId;
     }
+
+	public Boolean getIsShowRecordOfStudent() {
+		return isShowRecordOfStudent;
+	}
+
+	public void setIsShowRecordOfStudent(Boolean isShowRecordOfStudent) {
+		this.isShowRecordOfStudent = isShowRecordOfStudent;
+	}
 }

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupBasicDto.java

@@ -0,0 +1,33 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.ym.mec.biz.dal.entity.CooperationOrganLinkman;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+
+public class MusicGroupBasicDto extends MusicGroup {
+
+	List<CooperationOrganLinkman> cooperationOrganLinkmanList = new ArrayList<CooperationOrganLinkman>();
+	
+	@ApiModelProperty(value = "衔接老师手机号码",required = false)
+	private String transactionTeacherPhone;
+
+	public List<CooperationOrganLinkman> getCooperationOrganLinkmanList() {
+		return cooperationOrganLinkmanList;
+	}
+
+	public void setCooperationOrganLinkmanList(List<CooperationOrganLinkman> cooperationOrganLinkmanList) {
+		this.cooperationOrganLinkmanList = cooperationOrganLinkmanList;
+	}
+
+	public String getTransactionTeacherPhone() {
+		return transactionTeacherPhone;
+	}
+
+	public void setTransactionTeacherPhone(String transactionTeacherPhone) {
+		this.transactionTeacherPhone = transactionTeacherPhone;
+	}
+}

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

@@ -52,6 +52,16 @@ public class MusicGroupPaymentCalenderDto {
 	//会员等级编号
 	private Integer memberRankSettingId;
 
+	private Boolean autoCreate = false;
+
+	public Boolean getAutoCreate() {
+		return autoCreate;
+	}
+
+	public void setAutoCreate(Boolean autoCreate) {
+		this.autoCreate = autoCreate;
+	}
+
 	public Integer getMemberValidDate() {
 		return memberValidDate;
 	}

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

@@ -118,6 +118,17 @@ public class MusicGroupStudentsDto{
     @ApiModelProperty(value = "声部更换详情",required = false)
     private SubjectChange subjectChange;
 
+    @ApiModelProperty(value = "会员截止时间",required = false)
+    private Date membershipEndTime;
+
+    public Date getMembershipEndTime() {
+        return membershipEndTime;
+    }
+
+    public void setMembershipEndTime(Date membershipEndTime) {
+        this.membershipEndTime = membershipEndTime;
+    }
+
     public String getCarePackageStr() {
         return carePackageStr;
     }

+ 65 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicPitchDetailDto.java

@@ -11,15 +11,69 @@ public class MusicPitchDetailDto {
     @ApiModelProperty("时间戳ms")
     private int timeStamp;
 
+    @ApiModelProperty("结束时间戳")
+    private int endTimeStamp;
+
     @ApiModelProperty("持续时长ms")
     private int duration;
 
     @ApiModelProperty("频率Hz")
     private float frequency;
 
+    private float avgFrequency;
+
+    @ApiModelProperty("分贝")
+    private float decibel;
+
     @ApiModelProperty("小节数")
     private int measureIndex;
 
+    @ApiModelProperty("音符数")
+    private int musicalNotesIndex;
+
+    @ApiModelProperty("不需要评分")
+    private Boolean dontEvaluating;
+
+    public float getDecibel() {
+        return decibel;
+    }
+
+    public void setDecibel(float decibel) {
+        this.decibel = decibel;
+    }
+
+    public float getAvgFrequency() {
+        return avgFrequency;
+    }
+
+    public void setAvgFrequency(float avgFrequency) {
+        this.avgFrequency = avgFrequency;
+    }
+
+    public Boolean getDontEvaluating() {
+        return dontEvaluating;
+    }
+
+    public void setDontEvaluating(Boolean dontEvaluating) {
+        this.dontEvaluating = dontEvaluating;
+    }
+
+    public int getMusicalNotesIndex() {
+        return musicalNotesIndex;
+    }
+
+    public void setMusicalNotesIndex(int musicalNotesIndex) {
+        this.musicalNotesIndex = musicalNotesIndex;
+    }
+
+    public int getEndTimeStamp() {
+        return endTimeStamp;
+    }
+
+    public void setEndTimeStamp(int endTimeStamp) {
+        this.endTimeStamp = endTimeStamp;
+    }
+
     public MusicPitchDetailDto() {
     }
 
@@ -28,12 +82,23 @@ public class MusicPitchDetailDto {
         this.frequency = frequency;
     }
 
+    public MusicPitchDetailDto(int timeStamp, int endTimeStamp) {
+        this.timeStamp = timeStamp;
+        this.endTimeStamp = endTimeStamp;
+    }
+
     public MusicPitchDetailDto(int timeStamp, int duration, float frequency) {
         this.timeStamp = timeStamp;
         this.duration = duration;
         this.frequency = frequency;
     }
 
+    public MusicPitchDetailDto(int timeStamp, float frequency, double decibel) {
+        this.timeStamp = timeStamp;
+        this.frequency = frequency;
+        this.decibel = (float) decibel;
+    }
+
     public int getTimeStamp() {
         return timeStamp;
     }

+ 109 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/OAFinancialDto.java

@@ -0,0 +1,109 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.SysUserTsign;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public class OAFinancialDto {
+
+    @ApiModelProperty(value = "公司名称", required = false)
+    private String organName;
+
+    @ApiModelProperty(value = "费用申请人", required = false)
+    private String realName;
+
+    @ApiModelProperty(value = "费用类型", required = false)
+    private String feeType;
+
+    @ApiModelProperty(value = "报销金额", required = false)
+    private BigDecimal totalMoney;
+
+    @ApiModelProperty(value = "是否有借款 (是 否)", required = false)
+    private String hasLoan;
+
+    @ApiModelProperty(value = "情况说明", required = false)
+    private String memo;
+
+    @ApiModelProperty(value = "审批人数据", required = false)
+    private List<CirculationUser> circulationUsers;
+
+    @ApiModelProperty(value = "执行人数据", required = false)
+    private List<CirculationUser> executors;
+
+    @ApiModelProperty(value = "签章数据", required = false)
+    private List<SysUserTsign> sysUserTsigns;
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+
+    public String getFeeType() {
+        return feeType;
+    }
+
+    public void setFeeType(String feeType) {
+        this.feeType = feeType;
+    }
+
+    public BigDecimal getTotalMoney() {
+        return totalMoney;
+    }
+
+    public void setTotalMoney(BigDecimal totalMoney) {
+        this.totalMoney = totalMoney;
+    }
+
+    public String getHasLoan() {
+        return hasLoan;
+    }
+
+    public void setHasLoan(String hasLoan) {
+        this.hasLoan = hasLoan;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+    public List<CirculationUser> getCirculationUsers() {
+        return circulationUsers;
+    }
+
+    public void setCirculationUsers(List<CirculationUser> circulationUsers) {
+        this.circulationUsers = circulationUsers;
+    }
+
+    public List<CirculationUser> getExecutors() {
+        return executors;
+    }
+
+    public void setExecutors(List<CirculationUser> executors) {
+        this.executors = executors;
+    }
+
+    public List<SysUserTsign> getSysUserTsigns() {
+        return sysUserTsigns;
+    }
+
+    public void setSysUserTsigns(List<SysUserTsign> sysUserTsigns) {
+        this.sysUserTsigns = sysUserTsigns;
+    }
+}

+ 107 - 10
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SoundCompareHelper.java

@@ -1,31 +1,50 @@
 package com.ym.mec.biz.dal.dto;
 
+import be.tarsos.dsp.AudioEvent;
+import be.tarsos.dsp.SilenceDetector;
+import be.tarsos.dsp.pitch.PitchDetectionHandler;
+import be.tarsos.dsp.pitch.PitchDetectionResult;
+import com.ym.mec.biz.dal.enums.DeviceTypeEnum;
+import com.ym.mec.biz.service.impl.SoundCompareHandler;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.util.CollectionUtils;
 
 import java.io.RandomAccessFile;
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Author Joburgess
  * @Date 2021/6/22 0022
  */
-public class SoundCompareHelper {
+public class SoundCompareHelper implements PitchDetectionHandler {
+
+    @ApiModelProperty(value = "设备类型")
+    private DeviceTypeEnum deviceType;
 
     @ApiModelProperty(value = "伴奏编号")
     private Integer musicScoreId;
 
+    @ApiModelProperty(value = "声部编号")
+    private Integer subjectId;
+
     @ApiModelProperty(value = "小节开始时间")
-    private double measureStartTime;
+    private double measureStartTime = 0;
 
     @ApiModelProperty
     private RandomAccessFile accessFile;
 
+    @ApiModelProperty(value = "录音文件地址")
+    private String recordFilePath;
+
     @ApiModelProperty(value = "小节xml信息字典")
     private Map<Integer, List<MusicPitchDetailDto>> measureXmlInfoMap = new HashMap<>();
 
     @ApiModelProperty(value = "小节结束时间字典")
-    private Map<Integer, Integer> measureEndTime = new HashMap<>();
+    private Map<Integer, MusicPitchDetailDto> measureEndTime = new HashMap<>();
 
     @ApiModelProperty(value = "录音音频信息")
     private List<MusicPitchDetailDto> recordMeasurePithInfo = new ArrayList<>();
@@ -33,10 +52,53 @@ public class SoundCompareHelper {
     @ApiModelProperty(value = "小节分数记录")
     private Map<String, BigDecimal> userScoreMap = new HashMap<>();
 
-    private Map<Integer, Map<String, BigDecimal>> userMeasureScoreMap = new HashMap<>();
+    private Map<Integer, Map<String, Object>> userMeasureScoreMap = new HashMap<>();
+
+    @ApiModelProperty(value = "音符频率字典")
+    private Map<Integer, Float> musicalNotePitchMap = new HashMap<>();
 
     @ApiModelProperty(value = "偏移时间量,解决客户端录音播放不同步导致的声音留白")
-    private int offsetTime;
+    private int offsetTime = -1;
+
+    private List<MusicPitchDetailDto> musicXmlInfos;
+
+    private String clientId;
+    /**
+     * @describe 分贝检测器
+     */
+    public SilenceDetector silenceDetector = new SilenceDetector();
+
+    public List<MusicPitchDetailDto> getMusicXmlInfos() {
+        return musicXmlInfos;
+    }
+
+    public void setMusicXmlInfos(List<MusicPitchDetailDto> musicXmlInfos) {
+        this.musicXmlInfos = musicXmlInfos;
+    }
+
+    public Map<Integer, Float> getMusicalNotePitchMap() {
+        return musicalNotePitchMap;
+    }
+
+    public void setMusicalNotePitchMap(Map<Integer, Float> musicalNotePitchMap) {
+        this.musicalNotePitchMap = musicalNotePitchMap;
+    }
+
+    public Integer getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Integer subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public DeviceTypeEnum getDeviceType() {
+        return deviceType;
+    }
+
+    public void setDeviceType(DeviceTypeEnum deviceType) {
+        this.deviceType = deviceType;
+    }
 
     public int getOffsetTime() {
         return offsetTime;
@@ -58,10 +120,26 @@ public class SoundCompareHelper {
         return accessFile;
     }
 
+    public String getRecordFilePath() {
+        return recordFilePath;
+    }
+
+    public void setRecordFilePath(String recordFilePath) {
+        this.recordFilePath = recordFilePath;
+    }
+
     public void setAccessFile(RandomAccessFile accessFile) {
         this.accessFile = accessFile;
     }
 
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
     public double getMeasureStartTime() {
         return measureStartTime;
     }
@@ -78,11 +156,11 @@ public class SoundCompareHelper {
         this.measureXmlInfoMap = measureXmlInfoMap;
     }
 
-    public Map<Integer, Integer> getMeasureEndTime() {
+    public Map<Integer, MusicPitchDetailDto> getMeasureEndTime() {
         return measureEndTime;
     }
 
-    public void setMeasureEndTime(Map<Integer, Integer> measureEndTime) {
+    public void setMeasureEndTime(Map<Integer, MusicPitchDetailDto> measureEndTime) {
         this.measureEndTime = measureEndTime;
     }
 
@@ -102,11 +180,30 @@ public class SoundCompareHelper {
         this.userScoreMap = userScoreMap;
     }
 
-    public Map<Integer, Map<String, BigDecimal>> getUserMeasureScoreMap() {
+    public Map<Integer, Map<String, Object>> getUserMeasureScoreMap() {
         return userMeasureScoreMap;
     }
 
-    public void setUserMeasureScoreMap(Map<Integer, Map<String, BigDecimal>> userMeasureScoreMap) {
+    public void setUserMeasureScoreMap(Map<Integer, Map<String, Object>> userMeasureScoreMap) {
         this.userMeasureScoreMap = userMeasureScoreMap;
     }
+
+    @Override
+    public void handlePitch(PitchDetectionResult pitchDetectionResult, AudioEvent audioEvent) {
+        int timeStamp = (int) (measureStartTime + audioEvent.getTimeStamp()*1000);
+        float pitch = pitchDetectionResult.getPitch();
+        if(offsetTime == -1 && !DeviceTypeEnum.IOS.equals(deviceType) && pitch>0){
+            int preTimeStamp = CollectionUtils.isEmpty(recordMeasurePithInfo)?0:recordMeasurePithInfo.get(recordMeasurePithInfo.size()-1).getTimeStamp();
+            offsetTime = timeStamp - (timeStamp - preTimeStamp)/2;
+            for (Map.Entry<Integer, MusicPitchDetailDto> musicPitchDetailDtoEntry : measureEndTime.entrySet()) {
+                musicPitchDetailDtoEntry.getValue().setTimeStamp(musicPitchDetailDtoEntry.getValue().getTimeStamp() + offsetTime);
+                musicPitchDetailDtoEntry.getValue().setEndTimeStamp(musicPitchDetailDtoEntry.getValue().getEndTimeStamp() + offsetTime);
+            }
+        }
+        if(silenceDetector.currentSPL()< SoundCompareHandler.soundCompareConfig.validDb){
+            pitch = -1;
+        }
+//            LOGGER.info("时间:{}, 频率:{}, 分贝:{}", timeStamp, pitch, silenceDetecor.currentSPL());
+        recordMeasurePithInfo.add(new MusicPitchDetailDto(timeStamp, pitch, silenceDetector.currentSPL()));
+    }
 }

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

@@ -0,0 +1,44 @@
+package com.ym.mec.biz.dal.dto;
+
+public class StudentApplyInstrumentDto {
+
+	private String musicGroupId;
+	
+	private Integer userId;
+	
+	private Long studentInstrumentId;
+	
+	private Long studentPyamentOrderId;
+
+	public String getMusicGroupId() {
+		return musicGroupId;
+	}
+
+	public void setMusicGroupId(String musicGroupId) {
+		this.musicGroupId = musicGroupId;
+	}
+
+	public Integer getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Integer userId) {
+		this.userId = userId;
+	}
+
+	public Long getStudentInstrumentId() {
+		return studentInstrumentId;
+	}
+
+	public void setStudentInstrumentId(Long studentInstrumentId) {
+		this.studentInstrumentId = studentInstrumentId;
+	}
+
+	public Long getStudentPyamentOrderId() {
+		return studentPyamentOrderId;
+	}
+
+	public void setStudentPyamentOrderId(Long studentPyamentOrderId) {
+		this.studentPyamentOrderId = studentPyamentOrderId;
+	}
+}

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

@@ -30,6 +30,9 @@ public class StudentAttendanceViewDto {
     @ApiModelProperty(value = "科目名称",required = false)
     private String subjectName;
 
+    @ApiModelProperty(value = "年级",required = false)
+    private Integer currentGradeNum;
+
     @ApiModelProperty(value = "学生姓名",required = false)
     private String userName;
 
@@ -47,6 +50,14 @@ public class StudentAttendanceViewDto {
 
     private Boolean beMerged;
 
+    public Integer getCurrentGradeNum() {
+        return currentGradeNum;
+    }
+
+    public void setCurrentGradeNum(Integer currentGradeNum) {
+        this.currentGradeNum = currentGradeNum;
+    }
+
     public Boolean getBeMerged() {
         return beMerged;
     }

+ 161 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentRegisterInstrumentsDetailDto.java

@@ -0,0 +1,161 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+public class StudentRegisterInstrumentsDetailDto {
+
+	@ApiModelProperty(value = "学生编号", required = false)
+	private Integer userId;
+
+	@ApiModelProperty(value = "学生姓名", required = false)
+	private String name;
+
+	@ApiModelProperty(value = "学生手机号码", required = false)
+	private String phone;
+
+	@ApiModelProperty(value = "性别(0,女  1,男", required = false)
+	private Integer gender;
+
+	@ApiModelProperty(value = "当前所在年级", required = false)
+	private Integer currentGradeNum;
+
+	@ApiModelProperty(value = "当前所在年级", required = false)
+	private String currentGrade;
+
+	@ApiModelProperty(value = "实际科目", required = false)
+	private Integer actualSubjectId;
+
+	@ApiModelProperty(value = "实际科目名称", required = false)
+	private String subjectName;
+
+	@ApiModelProperty(value = "乐器名称")
+	private String goodsName;
+
+	@ApiModelProperty(value = "乐器品牌")
+	private String goodsBrand;
+
+	@ApiModelProperty(value = "乐器规格")
+	private String specification;
+
+	private Date goodsBuyTime;
+
+	@ApiModelProperty(value = "乐保开始时间")
+	private Date insuranceStartTime;
+
+	@ApiModelProperty(value = "乐保结束时间")
+	private Date insuranceEndTime;
+
+	public Integer getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Integer userId) {
+		this.userId = userId;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getPhone() {
+		return phone;
+	}
+
+	public void setPhone(String phone) {
+		this.phone = phone;
+	}
+
+	public Integer getGender() {
+		return gender;
+	}
+
+	public void setGender(Integer gender) {
+		this.gender = gender;
+	}
+
+	public Integer getCurrentGradeNum() {
+		return currentGradeNum;
+	}
+
+	public void setCurrentGradeNum(Integer currentGradeNum) {
+		this.currentGradeNum = currentGradeNum;
+	}
+
+	public String getCurrentGrade() {
+		return currentGrade;
+	}
+
+	public void setCurrentGrade(String currentGrade) {
+		this.currentGrade = currentGrade;
+	}
+
+	public Integer getActualSubjectId() {
+		return actualSubjectId;
+	}
+
+	public void setActualSubjectId(Integer actualSubjectId) {
+		this.actualSubjectId = actualSubjectId;
+	}
+
+	public String getSubjectName() {
+		return subjectName;
+	}
+
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
+	}
+
+	public String getGoodsName() {
+		return goodsName;
+	}
+
+	public void setGoodsName(String goodsName) {
+		this.goodsName = goodsName;
+	}
+
+	public String getGoodsBrand() {
+		return goodsBrand;
+	}
+
+	public void setGoodsBrand(String goodsBrand) {
+		this.goodsBrand = goodsBrand;
+	}
+
+	public String getSpecification() {
+		return specification;
+	}
+
+	public void setSpecification(String specification) {
+		this.specification = specification;
+	}
+
+	public Date getGoodsBuyTime() {
+		return goodsBuyTime;
+	}
+
+	public void setGoodsBuyTime(Date goodsBuyTime) {
+		this.goodsBuyTime = goodsBuyTime;
+	}
+
+	public Date getInsuranceStartTime() {
+		return insuranceStartTime;
+	}
+
+	public void setInsuranceStartTime(Date insuranceStartTime) {
+		this.insuranceStartTime = insuranceStartTime;
+	}
+
+	public Date getInsuranceEndTime() {
+		return insuranceEndTime;
+	}
+
+	public void setInsuranceEndTime(Date insuranceEndTime) {
+		this.insuranceEndTime = insuranceEndTime;
+	}
+}

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceComplaintsDto.java

@@ -45,6 +45,26 @@ public class TeacherAttendanceComplaintsDto{
 
     private String url;
 
+    private String teachMode;
+
+    private String courseType;
+
+    public String getTeachMode() {
+        return teachMode;
+    }
+
+    public void setTeachMode(String teachMode) {
+        this.teachMode = teachMode;
+    }
+
+    public String getCourseType() {
+        return courseType;
+    }
+
+    public void setCourseType(String courseType) {
+        this.courseType = courseType;
+    }
+
     public UpdateAttendanceEnum getComplaintsType() {
         return complaintsType;
     }

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

@@ -109,6 +109,17 @@ public class TeacherAttendanceDto {
 
     private Integer enableStudentAttendanceTimeRangeVip;
 
+    @ApiModelProperty(value = "课程规划")
+    private String coursePlan;
+
+    public String getCoursePlan() {
+        return coursePlan;
+    }
+
+    public void setCoursePlan(String coursePlan) {
+        this.coursePlan = coursePlan;
+    }
+
     public int getMemberNum() {
         return memberNum;
     }

+ 46 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/WaitCourseTrainPlanDto.java

@@ -0,0 +1,46 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+
+public class WaitCourseTrainPlanDto {
+
+    private Integer classGroupId;
+
+    private CourseSchedule.CourseScheduleType scheduleType;
+
+    private Integer num;
+
+    private String classGroupName;
+
+    public Integer getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Integer classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
+    public CourseSchedule.CourseScheduleType getScheduleType() {
+        return scheduleType;
+    }
+
+    public void setScheduleType(CourseSchedule.CourseScheduleType scheduleType) {
+        this.scheduleType = scheduleType;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    public String getClassGroupName() {
+        return classGroupName;
+    }
+
+    public void setClassGroupName(String classGroupName) {
+        this.classGroupName = classGroupName;
+    }
+}

+ 53 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/WebSocketClientDetail.java

@@ -0,0 +1,53 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.web.socket.WebSocketSession;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2021/8/4 0004
+ */
+public class WebSocketClientDetail {
+
+    private WebSocketSession session;
+
+    @ApiModelProperty(value = "用户登录时间")
+    private Date loginTime;
+
+    @ApiModelProperty(value = "用户退出或断开时间")
+    private Date logoutTime;
+
+    public WebSocketClientDetail() {
+    }
+
+    public WebSocketClientDetail(WebSocketSession session, Date loginTime) {
+        this.session = session;
+        this.loginTime = loginTime;
+    }
+
+    public WebSocketSession getSession() {
+        return session;
+    }
+
+    public void setSession(WebSocketSession session) {
+        this.session = session;
+    }
+
+    public Date getLoginTime() {
+        return loginTime;
+    }
+
+    public void setLoginTime(Date loginTime) {
+        this.loginTime = loginTime;
+    }
+
+    public Date getLogoutTime() {
+        return logoutTime;
+    }
+
+    public void setLogoutTime(Date logoutTime) {
+        this.logoutTime = logoutTime;
+    }
+}

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CooperationOrgan.java

@@ -1,5 +1,8 @@
 package com.ym.mec.biz.dal.entity;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import io.swagger.annotations.ApiModelProperty;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -80,6 +83,8 @@ public class CooperationOrgan {
 
 	@ApiModelProperty(value = "是否全职资源",required = false)
 	private Integer fullJobResource;
+	
+	private List<CooperationOrganLinkman> cooperationOrganLinkmanList = new ArrayList<CooperationOrganLinkman>();
 
 	public String getRealName() {
 		return realName;
@@ -201,6 +206,14 @@ public class CooperationOrgan {
 		this.isEnable = isEnable;
 	}
 
+	public List<CooperationOrganLinkman> getCooperationOrganLinkmanList() {
+		return cooperationOrganLinkmanList;
+	}
+
+	public void setCooperationOrganLinkmanList(List<CooperationOrganLinkman> cooperationOrganLinkmanList) {
+		this.cooperationOrganLinkmanList = cooperationOrganLinkmanList;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 81 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CooperationOrganLinkman.java

@@ -0,0 +1,81 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(cooperation_organ_linkman):
+ */
+public class CooperationOrganLinkman {
+
+	/**  */
+	private Integer id;
+	
+	/**  */
+	private Integer cooperationOrganId;
+	
+	/** 联系人 */
+	private String linkman;
+	
+	/** 电话 */
+	private String mobileNo;
+	
+	/** 岗位 */
+	private String job;
+	
+	/** 创建时间 */
+	private java.util.Date createTime;
+	
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setCooperationOrganId(Integer cooperationOrganId){
+		this.cooperationOrganId = cooperationOrganId;
+	}
+	
+	public Integer getCooperationOrganId(){
+		return this.cooperationOrganId;
+	}
+			
+	public void setLinkman(String linkman){
+		this.linkman = linkman;
+	}
+	
+	public String getLinkman(){
+		return this.linkman;
+	}
+			
+	public void setMobileNo(String mobileNo){
+		this.mobileNo = mobileNo;
+	}
+	
+	public String getMobileNo(){
+		return this.mobileNo;
+	}
+			
+	public void setJob(String job){
+		this.job = job;
+	}
+	
+	public String getJob(){
+		return this.job;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 23 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Employee.java

@@ -54,11 +54,11 @@ public class Employee extends SysUser {
 	@ApiModelProperty(value = "证件号码",required = false)
 	private String certificateNum;
 
-	@ApiModelProperty(value = "部门id",required = false)
-	private Integer depId;
+	@ApiModelProperty(value = "部门ids",required = false)
+	private String depIds;
 
-	@ApiModelProperty(value = "岗位id",required = false)
-	private Integer postId;
+	@ApiModelProperty(value = "岗位ids",required = false)
+	private String postIds;
 
 	@ApiModelProperty(value = "银行卡号",required = false)
 	private String bankCard;
@@ -66,6 +66,9 @@ public class Employee extends SysUser {
 	@ApiModelProperty(value = "开户行",required = false)
 	private String openBankAddress;
 
+	@ApiModelProperty(value = "岗位管理部门",required = false)
+	private String postDeptIds;
+
 	/**  */
 	private java.util.Date updateTime;
 
@@ -228,20 +231,20 @@ public class Employee extends SysUser {
 		return ToStringBuilder.reflectionToString(this);
 	}
 
-	public Integer getDeptId() {
-		return depId;
+	public String getDeptIds() {
+		return depIds;
 	}
 
-	public void setDeptId(Integer deptId) {
-		this.depId = deptId;
+	public void setDeptIds(String deptIds) {
+		this.depIds = deptIds;
 	}
 
-	public Integer getPostId() {
-		return postId;
+	public String getPostIds() {
+		return postIds;
 	}
 
-	public void setPostId(Integer postId) {
-		this.postId = postId;
+	public void setPostIds(String postIds) {
+		this.postIds = postIds;
 	}
 
 	public String getBankCard() {
@@ -259,4 +262,12 @@ public class Employee extends SysUser {
 	public void setOpenBankAddress(String openBankAddress) {
 		this.openBankAddress = openBankAddress;
 	}
+
+	public String getPostDeptIds() {
+		return postDeptIds;
+	}
+
+	public void setPostDeptIds(String postDeptIds) {
+		this.postDeptIds = postDeptIds;
+	}
 }

+ 109 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/EmployeeInfo.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import com.ym.mec.biz.dal.enums.JobNatureEnum;
 import com.ym.mec.biz.dal.enums.JobTypeEnum;
 import com.ym.mec.biz.dal.enums.StaffStatusEnum;
 
@@ -56,6 +57,9 @@ public class EmployeeInfo {
 
 	@ApiModelProperty(value = "声部", required = false)
 	private String subjectIdList;
+
+	@ApiModelProperty(value = "入职声部", required = false)
+	private String jobSubjectIdList;
 	
 	private String subjectName;
 
@@ -68,6 +72,9 @@ public class EmployeeInfo {
 	@ApiModelProperty(value = "入职日期", required = false)
 	private java.util.Date entryDate;
 
+	@ApiModelProperty(value = "入职日期", required = false)
+	private String entryDateStr;
+
 	@ApiModelProperty(value = "分部", required = false)
 	private Integer organId;
 	
@@ -91,6 +98,12 @@ public class EmployeeInfo {
 	@ApiModelProperty(value = "离职日期", required = false)
 	private java.util.Date resignationDate;
 
+	@ApiModelProperty(value = "离职日期", required = false)
+	private String resignationDateStr;
+
+	@ApiModelProperty(value = "离职原因", required = false)
+	private String resignationReason;
+
 	@ApiModelProperty(value = "操作人编号", required = false)
 	private Integer operatorId;
 	
@@ -98,6 +111,22 @@ public class EmployeeInfo {
 
 	@ApiModelProperty(value = "信息来源", required = false)
 	private String sourceFrom;
+	
+	@ApiModelProperty(value = "岗位类别", required = false)
+	private JobTypeEnum jobType;
+	
+	@ApiModelProperty(value = "意向合作方式", required = false)
+	private JobNatureEnum jobNature;
+	
+	private String hrbp;
+
+	private String hrbpName;
+	
+	/** 下次回访时间 */
+	private java.util.Date nextVisitDate;
+
+	/** 下次回访时间 */
+	private String nextVisitDateStr;
 
 	/**  */
 	private java.util.Date createTime;
@@ -105,6 +134,38 @@ public class EmployeeInfo {
 	/**  */
 	private java.util.Date updateTime;
 
+	public String getHrbpName() {
+		return hrbpName;
+	}
+
+	public void setHrbpName(String hrbpName) {
+		this.hrbpName = hrbpName;
+	}
+
+	public String getEntryDateStr() {
+		return entryDateStr;
+	}
+
+	public void setEntryDateStr(String entryDateStr) {
+		this.entryDateStr = entryDateStr;
+	}
+
+	public String getResignationDateStr() {
+		return resignationDateStr;
+	}
+
+	public void setResignationDateStr(String resignationDateStr) {
+		this.resignationDateStr = resignationDateStr;
+	}
+
+	public String getNextVisitDateStr() {
+		return nextVisitDateStr;
+	}
+
+	public void setNextVisitDateStr(String nextVisitDateStr) {
+		this.nextVisitDateStr = nextVisitDateStr;
+	}
+
 	public void setId(Long id) {
 		this.id = id;
 	}
@@ -361,6 +422,54 @@ public class EmployeeInfo {
 		this.operatorName = operatorName;
 	}
 
+	public String getJobSubjectIdList() {
+		return jobSubjectIdList;
+	}
+
+	public void setJobSubjectIdList(String jobSubjectIdList) {
+		this.jobSubjectIdList = jobSubjectIdList;
+	}
+
+	public String getResignationReason() {
+		return resignationReason;
+	}
+
+	public void setResignationReason(String resignationReason) {
+		this.resignationReason = resignationReason;
+	}
+
+	public JobTypeEnum getJobType() {
+		return jobType;
+	}
+
+	public void setJobType(JobTypeEnum jobType) {
+		this.jobType = jobType;
+	}
+
+	public JobNatureEnum getJobNature() {
+		return jobNature;
+	}
+
+	public void setJobNature(JobNatureEnum jobNature) {
+		this.jobNature = jobNature;
+	}
+
+	public java.util.Date getNextVisitDate() {
+		return nextVisitDate;
+	}
+
+	public void setNextVisitDate(java.util.Date nextVisitDate) {
+		this.nextVisitDate = nextVisitDate;
+	}
+
+	public String getHrbp() {
+		return hrbp;
+	}
+
+	public void setHrbp(String hrbp) {
+		this.hrbp = hrbp;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 91 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/EmployeeVisit.java

@@ -0,0 +1,91 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(employee_visit):
+ */
+public class EmployeeVisit {
+
+	/**  */
+	private Long id;
+	
+	/**  */
+	private Long employeeInfoId;
+	
+	/** 回访人 */
+	private Integer operatorId;
+	
+	private String operatorName;
+	
+	/** 回访内容 */
+	private String content;
+	
+	/** 下次回访时间 */
+	private java.util.Date nextVisitDate;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setEmployeeInfoId(Long employeeInfoId){
+		this.employeeInfoId = employeeInfoId;
+	}
+	
+	public Long getEmployeeInfoId(){
+		return this.employeeInfoId;
+	}
+			
+	public void setOperatorId(Integer operatorId){
+		this.operatorId = operatorId;
+	}
+	
+	public Integer getOperatorId(){
+		return this.operatorId;
+	}
+			
+	public void setContent(String content){
+		this.content = content;
+	}
+	
+	public String getContent(){
+		return this.content;
+	}
+			
+	public void setNextVisitDate(java.util.Date nextVisitDate){
+		this.nextVisitDate = nextVisitDate;
+	}
+	
+	public java.util.Date getNextVisitDate(){
+		return this.nextVisitDate;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public String getOperatorName() {
+		return operatorName;
+	}
+
+	public void setOperatorName(String operatorName) {
+		this.operatorName = operatorName;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -179,9 +179,13 @@ public class MusicGroup {
 	private String subjectName;
 
 	private Boolean hasVerifyMusicalList = false;
+	
+	private Boolean isShowRecordOfStudent = false;
 
 	//0云教练1云教练+
 	private Integer cloudTeacherType;
+	
+	private Integer musicalInstrumentsProvideStatus;
 
 	public Integer getCloudTeacherType() {
 		return cloudTeacherType;
@@ -624,4 +628,20 @@ public class MusicGroup {
 	public void setIsRemedy(Boolean remedy) {
 		isRemedy = remedy;
 	}
+
+	public Boolean getIsShowRecordOfStudent() {
+		return isShowRecordOfStudent;
+	}
+
+	public void setIsShowRecordOfStudent(Boolean isShowRecordOfStudent) {
+		this.isShowRecordOfStudent = isShowRecordOfStudent;
+	}
+
+	public Integer getMusicalInstrumentsProvideStatus() {
+		return musicalInstrumentsProvideStatus;
+	}
+
+	public void setMusicalInstrumentsProvideStatus(Integer musicalInstrumentsProvideStatus) {
+		this.musicalInstrumentsProvideStatus = musicalInstrumentsProvideStatus;
+	}
 }

+ 137 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupNews.java

@@ -0,0 +1,137 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(music_group_news):
+ */
+public class MusicGroupNews {
+
+	/**  */
+	private Long id;
+	
+	/** 标题 */
+	private String title;
+	
+	/** 状态(1-可见 0-不可见) */
+	private YesOrNoEnum status = YesOrNoEnum.YES;
+	
+	/** 链接地址 */
+	private String linkUrl;
+	
+	/** 顺序号 */
+	private Integer order = 0;
+	
+	/** 乐团编号 */
+	private String musicGroupId;
+	
+	/** 作者 */
+	private String author;
+	
+	/** 添加人 */
+	private Integer operatorId;
+
+	/** 添加人 */
+	private String operatorName;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+
+	public String getOperatorName() {
+		return operatorName;
+	}
+
+	public void setOperatorName(String operatorName) {
+		this.operatorName = operatorName;
+	}
+
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setTitle(String title){
+		this.title = title;
+	}
+	
+	public String getTitle(){
+		return this.title;
+	}
+
+	public YesOrNoEnum getStatus() {
+		return status;
+	}
+
+	public void setStatus(YesOrNoEnum status) {
+		this.status = status;
+	}
+
+	public void setLinkUrl(String linkUrl){
+		this.linkUrl = linkUrl;
+	}
+	
+	public String getLinkUrl(){
+		return this.linkUrl;
+	}
+			
+	public void setOrder(Integer order){
+		this.order = order;
+	}
+	
+	public Integer getOrder(){
+		return this.order;
+	}
+			
+	public void setMusicGroupId(String musicGroupId){
+		this.musicGroupId = musicGroupId;
+	}
+	
+	public String getMusicGroupId(){
+		return this.musicGroupId;
+	}
+			
+	public void setAuthor(String author){
+		this.author = author;
+	}
+	
+	public String getAuthor(){
+		return this.author;
+	}
+
+	public Integer getOperatorId() {
+		return operatorId;
+	}
+
+	public void setOperatorId(Integer operatorId) {
+		this.operatorId = operatorId;
+	}
+
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 170 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPerformance.java

@@ -0,0 +1,170 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.util.List;
+
+/**
+ * 对应数据库表(music_group_performance):
+ */
+public class MusicGroupPerformance {
+
+	/**  */
+	private Integer id;
+	
+	/** 乐团编号 */
+	private String musicGroupId;
+
+	/** 乐团编号 */
+	private String musicGroupName;
+	
+	/** 名称 */
+	private String name;
+
+	private String organName;
+
+	/** 展演曲目名称,逗号分隔 */
+	private List<String> musicScoreNames;
+
+	private String musicScoreName;
+
+	/** 添加人 */
+	private Integer operator;
+
+	//剩余天数
+	private Integer subDay;
+
+	/** 添加人 */
+	private String operatorName;
+	
+	/** 排序 */
+	private Integer order = 1;
+	
+	/** 展演时间 */
+	private java.util.Date startTime;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+
+
+	public List<String> getMusicScoreNames() {
+		return musicScoreNames;
+	}
+
+	public void setMusicScoreNames(List<String> musicScoreNames) {
+		this.musicScoreNames = musicScoreNames;
+	}
+
+	public String getMusicGroupName() {
+		return musicGroupName;
+	}
+
+	public void setMusicGroupName(String musicGroupName) {
+		this.musicGroupName = musicGroupName;
+	}
+
+	public String getOrganName() {
+		return organName;
+	}
+
+	public void setOrganName(String organName) {
+		this.organName = organName;
+	}
+
+	public Integer getSubDay() {
+		return subDay;
+	}
+
+	public void setSubDay(Integer subDay) {
+		this.subDay = subDay;
+	}
+
+	public String getOperatorName() {
+		return operatorName;
+	}
+
+	public void setOperatorName(String operatorName) {
+		this.operatorName = operatorName;
+	}
+
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setMusicGroupId(String musicGroupId){
+		this.musicGroupId = musicGroupId;
+	}
+	
+	public String getMusicGroupId(){
+		return this.musicGroupId;
+	}
+			
+	public void setName(String name){
+		this.name = name;
+	}
+	
+	public String getName(){
+		return this.name;
+	}
+			
+	public void setMusicScoreName(String musicScoreName){
+		this.musicScoreName = musicScoreName;
+	}
+	
+	public String getMusicScoreName(){
+		return this.musicScoreName;
+	}
+			
+	public void setOperator(Integer operator){
+		this.operator = operator;
+	}
+	
+	public Integer getOperator(){
+		return this.operator;
+	}
+			
+	public void setOrder(Integer order){
+		this.order = order;
+	}
+	
+	public Integer getOrder(){
+		return this.order;
+	}
+			
+	public void setStartTime(java.util.Date startTime){
+		this.startTime = startTime;
+	}
+	
+	public java.util.Date getStartTime(){
+		return this.startTime;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 125 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupQuestionnaire.java

@@ -0,0 +1,125 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.util.List;
+
+/**
+ * 对应数据库表(music_group_questionnaire):
+ */
+public class MusicGroupQuestionnaire {
+
+	/**  */
+	private Integer id;
+	
+	/** 问卷编号 */
+	private Integer questionnaireTopicId;
+	
+	/** 乐团编号 */
+	private String musicGroupId;
+	
+	/** 调查对象 */
+	private String target;
+	
+	/** 调查人 */
+	private Integer operatorId;
+
+	private String operatorName;
+	
+	/** 调查时间 */
+	private java.util.Date questionTime;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+
+	private List<QuestionnaireUserResult> questionnaireUserResultList;
+
+	public String getOperatorName() {
+		return operatorName;
+	}
+
+	public void setOperatorName(String operatorName) {
+		this.operatorName = operatorName;
+	}
+
+	public List<QuestionnaireUserResult> getQuestionnaireUserResultList() {
+		return questionnaireUserResultList;
+	}
+
+	public void setQuestionnaireUserResultList(List<QuestionnaireUserResult> questionnaireUserResultList) {
+		this.questionnaireUserResultList = questionnaireUserResultList;
+	}
+
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+
+	public Integer getQuestionnaireTopicId() {
+		return questionnaireTopicId;
+	}
+
+	public void setQuestionnaireTopicId(Integer questionnaireTopicId) {
+		this.questionnaireTopicId = questionnaireTopicId;
+	}
+
+	public void setMusicGroupId(String musicGroupId){
+		this.musicGroupId = musicGroupId;
+	}
+	
+	public String getMusicGroupId(){
+		return this.musicGroupId;
+	}
+			
+	public void setTarget(String target){
+		this.target = target;
+	}
+	
+	public String getTarget(){
+		return this.target;
+	}
+
+	public void setOperatorId(Integer operatorId){
+		this.operatorId = operatorId;
+	}
+	
+	public Integer getOperatorId(){
+		return this.operatorId;
+	}
+			
+	public void setQuestionTime(java.util.Date questionTime){
+		this.questionTime = questionTime;
+	}
+	
+	public java.util.Date getQuestionTime(){
+		return this.questionTime;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 114 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupTrainPlan.java

@@ -0,0 +1,114 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(music_group_train_plan):
+ */
+public class MusicGroupTrainPlan {
+
+	/**  */
+	private Integer id;
+	
+	/**  */
+	private String musicGroupId;
+	
+	/**  */
+	private Integer classGroupId;
+	
+	/**  */
+	private String courseType;
+	
+	/**  */
+	private String plan;
+	
+	/** 学期开始时间 */
+	private java.util.Date startSchoolTerm;
+	
+	/** 学期截止时间 */
+	private java.util.Date endSchoolTerm;
+	
+	/**  */
+	private java.util.Date updateTime;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setMusicGroupId(String musicGroupId){
+		this.musicGroupId = musicGroupId;
+	}
+	
+	public String getMusicGroupId(){
+		return this.musicGroupId;
+	}
+			
+	public void setClassGroupId(Integer classGroupId){
+		this.classGroupId = classGroupId;
+	}
+	
+	public Integer getClassGroupId(){
+		return this.classGroupId;
+	}
+			
+	public void setCourseType(String courseType){
+		this.courseType = courseType;
+	}
+	
+	public String getCourseType(){
+		return this.courseType;
+	}
+			
+	public void setPlan(String plan){
+		this.plan = plan;
+	}
+	
+	public String getPlan(){
+		return this.plan;
+	}
+			
+	public void setStartSchoolTerm(java.util.Date startSchoolTerm){
+		this.startSchoolTerm = startSchoolTerm;
+	}
+	
+	public java.util.Date getStartSchoolTerm(){
+		return this.startSchoolTerm;
+	}
+			
+	public void setEndSchoolTerm(java.util.Date endSchoolTerm){
+		this.endSchoolTerm = endSchoolTerm;
+	}
+	
+	public java.util.Date getEndSchoolTerm(){
+		return this.endSchoolTerm;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 118 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupTrainPlanSaveDto.java

@@ -0,0 +1,118 @@
+package com.ym.mec.biz.dal.entity;
+
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+import java.util.List;
+
+public class MusicGroupTrainPlanSaveDto {
+	@ApiModelProperty(value = "年份",required = false)
+	private String year;
+
+	@ApiModelProperty(value = "学期0上学期1下学期",required = false)
+	private Integer term;
+
+	@ApiModelProperty(value = "班级",required = false)
+	private Integer classGroupId;
+
+	@ApiModelProperty(value = "课程类型",required = false)
+	private String courseScheduleType;
+
+	@ApiModelProperty(value = "学期开始时间",required = false)
+	private Date startSchoolTerm;
+
+	@ApiModelProperty(value = "学期截止时间",required = false)
+	private Date endSchoolTerm;
+
+	@ApiModelProperty(value = "规划列表",required = false)
+	private List<String> plans;
+
+	@ApiModelProperty(value = "课程组编号",required = false)
+	private String musicGroupId;
+
+	@ApiModelProperty(value = "课程上课时间",required = false)
+	private Date courseClassTime;
+
+	private Boolean studentFlag = false;
+
+	public Boolean getStudentFlag() {
+		return studentFlag;
+	}
+
+	public void setStudentFlag(Boolean studentFlag) {
+		this.studentFlag = studentFlag;
+	}
+
+	public Date getCourseClassTime() {
+		return courseClassTime;
+	}
+
+	public void setCourseClassTime(Date courseClassTime) {
+		this.courseClassTime = courseClassTime;
+	}
+
+	public String getYear() {
+		return year;
+	}
+
+	public void setYear(String year) {
+		this.year = year;
+	}
+
+	public Integer getTerm() {
+		return term;
+	}
+
+	public void setTerm(Integer term) {
+		this.term = term;
+	}
+
+	public Integer getClassGroupId() {
+		return classGroupId;
+	}
+
+	public void setClassGroupId(Integer classGroupId) {
+		this.classGroupId = classGroupId;
+	}
+
+	public String getCourseScheduleType() {
+		return courseScheduleType;
+	}
+
+	public void setCourseScheduleType(String courseScheduleType) {
+		this.courseScheduleType = courseScheduleType;
+	}
+
+	public Date getStartSchoolTerm() {
+		return startSchoolTerm;
+	}
+
+	public void setStartSchoolTerm(Date startSchoolTerm) {
+		this.startSchoolTerm = startSchoolTerm;
+	}
+
+	public Date getEndSchoolTerm() {
+		return endSchoolTerm;
+	}
+
+	public void setEndSchoolTerm(Date endSchoolTerm) {
+		this.endSchoolTerm = endSchoolTerm;
+	}
+
+	public List<String> getPlans() {
+		return plans;
+	}
+
+	public void setPlans(List<String> plans) {
+		this.plans = plans;
+	}
+
+	public String getMusicGroupId() {
+		return musicGroupId;
+	}
+
+	public void setMusicGroupId(String musicGroupId) {
+		this.musicGroupId = musicGroupId;
+	}
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicMemberDto.java

@@ -23,6 +23,16 @@ public class MusicMemberDto {
 
 	private Date visitTime;
 
+	private Integer courseViewType;
+
+	public Integer getCourseViewType() {
+		return courseViewType;
+	}
+
+	public void setCourseViewType(Integer courseViewType) {
+		this.courseViewType = courseViewType;
+	}
+
 	public String getPhone() {
 		return phone;
 	}

+ 125 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Photo.java

@@ -0,0 +1,125 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(photo_):
+ */
+public class Photo {
+
+	/**  */
+	private Integer id;
+	
+	/** 相册编号 */
+	private Integer photoAlbumId;
+
+	private String musicGroupId;
+	
+	/** 名称 */
+	private String name;
+	
+	/** 学生端是否展示 */
+	private YesOrNoEnum clientShow = YesOrNoEnum.NO;
+	
+	/** 地址 */
+	private String url;
+	
+	/** 缩略图地址 */
+	private String thumbnailUrl;
+
+	/** 排序 */
+	private Integer order;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+
+	public String getMusicGroupId() {
+		return musicGroupId;
+	}
+
+	public void setMusicGroupId(String musicGroupId) {
+		this.musicGroupId = musicGroupId;
+	}
+
+	public Integer getOrder() {
+		return order;
+	}
+
+	public void setOrder(Integer order) {
+		this.order = order;
+	}
+
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setPhotoAlbumId(Integer photoAlbumId){
+		this.photoAlbumId = photoAlbumId;
+	}
+	
+	public Integer getPhotoAlbumId(){
+		return this.photoAlbumId;
+	}
+			
+	public void setName(String name){
+		this.name = name;
+	}
+	
+	public String getName(){
+		return this.name;
+	}
+			
+	public void setClientShow(YesOrNoEnum clientShow){
+		this.clientShow = clientShow;
+	}
+	
+	public YesOrNoEnum getClientShow(){
+		return this.clientShow;
+	}
+			
+	public void setUrl(String url){
+		this.url = url;
+	}
+	
+	public String getUrl(){
+		return this.url;
+	}
+			
+	public void setThumbnailUrl(String thumbnailUrl){
+		this.thumbnailUrl = thumbnailUrl;
+	}
+	
+	public String getThumbnailUrl(){
+		return this.thumbnailUrl;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 150 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/PhotoAlbum.java

@@ -0,0 +1,150 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.util.Date;
+
+/**
+ * 对应数据库表(photo_album_):
+ */
+public class PhotoAlbum {
+
+	/**  */
+	private Integer id;
+
+	/**  */
+	private Long photoNum;
+	
+	/** 乐团编号 */
+	private String musicGroupId;
+	
+	/** 名称 */
+	private String name;
+	
+	/** 学生端是否展示 */
+	private YesOrNoEnum clientShow = YesOrNoEnum.YES;
+	
+	/** 相册类型DEFAULT,SHOW */
+	private String type = "DEFAULT";
+	
+	/** 封面 */
+	private String coverUrl;
+	
+	/** 封面缩略图 */
+	private String coverThumbnailUrl;
+
+	//排序
+	private Integer order;
+	
+	/**  */
+	private java.util.Date timeLine;
+
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+
+	public Date getTimeLine() {
+		return timeLine;
+	}
+
+	public void setTimeLine(Date timeLine) {
+		this.timeLine = timeLine;
+	}
+
+	public Long getPhotoNum() {
+		return photoNum;
+	}
+
+	public void setPhotoNum(Long photoNum) {
+		this.photoNum = photoNum;
+	}
+
+	public Integer getOrder() {
+		return order;
+	}
+
+	public void setOrder(Integer order) {
+		this.order = order;
+	}
+
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setMusicGroupId(String musicGroupId){
+		this.musicGroupId = musicGroupId;
+	}
+	
+	public String getMusicGroupId(){
+		return this.musicGroupId;
+	}
+			
+	public void setName(String name){
+		this.name = name;
+	}
+	
+	public String getName(){
+		return this.name;
+	}
+
+	public YesOrNoEnum getClientShow() {
+		return clientShow;
+	}
+
+	public void setClientShow(YesOrNoEnum clientShow) {
+		this.clientShow = clientShow;
+	}
+
+	public void setType(String type){
+		this.type = type;
+	}
+	
+	public String getType(){
+		return this.type;
+	}
+			
+	public void setCoverUrl(String coverUrl){
+		this.coverUrl = coverUrl;
+	}
+	
+	public String getCoverUrl(){
+		return this.coverUrl;
+	}
+			
+	public void setCoverThumbnailUrl(String coverThumbnailUrl){
+		this.coverThumbnailUrl = coverThumbnailUrl;
+	}
+	
+	public String getCoverThumbnailUrl(){
+		return this.coverThumbnailUrl;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

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

@@ -17,7 +17,8 @@ public class QuestionnaireUserResult {
 	/**  */
 	private QuestionnaireActiveTypeEnum activeType;
 
-	/**  */
+	//如果是乐器置换那么是ReplacementInstrumentCooperationId
+	//如果是乐团满意度调查那么是music_group_questionnaire_id
 	private Integer activeId;
 	
 	/**  */

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentAttendance.java

@@ -44,6 +44,10 @@ public class StudentAttendance {
 	private Integer userId;
 
 	/**  */
+	@ApiModelProperty(value = "年级",required = false)
+	private Integer currentGradeNum;
+
+	/**  */
 	@ApiModelProperty(value = "学生姓名",required = false)
 	private String username;
 
@@ -92,6 +96,14 @@ public class StudentAttendance {
 
 	private int normalRemind;
 
+	public Integer getCurrentGradeNum() {
+		return currentGradeNum;
+	}
+
+	public void setCurrentGradeNum(Integer currentGradeNum) {
+		this.currentGradeNum = currentGradeNum;
+	}
+
 	public int getNormalRemind() {
 		return normalRemind;
 	}

+ 90 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicCompareRecord.java

@@ -1,7 +1,10 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.enums.DeviceTypeEnum;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.math.BigDecimal;
+
 /**
  * 对应数据库表(sys_music_compare_record):
  */
@@ -18,9 +21,30 @@ public class SysMusicCompareRecord {
 	
 	/** 评分数据 */
 	private String scoreData;
+
+	/** 总分 */
+	private BigDecimal score;
+
+	/** 音准 */
+	private BigDecimal intonation;
+
+	/** 节奏 */
+	private BigDecimal cadence;
+
+	/** 完成度 */
+	private BigDecimal integrity;
+
+	/** 录音文件地址 */
+	private String recordFilePath;
 	
 	/** 创建时间 */
 	private java.util.Date createTime;
+
+	private DeviceTypeEnum deviceType;
+
+	private float playTime = 0;
+
+	private String clientId;
 	
 	public void setId(Long id){
 		this.id = id;
@@ -37,7 +61,15 @@ public class SysMusicCompareRecord {
 	public Integer getUserId(){
 		return this.userId;
 	}
-			
+
+	public String getClientId() {
+		return clientId;
+	}
+
+	public void setClientId(String clientId) {
+		this.clientId = clientId;
+	}
+
 	public void setSysMusicScoreId(Integer sysMusicScoreId){
 		this.sysMusicScoreId = sysMusicScoreId;
 	}
@@ -53,7 +85,63 @@ public class SysMusicCompareRecord {
 	public String getScoreData(){
 		return this.scoreData;
 	}
-			
+
+	public BigDecimal getScore() {
+		return score;
+	}
+
+	public void setScore(BigDecimal score) {
+		this.score = score;
+	}
+
+	public BigDecimal getIntonation() {
+		return intonation;
+	}
+
+	public void setIntonation(BigDecimal intonation) {
+		this.intonation = intonation;
+	}
+
+	public BigDecimal getCadence() {
+		return cadence;
+	}
+
+	public void setCadence(BigDecimal cadence) {
+		this.cadence = cadence;
+	}
+
+	public BigDecimal getIntegrity() {
+		return integrity;
+	}
+
+	public void setIntegrity(BigDecimal integrity) {
+		this.integrity = integrity;
+	}
+
+	public String getRecordFilePath() {
+		return recordFilePath;
+	}
+
+	public void setRecordFilePath(String recordFilePath) {
+		this.recordFilePath = recordFilePath;
+	}
+
+	public DeviceTypeEnum getDeviceType() {
+		return deviceType;
+	}
+
+	public void setDeviceType(DeviceTypeEnum deviceType) {
+		this.deviceType = deviceType;
+	}
+
+	public float getPlayTime() {
+		return playTime;
+	}
+
+	public void setPlayTime(float playTime) {
+		this.playTime = playTime;
+	}
+
 	public void setCreateTime(java.util.Date createTime){
 		this.createTime = createTime;
 	}

+ 35 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/DeviceTypeEnum.java

@@ -0,0 +1,35 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+public enum DeviceTypeEnum implements BaseEnum<String, DeviceTypeEnum> {
+	IOS("IOS", "苹果"),
+	ANDROID("ANDROID", "安卓"),
+	WEB("WEB", "浏览器");
+
+	private String code;
+
+	private String msg;
+
+	DeviceTypeEnum(String code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	@Override
+	public String getCode() {
+		return this.code;
+	}
+}

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/IndexErrorType.java

@@ -19,6 +19,7 @@ public enum IndexErrorType implements BaseEnum<String, IndexErrorType> {
     STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP("STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP", "申请退团学员数"),
     NO_MEMBER_STUDENT_INFO("NO_MEMBER_STUDENT_INFO", "当前共有{0}个乐团共{1}名学员会员已过期"),
     MEMBER_STUDENT_INFO("MEMBER_STUDENT_INFO", "当前共有{0}个乐团共{1}名学员会员即将过期"),
+    MUSIC_GROUP_PERFORMANCE("MUSIC_GROUP_PERFORMANCE", "当前共有{0}个乐团共{1}次展演计划"),
     WAIT_CREATE_PAYMENT_CALENDER("WAIT_CREATE_PAYMENT_CALENDER", "待创建缴费项目"),
     ATTENDANCE_ERR_STUDENT_NUM("COURSE_TRUANT_STUDENT_NUM", "学员考勤异常"),
     COURSE_TRUANT_STUDENT_NUM("COURSE_TRUANT_STUDENT_NUM", "学员旷课"),

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

@@ -6,6 +6,8 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     SMS_APPLY_MESSAGE("SMS_APPLY_MESSAGE", "报名通知"),
     SYSTEM_REMIND_EDUCATION_COURSE_TIME("SYSTEM_REMIND_EDUCATION_COURSE_TIME", "排课提醒"),
     STUDENT_MEMBER_RENEW_MESSAGE("STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
+    SMS_AUTO_STUDENT_MEMBER_RENEW_MESSAGE("SMS_AUTO_STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
+    PUSH_AUTO_STUDENT_MEMBER_RENEW_MESSAGE("PUSH_AUTO_STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
     STUDENT_MEMBER_RENEW_QUIT_MESSAGE("STUDENT_MEMBER_RENEW_QUIT_MESSAGE", "会员续费提醒"),
     SMS_VERIFY_CODE_LOGIN("SMS_VERIFY_CODE_LOGIN", "验证码登录"),
     KAPTCHA_SESSION_KEY("KAPTCHA_SESSION_KEY", "登录图形验证码"),

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/PayStatus.java

@@ -0,0 +1,23 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+public enum PayStatus implements BaseEnum<String, PayStatus> {
+
+	FAILED("支付失败"), WAIT_PAY("待支付"), PAYING("支付中"), SUCCESSED("支付成功");
+
+	private String desc;
+
+	private PayStatus(String desc) {
+		this.desc = desc;
+	}
+
+	@Override
+	public String getCode() {
+		return this.name();
+	}
+
+	public String getDesc() {
+		return desc;
+	}
+}

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/QuestionnaireActiveTypeEnum.java

@@ -3,7 +3,8 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum QuestionnaireActiveTypeEnum implements BaseEnum<String, QuestionnaireActiveTypeEnum> {
-	REPLACEMENT("REPLACEMENT", "乐器置换");
+	REPLACEMENT("REPLACEMENT", "乐器置换"),
+	MUSIC_GROUP_QUESTION("MUSIC_GROUP_QUESTION", "乐团满意度调查");
 
 	private String code;
 

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

@@ -4,7 +4,7 @@ import com.ym.mec.common.enums.BaseEnum;
 
 public enum StaffStatusEnum implements BaseEnum<String, StaffStatusEnum> {
 
-	NOT_EMPLOYED("未录用"), INTERVIEWING("面试中"), RESERVE("储备"), PART_TIME("兼职"), FULL_TIME("全职"), DIMISSION("离职");
+	NOT_EMPLOYED("未录用"), INTERVIEWING("面试中"), RESERVE("储备"), PART_TIME("兼职"), FULL_TIME("全职"), DIMISSION("离职"), BLACK_LIST("黑名单");
 
 	private String desc;
 

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/YesOrNoEnum.java

@@ -3,8 +3,8 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum YesOrNoEnum implements BaseEnum<Integer, YesOrNoEnum> {
-    YES(1,"是"),
-    NO(0,"否");
+    NO(0,"否"),
+    YES(1,"是");
 
     private Integer code;
     private String msg;

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ArrearageStudentsQueryInfo.java

@@ -21,6 +21,16 @@ public class ArrearageStudentsQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "未缴费类型:0历史,1进行中")
     private Integer noPaymentType;
 
+    private Integer courseViewType;
+
+    public Integer getCourseViewType() {
+        return courseViewType;
+    }
+
+    public void setCourseViewType(Integer courseViewType) {
+        this.courseViewType = courseViewType;
+    }
+
     public String getOrganIds() {
         return organIds;
     }

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/EmployeeInfoQueryInfo.java

@@ -36,6 +36,12 @@ public class EmployeeInfoQueryInfo extends QueryInfo {
 	private Date startDate;
 	
 	private Date endDate;
+	
+	private Date visitStartDate;
+	
+	private Date visitEndDate;
+	
+	private String hrbp;
 
 	public String getUserNameOrIdOrMobile() {
 		return userNameOrIdOrMobile;
@@ -116,4 +122,28 @@ public class EmployeeInfoQueryInfo extends QueryInfo {
 	public void setIntentionCity(String intentionCity) {
 		this.intentionCity = intentionCity;
 	}
+
+	public Date getVisitStartDate() {
+		return visitStartDate;
+	}
+
+	public void setVisitStartDate(Date visitStartDate) {
+		this.visitStartDate = visitStartDate;
+	}
+
+	public Date getVisitEndDate() {
+		return visitEndDate;
+	}
+
+	public void setVisitEndDate(Date visitEndDate) {
+		this.visitEndDate = visitEndDate;
+	}
+
+	public String getHrbp() {
+		return hrbp;
+	}
+
+	public void setHrbp(String hrbp) {
+		this.hrbp = hrbp;
+	}
 }

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/EndCourseScheduleQueryInfo.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.page;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.common.page.QueryInfo;
+
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
@@ -45,6 +46,12 @@ public class EndCourseScheduleQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "上课结束时间")
     private Date endTime;
+
+	@ApiModelProperty(value = "上课时间字符")
+	private String startClassTimeStr;
+
+	@ApiModelProperty(value = "结束时间字符")
+	private String endClassTimeStr;
     
     @ApiModelProperty(value = "课程创建开始时间")
     private Date createStartDate;
@@ -335,4 +342,20 @@ public class EndCourseScheduleQueryInfo extends QueryInfo {
     public void setDealEndTime(String dealEndTime) {
         this.dealEndTime = dealEndTime;
     }
+
+	public String getStartClassTimeStr() {
+		return startClassTimeStr;
+	}
+
+	public void setStartClassTimeStr(String startClassTimeStr) {
+		this.startClassTimeStr = startClassTimeStr;
+	}
+
+	public String getEndClassTimeStr() {
+		return endClassTimeStr;
+	}
+
+	public void setEndClassTimeStr(String endClassTimeStr) {
+		this.endClassTimeStr = endClassTimeStr;
+	}
 }

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupPerformanceQueryInfo.java

@@ -0,0 +1,26 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class MusicGroupPerformanceQueryInfo extends QueryInfo {
+
+    private String musicGroupId;
+
+    private String organId;
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+}

+ 51 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupRecordStudentQueryInfo.java

@@ -0,0 +1,51 @@
+package com.ym.mec.biz.dal.page;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class MusicGroupRecordStudentQueryInfo extends QueryInfo {
+	
+	private String musicGroupId;
+
+	/**  */
+	private Integer subjectId;
+
+	@ApiModelProperty(value = "年级 1-13")
+	private Integer currentGradeNum;
+
+	@ApiModelProperty(value = "是否购买乐保")
+	private Boolean isBuyInstrumentsInsurance;
+
+	public String getMusicGroupId() {
+		return musicGroupId;
+	}
+
+	public void setMusicGroupId(String musicGroupId) {
+		this.musicGroupId = musicGroupId;
+	}
+
+	public Integer getSubjectId() {
+		return subjectId;
+	}
+
+	public void setSubjectId(Integer subjectId) {
+		this.subjectId = subjectId;
+	}
+
+	public Integer getCurrentGradeNum() {
+		return currentGradeNum;
+	}
+
+	public void setCurrentGradeNum(Integer currentGradeNum) {
+		this.currentGradeNum = currentGradeNum;
+	}
+
+	public Boolean getIsBuyInstrumentsInsurance() {
+		return isBuyInstrumentsInsurance;
+	}
+
+	public void setIsBuyInstrumentsInsurance(Boolean isBuyInstrumentsInsurance) {
+		this.isBuyInstrumentsInsurance = isBuyInstrumentsInsurance;
+	}
+}

+ 76 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/PhotoQueryInfo.java

@@ -0,0 +1,76 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.common.page.QueryInfo;
+
+public class PhotoQueryInfo extends QueryInfo {
+	private String type = "DEFAULT";
+
+	private YesOrNoEnum clientShow;
+
+	private Integer photoAlbumId;
+
+	private String musicGroupId;
+
+	private Integer photoId;
+
+	private String timeLine;
+
+	private String year;
+
+	public String getYear() {
+		return year;
+	}
+
+	public void setYear(String year) {
+		this.year = year;
+	}
+
+	public String getTimeLine() {
+		return timeLine;
+	}
+
+	public void setTimeLine(String timeLine) {
+		this.timeLine = timeLine;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public YesOrNoEnum getClientShow() {
+		return clientShow;
+	}
+
+	public void setClientShow(YesOrNoEnum clientShow) {
+		this.clientShow = clientShow;
+	}
+
+	public Integer getPhotoAlbumId() {
+		return photoAlbumId;
+	}
+
+	public void setPhotoAlbumId(Integer photoAlbumId) {
+		this.photoAlbumId = photoAlbumId;
+	}
+
+	public String getMusicGroupId() {
+		return musicGroupId;
+	}
+
+	public void setMusicGroupId(String musicGroupId) {
+		this.musicGroupId = musicGroupId;
+	}
+
+	public Integer getPhotoId() {
+		return photoId;
+	}
+
+	public void setPhotoId(Integer photoId) {
+		this.photoId = photoId;
+	}
+}

+ 40 - 361
mec-biz/src/main/java/com/ym/mec/biz/handler/WebSocketHandler.java

@@ -1,36 +1,20 @@
 package com.ym.mec.biz.handler;
 
-import be.tarsos.dsp.AudioDispatcher;
-import be.tarsos.dsp.io.jvm.AudioDispatcherFactory;
-import be.tarsos.dsp.pitch.PitchProcessor;
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.ym.mec.biz.dal.dto.MusicPitchDetailDto;
-import com.ym.mec.biz.dal.dto.SoundCompareHelper;
-import com.ym.mec.biz.dal.dto.WavHeader;
+import com.ym.mec.biz.dal.dto.WebSocketClientDetail;
 import com.ym.mec.biz.dal.dto.WebSocketInfo;
 import com.ym.mec.biz.service.SoundSocketService;
-import com.ym.mec.biz.service.SysMusicCompareRecordService;
-import com.ym.mec.common.constant.CommonConstants;
-import org.apache.commons.io.FileUtils;
+import com.ym.mec.biz.service.WebSocketEventHandler;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
 import org.springframework.web.socket.*;
 import org.springframework.web.socket.handler.AbstractWebSocketHandler;
 
-import javax.sound.sampled.AudioFormat;
-import java.io.File;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
+import java.util.Date;
+import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
 
 /**
  * @Author Joburgess
@@ -39,43 +23,37 @@ import java.util.stream.Collectors;
 @Service
 public class WebSocketHandler extends AbstractWebSocketHandler {
 
-    private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketHandler.class);
+    private final Logger LOGGER = LoggerFactory.getLogger(WebSocketHandler.class);
 
-    //存储客户端链接
-    public static final Map<String, WebSocketSession> WS_CLIENTS = new ConcurrentHashMap<>();
-
-    private final BigDecimal oneHundred = new BigDecimal(100);
-
-    //检测偏移时长的最终时间
-    private final int endCheckOffsetTime = 500;
-
-    private final float simpleRate = 44100;
-    private int simpleSize = 1024;
-
-    private final AudioFormat audioFormat = new AudioFormat(simpleRate, 16, 1, true, false);
-    private static final PitchProcessor.PitchEstimationAlgorithm algo = PitchProcessor.PitchEstimationAlgorithm.FFT_YIN;
-
-    private static final String tmpDir = FileUtils.getTempDirectoryPath() + "/soundCompare/";
-
-    //用户对应评分信息
-    private Map<String, SoundCompareHelper> userSoundInfoMap = new ConcurrentHashMap<>();
+    /**
+     * @describe 存储客户端链接
+     */
+    public static final Map<String, WebSocketClientDetail> WS_CLIENTS = new ConcurrentHashMap<>();
 
-    @Autowired
-    private SysMusicCompareRecordService sysMusicCompareRecordService;
+    private static Map<String, WebSocketEventHandler> appMap = new ConcurrentHashMap<>();
 
-    public WebSocketHandler() {
-        super();
-        File soundDir = new File(tmpDir);
-        if(!soundDir.exists()){
-            soundDir.mkdir();
+    /**
+     * @describe 注册应用
+     * @author Joburgess
+     * @date 2021/8/5 0005
+     * @param tag:
+     * @param webSocketEventHandler:
+     * @return boolean
+     */
+    public static boolean regist(String tag, WebSocketEventHandler webSocketEventHandler){
+        if (appMap.containsKey(tag)){
+            return false;
         }
+        appMap.put(tag, webSocketEventHandler);
+        return true;
     }
 
     @Override
     public void afterConnectionEstablished(WebSocketSession session) throws Exception {
         String phone = session.getPrincipal().getName().split(":")[1];
         LOGGER.info("{}上线", phone);
-        WS_CLIENTS.put(phone, session);
+        WS_CLIENTS.put(phone, new WebSocketClientDetail(session, new Date()));
+        appMap.values().forEach(e->e.afterConnectionEstablished(session, phone));
         super.afterConnectionEstablished(session);
     }
 
@@ -85,117 +63,25 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
     }
 
     @Override
-    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
+    protected void handleTextMessage(WebSocketSession session, TextMessage message){
         String phone = session.getPrincipal().getName().split(":")[1];
         LOGGER.info("{}: {}", phone, message.getPayload());
         WebSocketInfo webSocketInfo = JSON.parseObject(message.getPayload(), WebSocketInfo.class);
-        JSONObject bodyObject = (JSONObject) webSocketInfo.getBody();
-
-        String commond = "";
-        if(webSocketInfo.getHeader().containsKey(SoundSocketService.COMMOND)){
-            commond = webSocketInfo.getHeader().get(SoundSocketService.COMMOND);
+        String tag = "";
+        if(webSocketInfo.getHeader().containsKey(SoundSocketService.TAG)){
+            tag = webSocketInfo.getHeader().get(SoundSocketService.TAG);
         }
-        switch (commond){
-            case SoundSocketService.MUSIC_XML:
-                userSoundInfoMap.put(phone, new SoundCompareHelper());
-                List<MusicPitchDetailDto> musicXmlInfos = JSON.parseArray(bodyObject.getString("musicXmlInfos"), MusicPitchDetailDto.class);
-                userSoundInfoMap.get(phone).setMusicScoreId(bodyObject.getInteger("id"));
-                userSoundInfoMap.get(phone).setMeasureXmlInfoMap(musicXmlInfos.stream().collect(Collectors.groupingBy(MusicPitchDetailDto::getMeasureIndex)));
-                for (Map.Entry<Integer, List<MusicPitchDetailDto>> userMeasureXmlInfoEntry : userSoundInfoMap.get(phone).getMeasureXmlInfoMap().entrySet()) {
-                    MusicPitchDetailDto musicPitchDetailDto = userMeasureXmlInfoEntry.getValue().stream().max(Comparator.comparing(MusicPitchDetailDto::getTimeStamp)).get();
-                    userSoundInfoMap.get(phone).getMeasureEndTime().put(userMeasureXmlInfoEntry.getKey(), musicPitchDetailDto.getTimeStamp()+musicPitchDetailDto.getDuration());
-                }
-                break;
-            case SoundSocketService.RECORD_START:
-                if(!userSoundInfoMap.containsKey(phone)){
-                    break;
-                }
-                File file = new File(tmpDir+phone + "_"+ userSoundInfoMap.get(phone).getMusicScoreId() +"_"+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) +".wav");
-                userSoundInfoMap.get(phone).setAccessFile(new RandomAccessFile(file, "rw"));
-                break;
-            case SoundSocketService.RECORD_END:
-                if(!userSoundInfoMap.containsKey(phone)){
-                    break;
-                }
-                if(!CollectionUtils.isEmpty(userSoundInfoMap.get(phone).getMeasureEndTime())){
-                    Integer lastMeasureIndex = userSoundInfoMap.get(phone).getMeasureEndTime().keySet().stream().min(Integer::compareTo).get();
-                    double recordTime = userSoundInfoMap.get(phone).getAccessFile().length()/(audioFormat.getFrameSize()*audioFormat.getFrameRate())*1000;
-                    //如果结束时时长大于某小节,则此小节需要评分
-                    if(recordTime>userSoundInfoMap.get(phone).getMeasureEndTime().get(lastMeasureIndex)){
-                        measureCompare(phone, lastMeasureIndex);
-                        userSoundInfoMap.get(phone).getMeasureEndTime().remove(lastMeasureIndex);
-                    }
-                }
-                calTotalScore(phone);
-                createHeader(phone);
-                break;
-            case SoundSocketService.RECORD_CANCEL:
-                createHeader(phone);
-                break;
-            default:
-                break;
+        if(StringUtils.isNotBlank(tag)){
+            appMap.get(tag).receiveTextMessage(session, phone, message);
+        }else{
+            appMap.values().forEach(e->e.receiveTextMessage(session, phone, message));
         }
     }
 
     @Override
-    protected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) throws Exception {
+    protected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) {
         String phone = session.getPrincipal().getName().split(":")[1];
-        if(!userSoundInfoMap.containsKey(phone)){
-            return;
-        }
-        if(Objects.nonNull(userSoundInfoMap.get(phone).getAccessFile())){
-            userSoundInfoMap.get(phone).getAccessFile().write(message.getPayload().array());
-        }
-        List<MusicPitchDetailDto> recordInfo = new ArrayList<>();
-        AudioDispatcher dispatcher = AudioDispatcherFactory.fromByteArray(message.getPayload().array(), audioFormat, simpleSize, 128);
-        dispatcher.addAudioProcessor(new PitchProcessor(algo, simpleRate, simpleSize, (pitchDetectionResult, audioEvent) -> {
-            int timeStamp = (int) (userSoundInfoMap.get(phone).getMeasureStartTime() + audioEvent.getTimeStamp()*1000);
-            float pitch = pitchDetectionResult.getPitch();
-//            LOGGER.info("频率:{}, {}", timeStamp, pitch);
-            recordInfo.add(new MusicPitchDetailDto(timeStamp, pitch));
-        }));
-        dispatcher.run();
-        if(Objects.isNull(userSoundInfoMap.get(phone).getAccessFile())){
-            return;
-        }
-
-        double recordTime = userSoundInfoMap.get(phone).getAccessFile().length()/(audioFormat.getFrameSize()*audioFormat.getFrameRate())*1000;
-
-        userSoundInfoMap.get(phone).setMeasureStartTime(recordTime);
-        userSoundInfoMap.get(phone).getRecordMeasurePithInfo().addAll(recordInfo);
-
-        //如果是第一小节,需要计算出录音与播放不同步导致的空白时间偏移量
-        if(userSoundInfoMap.get(phone).getOffsetTime()<=0&&recordTime<endCheckOffsetTime){
-            int hasPitchNum = 0;
-            for (MusicPitchDetailDto ri : userSoundInfoMap.get(phone).getRecordMeasurePithInfo()) {
-                if(hasPitchNum<=0){
-                    userSoundInfoMap.get(phone).setOffsetTime(ri.getTimeStamp());
-                }
-                if(ri.getFrequency()>0){
-                    hasPitchNum++;
-                }else{
-                    hasPitchNum=0;
-                }
-                if(hasPitchNum>=3){
-                    LOGGER.info("偏移时间:{}", userSoundInfoMap.get(phone).getOffsetTime());
-                    break;
-                }
-            }
-            if(hasPitchNum<3){
-                userSoundInfoMap.get(phone).setOffsetTime(0);
-            }
-        }
-
-        if(userSoundInfoMap.get(phone).getOffsetTime()<=0&&recordTime<endCheckOffsetTime){
-            return;
-        }
-        for (Map.Entry<Integer, Integer> userMeasureEndTimeMapEntry : userSoundInfoMap.get(phone).getMeasureEndTime().entrySet()) {
-            if((recordTime - userSoundInfoMap.get(phone).getOffsetTime())>userMeasureEndTimeMapEntry.getValue()){
-                measureCompare(phone, userMeasureEndTimeMapEntry.getKey());
-                userSoundInfoMap.get(phone).getMeasureEndTime().remove(userMeasureEndTimeMapEntry.getKey());
-                break;
-            }
-        }
+        appMap.values().forEach(e->e.receiveBinaryMessage(session, phone, message));
     }
 
     @Override
@@ -208,13 +94,13 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
     public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
         String phone = session.getPrincipal().getName().split(":")[1];
         session.close();
+        LOGGER.info("发生了错误,移除客户端: {}", phone);
+        appMap.values().forEach(e->e.afterConnectionClosed(session, phone));
+        exception.printStackTrace();
         if(!WS_CLIENTS.containsKey(phone)){
             return;
         }
-        exception.printStackTrace();
-        LOGGER.info("发生了错误,移除客户端: {}", phone);
         WS_CLIENTS.remove(phone);
-        createHeader(phone);
     }
 
     @Override
@@ -222,219 +108,12 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
         super.afterConnectionClosed(session, status);
         String phone = session.getPrincipal().getName().split(":")[1];
         LOGGER.info("{}离线", phone);
+        appMap.values().forEach(e->e.afterConnectionClosed(session, phone));
         WS_CLIENTS.remove(phone);
-        createHeader(phone);
     }
 
     @Override
     public boolean supportsPartialMessages() {
         return super.supportsPartialMessages();
     }
-
-    /**
-     * @describe 保存录音数据,并生成wav头信息
-     * @author Joburgess
-     * @date 2021/6/25 0025
-     * @param phone:
-     * @return void
-     */
-    private void createHeader(String phone) throws IOException {
-        if(!userSoundInfoMap.containsKey(phone)){
-            return;
-        }
-        if(Objects.nonNull(userSoundInfoMap.get(phone).getAccessFile())){
-            RandomAccessFile randomAccessFile = userSoundInfoMap.get(phone).getAccessFile();
-            LOGGER.info("音频时长:{}", randomAccessFile.length()/(audioFormat.getFrameSize()*audioFormat.getFrameRate())*1000);
-            randomAccessFile.seek(0);
-            randomAccessFile.write(WavHeader.getWaveHeader(randomAccessFile.length(), (long) audioFormat.getFrameRate(), audioFormat.getSampleSizeInBits()));
-            randomAccessFile.close();
-            userSoundInfoMap.get(phone).setAccessFile(null);
-        }
-//        userSoundInfoMap.get(phone).setRecordMeasurePithInfo(null);
-        LOGGER.info("评分数据:{}", JSON.toJSONString(userSoundInfoMap.get(phone)));
-        userSoundInfoMap.remove(phone);
-    }
-
-    /**
-     * @describe 数据比对,生成分数
-     * @author Joburgess
-     * @date 2021/6/25 0025
-     * @param phone:
-     * @param measureIndex:
-     * @return void
-     */
-    private void measureCompare(String phone, int measureIndex) throws IOException {
-        //相似度
-        BigDecimal intonation = BigDecimal.ZERO;
-        //节奏
-        BigDecimal cadence = BigDecimal.ZERO;
-        //完整度
-        BigDecimal integrity = BigDecimal.ZERO;
-
-        try {
-            //最低有效频率
-            float minValidFrequency = 20;
-
-            //有效音频数量
-            float validNum = 0;
-            //音频有效阈值
-            float validDuty = 0.5f;
-
-            //音准匹配数量
-            float intonationNum = 0;
-            //音准匹配误差范围
-            float intonationErrRange = 15;
-            //音准有效阈值
-            float intonationValidDuty = 0.7f;
-
-            //节奏匹配数量
-            float cadenceNum = 0;
-            //节奏匹配误差范围
-            float cadenceErrRange = 30;
-            //节奏有效阈值
-            float cadenceValidDuty = 0.6f;
-
-            int totalCompareNum = userSoundInfoMap.get(phone).getMeasureXmlInfoMap().get(measureIndex).size();
-
-            for (MusicPitchDetailDto musicXmlInfo : userSoundInfoMap.get(phone).getMeasureXmlInfoMap().get(measureIndex)) {
-                int startTimeStamp = musicXmlInfo.getTimeStamp() + userSoundInfoMap.get(phone).getOffsetTime();
-                int endTimeStamp = musicXmlInfo.getTimeStamp()+musicXmlInfo.getDuration() + userSoundInfoMap.get(phone).getOffsetTime();
-
-                //时间范围内有效音准数量
-                float recordValidIntonationNum = 0;
-                //时间范围内有效节奏数量
-                float cadenceValidNum = 0;
-                //时间范围内有效音频数量
-                float recordValidNum = 0;
-                //时间范围内匹配次数
-                float compareNum = 0;
-                for (MusicPitchDetailDto recordInfo : userSoundInfoMap.get(phone).getRecordMeasurePithInfo()) {
-                    //如果在时间范围之外直接跳过
-                    if(recordInfo.getTimeStamp()<startTimeStamp||recordInfo.getTimeStamp()>endTimeStamp){
-                        continue;
-                    }
-//                    LOGGER.info("{}频率({}-{}):{}, {}", recordInfo.getTimeStamp(), startTimeStamp, endTimeStamp, musicXmlInfo.getFrequency(), recordInfo.getFrequency());
-                    compareNum++;
-                    //如果在最低有效频率以下则跳过
-                    if(recordInfo.getFrequency()<minValidFrequency&&musicXmlInfo.getFrequency()!=-1){
-                        continue;
-                    }
-                    recordValidNum++;
-                    //如果频率差值在节奏误差范围内
-                    if(Math.abs(recordInfo.getFrequency()-musicXmlInfo.getFrequency())<=cadenceErrRange){
-                        cadenceValidNum++;
-                    }
-                    //如果频率差值在音准误差范围内
-                    if(Math.abs(recordInfo.getFrequency()-musicXmlInfo.getFrequency())<=intonationErrRange){
-                        recordValidIntonationNum++;
-                    }
-                }
-                //有效音频占比
-                float recordValidDuty = recordValidNum/compareNum;
-                if(recordValidDuty<validDuty){
-                    continue;
-                }
-                validNum++;
-                //有效音高占比
-                float intonationDuty = recordValidIntonationNum/compareNum;
-                //有效节奏占比
-                float cadenceDuty = cadenceValidNum/compareNum;
-                if(intonationDuty>=intonationValidDuty){
-                    intonationNum++;
-                }
-                if(cadenceDuty>=cadenceValidDuty){
-                    cadenceNum++;
-                }
-            }
-
-            intonation = new BigDecimal(intonationNum).divide(new BigDecimal(totalCompareNum), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(oneHundred).setScale(0, BigDecimal.ROUND_HALF_UP);
-            cadence = new BigDecimal(cadenceNum).divide(new BigDecimal(totalCompareNum), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(oneHundred).setScale(0, BigDecimal.ROUND_HALF_UP);
-            integrity = new BigDecimal(validNum).divide(new BigDecimal(totalCompareNum), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(oneHundred).setScale(0, BigDecimal.ROUND_HALF_UP);
-        } catch (ArithmeticException e){
-            LOGGER.info("无musicXml信息");
-        }
-
-        if(userSoundInfoMap.get(phone).getUserScoreMap().containsKey("intonation")){
-            userSoundInfoMap.get(phone).getUserScoreMap().put("intonation", intonation.add(userSoundInfoMap.get(phone).getUserScoreMap().get("intonation")));
-        }else{
-            userSoundInfoMap.get(phone).getUserScoreMap().put("intonation", intonation);
-        }
-
-        if(userSoundInfoMap.get(phone).getUserScoreMap().containsKey("cadence")){
-            userSoundInfoMap.get(phone).getUserScoreMap().put("cadence", cadence.add(userSoundInfoMap.get(phone).getUserScoreMap().get("cadence")));
-        }else{
-            userSoundInfoMap.get(phone).getUserScoreMap().put("cadence", cadence);
-        }
-
-        if(userSoundInfoMap.get(phone).getUserScoreMap().containsKey("integrity")){
-            userSoundInfoMap.get(phone).getUserScoreMap().put("integrity", integrity.add(userSoundInfoMap.get(phone).getUserScoreMap().get("integrity")));
-        }else{
-            userSoundInfoMap.get(phone).getUserScoreMap().put("integrity", integrity);
-        }
-
-        Map<String, BigDecimal> scoreData = new HashMap<>();
-        scoreData.put("intonation", intonation);
-        scoreData.put("cadence", cadence);
-        scoreData.put("integrity", integrity);
-
-        userSoundInfoMap.get(phone).getUserMeasureScoreMap().put(measureIndex, scoreData);
-
-        WS_CLIENTS.get(phone).sendMessage(new TextMessage(JSON.toJSONString(createPushInfo("measureScore", measureIndex, intonation, cadence, integrity))));
-    }
-
-    /**
-     * @describe 计算最终评分
-     * @author Joburgess
-     * @date 2021/6/25 0025
-     * @param phone:
-     * @return void
-     */
-    private void calTotalScore(String phone) throws IOException {
-        int totalCompareNum = userSoundInfoMap.get(phone).getMeasureXmlInfoMap().keySet().size();
-        int currentCompareNum = totalCompareNum-userSoundInfoMap.get(phone).getMeasureEndTime().keySet().size();
-        BigDecimal intonation = BigDecimal.ZERO;
-        BigDecimal cadence = BigDecimal.ZERO;
-        BigDecimal integrity = BigDecimal.ZERO;
-
-        if(currentCompareNum>0){
-            intonation = userSoundInfoMap.get(phone).getUserScoreMap().get("intonation").divide(new BigDecimal(currentCompareNum), 0, BigDecimal.ROUND_DOWN);
-            cadence = userSoundInfoMap.get(phone).getUserScoreMap().get("cadence").divide(new BigDecimal(currentCompareNum), 0, BigDecimal.ROUND_DOWN);
-            integrity = new BigDecimal(currentCompareNum).divide(new BigDecimal(totalCompareNum), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(oneHundred).setScale(0, BigDecimal.ROUND_DOWN);
-        }
-
-        WS_CLIENTS.get(phone).sendMessage(new TextMessage(JSON.toJSONString(createPushInfo("overall", -1, intonation, cadence, integrity))));
-
-        //存储评分数据
-        sysMusicCompareRecordService.saveMusicCompareData(phone, userSoundInfoMap.get(phone).getMusicScoreId(), userSoundInfoMap.get(phone).getUserMeasureScoreMap());
-    }
-
-    /**
-     * @describe 生成评分结果
-     * @author Joburgess
-     * @date 2021/6/25 0025
-     * @param command:
-     * @param measureIndex:
-     * @param intonation:
-     * @param cadence:
-     * @param integrity:
-     * @return com.ym.mec.biz.dal.dto.WebSocketInfo
-     */
-    private WebSocketInfo createPushInfo(String command, Integer measureIndex,
-                                         BigDecimal intonation, BigDecimal cadence, BigDecimal integrity){
-        WebSocketInfo webSocketInfo = new WebSocketInfo();
-        HashMap<String, String> header = new HashMap<>();
-        header.put("commond", command);
-        webSocketInfo.setHeader(header);
-        Map<String, Object> result = new HashMap<>();
-        BigDecimal score = intonation.multiply(new BigDecimal(0.5)).add(cadence.multiply(new BigDecimal(0.5))).setScale(0, BigDecimal.ROUND_HALF_UP);
-//        BigDecimal score = cadence.setScale(0, BigDecimal.ROUND_HALF_UP);
-        result.put("score", score);
-        result.put("intonation", intonation);
-        result.put("cadence", cadence);
-        result.put("integrity", integrity);
-        result.put("measureIndex", measureIndex);
-        webSocketInfo.setBody(result);
-        LOGGER.info("小节频分:{}", JSON.toJSONString(webSocketInfo));
-        return webSocketInfo;
-    }
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -585,4 +585,6 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param classGroupId
      */
     void cancelPreCourseSchedule(Integer musicGroupSchoolTermCourseDetailId, Integer classGroupId);
+
+    List<ClassGroup> queryStudentClassGroupsAndTeacher(String musicGroupId);
 }

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

@@ -52,10 +52,9 @@ public interface CloudTeacherOrderService extends BaseService<Long, CloudTeacher
      * 获取乐团报名的云教练订单
      *
      * @param studentId
-     * @param musicGroupId
      * @return
      */
-    List<CloudTeacherOrder> getStudentCloudTeacherOrder(Integer studentId, String musicGroupId);
+    List<CloudTeacherOrder> getStudentCloudTeacherOrder(Integer studentId);
 
     /**
      * 退云教练

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ContractService.java

@@ -2,8 +2,11 @@ package com.ym.mec.biz.service;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 
+import com.ym.mec.biz.dal.dto.CirculationUser;
+import com.ym.mec.biz.dal.dto.OAFinancialDto;
 import com.ym.mec.biz.dal.entity.SysUserTsign;
 import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -128,4 +131,13 @@ public interface ContractService {
 	 * @return
 	 */
 	Map<String, Object> queryProductContract(Integer userId,String musicGroupId);
+
+
+	/**
+	 * OA财务审批的签章
+	 * @param financialDto
+	 * @return
+	 */
+	String transferOaFinancial(OAFinancialDto financialDto);
+
 }

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CooperationOrganLinkmanService.java

@@ -0,0 +1,16 @@
+package com.ym.mec.biz.service;
+
+import java.util.List;
+
+import com.ym.mec.biz.dal.entity.CooperationOrganLinkman;
+import com.ym.mec.common.service.BaseService;
+
+public interface CooperationOrganLinkmanService extends BaseService<Integer, CooperationOrganLinkman> {
+
+	/**
+	 * 根据合作单位编号获取列表
+	 * @param cooperationOrganId
+	 * @return
+	 */
+	List<CooperationOrganLinkman> queryByCooperationOrganId(Integer cooperationOrganId);
+}

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

@@ -563,7 +563,7 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 * @param groupId
 	 * @return
 	 */
-	Object getTeacherCourseHeadInfo(GroupType groupType,String groupId,Long courseScheduleId);
+	Map<String,Object> getTeacherCourseHeadInfo(GroupType groupType,String groupId,Long courseScheduleId);
 
 	/**
 	 * 根据课程组获取课表信息

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeInfoService.java

@@ -1,8 +1,10 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.EmployeeInfoDto;
 import com.ym.mec.biz.dal.entity.EmployeeInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface EmployeeInfoService extends BaseService<Long, EmployeeInfo> {
 
+	EmployeeInfoDto queryDetail(Long id);
 }

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

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
 import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
+import com.ym.mec.oa.entity.OAUser;
 
 import java.util.HashMap;
 import java.util.List;

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

@@ -0,0 +1,9 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.EmployeeVisit;
+import com.ym.mec.common.service.BaseService;
+
+public interface EmployeeVisitService extends BaseService<Long, EmployeeVisit> {
+
+	long insert(EmployeeVisit employeeVisit);
+}

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupNewsService.java

@@ -0,0 +1,8 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.MusicGroupNews;
+import com.ym.mec.common.service.BaseService;
+
+public interface MusicGroupNewsService extends BaseService<Long, MusicGroupNews> {
+
+}

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

@@ -51,7 +51,7 @@ public interface MusicGroupPaymentCalenderDetailService extends BaseService<Long
      * @param musicGroupPaymentCalenderId
      * @param userIdList
      */
-    void batchAdd(Long musicGroupPaymentCalenderId, Set<Integer> userIdList,MusicGroup musicGroup);
+    void batchAdd(Long musicGroupPaymentCalenderId, Set<Integer> userIdList,MusicGroup musicGroup,Boolean autoCreate);
 
     /**
      * 跨团合班新增学员

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderService.java

@@ -174,4 +174,6 @@ public interface MusicGroupPaymentCalenderService extends BaseService<Long, Musi
 	 * @param batchNo
 	 */
 	void revoke(String batchNo);
+
+	List<MusicGroupPaymentCalender> findByBatchNo(String batchNo);
 }

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

@@ -1,8 +1,13 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail;
 import com.ym.mec.common.service.BaseService;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface MusicGroupPaymentStudentCourseDetailService extends BaseService<Long, MusicGroupPaymentStudentCourseDetail> {
 
+    String getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes(String musicGroupId,Integer studentId,CourseSchedule.CourseScheduleType courseType,List<String> batchNos);
 }

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

@@ -0,0 +1,10 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.MusicGroupPerformance;
+import com.ym.mec.biz.dal.page.MusicGroupPerformanceQueryInfo;
+import com.ym.mec.common.service.BaseService;
+
+public interface MusicGroupPerformanceService extends BaseService<Integer, MusicGroupPerformance> {
+
+    Object queryNoStartPage(MusicGroupPerformanceQueryInfo queryInfo);
+}

+ 32 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupQuestionnaireService.java

@@ -0,0 +1,32 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.MusicGroupQuestionnaire;
+import com.ym.mec.biz.dal.entity.QuestionnaireTopic;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.Map;
+
+public interface MusicGroupQuestionnaireService extends BaseService<Integer, MusicGroupQuestionnaire> {
+
+    /**
+     * 新增乐团调查问卷
+     * @param musicGroupQuestionnaire
+     */
+    void add(MusicGroupQuestionnaire musicGroupQuestionnaire);
+
+    /**
+     * 获取问卷题目详情
+     * @return
+     */
+    QuestionnaireTopic getQuestionDetail();
+
+    /**
+     * 修改乐团满意度调查
+     * @param musicGroupQuestionnaire
+     */
+    void updateResult(MusicGroupQuestionnaire musicGroupQuestionnaire);
+
+    Map<String,Object> getDetail(Integer id);
+
+    void del(Integer id);
+}

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

@@ -376,4 +376,25 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @return
 	 */
 	PageInfo<MusicMemberDto> queryMusicMemberList(MusicMemberQueryInfo musicMemberQueryInfo);
+	
+	/**
+	 * 查询乐团基本信息
+	 * @param id
+	 * @return
+	 */
+	MusicGroupBasicDto queryBasicInfo(String id);
+
+	/**
+	 * 获取学员退团页面详情
+	 * @param musicGroupId
+	 * @return
+	 */
+    Object getQuitGroupDetail(String musicGroupId);
+    
+    /**
+     * 乐保生效
+     * @param musicGroupId
+     * @return
+     */
+    boolean takeEffectOfinstrumentInsurance(String musicGroupId);
 }

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupTrainPlanService.java

@@ -0,0 +1,27 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.MusicGroupTrainPlan;
+import com.ym.mec.biz.dal.entity.MusicGroupTrainPlanSaveDto;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.List;
+import java.util.Map;
+
+public interface MusicGroupTrainPlanService extends BaseService<Integer, MusicGroupTrainPlan> {
+
+    int add(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    Map<String,Object> queryPlanPage(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    List<ClassGroup> queryPlanCourseNum(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    List<String> queryCourseType(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    Map<String,Object> queryExceptionPlan(MusicGroupTrainPlanSaveDto musicGroupTrainPlanSaveDto);
+
+    MusicGroupTrainPlanSaveDto getSchoolTerm(CourseSchedule courseSchedule);
+
+    List<MusicGroupTrainPlan> queryPlan(MusicGroupTrainPlanSaveDto schoolTerm);
+}

+ 37 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/OaUserService.java

@@ -0,0 +1,37 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.Employee;
+
+public interface OaUserService {
+
+    /**
+     * 添加OA用户
+     * @param employee
+     * @return
+     */
+    Object addOaUser(Employee employee);
+
+
+    /**
+     * 修改OA用户
+     * @param employee
+     * @return
+     */
+    Object updateOaUser(Employee employee);
+
+
+    /**
+     * 删除OA用户(软删除)
+     * @param employee
+     * @return
+     */
+    Object delOaUser(Employee employee);
+
+
+    /**
+     * 恢复OA用户
+     * @param employee
+     * @return
+     */
+    Object reInsertOaUser(Employee employee);
+}

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/PhotoAlbumService.java

@@ -0,0 +1,17 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.PhotoAlbum;
+import com.ym.mec.biz.dal.page.PhotoQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.List;
+
+public interface PhotoAlbumService extends BaseService<Integer, PhotoAlbum> {
+
+    PageInfo<PhotoAlbum> queryAlbumPage(PhotoQueryInfo queryInfo);
+
+    void batchUpdate(List<PhotoAlbum> photoAlbumList);
+
+    void batchDelete(String ids);
+}

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/PhotoService.java

@@ -0,0 +1,19 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.Photo;
+import com.ym.mec.biz.dal.page.PhotoQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.List;
+
+public interface PhotoService extends BaseService<Integer, Photo> {
+
+    int del(String ids);
+
+    int batchAdd(List<Photo> photoList);
+
+    int batchUpdate(List<Photo> photoList);
+
+    PageInfo<Photo> queryPhotoPage(PhotoQueryInfo queryInfo);
+}

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

@@ -45,7 +45,6 @@ public interface ReplacementInstrumentActivityService extends BaseService<Intege
      */
     ReplacementInstrumentActivityStatDto getInfo(Integer id);
 
-
     /**
      * 获取问卷列表
      * @param queryInfo

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است