Browse Source

绩效考核

lihui007 3 years ago
parent
commit
e6e27c1b0d

+ 28 - 11
operation_manager/src/main/java/com/huaxu/evaluation/controller/EvaluationResultReportController.java

@@ -1,10 +1,8 @@
 package com.huaxu.evaluation.controller;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.huaxu.evaluation.dto.EvaluationResultDto;
-import com.huaxu.evaluation.enums.EvaluationResultStatus;
+import com.huaxu.evaluation.dto.EvaluationReportDto;
 import com.huaxu.evaluation.service.EvaluationResultService;
-import com.huaxu.evaluation.vo.EvaluationResultVo;
+import com.huaxu.evaluation.vo.*;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.Pagination;
 import com.huaxu.model.ResultStatus;
@@ -14,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * @ClassName EvaluationResultReportController
@@ -31,14 +31,31 @@ public class EvaluationResultReportController {
     private EvaluationResultService evaluationResultService;
 
     @ApiOperation(value = "人员绩效排名")
-    @RequestMapping(value = "/find/page", method = RequestMethod.POST)
+    @RequestMapping(value = "/find/ranking", method = RequestMethod.POST)
     @ResponseBody
-    public AjaxMessage<Pagination<EvaluationResultVo>> findPage(@RequestBody @Valid EvaluationResultDto dto) {
-        IPage<EvaluationResultVo> page = evaluationResultService.findPage(dto);
-        if (page == null) {
-            return new AjaxMessage<>(EvaluationResultStatus.DATA_NOT_FOUND.getStatus(), EvaluationResultStatus.DATA_NOT_FOUND.getMessage(),null);
-        }
-        return new AjaxMessage<>(ResultStatus.OK, new Pagination<>(page));
+    public AjaxMessage<List<EvaluationReportRankingVo>> findRanking(@RequestBody @Valid EvaluationReportDto dto) {
+        return new AjaxMessage<>(ResultStatus.OK, evaluationResultService.findRanking(dto));
+    }
+
+    @ApiOperation(value = "绩效等级分布")
+    @RequestMapping(value = "/find/grade/percentage", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<List<EvaluationGradePercentageVo>> findGradePercentage(@RequestBody @Valid EvaluationReportDto dto) {
+        return new AjaxMessage<>(ResultStatus.OK, evaluationResultService.findGradePercentage(dto));
+    }
+
+    @ApiOperation(value = "统计绩效合格数")
+    @RequestMapping(value = "/count/qualified/number", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<List<EvaluationQualifiedNumberVo>> countQualifiedNumber(@RequestBody @Valid EvaluationReportDto dto) {
+        return new AjaxMessage<>(ResultStatus.OK, evaluationResultService.countQualifiedNumber(dto, new BigDecimal("60")));
+    }
+
+    @ApiOperation(value = "统计绩效人均值")
+    @RequestMapping(value = "/count/performance/avg", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<List<EvaluationPerformanceAvgVo>> countPerformanceAvg(@RequestBody @Valid EvaluationReportDto dto) {
+        return new AjaxMessage<>(ResultStatus.OK, evaluationResultService.countPerformanceAvg(dto));
     }
 
 }

+ 40 - 2
operation_manager/src/main/java/com/huaxu/evaluation/dao/EvaluationResultMapper.java

@@ -2,11 +2,11 @@ package com.huaxu.evaluation.dao;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.evaluation.dto.EvaluationReportQueryDto;
 import com.huaxu.evaluation.dto.EvaluationResultQueryDto;
 import com.huaxu.evaluation.dto.EvaluationResultUpdateDto;
 import com.huaxu.evaluation.entity.EvaluationResultEntity;
-import com.huaxu.evaluation.vo.EvaluationResultVo;
-import io.swagger.models.auth.In;
+import com.huaxu.evaluation.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -59,4 +59,42 @@ public interface EvaluationResultMapper {
     **/
     Integer updateEvaluationScore(EvaluationResultUpdateDto updateDto);
 
+    /**
+    * @Author lihui
+    * @Description 查询人员绩效排名
+    * @Date 9:26 2021/5/13
+    * @Param [dto]
+    * @return java.util.List<com.huaxu.evaluation.vo.EvaluationReportRankingVo>
+    **/
+    List<EvaluationReportRankingVo> findRanking(@Param("dto") EvaluationReportQueryDto dto);
+
+    /**
+    * @Author lihui
+    * @Description 查询等级分布占比
+    * @Date 10:12 2021/5/13
+    * @Param [dto]
+    * @return java.util.List<com.huaxu.evaluation.vo.EvaluationGradeDistributionVo>
+    **/
+    List<EvaluationGradePercentageVo> findGradePercentage(@Param("dto") EvaluationReportQueryDto dto);
+
+    /**
+    * @Author lihui
+    * @Description 统计绩效合格数
+    * @Date 10:57 2021/5/13
+    * @Param [dto, qualifiedValue]
+    * @return java.util.List<com.huaxu.evaluation.vo.EvaluationPerformanceQualifiedVo>
+    **/
+    List<EvaluationQualifiedNumberVo> countQualifiedNumber(@Param("dto")EvaluationReportQueryDto dto, @Param("qualifiedValue")BigDecimal qualifiedValue);
+
+
+    /**
+    * @Author lihui
+    * @Description 统计绩效人均值
+    * @Date 11:08 2021/5/13
+    * @Param [dto]
+    * @return java.util.List<EvaluationPerformanceAvgVo>
+    **/
+    List<EvaluationPerformanceAvgVo> countPerformanceAvg(@Param("dto")EvaluationReportQueryDto dto);
+
+
 }

+ 33 - 0
operation_manager/src/main/java/com/huaxu/evaluation/dto/EvaluationReportDto.java

@@ -0,0 +1,33 @@
+package com.huaxu.evaluation.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName EvaluationReportDto
+ * @Description: 绩效考评报表
+ * @Author lihui
+ * @Date 2021/5/13
+ * @Version V1.0
+ **/
+@Data
+@ApiModel(value = "绩效考评报表")
+public class EvaluationReportDto {
+
+    @ApiModelProperty(value="公司ID")
+    private Integer companyOrgId;
+
+    @ApiModelProperty(value="部门ID")
+    private Integer deptOrgId;
+
+    @ApiModelProperty(value="类型:周期(0月度 1季度 2年度)")
+    private Integer cycle;
+
+    @ApiModelProperty(value="年")
+    private Integer year;
+
+    @ApiModelProperty(value="月/季度")
+    private Integer month;
+
+}

+ 36 - 0
operation_manager/src/main/java/com/huaxu/evaluation/dto/EvaluationReportQueryDto.java

@@ -0,0 +1,36 @@
+package com.huaxu.evaluation.dto;
+
+import com.huaxu.model.ProgramItem;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @ClassName EvaluationReportQueryDto
+ * @Description: 绩效考评报表
+ * @Author lihui
+ * @Date 2021/5/13
+ * @Version V1.0
+ **/
+@Data
+@ApiModel(value = "绩效考评报表")
+public class EvaluationReportQueryDto extends EvaluationReportDto {
+
+    @ApiModelProperty(value = "租户")
+    private String tenantId;
+
+    @ApiModelProperty(value ="权限",hidden = true)
+    private List<ProgramItem> programItems;
+
+    @ApiModelProperty(value = "用户类型(0 超管 1 普通用户)")
+    private String userType;
+
+    @ApiModelProperty(value="用户权限类型")
+    private Integer permissonType;
+
+    @ApiModelProperty(value = "季度月份")
+    private List<Integer> months;
+
+}

+ 44 - 2
operation_manager/src/main/java/com/huaxu/evaluation/service/EvaluationResultService.java

@@ -2,9 +2,14 @@ package com.huaxu.evaluation.service;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.evaluation.dto.EvaluationReportQueryDto;
 import com.huaxu.evaluation.dto.EvaluationResultDto;
-import com.huaxu.evaluation.vo.EvaluationResultVo;
+import com.huaxu.evaluation.dto.EvaluationReportDto;
+import com.huaxu.evaluation.vo.*;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * @ClassName EvaluationResultService
@@ -23,4 +28,41 @@ public interface EvaluationResultService {
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.huaxu.evaluation.vo.EvaluationResultVo>
     **/
     IPage<EvaluationResultVo> findPage(EvaluationResultDto dto);
+
+
+    /**
+    * @Author lihui
+    * @Description 查询人员绩效排名
+    * @Date 9:24 2021/5/13
+    * @Param [dto]
+    * @return com.baomidou.mybatisplus.core.metadata.IPage<com.huaxu.evaluation.vo.EvaluationReportRankingVo>
+    **/
+    List<EvaluationReportRankingVo> findRanking(EvaluationReportDto dto);
+
+    /**
+    * @Author lihui
+    * @Description 查询等级占比率
+    * @Date 10:16 2021/5/13
+    * @Param [dto]
+    * @return java.util.List<com.huaxu.evaluation.vo.EvaluationGradePercentageVo>
+    **/
+    List<EvaluationGradePercentageVo> findGradePercentage(EvaluationReportDto dto);
+
+    /**
+     * @Author lihui
+     * @Description 统计绩效合格数
+     * @Date 10:16 2021/5/13
+     * @Param [dto]
+     * @return java.util.List<com.huaxu.evaluation.vo.EvaluationGradePercentageVo>
+     **/
+    List<EvaluationQualifiedNumberVo> countQualifiedNumber(EvaluationReportDto dto, BigDecimal qualifiedValue);
+
+    /**
+    * @Author lihui
+    * @Description 统计绩效人均值
+    * @Date 11:19 2021/5/13
+    * @Param [dto]
+    * @return java.util.List<com.huaxu.evaluation.vo.EvaluationPerformanceAvgVo>
+    **/
+    List<EvaluationPerformanceAvgVo> countPerformanceAvg(EvaluationReportDto dto);
 }

+ 133 - 23
operation_manager/src/main/java/com/huaxu/evaluation/service/impl/EvaluationResultServiceImpl.java

@@ -5,22 +5,27 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huaxu.client.UserCenterClient;
 import com.huaxu.evaluation.dao.EvaluationResultMapper;
+import com.huaxu.evaluation.dto.EvaluationReportDto;
+import com.huaxu.evaluation.dto.EvaluationReportQueryDto;
 import com.huaxu.evaluation.dto.EvaluationResultDto;
 import com.huaxu.evaluation.dto.EvaluationResultQueryDto;
 import com.huaxu.evaluation.enums.EvaluationCycleEnums;
 import com.huaxu.evaluation.enums.EvaluationResultStatus;
 import com.huaxu.evaluation.service.EvaluationResultService;
-import com.huaxu.evaluation.vo.EvaluationResultVo;
+import com.huaxu.evaluation.vo.*;
 import com.huaxu.exception.ServiceException;
 import com.huaxu.model.LoginUser;
 import com.huaxu.org.OrgInfoUtil;
 import com.huaxu.util.UserUtil;
+import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
@@ -60,8 +65,10 @@ public class EvaluationResultServiceImpl implements EvaluationResultService {
         queryDto.setProgramItems(currentUser.getProgramItemList());
         queryDto.setUserType("3");
         queryDto.setPermissonType(currentUser.getPermissonType());
-        // 格式化
-        format(queryDto);
+        // 季度需要格式化月份
+        if (queryDto.getCycle() == EvaluationCycleEnums.QUARTER.getType()){
+            queryDto.setMonth(format(queryDto.getCycle(), queryDto.getMonth()));
+        }
         Page<EvaluationResultVo> page =  evaluationResultMapper.findPage(new Page<>(dto.getPageNum(), dto.getPageSize()), queryDto);
         List<EvaluationResultVo> list = page.getRecords();
         if (CollectionUtil.isEmpty(list)) {
@@ -86,7 +93,96 @@ public class EvaluationResultServiceImpl implements EvaluationResultService {
         return page;
     }
 
+    @Override
+    public List<EvaluationReportRankingVo> findRanking(EvaluationReportDto dto) {
+        EvaluationReportQueryDto queryDto = getReportQuery(dto);
+        if (queryDto == null) {
+            return null;
+        }
+        List<EvaluationReportRankingVo> list =  evaluationResultMapper.findRanking(queryDto);
+        if (CollectionUtil.isEmpty(list)) {
+            return list;
+        }
+        Map<String,String> gradMap  = userCenterClient.selectListByPCodes("SC_EVALUATION_GRADE");
+        for (EvaluationReportRankingVo evaluationReportRankingVo: list) {
+            evaluationReportRankingVo.setEvaluationGrade(gradMap.get(evaluationReportRankingVo.getEvaluationGrade()));
+        }
+        return list;
+    }
+
+    @Override
+    public List<EvaluationGradePercentageVo> findGradePercentage(EvaluationReportDto dto) {
+        EvaluationReportQueryDto queryDto = getReportQuery(dto);
+        if (queryDto == null) {
+            return null;
+        }
+        List<EvaluationGradePercentageVo> list = evaluationResultMapper.findGradePercentage(queryDto);
+        if (CollectionUtil.isEmpty(list)) {
+            return list;
+        }
+        Map<String,String> gradMap  = userCenterClient.selectListByPCodes("SC_EVALUATION_GRADE");
+        BigDecimal total = new BigDecimal("0");
+        for (EvaluationGradePercentageVo vo: list) {
+            total = total.add(new BigDecimal(vo.getPercentage()));
+        }
+        for (EvaluationGradePercentageVo vo: list) {
+            vo.setEvaluationGrade(gradMap.get(vo.getEvaluationGrade()));
+            vo.setPercentage(new BigDecimal(vo.getPercentage()).divide(total,2, RoundingMode.UNNECESSARY).multiply(new BigDecimal("100")).setScale(0, RoundingMode.UNNECESSARY ) + "%");
+        }
+        return list;
+    }
+
+    @Override
+    public List<EvaluationQualifiedNumberVo> countQualifiedNumber(EvaluationReportDto dto, BigDecimal qualifiedValue) {
+        EvaluationReportQueryDto queryDto = getReportQuery(dto);
+        if (queryDto == null) {
+            return null;
+        }
+        if (queryDto.getCycle() == EvaluationCycleEnums.MONTH.getType()) {
+            return null;
+        }
+        if (queryDto.getCycle() == EvaluationCycleEnums.QUARTER.getType()) {
+            queryDto.setMonths(formatList(queryDto.getCycle(), queryDto.getMonth()));
+        }
+        queryDto.setCycle(0);
+        return evaluationResultMapper.countQualifiedNumber(queryDto, qualifiedValue);
+    }
+
+    @Override
+    public List<EvaluationPerformanceAvgVo> countPerformanceAvg(EvaluationReportDto dto) {
+        EvaluationReportQueryDto queryDto = getReportQuery(dto);
+        if (queryDto == null) {
+            return null;
+        }
+        if (queryDto.getCycle() == EvaluationCycleEnums.MONTH.getType()) {
+            return null;
+        }
+        if (queryDto.getCycle() == EvaluationCycleEnums.QUARTER.getType()) {
+            queryDto.setMonths(formatList(queryDto.getCycle(), queryDto.getMonth()));
+        }
+        queryDto.setCycle(0);
+        return evaluationResultMapper.countPerformanceAvg(queryDto);
+    }
+
 
+    private EvaluationReportQueryDto getReportQuery(EvaluationReportDto dto){
+        EvaluationReportQueryDto queryDto = new EvaluationReportQueryDto();
+        BeanUtils.copyProperties(dto, queryDto);
+        // 季度需要格式化月份
+        if (dto.getCycle() == EvaluationCycleEnums.QUARTER.getType()){
+            dto.setMonth(format(dto.getCycle(), dto.getMonth()));
+        }
+        // 获取用户权限
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        if (StringUtils.isEmpty(currentUser.getTenantId())){
+            return null;
+        }
+        queryDto.setTenantId(currentUser.getTenantId());
+        queryDto.setProgramItems(currentUser.getProgramItemList());
+        queryDto.setUserType("3");
+        queryDto.setPermissonType(currentUser.getPermissonType());
+        return queryDto;
+    }
 
     /**
     * @Author lihui
@@ -103,31 +199,45 @@ public class EvaluationResultServiceImpl implements EvaluationResultService {
     }
 
 
-    private void format(EvaluationResultQueryDto dto){
-        Integer cycle = dto.getCycle();
+    private Integer format(Integer cycle, Integer month){
         if (cycle == null) {
             throw new ServiceException(EvaluationResultStatus.PARAM_ERROR.getStatus(), EvaluationResultStatus.PARAM_ERROR.getMessage());
         }
         // 季度需要格式化
-        if (cycle == EvaluationCycleEnums.QUARTER.getType()){
-            Integer month = dto.getMonth();
-            if (month == null){
-                throw new ServiceException(EvaluationResultStatus.PARAM_ERROR.getStatus(), EvaluationResultStatus.PARAM_ERROR.getMessage());
-            }
-            if (month == 1) {
-                dto.setMonth(3);
-            } else if (month == 2 ){
-                dto.setMonth(6);
-            } else if (month == 3) {
-                dto.setMonth(9);
-            } else if (month == 4) {
-                dto.setMonth(12);
-            } else {
-                throw new ServiceException(EvaluationResultStatus.PARAM_ERROR.getStatus(), EvaluationResultStatus.PARAM_ERROR.getMessage());
-            }
+        if (month == null){
+            throw new ServiceException(EvaluationResultStatus.PARAM_ERROR.getStatus(), EvaluationResultStatus.PARAM_ERROR.getMessage());
+        }
+        if (month == 1) {
+            return 3;
+        } else if (month == 2 ){
+            return 6;
+        } else if (month == 3) {
+            return 9;
+        } else if (month == 4) {
+            return 12;
+        } else {
+            throw new ServiceException(EvaluationResultStatus.PARAM_ERROR.getStatus(), EvaluationResultStatus.PARAM_ERROR.getMessage());
         }
-        // dto.setSort(dto.getSort() == null ? 1 : dto.getSort());
     }
 
-
+    private List<Integer> formatList(Integer cycle, Integer month){
+        if (cycle == null) {
+            throw new ServiceException(EvaluationResultStatus.PARAM_ERROR.getStatus(), EvaluationResultStatus.PARAM_ERROR.getMessage());
+        }
+        // 季度需要格式化
+        if (month == null){
+            throw new ServiceException(EvaluationResultStatus.PARAM_ERROR.getStatus(), EvaluationResultStatus.PARAM_ERROR.getMessage());
+        }
+        if (month == 1) {
+            return Arrays.asList(1,2,3);
+        } else if (month == 2 ){
+            return Arrays.asList(4,5,6);
+        } else if (month == 3) {
+            return Arrays.asList(7,8,9);
+        } else if (month == 4) {
+            return Arrays.asList(10,11,12);
+        } else {
+            throw new ServiceException(EvaluationResultStatus.PARAM_ERROR.getStatus(), EvaluationResultStatus.PARAM_ERROR.getMessage());
+        }
+    }
 }

+ 26 - 0
operation_manager/src/main/java/com/huaxu/evaluation/vo/EvaluationGradePercentageVo.java

@@ -0,0 +1,26 @@
+package com.huaxu.evaluation.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @ClassName EvaluationGradeDistributionVo
+ * @Description: 考核等级分布信息
+ * @Author lihui
+ * @Date 2021/5/13
+ * @Version V1.0
+ **/
+@Data
+@ApiModel(value = "考核等级分布信息")
+public class EvaluationGradePercentageVo {
+
+    @ApiModelProperty(value = "绩效等级")
+    private String evaluationGrade;
+
+    @ApiModelProperty(value = "占比")
+    private String percentage;
+
+}

+ 26 - 0
operation_manager/src/main/java/com/huaxu/evaluation/vo/EvaluationPerformanceAvgVo.java

@@ -0,0 +1,26 @@
+package com.huaxu.evaluation.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @ClassName EvaluationPerformanceAvgVo
+ * @Description: 绩效平均值
+ * @Author lihui
+ * @Date 2021/5/13
+ * @Version V1.0
+ **/
+@Data
+@ApiModel(value = "绩效平均值")
+public class EvaluationPerformanceAvgVo {
+
+    @ApiModelProperty(value = "月份")
+    private String month;
+
+    @ApiModelProperty(value = "平均值")
+    private BigDecimal avg;
+
+}

+ 25 - 0
operation_manager/src/main/java/com/huaxu/evaluation/vo/EvaluationQualifiedNumberVo.java

@@ -0,0 +1,25 @@
+package com.huaxu.evaluation.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.models.auth.In;
+import lombok.Data;
+
+/**
+ * @ClassName EvaluationQualifiedNumberVo
+ * @Description: 考核合格数
+ * @Author lihui
+ * @Date 2021/5/13
+ * @Version V1.0
+ **/
+@Data
+@ApiModel(value = "考核合格数")
+public class EvaluationQualifiedNumberVo {
+
+    @ApiModelProperty(value = "绩效等级")
+    private String month;
+
+    @ApiModelProperty(value = "合格数")
+    private Integer qualifiedNumber;
+
+}

+ 36 - 0
operation_manager/src/main/java/com/huaxu/evaluation/vo/EvaluationReportRankingVo.java

@@ -0,0 +1,36 @@
+package com.huaxu.evaluation.vo;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @ClassName EvaluationResultVo
+ * @Description: 考核结果出参
+ * @Author lihui
+ * @Date 2021/5/7
+ * @Version V1.0
+ **/
+@Data
+@ApiModel(value = "考核结果返回信息")
+public class EvaluationReportRankingVo {
+
+    @ApiModelProperty(value = "被考评人")
+    private String evaluationBe;
+
+    @ApiModelProperty(value = "考评得分")
+    private BigDecimal value;
+
+    @ApiModelProperty(value = "绩效等级")
+    private String evaluationGrade;
+
+    @ApiModelProperty(value = "已完成")
+    private int completeCount;
+
+    @ApiModelProperty(value = "完成率")
+    private BigDecimal completionRate;
+
+}

+ 1 - 1
operation_manager/src/main/java/com/huaxu/evaluation/vo/EvaluationResultVo.java

@@ -21,7 +21,7 @@ public class EvaluationResultVo {
     @ApiModelProperty(value = "主键ID")
     private String id;
 
-    @ApiModelProperty(value = "主键ID")
+    @ApiModelProperty(value = "租户ID")
     private String tenantId;
 
     @ApiModelProperty(value = "被考评人")

+ 153 - 45
operation_manager/src/main/resources/mapper/evaluation/EvaluationResultMapper.xml

@@ -20,6 +20,34 @@
            a.DATE_EVALUATION
     </sql>
 
+    <sql id="permissonSql">
+        <if test="dto.permissonType == 5 or dto.permissonType == 2">
+            and ( a.DEPT_ORG_ID in
+            <foreach collection="dto.programItems" item="item" open="(" close=")" separator=",">
+                #{item.orgId}
+            </foreach>
+            or
+            a.COMPANY_ORG_ID in
+            <foreach collection="dto.programItems" item="item" open="(" close=")" separator=",">
+                #{item.orgId}
+            </foreach>
+            )
+        </if>
+        <if test="dto.permissonType == 4 or dto.permissonType == 3">
+            and a.DEPT_ORG_ID in
+            <foreach collection="dto.programItems" item="item" open="(" close=")" separator=",">
+                #{item.orgId}
+            </foreach>
+        </if>
+        <if test="dto.permissonType == 1">
+            and a.COMPANY_ORG_ID in
+            <foreach collection="dto.programItems" item="item" open="(" close=")" separator=",">
+                #{item.orgId}
+            </foreach>
+            and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID = 0)
+        </if>
+    </sql>
+
     <insert id="insertEvaluationResult" useGeneratedKeys="true"  keyProperty="id" parameterType="com.huaxu.evaluation.entity.EvaluationResultEntity">
         insert sc_evaluation_result (TENANT_ID,COMPANY_ORG_ID,DEPT_ORG_ID,EVALUATION_BE,`STATE`,`CYCLE`,`YEAR`,`MONTH`,EVALUATION_GRADE,
                 `VALUE`,DATE_START,DATE_END,DATE_EVALUATION,STATUS,DATE_CREATE,CREATE_BY,DATE_UPDATE,UPDATE_BY)
@@ -38,51 +66,27 @@
         <where>
             a.status = 1 and a.tenant_id = #{dto.tenantId}
             <if test="dto.userType != null and dto.userType != -999 and dto.userType != -9999 and  dto.programItems != null and dto.programItems.size() > 0">
-                <if test="dto.permissonType == 5 or dto.permissonType == 2">
-                    and ( a.DEPT_ORG_ID in
-                    <foreach collection="dto.programItems" item="item" open="(" close=")" separator=",">
-                        #{item.orgId}
-                    </foreach>
-                    or
-                    a.COMPANY_ORG_ID in
-                    <foreach collection="dto.programItems" item="item" open="(" close=")" separator=",">
-                        #{item.orgId}
-                    </foreach>
-                    )
-                </if>
-                <if test="dto.permissonType == 4 or dto.permissonType == 3">
-                    and a.DEPT_ORG_ID in
-                    <foreach collection="dto.programItems" item="item" open="(" close=")" separator=",">
-                        #{item.orgId}
-                    </foreach>
-                </if>
-                <if test="dto.permissonType == 1">
-                    and a.COMPANY_ORG_ID in
-                    <foreach collection="dto.programItems" item="item" open="(" close=")" separator=",">
-                        #{item.orgId}
-                    </foreach>
-                    and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID = 0)
-                </if>
-                <if test="dto.userName != null">
-                    and a.EVALUATION_BE like CONCAT('%',#{dto.userName,jdbcType=VARCHAR},'%')
-                </if>
-                <if test="dto.companyOrgId != null">
-                    and a.COMPANY_ORG_ID = #{dto.companyOrgId}
-                </if>
-                <if test="dto.deptOrgId != null">
-                    and a.DEPT_ORG_ID = #{dto.deptOrgId}
-                </if>
-                <if test="dto.sort == 1 and dto.state != null">
-                    and a.`STATE` = #{dto.state}
-                </if>
-                <if test="dto.sort == 2">
-                    and a.`STATE` = 1
-                </if>
-                and a.`cycle` = #{dto.cycle}
-                and a.`YEAR`  = #{dto.year}
-                <if test="dto.cycle != 2">
-                    and a.`month` = #{dto.month}
-                </if>
+                <include refid="permissonSql"></include>
+            </if>
+            <if test="dto.userName != null">
+                and a.EVALUATION_BE like CONCAT('%',#{dto.userName,jdbcType=VARCHAR},'%')
+            </if>
+            <if test="dto.companyOrgId != null">
+                and a.COMPANY_ORG_ID = #{dto.companyOrgId}
+            </if>
+            <if test="dto.deptOrgId != null">
+                and a.DEPT_ORG_ID = #{dto.deptOrgId}
+            </if>
+            <if test="dto.sort == 1 and dto.state != null">
+                and a.`STATE` = #{dto.state}
+            </if>
+            <if test="dto.sort == 2">
+                and a.`STATE` = 1
+            </if>
+            and a.`cycle` = #{dto.cycle}
+            and a.`YEAR`  = #{dto.year}
+            <if test="dto.cycle != 2">
+                and a.`month` = #{dto.month}
             </if>
         </where>
         <if test="dto.sort == 1">
@@ -103,4 +107,108 @@
             DATE_UPDATE = #{dateUpdate},DATE_EVALUATION =#{dateEvaluation},EVALUATION_BY =#{evaluationBy}
         where id = #{evaluationResultId}
     </update>
+    
+    <select id="findRanking" resultType="com.huaxu.evaluation.vo.EvaluationReportRankingVo">
+        select a.EVALUATION_BE,a.VALUE,a.EVALUATION_GRADE,t.COMPLETE_COUNT,t.COMPLETION_RATE
+        from sc_evaluation_result a
+        inner join sc_evaluation_result_task t on a.id = t.EVALUATION_RESULT_ID
+        <where>
+            a.status = 1 and a.tenant_id = #{dto.tenantId} and t.status = 1
+            <if test="dto.userType != null and dto.userType != -999 and dto.userType != -9999 and  dto.programItems != null and dto.programItems.size() > 0">
+                <include refid="permissonSql"></include>
+            </if>
+            <if test="dto.companyOrgId != null">
+                and a.COMPANY_ORG_ID = #{dto.companyOrgId}
+            </if>
+            <if test="dto.deptOrgId != null">
+                and a.DEPT_ORG_ID = #{dto.deptOrgId}
+            </if>
+            and a.`STATE` = 1
+            and a.`cycle` = #{dto.cycle}
+            and a.`YEAR`  = #{dto.year}
+            <if test="dto.cycle != 2">
+                and a.`month` = #{dto.month}
+            </if>
+        </where>
+        order by a.VALUE desc
+    </select>
+
+    <select id="findGradePercentage" resultType="com.huaxu.evaluation.vo.EvaluationGradePercentageVo">
+        select a.EVALUATION_GRADE, count(1) as "percentage"
+        from sc_evaluation_result a
+        <where>
+            a.status = 1 and a.tenant_id = #{dto.tenantId}
+                <if test="dto.userType != null and dto.userType != -999 and dto.userType != -9999 and  dto.programItems != null and dto.programItems.size() > 0">
+                    <include refid="permissonSql"></include>
+                </if>
+                <if test="dto.companyOrgId != null">
+                    and a.COMPANY_ORG_ID = #{dto.companyOrgId}
+                </if>
+                <if test="dto.deptOrgId != null">
+                    and a.DEPT_ORG_ID = #{dto.deptOrgId}
+                </if>
+                and a.`STATE` = 1
+                and a.`cycle` = #{dto.cycle}
+                and a.`YEAR`  = #{dto.year}
+                <if test="dto.cycle != 2">
+                    and a.`month` = #{dto.month}
+                </if>
+        </where>
+        group by a.EVALUATION_GRADE
+    </select>
+
+    <select id="countQualifiedNumber" resultType="com.huaxu.evaluation.vo.EvaluationQualifiedNumberVo">
+        select a.month, count(1) as "qualifiedNumber"
+        from sc_evaluation_result a
+        <where>
+            a.status = 1 and a.tenant_id = #{dto.tenantId}
+            <if test="dto.userType != null and dto.userType != -999 and dto.userType != -9999 and  dto.programItems != null and dto.programItems.size() > 0">
+                <include refid="permissonSql"></include>
+            </if>
+            <if test="dto.companyOrgId != null">
+                and a.COMPANY_ORG_ID = #{dto.companyOrgId}
+            </if>
+            <if test="dto.deptOrgId != null">
+                and a.DEPT_ORG_ID = #{dto.deptOrgId}
+            </if>
+            and a.`STATE` = 1
+            and a.`cycle` = #{dto.cycle}
+            and a.`YEAR`  = #{dto.year}
+            <if test="dto.months != null">
+                and a.`MONTH` in
+                <foreach collection="dto.months" item="month" open="(" close=")" separator=",">
+                    #{month}
+                </foreach>
+            </if>
+            and a.VALUE  <![CDATA[ >= ]]>  #{qualifiedValue}
+        </where>
+        group by a.`YEAR`,a.`MONTH`
+    </select>
+
+    <select id="countPerformanceAvg" resultType="com.huaxu.evaluation.vo.EvaluationPerformanceAvgVo">
+        select a.month, ROUND( SUM(a.value) / count(1), 2 ) AS "avg"
+        from sc_evaluation_result a
+        <where>
+            a.status = 1 and a.tenant_id = #{dto.tenantId}
+            <if test="dto.userType != null and dto.userType != -999 and dto.userType != -9999 and  dto.programItems != null and dto.programItems.size() > 0">
+                <include refid="permissonSql"></include>
+            </if>
+            <if test="dto.companyOrgId != null">
+                and a.COMPANY_ORG_ID = #{dto.companyOrgId}
+            </if>
+            <if test="dto.deptOrgId != null">
+                and a.DEPT_ORG_ID = #{dto.deptOrgId}
+            </if>
+            and a.`STATE` = 1
+            and a.`cycle` = #{dto.cycle}
+            and a.`YEAR`  = #{dto.year}
+            <if test="dto.months != null">
+                and a.`MONTH` in
+                <foreach collection="dto.months" item="month" open="(" close=")" separator=",">
+                    #{month}
+                </foreach>
+            </if>
+        </where>
+        group by a.`YEAR`,a.`MONTH`
+    </select>
 </mapper>

+ 17 - 2
user_auth/src/main/java/com/huaxu/UserAuthMain.java

@@ -1,15 +1,30 @@
 package com.huaxu;
 
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.context.ApplicationContext;
+import org.springframework.core.env.Environment;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
 @EnableDiscoveryClient
 @SpringBootApplication
+@Slf4j
 public class UserAuthMain {
-    public static void main(String[] args) {
+    public static void main(String[] args) throws UnknownHostException {
         ApplicationContext context = SpringApplication.run(UserAuthMain.class, args);
-
+        context.getApplicationName();
+        Environment env = context.getEnvironment();
+        String ip = InetAddress.getLocalHost().getHostAddress();
+        String port = env.getProperty("server.port");
+        log.info("\n----------------------------------------------------------\n\t" +
+                "Application user_auth is running! Access URLs:\n\t" +
+                "接口Doc: \t\thttp://" + ip + ":" + port + "/swagger-ui.html\n" +
+                "----------------------------------------------------------");
 
     }
 }