Browse Source

评价结果详情页面接口

phoenix 1 year ago
parent
commit
854182df41

+ 14 - 3
src/main/java/com/xjrsoft/module/evaluate/controller/EvaluateResultController.java

@@ -5,8 +5,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
+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.service.IEvaluateResultService;
+import com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageDetailVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateResultIndexPageVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -44,10 +48,17 @@ public class EvaluateResultController {
     @GetMapping(value = "/detail-page")
     @ApiOperation(value="评价结果详情查看列表(分页)")
     @SaCheckPermission("evaluateresult:detail")
-    public RT<PageOutput<EvaluateResultIndexPageVo>> detailPage(@Valid EvaluateResultIndexPageDto dto){
-        IPage<EvaluateResultIndexPageVo> page = evaluateResultService.getDetailPage(dto);
-        PageOutput<EvaluateResultIndexPageVo> pageOutput = ConventPage.getPageOutput(page, EvaluateResultIndexPageVo.class);
+    public RT<PageOutput<EvaluateResultDetailPageVo>> detailPage(@Valid EvaluateResultDetailPageDto dto){
+        IPage<EvaluateResultDetailPageVo> page = evaluateResultService.getDetailPage(dto);
+        PageOutput<EvaluateResultDetailPageVo> pageOutput = ConventPage.getPageOutput(page, EvaluateResultDetailPageVo.class);
         return RT.ok(pageOutput);
     }
 
+    @GetMapping(value = "/detail-page-detail")
+    @ApiOperation(value="评价结果详情查看列表的详情(分页)")
+    @SaCheckPermission("evaluateresult:detail")
+    public RT<EvaluateResultDetailPageDetailVo> detailPageDetail(@Valid EvaluateResultDetailPageDetailDto dto){
+        EvaluateResultDetailPageDetailVo evaluateResultDetailPageDetailVo = evaluateResultService.getDetailPageDetail(dto);
+        return RT.ok(evaluateResultDetailPageDetailVo);
+    }
 }

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

@@ -0,0 +1,34 @@
+package com.xjrsoft.module.evaluate.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 评价结果分页查询入参
+* @Author szs
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvaluateResultDetailPageDetailDto{
+    /**
+     * 评价管理主键编号
+     */
+    @ApiModelProperty(value = "评价管理主键编号",required = true)
+    private Long evaluateManageId;
+
+    /**
+     * 被评对象id
+     */
+    @ApiModelProperty(value = "被评对象id",required = true)
+    private Long evaluatedObjectId;
+
+    /**
+     * 参评人id
+     */
+    @ApiModelProperty(value = "参评人id",required = true)
+    private Long userId;
+}

+ 35 - 0
src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateResultDetailPageDto.java

@@ -0,0 +1,35 @@
+package com.xjrsoft.module.evaluate.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 评价结果分页查询入参
+* @Author szs
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvaluateResultDetailPageDto extends PageInput {
+    /**
+     * 评价管理主键编号
+     */
+    @ApiModelProperty(value = "评价管理主键编号",required = true)
+    private Long evaluateManageId;
+
+    /**
+     * 被评对象id
+     */
+    @ApiModelProperty("被评对象id")
+    private Long evaluatedObjectId;
+
+    /**
+     * 参评人id
+     */
+    @ApiModelProperty("参评人id")
+    private Long userId;
+}

+ 1 - 1
src/main/java/com/xjrsoft/module/evaluate/dto/MakeEvaluateItemDto.java

@@ -18,6 +18,6 @@ public class MakeEvaluateItemDto{
     /**
      * 评价模版编号
      */
-    @ApiModelProperty("评价模版编号")
+    @ApiModelProperty(value = "评价模版编号",required = true)
     private Long evaluateTemplateId;
 }

+ 4 - 2
src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateResultMapper.java

@@ -1,8 +1,10 @@
 package com.xjrsoft.module.evaluate.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.evaluate.dto.EvaluateResultDetailPageDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateResult;
+import com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageVo;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -13,5 +15,5 @@ import org.apache.ibatis.annotations.Mapper;
 */
 @Mapper
 public interface EvaluateResultMapper extends MPJBaseMapper<EvaluateResult> {
-
+    IPage<EvaluateResultDetailPageVo> getDetailPage(IPage<EvaluateResultDetailPageDto> page, EvaluateResultDetailPageDto dto);
 }

+ 7 - 1
src/main/java/com/xjrsoft/module/evaluate/service/IEvaluateResultService.java

@@ -2,8 +2,12 @@ package com.xjrsoft.module.evaluate.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.yulichang.base.MPJBaseService;
+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.EvaluateResultDetailPageDetailVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateResultIndexPageVo;
 
 /**
@@ -16,5 +20,7 @@ import com.xjrsoft.module.evaluate.vo.EvaluateResultIndexPageVo;
 public interface IEvaluateResultService extends MPJBaseService<EvaluateResult> {
     IPage<EvaluateResultIndexPageVo> getIndexPage(EvaluateResultIndexPageDto dto);
 
-    IPage<EvaluateResultIndexPageVo> getDetailPage(EvaluateResultIndexPageDto dto);
+    IPage<EvaluateResultDetailPageVo> getDetailPage(EvaluateResultDetailPageDto dto);
+
+    EvaluateResultDetailPageDetailVo getDetailPageDetail(EvaluateResultDetailPageDetailDto dto);
 }

+ 100 - 6
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateResultServiceImpl.java

@@ -5,20 +5,30 @@ 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.EvaluateManage;
-import com.xjrsoft.module.evaluate.entity.EvaluateResult;
-import com.xjrsoft.module.evaluate.entity.EvaluateTemplate;
+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.EvaluateResultIndexPageVo;
+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
@@ -30,6 +40,15 @@ import org.springframework.stereotype.Service;
 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<>();
@@ -56,7 +75,82 @@ public class EvaluateResultServiceImpl extends MPJBaseServiceImpl<EvaluateResult
     }
 
     @Override
-    public IPage<EvaluateResultIndexPageVo> getDetailPage(EvaluateResultIndexPageDto dto) {
-        return null;
+    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;
     }
 }

+ 28 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateManageItemByTopicVo.java

@@ -0,0 +1,28 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+* @title: 评价项表单根据标题名称分组出参
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@Data
+public class EvaluateManageItemByTopicVo {
+
+    /**
+    * 标题名称
+    */
+    @ApiModelProperty("标题名称")
+    private String topic;
+
+    /**
+     * 评价项表单集合
+     */
+    @ApiModelProperty("评价项表单集合")
+    private List<EvaluateManageItemVo> evaluateManageItemVoList;
+}

+ 66 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateManageItemVo.java

@@ -0,0 +1,66 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 评价项表单出参
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@Data
+public class EvaluateManageItemVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 评价管理编号
+    */
+    @ApiModelProperty("评价管理编号")
+    private Long evaluateManageId;
+    /**
+    * 标题名称
+    */
+    @ApiModelProperty("标题名称")
+    private String topic;
+    /**
+    * 题目名称
+    */
+    @ApiModelProperty("题目名称")
+    private String problem;
+    /**
+    * 题目分数(最小为0,只能整数)
+    */
+    @ApiModelProperty("题目分数(最小为0,只能整数)")
+    private Integer score;
+    /**
+     * 实际分数(最小为0,只能整数)
+     */
+    @ApiModelProperty("实际分数(最小为0,只能整数)")
+    private Integer actulScore;
+    /**
+    * 输入框是否为空
+    */
+    @ApiModelProperty("输入框是否为空")
+    private Integer inputNotNull;
+    /**
+     * 评价项编号
+     */
+    @ApiModelProperty("评价项编号")
+    private Long evaluateItemId;
+    /**
+     * 建议/意见
+     */
+    @ApiModelProperty("建议/意见")
+    private String opinion;
+
+}

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

@@ -0,0 +1,53 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+* @title: 评价结果首页分页列表出参
+* @Author szs
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+public class EvaluateResultDetailPageDetailVo {
+
+    /**
+     * 评价名称
+     */
+    @ApiModelProperty("评价名称")
+    private String name;
+
+    /**
+     * 评价模板总分
+     */
+    @ApiModelProperty("评价模板总分")
+    private Integer total;
+
+    /**
+     * 实际得分
+     */
+    @ApiModelProperty("实际得分")
+    private Integer actulTotal;
+
+    /**
+     * 被评价人名字
+     */
+    @ApiModelProperty("被评人名字")
+    private String ObjectIdCN;
+
+    /**
+     * 参评人id
+     */
+    @ApiModelProperty("参评人id")
+    private String userIdCN;
+
+    /**
+     * 评价项表单根据标题名称分组出参
+     */
+    @ApiModelProperty(value = "评价项表单根据标题名称分组出参")
+    private List<EvaluateManageItemByTopicVo> evaluateManageItemByTopicVoList;
+
+}

+ 61 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateResultDetailPageVo.java

@@ -0,0 +1,61 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 评价结果首页分页列表出参
+* @Author szs
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+public class EvaluateResultDetailPageVo {
+    /**
+     * 评价管理主键编号
+     */
+    @ApiModelProperty(value = "评价管理主键编号",required = true)
+    private Long evaluateManageId;
+
+    /**
+    * 被评价对象id
+    */
+    @ApiModelProperty("被评价对象id")
+    private Long evaluatedObjectId;
+
+    /**
+     * 被评价对象类型
+     */
+    @ApiModelProperty("被评价对象类型")
+    private String objectType;
+
+    /**
+     * 被评价人id
+     */
+    @ApiModelProperty("被评人id")
+    private Long ObjectId;
+
+    /**
+     * 被评价人名字
+     */
+    @ApiModelProperty("被评人名字")
+    private String ObjectIdCN;
+
+    /**
+     * 参评人id
+     */
+    @ApiModelProperty("参评人id")
+    private Long userId;
+
+    /**
+     * 参评人id
+     */
+    @ApiModelProperty("参评人id")
+    private String userIdCN;
+
+    /**
+     * 综合评分
+     */
+    @ApiModelProperty("综合评分")
+    private Integer comprehensiveScore;
+}

+ 21 - 0
src/main/resources/mapper/evaluate/EvaluateResultMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        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="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
+        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
+    </select>
+</mapper>