|
@@ -1,43 +1,22 @@
|
|
|
package com.keao.edu.user.service.impl;
|
|
|
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.Set;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-
|
|
|
-import com.keao.edu.common.service.SysMessageService;
|
|
|
-import com.keao.edu.thirdparty.message.provider.JiguangPushPlugin;
|
|
|
-import com.keao.edu.user.dao.*;
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Isolation;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-import org.springframework.util.CollectionUtils;
|
|
|
-
|
|
|
-import com.keao.edu.auth.api.client.SysMessageFeignService;
|
|
|
import com.keao.edu.auth.api.client.SysUserFeignService;
|
|
|
-import com.keao.edu.auth.api.entity.SysMessageParams;
|
|
|
import com.keao.edu.auth.api.entity.SysUser;
|
|
|
import com.keao.edu.common.dal.BaseDAO;
|
|
|
import com.keao.edu.common.entity.SysConfig;
|
|
|
import com.keao.edu.common.enums.MessageTypeEnum;
|
|
|
import com.keao.edu.common.exception.BizException;
|
|
|
import com.keao.edu.common.page.PageInfo;
|
|
|
+import com.keao.edu.common.service.SysMessageService;
|
|
|
import com.keao.edu.common.service.impl.BaseServiceImpl;
|
|
|
import com.keao.edu.common.tenant.TenantContextHolder;
|
|
|
+import com.keao.edu.thirdparty.message.provider.JiguangPushPlugin;
|
|
|
+import com.keao.edu.user.dao.*;
|
|
|
+import com.keao.edu.user.dto.ExamOrganStatisticsDto;
|
|
|
import com.keao.edu.user.dto.ExamOrganizationRelationExtraDto;
|
|
|
-import com.keao.edu.user.entity.ExamOrganizationRelation;
|
|
|
-import com.keao.edu.user.entity.ExaminationBasic;
|
|
|
-import com.keao.edu.user.entity.Organization;
|
|
|
-import com.keao.edu.user.entity.TenantInfo;
|
|
|
+import com.keao.edu.user.entity.*;
|
|
|
import com.keao.edu.user.enums.ExamStatusEnum;
|
|
|
+import com.keao.edu.user.enums.TransStatusEnum;
|
|
|
import com.keao.edu.user.enums.YesOrNoEnum;
|
|
|
import com.keao.edu.user.page.ExamOrganizationRelationQueryInfo;
|
|
|
import com.keao.edu.user.service.ExamOrganizationRelationService;
|
|
@@ -46,6 +25,19 @@ import com.keao.edu.user.service.ShortUrlService;
|
|
|
import com.keao.edu.user.service.SysConfigService;
|
|
|
import com.keao.edu.util.collection.MapUtil;
|
|
|
import com.keao.edu.util.date.DateUtil;
|
|
|
+import org.apache.commons.beanutils.BeanUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Isolation;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
+import java.lang.reflect.InvocationTargetException;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
public class ExamOrganizationRelationServiceImpl extends BaseServiceImpl<Long, ExamOrganizationRelation> implements ExamOrganizationRelationService {
|
|
@@ -70,6 +62,12 @@ public class ExamOrganizationRelationServiceImpl extends BaseServiceImpl<Long, E
|
|
|
private SysUserDao sysUserDao;
|
|
|
@Autowired
|
|
|
private SysMessageService sysMessageService;
|
|
|
+ @Autowired
|
|
|
+ private ExamLifecycleLogDao examLifecycleLogDao;
|
|
|
+ @Autowired
|
|
|
+ private ExamRegistrationPaymentDao examRegistrationPaymentDao;
|
|
|
+ @Autowired
|
|
|
+ private ExamManualLedgerDao examManualLedgerDao;
|
|
|
|
|
|
public static final Set<ExamStatusEnum> EDIT_ABLE_EXAM_STATUS=new HashSet<>(Arrays.asList(ExamStatusEnum.SETTING,ExamStatusEnum.NOT_START,ExamStatusEnum.APPLYING,ExamStatusEnum.APPLIED));
|
|
|
|
|
@@ -84,7 +82,7 @@ public class ExamOrganizationRelationServiceImpl extends BaseServiceImpl<Long, E
|
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
|
MapUtil.populateMap(params, queryInfo);
|
|
|
|
|
|
- List<Integer> nextLevelOrganIds = organizationService.getChildOrganIds(queryInfo.getOrganId(), false);
|
|
|
+ List<Integer> nextLevelOrganIds = organizationService.getNextLevelOrganIds(queryInfo.getOrganId(), false);
|
|
|
params.put("organIds", nextLevelOrganIds);
|
|
|
|
|
|
List<ExamOrganizationRelationExtraDto> dataList = new ArrayList<>();
|
|
@@ -175,7 +173,7 @@ public class ExamOrganizationRelationServiceImpl extends BaseServiceImpl<Long, E
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void addExamOrganizations(List<ExamOrganizationRelation> organizationRelations) {
|
|
|
+ public void addExamOrganizations(List<ExamOrganizationRelation> organizationRelations, Integer selfOrganId) {
|
|
|
if(CollectionUtils.isEmpty(organizationRelations)){
|
|
|
throw new BizException("请指定考级项目");
|
|
|
}
|
|
@@ -190,6 +188,11 @@ public class ExamOrganizationRelationServiceImpl extends BaseServiceImpl<Long, E
|
|
|
throw new BizException("当前状态暂不可添加合作单位");
|
|
|
}
|
|
|
|
|
|
+ ExamOrganStatisticsDto examOrganizationRelation = examOrganizationRelationDao.getExamOrganizationRelation(examinationBasic.getId(), selfOrganId);
|
|
|
+ if(Objects.isNull(examOrganizationRelation)){
|
|
|
+ throw new BizException("操作异常");
|
|
|
+ }
|
|
|
+
|
|
|
Set<Integer> organIdsWithExam = examOrganizationRelationDao.getOrganIdsWithExam(examinationBasic.getId().intValue());
|
|
|
List<Integer> organIds = organizationRelations.stream().filter(e->Objects.nonNull(e.getOrganId())).map(ExamOrganizationRelation::getOrganId).collect(Collectors.toList());
|
|
|
if(organIds.size()!=organizationRelations.size()){
|
|
@@ -222,6 +225,10 @@ public class ExamOrganizationRelationServiceImpl extends BaseServiceImpl<Long, E
|
|
|
throw new BizException("参数错误");
|
|
|
}
|
|
|
|
|
|
+ if(examOrganizationRelation.getIsAllowArrangeExam()==0){
|
|
|
+ og.setIsAllowArrangeExam(0);
|
|
|
+ }
|
|
|
+
|
|
|
og.setTenantId(TenantContextHolder.getTenantId());
|
|
|
og.setExaminationBasicId(examinationBasic.getId().intValue());
|
|
|
|
|
@@ -234,7 +241,6 @@ public class ExamOrganizationRelationServiceImpl extends BaseServiceImpl<Long, E
|
|
|
String registrationUrl = baseUrl + "examId=" + examinationBasic.getId() + "&organId=" + og.getOrganId();
|
|
|
String registShortUrl = shortUrlService.createShortUrl(registrationUrl);
|
|
|
og.setUrl(registShortUrl);
|
|
|
- organizationRelations.add(og);
|
|
|
}
|
|
|
examOrganizationRelationDao.batchInsert(organizationRelations);
|
|
|
}
|
|
@@ -295,6 +301,8 @@ public class ExamOrganizationRelationServiceImpl extends BaseServiceImpl<Long, E
|
|
|
|
|
|
if(!CollectionUtils.isEmpty(needUpdate)){
|
|
|
examOrganizationRelationDao.batchUpdate(needUpdate);
|
|
|
+
|
|
|
+ examLifecycleLogDao.insert(new ExamLifecycleLog(examinationBasic.getId().intValue(), "发送考级连接", examinationBasic.getCreatorId()));
|
|
|
}
|
|
|
|
|
|
if(examinationBasic.getStatus().equals(ExamStatusEnum.SETTING)){
|
|
@@ -304,7 +312,71 @@ public class ExamOrganizationRelationServiceImpl extends BaseServiceImpl<Long, E
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public PageInfo<Organization> queryUnRelatedOrgans(ExamOrganizationRelationQueryInfo queryInfo) {
|
|
|
+ public ExamOrganStatisticsDto getExamOrganStatistics(Integer organId, Long examId) {
|
|
|
+ if(Objects.isNull(examId)){
|
|
|
+ throw new BizException("请指定考级项目");
|
|
|
+ }
|
|
|
+ ExaminationBasic examinationBasic = examinationBasicDao.get(examId);
|
|
|
+ if(Objects.isNull(examinationBasic)){
|
|
|
+ throw new BizException("考级项目不存在");
|
|
|
+ }
|
|
|
+ ExamOrganStatisticsDto examOrganStatistics = examOrganizationRelationDao.getExamOrganizationRelation(examId, organId);
|
|
|
+ if(Objects.isNull(examOrganStatistics)){
|
|
|
+ examOrganStatistics=new ExamOrganStatisticsDto();
|
|
|
+ }
|
|
|
+
|
|
|
+ examOrganStatistics.setExamLifecycleLogs(examLifecycleLogDao.findWithExam(examId));
|
|
|
+
|
|
|
+ Map<String, BigDecimal> dayTransAmount=new LinkedHashMap<>();
|
|
|
+ Map<String, BigDecimal> dayPaymentAmount=new LinkedHashMap<>();
|
|
|
+
|
|
|
+ LocalDate today = LocalDate.now();
|
|
|
+ List<String> days=new ArrayList<>();
|
|
|
+ dayTransAmount.put(today.toString(), BigDecimal.ZERO);
|
|
|
+ dayPaymentAmount.put(today.toString(), BigDecimal.ZERO);
|
|
|
+ for (int i=-1;i>-7;i--){
|
|
|
+ days.add(today.plusDays(i).toString());
|
|
|
+ dayTransAmount.put(today.plusDays(i).toString(), BigDecimal.ZERO);
|
|
|
+ dayPaymentAmount.put(today.plusDays(i).toString(), BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ExamRegistrationPayment> examRegistrationPayments = examRegistrationPaymentDao.getWithExamOrganAndDay(examId, organId, days);
|
|
|
+ List<ExamManualLedger> examOrganManualLedgers = examManualLedgerDao.getExamOrganManualLedgers(organId, examId, days);
|
|
|
+
|
|
|
+ Map<String, List<ExamRegistrationPayment>> dayPaymentMap = new HashMap<>();
|
|
|
+ if(!CollectionUtils.isEmpty(examRegistrationPayments)){
|
|
|
+ dayPaymentMap = examRegistrationPayments.stream().filter(e-> TransStatusEnum.SUCCESS.equals(e.getTransStatus())).collect(Collectors.groupingBy(e -> DateUtil.dateToString(e.getTransSuccessedTime())));
|
|
|
+ }
|
|
|
+ Map<String, List<ExamManualLedger>> dayLedgerMap = new HashMap<>();
|
|
|
+ if(!CollectionUtils.isEmpty(examOrganManualLedgers)){
|
|
|
+ dayLedgerMap = examOrganManualLedgers.stream().collect(Collectors.groupingBy(e -> DateUtil.dateToString(e.getTransTime())));
|
|
|
+ }
|
|
|
+
|
|
|
+ for (String day : dayTransAmount.keySet()) {
|
|
|
+ List<ExamManualLedger> dayLeders = dayLedgerMap.get(day);
|
|
|
+ if(CollectionUtils.isEmpty(dayLeders)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ BigDecimal amount = dayLeders.stream().map(ExamManualLedger::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ dayTransAmount.put(day, amount);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (String day : dayPaymentAmount.keySet()) {
|
|
|
+ List<ExamRegistrationPayment> dayPayments = dayPaymentMap.get(day);
|
|
|
+ if(CollectionUtils.isEmpty(dayPayments)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ BigDecimal amount = dayPayments.stream().map(ExamRegistrationPayment::getTransAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ dayPaymentAmount.put(day, amount);
|
|
|
+ }
|
|
|
+
|
|
|
+ examOrganStatistics.setDayTransAmount(dayTransAmount);
|
|
|
+ examOrganStatistics.setDayPaymentAmount(dayPaymentAmount);
|
|
|
+ return examOrganStatistics;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> queryUnRelatedOrgans(ExamOrganizationRelationQueryInfo queryInfo) {
|
|
|
PageInfo<Organization> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
|
MapUtil.populateMap(params, queryInfo);
|
|
@@ -319,7 +391,15 @@ public class ExamOrganizationRelationServiceImpl extends BaseServiceImpl<Long, E
|
|
|
params.put("offset", pageInfo.getOffset());
|
|
|
dataList = examOrganizationRelationDao.queryUnRelatedOrgans(params);
|
|
|
}
|
|
|
+ ExamOrganStatisticsDto examOrganizationRelation = examOrganizationRelationDao.getExamOrganizationRelation(queryInfo.getExamId().longValue(), queryInfo.getOrganId());
|
|
|
pageInfo.setRows(dataList);
|
|
|
- return pageInfo;
|
|
|
+ Map<String, Object> result=new HashMap<>();
|
|
|
+ result.put("pageInfo", pageInfo);
|
|
|
+ if(Objects.nonNull(examOrganizationRelation)){
|
|
|
+ result.put("isAllowArrangeExam",examOrganizationRelation.getIsAllowArrangeExam());
|
|
|
+ }else{
|
|
|
+ result.put("isAllowArrangeExam",0);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
}
|
|
|
}
|