Procházet zdrojové kódy

Merge branch 'master' of http://git.dayaedu.com/yonge/edu-saas

zouxuan před 5 roky
rodič
revize
af37652e0a
48 změnil soubory, kde provedl 805 přidání a 110 odebrání
  1. 35 2
      edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/entity/ExamRoom.java
  2. 12 1
      edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/entity/ExamRoomStudentRelation.java
  3. 4 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamLocationController.java
  4. 15 6
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamManualLedgerController.java
  5. 2 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRegistrationController.java
  6. 7 4
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRoomController.java
  7. 7 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRoomStudentRelationController.java
  8. 14 3
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamTeacherSalaryController.java
  9. 5 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExaminationBasicController.java
  10. 1 6
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/MusicTheoryController.java
  11. 17 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamManualLedgerDao.java
  12. 4 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRegistrationDao.java
  13. 11 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRoomDao.java
  14. 8 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRoomStudentRelationDao.java
  15. 10 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamTeacherSalaryDao.java
  16. 3 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/MusicTheoryDao.java
  17. 34 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExamManualLedgerStatisticsDto.java
  18. 11 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExamRegistrationPaymentDto.java
  19. 46 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExamRegistrationRoomDto.java
  20. 34 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExamTeacherSalaryStaticsInfo.java
  21. 0 11
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExaminationBasicDto.java
  22. 54 20
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExamManualLedger.java
  23. 11 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExaminationBasic.java
  24. 37 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/enums/TransDirectionEnum.java
  25. 11 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/page/ExamRegistrationQueryInfo.java
  26. 12 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/page/ExamTeacherSalaryQueryInfo.java
  27. 16 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamManualLedgerService.java
  28. 2 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRegistrationService.java
  29. 9 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRoomService.java
  30. 10 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRoomStudentRelationService.java
  31. 10 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamTeacherSalaryService.java
  32. 2 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/MusicTheoryService.java
  33. 43 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamManualLedgerServiceImpl.java
  34. 6 5
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationServiceImpl.java
  35. 13 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomServiceImpl.java
  36. 34 2
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomStudentRelationServiceImpl.java
  37. 13 5
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamTeacherSalaryServiceImpl.java
  38. 9 7
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExaminationBasicServiceImpl.java
  39. 18 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/MusicTheoryServiceImpl.java
  40. 43 2
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamManualLedgerMapper.xml
  41. 80 2
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationMapper.xml
  42. 2 1
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationPaymentMapper.xml
  43. 42 10
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRoomMapper.xml
  44. 11 7
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRoomStudentRelationMapper.xml
  45. 21 4
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamTeacherSalaryMapper.xml
  46. 10 4
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExaminationBasicMapper.xml
  47. 3 0
      edu-user/edu-user-server/src/main/resources/config/mybatis/MusicTheoryMapper.xml
  48. 3 3
      edu-user/edu-user-server/src/main/resources/config/mybatis/TeacherMapper.xml

+ 35 - 2
edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/entity/ExamRoom.java

@@ -22,16 +22,25 @@ public class ExamRoom {
 	
 	@ApiModelProperty(value = "考点编号")
 	private Integer examLocationId;
-	
+
+	@ApiModelProperty(value = "考试专业名称")
+	private String subjectNameList;
+
 	@ApiModelProperty(value = "考试专业")
 	private String subjectIdList;
 	
 	@ApiModelProperty(value = "主考老师编号")
 	private Integer mainTeacherUserId;
+
+	@ApiModelProperty(value = "主考老师名称")
+	private String mainTeacherName;
 	
 	@ApiModelProperty(value = "助考老师(多个用逗号分隔)")
 	private String assistantTeacherUserIdList;
 
+	@ApiModelProperty(value = "助考老师名称")
+	private String assistantTeacherUserNameList;
+
 	@ApiModelProperty(value = "考试时间:[{'examStartTime':'','examEndTime':''}]")
 	private String examTimeJson;
 	
@@ -90,7 +99,31 @@ public class ExamRoom {
 	public Integer getExamLocationId(){
 		return this.examLocationId;
 	}
-			
+
+	public String getMainTeacherName() {
+		return mainTeacherName;
+	}
+
+	public void setMainTeacherName(String mainTeacherName) {
+		this.mainTeacherName = mainTeacherName;
+	}
+
+	public String getAssistantTeacherUserNameList() {
+		return assistantTeacherUserNameList;
+	}
+
+	public void setAssistantTeacherUserNameList(String assistantTeacherUserNameList) {
+		this.assistantTeacherUserNameList = assistantTeacherUserNameList;
+	}
+
+	public String getSubjectNameList() {
+		return subjectNameList;
+	}
+
+	public void setSubjectNameList(String subjectNameList) {
+		this.subjectNameList = subjectNameList;
+	}
+
 	public void setSubjectIdList(String subjectIdList){
 		this.subjectIdList = subjectIdList;
 	}

+ 12 - 1
edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/entity/ExamRoomStudentRelation.java

@@ -13,6 +13,9 @@ public class ExamRoomStudentRelation {
 
 	@ApiModelProperty(value = "考级项目编号")
 	private Integer examinationBasicId;
+
+	@ApiModelProperty(value = "学员报名编号")
+	private Long examRegistrationId;
 	
 	@ApiModelProperty(value = "考试教室编号")
 	private Long examRoomId;
@@ -52,7 +55,15 @@ public class ExamRoomStudentRelation {
 	public Integer getExaminationBasicId(){
 		return this.examinationBasicId;
 	}
-			
+
+	public Long getExamRegistrationId() {
+		return examRegistrationId;
+	}
+
+	public void setExamRegistrationId(Long examRegistrationId) {
+		this.examRegistrationId = examRegistrationId;
+	}
+
 	public void setExamRoomId(Long examRoomId){
 		this.examRoomId = examRoomId;
 	}

+ 4 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamLocationController.java

@@ -10,6 +10,7 @@ import com.keao.edu.user.service.ExamLocationService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -30,6 +31,9 @@ public class ExamLocationController extends BaseController {
     @ApiOperation("分页查询")
     @GetMapping(value = "/list")
     public HttpResponseResult<PageInfo<ExamLocation>> getList(ExamLocationQueryInfo queryInfo) {
+        if(StringUtils.isBlank(queryInfo.getSearch())){
+            queryInfo.setSearch(null);
+        }
         return succeed(examLocationService.queryPage(queryInfo));
     }
 

+ 15 - 6
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamManualLedgerController.java

@@ -4,7 +4,9 @@ import com.keao.edu.common.controller.BaseController;
 import com.keao.edu.common.entity.HttpResponseResult;
 import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.tenant.TenantContextHolder;
+import com.keao.edu.user.dto.ExamManualLedgerStatisticsDto;
 import com.keao.edu.user.entity.ExamManualLedger;
+import com.keao.edu.user.enums.TransDirectionEnum;
 import com.keao.edu.user.page.ExamManualLedgerQueryInfo;
 import com.keao.edu.user.service.ExamManualLedgerService;
 import io.swagger.annotations.Api;
@@ -18,7 +20,7 @@ import org.springframework.web.bind.annotation.*;
  */
 @RestController
 @RequestMapping("examManualLedger")
-@Api(tags = "出记录服务")
+@Api(tags = "出记录服务")
 public class ExamManualLedgerController extends BaseController {
 
     @Autowired
@@ -27,28 +29,35 @@ public class ExamManualLedgerController extends BaseController {
     @ApiOperation("分页查询")
     @GetMapping(value = "/list")
     public HttpResponseResult<PageInfo<ExamManualLedger>> getList(ExamManualLedgerQueryInfo queryInfo) {
-        return succeed(examManualLedgerService.queryPage(queryInfo));
+        return succeed(examManualLedgerService.queryExamManualLedgers(queryInfo));
     }
 
-    @ApiOperation("新增考点")
+    @ApiOperation("新增支出记录")
     @PostMapping(value = "/add")
     public HttpResponseResult add(@RequestBody ExamManualLedger examManualLedger) {
+        examManualLedger.setTransDirection(TransDirectionEnum.EXPENDITURE);
         examManualLedger.setTenantId(TenantContextHolder.getTenantId().toString());
-        examManualLedgerService.insert(examManualLedger);
+        examManualLedgerService.addExamManualLedger(examManualLedger);
         return succeed();
     }
 
-    @ApiOperation("更新考点")
+    @ApiOperation("更新支出记录")
     @PostMapping(value = "/update")
     public HttpResponseResult update(@RequestBody ExamManualLedger examManualLedger) {
         examManualLedgerService.update(examManualLedger);
         return succeed();
     }
 
-    @ApiOperation("删除考点")
+    @ApiOperation("删除支出记录")
     @PostMapping(value = "/del")
     public HttpResponseResult add(Long id) {
         return succeed(examManualLedgerService.delete(id));
     }
 
+    @ApiOperation("获取考级项目支出统计信息")
+    @PostMapping(value = "/getExamManualLedgerStatistics")
+    public HttpResponseResult<ExamManualLedgerStatisticsDto> getExamManualLedgerStatistics(Long examId){
+        return succeed(examManualLedgerService.getExamManualLedgerStatistics(examId));
+    }
+
 }

+ 2 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRegistrationController.java

@@ -8,6 +8,7 @@ import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.thirdparty.ocr.Ocr;
 import com.keao.edu.user.dto.ExamRecordDto;
 import com.keao.edu.user.dto.ExamRegistrationDto;
+import com.keao.edu.user.dto.ExamRegistrationRoomDto;
 import com.keao.edu.user.dto.ExamRegistrationStatisticsDto;
 import com.keao.edu.user.entity.Employee;
 import com.keao.edu.user.entity.ExamRegistration;
@@ -46,7 +47,7 @@ public class ExamRegistrationController extends BaseController {
     @ApiOperation(value = "学员报名记录查询")
     @GetMapping(value = "list")
     @PreAuthorize("@pcs.hasPermissions('examRegistration/list')")
-    public HttpResponseResult<PageInfo<ExamRegistration>> list(ExamRegistrationQueryInfo queryInfo) {
+    public HttpResponseResult<PageInfo<ExamRegistrationRoomDto>> list(ExamRegistrationQueryInfo queryInfo) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (!sysUser.getIsSuperAdmin() && Objects.isNull(queryInfo.getOrganId())) {
             Employee employee = employeeService.get(sysUser.getId());

+ 7 - 4
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRoomController.java

@@ -1,7 +1,5 @@
 package com.keao.edu.user.controller;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.keao.edu.auth.api.client.SysUserFeignService;
 import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.common.controller.BaseController;
@@ -14,13 +12,12 @@ import com.keao.edu.user.entity.Employee;
 import com.keao.edu.user.page.ExamRoomQueryInfo;
 import com.keao.edu.user.service.EmployeeService;
 import com.keao.edu.user.service.ExamRoomService;
-import com.netflix.discovery.converters.Auto;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
 import java.util.Objects;
 
 @RestController
@@ -94,4 +91,10 @@ public class ExamRoomController extends BaseController {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         return succeed(examRoomService.getExamRoomStatisticsInfo(sysUser.getId(), examId));
     }
+
+    @ApiOperation("获取报名学员可加入教室列表")
+    @GetMapping(value = "/getStudentEnableJoinRoom")
+    public HttpResponseResult<List<ExamRoom>> getStudentEnableJoinRoom(Long registId){
+        return succeed(examRoomService.getStudentEnableJoinRoom(registId));
+    }
 }

+ 7 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRoomStudentRelationController.java

@@ -53,6 +53,13 @@ public class ExamRoomStudentRelationController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation("更换学员考场")
+    @PostMapping(value = "/changeStudentExamRoom")
+    public HttpResponseResult changeStudentExamRoom(Long registId, Long examRoomId){
+        examRoomStudentRelationService.changeStudentExamRoom(registId, examRoomId);
+        return succeed();
+    }
+
     @ApiOperation("获取教室学员")
     @GetMapping(value = "/findExamRoomStudents")
     public HttpResponseResult<PageInfo<ExamRoomStudentRelationDto>> findExamRoomStudents(ExamRoomStudentRelationQueryInfo queryInfo){

+ 14 - 3
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamTeacherSalaryController.java

@@ -4,6 +4,8 @@ import com.keao.edu.common.controller.BaseController;
 import com.keao.edu.common.entity.HttpResponseResult;
 import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.user.dto.BaseUserInfoDto;
+import com.keao.edu.user.dto.ExamTeacherSalaryDto;
+import com.keao.edu.user.dto.ExamTeacherSalaryStaticsInfo;
 import com.keao.edu.user.dto.TeacherDto;
 import com.keao.edu.user.entity.ExamTeacherSalary;
 import com.keao.edu.user.page.ExamTeacherSalaryQueryInfo;
@@ -11,7 +13,10 @@ import com.keao.edu.user.service.ExamTeacherSalaryService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -31,8 +36,8 @@ public class ExamTeacherSalaryController extends BaseController {
 
     @ApiOperation("分页查询")
     @GetMapping(value = "/list")
-    public HttpResponseResult<PageInfo<ExamTeacherSalary>> getList(ExamTeacherSalaryQueryInfo queryInfo) {
-        return succeed(examTeacherSalaryService.queryPage(queryInfo));
+    public HttpResponseResult<PageInfo<ExamTeacherSalaryDto>> getList(ExamTeacherSalaryQueryInfo queryInfo) {
+        return succeed(examTeacherSalaryService.queryExamTeacherSalary(queryInfo));
     }
 
     @ApiOperation("新增")
@@ -79,4 +84,10 @@ public class ExamTeacherSalaryController extends BaseController {
         return succeed(examTeacherSalaryService.getUnRelatedWithExamTeachers(queryInfo));
     }
 
+    @ApiOperation("获取考级项目关联教师统计信息")
+    @GetMapping(value = "/getExamTeacherSalaryStaticsInfo")
+    public HttpResponseResult<ExamTeacherSalaryStaticsInfo> getExamTeacherSalaryStaticsInfo(Integer examId){
+        return succeed(examTeacherSalaryService.getExamTeacherSalaryStaticsInfo(examId));
+    }
+
 }

+ 5 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExaminationBasicController.java

@@ -16,6 +16,8 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Objects;
+
 /**
  * @Author Joburgess
  * @Date 2020.06.18
@@ -49,6 +51,9 @@ public class ExaminationBasicController extends BaseController {
     public HttpResponseResult<ExaminationBasic> addExaminationBasic(@RequestBody ExaminationBasic examinationBasic){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         Employee employee = employeeService.get(sysUser.getId());
+        if(Objects.isNull(employee)){
+            return failed("用户信息异常");
+        }
         examinationBasic.setCreatorId(sysUser.getId());
         examinationBasic.setOrganId(employee.getOrganId());
         return succeed(examinationBasicService.addExaminationBasic(examinationBasic));

+ 1 - 6
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/MusicTheoryController.java

@@ -5,9 +5,7 @@ import com.keao.edu.common.entity.HttpResponseResult;
 import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.page.QueryInfo;
 import com.keao.edu.common.tenant.TenantContextHolder;
-import com.keao.edu.user.entity.ExamSong;
 import com.keao.edu.user.entity.MusicTheory;
-import com.keao.edu.user.service.ExamSongService;
 import com.keao.edu.user.service.MusicTheoryService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -16,9 +14,6 @@ import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
-import java.util.Date;
-
 /**
  * @Author wangyp
  * @Date 2020/6/27 9:17
@@ -49,7 +44,7 @@ public class MusicTheoryController extends BaseController {
     @PostMapping(value = "/add")
     public HttpResponseResult add(@ApiParam(value = "乐理信息") @RequestBody MusicTheory musicTheory) {
         musicTheory.setTenantId(TenantContextHolder.getTenantId().toString());
-        musicTheoryService.insert(musicTheory);
+        musicTheoryService.addMusicTheory(musicTheory);
         return succeed();
     }
 

+ 17 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamManualLedgerDao.java

@@ -1,9 +1,25 @@
 package com.keao.edu.user.dao;
 
 import com.keao.edu.common.dal.BaseDAO;
+import com.keao.edu.user.dto.ExamManualLedgerStatisticsDto;
 import com.keao.edu.user.entity.ExamManualLedger;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
 
 public interface ExamManualLedgerDao extends BaseDAO<Long, ExamManualLedger> {
 
-	
+    List<ExamManualLedger> queryExamManualLedgers(Map<String, Object> params);
+    int countExamManualLedgers(Map<String, Object> params);
+
+    /**
+     * @describe 获取考级项目支出统计信息
+     * @author Joburgess
+     * @date 2020.07.09
+     * @param examId:
+     * @return com.keao.edu.user.dto.ExamManualLedgerStatisticsDto
+     */
+    ExamManualLedgerStatisticsDto getExamManualLedgerStatistics(@Param("examId") Long examId);
+
 }

+ 4 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRegistrationDao.java

@@ -4,6 +4,7 @@ package com.keao.edu.user.dao;
 import com.keao.edu.common.dal.BaseDAO;
 import com.keao.edu.user.dto.ExamRecordDto;
 import com.keao.edu.user.dto.ExamRegistrationDto;
+import com.keao.edu.user.dto.ExamRegistrationRoomDto;
 import com.keao.edu.user.dto.ExamRegistrationStatisticsDto;
 import com.keao.edu.user.entity.ExamRegistration;
 import org.apache.ibatis.annotations.Param;
@@ -13,6 +14,9 @@ import java.util.Map;
 
 public interface ExamRegistrationDao extends BaseDAO<Long, ExamRegistration> {
 
+    List<ExamRegistrationRoomDto> queryExamRegist(Map<String, Object> params);
+    int countExamRegist(Map<String, Object> params);
+
     /**
      * @param organIds:
      * @return int

+ 11 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRoomDao.java

@@ -58,4 +58,15 @@ public interface ExamRoomDao extends BaseDAO<Long, ExamRoom> {
      * @return java.util.List<com.keao.edu.user.api.entity.ExamRoom>
      */
     List<ExamRoom> getWithDays(@Param("days") List<String> days);
+
+    /**
+     * @describe 根据专业获取指定考级项目下可选择教室
+     * @author Joburgess
+     * @date 2020.07.08
+     * @param examId:
+     * @param subjectId:
+     * @return java.util.List<com.keao.edu.user.api.entity.ExamRoom>
+     */
+    List<ExamRoom> getWithExamAndSubject(@Param("examId") Integer examId,
+                                         @Param("subjectId") Integer subjectId);
 }

+ 8 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRoomStudentRelationDao.java

@@ -70,4 +70,12 @@ public interface ExamRoomStudentRelationDao extends BaseDAO<Long, ExamRoomStuden
      */
     List<ExamRoomStudentRelation> getExamRoomStudentRelations(@Param("basicId") Integer basicId, @Param("roomId") String roomId, @Param("studentId") Integer studentId);
 
+    /**
+     * @describe 获取报名学员所在教室
+     * @author Joburgess
+     * @date 2020.07.08
+     * @param registId:
+     * @return com.keao.edu.user.api.entity.ExamRoomStudentRelation
+     */
+    ExamRoomStudentRelation getStudentExamRoom(@Param("registId") Long registId);
 }

+ 10 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamTeacherSalaryDao.java

@@ -4,6 +4,7 @@ package com.keao.edu.user.dao;
 import com.keao.edu.common.dal.BaseDAO;
 import com.keao.edu.user.dto.BaseUserInfoDto;
 import com.keao.edu.user.dto.ExamTeacherSalaryDto;
+import com.keao.edu.user.dto.ExamTeacherSalaryStaticsInfo;
 import com.keao.edu.user.dto.TeacherDto;
 import com.keao.edu.user.entity.ExamTeacherSalary;
 import org.apache.ibatis.annotations.Param;
@@ -58,4 +59,13 @@ public interface ExamTeacherSalaryDao extends BaseDAO<Long, ExamTeacherSalary> {
      */
     List<TeacherDto> queryUnRelatedWithExamTeachers(Map<String, Object> params);
     int countUnRelatedWithExamTeachers(Map<String, Object> params);
+
+    /**
+     * @describe 统计考级项目教师信息
+     * @author Joburgess
+     * @date 2020.07.08
+     * @param examId:
+     * @return com.keao.edu.user.dto.ExamTeacherSalaryStaticsInfo
+     */
+    ExamTeacherSalaryStaticsInfo getExamTeacherSalaryStaticsInfo(@Param("examId") Integer examId);
 }

+ 3 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/MusicTheoryDao.java

@@ -15,4 +15,7 @@ public interface MusicTheoryDao extends BaseDAO<Integer, MusicTheory> {
 
     List<MusicTheory> getWithTenant(@Param("tenantId") Integer tenantId);
 
+    MusicTheory getWithTenantAndLevel(@Param("tenantId") String tenantId,
+                                      @Param("level") Integer level);
+
 }

+ 34 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExamManualLedgerStatisticsDto.java

@@ -0,0 +1,34 @@
+package com.keao.edu.user.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.07.09
+ */
+public class ExamManualLedgerStatisticsDto {
+
+    @ApiModelProperty(value = "支出笔数")
+    private Integer expenditureNum;
+
+    @ApiModelProperty(value = "支出费用")
+    private BigDecimal expenditureFee;
+
+    public Integer getExpenditureNum() {
+        return expenditureNum;
+    }
+
+    public void setExpenditureNum(Integer expenditureNum) {
+        this.expenditureNum = expenditureNum;
+    }
+
+    public BigDecimal getExpenditureFee() {
+        return expenditureFee;
+    }
+
+    public void setExpenditureFee(BigDecimal expenditureFee) {
+        this.expenditureFee = expenditureFee;
+    }
+}

+ 11 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExamRegistrationPaymentDto.java

@@ -8,6 +8,9 @@ import java.util.List;
 
 public class ExamRegistrationPaymentDto extends ExamRegistrationPayment {
 
+    @ApiModelProperty(value = "准考证号")
+    private String cardNo;
+
     @ApiModelProperty(value = "考试地点")
     private List<ExamLocation> examLocations;
 
@@ -18,4 +21,12 @@ public class ExamRegistrationPaymentDto extends ExamRegistrationPayment {
     public void setExamLocations(List<ExamLocation> examLocations) {
         this.examLocations = examLocations;
     }
+
+    public String getCardNo() {
+        return cardNo;
+    }
+
+    public void setCardNo(String cardNo) {
+        this.cardNo = cardNo;
+    }
 }

+ 46 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExamRegistrationRoomDto.java

@@ -0,0 +1,46 @@
+package com.keao.edu.user.dto;
+
+import com.keao.edu.user.entity.ExamRegistration;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.07.08
+ */
+public class ExamRegistrationRoomDto extends ExamRegistration {
+
+    @ApiModelProperty(value = "考场编号")
+    private Long examRoomId;
+
+    @ApiModelProperty(value = "考试开始时间")
+    private Date examStartTime;
+
+    @ApiModelProperty(value = "考试结束时间")
+    private Date examEndTime;
+
+    public Long getExamRoomId() {
+        return examRoomId;
+    }
+
+    public void setExamRoomId(Long examRoomId) {
+        this.examRoomId = examRoomId;
+    }
+
+    public Date getExamStartTime() {
+        return examStartTime;
+    }
+
+    public void setExamStartTime(Date examStartTime) {
+        this.examStartTime = examStartTime;
+    }
+
+    public Date getExamEndTime() {
+        return examEndTime;
+    }
+
+    public void setExamEndTime(Date examEndTime) {
+        this.examEndTime = examEndTime;
+    }
+}

+ 34 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExamTeacherSalaryStaticsInfo.java

@@ -0,0 +1,34 @@
+package com.keao.edu.user.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.07.08
+ */
+public class ExamTeacherSalaryStaticsInfo {
+
+    @ApiModelProperty(value = "教师数量")
+    private Integer teacherNum;
+
+    @ApiModelProperty(value = "预计支出金额")
+    private BigDecimal expectExpenseAmount;
+
+    public Integer getTeacherNum() {
+        return teacherNum;
+    }
+
+    public void setTeacherNum(Integer teacherNum) {
+        this.teacherNum = teacherNum;
+    }
+
+    public BigDecimal getExpectExpenseAmount() {
+        return expectExpenseAmount;
+    }
+
+    public void setExpectExpenseAmount(BigDecimal expectExpenseAmount) {
+        this.expectExpenseAmount = expectExpenseAmount;
+    }
+}

+ 0 - 11
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExaminationBasicDto.java

@@ -11,9 +11,6 @@ import java.math.BigDecimal;
  */
 public class ExaminationBasicDto extends ExaminationBasic {
 
-    @ApiModelProperty(value = "考点名称")
-    private String examLocationNames;
-
     @ApiModelProperty(value = "创建人名称")
     private String creatorName;
 
@@ -26,14 +23,6 @@ public class ExaminationBasicDto extends ExaminationBasic {
     @ApiModelProperty(value = "总缴费金额")
     private BigDecimal totalPaymentAmount;
 
-    public String getExamLocationNames() {
-        return examLocationNames;
-    }
-
-    public void setExamLocationNames(String examLocationNames) {
-        this.examLocationNames = examLocationNames;
-    }
-
     public String getCreatorName() {
         return creatorName;
     }

+ 54 - 20
edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExamManualLedger.java

@@ -1,5 +1,8 @@
 package com.keao.edu.user.entity;
 
+import com.keao.edu.auth.api.entity.SysUser;
+import com.keao.edu.user.enums.TransDirectionEnum;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
@@ -7,30 +10,37 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
  */
 public class ExamManualLedger {
 
-	/**  */
 	private Long id;
-	
-	/**  */
+
+	@ApiModelProperty(value = "合作单位编号")
+	private Integer organId;
+
+	@ApiModelProperty(value = "合作单位基本信息")
+	private Organization organization;
+
+	@ApiModelProperty(value = "考级项目编号")
 	private Integer examinationBasicId;
 	
-	/** 转账方向(收/支) */
-	private String transDirection;
-	
-	/** 交易金额 */
+	@ApiModelProperty(value = "转账方向")
+	private TransDirectionEnum transDirection;
+
+	@ApiModelProperty(value = "交易金额")
 	private java.math.BigDecimal amount;
 	
-	/** 交易时间 */
+	@ApiModelProperty(value = "交易时间")
 	private java.util.Date transTime;
 	
-	/**  */
+	@ApiModelProperty(value = "备注")
 	private String memo;
 	
-	/** 操作人编号 */
+	@ApiModelProperty(value = "操作人编号")
 	private Integer operatorUserId;
 
+	@ApiModelProperty(value = "操作人基本信息")
+	private SysUser operator;
+
 	private String tenantId;
-	
-	/**  */
+
 	private java.util.Date createTime;
 	
 	public void setId(Long id){
@@ -40,7 +50,15 @@ public class ExamManualLedger {
 	public Long getId(){
 		return this.id;
 	}
-			
+
+	public Integer getOrganId() {
+		return organId;
+	}
+
+	public void setOrganId(Integer organId) {
+		this.organId = organId;
+	}
+
 	public void setExaminationBasicId(Integer examinationBasicId){
 		this.examinationBasicId = examinationBasicId;
 	}
@@ -48,15 +66,31 @@ public class ExamManualLedger {
 	public Integer getExaminationBasicId(){
 		return this.examinationBasicId;
 	}
-			
-	public void setTransDirection(String transDirection){
-		this.transDirection = transDirection;
+
+	public Organization getOrganization() {
+		return organization;
 	}
-	
-	public String getTransDirection(){
-		return this.transDirection;
+
+	public void setOrganization(Organization organization) {
+		this.organization = organization;
 	}
-			
+
+	public SysUser getOperator() {
+		return operator;
+	}
+
+	public void setOperator(SysUser operator) {
+		this.operator = operator;
+	}
+
+	public TransDirectionEnum getTransDirection() {
+		return transDirection;
+	}
+
+	public void setTransDirection(TransDirectionEnum transDirection) {
+		this.transDirection = transDirection;
+	}
+
 	public void setAmount(java.math.BigDecimal amount){
 		this.amount = amount;
 	}

+ 11 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExaminationBasic.java

@@ -24,6 +24,9 @@ public class ExaminationBasic {
 	@ApiModelProperty(value = "考点编号列表")
 	private String examLocationIdList;
 
+	@ApiModelProperty(value = "考点名称列表")
+	private String examLocationNameList;
+
 	@ApiModelProperty(value = "状态")
 	private ExamStatusEnum status;
 
@@ -105,6 +108,14 @@ public class ExaminationBasic {
 		return this.examLocationIdList;
 	}
 
+	public String getExamLocationNameList() {
+		return examLocationNameList;
+	}
+
+	public void setExamLocationNameList(String examLocationNameList) {
+		this.examLocationNameList = examLocationNameList;
+	}
+
 	public ExamModeEnum getExamMode() {
 		return examMode;
 	}

+ 37 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/enums/TransDirectionEnum.java

@@ -0,0 +1,37 @@
+package com.keao.edu.user.enums;
+
+import com.keao.edu.common.enums.BaseEnum;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.07.09
+ */
+public enum  TransDirectionEnum implements BaseEnum<String, TransDirectionEnum> {
+    INCOME("INCOME", "收入"),
+    EXPENDITURE("EXPENDITURE", "支出");
+    private String code;
+
+    private String msg;
+
+    TransDirectionEnum(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+}

+ 11 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/page/ExamRegistrationQueryInfo.java

@@ -34,6 +34,9 @@ public class ExamRegistrationQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "学员状态")
     private StudentRegistrationStatusEnum status;
 
+    @ApiModelProperty(value = "是否已排考:0否,1已排考")
+    private Integer inRoom;
+
     public Integer getExamRegistrationId() {
         return examRegistrationId;
     }
@@ -97,4 +100,12 @@ public class ExamRegistrationQueryInfo extends QueryInfo {
     public void setStatus(StudentRegistrationStatusEnum status) {
         this.status = status;
     }
+
+    public Integer getInRoom() {
+        return inRoom;
+    }
+
+    public void setInRoom(Integer inRoom) {
+        this.inRoom = inRoom;
+    }
 }

+ 12 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/page/ExamTeacherSalaryQueryInfo.java

@@ -1,6 +1,7 @@
 package com.keao.edu.user.page;
 
 import com.keao.edu.common.page.QueryInfo;
+import com.keao.edu.user.enums.TeacherSettlementTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 /**
@@ -15,6 +16,9 @@ public class ExamTeacherSalaryQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "教师编号")
     private Integer teacherId;
 
+    @ApiModelProperty(value = "结算类型(按天/人)")
+    private TeacherSettlementTypeEnum settlementType;
+
     public Integer getExamId() {
         return examId;
     }
@@ -30,4 +34,12 @@ public class ExamTeacherSalaryQueryInfo extends QueryInfo {
     public void setTeacherId(Integer teacherId) {
         this.teacherId = teacherId;
     }
+
+    public TeacherSettlementTypeEnum getSettlementType() {
+        return settlementType;
+    }
+
+    public void setSettlementType(TeacherSettlementTypeEnum settlementType) {
+        this.settlementType = settlementType;
+    }
 }

+ 16 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamManualLedgerService.java

@@ -1,9 +1,25 @@
 package com.keao.edu.user.service;
 
 
+import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.service.BaseService;
+import com.keao.edu.user.dto.ExamManualLedgerStatisticsDto;
 import com.keao.edu.user.entity.ExamManualLedger;
+import com.keao.edu.user.page.ExamManualLedgerQueryInfo;
 
 public interface ExamManualLedgerService extends BaseService<Long, ExamManualLedger> {
 
+    void addExamManualLedger(ExamManualLedger examManualLedger);
+
+    PageInfo<ExamManualLedger> queryExamManualLedgers(ExamManualLedgerQueryInfo queryInfo);
+
+    /**
+     * @describe 获取考级项目支出统计信息
+     * @author Joburgess
+     * @date 2020.07.09
+     * @param examId:
+     * @return com.keao.edu.user.dto.ExamManualLedgerStatisticsDto
+     */
+    ExamManualLedgerStatisticsDto getExamManualLedgerStatistics(Long examId);
+
 }

+ 2 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRegistrationService.java

@@ -5,6 +5,7 @@ import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.service.BaseService;
 import com.keao.edu.user.dto.ExamRecordDto;
 import com.keao.edu.user.dto.ExamRegistrationDto;
+import com.keao.edu.user.dto.ExamRegistrationRoomDto;
 import com.keao.edu.user.dto.ExamRegistrationStatisticsDto;
 import com.keao.edu.user.entity.ExamRegistration;
 import com.keao.edu.user.page.ExamRecordQueryInfo;
@@ -23,7 +24,7 @@ public interface ExamRegistrationService extends BaseService<Long, ExamRegistrat
     * @param queryInfo:
     * @return com.keao.edu.common.page.PageInfo<com.keao.edu.user.entity.ExamRegistration>
     */
-   PageInfo<ExamRegistration> queryExamRegistrationStudents(ExamRegistrationQueryInfo queryInfo);
+   PageInfo<ExamRegistrationRoomDto> queryExamRegistrationStudents(ExamRegistrationQueryInfo queryInfo);
 
    void updateExamRegistration(ExamRegistration examRegistration);
 

+ 9 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRoomService.java

@@ -72,4 +72,13 @@ public interface ExamRoomService extends BaseService<Long, ExamRoom> {
      * @return void
      */
     void checkRoomTeachers(List<ExamRoom> examRooms);
+
+    /**
+     * @describe 获取报名学员可加入教室列表
+     * @author Joburgess
+     * @date 2020.07.08
+     * @param registId:
+     * @return java.util.List<com.keao.edu.user.api.entity.ExamRoom>
+     */
+    List<ExamRoom> getStudentEnableJoinRoom(Long registId);
 }

+ 10 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRoomStudentRelationService.java

@@ -27,6 +27,16 @@ public interface ExamRoomStudentRelationService extends BaseService<Long, ExamRo
     void addStudentForRoom(Long examRoomId, String studentIds);
 
     /**
+     * @describe 更换学员考场
+     * @author Joburgess
+     * @date 2020.07.08
+     * @param registId:
+     * @param examRoomId:
+     * @return void
+     */
+    void changeStudentExamRoom(Long registId, Long examRoomId);
+
+    /**
      * @describe 获取教室学员
      * @author Joburgess
      * @date 2020.06.24

+ 10 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamTeacherSalaryService.java

@@ -4,6 +4,7 @@ import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.service.BaseService;
 import com.keao.edu.user.dto.BaseUserInfoDto;
 import com.keao.edu.user.dto.ExamTeacherSalaryDto;
+import com.keao.edu.user.dto.ExamTeacherSalaryStaticsInfo;
 import com.keao.edu.user.dto.TeacherDto;
 import com.keao.edu.user.entity.ExamTeacherSalary;
 import com.keao.edu.user.page.ExamTeacherSalaryQueryInfo;
@@ -66,4 +67,13 @@ public interface ExamTeacherSalaryService extends BaseService<Long, ExamTeacherS
      * @return java.util.List<com.keao.edu.user.entity.Teacher>
      */
     PageInfo<TeacherDto> getUnRelatedWithExamTeachers(ExamTeacherSalaryQueryInfo queryInfo);
+
+    /**
+     * @describe 获取考级项目关联教师统计信息
+     * @author Joburgess
+     * @date 2020.07.08
+     * @param examId:
+     * @return com.keao.edu.user.dto.ExamTeacherSalaryStaticsInfo
+     */
+    ExamTeacherSalaryStaticsInfo getExamTeacherSalaryStaticsInfo(Integer examId);
 }

+ 2 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/MusicTheoryService.java

@@ -5,4 +5,6 @@ import com.keao.edu.user.entity.MusicTheory;
 
 public interface MusicTheoryService extends BaseService<Integer, MusicTheory> {
 
+    void addMusicTheory(MusicTheory musicTheory);
+
 }

+ 43 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamManualLedgerServiceImpl.java

@@ -2,13 +2,20 @@ package com.keao.edu.user.service.impl;
 
 
 import com.keao.edu.common.dal.BaseDAO;
+import com.keao.edu.common.exception.BizException;
+import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.user.dao.ExamManualLedgerDao;
+import com.keao.edu.user.dto.ExamManualLedgerStatisticsDto;
 import com.keao.edu.user.entity.ExamManualLedger;
+import com.keao.edu.user.page.ExamManualLedgerQueryInfo;
 import com.keao.edu.user.service.ExamManualLedgerService;
+import com.keao.edu.util.collection.MapUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.*;
+
 @Service
 public class ExamManualLedgerServiceImpl extends BaseServiceImpl<Long, ExamManualLedger> implements ExamManualLedgerService {
 	
@@ -19,5 +26,40 @@ public class ExamManualLedgerServiceImpl extends BaseServiceImpl<Long, ExamManua
 	public BaseDAO<Long, ExamManualLedger> getDAO() {
 		return examManualLedgerDao;
 	}
-	
+
+	@Override
+	public void addExamManualLedger(ExamManualLedger examManualLedger) {
+		if(Objects.isNull(examManualLedger.getExaminationBasicId())){
+			throw new BizException("请指定考级项目");
+		}
+		if(Objects.isNull(examManualLedger.getAmount())){
+			throw new BizException("请指定交易金额");
+		}
+		examManualLedgerDao.insert(examManualLedger);
+	}
+
+	@Override
+	public PageInfo<ExamManualLedger> queryExamManualLedgers(ExamManualLedgerQueryInfo queryInfo) {
+		PageInfo<ExamManualLedger> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<ExamManualLedger> dataList = new ArrayList<>();
+		int count = examManualLedgerDao.countExamManualLedgers(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = examManualLedgerDao.queryExamManualLedgers(params);
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Override
+	public ExamManualLedgerStatisticsDto getExamManualLedgerStatistics(Long examId) {
+		if(Objects.isNull(examId)){
+			throw new BizException("请指定考级项目");
+		}
+		return examManualLedgerDao.getExamManualLedgerStatistics(examId);
+	}
 }

+ 6 - 5
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationServiceImpl.java

@@ -9,6 +9,7 @@ import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.user.dao.*;
 import com.keao.edu.user.dto.ExamRecordDto;
 import com.keao.edu.user.dto.ExamRegistrationDto;
+import com.keao.edu.user.dto.ExamRegistrationRoomDto;
 import com.keao.edu.user.dto.ExamRegistrationStatisticsDto;
 import com.keao.edu.user.entity.*;
 import com.keao.edu.user.enums.ExamStatusEnum;
@@ -151,20 +152,20 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
     }
 
     @Override
-    public PageInfo<ExamRegistration> queryExamRegistrationStudents(ExamRegistrationQueryInfo queryInfo) {
-        PageInfo<ExamRegistration> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+    public PageInfo<ExamRegistrationRoomDto> queryExamRegistrationStudents(ExamRegistrationQueryInfo queryInfo) {
+        PageInfo<ExamRegistrationRoomDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<String, Object>();
         MapUtil.populateMap(params, queryInfo);
 
         List<Integer> nextLevelOrganIds = organizationService.getChildOrganIds(queryInfo.getOrganId(), true);
         params.put("organIds", nextLevelOrganIds);
 
-        List<ExamRegistration> dataList = Collections.EMPTY_LIST;
-        int count = this.findCount(params);
+        List<ExamRegistrationRoomDto> dataList = Collections.EMPTY_LIST;
+        int count = examRegistrationDao.countExamRegist(params);
         if (count > 0) {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
-            dataList = this.getDAO().queryPage(params);
+            dataList = examRegistrationDao.queryExamRegist(params);
             List<Integer> examIds = dataList.stream().filter(e -> Objects.nonNull(e.getOrganId())).map(ExamRegistration::getExaminationBasicId).collect(Collectors.toList());
             Map<Integer, String> examIdNameMap = this.getMap("examination_basic", "id_", "name_", examIds, Integer.class, String.class);
 

+ 13 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomServiceImpl.java

@@ -15,6 +15,7 @@ import com.keao.edu.user.dao.*;
 import com.keao.edu.user.dto.ExamRoomDto;
 import com.keao.edu.user.dto.ExamRoomStatisticsDto;
 import com.keao.edu.user.api.enums.ExamModeEnum;
+import com.keao.edu.user.entity.ExamRegistration;
 import com.keao.edu.user.entity.ExaminationBasic;
 import com.keao.edu.user.page.ExamRoomQueryInfo;
 import com.keao.edu.user.service.ExamRoomService;
@@ -254,4 +255,16 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 			}
 		}
 	}
+
+	@Override
+	public List<ExamRoom> getStudentEnableJoinRoom(Long registId) {
+		if(Objects.isNull(registId)){
+			throw new BizException("请指定报名信息");
+		}
+		ExamRegistration examRegistration = examRegistrationDao.get(registId);
+		if(Objects.isNull(examRegistration)){
+			throw new BizException("报名信息不存在");
+		}
+		return examRoomDao.getWithExamAndSubject(examRegistration.getExaminationBasicId(), examRegistration.getSubjectId());
+	}
 }

+ 34 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomStudentRelationServiceImpl.java

@@ -2,18 +2,18 @@ package com.keao.edu.user.service.impl;
 
 import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.common.dal.BaseDAO;
+import com.keao.edu.common.enums.YesOrNoEnum;
 import com.keao.edu.common.exception.BizException;
 import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.service.IdGeneratorService;
 import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.common.tenant.TenantContextHolder;
 import com.keao.edu.user.api.entity.ExamRoom;
+import com.keao.edu.user.api.entity.ExamRoomStudentRelation;
 import com.keao.edu.user.dao.*;
 import com.keao.edu.user.dto.ExamRoomStudentRelationDto;
-import com.keao.edu.user.api.entity.ExamRoomStudentRelation;
 import com.keao.edu.user.entity.*;
 import com.keao.edu.user.page.ExamRoomStudentRelationQueryInfo;
-import com.keao.edu.user.service.ExamCertificationService;
 import com.keao.edu.user.service.ExamRoomStudentRelationService;
 import com.keao.edu.user.service.ExamTeacherSalaryService;
 import com.keao.edu.user.service.OrganizationService;
@@ -134,6 +134,38 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void changeStudentExamRoom(Long registId, Long examRoomId) {
+		if(Objects.isNull(registId)){
+			throw new BizException("请指定报名信息");
+		}
+		if(Objects.isNull(examRoomId)){
+			throw new BizException("请指定新考场");
+		}
+		ExamRegistration examRegistration = examRegistrationDao.get(registId);
+		if(Objects.isNull(examRegistration)){
+			throw new BizException("学员报名信息不存在");
+		}
+		ExamRoom examRoom = examRoomDao.get(examRoomId);
+		if(Objects.isNull(examRoom)){
+			throw new BizException("考场信息不存在");
+		}
+		ExamRoomStudentRelation studentExamRoom = examRoomStudentRelationDao.getStudentExamRoom(registId);
+		if(Objects.isNull(studentExamRoom)){
+			studentExamRoom=new ExamRoomStudentRelation();
+			studentExamRoom.setExaminationBasicId(examRegistration.getExaminationBasicId());
+			studentExamRoom.setExamRoomId(examRoomId);
+			studentExamRoom.setExamRegistrationId(examRegistration.getId().longValue());
+			studentExamRoom.setStudentId(examRegistration.getStudentId());
+			studentExamRoom.setClassroomSwitch(YesOrNoEnum.NO);
+			examRoomStudentRelationDao.insert(studentExamRoom);
+			return;
+		}
+		studentExamRoom.setExamRoomId(examRoomId);
+		examRoomStudentRelationDao.update(studentExamRoom);
+	}
+
+	@Override
 	public PageInfo<ExamRoomStudentRelationDto> findExamRoomStudents(ExamRoomStudentRelationQueryInfo queryInfo) {
 		PageInfo<ExamRoomStudentRelationDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<String, Object>();

+ 13 - 5
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamTeacherSalaryServiceImpl.java

@@ -8,10 +8,7 @@ import com.keao.edu.common.tenant.TenantContextHolder;
 import com.keao.edu.user.api.entity.ExamRoom;
 import com.keao.edu.user.api.entity.ExamRoomStudentRelation;
 import com.keao.edu.user.dao.*;
-import com.keao.edu.user.dto.BaseUserInfoDto;
-import com.keao.edu.user.dto.ExamTeacherSalaryDto;
-import com.keao.edu.user.dto.ExaminationBasicDto;
-import com.keao.edu.user.dto.TeacherDto;
+import com.keao.edu.user.dto.*;
 import com.keao.edu.user.entity.ExamTeacherSalary;
 import com.keao.edu.user.entity.Teacher;
 import com.keao.edu.user.page.ExamTeacherSalaryQueryInfo;
@@ -103,7 +100,10 @@ public class ExamTeacherSalaryServiceImpl extends BaseServiceImpl<Long, ExamTeac
 			dataList = examTeacherSalaryDao.queryExamTeacherSalary(params);
 			List<Integer> examIds = dataList.stream().map(ExamTeacherSalaryDto::getExaminationBasicId).collect(Collectors.toList());
 			List<ExaminationBasicDto> exams = examinationBasicDao.getExams(examIds);
-
+			Map<Integer, ExaminationBasicDto> idExamMap = exams.stream().collect(Collectors.toMap(ExaminationBasicDto::getId, e -> e));
+			for (ExamTeacherSalaryDto examTeacherSalaryDto : dataList) {
+				examTeacherSalaryDto.setExaminationBasic(idExamMap.get(examTeacherSalaryDto.getExaminationBasicId()));
+			}
 		}
 		pageInfo.setRows(dataList);
 		return pageInfo;
@@ -210,4 +210,12 @@ public class ExamTeacherSalaryServiceImpl extends BaseServiceImpl<Long, ExamTeac
 		pageInfo.setRows(dataList);
 		return pageInfo;
 	}
+
+	@Override
+	public ExamTeacherSalaryStaticsInfo getExamTeacherSalaryStaticsInfo(Integer examId) {
+		if(Objects.isNull(examId)){
+			throw new BizException("请指定考级项目");
+		}
+		return examTeacherSalaryDao.getExamTeacherSalaryStaticsInfo(examId);
+	}
 }

+ 9 - 7
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExaminationBasicServiceImpl.java

@@ -59,6 +59,15 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
             throw new BizException("请指定考试开始与结束时间");
         }
 
+        if(ExamModeEnum.ONLINE.equals(examinationBasic.getExamMode())){
+            examinationBasic.setExamLocationIdList(null);
+        }
+        if(StringUtils.isNotBlank(examinationBasic.getExamLocationIdList())){
+            List<Integer> organIds = Arrays.stream(examinationBasic.getExamLocationIdList().split(",")).map(e -> Integer.valueOf(e)).collect(Collectors.toList());
+            Map<Integer, String> organNameMap = this.getMap("organization", "id_", "name_", organIds, Integer.class, String.class);
+            examinationBasic.setExamLocationNameList(StringUtils.join(organNameMap.keySet(),","));
+        }
+
         examinationBasic.setTenantId(TenantContextHolder.getTenantId().toString());
 
         List<MusicTheory> musicTheories = musicTheoryDao.getWithTenant(Integer.valueOf(examinationBasic.getTenantId()));
@@ -162,13 +171,6 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
             SysUser sysUser = sysUserDao.get(examinationBasic.getCreatorId());
             examinationBasic.setCreatorName(sysUser.getRealName());
         }
-        if(Objects.nonNull(examinationBasic.getExamLocationIdList())){
-            List<ExamLocation> examLocations = examLocationDao.getExamLocationByIds(examinationBasic.getExamLocationIdList());
-            if(!CollectionUtils.isEmpty(examLocations)){
-                String locationNames = examLocations.stream().map(ExamLocation::getName).collect(Collectors.joining(","));
-                examinationBasic.setExamLocationNames(locationNames);
-            }
-        }
         return examinationBasic;
     }
 

+ 18 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/MusicTheoryServiceImpl.java

@@ -1,6 +1,7 @@
 package com.keao.edu.user.service.impl;
 
 import com.keao.edu.common.dal.BaseDAO;
+import com.keao.edu.common.exception.BizException;
 import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.user.dao.MusicTheoryDao;
 import com.keao.edu.user.entity.MusicTheory;
@@ -8,6 +9,8 @@ import com.keao.edu.user.service.MusicTheoryService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Objects;
+
 @Service
 public class MusicTheoryServiceImpl extends BaseServiceImpl<Integer, MusicTheory> implements MusicTheoryService {
 	
@@ -18,5 +21,19 @@ public class MusicTheoryServiceImpl extends BaseServiceImpl<Integer, MusicTheory
 	public BaseDAO<Integer, MusicTheory> getDAO() {
 		return musicTheoryDao;
 	}
-	
+
+	@Override
+	public void addMusicTheory(MusicTheory musicTheory) {
+		if(Objects.isNull(musicTheory.getLevel())){
+			throw new BizException("请设置乐理级别");
+		}
+		if(Objects.isNull(musicTheory.getFee())){
+			throw new BizException("请设置乐理费用");
+		}
+		MusicTheory existsMusicTheory = musicTheoryDao.getWithTenantAndLevel(musicTheory.getTenantId(), musicTheory.getLevel());
+		if(Objects.nonNull(existsMusicTheory)){
+			throw new BizException("乐理级别重复");
+		}
+		musicTheoryDao.insert(musicTheory);
+	}
 }

+ 43 - 2
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamManualLedgerMapper.xml

@@ -8,6 +8,7 @@
 	
 	<resultMap type="com.keao.edu.user.entity.ExamManualLedger" id="ExamManualLedger">
 		<result column="id_" property="id" />
+		<result column="organ_id_" property="organId"/>
 		<result column="examination_basic_id_" property="examinationBasicId" />
 		<result column="trans_direction_" property="transDirection" />
 		<result column="amount_" property="amount" />
@@ -16,6 +17,8 @@
 		<result column="operator_user_id_" property="operatorUserId" />
 		<result column="tenant_id_" property="tenantId" />
 		<result column="create_time_" property="createTime" />
+		<association property="organization" columnPrefix="organ_" resultMap="com.keao.edu.user.dao.OrganizationDao"/>
+		<association property="operator" columnPrefix="user_" resultMap="com.keao.edu.user.dao.SysUserDao.SysUser"/>
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -35,14 +38,17 @@
 		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
 		</selectKey>
 		-->
-		INSERT INTO exam_manual_ledger (examination_basic_id_,trans_direction_,amount_,trans_time_,memo_,operator_user_id_,tenant_id_,create_time_)
-		VALUES(#{examinationBasicId},#{transDirection},#{amount},#{transTime},#{memo},#{operatorUserId},#{tenantId},NOW())
+		INSERT INTO exam_manual_ledger (organ_id_,examination_basic_id_,trans_direction_,amount_,trans_time_,memo_,operator_user_id_,tenant_id_,create_time_)
+		VALUES(#{organId},#{examinationBasicId},#{transDirection},#{amount},#{transTime},#{memo},#{operatorUserId},#{tenantId},NOW())
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.keao.edu.user.entity.ExamManualLedger">
 		UPDATE exam_manual_ledger
 		<set>
+			<if test="organId!=null">
+				organ_id_=#{organId},
+			</if>
 			<if test="examinationBasicId != null">
 				examination_basic_id_ = #{examinationBasicId},
 			</if>
@@ -82,4 +88,39 @@
 		SELECT COUNT(*) FROM exam_manual_ledger
 		WHERE examination_basic_id_=#{examId}
 	</select>
+
+	<sql id="queryExamManualLedgersCondition">
+		<where>
+			examination_basic_id_=#{examId}
+		</where>
+	</sql>
+
+	<select id="queryExamManualLedgers" resultMap="ExamManualLedger" parameterType="map">
+		SELECT
+			eml.*,
+			o.name_ organ_name_,
+			su.real_name_ user_real_name_
+		FROM
+			exam_manual_ledger eml
+		LEFT JOIN organization o ON eml.organ_id_ = o.id_
+		LEFT JOIN sys_user su ON eml.operator_user_id_ = su.id_
+		<include refid="queryExamManualLedgersCondition"/>
+		ORDER BY id_
+		<include refid="global.limit"/>
+	</select>
+
+	<select id="countExamManualLedgers" resultType="int">
+		SELECT COUNT(*) FROM exam_manual_ledger
+		<include refid="queryExamManualLedgersCondition"/>
+	</select>
+
+	<select id="getExamManualLedgerStatistics" resultType="com.keao.edu.user.dto.ExamManualLedgerStatisticsDto">
+		SELECT
+			COUNT( id_ ) expenditureNum,
+			SUM( amount_ ) expenditureFee
+		FROM
+			exam_manual_ledger
+		WHERE
+			trans_direction_ = 'EXPENDITURE';
+	</select>
 </mapper>

+ 80 - 2
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationMapper.xml

@@ -34,6 +34,12 @@
 		<association property="examinationBasic" columnPrefix="examination_basic_" resultMap="com.keao.edu.user.dao.ExaminationBasicDao.ExaminationBasic"/>
 	</resultMap>
 
+	<resultMap id="ExamRegistrationRoomDto" type="com.keao.edu.user.dto.ExamRegistrationRoomDto" extends="ExamRegistration">
+		<result column="exam_room_id_" property="examRoomId"/>
+		<result column="exam_start_time_" property="examStartTime"/>
+		<result column="exam_end_time_" property="examEndTime"/>
+	</resultMap>
+
 	<!-- 根据主键查询一条记录 -->
 	<select id="get" resultMap="ExamRegistration" >
 		SELECT * FROM exam_registration WHERE id_ = #{id}
@@ -171,6 +177,78 @@
 		SELECT COUNT(*) FROM exam_registration er
 		<include refid="queryCondition"/>
 	</select>
+
+	<sql id="queryExamRegistCondition">
+		<where>
+			<if test="organIds!=null">
+				AND er.organ_id_ IN
+				<foreach collection="organIds" item="organId" separator="," open="(" close=")">
+					#{organId}
+				</foreach>
+			</if>
+			<if test="examId!=null">
+				AND er.examination_basic_id_ = #{examId}
+			</if>
+			<if test="organId!=null">
+				AND er.organ_id_ = #{organId}
+			</if>
+			<if test="subjectId!=null">
+				AND er.subject_id_ = #{subjectId}
+			</if>
+			<if test="level!=null">
+				AND er.level_ = #{level}
+			</if>
+			<if test="status!=null">
+				AND er.status_ = #{status,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler}
+			</if>
+			<if test="inRoom!=null and inRoom=0">
+				AND ersr.exam_room_id_ IS NULL
+			</if>
+			<if test="inRoom!=null and inRoom=1">
+				AND ersr.exam_room_id_ IS NOT NULL
+			</if>
+		</where>
+	</sql>
+
+	<select id="queryExamRegist" resultMap="ExamRegistrationRoomDto" parameterType="map">
+		SELECT
+			er.id_,
+			er.examination_basic_id_,
+			er.exam_music_theory_level_,
+			er.card_no_,
+			er.student_id_,
+			er.memo_,
+			su.real_name_ sys_user_real_name_,
+			er.last_exam_certificate_url_,
+			er.last_music_theory_certificate_url_,
+			er.level_fee_,
+			er.theory_level_fee_,
+			er.organ_id_,
+			er.subject_id_,
+			er.level_,
+			erp.trans_amount_,
+			er.status_,
+			er.create_time_,
+			ersr.exam_room_id_,
+			ero.exam_start_time_,
+			ero.exam_end_time_
+		FROM
+			exam_registration er
+			LEFT JOIN sys_user su ON er.student_id_ = su.id_
+			LEFT JOIN exam_registration_payment erp ON er.id_ = erp.exam_registration_id_
+			LEFT JOIN exam_room_student_relation ersr ON ersr.exam_registration_id_ = er.id_
+			LEFT JOIN exam_room ero ON ero.id_ = ersr.exam_room_id_
+		<include refid="queryCondition"/>
+		ORDER BY er.id_
+		<include refid="global.limit"/>
+	</select>
+
+	<select id="countExamRegist" resultType="int">
+		SELECT COUNT(*) FROM exam_registration er
+		LEFT JOIN exam_room_student_relation ersr ON ersr.exam_registration_id_ = er.id_
+		<include refid="queryCondition"/>
+	</select>
+
     <select id="countWithoutExamRoomStudentNum" resultType="int">
 		SELECT
 			COUNT(ersr.id_)
@@ -193,10 +271,10 @@
 			COUNT(ersr.id_)
 		FROM
 			exam_room_student_relation ersr
-		LEFT JOIN exam_registration er ON ersr.student_id_ = er.student_id_ AND er.examination_basic_id_=ersr.examination_basic_id_
+		LEFT JOIN exam_registration er ON ersr.exam_registration_id_ = er.id_
 		WHERE 1=1
 		<if test="organIds!=null">
-			er.organ_id_ IN
+			AND er.organ_id_ IN
 			<foreach collection="organIds" item="organI" separator="," open="(" close=")">
 				#{organI}
 			</foreach>

+ 2 - 1
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationPaymentMapper.xml

@@ -151,7 +151,7 @@
 
     <!-- 分页查询 -->
     <select id="getOrderPageList" resultMap="ExamRegistrationPaymentDto" parameterType="map">
-        SELECT erp.*,eb.exam_location_id_list_ FROM exam_registration_payment erp
+        SELECT erp.*,eb.exam_location_id_list_,ec.card_no_ FROM exam_registration_payment erp
         LEFT JOIN exam_certification ec ON erp.exam_registration_id_ = ec.exam_registration_id_
         LEFT JOIN examination_basic eb ON erp.examination_basic_id_ = eb.id_
         <include refid="queryCondition" />
@@ -198,6 +198,7 @@
     </select>
 
     <resultMap id="ExamRegistrationPaymentDto" type="com.keao.edu.user.dto.ExamRegistrationPaymentDto" extends="ExamRegistrationPayment">
+        <result column="card_no_" property="cardNo"/>
         <association property="examRegistration" select="com.keao.edu.user.dao.ExamRegistrationDao.getExamRegistrationInfo" column="{id=exam_registration_id_}"/>
         <association property="examLocations"  select="com.keao.edu.user.dao.ExamLocationDao.getExamLocationByIds" column="{ids=exam_location_id_list_}"/>
     </resultMap>

+ 42 - 10
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRoomMapper.xml

@@ -12,8 +12,11 @@
 		<result column="exam_mode_" property="examMode" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler"/>
 		<result column="exam_location_id_" property="examLocationId" />
 		<result column="subject_id_list_" property="subjectIdList" />
+		<result column="subject_name_list_" property="subjectNameList"/>
 		<result column="main_teacher_user_id_" property="mainTeacherUserId" />
+		<result column="main_teacher_user_name_" property="mainTeacherName"/>
 		<result column="assistant_teacher_user_id_list_" property="assistantTeacherUserIdList" />
+		<result column="assistant_teacher_user_name_list_" property="assistantTeacherUserNameList"/>
 		<result column="exam_start_time_" property="examStartTime" />
 		<result column="exam_end_time_" property="examEndTime" />
 		<result column="del_flag_" property="delFlag" />
@@ -37,23 +40,26 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.keao.edu.user.api.entity.ExamRoom" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO exam_room (id_,examination_basic_id_,exam_mode_,exam_location_id_,subject_id_list_,main_teacher_user_id_,
-		assistant_teacher_user_id_list_,exam_start_time_,exam_end_time_,del_flag_,organ_id_,exam_plan_push_flag_,
+		INSERT INTO exam_room (id_,examination_basic_id_,exam_mode_,exam_location_id_,subject_id_list_,subject_name_list_,
+		main_teacher_user_id_,main_teacher_user_name_,assistant_teacher_user_id_list_,assistant_teacher_user_name_list_,
+		exam_start_time_,exam_end_time_,del_flag_,organ_id_,exam_plan_push_flag_,
 		exam_room_student_num_,create_time_,update_time_,tenant_id_)
-		VALUES(#{id},#{examinationBasicId},#{examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{examLocationId},#{subjectIdList},
-		#{mainTeacherUserId},#{assistantTeacherUserIdList},
+		VALUES(#{id},#{examinationBasicId},#{examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{examLocationId},
+		#{subjectIdList},#{subjectNameList},#{mainTeacherUserId},#{mainTeacherName},#{assistantTeacherUserIdList},#{assistantTeacherUserNameList},
 		#{examStartTime},#{examEndTime},#{delFlag},#{organId},#{examPlanPushFlag,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
 		#{examRoomStudentNum},NOW(),NOW(),#{tenantId})
 	</insert>
 
 	<insert id="batchInsert" parameterType="com.keao.edu.user.api.entity.ExamRoom" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO exam_room (examination_basic_id_,exam_mode_,exam_location_id_,subject_id_list_,main_teacher_user_id_,
-		assistant_teacher_user_id_list_,exam_start_time_,exam_end_time_,del_flag_,organ_id_,exam_plan_push_flag_,
+		INSERT INTO exam_room (examination_basic_id_,exam_mode_,exam_location_id_,subject_id_list_,subject_name_list_,
+		main_teacher_user_id_,main_teacher_user_name_,assistant_teacher_user_id_list_,assistant_teacher_user_name_list_,
+		exam_start_time_,exam_end_time_,del_flag_,organ_id_,exam_plan_push_flag_,
 		exam_room_student_num_,create_time_,update_time_,tenant_id_)
 		VALUES
 		<foreach collection="examRooms" item="examRoom" separator=",">
 			(#{examRoom.examinationBasicId},#{examRoom.examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{examRoom.examLocationId},
-			#{examRoom.subjectIdList},#{examRoom.mainTeacherUserId},#{examRoom.assistantTeacherUserIdList},
+			#{examRoom.subjectIdList},#{examRoom.subjectNameList},
+			#{examRoom.mainTeacherUserId},#{examRoom.mainTeacherName},#{examRoom.assistantTeacherUserIdList},#{examRoom.assistantTeacherUserNameList},
 			#{examRoom.examStartTime},#{examRoom.examEndTime},#{examRoom.delFlag},#{examRoom.organId},#{examRoom.examPlanPushFlag,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
 			#{examRoom.examRoomStudentNum},NOW(),NOW(),#{examRoom.tenantId})
 		</foreach>
@@ -78,6 +84,9 @@
 			<if test="subjectIdList != null">
 				subject_id_list_ = #{subjectIdList},
 			</if>
+			<if test="subjectNameList != null">
+				subject_name_list_ = #{subjectNameList},
+			</if>
 			<if test="tenantId != null">
 				tenant_id_ = #{tenantId},
 			</if>
@@ -90,9 +99,15 @@
 			<if test="mainTeacherUserId != null">
 				main_teacher_user_id_ = #{mainTeacherUserId},
 			</if>
+			<if test="mainTeacherName != null">
+				main_teacher_user_name_ = #{mainTeacherName},
+			</if>
 			<if test="assistantTeacherUserIdList != null">
 				assistant_teacher_user_id_list_ = #{assistantTeacherUserIdList},
 			</if>
+			<if test="assistantTeacherUserNameList != null">
+				assistant_teacher_user_name_list_ = #{assistantTeacherUserNameList},
+			</if>
 			<if test="organId != null">
 				organ_id_ = #{organId},
 			</if>
@@ -124,6 +139,9 @@
 			<if test="subjectIdList != null">
 				subject_id_list_ = #{subjectIdList},
 			</if>
+			<if test="subjectNameList != null">
+				subject_name_list_ = #{subjectNameList},
+			</if>
 			<if test="tenantId != null">
 				tenant_id_ = #{tenantId},
 			</if>
@@ -136,9 +154,15 @@
 			<if test="mainTeacherUserId != null">
 				main_teacher_user_id_ = #{mainTeacherUserId},
 			</if>
+			<if test="mainTeacherName != null">
+				main_teacher_user_name_ = #{mainTeacherName},
+			</if>
 			<if test="assistantTeacherUserIdList != null">
 				assistant_teacher_user_id_list_ = #{assistantTeacherUserIdList},
 			</if>
+			<if test="assistantTeacherUserNameList != null">
+				assistant_teacher_user_name_list_ = #{assistantTeacherUserNameList},
+			</if>
 			<if test="organId != null">
 				organ_id_ = #{organId},
 			</if>
@@ -207,8 +231,8 @@
 	</sql>
 	
 	<resultMap type="com.keao.edu.user.dto.ExamRoomDto" id="ExamRoomDto" extends="ExamRoom">
-		<association property="examLocation" javaType="com.keao.edu.user.entity.ExamLocation" resultMap="com.keao.edu.user.dao.ExamLocationDao.ExamLocation"/>
-		<association property="examinationBasic" javaType="com.keao.edu.user.entity.ExaminationBasic" resultMap="com.keao.edu.user.dao.ExaminationBasicDao.ExaminationBasic"/>
+		<association property="examLocation" columnPrefix="el_" resultMap="com.keao.edu.user.dao.ExamLocationDao.ExamLocation"/>
+		<association property="examinationBasic" columnPrefix="exam_" resultMap="com.keao.edu.user.dao.ExaminationBasicDao.ExaminationBasic"/>
 	</resultMap>
 	
     <select id="countExamRoomPage" resultType="java.lang.Integer">
@@ -219,7 +243,12 @@
 	</select>
 	
 	<select id="queryExamRoomPage" resultMap="ExamRoomDto">
-		SELECT er.*,eb.* FROM exam_room er
+		SELECT
+			er.*,
+			el.id_ el_id_,
+			el.name_ el_name_,
+			eb.name_ exam_name_
+		FROM exam_room er
 		LEFT JOIN exam_location el ON er.exam_location_id_ = el.id_ AND er.tenant_id_ = el.tenant_id_
 		LEFT JOIN examination_basic eb ON FIND_IN_SET(er.exam_location_id_,eb.exam_location_id_list_) AND er.tenant_id_ = eb.tenant_id_
 		<include refid="queryExamRoomPageSql"/>
@@ -255,4 +284,7 @@
 				#{day}
 			</foreach>
 	</select>
+	<select id="getWithExamAndSubject" resultMap="ExamRoom">
+		SELECT * FROM exam_room WHERE examination_basic_id_=#{examId} AND FIND_IN_SET(#{subjectId}, subject_id_list_);
+	</select>
 </mapper>

+ 11 - 7
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRoomStudentRelationMapper.xml

@@ -9,6 +9,7 @@
 	<resultMap type="com.keao.edu.user.api.entity.ExamRoomStudentRelation" id="ExamRoomStudentRelation">
 		<result column="id_" property="id" />
 		<result column="examination_basic_id_" property="examinationBasicId" />
+		<result column="exam_registration_id_" property="examRegistrationId" />
 		<result column="exam_room_id_" property="examRoomId" />
 		<result column="student_id_" property="studentId" />
 		<result column="classroom_switch_" property="classroomSwitch" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler"/>
@@ -35,15 +36,15 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.keao.edu.user.api.entity.ExamRoomStudentRelation" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO exam_room_student_relation (id_,examination_basic_id_,exam_room_id_,student_id_,create_time_,update_time_,tenant_id_)
-		VALUES(#{id},#{examinationBasicId},#{examRoomId},#{studentId},NOW(),NOW(),#{tenantId})
+		INSERT INTO exam_room_student_relation (id_,examination_basic_id_,exam_registration_id_,exam_room_id_,student_id_,create_time_,update_time_,tenant_id_)
+		VALUES(#{id},#{examinationBasicId},#{examRegistrationId},#{examRoomId},#{studentId},NOW(),NOW(),#{tenantId})
 	</insert>
 
 	<insert id="batchInsert" parameterType="com.keao.edu.user.api.entity.ExamRoomStudentRelation" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO exam_room_student_relation (examination_basic_id_,exam_room_id_,student_id_,create_time_,update_time_,tenant_id_)
+		INSERT INTO exam_room_student_relation (examination_basic_id_,exam_registration_id_,exam_room_id_,student_id_,create_time_,update_time_,tenant_id_)
 		VALUES
 		<foreach collection="roomStudents" item="roomStudent" separator=",">
-			(#{roomStudent.examinationBasicId},#{roomStudent.examRoomId},#{roomStudent.studentId},NOW(),NOW(),#{roomStudent.tenantId})
+			(#{roomStudent.examinationBasicId},#{roomStudent.examRegistrationId},#{roomStudent.examRoomId},#{roomStudent.studentId},NOW(),NOW(),#{roomStudent.tenantId})
 		</foreach>
 	</insert>
 	
@@ -54,12 +55,12 @@
 			<if test="examinationBasicId != null">
 				examination_basic_id_ = #{examinationBasicId},
 			</if>
+			<if test="examRegistrationId != null">
+				exam_registration_id_ = #{examRegistrationId},
+			</if>
 			<if test="classroomSwitch != null">
 				classroom_switch_ = #{classroomSwitch,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
 			</if>
-			<if test="id != null">
-				id_ = #{id},
-			</if>
 			<if test="tenantId != null">
 				tenant_id_ = #{tenantId},
 			</if>
@@ -169,4 +170,7 @@
 			AND student_id_ = #{studentId}
 		</if>
 	</select>
+    <select id="getStudentExamRoom" resultMap="ExamRoomStudentRelation">
+		SELECT * FROM exam_room_student_relation WHERE exam_registration_id_=#{registId}
+    </select>
 </mapper>

+ 21 - 4
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamTeacherSalaryMapper.xml

@@ -154,15 +154,21 @@
 	<sql id="queryExamTeacherSalaryCondition">
 		<where>
 			<if test="examId!=null">
-				ets.examination_basic_id_ = #{examId}
+				AND ets.examination_basic_id_ = #{examId}
 			</if>
 			<if test="teacherId!=null">
-				ets.teacher_id_=#{teacherId}
+				AND ets.teacher_id_=#{teacherId}
+			</if>
+			<if test="settlementType!=null">
+				AND ets.settlement_type_ = #{settlementType,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler}
+			</if>
+			<if test="search!=null">
+				AND (ets.teacher_id_=#{search} OR su.real_name_ LIKE CONCAT(#{search}, '%'))
 			</if>
 		</where>
 	</sql>
 
-	<select id="queryExamTeacherSalary" resultMap="ExamTeacherSalary" parameterType="map">
+	<select id="queryExamTeacherSalary" resultMap="ExamTeacherSalaryDto" parameterType="map">
 		SELECT ets.*,su.real_name_ teacher_real_name_
 		FROM exam_teacher_salary ets
 		LEFT JOIN sys_user su ON ets.teacher_id_=su.id_
@@ -172,6 +178,7 @@
 
 	<select id="countExamTeacherSalary" resultType="int">
 		SELECT COUNT(*) FROM exam_teacher_salary ets
+		LEFT JOIN sys_user su ON ets.teacher_id_=su.id_
 		<include refid="queryExamTeacherSalaryCondition"/>
 	</select>
 
@@ -205,7 +212,7 @@
 	<select id="queryUnRelatedWithExamTeachers" resultMap="com.keao.edu.user.dao.TeacherDao.TeacherDto">
 		SELECT
 			t.*,
-			su.real_name_ teacher_real_name_
+			su.real_name_ sys_user_real_name_
 		FROM
 			teacher t
 			LEFT JOIN sys_user su ON t.user_id_ = su.id_
@@ -222,5 +229,15 @@
 			LEFT JOIN sys_user su ON t.user_id_ = su.id_
 		<include refid="queryUnRelatedWithExamTeachersCondition"/>
 	</select>
+    <select id="getExamTeacherSalaryStaticsInfo"
+            resultType="com.keao.edu.user.dto.ExamTeacherSalaryStaticsInfo">
+		SELECT
+			COUNT(DISTINCT teacher_id_)  teacherNum,
+			SUM(total_settlement_fee_) expectExpenseAmount
+		FROM
+			exam_teacher_salary
+		WHERE
+			examination_basic_id_ =#{examId}
+	</select>
 
 </mapper>

+ 10 - 4
edu-user/edu-user-server/src/main/resources/config/mybatis/ExaminationBasicMapper.xml

@@ -11,6 +11,7 @@
 		<result column="name_" property="name" />
 		<result column="exam_mode_" property="examMode" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler" />
 		<result column="exam_location_id_list_" property="examLocationIdList" />
+		<result column="exam_location_name_list_" property="examLocationNameList" />
 		<result column="status_" property="status" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler" />
 		<result column="enroll_start_time_" property="enrollStartTime" />
 		<result column="enroll_end_time_" property="enrollEndTime" />
@@ -46,8 +47,8 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.keao.edu.user.entity.ExaminationBasic" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO examination_basic (id_,name_,exam_mode_,exam_location_id_list_,status_,enroll_start_time_,enroll_end_time_,expect_exam_start_time_,expect_exam_end_time_,poster_title_,poster_profile_,poster_background_img_,creator_id_,create_time_,update_time_,tenant_id_,memo_,organ_id_)
-		VALUES(#{id},#{name},#{examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{examLocationIdList},#{status,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{enrollStartTime},#{enrollEndTime},#{expectExamStartTime},#{expectExamEndTime},#{posterTitle},#{posterProfile},#{posterBackgroundImg},#{creatorId},NOW(),NOW(),#{tenantId},#{memo},#{organId})
+		INSERT INTO examination_basic (id_,name_,exam_mode_,exam_location_id_list_,exam_location_name_list_,status_,enroll_start_time_,enroll_end_time_,expect_exam_start_time_,expect_exam_end_time_,poster_title_,poster_profile_,poster_background_img_,creator_id_,create_time_,update_time_,tenant_id_,memo_,organ_id_)
+		VALUES(#{id},#{name},#{examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{examLocationIdList},#{examLocationNameList},#{status,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{enrollStartTime},#{enrollEndTime},#{expectExamStartTime},#{expectExamEndTime},#{posterTitle},#{posterProfile},#{posterBackgroundImg},#{creatorId},NOW(),NOW(),#{tenantId},#{memo},#{organId})
 	</insert>
 
 	<update id="update" parameterType="com.keao.edu.user.entity.ExamOrganizationRelation">
@@ -62,6 +63,9 @@
 			<if test="examLocationIdList != null">
 				exam_location_id_list_ = #{examLocationIdList},
 			</if>
+			<if test="examLocationNameList != null">
+				exam_location_name_list_ = #{examLocationNameList},
+			</if>
 			<if test="status != null">
 				status_ = #{status,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
 			</if>
@@ -112,6 +116,9 @@
 				<if test="examLocationIdList != null">
 					exam_location_id_list_ = #{exam.examLocationIdList},
 				</if>
+				<if test="examLocationNameList != null">
+					exam_location_name_list_ = #{exam.examLocationNameList},
+				</if>
 				<if test="status != null">
 					status_ = #{exam.status,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
 				</if>
@@ -198,8 +205,7 @@
 
 	<select id="getExams" resultMap="ExaminationBasicDto">
 		SELECT * FROM examination_basic
-		WHERE status_ IN ('EXAM_END')
-		AND id_ IN
+		WHERE id_ IN
 		<foreach collection="examIds" item="examId" separator="," open="(" close=")">
 			#{examId}
 		</foreach>

+ 3 - 0
edu-user/edu-user-server/src/main/resources/config/mybatis/MusicTheoryMapper.xml

@@ -92,4 +92,7 @@
 	<select id="getWithTenant" resultMap="MusicTheory">
 		SELECT * FROM music_theory WHERE tenant_id_=#{tenantId}
 	</select>
+    <select id="getWithTenantAndLevel" resultMap="MusicTheory">
+		SELECT * FROM music_theory WHERE tenant_id_=#{tenantId} AND level_=#{level}
+    </select>
 </mapper>

+ 3 - 3
edu-user/edu-user-server/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -19,7 +19,7 @@
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 		<result column="tenant_id_" property="tenantId" />
-		<association property="sysUser" resultMap="com.keao.edu.user.dao.SysUserDao.SysUser"/>
+		<association property="sysUser" columnPrefix="sys_user_" resultMap="com.keao.edu.user.dao.SysUserDao.SysUser"/>
 	</resultMap>
 
 	<resultMap id="TeacherDto" type="com.keao.edu.user.dto.TeacherDto" extends="Teacher">
@@ -112,8 +112,8 @@
 
     <select id="getWithTeachers" resultMap="Teacher">
 		SELECT * FROM teacher WHERE user_id_ IN
-		<foreach collection="teacherIds" item="teacherId" separator=",">
-			(#{teacherId})
+		<foreach collection="teacherIds" item="teacherId" separator="," open="(" close=")">
+			#{teacherId}
 		</foreach>
 	</select>
 	<select id="queryTeacherSubjectNames" resultType="java.util.Map">