Kaynağa Gözat

Merge remote-tracking branch 'origin/saas_wangzhao' into saas_wangzhao

zouxuan 2 yıl önce
ebeveyn
işleme
f4bdb1cb0f
100 değiştirilmiş dosya ile 2732 ekleme ve 874 silme
  1. 0 3
      cms/src/main/java/com/ym/mec/cms/controller/NewsController.java
  2. 1 1
      cms/src/main/java/com/ym/mec/cms/dal/dao/SysNewsInformationDao.java
  3. 1 1
      cms/src/main/java/com/ym/mec/cms/service/SysNewsTypeService.java
  4. 2 2
      cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  5. 18 4
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/SysUserFeignService.java
  6. 16 0
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/fallback/SysUserFeignServiceFallback.java
  7. 1 1
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/dto/SysUserQueryInfo.java
  8. 3 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDao.java
  9. 8 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java
  10. 6 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java
  11. 8 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java
  12. 1 1
      mec-auth/mec-auth-server/src/main/resources/bootstrap-test.properties
  13. 15 0
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  14. 3 8
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ActivityUserMapperDao.java
  15. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherFreeCourseDao.java
  16. 1 8
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java
  17. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  18. 0 8
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDao.java
  19. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicMarginDao.java
  20. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/OperatingReportCloudDao.java
  21. 97 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/OperatingReportNewDao.java
  22. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/OrganCourseTypeOriginalCostDao.java
  23. 24 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPreVisitDao.java
  24. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupCategoryDao.java
  25. 64 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CheckScheduleQualificationDto.java
  26. 124 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPreVisitDto.java
  27. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ActivityUserMapper.java
  28. 80 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherFreeCourse.java
  29. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherOrder.java
  30. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleStudentPayment.java
  31. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/FinancialExpenditure.java
  32. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java
  33. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalender.java
  34. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderDetail.java
  35. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentStudentCourseDetail.java
  36. 191 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicMargin.java
  37. 138 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/OperatingReportCloud.java
  38. 137 18
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/OperatingReportNew.java
  39. 51 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/OrganCourseTypeOriginalCost.java
  40. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPreVisit.java
  41. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentVisit.java
  42. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportEnum.java
  43. 6 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/FeeProjectEnum.java
  44. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicMarginQueryInfo.java
  45. 31 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/OperatingReportNewQueryInfo.java
  46. 48 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentPreVisitQueryInfo.java
  47. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentVisitQueryInfo.java
  48. 1 3
      mec-biz/src/main/java/com/ym/mec/biz/service/ActivityUserMapperService.java
  49. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherFreeCourseService.java
  50. 0 8
      mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherOrderService.java
  51. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  52. 0 11
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderService.java
  53. 0 19
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  54. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicMarginService.java
  55. 37 0
      mec-biz/src/main/java/com/ym/mec/biz/service/OperatingReportCloudService.java
  56. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/service/OperatingReportNewService.java
  57. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPreVisitService.java
  58. 0 41
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  59. 58 23
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java
  60. 0 14
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  61. 2 30
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java
  62. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherFreeCourseServiceImpl.java
  63. 9 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java
  64. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  65. 22 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java
  66. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java
  67. 16 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/FinancialExpenditureServiceImpl.java
  68. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexErrDataRecordServiceImpl.java
  69. 6 35
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java
  70. 16 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java
  71. 14 28
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  72. 2 302
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  73. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicMarginServiceImpl.java
  74. 142 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OperatingReportCloudServiceImpl.java
  75. 178 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OperatingReportNewServiceImpl.java
  76. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  77. 39 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPreVisitServiceImpl.java
  78. 29 174
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  79. 1 30
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  80. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentVisitServiceImpl.java
  81. 18 14
      mec-biz/src/main/resources/config/mybatis/ActivityUserMapperMapper.xml
  82. 71 0
      mec-biz/src/main/resources/config/mybatis/CloudTeacherFreeCourseMapper.xml
  83. 7 12
      mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml
  84. 3 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  85. 5 5
      mec-biz/src/main/resources/config/mybatis/FinancialExpenditureMapper.xml
  86. 3 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  87. 2 20
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderMapper.xml
  88. 7 4
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentStudentCourseDetailMapper.xml
  89. 123 0
      mec-biz/src/main/resources/config/mybatis/MusicMarginMapper.xml
  90. 100 0
      mec-biz/src/main/resources/config/mybatis/OperatingReportCloudMapper.xml
  91. 335 0
      mec-biz/src/main/resources/config/mybatis/OperatingReportNewMapper.xml
  92. 24 0
      mec-biz/src/main/resources/config/mybatis/OrganCourseTypeOriginalCostMapper.xml
  93. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  94. 30 2
      mec-biz/src/main/resources/config/mybatis/StudentPreVisitMapper.xml
  95. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentStatisticsMapper.xml
  96. 5 1
      mec-biz/src/main/resources/config/mybatis/StudentVisitMapper.xml
  97. 3 0
      mec-biz/src/main/resources/config/mybatis/VipGroupCategoryMapper.xml
  98. 4 0
      mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java
  99. 5 0
      mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java
  100. 7 0
      mec-common/common-core/src/main/java/com/ym/mec/common/constant/CommonConstants.java

+ 0 - 3
cms/src/main/java/com/ym/mec/cms/controller/NewsController.java

@@ -167,16 +167,13 @@ public class NewsController extends BaseController {
     public Object update(SysNewsInformation newsInfo) {
         Date date = new Date();
         newsInfo.setUpdateTime(date);
-
         SysNewsInformation originNewsInfo = sysNewsInformationService.get(newsInfo.getId());
         if (originNewsInfo == null) {
             return failed("请求参数错误");
         }
-
         if (newsInfo.getType() == null) {
             newsInfo.setType(originNewsInfo.getType());
         }
-
         if (newsInfo.getType() == 6 || newsInfo.getType() == 4) {
             newsInfo.setTenantId(-1);
         }

+ 1 - 1
cms/src/main/java/com/ym/mec/cms/dal/dao/SysNewsInformationDao.java

@@ -31,5 +31,5 @@ public interface SysNewsInformationDao extends BaseDAO<Long, SysNewsInformation>
 	
 	SysNewsInformationDto queryById(Long id);
 
-	List<SysNewsInformation> queryBySubType(@Param("subType") Integer subType, @Param("memo") String memo);
+	List<SysNewsInformation> queryBySubType(@Param("subType") Integer subType,@Param("memo") String memo);
 }

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

@@ -13,5 +13,5 @@ public interface SysNewsTypeService extends BaseService<Integer, SysNewsType> {
 	//根据父级查询子集
 	List<SysNewsTypeTree> queryByParentId(Integer parentId);
 
-	List<SysNewsType> listWithTree(Integer id, String memo);
+	List<SysNewsType> listWithTree(Integer id,String memo);
 }

+ 2 - 2
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -185,13 +185,13 @@
 		SELECT COUNT(sni.id_) FROM sys_news_information sni
 		<include refid="queryCondition" />
 	</select>
-	
+
     <select id="queryBottomInfo" resultMap="SysNewsInformation" parameterType="java.lang.Integer">
         SELECT * FROM sys_news_information
         where del_flag_=0 and status_ = 1
                 and sub_type_ = #{subType}
     </select>
-	
+
 	<update id="deleteWithLogical">
 		UPDATE sys_news_information SET del_flag_ = 1,update_time_ = NOW() WHERE id_ = #{id}
 	</update>

+ 18 - 4
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/SysUserFeignService.java

@@ -2,13 +2,12 @@ package com.ym.mec.auth.api.client;
 
 import java.util.List;
 
+import com.ym.mec.auth.api.dto.SysUserQueryInfo;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 import com.ym.mec.auth.api.client.fallback.SysUserFeignServiceFallback;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -38,4 +37,19 @@ public interface SysUserFeignService {
 
 	@PostMapping(value = "exit/{clientId}/{phone}", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
 	public HttpResponseResult<String> exitByPhone(@PathVariable("clientId") String clientId, @PathVariable("phone") String phone);
+
+
+
+	@PostMapping(value = "/refreshToken")
+	@ApiOperation(value = "刷新token")
+	HttpResponseResult refreshToken(@RequestParam("refreshToken")String refreshToken,
+									@RequestParam("clientId")String clientId,
+									@RequestParam("clientSecret")String clientSecret);
+
+	@GetMapping(value = "exit")
+	@ApiOperation(value = "退出登录")
+	HttpResponseResult<String> logout();
+
+	@PostMapping(value = "user/list")
+	HttpResponseResult<List<SysUser>> page(@RequestBody SysUserQueryInfo queryInfo);
 }

+ 16 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/fallback/SysUserFeignServiceFallback.java

@@ -2,6 +2,7 @@ package com.ym.mec.auth.api.client.fallback;
 
 import java.util.List;
 
+import com.ym.mec.auth.api.dto.SysUserQueryInfo;
 import org.springframework.stereotype.Component;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
@@ -44,4 +45,19 @@ public class SysUserFeignServiceFallback implements SysUserFeignService {
 	public HttpResponseResult<String> exitByPhone(String clientId, String phone) {
 		return null;
 	}
+
+	@Override
+	public HttpResponseResult refreshToken(String refreshToken, String clientId, String clientSecret) {
+		return null;
+	}
+
+	@Override
+	public HttpResponseResult<String> logout() {
+		return null;
+	}
+
+	@Override
+	public HttpResponseResult<List<SysUser>> page(SysUserQueryInfo queryInfo) {
+		return null;
+	}
 }

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/queryInfo/SysUserQueryInfo.java → mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/dto/SysUserQueryInfo.java

@@ -1,4 +1,4 @@
-package com.ym.mec.auth.web.controller.queryInfo;
+package com.ym.mec.auth.api.dto;
 
 import com.ym.mec.common.page.QueryInfo;
 

+ 3 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDao.java

@@ -1,5 +1,6 @@
 package com.ym.mec.auth.dal.dao;
 
+import com.ym.mec.auth.api.dto.SysUserQueryInfo;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.UserLockFlag;
 import com.ym.mec.common.dal.BaseDAO;
@@ -120,4 +121,6 @@ public interface SysUserDao extends BaseDAO<Integer, SysUser> {
      * @param search 关键字
      */
     List<SysUser> queryLikeByPhoneOrName(@Param("search") String search,@Param("tenantId") Integer tenantId);
+
+    List<SysUser> queryEmployeeList(SysUserQueryInfo queryInfo);
 }

+ 8 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java

@@ -1,6 +1,7 @@
 package com.ym.mec.auth.service;
 
 import com.ym.mec.auth.api.dto.SysUserInfo;
+import com.ym.mec.auth.api.dto.SysUserQueryInfo;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.service.BaseService;
@@ -123,4 +124,11 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
     List<SysUser> queryLikeByPhoneOrName(String search);
 
     String queryClientByPhone(String phone);
+    /**
+     * 商城同步管理用户
+     *
+     * @param queryInfo
+     * @return
+     */
+    List<SysUser> queryEmployeeList(SysUserQueryInfo queryInfo);
 }

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

@@ -1,6 +1,7 @@
 package com.ym.mec.auth.service.impl;
 
 import com.ym.mec.auth.api.dto.SysUserInfo;
+import com.ym.mec.auth.api.dto.SysUserQueryInfo;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.dal.dao.SysUserDao;
 import com.ym.mec.auth.service.SysRoleMenuService;
@@ -200,4 +201,9 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
         return sysUser.getUserType();
     }
 
+    @Override
+    public List<SysUser> queryEmployeeList(SysUserQueryInfo queryInfo) {
+        return sysUserDao.queryEmployeeList(queryInfo);
+    }
+
 }

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

@@ -5,7 +5,7 @@ import com.ym.mec.auth.service.SysRoleService;
 import com.ym.mec.auth.service.SysUserRoleService;
 import com.ym.mec.auth.service.SysUserService;
 import com.ym.mec.auth.service.TenantInfoService;
-import com.ym.mec.auth.web.controller.queryInfo.SysUserQueryInfo;
+import com.ym.mec.auth.api.dto.SysUserQueryInfo;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.ImResult;
@@ -33,6 +33,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
+import java.util.List;
 
 @RestController()
 @RequestMapping("user")
@@ -370,4 +371,10 @@ public class UserController extends BaseController {
 		}
 		return failed("请登录");
 	}
+
+	@ApiOperation(value = "查询平台用户信息")
+	@PostMapping(value = "/list")
+	public HttpResponseResult<List<SysUser>> page(@RequestBody SysUserQueryInfo queryInfo) {
+		return succeed(sysUserService.queryEmployeeList(queryInfo));
+	}
 }

+ 1 - 1
mec-auth/mec-auth-server/src/main/resources/bootstrap-test.properties

@@ -3,7 +3,7 @@
 #\u670d\u52a1\u5668\u5730\u5740
 spring.cloud.nacos.config.server-addr=47.114.176.40:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=46f06363-b9d6-46f0-9cd7-7b33dcf26bb0
+spring.cloud.nacos.config.namespace=f753d9d9-4bb2-4df6-a483-da9e169617c4
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 15 - 0
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -238,4 +238,19 @@
             )
     </select>
 
+    <select id="queryEmployeeList" resultMap="SysUser">
+        select  su.*
+        from employee e
+        left join sys_user su on su.id_ = e.user_id_
+        <where>
+            su.del_flag_ = 0
+            <if test="createStartDate != null and createStartDate != ''">
+                and #{createStartDate} &lt;= e.create_time_
+            </if>
+            <if test="createEndDate != null and createEndDate != ''">
+                and #{createEndDate} &gt; e.create_time_
+            </if>
+        </where>
+    </select>
+
 </mapper>

+ 3 - 8
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ActivityUserMapperDao.java

@@ -1,11 +1,9 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.biz.dal.dto.ActivityStudentDto;
-import com.ym.mec.biz.dal.dto.ActivityUserDto;
-import com.ym.mec.biz.dal.dto.CourseFormDto;
-import com.ym.mec.biz.dal.dto.ExportStudentSubCourse;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.ActivityUserMapper;
 import com.ym.mec.biz.dal.page.ActivityUserQueryInfo;
+import com.ym.mec.biz.service.impl.ActivityUserMapperServiceImpl;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Component;
@@ -119,9 +117,7 @@ public interface ActivityUserMapperDao extends BaseDAO<Integer, ActivityUserMapp
     */
     List<Integer> queryActivityCourseTimeList(@Param("queryInfo") ActivityUserQueryInfo activityUserQueryInfo);
 
-    List<ActivityUserMapper> findTotalByStudents(@Param("studentIdList") List<Integer> studentIdList,
-                                            @Param("categoryId") Integer categoryId,
-                                            @Param("classMinutes") Integer classMinutes);
+    List<ActivityUserMapper> findTotalByStudents(@Param("dto") CheckScheduleQualificationDto checkScheduleQualificationDto);
     List<ActivityUserMapper> findByStudents(@Param("studentIdList") List<Integer> studentIdList,
                                             @Param("categoryId") Integer categoryId,
                                             @Param("classMinutes") Integer classMinutes);
@@ -132,7 +128,6 @@ public interface ActivityUserMapperDao extends BaseDAO<Integer, ActivityUserMapp
 
     void batchUpdate(@Param("useActivityUserMappers") List<ActivityUserMapper> useActivityUserMappers);
     void batchUpdateFree(@Param("useActivityUserMappers") List<ActivityUserMapper> useActivityUserMappers);
-    void batchUpdate1(@Param("useActivityUserMappers") List<ActivityUserMapper> useActivityUserMappers);
 
     List<ActivityUserMapper> findByIds(@Param("activityUserMapperIds") String activityUserMapperIds);
 }

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

@@ -0,0 +1,12 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.CloudTeacherFreeCourse;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface CloudTeacherFreeCourseDao extends BaseDAO<Long, CloudTeacherFreeCourse> {
+
+    void batchInsert(@Param("scheduleIdList") String scheduleIdList, @Param("calenderId") Long calenderId);
+}

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

@@ -3,11 +3,11 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.dto.CloudTeacherActiveTargetDetailDto;
 import com.ym.mec.biz.dal.dto.CloudTeacherOrderDto;
 import com.ym.mec.biz.dal.dto.Mapper;
-import com.ym.mec.biz.dal.dto.SysUserDto;
 import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.CloudTeacherStudent;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
+
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
@@ -39,13 +39,6 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
     List<CloudTeacherOrder> getStudentCloudTeacherOrders(@Param("studentIds") List<Integer> studentIds, @Param("musicGroupId") String musicGroupId);
 
     /**
-     * 获取乐团报名的云教练订单
-     * @param studentId
-     * @return
-     */
-    List<CloudTeacherOrder> getStudentCloudTeacherOrder(@Param("studentId") Integer studentId, @Param("musicGroupId") String musicGroupId);
-    
-    /**
      * 根据订单编号查询订单详情
      * @param orderId
      * @return

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

@@ -1945,4 +1945,13 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     * @date 2022/8/15 17:01
     */
     List<CourseScheduleStudentDto> queryDetailList(@Param("queryInfo") CourseDetailQueryInfo courseDetailQueryInfo);
+
+    /**
+    * @description: 标记云教练课程
+     * @param courseIds
+    * @return void
+    * @author zx
+    * @date 2022/9/6 14:07
+    */
+    void markFreeCourse(@Param("courseIds") String courseIds);
 }

+ 0 - 8
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDao.java

@@ -40,14 +40,6 @@ public interface MusicGroupPaymentCalenderDao extends BaseDAO<Long, MusicGroupPa
 
 
     /**
-     * 批量插入
-     *
-     * @param musicGroupPaymentCalenderList
-     * @return
-     */
-    int batchInsert(List<MusicGroupPaymentCalender> musicGroupPaymentCalenderList);
-
-    /**
      * 查询指定状态的记录
      *
      * @param status

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicMarginDao.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.MusicMargin;
+
+public interface MusicMarginDao extends BaseDAO<Integer, MusicMargin> {
+
+	
+}

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

@@ -0,0 +1,36 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.OperatingReportCloud;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface OperatingReportCloudDao extends BaseDAO<Integer, OperatingReportCloud> {
+
+    void batchInsert(@Param("operatingReportClouds") List<OperatingReportCloud> operatingReportClouds);
+
+    /**
+    * @description: 根据缴费项目编号查询
+     * @param calenderId
+    * @return com.ym.mec.biz.dal.entity.OperatingReportCloud
+    * @author zx
+    * @date 2022/9/7 09:45
+    */
+    OperatingReportCloud findByCalenderId(@Param("calenderId") Long calenderId);
+
+    //标记经营报表已结算
+    void settlementCalender(@Param("month") String month);
+
+    //当月的经营报表标记为已结算
+    void settlementCurrentCalender(@Param("month") String month);
+
+    /**
+    * @description: 获取当月结算的缴费项目
+     * @param calenderId
+    * @return com.ym.mec.biz.dal.entity.OperatingReportCloud
+    * @author zx
+    * @date 2022/9/13 15:47
+    */
+    OperatingReportCloud findByCurrentCalenderId(@Param("calenderId") Long calenderId);
+}

+ 97 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/OperatingReportNewDao.java

@@ -0,0 +1,97 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.OperatingReportNew;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+public interface OperatingReportNewDao extends BaseDAO<Integer, OperatingReportNew> {
+
+    List<OperatingReportNew> initOperatingReport(String month);
+
+    //获取销售收入和销售成本(销售成本扣除已退)
+    List<OperatingReportNew> sumSellAmount(String month);
+
+    //云教练赠送课程服务收入
+    List<Map<Integer,BigDecimal>> sumCloudCourseAmount(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay);
+
+    //付费课程收入
+    List<Map<Integer,BigDecimal>> sumCourseAmount(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay);
+
+    //个人云教练服务收入
+    List<Map<Integer,BigDecimal>> sumPersonalCloudAmount(@Param("month") String month, @Param("firstDay") String firstDay, @Param("lastDay") String lastDay);
+
+    //团体云教练服务收入
+    List<Map<Integer,BigDecimal>> sumGroupCloudAmount(@Param("month") String month, @Param("firstDay") String firstDay, @Param("lastDay") String lastDay);
+
+    //业务退费
+    List<Map<Integer,BigDecimal>> sumRefundAmount(@Param("month") String month);
+
+    //变动费用
+    List<Map<Integer,BigDecimal>> sumVariableCosts(@Param("month") String month);
+
+    //固定费用
+    List<Map<Integer,BigDecimal>> sumFixedCosts(@Param("month") String month);
+
+    //个人云教练预收款
+    List<Map<Integer,BigDecimal>> sumCloudPreAmount(@Param("month") String month, @Param("lastDay") String lastDay);
+
+    //团体云教练分月结转
+    List<Map<Integer,BigDecimal>> sumGroupCloudPreAmount(@Param("month") String month, @Param("lastDay") String lastDay);
+
+    //团体云教练当月一次性结转
+    List<Map<Integer,BigDecimal>> sumGroupAmount();
+
+    //云教练赠课预收
+    List<Map<Integer,BigDecimal>> sumCloudCoursePreAmount(@Param("lastDay") String lastDay);
+
+    //付费课程预收
+    List<Map<Integer,BigDecimal>> sumCoursePreAmount(@Param("lastDay") String lastDay);
+
+    //其他预收
+    List<Map<Integer,BigDecimal>> sumOtherPreAmount();
+
+    //销售预收
+    List<Map<Integer,BigDecimal>> sumSalePreAmount();
+
+    //欠费总金额
+    List<Map<Integer,BigDecimal>> sumArrearsAmount();
+
+    //待缴费学校金额
+    List<Map<Integer,BigDecimal>> sumSchoolAmount();
+
+    //更新云教练计费时间
+    void initCloudStartTime(@Param("lastDay") String lastDay);
+
+    //汇总乐器押金
+    List<Map<Integer,BigDecimal>> sumMusicMargin();
+
+    void batchInsert(@Param("operatingList") List<OperatingReportNew> operatingList);
+
+    void deleteByMonth(String month);
+
+    List<Map<Integer,BigDecimal>> sumInternalSettlement(@Param("month") String month);
+
+    List<Map<Integer,BigDecimal>> sumPrepayments(@Param("month") String month);
+
+    //云教练赠送排课资格预收
+    List<Map<Integer,BigDecimal>> sumActivityUserMapperAmount(@Param("categoryId") Integer categoryId);
+
+    //付费乐团课学员缴费预收
+    List<Map<Integer,BigDecimal>> sumMusicCourseAmount();
+
+    //获取排课资格预收
+    List<Map<Integer,BigDecimal>> sumSubActivityUserMapperAmount();
+
+    //导入的服务收入
+    List<Map<Integer,BigDecimal>> sumImportServerOrderAmount(@Param("month") String month);
+
+    //获取待生效云教练预收
+    List<Map<Integer,BigDecimal>> sumWaitCloudPreAmount();
+
+    //乐保实收入
+    List<Map<Integer,BigDecimal>> sumMaintenanceAmount(@Param("month") String month);
+}

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/OrganCourseTypeOriginalCostDao.java

@@ -0,0 +1,16 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.OrganCourseTypeOriginalCost;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+
+public interface OrganCourseTypeOriginalCostDao extends BaseDAO<Integer, OrganCourseTypeOriginalCost> {
+
+    //获取对应分部课程类型成本价
+    BigDecimal findByOrganIdAndCourseType(@Param("organId") Integer organId, @Param("courseType") String courseType);
+
+    //计算课程成本价
+    BigDecimal getCourseCostPrice(@Param("courseIds") String courseIds);
+}

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

@@ -1,11 +1,34 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.StudentPreVisitDto;
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
 import com.ym.mec.biz.dal.entity.StudentPreVisit;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 public interface StudentPreVisitDao extends BaseDAO<Integer, StudentPreVisit> {
+	/**
+	 * 任务批量新增待回访记录
+	 * @param studentPreVisits
+	 * @return
+	 */
+	Integer batchInsert(@Param("studentPreVisits")List<StudentPreVisit> studentPreVisits);
 
-	Integer batchInsert(List<StudentPreVisit> studentPreVisits);
+	/**
+	 *
+	 * @param studentId
+	 * @param visitCycle
+	 */
+	void updateVisit(@Param("studentId") Integer studentId, @Param("visitCycle") String visitCycle);
+
+	/**
+	 * 获取访问列表
+	 *
+	 * @param params
+	 * @return
+	 */
+	List<StudentPreVisitDto> getPageList(Map<String, Object> params);
 }

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

@@ -17,4 +17,6 @@ public interface VipGroupCategoryDao extends BaseDAO<Integer, VipGroupCategory>
     List<ConditionDto> findConditionCategorys();
 
     List<VipGroupCategory> findByIds(@Param("categoryIds") Set<Integer> categoryIds);
+
+    VipGroupCategory getTheory();
 }

+ 64 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CheckScheduleQualificationDto.java

@@ -0,0 +1,64 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.util.List;
+
+public class CheckScheduleQualificationDto {
+    private List<Integer> studentIdList;
+
+    private Integer categoryId;
+
+    private Integer classMinutes;
+
+    private Integer courseNum;
+
+    private Long groupId;
+
+    public CheckScheduleQualificationDto(List<Integer> studentIdList, Integer categoryId, Integer classMinutes, Integer courseNum, Long groupId) {
+        this.studentIdList = studentIdList;
+        this.categoryId = categoryId;
+        this.classMinutes = classMinutes;
+        this.courseNum = courseNum;
+        this.groupId = groupId;
+    }
+
+    public List<Integer> getStudentIdList() {
+        return studentIdList;
+    }
+
+    public void setStudentIdList(List<Integer> studentIdList) {
+        this.studentIdList = studentIdList;
+    }
+
+    public Integer getCategoryId() {
+        return categoryId;
+    }
+
+    public void setCategoryId(Integer categoryId) {
+        this.categoryId = categoryId;
+    }
+
+    public Integer getClassMinutes() {
+        return classMinutes;
+    }
+
+    public void setClassMinutes(Integer classMinutes) {
+        this.classMinutes = classMinutes;
+    }
+
+    public Integer getCourseNum() {
+        return courseNum;
+    }
+
+    public void setCourseNum(Integer courseNum) {
+        this.courseNum = courseNum;
+    }
+
+    public Long getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(Long groupId) {
+        this.groupId = groupId;
+    }
+
+}

+ 124 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPreVisitDto.java

@@ -0,0 +1,124 @@
+package com.ym.mec.biz.dal.dto;
+
+public class StudentPreVisitDto {
+    /**  */
+    private Integer id;
+
+    /** 分部 */
+    private Integer organId;
+
+    /** 学生id */
+    private Integer studentId;
+
+    /** 学生姓名 */
+    private String studentName;
+
+    /** 老师id */
+    private Integer teacherId;
+
+    /** 老师姓名 */
+    private String teacherName;
+
+    /** 手机号 */
+    private String phone;
+
+    /** 组织名称 */
+    private String orgname;
+
+    /**  */
+    private Integer tenantId;
+
+    /** 访问状态 0待访问1已访问 */
+    private Integer isVisit;
+
+    /** 访问周期 */
+    private String visitCycle;
+
+    public void setId(Integer id){
+        this.id = id;
+    }
+
+    public Integer getId(){
+        return this.id;
+    }
+
+    public void setOrganId(Integer organId){
+        this.organId = organId;
+    }
+
+    public Integer getOrganId(){
+        return this.organId;
+    }
+
+    public void setStudentId(Integer studentId){
+        this.studentId = studentId;
+    }
+
+    public Integer getStudentId(){
+        return this.studentId;
+    }
+
+    public void setStudentName(String studentName){
+        this.studentName = studentName;
+    }
+
+    public String getStudentName(){
+        return this.studentName;
+    }
+
+    public void setTeacherId(Integer teacherId){
+        this.teacherId = teacherId;
+    }
+
+    public Integer getTeacherId(){
+        return this.teacherId;
+    }
+
+    public void setTeacherName(String teacherName){
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherName(){
+        return this.teacherName;
+    }
+
+    public void setPhone(String phone){
+        this.phone = phone;
+    }
+
+    public String getPhone(){
+        return this.phone;
+    }
+
+    public void setOrgname(String orgname){
+        this.orgname = orgname;
+    }
+
+    public String getOrgname(){
+        return this.orgname;
+    }
+
+    public void setTenantId(Integer tenantId){
+        this.tenantId = tenantId;
+    }
+
+    public Integer getTenantId(){
+        return this.tenantId;
+    }
+
+    public void setIsVisit(Integer isVisit){
+        this.isVisit = isVisit;
+    }
+
+    public Integer getIsVisit(){
+        return this.isVisit;
+    }
+
+    public void setVisitCycle(String visitCycle){
+        this.visitCycle = visitCycle;
+    }
+
+    public String getVisitCycle(){
+        return this.visitCycle;
+    }
+}

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

@@ -115,6 +115,17 @@ public class ActivityUserMapper extends BaseEntity {
 	@ApiModelProperty(value = "赠送的优惠券编号")
 	private Integer giveCouponId;
 
+	@ApiModelProperty(value = "关联的云教练缴费项目编号")
+	private Long calenderId;
+
+	public Long getCalenderId() {
+		return calenderId;
+	}
+
+	public void setCalenderId(Long calenderId) {
+		this.calenderId = calenderId;
+	}
+
 	public BigDecimal getCurrentCoursePrice() {
 		return currentCoursePrice;
 	}

+ 80 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherFreeCourse.java

@@ -0,0 +1,80 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(cloud_teacher_free_course):
+ */
+public class CloudTeacherFreeCourse {
+
+	/**  */
+	private Long id;
+	
+	/** 课程编号 */
+	private Long courseId;
+
+	private Long calenderId;
+	
+	/** 课程成本 */
+	private java.math.BigDecimal cost;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+
+	public Long getCalenderId() {
+		return calenderId;
+	}
+
+	public void setCalenderId(Long calenderId) {
+		this.calenderId = calenderId;
+	}
+
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setCourseId(Long courseId){
+		this.courseId = courseId;
+	}
+	
+	public Long getCourseId(){
+		return this.courseId;
+	}
+
+	public void setCost(java.math.BigDecimal cost){
+		this.cost = cost;
+	}
+	
+	public java.math.BigDecimal getCost(){
+		return this.cost;
+	}
+
+	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);
+	}
+
+}

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

@@ -50,6 +50,9 @@ public class CloudTeacherOrder extends BaseEntity {
     @ApiModelProperty(value = "购买价格")
     private BigDecimal amount;
 
+    @ApiModelProperty(value = "经营报表结算价")
+    private BigDecimal operatingAmount = BigDecimal.ZERO;
+
     /**
      * 退回金额
      */
@@ -116,10 +119,19 @@ public class CloudTeacherOrder extends BaseEntity {
     @ApiModelProperty(value = "更新时间")
     private Date updateTime;
 
+    @ApiModelProperty(value = "乐团编号")
     private String musicGroupId;
     
     private StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
 
+    public BigDecimal getOperatingAmount() {
+        return operatingAmount;
+    }
+
+    public void setOperatingAmount(BigDecimal operatingAmount) {
+        this.operatingAmount = operatingAmount;
+    }
+
     public Integer getActiveRemark() {
         return activeRemark;
     }

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

@@ -59,6 +59,17 @@ public class CourseScheduleStudentPayment extends BaseEntity implements Comparab
 	@ApiModelProperty(value = "如果是活动排课,那么这里关联的是学员排课资格编号",required = false)
 	private Integer activityUserMapperId;
 
+	@ApiModelProperty(value = "关联的云教练缴费项目编号",required = false)
+	private Long calenderId;
+
+	public Long getCalenderId() {
+		return calenderId;
+	}
+
+	public void setCalenderId(Long calenderId) {
+		this.calenderId = calenderId;
+	}
+
 	public Integer getActivityUserMapperId() {
 		return activityUserMapperId;
 	}

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/FinancialExpenditure.java

@@ -22,6 +22,9 @@ public class FinancialExpenditure extends BaseEntity {
 	@ApiModelProperty(value = "批次号",required = false)
 	private String batchNo;
 	/**  */
+	@ApiModelProperty(value = "oa审批类型",required = false)
+	private Integer processId;
+	/**  */
 	@ApiModelProperty(value = "财务流程编号",required = false)
 	private String financialProcessNo;
 	/**  */
@@ -36,6 +39,9 @@ public class FinancialExpenditure extends BaseEntity {
 	/**  */
 	@ApiModelProperty(value = "申请人",required = false)
 	private String applyUser;
+	/**  */
+	@ApiModelProperty(value = "申请人",required = false)
+	private Integer applyUserId;
 
 	@ApiModelProperty(value = "支出类型(1:固定费用、2:变动费用:3:业务退费)",required = false)
 	private ExpenditureTypeEnum type = REFUND;
@@ -98,6 +104,22 @@ public class FinancialExpenditure extends BaseEntity {
 
 	private boolean maintenanceFeeFlag;
 
+	public Integer getProcessId() {
+		return processId;
+	}
+
+	public void setProcessId(Integer processId) {
+		this.processId = processId;
+	}
+
+	public Integer getApplyUserId() {
+		return applyUserId;
+	}
+
+	public void setApplyUserId(Integer applyUserId) {
+		this.applyUserId = applyUserId;
+	}
+
 	public String getMerNo() {
 		return merNo;
 	}

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -187,8 +187,12 @@ public class MusicGroup extends BaseEntity {
 
 	//0云教练1云教练+
 	private Integer cloudTeacherType;
-	
+
+	@ApiModelProperty(value = "是否发放乐器",required = true)
 	private Integer musicalInstrumentsProvideStatus;
+
+	@ApiModelProperty(value = "发放乐器时间",required = true)
+	private String musicalInstrumentsProvideTime;
 	
 	private Boolean memberCourseShowFlag = false;
 
@@ -206,6 +210,14 @@ public class MusicGroup extends BaseEntity {
 	
 	private ClassGroupTypeEnum extracurricularTeacher;
 
+	public String getMusicalInstrumentsProvideTime() {
+		return musicalInstrumentsProvideTime;
+	}
+
+	public void setMusicalInstrumentsProvideTime(String musicalInstrumentsProvideTime) {
+		this.musicalInstrumentsProvideTime = musicalInstrumentsProvideTime;
+	}
+
 	public Integer getHasInstrumentNum() {
 		return hasInstrumentNum;
 	}

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

@@ -199,6 +199,17 @@ public class MusicGroupPaymentCalender extends BaseEntity {
 
 	private String organName;
 
+	@ApiModelProperty(value = "标记是否云教练缴费项目",required = false)
+	private Boolean cloudTeacherPaymentFlag = false;
+
+	public Boolean getCloudTeacherPaymentFlag() {
+		return cloudTeacherPaymentFlag;
+	}
+
+	public void setCloudTeacherPaymentFlag(Boolean cloudTeacherPaymentFlag) {
+		this.cloudTeacherPaymentFlag = cloudTeacherPaymentFlag;
+	}
+
 	public String getOrganName() {
 		return organName;
 	}

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderDetail.java

@@ -31,9 +31,11 @@ public class MusicGroupPaymentCalenderDetail extends BaseEntity {
 	private java.math.BigDecimal expectAmount;
 
 	/** 废弃字段,如果需要查看金额,请前往订单详情 */
+	//经营报表需要,重新定义该字段
 	private java.math.BigDecimal expectMemberAmount = BigDecimal.ZERO;
 	
 	/** 废弃字段,如果需要查看金额,请前往订单详情 */
+	//经营报表需要,重新定义该字段,记录云教练缴费课程预收(经营报表当月,根据缴费项目锁排课程总成本)
 	private java.math.BigDecimal actualAmount;
 	
 	/**  */

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

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.entity;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.common.entity.BaseEntity;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.math.BigDecimal;
@@ -38,6 +39,17 @@ public class MusicGroupPaymentStudentCourseDetail extends BaseEntity {
 
 	/**  已消耗时长*/
 	private Integer usedCourseMinutes;
+
+	@ApiModelProperty(value = "标记是否云教练缴费项目",required = false)
+	private Boolean cloudTeacherPaymentFlag = false;
+
+	public Boolean getCloudTeacherPaymentFlag() {
+		return cloudTeacherPaymentFlag;
+	}
+
+	public void setCloudTeacherPaymentFlag(Boolean cloudTeacherPaymentFlag) {
+		this.cloudTeacherPaymentFlag = cloudTeacherPaymentFlag;
+	}
 	
 	/**  */
 	private java.util.Date createTime;

+ 191 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicMargin.java

@@ -0,0 +1,191 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(music_margin):
+ */
+public class MusicMargin {
+
+	/**  */
+	private Integer id;
+	
+	/** 类型 */
+	private String type;
+	
+	/** 日期 */
+	private String date;
+	
+	/** 分部 */
+	private String organ;
+	
+	/** 学校 */
+	private String school;
+	
+	/** 用户编号,财务操作退款时填入 */
+	private Integer userId;
+	
+	/** 学员姓名 */
+	private String username;
+	
+	/** 期初 */
+	private java.math.BigDecimal init;
+	
+	/** 收款 */
+	private java.math.BigDecimal payment;
+	
+	/** 退款 */
+	private java.math.BigDecimal refund;
+	
+	/** 是否退款0否1是2拒绝 */
+	private Integer refundFlag;
+	
+	/** 余额 */
+	private java.math.BigDecimal balance;
+	
+	/** 保证金类型 */
+	private String marginType;
+	
+	/** 匹配 */
+	private String match;
+	
+	/** 备注 */
+	private String memo;
+	
+	/** 流程编号 */
+	private String processNo;
+	
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setType(String type){
+		this.type = type;
+	}
+	
+	public String getType(){
+		return this.type;
+	}
+			
+	public void setDate(String date){
+		this.date = date;
+	}
+	
+	public String getDate(){
+		return this.date;
+	}
+			
+	public void setOrgan(String organ){
+		this.organ = organ;
+	}
+	
+	public String getOrgan(){
+		return this.organ;
+	}
+			
+	public void setSchool(String school){
+		this.school = school;
+	}
+	
+	public String getSchool(){
+		return this.school;
+	}
+			
+	public void setUserId(Integer userId){
+		this.userId = userId;
+	}
+	
+	public Integer getUserId(){
+		return this.userId;
+	}
+			
+	public void setUsername(String username){
+		this.username = username;
+	}
+	
+	public String getUsername(){
+		return this.username;
+	}
+			
+	public void setInit(java.math.BigDecimal init){
+		this.init = init;
+	}
+	
+	public java.math.BigDecimal getInit(){
+		return this.init;
+	}
+			
+	public void setPayment(java.math.BigDecimal payment){
+		this.payment = payment;
+	}
+	
+	public java.math.BigDecimal getPayment(){
+		return this.payment;
+	}
+			
+	public void setRefund(java.math.BigDecimal refund){
+		this.refund = refund;
+	}
+	
+	public java.math.BigDecimal getRefund(){
+		return this.refund;
+	}
+			
+	public void setRefundFlag(Integer refundFlag){
+		this.refundFlag = refundFlag;
+	}
+	
+	public Integer getRefundFlag(){
+		return this.refundFlag;
+	}
+			
+	public void setBalance(java.math.BigDecimal balance){
+		this.balance = balance;
+	}
+	
+	public java.math.BigDecimal getBalance(){
+		return this.balance;
+	}
+			
+	public void setMarginType(String marginType){
+		this.marginType = marginType;
+	}
+	
+	public String getMarginType(){
+		return this.marginType;
+	}
+			
+	public void setMatch(String match){
+		this.match = match;
+	}
+	
+	public String getMatch(){
+		return this.match;
+	}
+			
+	public void setMemo(String memo){
+		this.memo = memo;
+	}
+	
+	public String getMemo(){
+		return this.memo;
+	}
+			
+	public void setProcessNo(String processNo){
+		this.processNo = processNo;
+	}
+	
+	public String getProcessNo(){
+		return this.processNo;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 138 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/OperatingReportCloud.java

@@ -0,0 +1,138 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.math.BigDecimal;
+
+/**
+ * 对应数据库表(operating_report_cloud):用于记录云教练缴费,相关课程和云教练预收
+ */
+public class OperatingReportCloud {
+
+	/**  */
+	private Integer id;
+	
+	/** 分部编号 */
+	private Integer organId;
+	
+	/** 缴费项目编号 */
+	private Long calenderId;
+
+	//是否是当月全部结转(欠费或者进行中加学员都在当月全部结转)
+	private Boolean monthFlag = false;
+	
+	/** 云教练预收开始计费时间(该字段只会再结算经营报表的时候去更新,因为课程会不断调整,结算的时候取缴费项目关联的课程的第一节课的日期) */
+	private java.util.Date startDate;
+	
+	/** 云教练预收截止计费时间 */
+	private java.util.Date endDate;
+	
+	/** 云教练预收 */
+	private java.math.BigDecimal cloudPrice = BigDecimal.ZERO;
+	
+	/** 课程预收 */
+	private java.math.BigDecimal coursePrice = BigDecimal.ZERO;
+
+	/** 月底结算经营报表的标识,如果已经结算过,那么这条记录不会再修改 */
+	private Boolean settlementFlag = false;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+
+	public Boolean getMonthFlag() {
+		return monthFlag;
+	}
+
+	public void setMonthFlag(Boolean monthFlag) {
+		this.monthFlag = monthFlag;
+	}
+
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setOrganId(Integer organId){
+		this.organId = organId;
+	}
+	
+	public Integer getOrganId(){
+		return this.organId;
+	}
+
+	public Long getCalenderId() {
+		return calenderId;
+	}
+
+	public void setCalenderId(Long calenderId) {
+		this.calenderId = calenderId;
+	}
+
+	public void setStartDate(java.util.Date startDate){
+		this.startDate = startDate;
+	}
+	
+	public java.util.Date getStartDate(){
+		return this.startDate;
+	}
+			
+	public void setEndDate(java.util.Date endDate){
+		this.endDate = endDate;
+	}
+	
+	public java.util.Date getEndDate(){
+		return this.endDate;
+	}
+			
+	public void setCloudPrice(java.math.BigDecimal cloudPrice){
+		this.cloudPrice = cloudPrice;
+	}
+	
+	public java.math.BigDecimal getCloudPrice(){
+		return this.cloudPrice;
+	}
+			
+	public void setCoursePrice(java.math.BigDecimal coursePrice){
+		this.coursePrice = coursePrice;
+	}
+	
+	public java.math.BigDecimal getCoursePrice(){
+		return this.coursePrice;
+	}
+
+	public Boolean getSettlementFlag() {
+		return settlementFlag;
+	}
+
+	public void setSettlementFlag(Boolean settlementFlag) {
+		this.settlementFlag = settlementFlag;
+	}
+
+	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);
+	}
+
+}

+ 137 - 18
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/OperatingReportNew.java

@@ -6,55 +6,142 @@ import java.math.BigDecimal;
 
 public class OperatingReportNew {
 
+    private Integer id;
+
     @ApiModelProperty(value="负责人")
     private String principal;
 
     @ApiModelProperty(value="城市")
     private String organName;
 
-    @ApiModelProperty(value="销售收入")
-    //计算当月分润的销售收入
-    private BigDecimal saleAmount;
+    @ApiModelProperty(value="城市")
+    private Integer organId;
+
+    @ApiModelProperty(value="销售收入(当月实收)")
+    //实物销售收入(已收货商品)
+    private BigDecimal saleAmount = BigDecimal.ZERO;
+
+    //当月课费(每个学员当月已消耗课程费用总和) + 个体云教练当月费用(总金额/月数) + 当月云教练课程消耗费用(课次*每节课单价)
+    @ApiModelProperty(value="服务收入(当月实收)")
+    private BigDecimal serviceAmount = BigDecimal.ZERO;
 
-    @ApiModelProperty(value="服务收入")
-    private BigDecimal serviceAmount;
+    @ApiModelProperty(value="课程收入")
+    private BigDecimal courseAmount = BigDecimal.ZERO;
 
-    //后台商品退费需要添加到退费列表
+    @ApiModelProperty(value="云教练收入")
+    private BigDecimal cloudAmount = BigDecimal.ZERO;
+
+    @ApiModelProperty(value="乐保收入")
+    private BigDecimal maintenanceAmount = BigDecimal.ZERO;
+
+    //当月退费列表总金额(当月退费列表已退费总金额)
     @ApiModelProperty(value="业务退费")
-    private BigDecimal businessRefund;
+    private BigDecimal businessRefund = BigDecimal.ZERO;
 
+    //销售收入 + 服务收入 - 业务退费
     @ApiModelProperty(value="收入合计")
-    private BigDecimal totalIncome;
+    private BigDecimal totalIncome = BigDecimal.ZERO;
 
+    //当月已发货商品销售成本价
     @ApiModelProperty(value="销售成本")
-    private BigDecimal saleCost;
+    private BigDecimal saleCost = BigDecimal.ZERO;
 
+    //OA审批固定费用总和
     @ApiModelProperty(value="固定费用")
-    private BigDecimal fixedCosts;
+    private BigDecimal fixedCosts = BigDecimal.ZERO;
 
+    //OA审批变动费用总和
     @ApiModelProperty(value="变动费用")
-    private BigDecimal variableCosts;
+    private BigDecimal variableCosts = BigDecimal.ZERO;
 
+    //OA审批内部结算费用总和
     @ApiModelProperty(value="内部结算")
-    private BigDecimal internalSettlement;
+    private BigDecimal internalSettlement = BigDecimal.ZERO;
 
+    //固定 + 变动 + 内部结算
     @ApiModelProperty(value="成本费用合计")
-    private BigDecimal totalCost;
+    private BigDecimal totalCost = BigDecimal.ZERO;
 
+    //收入合计 - 成本合计
     @ApiModelProperty(value="准可自由支配利润")
-    private BigDecimal quasiDiscretionaryProfit;
+    private BigDecimal quasiDiscretionaryProfit = BigDecimal.ZERO;
 
+    //个体云教练(订单总额 / 购买天数 * 剩余生效天数) + 已排课云教练课程预收款(乐团在读人数 * 2980 - 课程单价 * 未开始课程数) + 未排课云教练预收款(订单总额 / 购买天数 * 剩余生效天数)+
+    //未发货商品
     @ApiModelProperty(value="预收账款")
-    private BigDecimal prepaidFee;
+    private BigDecimal prepaidFee = BigDecimal.ZERO;
+
+    @ApiModelProperty(value="云教练预收")
+    private BigDecimal cloudPrepaidFee = BigDecimal.ZERO;
+
+    @ApiModelProperty(value="课程预收")
+    private BigDecimal coursePrepaidFee = BigDecimal.ZERO;
+
+    @ApiModelProperty(value="商品预收")
+    private BigDecimal salePrepaidFee = BigDecimal.ZERO;
+
+    @ApiModelProperty(value="其他预收")
+    private BigDecimal otherPrepaidFee = BigDecimal.ZERO;
 
     @ApiModelProperty(value="预付账款")
-    private BigDecimal prepayments;
+    private BigDecimal prepayments = BigDecimal.ZERO;
 
     @ApiModelProperty(value="应收账款")
-    private BigDecimal receivables;
+    private BigDecimal receivables = BigDecimal.ZERO;
 
     @ApiModelProperty(value="应付账款")
-    private BigDecimal payable;
+    private BigDecimal payable = BigDecimal.ZERO;
+
+    @ApiModelProperty(value="月份")
+    private String month;
+
+    public BigDecimal getMaintenanceAmount() {
+        return maintenanceAmount;
+    }
+
+    public void setMaintenanceAmount(BigDecimal maintenanceAmount) {
+        this.maintenanceAmount = maintenanceAmount;
+    }
+
+    public BigDecimal getCloudPrepaidFee() {
+        return cloudPrepaidFee;
+    }
+
+    public void setCloudPrepaidFee(BigDecimal cloudPrepaidFee) {
+        this.cloudPrepaidFee = cloudPrepaidFee;
+    }
+
+    public BigDecimal getCoursePrepaidFee() {
+        return coursePrepaidFee;
+    }
+
+    public void setCoursePrepaidFee(BigDecimal coursePrepaidFee) {
+        this.coursePrepaidFee = coursePrepaidFee;
+    }
+
+    public BigDecimal getSalePrepaidFee() {
+        return salePrepaidFee;
+    }
+
+    public void setSalePrepaidFee(BigDecimal salePrepaidFee) {
+        this.salePrepaidFee = salePrepaidFee;
+    }
+
+    public BigDecimal getOtherPrepaidFee() {
+        return otherPrepaidFee;
+    }
+
+    public void setOtherPrepaidFee(BigDecimal otherPrepaidFee) {
+        this.otherPrepaidFee = otherPrepaidFee;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
 
     public String getPrincipal() {
         return principal;
@@ -72,6 +159,14 @@ public class OperatingReportNew {
         this.organName = organName;
     }
 
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
     public BigDecimal getSaleAmount() {
         return saleAmount;
     }
@@ -88,6 +183,22 @@ public class OperatingReportNew {
         this.serviceAmount = serviceAmount;
     }
 
+    public BigDecimal getCourseAmount() {
+        return courseAmount;
+    }
+
+    public void setCourseAmount(BigDecimal courseAmount) {
+        this.courseAmount = courseAmount;
+    }
+
+    public BigDecimal getCloudAmount() {
+        return cloudAmount;
+    }
+
+    public void setCloudAmount(BigDecimal cloudAmount) {
+        this.cloudAmount = cloudAmount;
+    }
+
     public BigDecimal getBusinessRefund() {
         return businessRefund;
     }
@@ -183,4 +294,12 @@ public class OperatingReportNew {
     public void setPayable(BigDecimal payable) {
         this.payable = payable;
     }
+
+    public String getMonth() {
+        return month;
+    }
+
+    public void setMonth(String month) {
+        this.month = month;
+    }
 }

+ 51 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/OrganCourseTypeOriginalCost.java

@@ -0,0 +1,51 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+public class OrganCourseTypeOriginalCost extends BaseEntity {
+	private Integer id;
+
+	@ApiModelProperty(value="分部")
+	private Integer organId;
+
+	@ApiModelProperty(value="课程类型")
+	private String courseType;
+
+	@ApiModelProperty(value="价值")
+	private BigDecimal price;
+
+	public Integer getId() {
+		return id;
+	}
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	public Integer getOrganId() {
+		return organId;
+	}
+
+	public void setOrganId(Integer organId) {
+		this.organId = organId;
+	}
+
+	public String getCourseType() {
+		return courseType;
+	}
+
+	public void setCourseType(String courseType) {
+		this.courseType = courseType;
+	}
+
+	public BigDecimal getPrice() {
+		return price;
+	}
+
+	public void setPrice(BigDecimal price) {
+		this.price = price;
+	}
+}

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPreVisit.java

@@ -20,7 +20,7 @@ public class StudentPreVisit {
 	private String studentName;
 	
 	/** 老师id */
-	private Integer teacherId;
+	private String teacherId;
 	
 	/** 老师姓名 */
 	private String teacherName;
@@ -72,11 +72,11 @@ public class StudentPreVisit {
 		return this.studentName;
 	}
 			
-	public void setTeacherId(Integer teacherId){
+	public void setTeacherId(String teacherId){
 		this.teacherId = teacherId;
 	}
 	
-	public Integer getTeacherId(){
+	public String getTeacherId(){
 		return this.teacherId;
 	}
 			

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

@@ -189,7 +189,7 @@ public class StudentVisit extends BaseEntity {
 
     private Long objectId;
 
-    private int probStatus;
+    private Integer probStatus;
 
     private String visitCyCle;
 

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

@@ -78,6 +78,7 @@ public enum ExportEnum implements BaseEnum<String, ExportEnum> {
     EXPORT_STUDENT_SERVE_INFO("EXPORT_STUDENT_SERVE_INFO", "乐团学生服务指标导出"),
     EXPORT_TRAINING_STATISTICS("EXPORT_TRAINING_STATISTICS", "训练统计导出"),
     EXPORT_OPERATING_VISIT_STATISTICS("EXPORT_OPERATING_VISIT_STATISTICS", "回访统计导出"),
+    EXPORT_OPERATING_REPORT_NEW("EXPORT_OPERATING_REPORT_NEW", "经营报表导出"),
     ;
 
     private String code;

+ 6 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/FeeProjectEnum.java

@@ -5,9 +5,9 @@ import com.ym.mec.common.enums.BaseEnum;
 public enum FeeProjectEnum implements BaseEnum<Integer, FeeProjectEnum> {
     SALARY(1, "工资"),
     SOCIAL_SECURITY_HOUSE_ALLOWANCE(2, "社保公积金"),
-    HOUSE(3, "房"),
+    HOUSE(3, "房"),
     OFFICE(4, "办公"),
-    MAINS_PROPERTY(5, "水电物业"),
+    MAINS_PROPERTY(5, "水电物业供暖通讯"),
     TRAVEL(6, "差旅"),
     SERVICES(7, "服务"),
     WELFARE(8, "福利"),
@@ -21,7 +21,10 @@ public enum FeeProjectEnum implements BaseEnum<Integer, FeeProjectEnum> {
     POSTAL_TRANSPORT(16, "邮递运输"),
     HOSPITALITY(17, "招待费"),
     NETWORK_CLASS(18, "网络教室成本"),
-    REFUND(19, "退费");
+    REFUND(19, "退费"),
+    TEACHING_POINT_RENTAL(20, "教学点租赁"),
+    MUSICAL_INSTRUMENT_REPAIR(21, "乐器维修"),
+    INTERNAL_SETTLEMENT(22, "内部结算");
 
     private Integer code;
 

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicMarginQueryInfo.java

@@ -0,0 +1,16 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class MusicMarginQueryInfo extends QueryInfo {
+
+    private Integer refundFlag;
+
+    public Integer getRefundFlag() {
+        return refundFlag;
+    }
+
+    public void setRefundFlag(Integer refundFlag) {
+        this.refundFlag = refundFlag;
+    }
+}

+ 31 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/OperatingReportNewQueryInfo.java

@@ -0,0 +1,31 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+public class OperatingReportNewQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "分部id", required = false)
+    private String organId;
+
+    @ApiModelProperty(value = "年月", required = false)
+    private String date;
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+}

+ 48 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentPreVisitQueryInfo.java

@@ -0,0 +1,48 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+public class StudentPreVisitQueryInfo extends QueryInfo {
+    @ApiModelProperty(value = "学生姓名或id搜索或者手机号", required = false)
+    private String student;
+
+    @ApiModelProperty(value = "分部id", required = false)
+    private String organId;
+
+    private Integer isVisit;
+
+    private String visitCycle;
+
+    public String getStudent() {
+        return student;
+    }
+
+    public void setStudent(String student) {
+        this.student = student;
+    }
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    public Integer getIsVisit() {
+        return isVisit;
+    }
+
+    public void setIsVisit(Integer isVisit) {
+        this.isVisit = isVisit;
+    }
+
+    public String getVisitCycle() {
+        return visitCycle;
+    }
+
+    public void setVisitCycle(String visitCycle) {
+        this.visitCycle = visitCycle;
+    }
+}

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

@@ -18,6 +18,8 @@ public class StudentVisitQueryInfo extends QueryInfo {
 
     private Integer studentId;
 
+    private Integer probStatus;
+
     @ApiModelProperty(value = "分部id", required = false)
     private String organId;
 
@@ -137,4 +139,12 @@ public class StudentVisitQueryInfo extends QueryInfo {
     public void setPurpose(String purpose) {
         this.purpose = purpose;
     }
+
+    public Integer getProbStatus() {
+        return probStatus;
+    }
+
+    public void setProbStatus(Integer probStatus) {
+        this.probStatus = probStatus;
+    }
 }

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

@@ -177,9 +177,7 @@ public interface ActivityUserMapperService extends BaseService<Integer, Activity
     * @author zx
     * @date 2022/7/27 14:23
     */
-    List<CourseScheduleStudentPayment> use(Integer categoryId,Integer classMinutes,
-                                           int courseNum,
-                                           Long groupId,List<Integer> studentIdList);
+    List<CourseScheduleStudentPayment> use(CheckScheduleQualificationDto checkScheduleQualificationDto);
 
     /**
     * @description: 网管课活动排课

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherFreeCourseService.java

@@ -0,0 +1,15 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.dao.CloudTeacherFreeCourseDao;
+import com.ym.mec.biz.dal.entity.CloudTeacherFreeCourse;
+import com.ym.mec.common.service.BaseService;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface CloudTeacherFreeCourseService extends BaseService<Long, CloudTeacherFreeCourse> {
+
+    CloudTeacherFreeCourseDao getDao();
+
+    void batchInsert(List<Long> scheduleIdList,Long calenderId);
+}

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

@@ -53,14 +53,6 @@ public interface CloudTeacherOrderService extends BaseService<Long, CloudTeacher
     List<CloudTeacherOrder> getStudentCloudTeacherOrders(List<Integer> studentIds, String musicGroupId);
 
     /**
-     * 获取乐团报名的云教练订单
-     *
-     * @param studentId
-     * @return
-     */
-    List<CloudTeacherOrder> getStudentCloudTeacherOrder(Integer studentId, String musicGroupId);
-
-    /**
      * 根据订单编号查询订单详情
      *
      * @param orderId

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
@@ -20,6 +21,7 @@ import java.util.List;
 import java.util.Map;
 
 public interface CourseScheduleService extends BaseService<Long, CourseSchedule> {
+	CourseScheduleDao getDao();
 	
 	/**
 	 * 查询课程信息

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

@@ -150,17 +150,6 @@ public interface MusicGroupPaymentCalenderService extends BaseService<Long, Musi
 	 */
 	MusicGroupPaymentCalender findByMusicGroupRegCalender(String musicGroupId);
 
-	/**
-	 * @describe 缴费成功后更新calender
-	 * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
-	 * @author zouxuan
-	 * @date 2020/11/3
-	 * @time 17:04
-	 * @param detailId:
-	 * @param userId:
-	 * @return com.ym.mec.biz.dal.entity.MusicGroupStudentFee
-	 */
-    MusicGroupStudentFee updateCalender(Long detailId, Integer userId);
 
 	/**
 	 * @describe 推送学生待续费通知

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

@@ -6,7 +6,6 @@ import com.ym.mec.biz.dal.enums.SysUserRoleEnum;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.biz.dal.page.MusicMemberQueryInfo;
 import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
@@ -79,12 +78,6 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
      */
     HttpResponseResult pay(RegisterPayDto registerPayDto) throws Exception;
 
-    /**
-     * 继续缴费
-     * @param registerPayDto
-     * @return
-     */
-//	Map rePay(RegisterPayDto registerPayDto) throws Exception;
 
     /**
      * 获取学生所在乐团详情
@@ -319,13 +312,6 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
      */
     MusicGroup getMusicGroupDetail(String musicGroupId);
 
-    /**
-     * 获取乐团老师列表
-     *
-     * @param musicGroupId
-     * @return
-     */
-    List<ImGroupMember> queryMusicGroupTeachers(String musicGroupId);
 
     /**
      * 乐团确认成立
@@ -403,11 +389,6 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
      */
     List<MusicCardDto> queryOrganMusicInfos(Integer organId);
 
-    /**
-     * 补全musicGroupStudentFee表数据
-     * @param musicGroupIds
-     */
-//	void musicGroupStudentFeePatch(List<String> musicGroupIds);
 
     /**
      * 给乐团添加报名学生

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

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

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

@@ -0,0 +1,37 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.dao.OperatingReportCloudDao;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
+import com.ym.mec.biz.dal.entity.OperatingReportCloud;
+import com.ym.mec.common.service.BaseService;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public interface OperatingReportCloudService extends BaseService<Integer, OperatingReportCloud> {
+
+    OperatingReportCloudDao getDao();
+
+    /**
+    * @description: 缴费后,更新缴费项目关联的课程、云教练预收
+     * @param musicGroupPaymentCalender
+    * @return void
+    * @author zx
+    * @date 2022/9/6 10:09
+    */
+    void updateSet(MusicGroupPaymentCalender musicGroupPaymentCalender, Long orderId);
+
+    /**
+    * @description: 乐团排课、活动排课,计算课程预收
+     * @param calenderId
+     * @param scheduleIdList
+    * @return void
+    * @author zx
+    * @date 2022/9/6 10:52
+    */
+    void updateSet(Long calenderId, List<Long> scheduleIdList);
+
+    void save(MusicGroupPaymentCalender musicGroupPaymentCalender);
+}

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/OperatingReportNewService.java

@@ -0,0 +1,14 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.dao.OperatingReportNewDao;
+import com.ym.mec.biz.dal.entity.OperatingReportNew;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.Date;
+
+public interface OperatingReportNewService extends BaseService<Integer, OperatingReportNew> {
+
+    OperatingReportNewDao getDao();
+
+    void operatingReportMonth(Date month);
+}

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPreVisitService.java

@@ -1,11 +1,15 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.Student4operating;
+import com.ym.mec.biz.dal.dto.StudentPreVisitDto;
 import com.ym.mec.biz.dal.entity.StudentPreVisit;
+import com.ym.mec.biz.dal.page.StudentPreVisitQueryInfo;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.List;
 
 public interface StudentPreVisitService extends BaseService<Integer, StudentPreVisit> {
     Integer batchInsert(List<Student4operating> student4operatings);
+    PageInfo<StudentPreVisitDto> getPageList(StudentPreVisitQueryInfo queryInfo);
 }

+ 0 - 41
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -68,14 +68,6 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
     List<MusicGroupSubjectPlan> getNoClassStuCountByMusicGroupId(String musicGroupId);
 
     /**
-     * 根据user_id 和 乐团id更新
-     *
-     * @param studentRegistration
-     * @return
-     */
-    Integer updateByUserIdAndMusicGroupId(StudentRegistration studentRegistration);
-
-    /**
      * 添加学生报名信息
      *
      * @param studentRegistration
@@ -167,14 +159,6 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
     List<StudentRegistration> findMusicGroupNoClassGroupStudent(String musicGroupId, Integer actualSubjectId);
 
     /**
-     * 根据id list 查询报名学生
-     *
-     * @param idList
-     * @return
-     */
-    List<StudentRegistration> findStudentListByIdList(List<Long> idList);
-
-    /**
      * 批量插入
      *
      * @param studentRegistrationList
@@ -184,16 +168,6 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 
 
     /**
-     * 根据userId 和班级id查询学生
-     *
-     * @param userId
-     * @param classGroupId
-     * @return
-     */
-    StudentRegistration findStudentByClassGroupIdAndUserId(Integer userId, Integer classGroupId);
-
-
-    /**
      * 查询乐团声部下的学生
      *
      * @return
@@ -217,21 +191,6 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      */
     int openPayment(String ids) throws IOException;
 
-    /**
-     * 根据乐团编号获取已缴费学员列表
-     *
-     * @param musicGroupId
-     * @return
-     */
-    List<StudentRegistration> queryStudentByMusicGroupId(String musicGroupId);
-
-    /**
-     * 根据家长的手机号列表,获取用户编号
-     *
-     * @param parentPhones
-     * @return
-     */
-    List<Map<Integer, String>> findParentId(String parentPhones);
 
     /**
      * 更新用户注册信息

+ 58 - 23
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java

@@ -95,6 +95,14 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 	private ImGroupMemberService imGroupMemberService;
 	@Autowired
 	private ImUserFriendService imUserFriendService;
+	@Autowired
+	private OperatingReportCloudService operatingReportCloudService;
+	@Autowired
+	private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
+	@Autowired
+	private MusicGroupPaymentCalenderActivityDao musicGroupPaymentCalenderActivityDao;
+	@Autowired
+	private CloudTeacherFreeCourseService cloudTeacherFreeCourseService;
 
 	@Override
 	public BaseDAO<Integer, ActivityUserMapper> getDAO() {
@@ -315,6 +323,17 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		Map<Integer, VipGroupActivity> collect = vipGroupActivities.stream().collect(Collectors.groupingBy(e -> e.getId(),
 				Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
 		List<ActivityUserMapper> activityUserMapperList = new ArrayList<>();
+		Long calenderId = null;
+		//如果是云教练缴费,并且小课包是0元那么标记为云教练赠送排课资格
+		MusicGroupPaymentCalender musicGroupPaymentCalender = musicGroupPaymentCalenderDao.get(studentPaymentOrder.getCalenderId());
+		if(musicGroupPaymentCalender.getCloudTeacherPaymentFlag()){
+			List<MusicGroupPaymentCalenderActivity> activities = musicGroupPaymentCalenderActivityDao.findByCalenderId(musicGroupPaymentCalender.getId());
+			BigDecimal reduce = activities.stream().map(e -> e.getActualAmount()).reduce(ZERO, BigDecimal::add);
+			if(reduce.compareTo(ZERO) == 0){
+				calenderId = studentPaymentOrder.getCalenderId();
+			}
+		}
+
 		for (StudentPaymentOrderDetail orderDetail : activity) {
 			ActivityUserMapper activityUserMapper = new ActivityUserMapper();
 			activityUserMapper.setTenantId(studentPaymentOrder.getTenantId());
@@ -327,6 +346,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 			activityUserMapper.setUserId(studentPaymentOrder.getUserId());
 			activityUserMapper.setTeacherId(student.getTeacherId());
 			activityUserMapper.setPaymentOrderId(studentPaymentOrder.getId());
+			activityUserMapper.setCalenderId(calenderId);
 			if(orderDetail.getType() == OrderDetailTypeEnum.VIP){
 				activityUserMapper.setVipFlag(1);
 			}else {
@@ -504,8 +524,8 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		vipGroupDao.insert(applyBaseInfo);
 
 		//校验排课资格,消耗排课资格(获取被使用的排课资格)
-		List<CourseScheduleStudentPayment> courseScheduleStudentPayments =
-				this.checkScheduleQualification(studentIdList, vipGroupCategory.getId(), applyBaseInfo.getSingleClassMinutes(), courseNum, applyBaseInfo.getId());
+		CheckScheduleQualificationDto dto = new CheckScheduleQualificationDto(studentIdList, vipGroupCategory.getId(), applyBaseInfo.getSingleClassMinutes(), courseNum, applyBaseInfo.getId());
+		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = this.checkScheduleQualification(dto);
 
 		List<VipGroupStudentCoursePrice> vscps = vipGroup.getVipGroupApplyBaseInfo().getVipGroupStudentCoursePrices();
 		if (org.springframework.util.CollectionUtils.isEmpty(vscps)) {
@@ -657,6 +677,17 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		}
 
 		if (courseScheduleStudentPayments.size() > 0) {
+			List<CourseScheduleStudentPayment> payments = courseScheduleStudentPayments.stream().filter(e -> e.getCalenderId() != null).collect(Collectors.toList());
+			if(CollectionUtils.isNotEmpty(payments)){
+				//更新课程预收
+				Map<Long,List<CourseScheduleStudentPayment>> map = payments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCalenderId));
+				for (Long calenderId : map.keySet()) {
+					List<CourseScheduleStudentPayment> studentPayments = map.get(calenderId);
+					Map<Integer,List<Long>> userMap = studentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getUserId,
+							Collectors.collectingAndThen(Collectors.toList(),value->value.stream().map(e->e.getCourseScheduleId()).collect(Collectors.toList()))));
+					userMap.keySet().stream().forEach(e-> operatingReportCloudService.updateSet(calenderId,userMap.get(e)));
+				}
+			}
 			courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
 			studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
 		}
@@ -671,30 +702,31 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		return BaseController.succeed(applyBaseInfo.getAuditStatus().getCode());
     }
 
+
 	//校验排课资格并消耗
-	private List<CourseScheduleStudentPayment> checkScheduleQualification(List<Integer> studentIdList,Integer categoryId,Integer classMinutes,Integer courseNum,Long groupId) {
+	private List<CourseScheduleStudentPayment> checkScheduleQualification(CheckScheduleQualificationDto checkScheduleQualificationDto) {
 		//获取学员排课资格
-		List<ActivityUserMapper> totalActivityUserMappers = activityUserMapperDao.findTotalByStudents(studentIdList,categoryId,classMinutes);
+		List<ActivityUserMapper> totalActivityUserMappers = activityUserMapperDao.findTotalByStudents(checkScheduleQualificationDto);
 		if (CollectionUtils.isEmpty(totalActivityUserMappers)) {
 			throw new BizException("所选学员暂无排课资格");
 		}
 		totalActivityUserMappers.stream().collect(Collectors.groupingBy(ActivityUserMapper::getUserId,Collectors.collectingAndThen(Collectors.toList(), list -> {
 			Integer sum = list.stream().mapToInt(ActivityUserMapper::getSubCourseNum).sum();
-			if (sum < courseNum) {
+			if (sum < checkScheduleQualificationDto.getCourseNum()) {
 				throw new BizException("所选学员排课资格不足");
 			}
 			return sum;
 		})));
 		//消耗排课资格(获取被使用的排课资格)
-		return this.use(categoryId,classMinutes, courseNum,groupId,studentIdList);
+		return this.use(checkScheduleQualificationDto);
 	}
 
 	private void getStudentPayment(Integer userId,
-								   BigDecimal totalAmount,
 								   Integer courseNum,
 								   List<CourseScheduleStudentPayment> courseScheduleStudentPayments,
-								   Integer activityUserMapperId){
+								   ActivityUserMapper activityUserMapper){
 		//实际支付金额,去除优惠券
+		BigDecimal totalAmount = activityUserMapper.getSubNoCoursePrice();
 		BigDecimal singleAmount = totalAmount.divide(new BigDecimal(courseNum), ROUND_DOWN);
 		BigDecimal firstSingleAmount = totalAmount.subtract(singleAmount.multiply(new BigDecimal(courseNum))).add(singleAmount);
 		for (Integer i = 0; i < courseNum; i++) {
@@ -705,8 +737,9 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 			} else {
 				courseScheduleStudentPayment.setExpectPrice(singleAmount);
 			}
-			courseScheduleStudentPayment.setActivityUserMapperId(activityUserMapperId);
+			courseScheduleStudentPayment.setActivityUserMapperId(activityUserMapper.getId());
 			courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
+			courseScheduleStudentPayment.setCalenderId(activityUserMapper.getCalenderId());
 			courseScheduleStudentPayments.add(courseScheduleStudentPayment);
 		}
 	}
@@ -714,26 +747,27 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 								   Integer courseNum,
 								   BigDecimal singlePrice,
 								   List<CourseScheduleStudentPayment> courseScheduleStudentPayments,
-								   Integer activityUserMapperId){
+								   ActivityUserMapper activityUserMapper){
 		for (Integer i = 0; i < courseNum; i++) {
 			CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
 			courseScheduleStudentPayment.setUserId(userId);
 			courseScheduleStudentPayment.setExpectPrice(singlePrice);
 			courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
-			courseScheduleStudentPayment.setActivityUserMapperId(activityUserMapperId);
+			courseScheduleStudentPayment.setActivityUserMapperId(activityUserMapper.getId());
+			courseScheduleStudentPayment.setCalenderId(activityUserMapper.getCalenderId());
 			courseScheduleStudentPayments.add(courseScheduleStudentPayment);
 		}
 	}
 
 	@Override
-	public List<CourseScheduleStudentPayment> use(Integer categoryId,Integer classMinutes,
-												  int courseNum,
-												  Long groupId,List<Integer> studentIdList) {
+	public List<CourseScheduleStudentPayment> use(CheckScheduleQualificationDto dto) {
 		Map<Integer,Integer> subCourseMap = new HashMap<>();
+		List<Integer> studentIdList = dto.getStudentIdList();
+		Integer courseNum = dto.getCourseNum();
 		studentIdList.stream().forEach(e-> subCourseMap.put(e,courseNum));
 		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
 		//获取学员付费排课资格
-		List<ActivityUserMapper> activityUserMappers = activityUserMapperDao.findByStudents(studentIdList,categoryId,classMinutes);
+		List<ActivityUserMapper> activityUserMappers = activityUserMapperDao.findByStudents(studentIdList,dto.getCategoryId(),dto.getClassMinutes());
 		if(CollectionUtils.isNotEmpty(activityUserMappers)){
 			Map<Integer, List<ActivityUserMapper>> collect = activityUserMappers.stream().collect(Collectors.groupingBy(ActivityUserMapper::getUserId));
 			one:for (Integer integer : collect.keySet()) {
@@ -744,7 +778,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 						continue one;
 					}
 					//区分vip还是网管
-					this.modifyGroupId(activityUserMapper,groupId);
+					this.modifyGroupId(activityUserMapper,dto.getGroupId());
 					int num = activityUserMapper.getSubCourseNum();
 					//剩余课次不足
 					if(num <= subCourseNum){
@@ -752,7 +786,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 						subCourseMap.put(integer, subCourseNum);
 						activityUserMapper.setSubCourseNum(0);
 						//生成学员课程支付记录
-						this.getStudentPayment(integer,activityUserMapper.getSubNoCoursePrice(),num,courseScheduleStudentPayments,activityUserMapper.getId());
+						this.getStudentPayment(integer,num,courseScheduleStudentPayments,activityUserMapper);
 						activityUserMapper.setCurrentCoursePrice(activityUserMapper.getSubNoCoursePrice());
 						activityUserMapper.setSubNoCoursePrice(BigDecimal.ZERO);
 					}else {
@@ -764,7 +798,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 						BigDecimal divide = singlePrice.multiply(new BigDecimal(subCourseNum));
 						activityUserMapper.setSubNoCoursePrice(activityUserMapper.getSubNoCoursePrice().subtract(divide));
 						activityUserMapper.setCurrentCoursePrice(divide);
-						this.getStudentPayment(integer,subCourseNum,singlePrice,courseScheduleStudentPayments,activityUserMapper.getId());
+						this.getStudentPayment(integer,subCourseNum,singlePrice,courseScheduleStudentPayments,activityUserMapper);
 						//剩余课次充足
 						continue one;
 					}
@@ -773,7 +807,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 			activityUserMapperDao.batchUpdate(activityUserMappers);
 		}
 		//获取学员赠送排课资格
-		List<ActivityUserMapper> freeActivityUserMappers = activityUserMapperDao.findByStudents1(studentIdList,categoryId,classMinutes);
+		List<ActivityUserMapper> freeActivityUserMappers = activityUserMapperDao.findByStudents1(studentIdList,dto.getCategoryId(),dto.getClassMinutes());
 		if(CollectionUtils.isNotEmpty(freeActivityUserMappers)){
 			Map<Integer, List<ActivityUserMapper>> collect1 = freeActivityUserMappers.stream().collect(Collectors.groupingBy(ActivityUserMapper::getUserId));
 			one:for (Integer integer : subCourseMap.keySet()) {
@@ -787,16 +821,16 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 						continue one;
 					}
 					//区分vip还是网管
-					this.modifyGiveGroupId(activityUserMapper,groupId);
+					this.modifyGiveGroupId(activityUserMapper,dto.getGroupId());
 					int num = activityUserMapper.getSubGiveCourseNum();
 					//剩余课次不足
 					if(num <= subCourseNum){
 						activityUserMapper.setSubGiveCourseNum(0);
 						subCourseNum = subCourseNum - num;
-						this.getStudentPayment(integer,num,BigDecimal.ZERO,courseScheduleStudentPayments,activityUserMapper.getId());
+						this.getStudentPayment(integer,num,BigDecimal.ZERO,courseScheduleStudentPayments,activityUserMapper);
 					}else {
 						activityUserMapper.setSubGiveCourseNum(num - subCourseNum);
-						this.getStudentPayment(integer,subCourseNum,BigDecimal.ZERO,courseScheduleStudentPayments,activityUserMapper.getId());
+						this.getStudentPayment(integer,subCourseNum,BigDecimal.ZERO,courseScheduleStudentPayments,activityUserMapper);
 						continue one;
 					}
 				}
@@ -924,8 +958,9 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		//消耗排课资格
 		List<Integer> studentIdList = new ArrayList<>();
 		studentIdList.add(studentId);
+		CheckScheduleQualificationDto dto = new CheckScheduleQualificationDto(studentIdList, null, applyBaseInfo.getSingleClassMinutes(), applyBaseInfo.getAllCourseNum(), applyBaseInfo.getId());
 		List<CourseScheduleStudentPayment> courseScheduleStudentPayments =
-				this.checkScheduleQualification(studentIdList,null, applyBaseInfo.getSingleClassMinutes(), applyBaseInfo.getAllCourseNum(), applyBaseInfo.getId());
+				this.checkScheduleQualification(dto);
 
 		//创建班级信息
 		ClassGroup classGroup = new ClassGroup();

+ 0 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -1237,7 +1237,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         Set<Long> existCourseIds = new HashSet<>();
         if (!CollectionUtils.isEmpty(ccs)) {
             existCourseIds = ccs.stream().map(CourseScheduleStudentPayment::getCourseScheduleId).collect(Collectors.toSet());
-            ;
         }
 
         Map<CourseScheduleType, BigDecimal> totalPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
@@ -2456,15 +2455,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //计算每节课的课酬
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
         List<CourseSchedule> courseScheduleList = new ArrayList<>();
-        List<CourseScheduleType> courseTypes = classGroup4MixDtos.stream().map(e -> e.getCourseType()).distinct().collect(Collectors.toList());
-        /*if(!checkCourseTimesFlag){
-            //校验剩余时长是否一致
-            Integer checkCourseTimes = musicGroupPaymentStudentCourseDetailDao.checkCourseTimes(musicGroupId, courseTypes, studentIds);
-            if(checkCourseTimes == null || checkCourseTimes == 0){
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return BaseController.failed(HttpStatus.ALREADY_REPORTED,"班级剩余排课时长不一致,请再次确认");
-            }
-        }*/
 
         for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
             List<ClassGroupTeacherMapper> teacherMappers = classGroup4MixDto.getClassGroupTeacherMapperList();
@@ -2564,10 +2554,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
                     totalCourseDuration += classCourseDuration;
 
-//                    if (totalCourseDuration > totalMinutes) {
-//                        break WhileNode;
-//                    }
-
                     courseTimeDto.setCourseNum(courseTimeDto.getCourseNum() + 1);
                     generateCourseTimes += 1;
 

+ 2 - 30
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -492,17 +492,8 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
         }
 
         //线上基础技能班,原始分班人数不能小于3人大于6人
-        if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE)) {
-
-//            if (studentIds.size() < 3 && musicGroup.getStatus().equals(MusicGroupStatusEnum.PREPARE)) {
-//                throw new BizException("线上基础技能班人数不能少于3人");
-//            }
-//            if (studentIds.size() < 3 && !musicGroup.getStatus().equals(MusicGroupStatusEnum.PREPARE) && oldNormalStudentIds.size() <= 0) {
-//                throw new BizException("线上基础技能班人数不能少于3人");
-//            }
-            if (studentIds.size() > 6) {
-                throw new BizException("线上基础技能班人数不能多于6人");
-            }
+        if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) && studentIds.size() > 6) {
+            throw new BizException("线上基础技能班人数不能多于6人");
         }
 
         Set<Integer> repeatStudentIds = allStudentIds.stream().filter(oldNormalStudentIds::contains).collect(Collectors.toSet());
@@ -605,9 +596,6 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         //4、调整未上课课酬
         if(!CollectionUtils.isEmpty(classGroupNotStartCourse)){
-            List<ClassGroupTeacherMapper> classGroupTeachers = classGroupTeacherMapperService.getClassGroupTeachers(classGroupId.intValue());
-            Date nowDate = new Date();
-//            List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
             List<Long> courseScheduleIds = classGroupNotStartCourse.stream().map(CourseSchedule::getId).collect(Collectors.toList());
 
             List<CourseScheduleTeacherSalary> oldCourseSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
@@ -623,22 +611,6 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 }
                 courseScheduleTeacherSalaryService.createMusicGroupCourseTeacherSalary(null, idCourseMap.get(oldCourseSalary.getCourseScheduleId()), oldCourseSalary);
             }
-
-//            for (CourseSchedule courseSchedule : classGroupNotStartCourse) {
-//                for (ClassGroupTeacherMapper classGroupTeacher : classGroupTeachers) {
-//                    CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
-//                    courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
-//                    courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
-//                    courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
-//                    courseScheduleTeacherSalary.setTeacherRole(classGroupTeacher.getTeacherRole());
-//                    courseScheduleTeacherSalary.setUserId(classGroupTeacher.getUserId());
-//                    courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
-//                    courseScheduleTeacherSalary.setCreateTime(nowDate);
-//                    courseScheduleTeacherSalary.setUpdateTime(nowDate);
-//                    courseScheduleTeacherSalaryService.createMusicGroupCourseTeacherSalary(musicGroup, courseSchedule, courseScheduleTeacherSalary);
-//                    courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
-//                }
-//            }
             courseScheduleTeacherSalaryService.batchInsert(oldCourseSalaries);
         }
 

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherFreeCourseServiceImpl.java

@@ -0,0 +1,36 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.CloudTeacherFreeCourseDao;
+import com.ym.mec.biz.dal.entity.CloudTeacherFreeCourse;
+import com.ym.mec.biz.service.CloudTeacherFreeCourseService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+public class CloudTeacherFreeCourseServiceImpl extends BaseServiceImpl<Long, CloudTeacherFreeCourse>  implements CloudTeacherFreeCourseService {
+	
+	@Autowired
+	private CloudTeacherFreeCourseDao cloudTeacherFreeCourseDao;
+
+	@Override
+	public BaseDAO<Long, CloudTeacherFreeCourse> getDAO() {
+		return cloudTeacherFreeCourseDao;
+	}
+
+	@Override
+	public CloudTeacherFreeCourseDao getDao() {
+		return cloudTeacherFreeCourseDao;
+	}
+
+    @Override
+	@Transactional(rollbackFor = Exception.class)
+    public void batchInsert(List<Long> scheduleIdList,Long calenderId) {
+		cloudTeacherFreeCourseDao.batchInsert(StringUtils.join(scheduleIdList,","),calenderId);
+    }
+}

+ 9 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
 import com.ym.mec.biz.dal.dto.CloudTeacherOrderDto;
 import com.ym.mec.biz.dal.dto.Mapper;
 import com.ym.mec.biz.dal.entity.*;
@@ -52,12 +53,13 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     private IdGeneratorService idGenerator;
     @Autowired
     private TenantOrderRecordService tenantOrderRecordService;
+    @Autowired
+    private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
 
     @Override
     public BaseDAO<Long, CloudTeacherOrder> getDAO() {
         return cloudTeacherOrderDao;
     }
-
     @Autowired
     private SysMessageService sysMessageService;
     @Autowired
@@ -283,6 +285,12 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         cloudTeacherOrder.setAmount(cloudTeacherFee);
         cloudTeacherOrder.setStudentId(order.getUserId());
         cloudTeacherOrder.setStatus(1);
+        MusicGroupPaymentCalender calender = musicGroupPaymentCalenderDao.get(order.getCalenderId());
+        if(calender.getCloudTeacherPaymentFlag()){
+            cloudTeacherOrder.setOperatingAmount(BigDecimal.ZERO);
+        }else {
+            cloudTeacherOrder.setOperatingAmount(cloudTeacherFee);
+        }
         //保存云教练订单
         this.save(cloudTeacherOrder,calenderMember.getAutoActivationFlag());
     }
@@ -324,11 +332,6 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     }
 
     @Override
-    public List<CloudTeacherOrder> getStudentCloudTeacherOrder(Integer studentId, String musicGroupId) {
-        return cloudTeacherOrderDao.getStudentCloudTeacherOrder(studentId, musicGroupId);
-    }
-
-    @Override
     public CloudTeacherOrderDto queryOrderInfoByOrderId(Long orderId) {
         return cloudTeacherOrderDao.queryOrderInfoByOrderId(orderId);
     }

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

@@ -173,6 +173,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     }
 
     @Override
+    public CourseScheduleDao getDao() {
+        return courseScheduleDao;
+    }
+
+    @Override
 	public CourseSchedule queryById(Long courseScheduleId) {
     	CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId);
     	if(courseSchedule != null){

+ 22 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java

@@ -11,6 +11,7 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.CourseScheduleStudentPaymentQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
+import com.ym.mec.biz.service.OperatingReportCloudService;
 import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.constant.CommonConstants;
@@ -55,7 +56,7 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 	@Autowired
 	private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
 	@Autowired
-	private MusicGroupPaymentCalenderDetailDao musicGroupPaymentCalenderDetailDao;
+	private OperatingReportCloudService operatingReportCloudService;
 	@Autowired
 	private MusicGroupPaymentCalenderCourseSettingsDao musicGroupPaymentCalenderCourseSettingsDao;
 	@Autowired
@@ -76,6 +77,8 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 	private MusicGroupStudentClassAdjustDao musicGroupStudentClassAdjustDao;
 	@Autowired
 	private StudentPaymentOrderDao studentPaymentOrderDaop;
+	@Autowired
+	private CloudTeacherFreeCourseDao cloudTeacherFreeCourseDao;
 
 	@Override
 	public BaseDAO<Long, CourseScheduleStudentPayment> getDAO() {
@@ -387,6 +390,9 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
 	public void createForMusicGroup(String musicGroupId, List<CourseSchedule> courseSchedules, List<Integer> studentIds) {
 		Map<Integer, List<CourseSchedule>> memberCourseMap = courseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getMemberFlag));
+		//课程是否需要标记为云教练赠送
+		Boolean cloudTeacherPaymentFlag = false;
+		Long calenderId = null;
 		for (Integer memberFlag : memberCourseMap.keySet()) {
 			List<CourseSchedule> courseScheduleList = memberCourseMap.get(memberFlag);
 			if(courseScheduleList != null && courseScheduleList.size() > 0){
@@ -471,7 +477,8 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 							List<CourseScheduleStudentPayment> typeCourseStudentPayments = new ArrayList<>();
 							courseScheduleTypeListEntry.getValue().sort(Comparator.comparing(CourseSchedule::getStartClassTime));
 							BigDecimal typeCourseTotalOriginalPrice = new BigDecimal("0"), typeCourseTotalCurrentPrice = new BigDecimal("0");
-							for (CourseSchedule courseSchedule : courseScheduleTypeListEntry.getValue()) {
+							List<CourseSchedule> scheduleList = courseScheduleTypeListEntry.getValue();
+							for (CourseSchedule courseSchedule : scheduleList) {
 								if(existCourseIds.contains(courseSchedule.getId())){
 									throw new BizException("该学员已在此班级{}课程中", courseSchedule.getId());
 								}
@@ -505,14 +512,19 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 								typeCourseStudentPayments.get(0).setExpectPrice(typeCourseStudentPayments.get(0).getExpectPrice().add(totalCourseCurrentPrice.subtract(typeCourseTotalCurrentPrice)));
 							}
 							courseScheduleStudentPayments.addAll(typeCourseStudentPayments);
-							for (MusicGroupPaymentStudentCourseDetail musicGroupPaymentStudentCourseDetail : musicGroupPaymentStudentCourseDetails) {
-								if(typeCourseDuration>musicGroupPaymentStudentCourseDetail.getTotalCourseMinutes()){
-									musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(musicGroupPaymentStudentCourseDetail.getTotalCourseMinutes());
-									typeCourseDuration = typeCourseDuration-musicGroupPaymentStudentCourseDetail.getTotalCourseMinutes();
+							for (MusicGroupPaymentStudentCourseDetail detail : musicGroupPaymentStudentCourseDetails) {
+								if(typeCourseDuration>detail.getTotalCourseMinutes()){
+									detail.setUsedCourseMinutes(detail.getTotalCourseMinutes());
+									typeCourseDuration = typeCourseDuration-detail.getTotalCourseMinutes();
 								}else{
-									musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(typeCourseDuration);
+									detail.setUsedCourseMinutes(typeCourseDuration);
 									typeCourseDuration = 0;
 								}
+								//如果是免费的云教练课程
+								if(detail.getCloudTeacherPaymentFlag() && !cloudTeacherPaymentFlag){
+									cloudTeacherPaymentFlag = true;
+									calenderId = detail.getMusicGroupPaymentCalenderId();
+								}
 							}
 							musicGroupPaymentStudentCourseDetailDao.batchUpdate(musicGroupPaymentStudentCourseDetails);
 						}
@@ -521,6 +533,9 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 				}
 			}
 		}
+		if(cloudTeacherPaymentFlag){
+			operatingReportCloudService.updateSet(calenderId,courseSchedules.stream().map(e->e.getId()).collect(Collectors.toList()));
+		}
 	}
 
 	@Override

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

@@ -180,6 +180,8 @@ public class ExportServiceImpl implements ExportService {
     private SysMusicCompareRecordDao sysMusicCompareRecordDao;
     @Autowired
     private StudentOperatingVisitDao studentOperatingVisitDao;
+    @Autowired
+    private OperatingReportNewService operatingReportNewService;
 
     private static final ExecutorService exportExecutorService = Executors.newFixedThreadPool(10);
     @Autowired
@@ -346,6 +348,7 @@ public class ExportServiceImpl implements ExportService {
         exportFuncMap.put(ExportEnum.EXPORT_BILL, info -> exportBill(info));
         exportFuncMap.put(ExportEnum.EXPORT_OPERATING_VISIT_STATISTICS, info -> exportOperatorVisit(info));
         exportFuncMap.put(ExportEnum.EXPORT_STUDENT_SERVE_INFO, (info) -> exportStudentServeInfo(info));
+        exportFuncMap.put(ExportEnum.EXPORT_OPERATING_REPORT_NEW, (info) -> exportOperatingNew(info));
 
 
         //导出到报表中心
@@ -386,6 +389,13 @@ public class ExportServiceImpl implements ExportService {
         return studentOperatingVisitDao.sumVisit(month,tenantId.equals("-1")?null:tenantId);
     }
 
+    //经营报表
+    private List<OperatingReportNew> exportOperatingNew(Map<String, Object> info){
+        OperatingReportNewQueryInfo queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info), OperatingReportNewQueryInfo.class);
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
+        return operatingReportNewService.queryPage(queryInfo).getRows();
+    }
+
 
     //导出对账单
     @Override
@@ -1515,7 +1525,6 @@ public class ExportServiceImpl implements ExportService {
         exportManagerDownload(getHSSFWorkbook(rows,exportEnum), managerDownload);
     }
 
-
     //学员小课记录导出
     @Override
     public HttpResponseResult exportStudentMusicTheoryCourseInfo(Map<String, Object> info) {

+ 16 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/FinancialExpenditureServiceImpl.java

@@ -223,6 +223,7 @@ public class FinancialExpenditureServiceImpl extends BaseServiceImpl<Long, Finan
         return financialExpenditures;
     }
 
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void syncOaPayLog(Integer workOrderId,String fileUrl) throws Exception {
@@ -246,7 +247,8 @@ public class FinancialExpenditureServiceImpl extends BaseServiceImpl<Long, Finan
             //课程退费和乐团退费需要单独处理
             if(pWorkOrderInfo.getProcess().equals(33) ||
                     pWorkOrderInfo.getProcess().equals(22) ||
-                    pWorkOrderInfo.getProcess().equals(19)){
+                    pWorkOrderInfo.getProcess().equals(19) ||
+                    pWorkOrderInfo.getProcess().equals(28)){
                 List<FinancialExpenditure> financialExpenditureList = new ArrayList<>();
                 for (OaInputDto oaInputDto : oaInputDtos) {
                     if(!"子表单".equals(oaInputDto.getName())){
@@ -262,6 +264,8 @@ public class FinancialExpenditureServiceImpl extends BaseServiceImpl<Long, Finan
                         financialExpenditure.setBatchNo(pWorkOrderInfo.getId().toString());
                         financialExpenditure.setFinancialProcessNo(pWorkOrderInfo.getId().toString());
                         financialExpenditure.setApplyUser(realName);
+                        financialExpenditure.setApplyUserId(pWorkOrderInfo.getCreator());
+                        financialExpenditure.setProcessId(pWorkOrderInfo.getProcess());
                         List<OaColumnDto> columns = oaInputDto.getColumns();
                         if(columns != null && columns.size() > 0){
                             for (OaColumnDto column : columns) {
@@ -312,10 +316,10 @@ public class FinancialExpenditureServiceImpl extends BaseServiceImpl<Long, Finan
                                                 }
                                                 continue;
                                             }
-                                        }else if(name.contains("金额")){
+                                        }else if(name.contains("金额") || name.contains("住宿费") || name.contains("出差补助") || name.contains("交通费")){
                                             Object o = hashMap.get(inputDto.getModel());
                                             if(Objects.nonNull(o) && StringUtils.isNotEmpty(o.toString())){
-                                                financialExpenditure.setAmount(new BigDecimal(Double.parseDouble(o.toString())));
+                                                financialExpenditure.setAmount(financialExpenditure.getAmount().add(new BigDecimal(Double.parseDouble(o.toString()))));
                                                 continue;
                                             }
                                         }else if(name.contains("情况说明")){
@@ -336,6 +340,12 @@ public class FinancialExpenditureServiceImpl extends BaseServiceImpl<Long, Finan
                                                 financialExpenditure.setFeeProject(FeeProjectEnum.valueOfDesc(o.toString()));
                                                 continue;
                                             }
+                                        }else if(name.contains("住宿费")){
+                                            Object o = hashMap.get(inputDto.getModel());
+                                            if(Objects.nonNull(o) && StringUtils.isNotEmpty(o.toString())){
+                                                financialExpenditure.setFeeProject(FeeProjectEnum.valueOfDesc(o.toString()));
+                                                continue;
+                                            }
                                         }
                                     }
                                 }
@@ -360,7 +370,7 @@ public class FinancialExpenditureServiceImpl extends BaseServiceImpl<Long, Finan
                             groupClassService.cancelGroupOa(returnFeeDto);
                         }
                     }
-                }else {
+                }else if(pWorkOrderInfo.getProcess().equals(33) || pWorkOrderInfo.getProcess().equals(19)){
                     //退团
                     for (FinancialExpenditure financialExpenditure : financialExpenditureList) {
                         String returnFeeType = financialExpenditure.getReturnFeeType();
@@ -425,6 +435,8 @@ public class FinancialExpenditureServiceImpl extends BaseServiceImpl<Long, Finan
                 financialExpenditure.setBatchNo(workOrderId.toString());
                 financialExpenditure.setFinancialProcessNo(workOrderId.toString());
                 financialExpenditure.setApplyUser(realName);
+                financialExpenditure.setApplyUserId(pWorkOrderInfo.getCreator());
+                financialExpenditure.setProcessId(pWorkOrderInfo.getProcess());
                 Integer organId = financialExpenditureDao.getDeptId(pWorkOrderInfo.getDeptId());
                 Organization organization = organizationDao.get(organId);
                 if(organization != null){

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

@@ -199,7 +199,6 @@ public class IndexErrDataRecordServiceImpl extends BaseServiceImpl<Long, IndexEr
 			queryOrganIds = Arrays.stream(queryInfo.getOrganIds().split(",")).map(Integer::new).collect(Collectors.toSet());
 		}
 		params.put("queryOrganIds", queryOrganIds);
-
 		Integer tenantId = TenantContextHolder.getTenantId();
 		int count = indexErrDataRecordDao.queryErrStringsCount(params);
 		pageInfo.setTotal(count);

+ 6 - 35
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -269,6 +269,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         cloudTeacherOrder.setStudentId(sysUser.getId());
         cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
         cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
+        cloudTeacherOrder.setOperatingAmount(studentPaymentOrder.getExpectAmount());
         cloudTeacherOrderService.insert(cloudTeacherOrder);
         return BaseController.succeed(result);
     }
@@ -695,6 +696,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
             cloudTeacherOrder.setStudentId(studentPaymentOrder.getUserId());
             cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
             cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
+            cloudTeacherOrder.setOperatingAmount(studentPaymentOrder.getExpectAmount());
             cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
             //赠送陪练课
             ActivityUserMapper activityUserMapper = new ActivityUserMapper();
@@ -785,7 +787,6 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
             //是否通过活动购买的团练宝
             if(Objects.nonNull(studentPaymentOrder.getActivityId())){
-//                Student student = studentService.get(userId);
                 VipGroupActivity activity = vipGroupActivityDao.get(Integer.parseInt(studentPaymentOrder.getActivityId()));
                 //保存团练宝数据
                 CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
@@ -797,40 +798,9 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                 cloudTeacherOrder.setStudentId(studentPaymentOrder.getUserId());
                 cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
                 cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
+                cloudTeacherOrder.setOperatingAmount(studentPaymentOrder.getExpectAmount());
                 cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
-                //赠送陪练课
-//                ActivityUserMapper activityUserMapper = new ActivityUserMapper();
-//                activityUserMapper.setTeacherId(student.getTeacherId());
-//                activityUserMapper.setPaymentOrderId(studentPaymentOrder.getId());
-//                activityUserMapper.setUserId(studentPaymentOrder.getUserId());
-//                activityUserMapper.setActivityId(activity.getId());
-//                activityUserMapper.setActualPrice(BigDecimal.ZERO);
-//                activityUserMapper.setGivePracticeFlag(1);
-//                activityUserMapper.setReturnFee(false);
-//                activityUserMapperDao.insert(activityUserMapper);
-                //赠送训练营
-//                TempLittleArtistTrainingCampUserRelation tempLittleArtistTrainingCamp = new TempLittleArtistTrainingCampUserRelation();
-//                tempLittleArtistTrainingCamp.setUserId(studentPaymentOrder.getUserId());
-//                tempLittleArtistTrainingCamp.setState("NOT_APPLY");
-//                tempLittleArtistTrainingCamp.setCreateTime(nowDate);
-//                tempLittleArtistTrainingCampUserRelationDao.insert(tempLittleArtistTrainingCamp);
-                //生成订单详情
-//                StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
-//                studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
-//                studentPaymentOrderDetail.setType(OrderDetailTypeEnum.CLOUD_TEACHER);
-//                studentPaymentOrderDetail.setGoodsIdList("1");
-//                studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount());
-//                studentPaymentOrderDetail.setTenantId(studentPaymentOrder.getTenantId());
-//                studentPaymentOrderDetail.setCreateTime(nowDate);
-//                studentPaymentOrderDetail.setUpdateTime(nowDate);
-//                studentPaymentOrderDetailDao.insert(studentPaymentOrderDetail);
-                //赠送优惠券
-//                Integer giveCouponId = activity.getGiveCouponId();
-//                Integer giveCouponNum = activity.getGiveCouponNum();
-//                if(Objects.nonNull(giveCouponId) && Objects.nonNull(giveCouponNum)){
-//                    sysCouponCodeService.exchangeCoupon(userId,giveCouponId,
-//                            studentPaymentOrder.getId(),giveCouponNum,2,null);
-//                }
+
                 Map<Integer, String> phoneMaps = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(userId.toString()));
                 String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
                 StringBuffer pushUrl = new StringBuffer(baseApiUrl).append("/#/artistRegistration");
@@ -877,8 +847,8 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                         cloudTeacherOrder.setStudentId(coachPaymentDetails.getUserId());
                         cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
                         cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
+                        cloudTeacherOrder.setOperatingAmount(studentPaymentOrder.getExpectAmount());
                         cloudTeacherOrderService.save(cloudTeacherOrder,cloudCoachPaymentProgram.getAutoActivationFlag());
-
                         //修改缴费状态
                         coachPaymentDetails.setPaymentStatus(1);
                         coachPaymentDetails.setPaymentOrderId(studentPaymentOrder.getId());
@@ -926,6 +896,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         cto.setLevel(1);
         cto.setTime(totalMonth.intValue());
         cto.setAmount(studentPaymentOrder.getActualAmount().add(studentPaymentOrder.getBalancePaymentAmount()));
+        cto.setOperatingAmount(cto.getAmount());
         cto.setStartTime(now.toDate());
         cto.setEndTime(DateUtil.addDays(now.plusMonths(totalMonth.intValue()).toDate(),1));
         cto.setOrderId(studentPaymentOrder.getId());

+ 16 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java

@@ -70,6 +70,8 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
     private StudentDao studentDao;
     @Autowired
     private VipGroupActivityDao vipGroupActivityDao;
+    @Autowired
+    private OperatingReportCloudService operatingReportCloudService;
 
     @Override
     public BaseDAO<Long, MusicGroupPaymentCalenderDetail> getDAO() {
@@ -175,9 +177,8 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void batchAdd(String batchNo, Set<Integer> userIdList) {
-
         List<MusicGroupPaymentCalender> musicGroupPaymentCalenderList = musicGroupPaymentCalenderDao.findByBatchNo(batchNo);
-        if (musicGroupPaymentCalenderList == null || musicGroupPaymentCalenderList.size() == 0) {
+        if (CollectionUtils.isEmpty(musicGroupPaymentCalenderList)) {
             throw new BizException("操作失败:缴费项目不存在");
         }
         MusicGroupPaymentCalender musicGroupPaymentCalender = musicGroupPaymentCalenderList.get(0);
@@ -240,6 +241,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
         Date date = new Date();
         MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = null;
         Map<Integer, Long> userMap = new HashMap<>();
+        Map<Integer, Integer> activityuserMap = new HashMap<>();
         List<MusicGroupPaymentCalenderDetail> musicGroupPaymentCalenderDetailList = new ArrayList<MusicGroupPaymentCalenderDetail>();
         //创建缴费明细
         MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
@@ -304,6 +306,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
                         activityUserMapperList.add(activityUserMapper);
                     }
                     activityUserMapperService.batchInsert(activityUserMapperList);
+                    activityUserMapperList.stream().forEach(e -> activityuserMap.put(e.getUserId(), e.getId()));
                 }
             }
         }
@@ -340,6 +343,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
                     musicGroupPaymentStudentCourseDetail.setUpdateTime(date);
                     musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(0);
                     musicGroupPaymentStudentCourseDetail.setUserId(studentId);
+                    musicGroupPaymentStudentCourseDetail.setCloudTeacherPaymentFlag(musicGroupPaymentCalender.getCloudTeacherPaymentFlag());
                     musicGroupPaymentStudentCourseDetailList.add(musicGroupPaymentStudentCourseDetail);
                 }
             }
@@ -368,11 +372,9 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
         }
         Long musicGroupPaymentCalenderId = details.get(0).getMusicGroupPaymentCalenderId();
         MusicGroupPaymentCalender musicGroupPaymentCalender = musicGroupPaymentCalenderDao.get(musicGroupPaymentCalenderId);
-
         if (musicGroupPaymentCalender == null) {
             throw new BizException("查询缴费项目失败[{}]", musicGroupPaymentCalender);
         }
-
         long count = 0;
         if (musicGroupPaymentCalender.getPayUserType() == STUDENT) {
             // 是否已缴费
@@ -527,7 +529,6 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
             musicGroupPaymentCalender.setUpdateTime(nowDate);
             musicGroupPaymentCalenderDao.update(musicGroupPaymentCalender);
         }
-
         MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = musicGroupPaymentCalenderDetailDao.findByCalenderIdAndUserId(currentPaymentCalenderId, studentPaymentOrder.getUserId());
         if (musicGroupPaymentCalenderDetail == null) {
             musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
@@ -553,6 +554,15 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
             musicGroupPaymentCalenderDetailDao.update(musicGroupPaymentCalenderDetail);
         }
 
+        //保存、更新云教练缴费项目预收
+        operatingReportCloudService.updateSet(musicGroupPaymentCalender,studentPaymentOrder.getId());
+
+        Boolean cloudTeacherPaymentFlag = false;
+        if(musicGroupPaymentCalender.getCloudTeacherPaymentFlag()){
+            List<MusicGroupPaymentCalenderCourseSettings> courseSettings = musicGroupPaymentCalenderCourseSettingsDao.queryCalenderCourseSettings(musicGroupPaymentCalender.getId());
+            BigDecimal reduce = courseSettings.stream().map(e -> e.getCourseCurrentPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
+            cloudTeacherPaymentFlag = reduce.compareTo(BigDecimal.ZERO) == 0;
+        }
         //续费项目加学员时就生成了课程时长,报名项目在缴费成功后才需要添加课程时长
         if (musicGroupPaymentCalender.getPaymentType() == MusicGroupPaymentCalender.PaymentType.MUSIC_APPLY) {
             List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetails = new ArrayList<>();
@@ -579,6 +589,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
                 musicGroupPaymentStudentCourseDetail.setCreateTime(nowDate);
                 musicGroupPaymentStudentCourseDetail.setUpdateTime(nowDate);
                 musicGroupPaymentStudentCourseDetail.setTenantId(tenantId);
+                musicGroupPaymentStudentCourseDetail.setCloudTeacherPaymentFlag(cloudTeacherPaymentFlag);
                 musicGroupPaymentStudentCourseDetails.add(musicGroupPaymentStudentCourseDetail);
             }
             if (musicGroupPaymentStudentCourseDetails.size() > 0) {

+ 14 - 28
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -60,8 +60,6 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
     @Autowired
     private MusicGroupPaymentCalenderDetailDao musicGroupPaymentCalenderDetailDao;
     @Autowired
-    private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
-    @Autowired
     private MusicGroupPaymentCalenderCourseSettingsServiceImpl musicGroupPaymentCalenderCourseSettingsService;
     @Autowired
     private MusicGroupPaymentStudentCourseDetailDao musicGroupPaymentStudentCourseDetailDao;
@@ -121,6 +119,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
     private StudentRegistrationService studentRegistrationService;
     @Autowired
     private VipGroupActivityDao vipGroupActivityDao;
+    @Autowired
+    private OperatingReportCloudService operatingReportCloudService;
 
     @Override
     public BaseDAO<Long, MusicGroupPaymentCalender> getDAO() {
@@ -352,7 +352,19 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
         // 设置批次号
         String batchNo = idGeneratorService.generatorId() + "";
         musicGroupPaymentCalender.setBatchNo(batchNo);
+        //标记是否云教练缴费
+        if(musicGroupPaymentCalender.getPayUserType() == STUDENT && musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
+            if(musicGroupPaymentCalender.getPaymentType() == ADD_STUDENT){
+                musicGroupPaymentCalender.setCloudTeacherPaymentFlag(true);
+            }else if(memberActualAmount.compareTo(BigDecimal.ZERO) > 0 && (courseActualAmount.compareTo(BigDecimal.ZERO) == 0 || activityActualAmount.compareTo(BigDecimal.ZERO) == 0)) {
+                if(CollectionUtils.isNotEmpty(musicGroupPaymentBaseCalender.getMusicGroupPaymentCalenderCourseSettingsList()) || CollectionUtils.isNotEmpty(musicGroupPaymentBaseCalender.getCalenderActivityList())){
+                    musicGroupPaymentCalender.setCloudTeacherPaymentFlag(true);
+                }
+            }
+        }
         musicGroupPaymentCalenderDao.insert(musicGroupPaymentCalender);
+
+        operatingReportCloudService.save(musicGroupPaymentCalender);
         Long calenderId = musicGroupPaymentCalender.getId();
         //保存会员缴费信息
         MusicGroupPaymentCalenderMember calenderMember = musicGroupPaymentBaseCalender.getCalenderMember();
@@ -1375,30 +1387,4 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
     public MusicGroupPaymentCalender findByMusicGroupRegCalender(String musicGroupId) {
         return musicGroupPaymentCalenderDao.findByMusicGroupRegCalender(musicGroupId);
     }
-
-    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
-    public MusicGroupStudentFee updateCalender(Long calenderDetailId, Integer userId) {
-        Date date = new Date();
-        MusicGroupPaymentCalenderDetail calenderDetail = musicGroupPaymentCalenderDetailDao.get(calenderDetailId);
-        MusicGroupPaymentCalender calender = this.get(calenderDetail.getMusicGroupPaymentCalenderId());
-        MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, calender.getMusicGroupId());
-//		if(calender.getIsGiveMusicNetwork() && musicGroupStudentFee != null){
-//			//赠送网管课
-//			musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
-//		}
-        //更新学生的缴费记录状态
-        calenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
-//		calenderDetail.setActualAmount(calenderDetail.getExpectAmount().add(calenderDetail.getExpectMemberAmount()));
-        calenderDetail.setPayTime(date);
-        calenderDetail.setUpdateTime(date);
-        musicGroupPaymentCalenderDetailDao.update(calenderDetail);
-
-        //更新实际缴费人数
-        Integer actualNum = calender.getActualNum() == null ? 0 : calender.getActualNum();
-        calender.setActualNum(actualNum + 1);
-        calender.setUpdateTime(date);
-        musicGroupPaymentCalenderDao.update(calender);
-        return musicGroupStudentFee;
-    }
-
 }

+ 2 - 302
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -28,6 +28,7 @@ import java.util.Set;
 import java.util.stream.Collectors;
 
 import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.thirdparty.yqpay.DateUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -1359,293 +1360,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         return BaseController.succeed(payMap);
     }
 
-    /*@Override
-    @Transactional(rollbackFor = Exception.class)
-    public Map rePay(RegisterPayDto registerPayDto) throws Exception {
-        StudentRegistration studentRegistration = studentRegistrationService.get(registerPayDto.getRegisterId().longValue());
-        if (studentRegistration == null) {
-            throw new BizException("报名信息有误,请核查");
-        }
-        Integer tenantId = TenantContextHolder.getTenantId();
-
-        Integer userId = studentRegistration.getUserId();
-
-        List<StudentPaymentOrder> applyOrderList = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.ING);
-
-        StudentPaymentOrder applyOrder = null;
-
-        if(applyOrderList != null && applyOrderList.size() > 0){
-        	applyOrder = applyOrderList.get(0);
-        }
-
-        if (applyOrder == null) {
-            throw new BizException("没有支付中订单,请在我的订单中查看订单状态");
-        }
-
-        // 查询订单状态
-        PayStatus payStatus = studentPaymentOrderService.queryPayStatus(applyOrder.getPaymentChannel(), applyOrder.getOrderNo(), applyOrder.getTransNo());
-        if(payStatus != PayStatus.FAILED){
-        	if(payStatus == PayStatus.SUCCESSED){
-        		throw new BizException("订单已支付成功,请勿重复支付");
-        	}*//*else if(payStatus == PayStatus.PAYING){
-        		throw new BizException("订单还在交易中,请稍后重试");
-        	}*//*
-        }
-
-    	MusicGroupPaymentCalender musicGroupRegCalender = musicGroupPaymentCalenderDao.findByMusicGroupRegCalender(studentRegistration.getMusicGroupId());
-        if(musicGroupRegCalender == null){
-        	throw new BizException("缴费信息不存在");
-        }
-
-        //手动关闭订单
-        applyOrder.setStatus(DealStatusEnum.FAILED);
-        applyOrder.setMemo("用户手动关闭");
-        studentPaymentOrderService.callOrderCallBack(applyOrder);
-
-        BigDecimal amount = registerPayDto.getAmount(); //前端获取的价格
-        BigDecimal orderAmount = new BigDecimal("0");
-
-        //获取课程价格
-//        MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
-//        BigDecimal courseFee = musicOneSubjectClassPlan.getFee() == null ? BigDecimal.ZERO : musicOneSubjectClassPlan.getFee();
-//        orderAmount = orderAmount.add(courseFee);
-
-        BigDecimal remitFee = BigDecimal.ZERO;
-        BigDecimal courseRemitFee = BigDecimal.ZERO; //课程减免费用
-        boolean remitCourseRFeeFlag = false; //减免课程费用标识
-
-        MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
-        if(musicGroup == null){
-        	throw new BizException("查询乐团信息失败");
-        }
-
-        //乐器及打包辅件
-        List<MusicGroupSubjectGoodsGroup> goodsGroups = new ArrayList<>();
-        if (registerPayDto.getGoodsGroups() != null && registerPayDto.getGoodsGroups().size() > 0) {
-            String goodsGroupIds = registerPayDto.getGoodsGroups().keySet().stream().map(Object::toString).collect(Collectors.joining(","));
-            goodsGroups = musicGroupSubjectGoodsGroupService.findGoodsGroupByIds(goodsGroupIds);
-        }
-        for (MusicGroupSubjectGoodsGroup goodsGroup : goodsGroups) {
-            Map<String, BigDecimal> groupType = JSONObject.parseObject(goodsGroup.getKitGroupPurchaseTypeJson(), new TypeReference<Map<String, BigDecimal>>() {
-            });
-
-            if (goodsGroup.getType().equals(GoodsType.INSTRUMENT)) {
-                String kitGroupPurchaseType = registerPayDto.getGoodsGroups().get(goodsGroup.getId());
-                if (!groupType.containsKey(kitGroupPurchaseType)) {
-                    throw new BizException("乐器提供方式不存在,请核查");
-                }
-                if (!kitGroupPurchaseType.equals("GROUP")) {
-                    goodsGroup.setPrice(kitGroupPurchaseType.equals("FREE") ? new BigDecimal(0) : goodsGroup.getDepositFee());
-                } else {
-                    remitCourseRFeeFlag = goodsGroup.getGroupRemissionCourseFee().equals(1);
-                }
-                goodsGroup.setKitGroupPurchaseType(KitGroupPurchaseTypeEnum.valueOf(kitGroupPurchaseType));
-                remitFee = groupType.get(kitGroupPurchaseType) == null ? BigDecimal.ZERO : groupType.get(kitGroupPurchaseType);
-            }
-            goodsGroup.setGoodsList(goodsService.findGoodsByIds(goodsGroup.getGoodsIdList()));
-
-            if(goodsGroup.getType().equals(GoodsType.ACCESSORIES)){
-            	if((registerPayDto.getBuyCloudTeacher() || registerPayDto.getBuyCloudTeacherPlus()) && musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
-            		goodsGroup.setPrice(BigDecimal.ZERO);
-            		continue;
-            	}
-            }
-
-            if(musicGroup.getOrganId() == 55 && (registerPayDto.getNewCourse() == null || registerPayDto.getNewCourse().size() == 0) && !(registerPayDto.getBuyCloudTeacher() || registerPayDto.getBuyCloudTeacherPlus())){
-            	//取商品零售价
-                if (StringUtils.isNotBlank(goodsGroup.getGoodsIdList())) {
-                	List<Goods> goodsList = goodsDao.findGoodsByIds(goodsGroup.getGoodsIdList());
-                	for(Goods goods : goodsList){
-                		orderAmount = orderAmount.add(goods.getDiscountPrice());
-                	}
-                }
-            }else{
-            	orderAmount = orderAmount.add(goodsGroup.getPrice());
-            }
-        }
-
-        //新课程形态
-        List<MusicGroupPaymentCalenderCourseSettings> newCourses = new ArrayList<>();
-        if (musicGroupRegCalender.getPayUserType() == PayUserType.STUDENT && registerPayDto.getNewCourse() != null && registerPayDto.getNewCourse().size() > 0) {
-            newCourses = musicGroupPaymentCalenderCourseSettingsDao.getCalenderCourseSettings(registerPayDto.getNewCourse());
-            for (MusicGroupPaymentCalenderCourseSettings calenderCourseSetting : newCourses) {
-                if (remitCourseRFeeFlag && !calenderCourseSetting.getIsStudentOptional()) {
-                    courseRemitFee = courseRemitFee.add(calenderCourseSetting.getCourseCurrentPrice());
-                    continue;
-                }
-                orderAmount = orderAmount.add(calenderCourseSetting.getCourseCurrentPrice());
-            }
-        }
-
-        if (registerPayDto.getBuyMaintenance()) {
-            String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONE_YEAR_MUSICAL_REPAIR_AMOUNT, tenantId);
-            if(StringUtils.isEmpty(configValue)){
-                throw new BizException("乐保价格异常,请联系指导老师");
-            }
-            orderAmount = orderAmount.add(new BigDecimal(configValue));
-        }
-
-        studentRegistration.setMusicGroupPaymentCalenderId(musicGroupRegCalender.getId());
-        studentRegistration.setOrganId(musicGroup.getOrganId());
-        studentRegistration.setPayingStatus(1);
-
-        Date date = new Date();
-
-        CloudTeacherOrder cloudTeacherOrder = null;
-
-        //云教练/云教练+
-        if (registerPayDto.getBuyCloudTeacher() || registerPayDto.getBuyCloudTeacherPlus()) {
-
-            BigDecimal cloudTeacherPrice = BigDecimal.ZERO;
-			if (musicGroupRegCalender.getMemberRankSettingId() != null) {
-				cloudTeacherPrice = musicGroupRegCalender.getMemberPaymentAmount();
-			} else {
-				if (musicGroup.getCloudTeacherType() != null) {
-					OrganizationCloudTeacherFee cloudTeacher = organizationCloudTeacherFeeDao.getByOrganId(studentRegistration.getOrganId());
-					cloudTeacherPrice = musicGroup.getCloudTeacherType() == 0 ? cloudTeacher.getPrice() : cloudTeacher.getPlusPrice();
-				}
-			}
-
-            orderAmount = orderAmount.add(cloudTeacherPrice);
-            studentRegistration.setHasCloudTeacher(0);
-
-
-            //创建订单
-            cloudTeacherOrder = new CloudTeacherOrder();
-
-    		cloudTeacherOrder.setType(PeriodEnum.MONTH);//月
-			cloudTeacherOrder.setTime(musicGroupRegCalender.getMemberValidDate() == null ? 6 : musicGroupRegCalender.getMemberValidDate());
-
-    		cloudTeacherOrder.setOrganId(musicGroup.getOrganId());
-    		cloudTeacherOrder.setStudentId(studentRegistration.getUserId());
-    		cloudTeacherOrder.setLevel(musicGroupRegCalender.getMemberRankSettingId() == null ? 1 : musicGroupRegCalender.getMemberRankSettingId());
-    		cloudTeacherOrder.setAmount(musicGroupRegCalender.getMemberPaymentAmount() == null ? cloudTeacherPrice : musicGroupRegCalender.getMemberPaymentAmount());
-    		cloudTeacherOrder.setStatus(0);
-            cloudTeacherOrder.setMusicGroupId(musicGroup.getId());
-        }
-
-        String orderNo = idGeneratorService.generatorId("payment") + "";
-
-        String channelType = "";
-        StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(registerPayDto.getCouponIdList(),amount,true);
-        studentPaymentOrder.setUserId(studentRegistration.getUserId());
-        studentPaymentOrder.setGroupType(GroupType.MUSIC);
-        studentPaymentOrder.setOrderNo(orderNo);
-        studentPaymentOrder.setType(OrderTypeEnum.APPLY);
-        studentPaymentOrder.setStatus(DealStatusEnum.ING);
-        studentPaymentOrder.setPaymentChannel(channelType);
-        studentPaymentOrder.setMusicGroupId(studentRegistration.getMusicGroupId());
-        studentPaymentOrder.setCalenderId(musicGroupRegCalender.getId());
-        studentPaymentOrderService.insert(studentPaymentOrder);
-        //生成订单详情
-        studentPaymentOrder = studentRegistrationService.addOrder(studentRegistration,studentPaymentOrder,goodsGroups,remitFee,
-                courseRemitFee,
-                newCourses,
-                registerPayDto);
-        studentPaymentOrder = studentPaymentOrderService.get(studentPaymentOrder.getId());
-        orderAmount = studentPaymentOrder.getActualAmount();
-        if (amount.compareTo(orderAmount) != 0) {
-            throw new BizException("商品价格不符");
-        }
-        if (amount.compareTo(BigDecimal.ZERO) < 0) {
-            throw new BizException("价格异常");
-        }
-        boolean canPay = studentPaymentOrder.getClassGroupId() != null && studentPaymentOrder.getClassGroupId().equals(206);
-
-        if(cloudTeacherOrder != null){
-    		cloudTeacherOrder.setOrderId(studentPaymentOrder.getId());
-    		cloudTeacherOrder.setCreateTime(date);
-    		cloudTeacherOrder.setUpdateTime(date);
-    		cloudTeacherOrderService.insert(cloudTeacherOrder);
-        }
-
-        BigDecimal balance = BigDecimal.ZERO;
-        if (registerPayDto.getUseBalancePayment() && amount.compareTo(BigDecimal.ZERO) > 0) {
-            SysUserCashAccount userCashAccount = sysUserCashAccountService.get(userId);
-            if (userCashAccount == null) {
-                throw new BizException("用户账户找不到");
-            }
-            if (userCashAccount.getBalance() != null && userCashAccount.getBalance().compareTo(BigDecimal.ZERO) > 0) {
-                balance = amount.compareTo(userCashAccount.getBalance()) >= 0 ? userCashAccount.getBalance() : amount;
-                amount = amount.subtract(balance);
-                studentPaymentOrder.setPaymentChannel("BALANCE");
-                studentPaymentOrder.setActualAmount(amount);
-                studentPaymentOrder.setBalancePaymentAmount(balance);
-                sysUserCashAccountService.updateBalance(userId, balance.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐团报名");
-            }
-        }
-        studentPaymentOrder.setBatchNo(musicGroupRegCalender.getId() + "");
-        studentPaymentOrder.setPaymentChannel("BALANCE");
-        studentPaymentOrder.setRemitFee(remitFee);
-        studentPaymentOrder.setCourseRemitFee(courseRemitFee);
-        studentPaymentOrder.setOrganId(musicGroup.getOrganId());
-        studentPaymentOrder.setRoutingOrganId(musicGroup.getOrganId());
-        studentPaymentOrder.setUpdateTime(date);
-
-        if ("205".equals(studentPaymentOrder.getPaymentAccountNo())) {
-            if(!canPay) {
-                studentPaymentOrder.setPaymentChannel("ADAPAY");
-            }
-            studentRegistration.setPayingStatus(2);
-        }
-        studentPaymentOrderService.update(studentPaymentOrder);
-        studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
-
-        studentRegistrationService.update(studentRegistration);
-
-        if ("205".equals(studentPaymentOrder.getPaymentAccountNo())) {
-            Integer teacherId = musicGroup.getEducationalTeacherId();
-            SysUser endTeacher = sysUserFeignService.queryUserById(teacherId);
-            Map<Integer, String> userPhoneMap = new HashMap<>();
-            userPhoneMap.put(endTeacher.getId(), endTeacher.getPhone());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.NO_BUY_CLOUD_TEACHER_MSG,
-                    userPhoneMap, null, 0, null, null, musicGroup.getName(), studentRegistration.getName());
-
-            if(!canPay) {
-                Map<String, String> notifyMap = new HashMap<>();
-                notifyMap.put("hasPaidZero", "205");
-                notifyMap.put("orderNo", studentPaymentOrder.getOrderNo());
-                return notifyMap;
-            }
-        }
-
-        if (amount.compareTo(BigDecimal.ZERO) == 0) {
-            studentPaymentRouteOrderService.addRouteOrder(orderNo, musicGroup.getOrganId(), balance);
-            Map<String, String> notifyMap = new HashMap<>();
-            notifyMap.put("tradeState", "1");
-            notifyMap.put("merOrderNo", studentPaymentOrder.getOrderNo());
-            notifyMap.put("channelType", channelType);
-            notifyMap.put("orderNo", "");
-            studentPaymentOrderService.updateOrder(notifyMap);
-            return notifyMap;
-        }
-
-        String orderSubject = "乐团报名";
-        String receiver = "register";
-        if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType().equals(CooperationOrgan.OwnershipType.COOPERATION)) {
-            orderSubject = "乐团相关费用";
-        }
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
-        Map payMap = payService.getPayMap(
-                amount,
-                balance,
-                orderNo,
-                baseApiUrl + "/api-student/studentOrder/notify",
-                baseApiUrl + "/api-student/studentOrder/paymentResult?orderNo=" + orderNo,
-                orderSubject,
-                orderSubject,
-                musicGroup.getOrganId(),
-                receiver
-        );
-
-        studentPaymentOrder.setOrganId(musicGroup.getOrganId());
-        studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
-        studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
-        studentPaymentOrder.setUpdateTime(date);
-        studentPaymentOrderService.update(studentPaymentOrder);
-        return payMap;
-    }*/
-
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void updateSubjectInfo(SubFeeSettingDto subFeeSettingDto) throws Exception {
@@ -3807,21 +3521,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         return musicGroup;
     }
 
-    @Override
-    public List<ImGroupMember> queryMusicGroupTeachers(String musicGroupId) {
-        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-        List<ImGroupMember> groupMembers = new ArrayList<>();
-        Set teacherIds = new HashSet(4);
-        teacherIds.add(musicGroup.getEducationalTeacherId());
-        teacherIds.add(musicGroup.getTeamTeacherId());
-        teacherIds.add(musicGroup.getOperatorUserId());
-        teacherIds.add(musicGroup.getDirectorUserId());
-        teacherIds.removeAll(Collections.singleton(null));
-        for (Object teacherId : teacherIds) {
-            groupMembers.add(new ImGroupMember(teacherId.toString()));
-        }
-        return groupMembers;
-    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -4171,6 +3870,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         musicGroup.setMusicalInstrumentsProvideStatus(1);
         musicGroup.setUpdateTime(date);
+		musicGroup.setMusicalInstrumentsProvideTime(DateUtil.format(date,DateUtil.ISO_YEAR_MONTH_FORMAT));
         musicGroupDao.update(musicGroup);
 
         //查询当前乐团报名订单中购买了乐保的订单

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicMarginServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.common.dal.BaseDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.biz.dal.entity.MusicMargin;
+import com.ym.mec.biz.service.MusicMarginService;
+import com.ym.mec.biz.dal.dao.MusicMarginDao;
+import org.springframework.stereotype.Service;
+
+@Service
+public class MusicMarginServiceImpl extends BaseServiceImpl<Integer, MusicMargin>  implements MusicMarginService {
+	
+	@Autowired
+	private MusicMarginDao musicMarginDao;
+
+	@Override
+	public BaseDAO<Integer, MusicMargin> getDAO() {
+		return musicMarginDao;
+	}
+	
+}

+ 142 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OperatingReportCloudServiceImpl.java

@@ -0,0 +1,142 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.entity.OperatingReportCloud;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.service.CloudTeacherFreeCourseService;
+import com.ym.mec.biz.service.OperatingReportCloudService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+public class OperatingReportCloudServiceImpl extends BaseServiceImpl<Integer, OperatingReportCloud>  implements OperatingReportCloudService {
+	
+	@Autowired
+	private OperatingReportCloudDao operatingReportCloudDao;
+	@Autowired
+	private OrganCourseTypeOriginalCostDao organCourseTypeOriginalCostDao;
+	@Autowired
+	private CloudTeacherFreeCourseService cloudTeacherFreeCourseService;
+	@Autowired
+	private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
+	@Autowired
+	private StudentPaymentOrderDao studentPaymentOrderDao;
+	@Autowired
+	private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
+
+	@Override
+	public BaseDAO<Integer, OperatingReportCloud> getDAO() {
+		return operatingReportCloudDao;
+	}
+
+	@Override
+	public OperatingReportCloudDao getDao() {
+		return operatingReportCloudDao;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateSet(MusicGroupPaymentCalender calender, Long orderId) {
+		if(!calender.getCloudTeacherPaymentFlag()){
+			return;
+		}
+		BigDecimal amount = BigDecimal.ZERO;
+		//查询云教练价格
+		List<StudentPaymentOrderDetail> orderDetail = studentPaymentOrderDetailDao.getOrderDetail(orderId);
+		if(CollectionUtils.isNotEmpty(orderDetail)){
+			amount = orderDetail.stream().filter(e->e.getType() == OrderDetailTypeEnum.CLOUD_TEACHER || e.getType() == OrderDetailTypeEnum.CLOUD_TEACHER_PLUS)
+					.map(e->e.getPrice()).reduce(BigDecimal.ZERO,BigDecimal::add);
+		}else {
+			amount = studentPaymentOrderDao.get(orderId).getActualAmount();
+		}
+		if(calender.getPaymentType() == MusicGroupPaymentCalender.PaymentType.ADD_STUDENT){
+			this.saveMonthOperating(calender,amount);
+			return;
+		}
+		//找出非当月结算的缴费项目预算,如果为空则创建。如果已结算则创建当月结转的云教练预收、否则修改云教练预算
+		//获取云教练信息
+		OperatingReportCloud reportCloud = operatingReportCloudDao.findByCalenderId(calender.getId());
+		if(Objects.isNull(reportCloud)){
+			reportCloud = new OperatingReportCloud();
+			reportCloud.setCalenderId(calender.getId());
+			reportCloud.setCloudPrice(amount);
+			reportCloud.setOrganId(calender.getOrganId());
+			operatingReportCloudDao.insert(reportCloud);
+		}else {
+			if(reportCloud.getSettlementFlag()){
+				this.saveMonthOperating(calender,amount);
+			}else {
+				reportCloud.setCloudPrice(reportCloud.getCloudPrice().add(amount));
+				reportCloud.setUpdateTime(new Date());
+				operatingReportCloudDao.update(reportCloud);
+			}
+		}
+	}
+
+	private void saveMonthOperating(MusicGroupPaymentCalender calender,BigDecimal amount){
+		OperatingReportCloud currentReportCloud = operatingReportCloudDao.findByCurrentCalenderId(calender.getId());
+		if(Objects.isNull(currentReportCloud)){
+			currentReportCloud = new OperatingReportCloud();
+			currentReportCloud.setCalenderId(calender.getId());
+			currentReportCloud.setCloudPrice(amount);
+			currentReportCloud.setOrganId(calender.getOrganId());
+			currentReportCloud.setMonthFlag(true);
+			operatingReportCloudDao.insert(currentReportCloud);
+		}else {
+			currentReportCloud.setCloudPrice(currentReportCloud.getCloudPrice().add(amount));
+			operatingReportCloudDao.update(currentReportCloud);
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateSet(Long calenderId,List<Long> scheduleIdList) {
+		//如果是进行中加学员,全部算在当月云教练结转。不用摊到课程
+		MusicGroupPaymentCalender calender = musicGroupPaymentCalenderDao.get(calenderId);
+		if(calender.getPaymentType() == MusicGroupPaymentCalender.PaymentType.ADD_STUDENT){
+			return;
+		}
+		OperatingReportCloud reportCloud = operatingReportCloudDao.findByCalenderId(calenderId);
+		if(Objects.isNull(reportCloud)){
+			throw new BizException("操作失败,请联系管理员");
+		}
+		if(reportCloud.getSettlementFlag()){
+			return;
+		}
+		cloudTeacherFreeCourseService.batchInsert(scheduleIdList,calenderId);
+		//计算课程预收
+		BigDecimal costPrice = organCourseTypeOriginalCostDao.getCourseCostPrice(StringUtils.join(scheduleIdList,","));
+		reportCloud.setCloudPrice(reportCloud.getCloudPrice().subtract(costPrice));
+		reportCloud.setCoursePrice(reportCloud.getCoursePrice().add(costPrice));
+		reportCloud.setUpdateTime(new Date());
+		operatingReportCloudDao.update(reportCloud);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void save(MusicGroupPaymentCalender musicGroupPaymentCalender) {
+		if(musicGroupPaymentCalender.getCloudTeacherPaymentFlag()){
+			OperatingReportCloud reportCloud = new OperatingReportCloud();
+			reportCloud.setCalenderId(musicGroupPaymentCalender.getId());
+			reportCloud.setCloudPrice(BigDecimal.ZERO);
+			reportCloud.setOrganId(musicGroupPaymentCalender.getOrganId());
+			if(musicGroupPaymentCalender.getPaymentType() == MusicGroupPaymentCalender.PaymentType.ADD_STUDENT){
+				reportCloud.setMonthFlag(true);
+			}
+			operatingReportCloudDao.insert(reportCloud);
+		}
+	}
+}

+ 178 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OperatingReportNewServiceImpl.java

@@ -0,0 +1,178 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.OperatingReportNewDao;
+import com.ym.mec.biz.dal.dao.VipGroupCategoryDao;
+import com.ym.mec.biz.dal.entity.OperatingReportNew;
+import com.ym.mec.biz.dal.entity.VipGroupCategory;
+import com.ym.mec.biz.service.OperatingReportNewService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+@Service
+public class OperatingReportNewServiceImpl extends BaseServiceImpl<Integer, OperatingReportNew>  implements OperatingReportNewService {
+	
+	@Autowired
+	private OperatingReportNewDao operatingReportNewDao;
+	@Autowired
+	private VipGroupCategoryDao vipGroupCategoryDao;
+
+	@Override
+	public BaseDAO<Integer, OperatingReportNew> getDAO() {
+		return operatingReportNewDao;
+	}
+
+    @Override
+    public OperatingReportNewDao getDao() {
+        return operatingReportNewDao;
+    }
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void operatingReportMonth(Date month) {
+		String firstDayOfMonth = DateUtil.dateToString(DateUtil.getFirstDayOfMonth(month),DateUtil.ISO_EXPANDED_DATE_FORMAT);
+		String lastDayOfMonth = DateUtil.dateToString(DateUtil.getLastDayOfMonth(month),DateUtil.ISO_EXPANDED_DATE_FORMAT);
+		String currentMonth = DateUtil.dateToString(DateUtil.getLastDayOfMonth(month),DateUtil.ISO_YEAR_MONTH_FORMAT);
+		operatingReportNewDao.deleteByMonth(currentMonth);
+		List<OperatingReportNew> operatingList = operatingReportNewDao.initOperatingReport(currentMonth);
+		//更新团体云教练计费时间()
+		operatingReportNewDao.initCloudStartTime(lastDayOfMonth);
+		//标记缴费项目为已结算(已排课,并且在上个月有关联的课程)
+//		operatingReportCloudDao.settlementCalender(currentMonth);
+		//标记当月结算的缴费项目(缴费项目结算后缴费、或者进行中加学员的都算当月结算)
+//		operatingReportCloudDao.settlementCurrentCalender(currentMonth);
+		//销售收入、销售成本
+		List<OperatingReportNew> sellList = operatingReportNewDao.sumSellAmount(currentMonth);
+		Map<Integer, OperatingReportNew> collect = sellList.stream().collect(Collectors.groupingBy(OperatingReportNew::getOrganId,Collectors.collectingAndThen(Collectors.toList(),value->value.get(0))));
+		//服务收入
+		//导入的销售收入
+//		Map<Integer, BigDecimal> collect22 = MapUtil.convertIntegerMap(operatingReportNewDao.sumImportSaleOrderAmount(currentMonth));
+		//导入的服务收入  (全部记录为课程收入)
+		Map<Integer, BigDecimal> collect24 = MapUtil.convertIntegerMap(operatingReportNewDao.sumImportServerOrderAmount(currentMonth));
+		//云教练赠送课程实际收入
+		Map<Integer, BigDecimal> collect1 = MapUtil.convertIntegerMap(operatingReportNewDao.sumCloudCourseAmount(firstDayOfMonth,lastDayOfMonth));
+		//付费课程实际收入
+		Map<Integer, BigDecimal> collect2 = MapUtil.convertIntegerMap(operatingReportNewDao.sumCourseAmount(firstDayOfMonth,lastDayOfMonth));
+		//个人云教练当月收入
+		Map<Integer, BigDecimal> collect3 = MapUtil.convertIntegerMap(operatingReportNewDao.sumPersonalCloudAmount(currentMonth,firstDayOfMonth,lastDayOfMonth));
+		//团体云教练费用
+		Map<Integer, BigDecimal> collect4 = MapUtil.convertIntegerMap(operatingReportNewDao.sumGroupCloudAmount(currentMonth,firstDayOfMonth,lastDayOfMonth));
+		//团体云教练当月一次性结转
+		Map<Integer, BigDecimal> collect5 = MapUtil.convertIntegerMap(operatingReportNewDao.sumGroupAmount());
+		//乐保实收
+		Map<Integer, BigDecimal> collect26 = MapUtil.convertIntegerMap(operatingReportNewDao.sumMaintenanceAmount(currentMonth));
+
+		//业务退费
+		Map<Integer, BigDecimal> collect6 = MapUtil.convertIntegerMap(operatingReportNewDao.sumRefundAmount(currentMonth));
+		//变动费用
+		Map<Integer, BigDecimal> collect7 = MapUtil.convertIntegerMap(operatingReportNewDao.sumVariableCosts(currentMonth));
+		//固定费用
+		Map<Integer, BigDecimal> collect8 = MapUtil.convertIntegerMap(operatingReportNewDao.sumFixedCosts(currentMonth));
+		//内部结算
+		Map<Integer, BigDecimal> collect18 = MapUtil.convertIntegerMap(operatingReportNewDao.sumInternalSettlement(currentMonth));
+
+		//云教练预收款
+		//个人云教练预收款
+		Map<Integer, BigDecimal> collect9 = MapUtil.convertIntegerMap(operatingReportNewDao.sumCloudPreAmount(currentMonth,lastDayOfMonth));
+		//团体云教练预收款
+		Map<Integer, BigDecimal> collect10 = MapUtil.convertIntegerMap(operatingReportNewDao.sumGroupCloudPreAmount(currentMonth,lastDayOfMonth));
+		//未生效云教练预收款
+		Map<Integer, BigDecimal> collect25 = MapUtil.convertIntegerMap(operatingReportNewDao.sumWaitCloudPreAmount());
+
+		//课程预收
+		//云教练赠课预收
+		Map<Integer, BigDecimal> collect11 = MapUtil.convertIntegerMap(operatingReportNewDao.sumCloudCoursePreAmount(lastDayOfMonth));
+		//云教练赠送,未排课排课资格预收
+		//获取categoryId
+		VipGroupCategory category = vipGroupCategoryDao.getTheory();
+		Map<Integer, BigDecimal> collect20 = MapUtil.convertIntegerMap(operatingReportNewDao.sumActivityUserMapperAmount(category.getId()));
+		//付费课程预收
+		Map<Integer, BigDecimal> collect12 = MapUtil.convertIntegerMap(operatingReportNewDao.sumCoursePreAmount(lastDayOfMonth));
+		//付费团未排乐团课程预收(学员缴费)
+		Map<Integer, BigDecimal> collect21 = MapUtil.convertIntegerMap(operatingReportNewDao.sumMusicCourseAmount());
+		//排课资格预收
+		Map<Integer, BigDecimal> collect23 = MapUtil.convertIntegerMap(operatingReportNewDao.sumSubActivityUserMapperAmount());
+		//销售预收
+		Map<Integer, BigDecimal> collect13 = MapUtil.convertIntegerMap(operatingReportNewDao.sumSalePreAmount());
+		//其他预收
+		Map<Integer, BigDecimal> collect14 = MapUtil.convertIntegerMap(operatingReportNewDao.sumOtherPreAmount());
+
+		//预付款
+		//房租
+		Map<Integer, BigDecimal> collect19 = MapUtil.convertIntegerMap(operatingReportNewDao.sumPrepayments(currentMonth));
+
+		//应收
+		//欠费学员总金额
+		Map<Integer, BigDecimal> collect15 = MapUtil.convertIntegerMap(operatingReportNewDao.sumArrearsAmount());
+		//学校缴费订单待收款金额
+		Map<Integer, BigDecimal> collect16 = MapUtil.convertIntegerMap(operatingReportNewDao.sumSchoolAmount());
+
+		//应付(乐器押金)
+		List<Map<Integer, BigDecimal>> maps = operatingReportNewDao.sumMusicMargin();
+		Map<Integer, BigDecimal> collect17 = MapUtil.convertIntegerMap(maps);
+
+		for (OperatingReportNew operatingReportNew : operatingList) {
+			Integer organId = operatingReportNew.getOrganId();
+			OperatingReportNew reportNew = collect.get(organId);
+			if(Objects.nonNull(reportNew)){
+				operatingReportNew.setSaleAmount(reportNew.getSaleAmount());
+				operatingReportNew.setSaleCost(reportNew.getSaleCost());
+			}
+
+			operatingReportNew.setCourseAmount(getAmount(collect1.get(organId)));
+			operatingReportNew.setCourseAmount(operatingReportNew.getCourseAmount().add(getAmount(collect2.get(organId))));
+			operatingReportNew.setCourseAmount(operatingReportNew.getCourseAmount().add(getAmount(collect24.get(organId))));
+
+			operatingReportNew.setCloudAmount(getAmount(collect3.get(organId)));
+			operatingReportNew.setCloudAmount(operatingReportNew.getCloudAmount().add(getAmount(collect4.get(organId))));
+			operatingReportNew.setCloudAmount(operatingReportNew.getCloudAmount().add(getAmount(collect5.get(organId))));
+
+			operatingReportNew.setMaintenanceAmount(getAmount(collect26.get(organId)));
+
+			operatingReportNew.setServiceAmount(operatingReportNew.getCloudAmount().add(operatingReportNew.getCourseAmount()).add(operatingReportNew.getMaintenanceAmount()));
+			operatingReportNew.setTotalIncome(operatingReportNew.getSaleAmount().add(operatingReportNew.getServiceAmount()));
+
+			operatingReportNew.setBusinessRefund(getAmount(collect6.get(organId)));
+			operatingReportNew.setFixedCosts(getAmount(collect7.get(organId)));
+			operatingReportNew.setVariableCosts(getAmount(collect8.get(organId)));
+			operatingReportNew.setTotalCost(operatingReportNew.getBusinessRefund().
+					add(operatingReportNew.getFixedCosts()).add(operatingReportNew.getVariableCosts()));
+
+			operatingReportNew.setCloudPrepaidFee(getAmount(collect9.get(organId)).add(getAmount(collect10.get(organId))).add(getAmount(collect25.get(organId))));
+			operatingReportNew.setCoursePrepaidFee(getAmount(collect11.get(organId)).add(getAmount(collect12.get(organId))).
+					add(getAmount(collect20.get(organId))).add(getAmount(collect21.get(organId))).add(getAmount(collect23.get(organId))));
+			operatingReportNew.setSalePrepaidFee(getAmount(collect13.get(organId)));
+			operatingReportNew.setOtherPrepaidFee(getAmount(collect14.get(organId)));
+			operatingReportNew.setPrepaidFee(operatingReportNew.getCloudPrepaidFee().
+					add(operatingReportNew.getSalePrepaidFee()).
+					add(operatingReportNew.getOtherPrepaidFee()).
+					add(operatingReportNew.getCoursePrepaidFee()));
+
+			operatingReportNew.setReceivables(getAmount(collect15.get(organId)).add(getAmount(collect16.get(organId))));
+			operatingReportNew.setPayable(getAmount(collect17.get(organId)));
+
+			operatingReportNew.setInternalSettlement(getAmount(collect18.get(organId)));
+			operatingReportNew.setPrepayments(getAmount(collect19.get(organId)));
+
+			operatingReportNew.setQuasiDiscretionaryProfit(operatingReportNew.getTotalIncome().subtract(operatingReportNew.getTotalCost()));
+		}
+		operatingReportNewDao.batchInsert(operatingList);
+	}
+	private BigDecimal getAmount(BigDecimal amount){
+		if(amount == null){
+			amount = BigDecimal.ZERO;
+		}
+		return amount;
+	}
+}

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

@@ -306,7 +306,7 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
             LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
             LocalDate createDateTime = LocalDateTime.ofInstant(courseSchedule.getClassDate().toInstant(), DateUtil.zoneId).toLocalDate();
-            LocalDate createMonday = createDateTime.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
+//            LocalDate createMonday = createDateTime.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
 
             LocalDate homeworkCreateDateTime = LocalDateTime.ofInstant(byStudentAndCourseHomewok.getCreateTime().toInstant(), DateUtil.zoneId).toLocalDate();
             boolean isOk = false;

+ 39 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPreVisitServiceImpl.java

@@ -2,17 +2,22 @@ package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.StudentPreVisitDao;
 import com.ym.mec.biz.dal.dto.Student4operating;
+import com.ym.mec.biz.dal.dto.StudentPreVisitDto;
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
 import com.ym.mec.biz.dal.entity.StudentPreVisit;
+import com.ym.mec.biz.dal.page.StudentPreVisitQueryInfo;
+import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
 import com.ym.mec.biz.service.StudentPreVisitService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 @Service
 public class StudentPreVisitServiceImpl extends BaseServiceImpl<Integer, StudentPreVisit> implements StudentPreVisitService {
@@ -27,20 +32,48 @@ public class StudentPreVisitServiceImpl extends BaseServiceImpl<Integer, Student
 
 	@Override
 	public Integer batchInsert(List<Student4operating> student4operatings) {
-		StudentPreVisit studentPreVisit = new StudentPreVisit();
 		List<StudentPreVisit> studentPreVisits = new ArrayList<>();
 		for (Student4operating student4operating : student4operatings) {
+			StudentPreVisit studentPreVisit = new StudentPreVisit();
 			studentPreVisit.setStudentId(student4operating.getStudentId());
 			studentPreVisit.setOrganId(Integer.parseInt(student4operating.getOrganId()));
 			studentPreVisit.setStudentName(student4operating.getStudentName());
 			studentPreVisit.setPhone(student4operating.getPhone());
-			studentPreVisit.setTeacherId(Integer.parseInt(student4operating.getTeacherId()));
+			studentPreVisit.setTeacherId(student4operating.getTeacherId());
 			studentPreVisit.setTeacherName(student4operating.getTeacherName());
 			studentPreVisit.setOrgname(student4operating.getOrganName());
-			studentPreVisit.setVisitCycle(DateUtil.format(new Date(),"yyyy-MM").toString());
+			SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM");
+			GregorianCalendar gc=new GregorianCalendar();
+			gc.setTime(new Date());
+			gc.add(2,-1);
+			String format = sf.format(gc.getTime());
+			//这里月份进行了减一,因为生成的上月的数据
+			studentPreVisit.setVisitCycle(format);
 			studentPreVisit.setIsVisit(0);
 			studentPreVisits.add(studentPreVisit);
 		}
+
 	return studentPreVisitDao.batchInsert(studentPreVisits);
 	}
+
+
+	@Override
+	public PageInfo<StudentPreVisitDto> getPageList(StudentPreVisitQueryInfo queryInfo) {
+
+		PageInfo<StudentPreVisitDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<StudentPreVisitDto> dataList = new ArrayList<>();
+		int count = this.findCount(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = studentPreVisitDao.getPageList(params);
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+
 }

+ 29 - 174
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1,158 +1,16 @@
 package com.ym.mec.biz.service.impl;
 
-import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.NON_PAYMENT;
-import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED;
-import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.MAINTENANCE;
-import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.PRACTICE;
-import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.VIP;
-import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
-import static com.ym.mec.biz.dal.enums.SysUserRoleEnum.ORGAN_MANAGER;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Collectors;
-
-import javax.annotation.Resource;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.CertificateTypeEnum;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.GoodsDao;
-import com.ym.mec.biz.dal.dao.GoodsProcurementDao;
-import com.ym.mec.biz.dal.dao.ImGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderStudentDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentStudentCourseDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
-import com.ym.mec.biz.dal.dao.OrganizationDao;
-import com.ym.mec.biz.dal.dao.StudentCourseFeeDetailDao;
-import com.ym.mec.biz.dal.dao.StudentDao;
-import com.ym.mec.biz.dal.dao.StudentInstrumentDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
-import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
-import com.ym.mec.biz.dal.dao.SubjectChangeDao;
-import com.ym.mec.biz.dal.dao.SubjectDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.dto.MusicGroupApplyGoodsDto;
-import com.ym.mec.biz.dal.dto.NoClassMusicStudentDto;
-import com.ym.mec.biz.dal.dto.PageInfoReg;
-import com.ym.mec.biz.dal.dto.RegisterDto;
-import com.ym.mec.biz.dal.dto.RegisterPayDto;
-import com.ym.mec.biz.dal.dto.StudentAddDto;
-import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
-import com.ym.mec.biz.dal.dto.StudentCourseInfoDto;
-import com.ym.mec.biz.dal.dto.StudentInfo;
-import com.ym.mec.biz.dal.dto.StudentMusicDetailDto;
-import com.ym.mec.biz.dal.dto.StudentMusicGroupDto;
-import com.ym.mec.biz.dal.dto.StudentRegisterInstrumentsDetailDto;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
-import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.dal.entity.CouponPayParam;
-import com.ym.mec.biz.dal.entity.CouponPayTypeInfo;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
-import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.entity.GoodsProcurement;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderActivity;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderMember;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderRepair;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderStudentDetail;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail;
-import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
-import com.ym.mec.biz.dal.entity.Organization;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.StudentCourseFeeDetail;
-import com.ym.mec.biz.dal.entity.StudentInstrument;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.entity.SubjectChange;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
-import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
-import com.ym.mec.biz.dal.enums.CouponDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.GoodsType;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
-import com.ym.mec.biz.dal.enums.MessageTypeEnum;
-import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
-import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
-import com.ym.mec.biz.dal.enums.SysUserRoleEnum;
-import com.ym.mec.biz.dal.page.MusicGroupRecordStudentQueryInfo;
-import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
-import com.ym.mec.biz.dal.page.RegistrationOrPreQueryInfo;
-import com.ym.mec.biz.dal.page.StudentPreRegistrationQueryInfo;
-import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.event.source.SendSeoMessageSource;
-import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.ClassGroupStudentMapperService;
-import com.ym.mec.biz.service.CloudTeacherOrderService;
-import com.ym.mec.biz.service.ContractService;
-import com.ym.mec.biz.service.CourseScheduleService;
-import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
-import com.ym.mec.biz.service.GoodsService;
-import com.ym.mec.biz.service.ImGroupMemberService;
-import com.ym.mec.biz.service.MusicGroupPaymentCalenderActivityService;
-import com.ym.mec.biz.service.MusicGroupPaymentCalenderMemberService;
-import com.ym.mec.biz.service.MusicGroupPaymentCalenderRepairService;
-import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
-import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
-import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
-import com.ym.mec.biz.service.StudentRegistrationService;
-import com.ym.mec.biz.service.StudentService;
-import com.ym.mec.biz.service.SubjectService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysCouponCodeService;
-import com.ym.mec.biz.service.SysMessageService;
-import com.ym.mec.biz.service.SysTenantConfigService;
-import com.ym.mec.biz.service.SysUserCashAccountDetailService;
-import com.ym.mec.biz.service.SysUserCashAccountLogService;
-import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.ImResult;
@@ -166,6 +24,29 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.NON_PAYMENT;
+import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED;
+import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.*;
+import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
+import static com.ym.mec.biz.dal.enums.SysUserRoleEnum.ORGAN_MANAGER;
 
 @Service
 public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
@@ -542,11 +423,6 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
-    public Integer updateByUserIdAndMusicGroupId(StudentRegistration studentRegistration) {
-        return studentRegistrationDao.updateByUserIdAndMusicGroupId(studentRegistration);
-    }
-
-    @Override
     @Transactional(rollbackFor = Exception.class)
     public StudentRegistration addStudent(StudentRegistration studentRegistration) throws Exception {
         Integer userId = studentRegistration.getUserId();
@@ -1420,7 +1296,6 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                         HttpUtil.getSortUrl(studentApplyUrl));
             }
         }
-
         return studentPaymentOrder;
     }
 
@@ -1441,21 +1316,11 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
-    public List<StudentRegistration> findStudentListByIdList(List<Long> idList) {
-        return studentRegistrationDao.findStudentListByIdList(idList);
-    }
-
-    @Override
     public int batchInsert(List<StudentRegistration> studentRegistrationList) {
         return studentRegistrationDao.batchInsert(studentRegistrationList);
     }
 
     @Override
-    public StudentRegistration findStudentByClassGroupIdAndUserId(Integer userId, Integer classGroupId) {
-        return studentRegistrationDao.findStudentByClassGroupIdAndUserId(userId, classGroupId);
-    }
-
-    @Override
     public List<StudentRegistration> findMusicGroupStudent(String musicGroupId, String actualSubjectId) {
         List<Subject> subjectList = subjectService.findAll(new HashMap<>());
         List<StudentRegistration> musicGroupStudents = studentRegistrationDao.findMusicGroupStudent(musicGroupId, actualSubjectId);
@@ -1503,16 +1368,6 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
-    public List<StudentRegistration> queryStudentByMusicGroupId(String musicGroupId) {
-        return studentRegistrationDao.queryStudentByMusicGroupId(musicGroupId);
-    }
-
-    @Override
-    public List<Map<Integer, String>> findParentId(String parentPhones) {
-        return studentRegistrationDao.findParentId(parentPhones);
-    }
-
-    @Override
     @Transactional(rollbackFor = Exception.class)
     public StudentRegistration updateStudent(StudentRegistration studentRegistration) {
         if (StringUtils.isBlank(studentRegistration.getCertificateType())) {

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

@@ -227,36 +227,6 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean updateOperatingTempTag() {
-        /*List<StudentCourseTimesDto> studentCourseTimesDtoList = courseScheduleStudentPaymentDao.queryStudentNotStartCourseTimesOfOnline();
-        Map<Integer, StudentCourseTimesDto> map = studentCourseTimesDtoList.stream().collect(Collectors.toMap(StudentCourseTimesDto::getUserId, s -> s));
-        //查询服务指标为0的用户
-        List<Student> unlabeledStudentList = studentDao.queryByOperatingTempTag(0);
-
-        List<Student> updateStudentList = new ArrayList<Student>();
-        StudentCourseTimesDto dto = null;
-        for (Student s : unlabeledStudentList) {
-            if (s.getOperatingTag() == 1) {
-                continue;
-            }
-            dto = map.get(s.getUserId());
-            if (dto != null) {
-                if (dto.getTotalCourseTimes() > 0 && dto.getTotalCourseTimes() != dto.getFreePracticeCourseTimes()) {
-                    s.setOperatingTempTag(1);
-                    s.setOperatingTag(1);
-                    updateStudentList.add(s);
-                }
-            }
-        }
-
-        List<Student> labeledStudentList = studentDao.queryByOperatingTempTag(1);
-        for (Student s : labeledStudentList) {
-            dto = map.get(s.getUserId());
-            if (dto == null || dto.getTotalCourseTimes() == dto.getFreePracticeCourseTimes()) {
-                s.setOperatingTempTag(0);
-                s.setOperatingTag(0);
-                updateStudentList.add(s);
-            }
-        }*/
         String month = DateUtil.format(new Date(), DateUtil.ISO_YEAR_MONTH_FORMAT);
         studentOperatingVisitDao.deleteByUserId(month);
         List<Integer> operatingUserIds = studentDao.queryByOperatingTag(1);
@@ -268,6 +238,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
                 studentOperatingVisitDao.batchAdd(operatingUserIds,month);
             }
         }
+        //更新学员基本信息
         return true;
     }
 

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentVisitServiceImpl.java

@@ -43,6 +43,8 @@ public class StudentVisitServiceImpl extends BaseServiceImpl<Integer, StudentVis
     private StudentAttendanceDao studentAttendanceDao;
     @Autowired
     private StudentOperatingVisitDao studentOperatingVisitDao;
+    @Autowired
+    private StudentPreVisitDao studentPreVisitDao;
 
 
     @Override
@@ -90,6 +92,8 @@ public class StudentVisitServiceImpl extends BaseServiceImpl<Integer, StudentVis
         studentVisitDao.insert(studentVisit);
         //更新学员回访统计数据
         studentOperatingVisitDao.updateVisit(studentVisit.getStudentId(),DateUtil.format(studentVisit.getVisitTime(),DateUtil.ISO_YEAR_MONTH_FORMAT));
+        //更新学员回访状态
+        studentPreVisitDao.updateVisit(studentVisit.getStudentId(),DateUtil.format(studentVisit.getVisitTime(),DateUtil.ISO_YEAR_MONTH_FORMAT));
         return studentVisit;
     }
 

+ 18 - 14
mec-biz/src/main/resources/config/mybatis/ActivityUserMapperMapper.xml

@@ -39,6 +39,7 @@
 		<result column="cut_memo_" property="cutMemo" />
 		<result column="give_coupon_id_" property="giveCouponId" />
 		<result column="create_time_" property="createTime" />
+		<result column="calender_id_" property="calenderId" />
 		<result column="update_time_" property="updateTime" />
 		<result column="tenant_id_" property="tenantId" />
 	</resultMap>
@@ -60,13 +61,13 @@
 										  vip_group_id_,give_vip_group_id_,practice_group_id_,give_practice_group_id_,return_fee_,
 		                                  member_order_id_,give_member_order_id_,teacher_id_,actual_price_,add_memo_,cut_memo_,tenant_id_,give_coupon_id_,
 										  total_course_num_,total_give_course_num_,sub_course_num_,sub_give_course_num_,sub_no_course_price_,single_course_time_,
-		                                  give_single_course_time_,category_id_,give_category_id_)
+		                                  give_single_course_time_,category_id_,give_category_id_,calender_id_)
 		                                  VALUES(#{activityId},#{userId},#{vipFlag},#{giveVipFlag},#{practiceFlag},
 		                                         #{givePracticeFlag},#{memberFlag},#{giveMemberFlag},NOW(),NOW(),#{paymentOrderId},#{vipGroupId},
 		                                         #{giveVipGroupId},#{practiceGroupId},#{givePracticeGroupId},#{returnFee},
 		                                         #{memberOrderId},#{giveMemberOrderId},#{teacherId},#{actualPrice},#{addMemo},#{cutMemo},#{tenantId},#{giveCouponId},
 		                                         #{totalCourseNum},#{totalGiveCourseNum},#{subCourseNum},#{subGiveCourseNum},#{subNoCoursePrice},
-		                                         #{singleCourseTime},#{giveSingleCourseTime},#{categoryId},#{giveCategoryId})
+		                                         #{singleCourseTime},#{giveSingleCourseTime},#{categoryId},#{giveCategoryId},#{calenderId})
 	</insert>
     <insert id="batchInsert">
 		INSERT INTO activity_user_mapper (activity_id_,user_id_,vip_flag_,give_vip_flag_,
@@ -74,7 +75,7 @@
 		vip_group_id_,give_vip_group_id_,practice_group_id_,give_practice_group_id_,return_fee_,member_order_id_,
 		                                  give_member_order_id_,teacher_id_,actual_price_,add_memo_,cut_memo_,tenant_id_,give_coupon_id_,
 		total_course_num_,total_give_course_num_,sub_course_num_,sub_give_course_num_,sub_no_course_price_,single_course_time_,
-		                                  give_single_course_time_,category_id_,give_category_id_)
+		                                  give_single_course_time_,category_id_,give_category_id_,calender_id_)
 		VALUES
 		<foreach collection="activityUserMappers" item="item" separator=",">
 			(#{item.activityId},#{item.userId},#{item.vipFlag},#{item.giveVipFlag},#{item.practiceFlag},
@@ -83,13 +84,16 @@
 			 #{item.memberOrderId},#{item.giveMemberOrderId},#{item.teacherId},#{item.actualPrice},#{item.addMemo},#{item.cutMemo},
 			 #{item.tenantId},#{item.giveCouponId},#{item.totalCourseNum},#{item.totalGiveCourseNum},#{item.subCourseNum},
 			 #{item.subGiveCourseNum},#{item.subNoCoursePrice},#{item.singleCourseTime},#{item.giveSingleCourseTime},
-			 #{item.categoryId},#{item.giveCategoryId})
+			 #{item.categoryId},#{item.giveCategoryId},#{item.calenderId})
 		</foreach>
 	</insert>
     <!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ActivityUserMapper">
 		UPDATE activity_user_mapper
 		<set>
+			<if test="calenderId != null">
+				calender_id_ = #{calenderId},
+			</if>
 			<if test="singleCourseTime != null">
 				single_course_time_ = #{singleCourseTime},
 			</if>
@@ -528,28 +532,28 @@
 		       give_practice_group_id_,actual_price_,sub_no_course_price_
 		from activity_user_mapper aum
 		WHERE aum.user_id_ IN
-		<foreach collection="studentIdList" item="userId" open="(" separator="," close=")">
+		<foreach collection="dto.studentIdList" item="userId" open="(" separator="," close=")">
 			#{userId}
 		</foreach>
-		and aum.single_course_time_ = #{classMinutes} and return_fee_ = 0 and aum.sub_course_num_ > 0
-		<if test="categoryId != null">
-			AND aum.category_id_ = #{categoryId}
+		and aum.single_course_time_ = #{dto.classMinutes} and return_fee_ = 0 and aum.sub_course_num_ > 0
+		<if test="dto.categoryId != null">
+			AND aum.category_id_ = #{dto.categoryId}
 		</if>
-		<if test="categoryId == null">
+		<if test="dto.categoryId == null">
 			AND aum.category_id_ IS NULL
 		</if>
 		UNION ALL
 		select aum.id_,give_category_id_ category_id_, user_id_,sub_give_course_num_ sub_course_num_,vip_group_id_, give_vip_group_id_, practice_group_id_, give_practice_group_id_,0 actual_price_,0 sub_no_course_price_
 		from activity_user_mapper aum
 		WHERE aum.user_id_ IN
-		<foreach collection="studentIdList" item="userId" open="(" separator="," close=")">
+		<foreach collection="dto.studentIdList" item="userId" open="(" separator="," close=")">
 			#{userId}
 		</foreach>
-		and aum.give_single_course_time_ = #{classMinutes} and return_fee_ = 0 and aum.sub_give_course_num_ > 0
-		<if test="categoryId != null">
-			AND aum.give_category_id_ = #{categoryId}
+		and aum.give_single_course_time_ = #{dto.classMinutes} and return_fee_ = 0 and aum.sub_give_course_num_ > 0
+		<if test="dto.categoryId != null">
+			AND aum.give_category_id_ = #{dto.categoryId}
 		</if>
-		<if test="categoryId == null">
+		<if test="dto.categoryId == null">
 			AND aum.give_category_id_ IS NULL
 		</if>
 

+ 71 - 0
mec-biz/src/main/resources/config/mybatis/CloudTeacherFreeCourseMapper.xml

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.CloudTeacherFreeCourseDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.CloudTeacherFreeCourse" id="CloudTeacherFreeCourse">
+		<result column="id_" property="id" />
+		<result column="course_id_" property="courseId" />
+		<result column="calender_id_" property="calenderId" />
+		<result column="cost_" property="cost" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="CloudTeacherFreeCourse" >
+		SELECT * FROM cloud_teacher_free_course WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="CloudTeacherFreeCourse">
+		SELECT * FROM cloud_teacher_free_course ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CloudTeacherFreeCourse" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO cloud_teacher_free_course (id_,course_id_,cost_,calender_id_,create_time_,update_time_)
+		VALUES(#{id},#{courseId},#{cost},#{calenderId},NOW(),NOW())
+	</insert>
+    <insert id="batchInsert">
+		insert into cloud_teacher_free_course (course_id_, cost_,calender_id_, create_time_, update_time_)
+		SELECT cs.id_,CASE WHEN oct.id_ IS NULL THEN oct1.price_ ELSE oct.price_ END cost_,#{calenderId},NOW(),NOW() FROM course_schedule cs
+		left join organ_course_type_original_cost oct ON oct.course_type_ = cs.type_ AND oct.organ_id_ = cs.organ_id_
+		left join organ_course_type_original_cost oct1 ON oct1.course_type_ = cs.type_ AND oct1.organ_id_ = 0
+		where FIND_IN_SET(cs.id_,#{scheduleIdList})
+		GROUP BY cs.id_
+	</insert>
+
+    <!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.CloudTeacherFreeCourse">
+		UPDATE cloud_teacher_free_course <set>
+		<if test="cost != null">
+		cost_ = #{cost},
+		</if>
+		<if test="updateTime != null">
+		update_time_ = #{updateTime},
+		</if>
+		<if test="courseId != null">
+		course_id_ = #{courseId},
+		</if>
+		</set> WHERE id_ = #{id}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM cloud_teacher_free_course WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="CloudTeacherFreeCourse" parameterType="map">
+		SELECT * FROM cloud_teacher_free_course ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM cloud_teacher_free_course
+	</select>
+</mapper>

+ 7 - 12
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml

@@ -11,6 +11,7 @@
         <result column="level_" property="level"/>
         <result column="time_" property="time"/>
         <result column="amount_" property="amount"/>
+        <result column="operating_amount_" property="operatingAmount"/>
         <result column="refund_amount_" property="refundAmount"/>
         <result column="status_" property="status"/>
         <result column="start_time_" property="startTime"/>
@@ -34,6 +35,7 @@
         <result column="level_" property="cloudTeacherOrder.level"/>
         <result column="time_" property="cloudTeacherOrder.time"/>
         <result column="amount_" property="cloudTeacherOrder.amount"/>
+        <result column="operating_amount_" property="cloudTeacherOrder.operatingAmount"/>
         <result column="refund_amount_" property="cloudTeacherOrder.refundAmount"/>
         <result column="status_" property="cloudTeacherOrder.status"/>
         <result column="start_time_" property="cloudTeacherOrder.startTime"/>
@@ -58,9 +60,9 @@
     </delete>
     <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.CloudTeacherOrder"
             useGeneratedKeys="true">
-        INSERT INTO cloud_teacher_order (organ_id_,student_id_, type_, level_, time_, amount_, refund_amount_, status_,
+        INSERT INTO cloud_teacher_order (organ_id_,student_id_, type_, level_, time_, amount_, operating_amount_, refund_amount_, status_,
         order_id_,platform_order_id_,start_time_,end_time_,remark_, create_time_, update_time_,music_group_id_,active_remark_,tenant_id_)
-        VALUES (#{organId},#{studentId}, #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{level}, #{time}, #{amount}, #{refundAmount},
+        VALUES (#{organId},#{studentId}, #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{level}, #{time}, #{amount}, #{operatingAmount}, #{refundAmount},
         #{status},#{orderId},#{platformOrderId},#{startTime},#{endTime}, #{remark}, NOW(), NOW(),#{musicGroupId},#{activeRemark},#{tenantId})
     </insert>
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.CloudTeacherOrder">
@@ -91,6 +93,9 @@
             <if test="amount != null">
                 amount_ = #{amount},
             </if>
+            <if test="operatingAmount != null">
+                operating_amount_ = #{operatingAmount},
+            </if>
             <if test="refundAmount != null">
                 refund_amount_ = #{refundAmount},
             </if>
@@ -220,16 +225,6 @@
         AND status_ IN (1,2)
     </select>
 
-    <select id="getStudentCloudTeacherOrder" resultMap="CloudTeacherOrder">
-        SELECT *
-        FROM cloud_teacher_order
-        WHERE student_id_ = #{studentId}
-        <if test="musicGroupId != null and musicGroupId != ''">
-          AND music_group_id_ = #{musicGroupId}
-        </if>
-          AND status_ IN (1, 2)
-    </select>
-
     <select id="queryByOrderId" resultMap="CloudTeacherOrder">
         SELECT cto.* FROM cloud_teacher_order cto
         WHERE order_id_ = #{orderId}

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

@@ -3179,6 +3179,9 @@
     <update id="updateEvaluate">
         UPDATE course_schedule SET evaluate_flag_ = 1 WHERE id_ = #{courseScheduleId}
     </update>
+    <update id="markFreeCourse">
+        UPDATE course_schedule SET member_flag_ = 1 WHERE FIND_IN_SET(id_,#{courseIds})
+    </update>
 
     <select id="getStudentCourseScheduleNum" resultMap="com.ym.mec.biz.dal.dao.PracticeGroupDao.courseGroupExport">
         SELECT COUNT(*) total_class_times_,cssp.user_id_ student_id_

+ 5 - 5
mec-biz/src/main/resources/config/mybatis/FinancialExpenditureMapper.xml

@@ -46,10 +46,10 @@
             keyColumn="id"
             keyProperty="id">
         INSERT INTO financial_expenditure (batch_no_, financial_process_no_, dingtalk_process_no_,
-                                           organ_id_, cooperation_organ_id_, apply_user_, amount_, item_detail_,
+                                           process_id_,organ_id_, cooperation_organ_id_, apply_user_, apply_user_id_, amount_, item_detail_,
                                            payment_time_, cause_, create_time_, update_time_, fee_project_, type_, tenant_id_)
-        VALUES (#{batchNo}, #{financialProcessNo}, #{dingtalkProcessNo}, #{organId}, #{cooperationOrganId},
-                #{applyUser}, #{amount},
+        VALUES (#{batchNo}, #{financialProcessNo}, #{dingtalkProcessNo},#{processId}, #{organId}, #{cooperationOrganId},
+                #{applyUser}, #{applyUserId}, #{amount},
                 #{itemDetail}, #{paymentTime}, #{cause}, now(), now(),
                 #{feeProject,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
                 #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{tenantId})
@@ -59,10 +59,10 @@
             keyColumn="id"
             keyProperty="id">
         INSERT INTO financial_expenditure (batch_no_,financial_process_no_,dingtalk_process_no_,
-        organ_id_,cooperation_organ_id_,apply_user_,amount_,item_detail_,payment_time_,cause_,create_time_,update_time_,fee_project_,type_,tenant_id_)
+        process_id_,organ_id_,cooperation_organ_id_,apply_user_,amount_,item_detail_,payment_time_,cause_,create_time_,update_time_,fee_project_,type_,tenant_id_)
         VALUES
         <foreach collection="financialExpenditures" item="item" separator=",">
-            (#{item.batchNo},#{item.financialProcessNo},#{item.dingtalkProcessNo},#{item.organId},
+            (#{item.batchNo},#{item.financialProcessNo},#{item.dingtalkProcessNo},#{item.organId},#{item.processId},
             #{item.cooperationOrganId},#{item.applyUser},#{item.amount},
             #{item.itemDetail},#{item.paymentTime},#{item.cause},now(),now(),
             #{item.feeProject,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},

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

@@ -229,6 +229,9 @@
             <if test="musicalInstrumentsProvideStatus != null">
                 musical_instruments_provide_status_ = #{musicalInstrumentsProvideStatus},
             </if>
+            <if test="musicalInstrumentsProvideTime != null and musicalInstrumentsProvideTime != ''">
+                musical_instruments_provide_time_ = #{musicalInstrumentsProvideTime},
+            </if>
             <if test="memberCourseShowFlag != null">
                 member_course_show_flag_ = #{memberCourseShowFlag},
             </if>

+ 2 - 20
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderMapper.xml

@@ -59,34 +59,16 @@
         actual_num_,memo_,is_give_music_network_,create_time_,update_time_,payment_valid_start_date_,payment_valid_end_date_,
         payment_pattern_,payment_type_,payment_amount_,batch_no_,audit_memo_,operator_,attribute1_,
          attribute2_,student_ids_,member_payment_amount_,member_rank_setting_id_,member_valid_date_
-         ,original_member_payment_amount_,current_total_amount_,original_total_amount_,tenant_id_,organ_id_)
+         ,original_member_payment_amount_,current_total_amount_,original_total_amount_,tenant_id_,organ_id_,cloud_teacher_payment_flag_)
         VALUES(#{musicGroupId},#{musicGroupOrganizationCourseSettingId},#{payUserType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
         #{rejectReason},#{startPaymentDate},#{deadlinePaymentDate},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
         #{expectNum},#{actualNum},#{memo},#{isGiveMusicNetwork},now(),now(),
         #{paymentValidStartDate},#{paymentValidEndDate},#{paymentPattern},#{paymentType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
         #{paymentAmount},#{batchNo},#{auditMemo},#{operator},#{attribute1},#{attribute2},#{studentIds},
                #{memberPaymentAmount},#{memberRankSettingId},#{memberValidDate},#{originalMemberPaymentAmount},
-               #{currentTotalAmount},#{originalTotalAmount},#{tenantId},#{organId})
+               #{currentTotalAmount},#{originalTotalAmount},#{tenantId},#{organId},#{cloudTeacherPaymentFlag})
     </insert>
 
-    <insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender" useGeneratedKeys="true"
-            keyColumn="id_" keyProperty="id">
-        INSERT INTO music_group_payment_calender
-        (music_group_id_,music_group_organization_course_settings_id_,pay_user_type_,reject_reason_,start_payment_date_,deadline_payment_date_,status_,expect_num_,
-        actual_num_,memo_,is_give_music_network_,create_time_,update_time_,payment_valid_start_date_,payment_valid_end_date_,payment_pattern_,payment_amount_,
-        payment_type_,batch_no_,audit_memo_,operator_,attribute1_,attribute2_,student_ids_,
-         member_payment_amount_,member_rank_setting_id_,member_valid_date_,original_member_payment_amount_
-        ,current_total_amount_,original_total_amount_,tenant_id_,organ_id_)
-        VALUES
-        <foreach collection="list" item="item" index="index" separator=",">
-        (#{item.musicGroupId},#{item.musicGroupOrganizationCourseSettingId},#{item.payUserType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{item.rejectReason},#{item.startPaymentDate},#{item.deadlinePaymentDate},#{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-        #{item.expectNum},#{item.actualNum},#{item.memo},#{item.isGiveMusicNetwork},now(),now(),
-        #{item.paymentValidStartDate},#{item.paymentValidEndDate},#{item.paymentPattern},#{item.paymentAmount},#{item.paymentType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-        #{item.batchNo},#{item.auditMemo},#{item.operator},#{item.attribute1},#{item.attribute2},
-         #{item.studentIds},#{item.memberPaymentAmount},#{item.memberRankSettingId},#{item.memberValidDate},#{item.originalMemberPaymentAmount},
-         #{item.currentTotalAmount},#{item.originalTotalAmount},#{item.tenantId},#{item.organId})
-        </foreach>
-    </insert>
 
     <!-- 根据主键查询一条记录 -->
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender">

+ 7 - 4
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentStudentCourseDetailMapper.xml

@@ -16,6 +16,7 @@
         <result column="course_current_price_" property="courseCurrentPrice"/>
         <result column="total_course_minutes_" property="totalCourseMinutes"/>
         <result column="used_course_minutes_" property="usedCourseMinutes"/>
+        <result column="cloud_teacher_payment_flag_" property="cloudTeacherPaymentFlag"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
         <result column="tenant_id_" property="tenantId"/>
@@ -43,23 +44,25 @@
         INSERT INTO music_group_payment_student_course_detail
         (music_group_payment_calender_id_, music_group_payment_calender_detail_id_, user_id_, course_type_,
          total_course_minutes_, used_course_minutes_, create_time_, update_time_, course_original_price_,
-         course_current_price_, tenant_id_)
+         course_current_price_, tenant_id_,cloud_teacher_payment_flag_)
         VALUES (#{musicGroupPaymentCalenderId}, #{musicGroupPaymentCalenderDetailId}, #{userId},
                 #{courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{totalCourseMinutes},
                 #{usedCourseMinutes},
-                NOW(), NOW(), #{courseOriginalPrice}, #{courseCurrentPrice}, #{tenantId})
+                NOW(), NOW(), #{courseOriginalPrice}, #{courseCurrentPrice}, #{tenantId},#{cloudTeacherPaymentFlag})
     </insert>
 
     <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
         INSERT INTO music_group_payment_student_course_detail
         (music_group_payment_calender_id_,music_group_payment_calender_detail_id_,user_id_,
-        course_type_,total_course_minutes_,used_course_minutes_,create_time_,update_time_,course_original_price_,course_current_price_,tenant_id_)
+        course_type_,total_course_minutes_,used_course_minutes_,create_time_,update_time_,course_original_price_,
+         course_current_price_,tenant_id_,cloud_teacher_payment_flag_)
         VALUES
         <foreach collection="list" item="item" separator=",">
             (#{item.musicGroupPaymentCalenderId},#{item.musicGroupPaymentCalenderDetailId},
             #{item.userId},#{item.courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-            #{item.totalCourseMinutes},#{item.usedCourseMinutes},NOW(),NOW(),#{item.courseOriginalPrice},#{item.courseCurrentPrice},#{item.tenantId})
+            #{item.totalCourseMinutes},#{item.usedCourseMinutes},NOW(),NOW(),#{item.courseOriginalPrice},
+             #{item.courseCurrentPrice},#{item.tenantId},#{item.cloudTeacherPaymentFlag})
         </foreach>
     </insert>
 

+ 123 - 0
mec-biz/src/main/resources/config/mybatis/MusicMarginMapper.xml

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.MusicMarginDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.MusicMargin" id="MusicMargin">
+		<result column="id_" property="id" />
+		<result column="type_" property="type" />
+		<result column="date_" property="date" />
+		<result column="organ_" property="organ" />
+		<result column="school_" property="school" />
+		<result column="user_id_" property="userId" />
+		<result column="username_" property="username" />
+		<result column="init_" property="init" />
+		<result column="payment_" property="payment" />
+		<result column="refund_" property="refund" />
+		<result column="refund_flag_" property="refundFlag" />
+		<result column="balance_" property="balance" />
+		<result column="margin_type_" property="marginType" />
+		<result column="match_" property="match" />
+		<result column="memo_" property="memo" />
+		<result column="process_no_" property="processNo" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="MusicMargin" >
+		SELECT * FROM music_margin WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="MusicMargin">
+		SELECT * FROM music_margin ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicMargin" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO music_margin (id_,type_,date_,organ_,school_,user_id_,username_,init_,payment_,refund_,refund_flag_,balance_,margin_type_,match_,memo_,process_no_) VALUES(#{id},#{type},#{date},#{organ},#{school},#{userId},#{username},#{init},#{payment},#{refund},#{refundFlag},#{balance},#{marginType},#{match},#{memo},#{processNo})
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicMargin">
+		UPDATE music_margin <set>
+<if test="school != null">
+school_ = #{school},
+</if>
+<if test="id != null">
+id_ = #{id},
+</if>
+<if test="balance != null">
+balance_ = #{balance},
+</if>
+<if test="memo != null">
+memo_ = #{memo},
+</if>
+<if test="organ != null">
+organ_ = #{organ},
+</if>
+<if test="username != null">
+username_ = #{username},
+</if>
+<if test="refundFlag != null">
+refund_flag_ = #{refundFlag},
+</if>
+<if test="userId != null">
+user_id_ = #{userId},
+</if>
+<if test="payment != null">
+payment_ = #{payment},
+</if>
+<if test="refund != null">
+refund_ = #{refund},
+</if>
+<if test="init != null">
+init_ = #{init},
+</if>
+<if test="match != null">
+match_ = #{match},
+</if>
+<if test="processNo != null">
+process_no_ = #{processNo},
+</if>
+<if test="marginType != null">
+margin_type_ = #{marginType},
+</if>
+<if test="type != null">
+type_ = #{type},
+</if>
+<if test="date != null">
+date_ = #{date},
+</if>
+</set> WHERE id_ = #{id} 
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM music_margin WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="MusicMargin" parameterType="map">
+		SELECT * FROM music_margin
+		ORDER BY id_
+		<include refid="global.limit"/>
+	</select>
+	<sql id="queryPageSql">
+		<where>
+			<if test="refundFlag != null">
+				AND refund_flag_ = #{refundFlag}
+			</if>
+			<if test="search != null and search != ''">
+				AND (username_ LIKE CONCAT('%',#{search},'%') OR user_id_ = #{search})
+			</if>
+		</where>
+	</sql>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM music_margin
+	</select>
+</mapper>

+ 100 - 0
mec-biz/src/main/resources/config/mybatis/OperatingReportCloudMapper.xml

@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.OperatingReportCloudDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.OperatingReportCloud" id="OperatingReportCloud">
+		<result column="id_" property="id" />
+		<result column="organ_id_" property="organId" />
+		<result column="calender_id_" property="calenderId" />
+		<result column="month_flag_" property="monthFlag" />
+		<result column="start_date_" property="startDate" />
+		<result column="end_date_" property="endDate" />
+		<result column="cloud_price_" property="cloudPrice" />
+		<result column="course_price_" property="coursePrice" />
+		<result column="settlement_flag_" property="settlementFlag" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="OperatingReportCloud" >
+		SELECT * FROM operating_report_cloud WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="OperatingReportCloud">
+		SELECT * FROM operating_report_cloud ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.OperatingReportCloud" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO operating_report_cloud (organ_id_,calender_id_,start_date_,end_date_,cloud_price_,course_price_,settlement_flag_,month_flag_,create_time_,update_time_)
+		VALUES(#{organId},#{calenderId},#{startDate},#{endDate},#{cloudPrice},#{coursePrice},#{settlementFlag},#{monthFlag},NOW(),NOW())
+	</insert>
+	<insert id="batchInsert">
+		INSERT INTO operating_report_cloud (organ_id_,calender_id_,month_flag_,create_time_,update_time_) VALUES
+		<foreach collection="operatingReportClouds" separator="," item="item">
+			(#{item.organId},#{item.calenderId},#{item.monthFlag},NOW(),NOW())
+		</foreach>
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.OperatingReportCloud">
+		UPDATE operating_report_cloud <set>
+		<if test="startDate != null">
+		start_date_ = #{startDate},
+		</if>
+		<if test="endDate != null">
+		end_date_ = #{endDate},
+		</if>
+		<if test="updateTime != null">
+		update_time_ = #{updateTime},
+		</if>
+		<if test="cloudPrice != null">
+		cloud_price_ = #{cloudPrice},
+		</if>
+		<if test="settlementFlag != null">
+		settlement_flag_ = #{settlementFlag},
+		</if>
+		<if test="coursePrice != null">
+		course_price_ = #{coursePrice},
+		</if>
+		</set> WHERE id_ = #{id}
+	</update>
+    <update id="settlementCalender">
+		UPDATE operating_report_cloud orc
+		LEFT JOIN cloud_teacher_free_course ctf ON ctf.calender_id_ = orc.calender_id_
+		SET orc.settlement_flag_ = 1
+		WHERE orc.month_flag_ = 0 AND orc.settlement_flag_ = 0 AND DATE_FORMAT(orc.start_date_,'%Y-%m') = #{month};
+	</update>
+	<update id="settlementCurrentCalender">
+		UPDATE operating_report_cloud orc
+		SET orc.settlement_flag_ = 1
+		WHERE orc.month_flag_ = 1 AND orc.settlement_flag_ = 0 AND DATE_FORMAT(orc.create_time_,'%Y-%m') = #{month};
+	</update>
+
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM operating_report_cloud WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="OperatingReportCloud" parameterType="map">
+		SELECT * FROM operating_report_cloud ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM operating_report_cloud
+	</select>
+	<select id="findByCalenderId" resultMap="OperatingReportCloud">
+		SELECT * FROM operating_report_cloud WHERE calender_id_ = #{calenderId} AND month_flag_ = 0 LIMIT 1
+	</select>
+	<select id="findByCurrentCalenderId" resultMap="OperatingReportCloud">
+		SELECT * FROM operating_report_cloud WHERE calender_id_ = #{calenderId} AND month_flag_ = 1 AND DATE_FORMAT(create_time_,'%Y-%m') = DATE_FORMAT(NOW(),'%Y-%m') LIMIT 1
+	</select>
+</mapper>

+ 335 - 0
mec-biz/src/main/resources/config/mybatis/OperatingReportNewMapper.xml

@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.OperatingReportNewDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.OperatingReportNew" id="OperatingReportNew">
+		<result column="id_" property="id" />
+		<result column="principal_" property="principal" />
+		<result column="organ_name_" property="organName" />
+		<result column="organ_id_" property="organId" />
+		<result column="sale_amount_" property="saleAmount" />
+		<result column="service_amount_" property="serviceAmount" />
+		<result column="cloud_amount_" property="cloudAmount" />
+		<result column="course_amount_" property="courseAmount" />
+		<result column="maintenance_amount_" property="maintenanceAmount" />
+		<result column="business_refund_" property="businessRefund" />
+		<result column="total_income_" property="totalIncome" />
+		<result column="sale_cost_" property="saleCost" />
+		<result column="fixed_costs_" property="fixedCosts" />
+		<result column="variable_costs_" property="variableCosts" />
+		<result column="internal_settlement_" property="internalSettlement" />
+		<result column="total_cost_" property="totalCost" />
+		<result column="quasi_discretionary_profit_" property="quasiDiscretionaryProfit" />
+		<result column="prepaid_fee_" property="prepaidFee" />
+		<result column="cloud_prepaid_fee_" property="cloudPrepaidFee" />
+		<result column="course_prepaid_fee_" property="coursePrepaidFee" />
+		<result column="sale_prepaid_fee_" property="salePrepaidFee" />
+		<result column="other_prepaid_fee_" property="otherPrepaidFee" />
+		<result column="prepayments_" property="prepayments" />
+		<result column="receivables_" property="receivables" />
+		<result column="payable_" property="payable" />
+		<result column="month_" property="month" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="OperatingReportNew" >
+		SELECT * FROM operating_report_new WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="OperatingReportNew">
+		SELECT * FROM operating_report_new ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.OperatingReportNew" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO operating_report_new (id_,principal_,organ_id_,organ_name_,sale_amount_,service_amount_,cloud_amount_,course_amount_,maintenance_amount_,
+		                                  business_refund_,total_income_,sale_cost_,fixed_costs_,variable_costs_,internal_settlement_,
+		                                  total_cost_,quasi_discretionary_profit_,prepaid_fee_,cloud_prepaid_fee_,course_prepaid_fee_,sale_prepaid_fee_,other_prepaid_fee_
+		                                  ,prepayments_,receivables_,payable_,month_)
+		VALUES(#{id},#{principal},#{organId},#{organName},#{saleAmount},#{serviceAmount},#{cloudAmount},#{courseAmount},#{maintenanceAmount},
+		       #{businessRefund},#{totalIncome},#{saleCost},#{fixedCosts},#{variableCosts},#{internalSettlement},
+		       #{totalCost},#{quasiDiscretionaryProfit},#{prepaidFee},#{cloudPrepaidFee},#{coursePrepaidFee},#{salePrepaidFee},#{otherPrepaidFee},
+		       #{prepayments},#{receivables},#{payable},#{month})
+	</insert>
+	<insert id="batchInsert">
+		INSERT INTO operating_report_new (principal_,organ_id_,organ_name_,sale_amount_,service_amount_,cloud_amount_,course_amount_,maintenance_amount_,business_refund_,total_income_,sale_cost_,
+		                                  fixed_costs_,variable_costs_,internal_settlement_,total_cost_,quasi_discretionary_profit_,
+		                                  prepaid_fee_,cloud_prepaid_fee_,course_prepaid_fee_,sale_prepaid_fee_,other_prepaid_fee_,prepayments_,receivables_,payable_,month_)
+		VALUES
+		<foreach collection="operatingList" item="bean" separator=",">
+			(#{bean.principal},#{bean.organId},#{bean.organName},#{bean.saleAmount},#{bean.serviceAmount},#{bean.cloudAmount},#{bean.courseAmount},#{bean.maintenanceAmount},#{bean.businessRefund},#{bean.totalIncome},
+			 #{bean.saleCost},#{bean.fixedCosts},#{bean.variableCosts},#{bean.internalSettlement},#{bean.totalCost},#{bean.quasiDiscretionaryProfit},
+			 #{bean.prepaidFee},#{bean.cloudPrepaidFee},#{bean.coursePrepaidFee},#{bean.salePrepaidFee},#{bean.otherPrepaidFee},
+			 #{bean.prepayments},#{bean.receivables},#{bean.payable},#{bean.month})
+		</foreach>
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.OperatingReportNew">
+		UPDATE operating_report_new <set>
+		<if test="saleAmount != null">
+		sale_amount_ = #{saleAmount},
+		</if>
+		<if test="prepaidFee != null">
+		prepaid_fee_ = #{prepaidFee},
+		</if>
+		<if test="serviceAmount != null">
+		service_amount_ = #{serviceAmount},
+		</if>
+		<if test="payable != null">
+		payable_ = #{payable},
+		</if>
+		<if test="businessRefund != null">
+		business_refund_ = #{businessRefund},
+		</if>
+		<if test="totalCost != null">
+		total_cost_ = #{totalCost},
+		</if>
+		<if test="totalIncome != null">
+		total_income_ = #{totalIncome},
+		</if>
+		<if test="quasiDiscretionaryProfit != null">
+		quasi_discretionary_profit_ = #{quasiDiscretionaryProfit},
+		</if>
+		<if test="fixedCosts != null">
+		fixed_costs_ = #{fixedCosts},
+		</if>
+		<if test="internalSettlement != null">
+		internal_settlement_ = #{internalSettlement},
+		</if>
+		<if test="prepayments != null">
+		prepayments_ = #{prepayments},
+		</if>
+		<if test="month != null">
+		month_ = #{month},
+		</if>
+		<if test="variableCosts != null">
+		variable_costs_ = #{variableCosts},
+		</if>
+		<if test="organName != null">
+		organ_name_ = #{organName},
+		</if>
+		<if test="saleCost != null">
+		sale_cost_ = #{saleCost},
+		</if>
+		<if test="receivables != null">
+		receivables_ = #{receivables},
+		</if>
+		<if test="principal != null">
+		principal_ = #{principal},
+		</if>
+		</set> WHERE id_ = #{id}
+	</update>
+    <update id="initCloudStartTime">
+		update operating_report_cloud orc
+		left join (
+		select orc.calender_id_,MIN(cs.class_date_) start_date_ from operating_report_cloud orc
+		LEFT JOIN cloud_teacher_free_course ctf ON ctf.calender_id_ = orc.calender_id_
+		LEFT JOIN course_schedule cs ON cs.id_ = ctf.course_id_
+		where orc.month_flag_ = false AND orc.settlement_flag_ = false AND orc.start_date_ IS NULL
+		AND cs.class_date_ &lt;= #{lastDay}
+		group by orc.calender_id_) mc ON orc.calender_id_ = mc.calender_id_
+		LEFT JOIN (select calender_id_,DATE_ADD(
+		DATE_ADD(create_time_, interval CASE WHEN period_ = 'YEAR_HALF' THEN 6
+		WHEN period_ = 'YEAR' THEN 12
+		WHEN period_ = 'QUARTERLY' THEN 3 ELSE num_ END MONTH),interval 1 DAY) end_date_
+		from music_group_payment_calender_member order by id_ DESC) mgpcm
+		ON mc.calender_id_ = mgpcm.calender_id_
+		set orc.start_date_ = mc.start_date_,orc.end_date_ = mgpcm.end_date_
+		where orc.calender_id_ = mc.calender_id_
+	</update>
+
+    <!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM operating_report_new WHERE id_ = #{id} 
+	</delete>
+	<delete id="deleteByMonth">
+		DELETE FROM operating_report_new WHERE month_ = #{month}
+	</delete>
+	<sql id="queryPageSql">
+		<where>
+			<if test="organId != null and organId != ''">
+				AND FIND_IN_SET(organ_id_,#{organId})
+			</if>
+			<if test="date != null and date != ''">
+				AND month_ = #{date}
+			</if>
+		</where>
+	</sql>
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="OperatingReportNew" parameterType="map">
+		SELECT * FROM operating_report_new
+		<include refid="queryPageSql"/>
+		ORDER BY id_
+		<include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(id_) FROM operating_report_new
+		<include refid="queryPageSql"/>
+	</select>
+	<select id="initOperatingReport" resultMap="OperatingReportNew">
+		select id_ organ_id_,name_ organ_name_,#{month} month_ from organization where del_flag_ = 0 and tenant_id_ = 1
+	</select>
+	<select id="sumSellAmount" resultMap="OperatingReportNew">
+		select so.organ_id_,SUM(so.actual_amount_) sale_amount_,SUM(CASE WHEN so.status_ = 1 THEN 0 ELSE so.sell_cost_ * so.num_ END) sale_cost_ from sell_order so
+		left join student_payment_order spo ON spo.order_no_ = so.order_no_
+		left join music_group mg ON mg.id_ = spo.music_group_id_ AND spo.group_type_ = 'MUSIC'
+		LEFT JOIN organization o ON o.id_ = so.organ_id_
+		where (mg.musical_instruments_provide_status_ = 1 AND mg.musical_instruments_provide_time_ = #{month}) OR (DATE_FORMAT(so.create_ime_,'%Y-%m') = #{month} AND (mg.musical_instruments_provide_status_ IS NULL OR mg.musical_instruments_provide_status_ = 1))
+		group by so.organ_id_
+	</select>
+	<select id="sumCloudCourseAmount" resultType="java.util.Map">
+		SELECT cs.organ_id_ 'key',SUM(ctf.cost_) 'value' FROM cloud_teacher_free_course ctf
+		LEFT JOIN course_schedule cs ON cs.id_ = ctf.course_id_
+		where cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND cs.class_date_ BETWEEN #{firstDay} AND #{lastDay} group by cs.organ_id_;
+	</select>
+	<select id="sumCourseAmount" resultType="java.util.Map">
+		SELECT cs.organ_id_ 'key',SUM(cssp.actual_price_) 'value' FROM course_schedule cs
+		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+		left join organization o ON o.id_ = cs.organ_id_
+		where cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND cs.class_date_ BETWEEN #{firstDay} AND #{lastDay} group by cs.organ_id_;
+	</select>
+	<select id="sumPersonalCloudAmount" resultType="java.util.Map">
+		select cto.organ_id_ 'key',TRUNCATE(SUM(amount_ / TIMESTAMPDIFF(DAY,start_time_,end_time_) *
+		TIMESTAMPDIFF(DAY,CASE WHEN start_time_ &lt; #{firstDay} THEN #{firstDay} ELSE DATE_FORMAT(start_time_,'%Y-%m-%d') END,
+		CASE WHEN end_time_ > #{month} THEN #{lastDay} ELSE DATE_FORMAT(end_time_,'%Y-%m-%d') END)),2) 'value'
+		from cloud_teacher_order cto
+		where music_group_id_ IS NULL AND amount_ > 0 AND #{month} BETWEEN DATE_FORMAT(start_time_,'%Y-%m') AND DATE_FORMAT(end_time_,'%Y-%m') group by cto.organ_id_;
+	</select>
+	<select id="sumGroupCloudAmount" resultType="java.util.Map">
+		select orc.organ_id_ 'key',TRUNCATE(SUM(orc.cloud_price_ / TIMESTAMPDIFF(DAY,orc.start_date_,orc.end_date_) *
+		TIMESTAMPDIFF(DAY,CASE WHEN orc.start_date_ &lt; #{firstDay} THEN #{firstDay} ELSE orc.start_date_ END,
+		CASE WHEN orc.end_date_ > #{month} THEN #{lastDay} ELSE orc.end_date_ END)),2) 'value' from operating_report_cloud orc
+		where #{month} BETWEEN DATE_FORMAT(orc.start_date_,'%Y-%m') AND DATE_FORMAT(orc.end_date_,'%Y-%m') AND orc.start_date_  IS NOT NULL;
+	</select>
+	<select id="sumRefundAmount" resultType="java.util.Map">
+		select suc.organ_id_ 'key',SUM(amount_) 'value' from sys_user_cash_account_log suc
+		where DATE_FORMAT(suc.create_time_,'%Y-%m') = #{month} AND suc.amount_ > 0 group by suc.organ_id_;
+	</select>
+	<select id="sumVariableCosts" resultType="java.util.Map">
+		select fe.organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure fe
+		where DATE_FORMAT(fe.create_time_,'%Y-%m') = #{month} AND fee_project_ BETWEEN 6 AND 21 AND process_id_ = 28 group by fe.organ_id_;
+	</select>
+	<select id="sumFixedCosts" resultType="java.util.Map">
+		select fe.organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure fe
+		where DATE_FORMAT(fe.create_time_,'%Y-%m') = #{month} AND fee_project_ IN (1,2,4,5) AND process_id_ = 28 group by fe.organ_id_;
+	</select>
+	<select id="sumCloudPreAmount" resultType="java.util.Map">
+		select orc.organ_id_ 'key',TRUNCATE(SUM(operating_amount_ / TIMESTAMPDIFF(DAY,start_time_,end_time_) * TIMESTAMPDIFF(DAY,#{lastDay},end_time_)),2) 'value'
+		from cloud_teacher_order orc
+		where operating_amount_ > 0 AND DATE_FORMAT(end_time_,'%Y-%m') > #{month} group by orc.organ_id_;
+	</select>
+	<select id="sumGroupCloudPreAmount" resultType="java.util.Map">
+		select orc.organ_id_ 'key',TRUNCATE(SUM(orc.cloud_price_ / TIMESTAMPDIFF(DAY,orc.start_date_,orc.end_date_) * TIMESTAMPDIFF(DAY,#{lastDay},orc.end_date_)),2) 'value'
+		from operating_report_cloud orc
+		where DATE_FORMAT(orc.end_date_,'%Y-%m') > #{month} AND orc.cloud_price_ > 0 AND orc.month_flag_ = false group by orc.organ_id_;
+	</select>
+	<select id="sumGroupAmount" resultType="java.util.Map">
+		select orc.organ_id_ 'key',SUM(orc.cloud_price_) 'value'
+		from operating_report_cloud orc
+		where orc.cloud_price_ > 0 AND orc.month_flag_ = true AND orc.settlement_flag_ = false group by orc.organ_id_;
+	</select>
+	<select id="sumCloudCoursePreAmount" resultType="java.util.Map">
+		SELECT cs.organ_id_ 'key',SUM(ctf.cost_) 'value' FROM cloud_teacher_free_course ctf
+		LEFT JOIN course_schedule cs ON cs.id_ = ctf.course_id_
+		where cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND cs.pre_course_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_) AND cs.class_date_ > #{lastDay}
+		group by cs.organ_id_;
+	</select>
+	<select id="sumCoursePreAmount" resultType="java.util.Map">
+		SELECT cs.organ_id_ 'key',SUM(cssp.actual_price_) 'value' FROM course_schedule cs
+		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+		where cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND cs.pre_course_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_) AND cs.class_date_ > #{lastDay}
+		AND cs.group_type_ != 'MUSIC'
+		group by cs.organ_id_;
+	</select>
+	<select id="sumOtherPreAmount" resultType="java.util.Map">
+		select orc.organ_id_ 'key',SUM(orc.cloud_price_) 'value' from operating_report_cloud orc
+		where orc.course_price_ = 0 AND orc.month_flag_ = false AND orc.settlement_flag_ = false GROUP BY orc.organ_id_;
+	</select>
+	<select id="sumSalePreAmount" resultType="java.util.Map">
+		select mg.organ_id_ 'key',SUM(so.actual_amount_) 'value' from sell_order so
+		left join student_payment_order spo ON spo.order_no_ = so.order_no_
+		left join music_group mg ON mg.id_ = spo.music_group_id_ AND spo.group_type_ = 'MUSIC'
+		where mg.musical_instruments_provide_status_ = 0 AND so.actual_amount_ > 0
+		group by mg.organ_id_;
+	</select>
+	<select id="sumArrearsAmount" resultType="java.util.Map">
+		select a.organ_id_ 'key',SUM(a.amount_) 'value' FROM (
+		select SUM(mgpc.current_total_amount_) amount_,mgpc.organ_id_ from music_group_payment_calender_detail mgpcd
+		LEFT JOIN (select * from music_group_payment_student_course_detail where used_course_minutes_ > 0 group by music_group_payment_calender_id_,user_id_) mgpscd 			ON mgpscd.music_group_payment_calender_detail_id_ = mgpcd.id_
+		LEFT JOIN music_group_payment_calender mgpc ON mgpc.id_ = mgpscd.music_group_payment_calender_id_
+		WHERE mgpcd.payment_status_ = 'NON_PAYMENT' AND mgpscd.used_course_minutes_ > 0 AND mgpc.current_total_amount_ > 0
+		GROUP BY mgpscd.music_group_payment_calender_id_,mgpscd.user_id_) a
+		group by organ_id_
+	</select>
+	<select id="sumSchoolAmount" resultType="java.util.Map">
+		select mg.organ_id_ 'key',SUM(mg.amount_) 'value' from (
+		select mgpc.organ_id_,mgpc.current_total_amount_ - SUM(spro.service_amount_) - SUM(spro.sale_amount_) amount_ from (
+		select mgpc.* from music_group_payment_calender mgpc
+		left join music_group_payment_calender_detail mgpcd ON mgpc.id_ = mgpcd.music_group_payment_calender_id_
+		where mgpcd.id_ IS NOT NULL AND mgpc.pay_user_type_ = 'SCHOOL'
+		group by mgpc.id_) mgpc
+		left join student_payment_route_order spro ON spro.calender_id_ = mgpc.id_ AND spro.audit_status_ = 'PASS'
+		group by mgpc.id_) mg group by mg.organ_id_
+	</select>
+	<select id="sumMusicMargin" resultType="java.util.Map">
+		select mm.organ_id_ 'key',SUM(mm.balance_) 'value' from music_margin mm where mm.refund_flag_ = 0 group by mm.organ_id_;
+	</select>
+	<select id="sumInternalSettlement" resultType="java.util.Map">
+		select fe.organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure fe
+		where DATE_FORMAT(fe.create_time_,'%Y-%m') = #{month} AND fee_project_ = 22 AND process_id_ = 28 group by fe.organ_id_;
+	</select>
+	<select id="sumPrepayments" resultType="java.util.Map">
+		select fe.organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure fe
+		where DATE_FORMAT(fe.create_time_,'%Y-%m') = #{month} AND fee_project_ = 3 AND process_id_ = 28 group by fe.organ_id_;
+	</select>
+	<select id="sumActivityUserMapperAmount" resultType="java.util.Map">
+		SELECT mgpc.organ_id_ 'key',(SUM(CASE WHEN aum.sub_course_num_ > 0 AND aum.category_id_ != 8 THEN aum.sub_course_num_ ELSE 0 END) +
+							   SUM(CASE WHEN aum.sub_give_course_num_ > 0 AND aum.give_category_id_ != 8 THEN aum.sub_give_course_num_ ELSE 0 END)) *
+									CASE WHEN oct.id_ IS NULL THEN oct1.price_ ELSE oct.price_ END 'value'
+		FROM activity_user_mapper aum
+				 LEFT JOIN music_group_payment_calender mgpc ON mgpc.id_ = aum.calender_id_
+				 left join organ_course_type_original_cost oct ON oct.course_type_ = 'VIP' AND oct.organ_id_ = mgpc.organ_id_
+				 left join organ_course_type_original_cost oct1 ON oct1.course_type_ = 'VIP' AND oct1.organ_id_ = 0
+		WHERE aum.calender_id_ IS NOT NULL AND aum.return_fee_ = 0
+		  AND ((aum.sub_course_num_ > 0 AND aum.category_id_ != 8) OR (aum.sub_give_course_num_ > 0 AND aum.give_category_id_ != 8))
+		GROUP BY mgpc.organ_id_
+	</select>
+	<select id="sumMusicCourseAmount" resultType="java.util.Map">
+		select mg.organ_id_ 'key',SUM(sr.surplus_course_fee_) 'value' from student_registration sr
+		left join music_group mg ON mg.id_ = sr.music_group_id_
+		where sr.surplus_course_fee_ > 0
+		group by mg.organ_id_;
+	</select>
+	<select id="sumSubActivityUserMapperAmount" resultType="java.util.Map">
+		select su.organ_id_ 'key',SUM(aum.sub_no_course_price_) 'value' from activity_user_mapper aum
+		LEFT JOIN sys_user su ON su.id_ = aum.user_id_
+		where aum.return_fee_ = 0 AND aum.sub_no_course_price_ > 0
+		group by su.organ_id_
+	</select>
+	<select id="sumImportServerOrderAmount" resultType="java.util.Map">
+		select spo.organ_id_ 'key',SUM(spro.service_amount_) 'value' from student_payment_order spo
+		LEFT JOIN student_payment_route_order spro ON spro.order_no_ = spo.order_no_
+		where spo.group_type_ = 'OUTORDER' AND DATE_FORMAT(spo.create_time_,'%Y-%m') = #{month}
+		GROUP BY spo.organ_id_;
+	</select>
+	<select id="sumWaitCloudPreAmount" resultType="java.util.Map">
+		select cto.organ_id_ 'key',SUM(cto.operating_amount_) 'value' from cloud_teacher_order cto
+		where cto.status_ = 1 AND cto.operating_amount_ > 0
+		group by cto.organ_id_;
+	</select>
+	<select id="sumMaintenanceAmount" resultType="java.util.Map">
+		select spo.organ_id_ 'key',SUM(spod.price_) 'value' from student_payment_order_detail spod
+		left join student_payment_order spo ON spo.id_ = spod.payment_order_id_
+		where spod.type_ = 'MAINTENANCE' AND DATE_FORMAT(spod.create_time_,'%Y-%m') = #{month} AND spo.status_ = 'SUCCESS'
+		group by spo.organ_id_
+	</select>
+</mapper>

+ 24 - 0
mec-biz/src/main/resources/config/mybatis/OrganCourseTypeOriginalCostMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.OrganCourseTypeOriginalCostDao">
+    <resultMap id="OperatingReport" type="com.ym.mec.biz.dal.entity.OrganCourseTypeOriginalCost">
+        <id column="id_" property="id"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="course_type_" property="courseType"/>
+        <result column="price_" property="price"/>
+        <result column="tenant_id_" property="tenantId"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        id_, organ_id_, course_type_, price_
+    </sql>
+    <select id="findByOrganIdAndCourseType" resultType="java.math.BigDecimal">
+        select price_ from organ_course_type_original_cost
+        where (organ_id_ = #{organId} OR organ_id_ = 0) AND course_type_ = #{courseType} limit 1
+    </select>
+    <select id="getCourseCostPrice" resultType="java.math.BigDecimal">
+        SELECT SUM(CASE WHEN oct.id_ IS NULL THEN oct1.price_ ELSE oct.price_ END cost_) FROM course_schedule cs
+        left join organ_course_type_original_cost oct ON oct.course_type_ = cs.type_ AND oct.organ_id_ = cs.organ_id_
+        left join organ_course_type_original_cost oct1 ON oct1.course_type_ = cs.type_ AND oct1.organ_id_ = 0
+        where FIND_IN_SET(cs.id_,#{courseIds})
+    </select>
+</mapper>

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

@@ -376,7 +376,8 @@
         a.vip_times_,
         a.buy_practice_times_,
         a.music_netWork_times_,
-        p.free_practice_times_
+        p.free_practice_times_,
+        su.phone_
         FROM student s
         LEFT JOIN sys_user su ON s.user_id_ = su.id_
         LEFT JOIN sys_user tsu ON tsu.id_ = s.teacher_id_

+ 30 - 2
mec-biz/src/main/resources/config/mybatis/StudentPreVisitMapper.xml

@@ -39,12 +39,40 @@
 		-->
 		INSERT INTO student_pre_visit (id_,organ_id_,student_id_,student_name,teacher_id_,teacher_name,phone,orgName,tenant_id_,is_visit,visit_cycle) VALUES(#{id},#{organId},#{studentId},#{studentName},#{teacherId},#{teacherName},#{phone},#{orgname},#{tenantId},#{isVisit},#{visitCycle})
 	</insert>
-	<insert id="batchInsert" parameterType="java.util.ArrayList">
+	<insert id="batchInsert" parameterType="java.util.List">
 		INSERT INTO student_pre_visit (id_,organ_id_,student_id_,student_name,teacher_id_,teacher_name,phone,orgName,tenant_id_,is_visit,visit_cycle) VALUES
-		<foreach collection="list" item="item" index="index" separator=",">
+		<foreach collection="studentPreVisits" item="item" index="index" separator=",">
 			(#{item.id},#{item.organId},#{item.studentId},#{item.studentName},#{item.teacherId},#{item.teacherName},#{item.phone},#{item.orgname},#{item.tenantId},#{item.isVisit},#{item.visitCycle})
 		</foreach>
 	</insert>
+	<update id="updateVisit">
+			UPDATE student_pre_visit set is_visit = 1 where visit_cycle =#{visitCycle} and student_id_ = #{studentId}
+	</update>
+
+	<select id="getPageList" resultMap="StudentPreVisit">
+		SELECT sv.* FROM
+        student_pre_visit sv
+		<include refid="queryPageSql"/>
+	</select>
+
+	<sql id="queryPageSql">
+		<where>
+
+			<if test="student !=null  and student != ''" >
+				AND sv.student_id_ = #{student} OR sv.student_name =#{student} or sv.phone = #{student}
+			</if>
+			<if test="organId != null and organId != ''">
+				AND FIND_IN_SET(sv.organ_id_,#{organId})
+			</if>
+			<if test="isVisit != null and isVisit != ''">
+				AND sv.is_visit = #{isVisit}
+			</if>
+			<if test="visitCycle != null and visitCycle != ''">
+				AND sv.visit_cycle = #{visitCycle}
+			</if>
+
+		</where>
+	</sql>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentPreVisit">

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

@@ -329,7 +329,7 @@
 		<include refid="queryStatisticsSql"/>
 	</select>
 	<select id="queryStatistics" resultMap="StudentStatisticsDto">
-		SELECT *,ss.not_start_course_fee_ + ss.no_course_fee_ preCourseFee,
+		SELECT sbi.*,ss.not_start_course_fee_ + ss.no_course_fee_ preCourseFee,
 			CASE WHEN (ss.no_schedule_num_ > 0 OR ss.sub_course_num_ > 0) AND (ss.lately_year_course_consumer_ > 0 OR ss.over_course_num_ &lt;= 0) THEN '在读'
 			WHEN ss.over_course_num_ > 0 AND (ss.sub_course_num_ > 0 OR ss.no_schedule_num_ > 0) AND ss.lately_year_course_consumer_ &lt;= 0 THEN '沉睡'
 			WHEN ss.over_course_num_ > 0 AND ss.sub_course_num_ &lt;= 0 AND ss.no_schedule_num_ &lt;= 0 AND suca.course_balance_ &lt;= 0 THEN '流失'

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

@@ -155,9 +155,13 @@
             <if test="endTime != null">
                 AND sv.visit_time_ &lt;= #{endTime}
             </if>
-            <if test="visitCyCle != null and visitCyCle != ''">
+            <if test="visitCyCle != null ">
                 AND CONVERT (VARCHAR,sv.visit_time,120) LIKE CONCAT('%',#{visitCyCle},'%')
             </if>
+            <if test="probStatus != null">
+                AND sv.prob_status = #{probStatus}
+            </if>
+
         </where>
     </sql>
     <select id="queryCount" resultType="int">

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/VipGroupCategoryMapper.xml

@@ -116,4 +116,7 @@
 			#{id}
 		</foreach>
 	</select>
+	<select id="getTheory" resultMap="VipGroupCategory">
+		SELECT * FROM vip_group_category WHERE del_flag_ = 0 AND music_theory_ = 1 LIMIT 1
+	</select>
 </mapper>

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

@@ -278,6 +278,10 @@ public interface TaskRemoteService {
     @GetMapping("task/pushStartTrain")
     void pushStartTrain();
 
+    //新经营报表统计
+    @GetMapping("task/operatingReportMonth")
+    void operatingReportMonth();
+
     @GetMapping("task/findAllWaitVisit")
     void findAllWaitVisit();
 }

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

@@ -321,6 +321,11 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
     }
 
     @Override
+    public void operatingReportMonth() {
+        logger.error("新经营报表统计失败");
+    }
+
+    @Override
     public void findAllWaitVisit() {
         logger.error("查询所有学员并生成未回访记录失败");
     }

+ 7 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/constant/CommonConstants.java

@@ -38,4 +38,11 @@ public interface CommonConstants {
 	 * @return
 	 */
 	Integer DECIMAL_FINAL_PLACE = 2;
+
+	/***
+	 * redis缓存分隔符
+	 * @author liweifan
+	 * @updateTime 2022/3/28 16:29
+	 */
+	String REDIS_SPLIT = ":";
 }

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor