Joburgess 5 년 전
부모
커밋
a09f52e76a

+ 18 - 0
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;
@@ -38,4 +39,21 @@ public interface ExaminationBasicDao extends BaseDAO<Long, ExaminationBasic> {
 
     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;
+    }
+}

+ 30 - 2
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExaminationBasicServiceImpl.java

@@ -12,6 +12,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;
@@ -443,8 +444,35 @@ 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);
-//        examinationBasicDao.getExaminationBasic()
-        return null;
+        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;
     }
 }

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

@@ -225,7 +225,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);

+ 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>

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

@@ -237,8 +237,7 @@
 			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')

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

@@ -113,4 +113,20 @@ public class ExaminationBasicController extends BaseController {
     public HttpResponseResult<ExaminationBasic> getInfo(Integer examId){
         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));
+    }
 }