|
|
@@ -0,0 +1,156 @@
|
|
|
+package com.xjrsoft.module.evaluate.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
+import com.xjrsoft.common.page.ConventPage;
|
|
|
+import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
+import com.xjrsoft.module.base.entity.BaseClass;
|
|
|
+import com.xjrsoft.module.base.entity.BaseSemester;
|
|
|
+import com.xjrsoft.module.base.mapper.BaseClassMapper;
|
|
|
+import com.xjrsoft.module.evaluate.dto.EvaluateResultDetailPageDetailDto;
|
|
|
+import com.xjrsoft.module.evaluate.dto.EvaluateResultDetailPageDto;
|
|
|
+import com.xjrsoft.module.evaluate.dto.EvaluateResultIndexPageDto;
|
|
|
+import com.xjrsoft.module.evaluate.entity.*;
|
|
|
+import com.xjrsoft.module.evaluate.mapper.EvaluateManageItemMapper;
|
|
|
+import com.xjrsoft.module.evaluate.mapper.EvaluateManageMapper;
|
|
|
+import com.xjrsoft.module.evaluate.mapper.EvaluateResultMapper;
|
|
|
+import com.xjrsoft.module.evaluate.service.IEvaluateResultService;
|
|
|
+import com.xjrsoft.module.evaluate.vo.*;
|
|
|
+import com.xjrsoft.module.organization.entity.Department;
|
|
|
+import com.xjrsoft.module.system.entity.DictionaryDetail;
|
|
|
+import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
+import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+* @title: 评价结果
|
|
|
+* @Author szs
|
|
|
+* @Date: 2024-01-16
|
|
|
+* @Version 1.0
|
|
|
+*/
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class EvaluateResultServiceImpl extends MPJBaseServiceImpl<EvaluateResultMapper, EvaluateResult> implements IEvaluateResultService {
|
|
|
+
|
|
|
+ private EvaluateManageMapper evaluateManageMapper;
|
|
|
+
|
|
|
+ private XjrUserMapper xjrUserMapper;
|
|
|
+
|
|
|
+ private BaseClassMapper baseClassMapper;
|
|
|
+
|
|
|
+ private EvaluateResultMapper evaluateResultMapper;
|
|
|
+
|
|
|
+ private EvaluateManageItemMapper evaluateManageItemMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<EvaluateResultIndexPageVo> getIndexPage(EvaluateResultIndexPageDto dto) {
|
|
|
+ MPJLambdaWrapper<EvaluateManage> evaluateManageMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ evaluateManageMPJLambdaWrapper
|
|
|
+ .selectAs(EvaluateManage::getId, EvaluateResultIndexPageVo::getEvaluateManageId)
|
|
|
+ .selectAs(BaseSemester::getName, EvaluateResultIndexPageVo::getSemesterName)
|
|
|
+ .selectAs(Department::getName, EvaluateResultIndexPageVo::getOrgName)
|
|
|
+ .selectAs(DictionaryDetail::getName, EvaluateResultIndexPageVo::getEvaluateTypeCN)
|
|
|
+ .select(EvaluateManage.class, x -> VoToColumnUtil.fieldsToColumns(EvaluateResultIndexPageVo.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(BaseSemester.class, BaseSemester::getId, EvaluateManage::getBaseSemesterId)
|
|
|
+ .leftJoin(Department.class, Department::getId, EvaluateManage::getOrgId)
|
|
|
+ .leftJoin(EvaluateTemplate.class, EvaluateTemplate::getId, EvaluateManage::getEvaluateTemplateId)
|
|
|
+ .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, EvaluateTemplate::getEvaluateType)
|
|
|
+ .eq((dto.getBaseSemesterId() != null && dto.getBaseSemesterId() > 0), EvaluateManage::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
+ .eq((dto.getOrgId() != null && dto.getOrgId() > 0), EvaluateManage::getOrgId, dto.getOrgId())
|
|
|
+ .eq((dto.getEvaluateType() != null && dto.getEvaluateType().equals("")), EvaluateTemplate::getEvaluateType, dto.getEvaluateType())
|
|
|
+ .like((dto.getName() != null && dto.getName().equals("")), EvaluateManage::getName, dto.getName())
|
|
|
+ .gt((dto.getStartTime() != null), EvaluateManage::getStartTime, dto.getStartTime())
|
|
|
+ .lt((dto.getEndTime() != null), EvaluateManage::getEndTime, dto.getEndTime())
|
|
|
+ .orderByDesc(EvaluateResult::getId);
|
|
|
+
|
|
|
+ IPage<EvaluateResultIndexPageVo> page = evaluateManageMapper.selectJoinPage(ConventPage.getPage(dto), EvaluateResultIndexPageVo.class, evaluateManageMPJLambdaWrapper);
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<EvaluateResultDetailPageVo> getDetailPage(EvaluateResultDetailPageDto dto) {
|
|
|
+ IPage<EvaluateResultDetailPageVo> page = evaluateResultMapper.getDetailPage(ConventPage.getPage(dto), dto);
|
|
|
+ if(page.getRecords() != null && page.getRecords().size() > 0){
|
|
|
+ for (EvaluateResultDetailPageVo e : page.getRecords()) {
|
|
|
+ if(e.getObjectType().equals("teacher") || e.getObjectType().equals("student")){
|
|
|
+ XjrUser user = xjrUserMapper.selectById(e.getObjectId());
|
|
|
+ if (user != null){
|
|
|
+ e.setObjectIdCN(user.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(e.getObjectType().equals("class")){
|
|
|
+ BaseClass baseClass = baseClassMapper.selectById(e.getObjectId());
|
|
|
+ if(baseClass != null){
|
|
|
+ e.setObjectIdCN(baseClass.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public EvaluateResultDetailPageDetailVo getDetailPageDetail(EvaluateResultDetailPageDetailDto dto) {
|
|
|
+ //根据评价管理编号获取当前评价管理相关信息
|
|
|
+ MPJLambdaWrapper<EvaluateManage> evaluateManageMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ evaluateManageMPJLambdaWrapper
|
|
|
+ .selectAs(EvaluateManage::getName, EvaluateResultDetailPageDetailVo::getName)
|
|
|
+ .selectAs(EvaluateTemplate::getTotal, EvaluateResultDetailPageDetailVo::getTotal)
|
|
|
+ .leftJoin(EvaluateTemplate.class, EvaluateTemplate::getId, EvaluateManage::getEvaluateTemplateId)
|
|
|
+ .eq(EvaluateManage::getId, dto.getEvaluateManageId());
|
|
|
+ EvaluateResultDetailPageDetailVo evaluateResultDetailPageDetailVo = evaluateManageMapper.selectJoinOne(EvaluateResultDetailPageDetailVo.class, evaluateManageMPJLambdaWrapper);
|
|
|
+ if(evaluateResultDetailPageDetailVo == null){
|
|
|
+ return evaluateResultDetailPageDetailVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ //根据评价管理主键编号,被评对象id,参评人id获取相关信息
|
|
|
+ MPJLambdaWrapper<EvaluateResult> evaluateResultMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ evaluateResultMPJLambdaWrapper
|
|
|
+ .selectSum(EvaluateResult::getScore, EvaluateResultDetailPageDetailVo::getActulTotal)
|
|
|
+ .leftJoin(EvaluateObject.class, EvaluateObject::getId, EvaluateResult::getEvaluatedObjectId)
|
|
|
+ .leftJoin(XjrUser.class,XjrUser::getId,EvaluateObject::getObjectId,ext->ext
|
|
|
+ .selectAs(XjrUser::getName,EvaluateResultDetailPageDetailVo::getObjectIdCN))
|
|
|
+ .leftJoin(XjrUser.class,XjrUser::getId,EvaluateResult::getUserId,ext->ext
|
|
|
+ .selectAs(XjrUser::getName,EvaluateResultDetailPageDetailVo::getUserIdCN))
|
|
|
+ .eq(EvaluateObject::getEvaluateManageId, dto.getEvaluateManageId())
|
|
|
+ .eq(EvaluateObject::getId, dto.getEvaluatedObjectId())
|
|
|
+ .eq(EvaluateResult::getUserId, dto.getUserId());
|
|
|
+ EvaluateResultDetailPageDetailVo evaluateResult = evaluateManageMapper.selectJoinOne(EvaluateResultDetailPageDetailVo.class, evaluateManageMPJLambdaWrapper);
|
|
|
+ evaluateResultDetailPageDetailVo.setActulTotal(evaluateResult.getActulTotal());
|
|
|
+ evaluateResultDetailPageDetailVo.setObjectIdCN(evaluateResult.getObjectIdCN());
|
|
|
+ evaluateResultDetailPageDetailVo.setUserIdCN(evaluateResult.getUserIdCN());
|
|
|
+
|
|
|
+ //获取模板下的所有评价子项集合
|
|
|
+ MPJLambdaWrapper<EvaluateManageItem> evaluateManageItemMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ evaluateManageItemMPJLambdaWrapper
|
|
|
+ .select(EvaluateManageItem::getId)
|
|
|
+ .selectAs(EvaluateResult::getScore, EvaluateManageItemVo::getActulScore)
|
|
|
+ .selectAs(EvaluateResult::getOpinion, EvaluateManageItemVo::getOpinion)
|
|
|
+ .select(EvaluateManageItem.class, x -> VoToColumnUtil.fieldsToColumns(EvaluateManageItemVo.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(EvaluateResult.class, EvaluateResult::getEvaluateItemId, EvaluateManageItem::getEvaluateItemId)
|
|
|
+ .eq(EvaluateManageItem::getEvaluateManageId, dto.getEvaluateManageId());
|
|
|
+
|
|
|
+ List<EvaluateManageItemVo> evaluateManageItemVos = evaluateManageItemMapper.selectJoinList(EvaluateManageItemVo.class, evaluateManageItemMPJLambdaWrapper);
|
|
|
+
|
|
|
+ Map<String, List<EvaluateManageItemVo>> groupedEvaluateManageItemVo = evaluateManageItemVos.stream()
|
|
|
+ .collect(Collectors.groupingBy(EvaluateManageItemVo::getTopic));
|
|
|
+
|
|
|
+ List<EvaluateManageItemByTopicVo> evaluateManageItemByTopicVoArrayList = new ArrayList<>();
|
|
|
+ groupedEvaluateManageItemVo.forEach((topic, group) -> {
|
|
|
+ evaluateManageItemByTopicVoArrayList.add(new EvaluateManageItemByTopicVo(){{
|
|
|
+ setTopic(topic);
|
|
|
+ setEvaluateManageItemVoList(group);
|
|
|
+ }});
|
|
|
+ });
|
|
|
+ evaluateResultDetailPageDetailVo.setEvaluateManageItemByTopicVoList(evaluateManageItemByTopicVoArrayList);
|
|
|
+
|
|
|
+ return evaluateResultDetailPageDetailVo;
|
|
|
+ }
|
|
|
+}
|