|
@@ -17,7 +17,6 @@ import org.springframework.util.LinkedMultiValueMap;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
-import java.util.Objects;
|
|
|
|
import java.util.StringJoiner;
|
|
import java.util.StringJoiner;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -49,51 +48,61 @@ public class TEOrgSummaryServiceImpl extends ServiceImpl<TEOrgSummaryMapper, TEO
|
|
@Override
|
|
@Override
|
|
@Transactional
|
|
@Transactional
|
|
public void orgSummary(Long orgId, List<Long> examIdSet) {
|
|
public void orgSummary(Long orgId, List<Long> examIdSet) {
|
|
- TEOrgSummary teOrgSummary = themisCacheService.addOrgSummaryCache(orgId);
|
|
|
|
- if (Objects.isNull(teOrgSummary)) {//说明没有缓存
|
|
|
|
- if (orgId.longValue() == 0) {//全局机构
|
|
|
|
- Integer onlineCount = this.baseMapper.orgSummaryByOnlineCount(examIdSet);
|
|
|
|
- Integer examCount = this.baseMapper.orgSummaryByExamCount(examIdSet);
|
|
|
|
- List<Integer> finishCountList = this.baseMapper.orgSummaryByFinishCountAndFinishStudentCount(examIdSet);
|
|
|
|
- teOrgSummary = new TEOrgSummary(orgId, onlineCount, examCount, finishCountList.get(0), finishCountList.get(1));
|
|
|
|
|
|
+ int count = this.baseMapper.selectOrgSummaryCount(orgId);
|
|
|
|
+ if (orgId.longValue() == 0) {//全局机构
|
|
|
|
+ Integer onlineCount = this.baseMapper.orgSummaryByOnlineCount(examIdSet);
|
|
|
|
+ Integer examCount = this.baseMapper.orgSummaryByExamCount(examIdSet);
|
|
|
|
+ List<Integer> finishCountList = this.baseMapper.orgSummaryByFinishCountAndFinishStudentCount(examIdSet);
|
|
|
|
+ TEOrgSummary teOrgSummary = new TEOrgSummary(orgId, onlineCount, examCount, finishCountList.get(0), finishCountList.get(1));
|
|
|
|
+ if (count == 0) {
|
|
teOrgSummaryService.saveOrgSummaryCommon(teOrgSummary);
|
|
teOrgSummaryService.saveOrgSummaryCommon(teOrgSummary);
|
|
} else {
|
|
} else {
|
|
- LinkedMultiValueMap<Long, Long> orgExamIdMap = new LinkedMultiValueMap<>();
|
|
|
|
- boolean reloadDb = false;
|
|
|
|
- //先查询考试批次统计缓存
|
|
|
|
- for (Long l : examIdSet) {
|
|
|
|
- List<TEExamSummary> teExamSummaryList = themisCacheService.addExamSummaryCache(l);
|
|
|
|
- if (!CollectionUtils.isEmpty(teExamSummaryList)) {//如果没有该批次的考试统计缓存信息,则自己从数据库取
|
|
|
|
- ExamCacheBean examCacheBean = teExamService.getExamCacheBean(l);
|
|
|
|
- TBOrg tbOrg = themisCacheService.addOrgCache(examCacheBean.getOrgId());
|
|
|
|
- orgExamIdMap.add(tbOrg.getId(), l);
|
|
|
|
- } else {
|
|
|
|
- reloadDb = true;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
|
|
+ teOrgSummaryService.updateOrgSummaryCommon(orgId, teOrgSummary);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ LinkedMultiValueMap<Long, Long> orgExamIdMap = new LinkedMultiValueMap<>();
|
|
|
|
+ boolean reloadDb = false;
|
|
|
|
+ //先查询考试批次统计缓存
|
|
|
|
+ for (Long l : examIdSet) {
|
|
|
|
+ List<TEExamSummary> teExamSummaryList = themisCacheService.addExamSummaryCache(l);
|
|
|
|
+ if (!CollectionUtils.isEmpty(teExamSummaryList)) {//如果没有该批次的考试统计缓存信息,则自己从数据库取
|
|
|
|
+ ExamCacheBean examCacheBean = teExamService.getExamCacheBean(l);
|
|
|
|
+ TBOrg tbOrg = themisCacheService.addOrgCache(examCacheBean.getOrgId());
|
|
|
|
+ orgExamIdMap.add(tbOrg.getId(), l);
|
|
|
|
+ } else {
|
|
|
|
+ reloadDb = true;
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
- if (reloadDb) {//没有该批次的考试统计缓存信息,则从数据库取数据
|
|
|
|
- Integer onlineCount = this.baseMapper.orgSummaryByOnlineCount(examIdSet);
|
|
|
|
- Integer examCount = this.baseMapper.orgSummaryByExamCount(examIdSet);
|
|
|
|
- List<Integer> finishCountList = this.baseMapper.orgSummaryByFinishCountAndFinishStudentCount(examIdSet);
|
|
|
|
- teOrgSummary = new TEOrgSummary(orgId, onlineCount, examCount, finishCountList.get(0), finishCountList.get(1));
|
|
|
|
|
|
+ }
|
|
|
|
+ if (reloadDb) {//没有该批次的考试统计缓存信息,则从数据库取数据
|
|
|
|
+ Integer onlineCount = this.baseMapper.orgSummaryByOnlineCount(examIdSet);
|
|
|
|
+ Integer examCount = this.baseMapper.orgSummaryByExamCount(examIdSet);
|
|
|
|
+ List<Integer> finishCountList = this.baseMapper.orgSummaryByFinishCountAndFinishStudentCount(examIdSet);
|
|
|
|
+ TEOrgSummary teOrgSummary = new TEOrgSummary(orgId, onlineCount, examCount, finishCountList.get(0), finishCountList.get(1));
|
|
|
|
+ if (count == 0) {
|
|
teOrgSummaryService.saveOrgSummaryCommon(teOrgSummary);
|
|
teOrgSummaryService.saveOrgSummaryCommon(teOrgSummary);
|
|
} else {
|
|
} else {
|
|
- orgExamIdMap.forEach((k, v) -> {//从考试批次缓存信息里拿取在线人数、考试人数、完成考生数
|
|
|
|
- Integer onlineCount = 0, examCount = 0, finishStudentCount = 0;
|
|
|
|
- for (Long l : v) {
|
|
|
|
- List<TEExamSummary> teExamSummaryList = themisCacheService.addExamSummaryCache(l);
|
|
|
|
- for (TEExamSummary t : teExamSummaryList) {
|
|
|
|
- onlineCount = onlineCount + t.getOnlineCount();
|
|
|
|
- examCount = examCount + t.getExamCount();
|
|
|
|
- finishStudentCount = finishStudentCount + t.getFinishCount();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- Integer finishCount = this.baseMapper.orgSummaryByFinishCount(v);
|
|
|
|
- TEOrgSummary teOrgSummaryNotZero = new TEOrgSummary(orgId, onlineCount, examCount, finishCount, finishStudentCount);
|
|
|
|
- teOrgSummaryService.saveOrgSummaryCommon(teOrgSummaryNotZero);
|
|
|
|
- });
|
|
|
|
|
|
+ teOrgSummaryService.updateOrgSummaryCommon(orgId, teOrgSummary);
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ orgExamIdMap.forEach((k, v) -> {//从考试批次缓存信息里拿取在线人数、考试人数、完成考生数
|
|
|
|
+ Integer onlineCount = 0, examCount = 0, finishStudentCount = 0;
|
|
|
|
+ for (Long l : v) {
|
|
|
|
+ List<TEExamSummary> teExamSummaryList = themisCacheService.addExamSummaryCache(l);
|
|
|
|
+ for (TEExamSummary t : teExamSummaryList) {
|
|
|
|
+ onlineCount = onlineCount + t.getOnlineCount();
|
|
|
|
+ examCount = examCount + t.getExamCount();
|
|
|
|
+ finishStudentCount = finishStudentCount + t.getFinishCount();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ Integer finishCount = this.baseMapper.orgSummaryByFinishCount(v);
|
|
|
|
+ TEOrgSummary teOrgSummary = new TEOrgSummary(orgId, onlineCount, examCount, finishCount, finishStudentCount);
|
|
|
|
+ if (count == 0) {
|
|
|
|
+ teOrgSummaryService.saveOrgSummaryCommon(teOrgSummary);
|
|
|
|
+ } else {
|
|
|
|
+ teOrgSummaryService.updateOrgSummaryCommon(orgId, teOrgSummary);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -120,6 +129,37 @@ public class TEOrgSummaryServiceImpl extends ServiceImpl<TEOrgSummaryMapper, TEO
|
|
this.baseMapper.saveOrgSummary(stringJoinerFieldName.toString(), stringJoinerFieldValue.toString());
|
|
this.baseMapper.saveOrgSummary(stringJoinerFieldName.toString(), stringJoinerFieldValue.toString());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 更新机构统计信息
|
|
|
|
+ *
|
|
|
|
+ * @param teOrgSummary
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional
|
|
|
|
+ public void updateOrgSummaryCommon(Long orgId, TEOrgSummary teOrgSummary) {
|
|
|
|
+ StringJoiner stringJoinerFieldValue = new StringJoiner(",");
|
|
|
|
+ OrgSummaryEnum[] orgSummaryEnums = OrgSummaryEnum.values();
|
|
|
|
+ for (int i = 0; i < orgSummaryEnums.length; i++) {
|
|
|
|
+ switch (orgSummaryEnums[i]) {
|
|
|
|
+ case onlineCount:
|
|
|
|
+ stringJoinerFieldValue.add(orgSummaryEnums[i].getCode() + "=" + teOrgSummary.getOnlineCount());
|
|
|
|
+ break;
|
|
|
|
+ case examCount:
|
|
|
|
+ stringJoinerFieldValue.add(orgSummaryEnums[i].getCode() + "=" + teOrgSummary.getExamCount());
|
|
|
|
+ break;
|
|
|
|
+ case finishCount:
|
|
|
|
+ stringJoinerFieldValue.add(orgSummaryEnums[i].getCode() + "=" + teOrgSummary.getFinishCount());
|
|
|
|
+ break;
|
|
|
|
+ case finishStudentCount:
|
|
|
|
+ stringJoinerFieldValue.add(orgSummaryEnums[i].getCode() + "=" + teOrgSummary.getFinishStudentCount());
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ this.baseMapper.updateOrgSummary(orgId, stringJoinerFieldValue.toString());
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 更新全局机构考试完成数量和考生完成数量
|
|
* 更新全局机构考试完成数量和考生完成数量
|
|
*
|
|
*
|