瀏覽代碼

评价结果所有接口本地测试通过

phoenix 1 年之前
父節點
當前提交
ba91225415

+ 4 - 4
src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateResultDetailPageDetailDto.java

@@ -6,7 +6,7 @@ import lombok.EqualsAndHashCode;
 
 
 /**
-* @title: 评价结果分页查询入参
+* @title: 评价结果首页详情查看的详情入参
 * @Author szs
 * @Date: 2024-01-16
 * @Version 1.0
@@ -27,8 +27,8 @@ public class EvaluateResultDetailPageDetailDto{
     private Long evaluatedObjectId;
 
     /**
-     * 参评人id
+     * 执行人id
      */
-    @ApiModelProperty(value = "参评人id",required = true)
-    private Long userId;
+    @ApiModelProperty(value = "执行人id",required = true)
+    private Long evaluatedExecuterId;
 }

+ 28 - 9
src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateResultDetailPageDto.java

@@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
 
 
 /**
-* @title: 评价结果分页查询入参
+* @title: 评价结果首页查看详情分页查询入参
 * @Author szs
 * @Date: 2024-01-16
 * @Version 1.0
@@ -20,16 +20,35 @@ public class EvaluateResultDetailPageDto extends PageInput {
      */
     @ApiModelProperty(value = "评价管理主键编号",required = true)
     private Long evaluateManageId;
-
     /**
-     * 被评对象id
+     * 年级id
      */
-    @ApiModelProperty("被评对象id")
-    private Long evaluatedObjectId;
-
+    @ApiModelProperty("年级id")
+    private Long baseGradeId;
+    /**
+     * 班级id
+     */
+    @ApiModelProperty("班级id")
+    private Long classId;
+    /**
+     * 教师id
+     */
+    @ApiModelProperty("教师id")
+    private Long teacherId;
     /**
-     * 参评人id
+     * name
      */
-    @ApiModelProperty("参评人id")
-    private Long userId;
+    @ApiModelProperty("姓名")
+    private String name;
+    /**
+     * 是否评分
+     */
+    @ApiModelProperty("是否评分(0-未评分,1-已评分)")
+    private Integer status;
+    /**
+     * 查询对象
+     */
+    @ApiModelProperty("查询对象(0-全部,1-被评人,2-参评人)")
+    private Integer checkObject;
+
 }

+ 3 - 3
src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateResultIndexPageDto.java

@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.util.Date;
+import java.time.LocalDateTime;
 
 
 /**
@@ -45,12 +45,12 @@ public class EvaluateResultIndexPageDto extends PageInput {
      * 开始时间
      */
     @ApiModelProperty("开始时间")
-    private Date startTime;
+    private LocalDateTime startTime;
 
     /**
      * 结束时间
      */
     @ApiModelProperty("结束时间")
-    private Date endTime;
+    private LocalDateTime endTime;
 
 }

+ 14 - 0
src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateResultMapper.java

@@ -2,10 +2,18 @@ package com.xjrsoft.module.evaluate.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.yulichang.base.MPJBaseMapper;
+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.EvaluateResult;
+import com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageDetailList;
+import com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageDetailVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateResultIndexPageVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
 * @title: 评价结果
@@ -15,5 +23,11 @@ import org.apache.ibatis.annotations.Mapper;
 */
 @Mapper
 public interface EvaluateResultMapper extends MPJBaseMapper<EvaluateResult> {
+    IPage<EvaluateResultIndexPageVo> getIndexPage(IPage<EvaluateResultIndexPageDto> page, EvaluateResultIndexPageDto dto);
+
     IPage<EvaluateResultDetailPageVo> getDetailPage(IPage<EvaluateResultDetailPageDto> page, EvaluateResultDetailPageDto dto);
+
+    EvaluateResultDetailPageDetailVo getDetailPageDetail(@Param("dto") EvaluateResultDetailPageDetailDto dto);
+
+    List<EvaluateResultDetailPageDetailList> getDetailPageDetailList(@Param("dto") EvaluateResultDetailPageDetailDto dto);
 }

+ 3 - 6
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateItemServiceImpl.java

@@ -25,10 +25,7 @@ import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -63,10 +60,10 @@ public class EvaluateItemServiceImpl extends MPJBaseServiceImpl<EvaluateItemMapp
             return makeEvaluateItemVo;
         }
 
-        List<String> deptIdList = new ArrayList<>();
+        Map<String, String> deptIdList = new HashMap<>();
         try {
             ObjectMapper objectMapper = new ObjectMapper();
-            deptIdList = objectMapper.readValue(makeEvaluateItemVo.getDeptIds(), new TypeReference<List<String>>() {});
+            deptIdList = objectMapper.readValue(makeEvaluateItemVo.getDeptIds(), new TypeReference<Map<String,String>>() {});
         }catch (Exception e){
         }
         if(deptIdList != null && deptIdList.size() > 0){

+ 121 - 154
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateResultServiceImpl.java

@@ -4,215 +4,182 @@ 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.dto.ResultViewingPageDto;
-import com.xjrsoft.module.evaluate.entity.*;
-import com.xjrsoft.module.evaluate.mapper.*;
+import com.xjrsoft.module.evaluate.entity.EvaluateExecuter;
+import com.xjrsoft.module.evaluate.entity.EvaluateManageItem;
+import com.xjrsoft.module.evaluate.entity.EvaluateObject;
+import com.xjrsoft.module.evaluate.entity.EvaluateResult;
+import com.xjrsoft.module.evaluate.mapper.EvaluateExecuterMapper;
+import com.xjrsoft.module.evaluate.mapper.EvaluateManageItemMapper;
+import com.xjrsoft.module.evaluate.mapper.EvaluateObjectMapper;
+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.evaluate.vo.EvaluateResultDetailPageDetailVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateResultIndexPageVo;
+import com.xjrsoft.module.evaluate.vo.ResultViewingPageVo;
 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
-*/
+ * @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 EvaluateObjectMapper evaluateObjectMapper;
 
-    private EvaluateExecuterMapper evaluateExecuterMapper;
-
-    private XjrUserMapper xjrUserMapper;
-
-    private BaseClassMapper baseClassMapper;
-
     private EvaluateResultMapper evaluateResultMapper;
 
     private EvaluateManageItemMapper evaluateManageItemMapper;
 
+    private EvaluateExecuterMapper evaluateExecuterMapper;
+
     @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);
+        IPage<EvaluateResultIndexPageVo> page = evaluateResultMapper.getIndexPage(ConventPage.getPage(dto), dto);
         return page;
     }
 
     @Override
     public IPage<EvaluateResultDetailPageVo> getDetailPage(EvaluateResultDetailPageDto dto) {
+        //获取当前评价管理下的所有记录的page
         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){
+        //根据评价管理主键编号,被评对象id,执行人id获取总得分,被评对象名字,执行人名字,评价管理名字,题目满分
+        EvaluateResultDetailPageDetailVo evaluateResultDetailPageDetailVo = evaluateResultMapper.getDetailPageDetail(dto);
+
+        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::getActualScore)
-                .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);
-
+        //获取list
+        evaluateResultDetailPageDetailVo.setEvaluateResultDetailPageDetailList(evaluateResultMapper.getDetailPageDetailList(dto));
         return evaluateResultDetailPageDetailVo;
     }
 
     @Override
     public IPage<ResultViewingPageVo> pageResultViewing(ResultViewingPageDto dto) {
-        //根据评价管理id获取该评价下按被评人分组的分页数据
+        List<ResultViewingPageVo> resultData = new ArrayList<>();
+        //获取该评价管理下的被评对象-分页
         MPJLambdaWrapper<EvaluateObject> evaluateObjectMPJLambdaWrapper = new MPJLambdaWrapper<>();
         evaluateObjectMPJLambdaWrapper
+                .distinct()
                 .selectAs(EvaluateObject::getObjectId, ResultViewingPageVo::getObjectId)
-                .selectAs(EvaluateObject::getObjectType, ResultViewingPageVo::getObjectType)
-                .eq(EvaluateObject::getEvaluateManageId, dto.getEvaluateManageId());
-
+                .select("ifnull(t1.name, t2.name) as objectIdCN")
+                .leftJoin(XjrUser.class, XjrUser::getId, EvaluateObject::getObjectId)
+                .leftJoin(BaseClass.class, BaseClass::getId, EvaluateObject::getObjectId)
+                .eq(EvaluateObject::getEvaluateManageId, dto.getEvaluateManageId())
+                .disableSubLogicDel();
         IPage<ResultViewingPageVo> resultViewingPageVoIPage = evaluateObjectMapper.selectJoinPage(ConventPage.getPage(dto), ResultViewingPageVo.class, evaluateObjectMPJLambdaWrapper);
-        //遍历分页记录
+
+        //获取该评价管理下的题目-多个
+        MPJLambdaWrapper<EvaluateManageItem> evaluateManageItemMPJLambdaWrapper = new MPJLambdaWrapper<>();
+        evaluateManageItemMPJLambdaWrapper
+                .eq(EvaluateManageItem::getEvaluateManageId, dto.getEvaluateManageId());
+        List<EvaluateManageItem> evaluateManageItemList = evaluateManageItemMapper.selectList(evaluateManageItemMPJLambdaWrapper);
+
         for (ResultViewingPageVo resultViewingPageVo : resultViewingPageVoIPage.getRecords()) {
-            //添加应打分人数,实际打分人数,综合评分
-            MPJLambdaWrapper<EvaluateExecuter> evaluateExecuterPlanExecuterNum = new MPJLambdaWrapper<>();
-            evaluateExecuterPlanExecuterNum
+            //获取该评价管理下的单个被评对象的应打分人数,实际打分人数
+            MPJLambdaWrapper<EvaluateExecuter> evaluateExecuterMPJLambdaWrapper = new MPJLambdaWrapper<>();
+            evaluateExecuterMPJLambdaWrapper
+                    .select("count(t.id) as planExecuterNum")
                     .selectSum(EvaluateExecuter::getStatus, ResultViewingPageVo::getActualExecuterNum)
-                    .selectSum(EvaluateResult::getScore, ResultViewingPageVo::getActualExecuterNum)
-                    .leftJoin(EvaluateResult.class, EvaluateResult::getEvaluatedObjectId, EvaluateExecuter::getEvaluateObjectId)
+                    .leftJoin(EvaluateObject.class, EvaluateObject::getId, EvaluateExecuter::getEvaluateObjectId)
                     .eq(EvaluateExecuter::getEvaluateManageId, dto.getEvaluateManageId())
-                    .eq(EvaluateExecuter::getEvaluateObjectId, resultViewingPageVo.getEvaluateObjectId());
-
-            List<ResultViewingPageVo> resultViewingPageVoList = evaluateExecuterMapper.selectJoinList(ResultViewingPageVo.class, evaluateExecuterPlanExecuterNum);
-            resultViewingPageVo.setPlanExecuterNum(resultViewingPageVoList.size());
-
-            //查出所有的题目项目
-            MPJLambdaWrapper<EvaluateManageItem> evaluateManageItemMPJLambdaWrapper = new MPJLambdaWrapper<>();
-            evaluateManageItemMPJLambdaWrapper
-                    .selectSum(EvaluateResult::getScore, AllEvaluateManageItemVo::getAllActualScore)
-                    .selectAs(EvaluateManageItem::getProblem, AllEvaluateManageItemVo::getProblem)
-                    .selectAs(EvaluateManageItem::getTopic, AllEvaluateManageItemVo::getTopic)
-                    .leftJoin(EvaluateResult.class, EvaluateResult::getEvaluateItemId, EvaluateManageItem::getId)
-                    .eq(EvaluateManageItem::getEvaluateManageId, dto.getEvaluateManageId())
-                    .eq(EvaluateResult::getEvaluatedObjectId, resultViewingPageVo.getEvaluateObjectId())
-                    .groupBy(EvaluateManageItem::getProblem, EvaluateManageItem::getTopic);
-
-            List<AllEvaluateManageItemVo> allEvaluateManageItemVoList = evaluateManageItemMapper.selectJoinList(AllEvaluateManageItemVo.class, evaluateManageItemMPJLambdaWrapper);
-
-            Map<String, List<AllEvaluateManageItemVo>> groupedAllEvaluateManageItemVo = allEvaluateManageItemVoList.stream()
-                    .collect(Collectors.groupingBy(AllEvaluateManageItemVo::getTopic));
-
-            List<AllEvaluateManageItemByTopicVo> allEvaluateManageItemByTopicVoList = new ArrayList<>();
-            groupedAllEvaluateManageItemVo.forEach((topic, group) -> {
-                allEvaluateManageItemByTopicVoList.add(new AllEvaluateManageItemByTopicVo(){{
-                    setTopic(topic);
-                    setAllEvaluateManageItemVoList(group);
-                    int allTopicScore = 0;
-                    for (AllEvaluateManageItemVo allEvaluateManageItemVo : group) {
-                        allTopicScore += allEvaluateManageItemVo.getAllActualScore();
+                    .eq(EvaluateObject::getObjectId, resultViewingPageVo.getObjectId())
+                    .disableSubLogicDel();
+            ResultViewingPageVo planAndActualExecuterNum = evaluateExecuterMapper.selectJoinOne(ResultViewingPageVo.class, evaluateExecuterMPJLambdaWrapper);
+
+            for (EvaluateManageItem evaluateManageItem : evaluateManageItemList) {
+                //获取该评价管理下的单个被评对象的每一道题的总得分
+                MPJLambdaWrapper<EvaluateResult> evaluateResultMPJLambdaWrapper = new MPJLambdaWrapper<>();
+                evaluateResultMPJLambdaWrapper
+                        .selectSum(EvaluateResult::getScore, ResultViewingPageVo::getSumScore)
+                        .leftJoin(EvaluateObject.class, EvaluateObject::getId, EvaluateResult::getEvaluatedObjectId)
+                        .eq(EvaluateResult::getEvaluateItemId, evaluateManageItem.getId())
+                        .eq(EvaluateObject::getObjectId, resultViewingPageVo.getObjectId())
+                        .disableSubLogicDel();
+                ResultViewingPageVo sumScore = evaluateResultMapper.selectJoinOne(ResultViewingPageVo.class, evaluateResultMPJLambdaWrapper);
+                resultData.add(new ResultViewingPageVo() {{
+                    setObjectId(resultViewingPageVo.getObjectId());
+                    setObjectIdCN(resultViewingPageVo.getObjectIdCN());
+                    setEvaluateManageItemId(evaluateManageItem.getId());
+                    setProblem(evaluateManageItem.getProblem());
+                    setTopic(evaluateManageItem.getTopic());
+                    if (planAndActualExecuterNum != null) {
+                        setPlanExecuterNum(planAndActualExecuterNum.getPlanExecuterNum());
+                        setActualExecuterNum(planAndActualExecuterNum.getActualExecuterNum());
+                    }
+                    if (sumScore != null) {
+                        setSumScore(sumScore.getSumScore());
                     }
-                    setAllTopicScore(allTopicScore);
                 }});
-            });
-
-            resultViewingPageVo.setAllEvaluateManageItemByTopicVoList(allEvaluateManageItemByTopicVoList);
-
+            }
         }
+
+        resultViewingPageVoIPage.setRecords(resultData);
+
+//        //遍历分页记录
+//        for (ResultViewingPageVo resultViewingPageVo : resultViewingPageVoIPage.getRecords()) {
+//            //添加应打分人数,实际打分人数,综合评分
+//            MPJLambdaWrapper<EvaluateExecuter> evaluateExecuterPlanExecuterNum = new MPJLambdaWrapper<>();
+//            evaluateExecuterPlanExecuterNum
+//                    .selectSum(EvaluateExecuter::getStatus, ResultViewingPageVo::getActualExecuterNum)
+//                    .selectSum(EvaluateResult::getScore, ResultViewingPageVo::getActualExecuterNum)
+//                    .leftJoin(EvaluateResult.class, EvaluateResult::getEvaluatedObjectId, EvaluateExecuter::getEvaluateObjectId)
+//                    .eq(EvaluateExecuter::getEvaluateManageId, dto.getEvaluateManageId())
+//                    .eq(EvaluateExecuter::getEvaluateObjectId, resultViewingPageVo.getEvaluateObjectId());
+//
+//            List<ResultViewingPageVo> resultViewingPageVoList = evaluateExecuterMapper.selectJoinList(ResultViewingPageVo.class, evaluateExecuterPlanExecuterNum);
+//            resultViewingPageVo.setPlanExecuterNum(resultViewingPageVoList.size());
+//
+//            //查出所有的题目项目
+//            MPJLambdaWrapper<EvaluateManageItem> evaluateManageItemMPJLambdaWrapper = new MPJLambdaWrapper<>();
+//            evaluateManageItemMPJLambdaWrapper
+//                    .selectSum(EvaluateResult::getScore, AllEvaluateManageItemVo::getAllActualScore)
+//                    .selectAs(EvaluateManageItem::getProblem, AllEvaluateManageItemVo::getProblem)
+//                    .selectAs(EvaluateManageItem::getTopic, AllEvaluateManageItemVo::getTopic)
+//                    .leftJoin(EvaluateResult.class, EvaluateResult::getEvaluateItemId, EvaluateManageItem::getId)
+//                    .eq(EvaluateManageItem::getEvaluateManageId, dto.getEvaluateManageId())
+//                    .eq(EvaluateResult::getEvaluatedObjectId, resultViewingPageVo.getEvaluateObjectId())
+//                    .groupBy(EvaluateManageItem::getProblem, EvaluateManageItem::getTopic);
+//
+//            List<AllEvaluateManageItemVo> allEvaluateManageItemVoList = evaluateManageItemMapper.selectJoinList(AllEvaluateManageItemVo.class, evaluateManageItemMPJLambdaWrapper);
+//
+//            Map<String, List<AllEvaluateManageItemVo>> groupedAllEvaluateManageItemVo = allEvaluateManageItemVoList.stream()
+//                    .collect(Collectors.groupingBy(AllEvaluateManageItemVo::getTopic));
+//
+//            List<AllEvaluateManageItemByTopicVo> allEvaluateManageItemByTopicVoList = new ArrayList<>();
+//            groupedAllEvaluateManageItemVo.forEach((topic, group) -> {
+//                allEvaluateManageItemByTopicVoList.add(new AllEvaluateManageItemByTopicVo(){{
+//                    setTopic(topic);
+//                    setAllEvaluateManageItemVoList(group);
+//                    int allTopicScore = 0;
+//                    for (AllEvaluateManageItemVo allEvaluateManageItemVo : group) {
+//                        allTopicScore += allEvaluateManageItemVo.getAllActualScore();
+//                    }
+//                    setAllTopicScore(allTopicScore);
+//                }});
+//            });
+//            resultViewingPageVo.setAllEvaluateManageItemByTopicVoList(allEvaluateManageItemByTopicVoList);
+//        }
         return resultViewingPageVoIPage;
     }
 }

+ 46 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateResultDetailPageDetailList.java

@@ -0,0 +1,46 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 评价结果首页详情查看的详情出参list集合
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@Data
+public class EvaluateResultDetailPageDetailList {
+
+    /**
+    * 每一道题目的主键编号
+    */
+    @ApiModelProperty("每一道题目的主键编号")
+    private Long evaluateManageItem;
+    /**
+    * 标题名称
+    */
+    @ApiModelProperty("标题名称")
+    private String topic;
+    /**
+    * 题目名称
+    */
+    @ApiModelProperty("题目名称")
+    private String problem;
+    /**
+    * 题目分数(最小为0,只能整数)
+    */
+    @ApiModelProperty("题目分数(最小为0,只能整数)")
+    private Integer score;
+    /**
+     * 实际分数(最小为0,只能整数)
+     */
+    @ApiModelProperty("实际分数(最小为0,只能整数)")
+    private Integer actualScore;
+    /**
+     * 建议/意见
+     */
+    @ApiModelProperty("建议/意见")
+    private String opinion;
+
+}

+ 4 - 4
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateResultDetailPageDetailVo.java

@@ -6,7 +6,7 @@ import lombok.Data;
 import java.util.List;
 
 /**
-* @title: 评价结果首页分页列表出参
+* @title: 评价结果首页详情查看的详情出参
 * @Author szs
 * @Date: 2024-01-16
 * @Version 1.0
@@ -45,9 +45,9 @@ public class EvaluateResultDetailPageDetailVo {
     private String userIdCN;
 
     /**
-     * 评价项表单根据标题名称分组出参
+     * 评价结果首页详情查看的详情出参list集合
      */
-    @ApiModelProperty(value = "评价项表单根据标题名称分组出参")
-    private List<EvaluateManageItemByTopicVo> evaluateManageItemByTopicVoList;
+    @ApiModelProperty(value = "评价结果首页详情查看的详情出参list集合")
+    private List<EvaluateResultDetailPageDetailList> evaluateResultDetailPageDetailList;
 
 }

+ 12 - 3
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateResultDetailPageVo.java

@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
-* @title: 评价结果首页分页列表出参
+* @title: 评价结果首页详情查看分页列表出参
 * @Author szs
 * @Date: 2024-01-16
 * @Version 1.0
@@ -27,7 +27,7 @@ public class EvaluateResultDetailPageVo {
      * 被评价对象类型
      */
     @ApiModelProperty("被评价对象类型")
-    private String objectType;
+    private String evaluatedObjectType;
 
     /**
      * 被评价人id
@@ -41,6 +41,11 @@ public class EvaluateResultDetailPageVo {
     @ApiModelProperty("被评人名字")
     private String ObjectIdCN;
 
+    /**
+     * 执行人id
+     */
+    @ApiModelProperty("执行人id")
+    private Long evaluatedExecuterId;
     /**
      * 参评人id
      */
@@ -52,7 +57,11 @@ public class EvaluateResultDetailPageVo {
      */
     @ApiModelProperty("参评人id")
     private String userIdCN;
-
+    /**
+     * 评分状态
+     */
+    @ApiModelProperty("评分状态(0-未评分,1-已评分)")
+    private Integer status;
     /**
      * 综合评分
      */

+ 19 - 22
src/main/java/com/xjrsoft/module/evaluate/vo/ResultViewingPageVo.java

@@ -3,8 +3,6 @@ package com.xjrsoft.module.evaluate.vo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.util.List;
-
 /**
 * @title: 评价项表单出参
 * @Author szs
@@ -15,30 +13,30 @@ import java.util.List;
 public class ResultViewingPageVo {
 
     /**
-    * 被评对象id
+    * 具体被评的那个对象id
     */
-    @ApiModelProperty("被评对象id")
-    private Long evaluateObjectId;
+    @ApiModelProperty("具体被评的那个对象id")
+    private Long objectId;
     /**
-     * 被评价对象类别
+     * 具体被评的那个对象的id
      */
-    @ApiModelProperty("被评价对象类别")
-    private String objectType;
+    @ApiModelProperty("具体被评的那个对象的id")
+    private String objectIdCN;
     /**
-     * 具体被评价对象id
+     * 题目项的id
      */
-    @ApiModelProperty("具体被评价对象id")
-    private Long objectId;
+    @ApiModelProperty("题目项的id")
+    private Long evaluateManageItemId;
     /**
-     * 具体被评价对象id
+     * 题目名称
      */
-    @ApiModelProperty("具体被评价对象id")
-    private String objectIdCN;
+    @ApiModelProperty("题目名称")
+    private String problem;
     /**
-    * 序号
-    */
-    @ApiModelProperty("序号")
-    private Integer sortCode;
+     * 标题名称
+     */
+    @ApiModelProperty("标题名称")
+    private String topic;
     /**
      * 应打分人数
      */
@@ -49,10 +47,9 @@ public class ResultViewingPageVo {
      */
     @ApiModelProperty("实际打分人数")
     private Integer actualExecuterNum;
-
     /**
-     * 评价项表单根据标题名称分组出参
+     * 单个被评对象的每一道题的总得分
      */
-    @ApiModelProperty(value = "评价项表单根据标题名称分组出参")
-    private List<AllEvaluateManageItemByTopicVo> allEvaluateManageItemByTopicVoList;
+    @ApiModelProperty("单个被评对象的每一道题的总得分")
+    private Integer sumScore;
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/service/impl/WfTextbookClaimServiceImpl.java

@@ -224,7 +224,7 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
                 throw new MyException(textbook.getBookName() + "发放总数量超出申领数量");
             }
 
-            //判断发放量是否多库存量
+            //判断发放量是否多库存量
             Integer stock = ObjectUtil.isNull(textbook.getStock()) ? 0 : textbook.getStock();
             if (stock < confirmNumber) {
                 throw new MyException(textbook.getBookName() + "库存不足");

+ 122 - 11
src/main/resources/mapper/evaluate/EvaluateResultMapper.xml

@@ -3,19 +3,130 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xjrsoft.module.evaluate.mapper.EvaluateResultMapper">
+    <select id="getIndexPage" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateResultIndexPageDto" resultType="com.xjrsoft.module.evaluate.vo.EvaluateResultIndexPageVo">
+        SELECT
+        t.id    AS evaluateManageId,
+        t1.name AS semesterName,
+        t2.name AS orgName,
+        t4.name AS evaluateTypeCN,
+        t.name,
+        t.start_time,
+        t.end_time
+        FROM evaluate_manage t
+        LEFT JOIN base_semester t1 ON (t1.id = t.base_semester_id)
+        LEFT JOIN xjr_department t2 ON (t2.id = t.org_id)
+        LEFT JOIN evaluate_template t3 ON (t3.id = t.evaluate_template_id)
+        LEFT JOIN xjr_dictionary_detail t4 ON (t4.code = t3.evaluate_type)
+        WHERE t.delete_mark = 0
+            <if test="dto.baseSemesterId != null and dto.baseSemesterId > 0">
+              AND t.base_semester_id = #{dto.baseSemesterId}
+            </if>
+            <if test="dto.orgId != null and dto.orgId > 0">
+                AND t.org_id = #{dto.orgId}
+            </if>
+            <if test="dto.evaluateType != null and dto.evaluateType != ''">
+                AND t3.evaluate_type = #{dto.evaluateType}
+            </if>
+            <if test="dto.name != null and dto.name != ''">
+                AND t.name like CONCAT('%',#{dto.name},'%')
+            </if>
+            <if test="dto.startTime != null and dto.startTime != ''">
+                AND t.start_time &gt;= #{dto.startTime}
+            </if>
+            <if test="dto.endTime != null and dto.endTime != ''">
+                AND t.end_time &lt;= #{dto.endTime}
+            </if>
+        ORDER BY t.id DESC
+    </select>
+
     <select id="getDetailPage" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateResultDetailPageDto" resultType="com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageVo">
         select
-            t1.evaluate_manage_id,
-            t1.object_type,
-            t1.object_id,
-            t.evaluated_object_id,
-            t.user_id,
-            t2.name as userIdCN,
-            sum(t.score) as comprehensiveScore
+        t.evaluate_manage_id as evaluateManageId,
+        t.id as evaluatedObjectId,
+        t3.id as evaluatedExecuterId,
+        ifnull(t1.name, t1.name) as ObjectIdCN,
+        t4.name as userIdCN,
+        t3.status,
+        ifnull(t5.comprehensiveScore, 0) as comprehensiveScore
+        from evaluate_object t
+        left join xjr_user t1 on t1.id = t.object_id
+        left join base_class t2 on t2.id = t.object_id
+        left join evaluate_executer t3 on t3.evaluate_object_id = t.id
+        left join xjr_user t4 on t4.id = t3.user_id
+        left join (select
+        t.evaluated_object_id, t.user_id, sum(t.score) as comprehensiveScore
         from evaluate_result t
-                 left join evaluate_object t1 on t1.id = t.evaluated_object
-                 left join xjr_user t2 on t2.id = t.user_id
-        where t1.evaluate_manage_id = #{dto.evaluateManageId}
-        group by t.evaluated_object_id,t.user_id
+        group by t.evaluated_object_id, t.user_id) t5 on t5.evaluated_object_id = t.id and t5.user_id = t3.id
+        where t.evaluate_manage_id = #{dto.evaluateManageId}
+        <if test="dto.baseGradeId != null and dto.baseGradeId > 0">
+            AND t.base_grade_id = #{dto.baseGradeId}
+        </if>
+        <if test="dto.status != null">
+            AND t3.status = #{dto.status}
+        </if>
+        <if test="dto.classId != null and dto.classId > 0">
+            AND t.object_id = #{dto.classId}
+        </if>
+        <if test="dto.teacherId != null and dto.teacherId > 0 and (dto.checkObject == null or dto.checkObject == 0)">
+            AND (t.object_id = #{dto.teacherId}
+                or t3.user_id = #{dto.teacherId})
+        </if>
+        <if test="dto.teacherId != null and dto.teacherId > 0 and dto.checkObject != null and dto.checkObject == 1">
+            AND t.object_id = #{dto.teacherId}
+        </if>
+        <if test="dto.teacherId != null and dto.teacherId > 0 and dto.checkObject != null and dto.checkObject == 2">
+            AND t3.user_id = #{dto.teacherId}
+        </if>
+        <if test="dto.name != null and dto.name != '' and (dto.checkObject == null or dto.checkObject == 0)">
+            AND (t1.name like CONCAT('%',#{dto.name},'%')
+                or t2.name like CONCAT('%',#{dto.name},'%')
+                or t4.name like CONCAT('%',#{dto.name},'%'))
+        </if>
+        <if test="dto.name != null and dto.name != '' and dto.checkObject != null and dto.checkObject == 1">
+            AND (t1.name like CONCAT('%',#{dto.name},'%')
+            or t2.name like CONCAT('%',#{dto.name},'%'))
+        </if>
+        <if test="dto.name != null and dto.name != '' and dto.checkObject != null and dto.checkObject == 2">
+            AND t4.name like CONCAT('%',#{dto.name},'%')
+        </if>
+    </select>
+
+    <select id="getDetailPageDetail" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateResultDetailPageDetailDto" resultType="com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageDetailVo">
+        select
+            ifnull(t1.name, t2.name) as ObjectIdCN,
+            t4.name as userIdCN,
+            ifnull(t5.comprehensiveScore, 0) as actulTotal,
+            t6.name,
+            t7.total
+        from evaluate_object t
+                 left join xjr_user t1 on t1.id = t.object_id
+                 left join base_class t2 on t2.id = t.object_id
+                 left join evaluate_executer t3 on t3.evaluate_object_id = t.id
+                 left join xjr_user t4 on t4.id = t3.user_id
+                 left join (select
+                                t.evaluated_object_id, t.user_id, sum(t.score) as comprehensiveScore
+                            from evaluate_result t
+                            group by t.evaluated_object_id, t.user_id) t5 on t5.evaluated_object_id = t.id and t5.user_id = t3.id
+                 left join evaluate_manage t6 on t6.id = t.evaluate_manage_id
+                 left join evaluate_template t7 on t7.id = t6.evaluate_template_id
+        where t.delete_mark = 0
+          and t.evaluate_manage_id = #{dto.evaluateManageId}
+          and t.id = #{dto.evaluatedObjectId}
+          and t3.id = #{dto.evaluatedExecuterId}
+    </select>
+
+    <select id="getDetailPageDetailList" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateResultDetailPageDetailDto" resultType="com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageDetailList">
+        select
+            t.score,
+            t.problem,
+            t.topic,
+            t1.score as actualScore,
+            t1.opinion
+        from evaluate_manage_item t
+                 left join evaluate_result t1 on t1.evaluate_item_id = t.id
+        where t.delete_mark = 0
+          and t.evaluate_manage_id = #{dto.evaluateManageId}
+          and t1.evaluated_object_id = #{dto.evaluatedObjectId}
+          and t1.user_id = #{dto.evaluatedExecuterId}
     </select>
 </mapper>