瀏覽代碼

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

# Conflicts:
#	edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/ExaminationBasicService.java
#	edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExaminationBasicServiceImpl.java
#	edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExaminationBasicController.java
zouxuan 5 年之前
父節點
當前提交
d8f12767e6
共有 15 個文件被更改,包括 181 次插入44 次删除
  1. 3 4
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/dao/ExamManualLedgerDao.java
  2. 19 1
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/dao/ExaminationBasicDao.java
  3. 28 0
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/dto/ExamStatisticsDto.java
  4. 3 3
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/page/ExamManualLedgerQueryInfo.java
  5. 1 2
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/ExamManualLedgerService.java
  6. 13 0
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/ExaminationBasicService.java
  7. 2 5
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamManualLedgerServiceImpl.java
  8. 5 2
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamRoomServiceImpl.java
  9. 36 0
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExaminationBasicServiceImpl.java
  10. 10 2
      edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/StudentExamResultServiceImpl.java
  11. 8 16
      edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamManualLedgerMapper.xml
  12. 30 0
      edu-user/edu-user-biz/src/main/resources/config/mybatis/ExaminationBasicMapper.xml
  13. 2 3
      edu-user/edu-user-biz/src/main/resources/config/mybatis/StudentExamResultMapper.xml
  14. 4 6
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamManualLedgerController.java
  15. 17 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExaminationBasicController.java

+ 3 - 4
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/dao/ExamManualLedgerDao.java

@@ -3,6 +3,8 @@ 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 com.keao.edu.user.page.ExamManualLedgerQueryInfo;
+
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
@@ -20,12 +22,9 @@ public interface ExamManualLedgerDao extends BaseDAO<Long, ExamManualLedger> {
      * @describe 获取考级项目支出统计信息
      * @author Joburgess
      * @date 2020.07.09
-     * @param examId:
      * @return com.keao.edu.user.dto.ExamManualLedgerStatisticsDto
      */
-    ExamManualLedgerStatisticsDto getExamManualLedgerStatistics(@Param("organId") Integer organId,
-                                                                @Param("examId") Long examId,
-                                                                @Param("targetOrganId") Integer targetOrganId);
+    ExamManualLedgerStatisticsDto getExamManualLedgerStatistics(ExamManualLedgerQueryInfo queryInfo);
 
 
     List<ExamManualLedger> getExamOrganManualLedgers(@Param("organId") Integer organId,

+ 19 - 1
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/dao/ExaminationBasicDao.java

@@ -1,6 +1,7 @@
 package com.keao.edu.user.dao;
 
 import com.keao.edu.common.dal.BaseDAO;
+import com.keao.edu.user.dto.ExamStatisticsDto;
 import com.keao.edu.user.dto.ExaminationBasicDto;
 import com.keao.edu.user.entity.ExaminationBasic;
 import org.apache.ibatis.annotations.Param;
@@ -37,5 +38,22 @@ public interface ExaminationBasicDao extends BaseDAO<Long, ExaminationBasic> {
     List<ExaminationBasic> getNeedUpdateStatusExams();
 
     List<ExaminationBasicDto> getExams(@Param("examIds") List<Long> examIds);
-	
+
+    /**
+     * @describe 获取进行中的项目(只包含报名中与报名结束的最近创建的6个考级项目)
+     * @author Joburgess
+     * @date 2020.08.12
+     * @param organIds:
+     * @return java.util.List<com.keao.edu.user.dto.ExaminationBasicDto>
+     */
+    List<ExaminationBasicDto> getUnderwayExams(@Param("organs") List<Integer> organIds);
+
+    /**
+     * @describe 获取机构考级项目统计信息
+     * @author Joburgess
+     * @date 2020.08.12
+     * @param organIds:
+     * @return com.keao.edu.user.dto.ExamStatisticsDto
+     */
+    ExamStatisticsDto getTenantExamStatistics(@Param("organs") List<Integer> organIds);
 }

+ 28 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/dto/ExamStatisticsDto.java

@@ -0,0 +1,28 @@
+package com.keao.edu.user.dto;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.08.12
+ */
+public class ExamStatisticsDto {
+
+    private Integer underWayExamNum;
+
+    private Integer totalExamNum;
+
+    public Integer getUnderWayExamNum() {
+        return underWayExamNum;
+    }
+
+    public void setUnderWayExamNum(Integer underWayExamNum) {
+        this.underWayExamNum = underWayExamNum;
+    }
+
+    public Integer getTotalExamNum() {
+        return totalExamNum;
+    }
+
+    public void setTotalExamNum(Integer totalExamNum) {
+        this.totalExamNum = totalExamNum;
+    }
+}

+ 3 - 3
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/page/ExamManualLedgerQueryInfo.java

@@ -12,7 +12,7 @@ public class ExamManualLedgerQueryInfo extends QueryInfo {
 
     private Integer targetOrganId;
 
-    private Long examId;
+    private String examId;
     
     private Date startTime;
     
@@ -28,11 +28,11 @@ public class ExamManualLedgerQueryInfo extends QueryInfo {
         this.targetOrganId = targetOrganId;
     }
 
-	public Long getExamId() {
+	public String getExamId() {
 		return examId;
 	}
 
-	public void setExamId(Long examId) {
+	public void setExamId(String examId) {
 		this.examId = examId;
 	}
 

+ 1 - 2
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/ExamManualLedgerService.java

@@ -23,9 +23,8 @@ public interface ExamManualLedgerService extends BaseService<Long, ExamManualLed
      * @describe 获取考级项目支出统计信息
      * @author Joburgess
      * @date 2020.07.09
-     * @param examId:
      * @return com.keao.edu.user.dto.ExamManualLedgerStatisticsDto
      */
-    ExamManualLedgerStatisticsDto getExamManualLedgerStatistics(Integer organId,Long examId, Integer targetOrganId);
+    ExamManualLedgerStatisticsDto getExamManualLedgerStatistics(ExamManualLedgerQueryInfo queryInfo);
 
 }

+ 13 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/ExaminationBasicService.java

@@ -7,6 +7,8 @@ import com.keao.edu.user.entity.ExaminationBasic;
 import com.keao.edu.user.enums.ExamStatusEnum;
 import com.keao.edu.user.page.ExaminationQueryInfo;
 
+import java.util.Map;
+
 public interface ExaminationBasicService extends BaseService<Long, ExaminationBasic> {
 
     /**
@@ -82,8 +84,19 @@ public interface ExaminationBasicService extends BaseService<Long, ExaminationBa
     ExaminationBasic getInfo(Integer examId);
 
     /**
+     * @describe 获取首页进行中项目
+     * @author Joburgess
+     * @date 2020.08.12
+     * @param organId:
+     * @return java.util.Map<java.lang.String,java.lang.Object>
+     */
+    Map<String, Object> getHomePageExams(Integer organId);
+
+
+    /**
      * 获取首页收入支出
      * @return
      */
     Object homeBalanceOfPayment(String tenantId,Integer day);
+
 }

+ 2 - 5
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamManualLedgerServiceImpl.java

@@ -106,10 +106,7 @@ public class ExamManualLedgerServiceImpl extends BaseServiceImpl<Long, ExamManua
 	}
 
 	@Override
-	public ExamManualLedgerStatisticsDto getExamManualLedgerStatistics(Integer organId, Long examId, Integer targetOrganId) {
-		if(Objects.isNull(examId)){
-			throw new BizException("请指定考级项目");
-		}
-		return examManualLedgerDao.getExamManualLedgerStatistics(organId, examId, targetOrganId);
+	public ExamManualLedgerStatisticsDto getExamManualLedgerStatistics(ExamManualLedgerQueryInfo queryInfo) {
+		return examManualLedgerDao.getExamManualLedgerStatistics(queryInfo);
 	}
 }

+ 5 - 2
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamRoomServiceImpl.java

@@ -266,6 +266,7 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public ExamRoom updateExamRoom(ExamRoom examRoom) {
 		if(Objects.isNull(examRoom.getId())){
 			throw new BizException("请指定考场");
@@ -363,8 +364,10 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 				throw new BizException("考试地址不存在");
 			}
 			List<ExamRoomStudentRelation> examRoomStudents = examRoomStudentRelationDao.findStudentsWithExamRoom(examRoom.getId());
-			List<Long> registIds = examRoomStudents.stream().map(ExamRoomStudentRelation::getExamRegistrationId).collect(Collectors.toList());
-			examCertificationDao.updateExamAddress(examLocation.getAddress(), registIds);
+			if(!CollectionUtils.isEmpty(examRoomStudents)){
+				List<Long> registIds = examRoomStudents.stream().map(ExamRoomStudentRelation::getExamRegistrationId).collect(Collectors.toList());
+				examCertificationDao.updateExamAddress(examLocation.getAddress(), registIds);
+			}
 		}
 		return examRoom;
 	}

+ 36 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExaminationBasicServiceImpl.java

@@ -13,6 +13,7 @@ import com.keao.edu.thirdparty.message.provider.YimeiSmsPlugin;
 import com.keao.edu.user.api.enums.ExamModeEnum;
 import com.keao.edu.user.dao.*;
 import com.keao.edu.user.dto.ExamRoomExamTimeDto;
+import com.keao.edu.user.dto.ExamStatisticsDto;
 import com.keao.edu.user.dto.ExaminationBasicDto;
 import com.keao.edu.user.entity.*;
 import com.keao.edu.user.enums.ExamStatusEnum;
@@ -447,6 +448,41 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
     }
 
     @Override
+    public Map<String, Object> getHomePageExams(Integer organId) {
+        Map<String, Object> result=new HashMap<>();
+        List<Integer> childOrganIds = organizationService.getChildOrganIds(organId, true);
+        List<ExaminationBasicDto> dataList = examinationBasicDao.getUnderwayExams(childOrganIds);
+        if(CollectionUtils.isEmpty(dataList)){
+            return result;
+        }
+
+        List<Long> examIds = dataList.stream().map(ExaminationBasicDto::getId).collect(Collectors.toList());
+        List<ExamOrganizationRelation> examOrgans = new ArrayList<>();
+        if (!CollectionUtils.isEmpty(examIds)) {
+            examOrgans = examOrganizationRelationDao.getWithExamsAndOrgans(examIds, childOrganIds);
+        }
+        Map<Integer, List<ExamOrganizationRelation>> examOrgansMap = new HashMap<>();
+        if (!CollectionUtils.isEmpty(examOrgans)) {
+            examOrgansMap = examOrgans.stream().collect(Collectors.groupingBy(ExamOrganizationRelation::getExaminationBasicId));
+        }
+        for (ExaminationBasicDto examinationBasicDto : dataList) {
+            List<ExamOrganizationRelation> examOrganizationRelations = examOrgansMap.get(examinationBasicDto.getId().intValue());
+            if (CollectionUtils.isEmpty(examOrganizationRelations)) {
+                continue;
+            }
+            Integer totalRegistrationStudentNum = examOrganizationRelations.stream().mapToInt(ExamOrganizationRelation::getSelfRegistrationStudentNum).sum();
+            BigDecimal totalPaymentAmount = examOrganizationRelations.stream().map(ExamOrganizationRelation::getSelfPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            examinationBasicDto.setTotalRegistrationStudentNum(totalRegistrationStudentNum);
+            examinationBasicDto.setTotalPaymentAmount(totalPaymentAmount);
+        }
+        result.put("exams", dataList);
+        ExamStatisticsDto tenantExamStatistics = examinationBasicDao.getTenantExamStatistics(childOrganIds);
+        result.put("statistics", tenantExamStatistics);
+        return result;
+    }
+
+
+    @Override
     public Object homeBalanceOfPayment(String tenantId,Integer day) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         BigDecimal annualIncome = examRegistrationPaymentDao.getAnnualIncome(tenantId);

+ 10 - 2
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/StudentExamResultServiceImpl.java

@@ -19,6 +19,7 @@ import com.keao.edu.user.api.entity.ExamRoom;
 import com.keao.edu.user.api.entity.ExamRoomStudentRelation;
 import com.keao.edu.user.api.entity.Student;
 import com.keao.edu.user.api.enums.ExamEvaluationResultEnum;
+import com.keao.edu.user.api.enums.ExamModeEnum;
 import com.keao.edu.user.api.enums.StudentExamResultApiDto;
 import com.keao.edu.user.dao.ExamReviewDao;
 import com.keao.edu.user.dao.ExaminationBasicDao;
@@ -125,9 +126,16 @@ public class StudentExamResultServiceImpl extends BaseServiceImpl<Long, StudentE
 		if(Objects.isNull(oldStudentExamResult)){
 			throw new BizException("考试结果不存在");
 		}
-		if(Objects.isNull(oldStudentExamResult.getAvgScore())){
+		ExamRoom examRoom = examRoomService.get(oldStudentExamResult.getExamRoomId());
+		if(Objects.isNull(examRoom)){
+			throw new BizException("考场信息异常");
+		}
+		if(Objects.isNull(oldStudentExamResult.getAvgScore())&& ExamModeEnum.ONLINE.equals(examRoom.getExamMode())){
 			throw new BizException("考试未结束");
 		}
+		if(ExamModeEnum.OFFLINE.equals(examRoom.getExamMode())){
+			studentExamResult.setIsFinishedExam(5);
+		}
 		ExaminationBasic examinationBasic = examinationBasicDao.get(oldStudentExamResult.getExaminationBasicId().longValue());
 		if(Objects.isNull(examinationBasic)){
 			throw new BizException("考级项目不存在");
@@ -225,7 +233,7 @@ public class StudentExamResultServiceImpl extends BaseServiceImpl<Long, StudentE
 		if(Objects.isNull(examinationBasic)){
 			throw new BizException("考级项目不存在");
 		}
-		if(examinationBasic.getStatus().getOrder()>ExamStatusEnum.APPLIED.getOrder()){
+		if(examinationBasic.getStatus().getOrder()<ExamStatusEnum.APPLIED.getOrder()){
 			return null;
 		}
 		List<Integer> childOrganIds = organizationService.getChildOrganIds(organId, true);

+ 8 - 16
edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamManualLedgerMapper.xml

@@ -156,25 +156,17 @@
 		<include refid="queryExamManualLedgersCondition"/>
 	</select>
 
-	<select id="getExamManualLedgerStatistics" resultType="com.keao.edu.user.dto.ExamManualLedgerStatisticsDto">
+	<select id="getExamManualLedgerStatistics" resultType="com.keao.edu.user.dto.ExamManualLedgerStatisticsDto" parameterType="map">
 		SELECT
-			COUNT( id_ ) expenditureNum,
-			SUM( amount_ ) expenditureFee
+			COUNT( eml.id_ ) expenditureNum,
+			SUM( eml.amount_ ) expenditureFee
 		FROM
-			exam_manual_ledger
-		WHERE
-			examination_basic_id_ = #{examId}
-			<if test="organId!=null and organId!=0">
-				AND organ_id_=#{organId}
-			</if>
-			AND trans_direction_ = 'EXPENDITURE'
-			<if test="targetOrganId!=null and targetOrganId==-99">
-				AND target_organ_id_ IS NULL
-			</if>
-			<if test="targetOrganId!=null and targetOrganId!=-99">
-				AND target_organ_id_=#{targetOrganId}
-			</if>
+			exam_manual_ledger eml
+		LEFT JOIN sys_user su ON eml.operator_user_id_ = su.id_
+		left join examination_basic eb on eb.id_ = eml.examination_basic_id_
+		<include refid="queryExamManualLedgersCondition"/>
 	</select>
+	
     <select id="getExamOrganManualLedgers" resultMap="ExamManualLedger">
 		SELECT
 			*

+ 30 - 0
edu-user/edu-user-biz/src/main/resources/config/mybatis/ExaminationBasicMapper.xml

@@ -288,4 +288,34 @@
     <select id="getEndExamsWithDayAndStatus" resultMap="ExaminationBasic">
 		SELECT * FROM examination_basic WHERE status_ IN ('EXAM_END') AND DATE_FORMAT(actual_exam_end_time_, '%Y-%m-%d') = #{day}
 	</select>
+
+    <select id="getUnderwayExams" resultMap="ExaminationBasicDto">
+		SELECT
+			*
+		FROM
+			examination_basic
+		WHERE
+			status_ IN ( 'APPLYING', 'APPLIED' )
+			AND organ_id_ IN
+			<foreach collection="organs" item="organ" separator="," open="(" close=")">
+				#{organ}
+			</foreach>
+		ORDER BY
+			create_time_ DESC
+			LIMIT 6;
+	</select>
+
+	<select id="getTenantExamStatistics" resultType="com.keao.edu.user.dto.ExamStatisticsDto">
+		SELECT
+			COUNT(id_) 'totalExamNum',
+			SUM(CASE WHEN status_!='RESULT_CONFIRM' THEN 1 ELSE 0 END) 'underWayExamNum'
+		FROM
+			examination_basic
+		WHERE
+			status_ NOT IN ( 'CLOSE', 'DELETE' )
+			AND organ_id_ IN
+			<foreach collection="organs" item="organ" separator="," open="(" close=")">
+				#{organ}
+			</foreach>
+	</select>
 </mapper>

+ 2 - 3
edu-user/edu-user-biz/src/main/resources/config/mybatis/StudentExamResultMapper.xml

@@ -232,13 +232,12 @@
 	<select id="getStudentExamResultStatisticsInfo" resultType="com.keao.edu.user.dto.StudentExamResultStatisticsDto">
 		SELECT
 			COUNT( er.id_ ) totalRegistrationStudentNum,
-			SUM( CASE WHEN ser.id_ > 0 THEN 0 ELSE 1 END ) notExamStudentNum,
+			SUM( CASE WHEN ser.is_finished_exam_ = 3 THEN 0 ELSE 1 END ) notExamStudentNum,
 			SUM( CASE WHEN ser.result_ = 'FAIL' THEN 1 ELSE 0 END ) examFailStudentNum,
 			SUM( CASE WHEN ser.id_ > 0 THEN 1 ELSE 0 END ) examStudentNum
 		FROM
 			exam_registration er
-			LEFT JOIN student_exam_result ser ON er.examination_basic_id_ = ser.examination_basic_id_
-			AND er.student_id_ = ser.student_id_
+			LEFT JOIN student_exam_result ser ON er.id_=exam_registration_id_
 		WHERE
 			er.examination_basic_id_ = #{examId}
 			AND er.status_ IN ('AUDIT_PASS', 'AUDIT_WAIT')

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

@@ -42,10 +42,7 @@ public class ExamManualLedgerController extends BaseController {
 		PageInfo<ExamManualLedger> pageInfo = examManualLedgerService.queryExamManualLedgers(queryInfo);
 		ModelMap model = new ModelMap();
 		model.put("pageInfo", pageInfo);
-		model.put("totalAmount", examManualLedgerService.queryTotalAmount(queryInfo));
-		if(Objects.nonNull(queryInfo.getExamId())){
-            model.put("statistics", examManualLedgerService.getExamManualLedgerStatistics(OrganContextHolder.getOrganId(),queryInfo.getExamId(),queryInfo.getTargetOrganId()));
-        }
+		model.put("statistics", examManualLedgerService.getExamManualLedgerStatistics(queryInfo));
 		return succeed(model);
 	}
 
@@ -82,8 +79,9 @@ public class ExamManualLedgerController extends BaseController {
     @ApiOperation("获取考级项目支出统计信息")
     @GetMapping(value = "/getExamManualLedgerStatistics")
     @PreAuthorize("@pcs.hasPermissions('examManualLedger/getExamManualLedgerStatistics')")
-    public HttpResponseResult<ExamManualLedgerStatisticsDto> getExamManualLedgerStatistics(Long examId, Integer targetOrganId){
-        return succeed(examManualLedgerService.getExamManualLedgerStatistics(OrganContextHolder.getOrganId(),examId,targetOrganId));
+    public HttpResponseResult<ExamManualLedgerStatisticsDto> getExamManualLedgerStatistics(ExamManualLedgerQueryInfo queryInfo){
+    	queryInfo.setOrganId(OrganContextHolder.getOrganId());
+        return succeed(examManualLedgerService.getExamManualLedgerStatistics(queryInfo));
     }
 
 }

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

@@ -115,6 +115,23 @@ public class ExaminationBasicController extends BaseController {
         return succeed(examinationBasicService.getInfo(examId));
     }
 
+    @ApiOperation("获取首页进行中项目")
+    @PostMapping(value = "/getHomePageExams")
+    @PreAuthorize("@pcs.hasPermissions('examinationBasic/getHomePageExams')")
+    public HttpResponseResult getHomePageExams(){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        Integer organId = null;
+        if(!sysUser.getIsSuperAdmin()){
+            Employee employee = employeeService.get(sysUser.getId());
+            if(Objects.isNull(employee)){
+                return failed("用户信息异常");
+            }
+            organId = employee.getOrganId();
+        }
+        return succeed(examinationBasicService.getHomePageExams(organId));
+    }
+
+
     @ApiOperation("获取首页收入支出")
     @PostMapping(value = "/homeBalanceOfPayment")
     @PreAuthorize("@pcs.hasPermissions('examinationBasic/homeBalanceOfPayment')")