src/main/java/org/springblade/modules/assessment/wrapper/AssessmentSetDeptWrapper.java
@@ -94,15 +94,19 @@ else vo.setAssessmentTaskVO(null); QueryWrapper<AssessmentScoreEntity> setEntityQueryWrapper = new QueryWrapper<>(); setEntityQueryWrapper.eq("score_user_id", vo.getToUserId()); //考核人id setEntityQueryWrapper.eq("be_id", vo.getDeptId()); //被考核人id setEntityQueryWrapper.eq("assessment_task_id", vo.getAssessmentTaskVO().getId());//考核任务 List<AssessmentScoreEntity> assessmentScoreEntityList = assessmentScoreService.list(setEntityQueryWrapper); if (assessmentScoreEntityList.size() > 0) vo.setAssessmentScoreVO(AssessmentScoreWrapper.build().entityVO(assessmentScoreEntityList.get(0))); else vo.setAssessmentScoreVO(null); //拿考核成绩 if (null != vo.getAssessmentTaskVO()) { QueryWrapper<AssessmentScoreEntity> setEntityQueryWrapper = new QueryWrapper<>(); setEntityQueryWrapper.eq("score_user_id", vo.getToUserId()); //考核人id setEntityQueryWrapper.eq("be_id", vo.getDeptId()); //被考核人id setEntityQueryWrapper.eq("assessment_task_id", vo.getAssessmentTaskVO().getId());//考核任务 List<AssessmentScoreEntity> assessmentScoreEntityList = assessmentScoreService.list(setEntityQueryWrapper); if (assessmentScoreEntityList.size() > 0) vo.setAssessmentScoreVO(AssessmentScoreWrapper.build().entityVO(assessmentScoreEntityList.get(0))); else vo.setAssessmentScoreVO(null); } } IPage<AssessmentSetDeptVO> pageVo = new Page<>(pages.getCurrent(), pages.getSize(), pages.getTotal()); pageVo.setRecords(records); src/main/java/org/springblade/modules/evaluate/controller/EvaluateCandidateController.java
New file @@ -0,0 +1,151 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.evaluate.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import lombok.AllArgsConstructor; import javax.validation.Valid; import org.springblade.core.secure.BladeUser; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.modules.evaluate.entity.EvaluateCandidateEntity; import org.springblade.modules.evaluate.vo.EvaluateCandidateVO; import org.springblade.modules.evaluate.excel.EvaluateCandidateExcel; import org.springblade.modules.evaluate.wrapper.EvaluateCandidateWrapper; import org.springblade.modules.evaluate.service.IEvaluateCandidateService; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.tool.constant.BladeConstant; import springfox.documentation.annotations.ApiIgnore; import java.util.Map; import java.util.List; import javax.servlet.http.HttpServletResponse; /** * 评优候选人 控制器 * * @author aix * @since 2023-12-23 */ @RestController @AllArgsConstructor @RequestMapping("evaluate/evaluateCandidate") @Api(value = "评优候选人", tags = "评优候选人接口") public class EvaluateCandidateController extends BladeController { private final IEvaluateCandidateService evaluateCandidateService; /** * 评优候选人 详情 */ @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入evaluateCandidate") public R<EvaluateCandidateVO> detail(EvaluateCandidateEntity evaluateCandidate) { EvaluateCandidateEntity detail = evaluateCandidateService.getOne(Condition.getQueryWrapper(evaluateCandidate)); return R.data(EvaluateCandidateWrapper.build().entityVO(detail)); } /** * 评优候选人 分页 */ @GetMapping("/list") @ApiOperationSupport(order = 2) @ApiOperation(value = "分页", notes = "传入evaluateCandidate") public R<IPage<EvaluateCandidateVO>> list(@ApiIgnore @RequestParam Map<String, Object> evaluateCandidate, Query query) { IPage<EvaluateCandidateEntity> pages = evaluateCandidateService.page(Condition.getPage(query), Condition.getQueryWrapper(evaluateCandidate, EvaluateCandidateEntity.class)); return R.data(EvaluateCandidateWrapper.build().pageVO(pages)); } /** * 评优候选人 自定义分页 */ @GetMapping("/page") @ApiOperationSupport(order = 3) @ApiOperation(value = "分页", notes = "传入evaluateCandidate") public R<IPage<EvaluateCandidateVO>> page(EvaluateCandidateVO evaluateCandidate, Query query) { IPage<EvaluateCandidateVO> pages = evaluateCandidateService.selectEvaluateCandidatePage(Condition.getPage(query), evaluateCandidate); return R.data(pages); } /** * 评优候选人 新增 */ @PostMapping("/save") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入evaluateCandidate") public R save(@Valid @RequestBody EvaluateCandidateEntity evaluateCandidate) { return R.status(evaluateCandidateService.save(evaluateCandidate)); } /** * 评优候选人 修改 */ @PostMapping("/update") @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入evaluateCandidate") public R update(@Valid @RequestBody EvaluateCandidateEntity evaluateCandidate) { return R.status(evaluateCandidateService.updateById(evaluateCandidate)); } /** * 评优候选人 新增或修改 */ @PostMapping("/submit") @ApiOperationSupport(order = 6) @ApiOperation(value = "新增或修改", notes = "传入evaluateCandidate") public R submit(@Valid @RequestBody EvaluateCandidateEntity evaluateCandidate) { return R.status(evaluateCandidateService.saveOrUpdate(evaluateCandidate)); } /** * 评优候选人 删除 */ @PostMapping("/remove") @ApiOperationSupport(order = 7) @ApiOperation(value = "逻辑删除", notes = "传入ids") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(evaluateCandidateService.deleteLogic(Func.toLongList(ids))); } /** * 导出数据 */ @GetMapping("/export-evaluateCandidate") @ApiOperationSupport(order = 9) @ApiOperation(value = "导出数据", notes = "传入evaluateCandidate") public void exportEvaluateCandidate(@ApiIgnore @RequestParam Map<String, Object> evaluateCandidate, BladeUser bladeUser, HttpServletResponse response) { QueryWrapper<EvaluateCandidateEntity> queryWrapper = Condition.getQueryWrapper(evaluateCandidate, EvaluateCandidateEntity.class); //if (!AuthUtil.isAdministrator()) { // queryWrapper.lambda().eq(EvaluateCandidate::getTenantId, bladeUser.getTenantId()); //} queryWrapper.lambda().eq(EvaluateCandidateEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); List<EvaluateCandidateExcel> list = evaluateCandidateService.exportEvaluateCandidate(queryWrapper); ExcelUtil.export(response, "评优候选人数据" + DateUtil.time(), "评优候选人数据表", list, EvaluateCandidateExcel.class); } } src/main/java/org/springblade/modules/evaluate/dto/EvaluateCandidateDTO.java
New file @@ -0,0 +1,34 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.evaluate.dto; import org.springblade.modules.evaluate.entity.EvaluateCandidateEntity; import lombok.Data; import lombok.EqualsAndHashCode; /** * 评优候选人 数据传输对象实体类 * * @author aix * @since 2023-12-23 */ @Data @EqualsAndHashCode(callSuper = true) public class EvaluateCandidateDTO extends EvaluateCandidateEntity { private static final long serialVersionUID = 1L; } src/main/java/org/springblade/modules/evaluate/entity/EvaluateCandidateEntity.java
New file @@ -0,0 +1,68 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.evaluate.entity; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.Date; import lombok.EqualsAndHashCode; import org.springblade.core.tenant.mp.TenantEntity; /** * 评优候选人 实体类 * * @author aix * @since 2023-12-23 */ @Data @TableName("yw_evaluate_candidate") @ApiModel(value = "EvaluateCandidate对象", description = "评优候选人") @EqualsAndHashCode(callSuper = true) public class EvaluateCandidateEntity extends TenantEntity { /** * 评优任务 */ @ApiModelProperty(value = "评优任务") private Long evaluateTaskId; @ApiModelProperty(value = "评优任务名称") private String evaluateTaskName; /** * 候选人id */ @ApiModelProperty(value = "候选人id") private Long userId; /** * 员工名称 */ @ApiModelProperty(value = "员工名称") private String userName; /** * 部门名称 */ @ApiModelProperty(value = "部门名称") private String deptName; /** * 职位名称 */ @ApiModelProperty(value = "职位名称") private String postName; } src/main/java/org/springblade/modules/evaluate/entity/EvaluateResultEntity.java
@@ -16,6 +16,7 @@ */ package org.springblade.modules.evaluate.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import io.swagger.annotations.ApiModel; @@ -62,4 +63,7 @@ @ApiModelProperty(value = "类型(0:员工评优,1:部门评优,2:公司评优)") private Integer type; @TableField(exist = false) private String tempCount; } src/main/java/org/springblade/modules/evaluate/excel/EvaluateCandidateExcel.java
New file @@ -0,0 +1,87 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.evaluate.excel; import lombok.Data; import java.util.Date; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import java.io.Serializable; /** * 评优候选人 Excel实体类 * * @author aix * @since 2023-12-23 */ @Data @ColumnWidth(25) @HeadRowHeight(20) @ContentRowHeight(18) public class EvaluateCandidateExcel implements Serializable { private static final long serialVersionUID = 1L; /** * 租户ID */ @ColumnWidth(20) @ExcelProperty("租户ID") private String tenantId; /** * 评优任务 */ @ColumnWidth(20) @ExcelProperty("评优任务") private Long evaluateTaskId; /** * 候选人id */ @ColumnWidth(20) @ExcelProperty("候选人id") private Long userId; /** * 员工名称 */ @ColumnWidth(20) @ExcelProperty("员工名称") private String userName; /** * 部门名称 */ @ColumnWidth(20) @ExcelProperty("部门名称") private String deptName; /** * 职位名称 */ @ColumnWidth(20) @ExcelProperty("职位名称") private String postName; /** * 是否已删除 */ @ColumnWidth(20) @ExcelProperty("是否已删除") private Integer isDeleted; } src/main/java/org/springblade/modules/evaluate/mapper/EvaluateCandidateMapper.java
New file @@ -0,0 +1,54 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.evaluate.mapper; import org.springblade.modules.evaluate.entity.EvaluateCandidateEntity; import org.springblade.modules.evaluate.vo.EvaluateCandidateVO; import org.springblade.modules.evaluate.excel.EvaluateCandidateExcel; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; import java.util.List; /** * 评优候选人 Mapper 接口 * * @author aix * @since 2023-12-23 */ public interface EvaluateCandidateMapper extends BaseMapper<EvaluateCandidateEntity> { /** * 自定义分页 * * @param page * @param evaluateCandidate * @return */ List<EvaluateCandidateVO> selectEvaluateCandidatePage(IPage page, EvaluateCandidateVO evaluateCandidate); /** * 获取导出数据 * * @param queryWrapper * @return */ List<EvaluateCandidateExcel> exportEvaluateCandidate(@Param("ew") Wrapper<EvaluateCandidateEntity> queryWrapper); } src/main/java/org/springblade/modules/evaluate/mapper/EvaluateCandidateMapper.xml
New file @@ -0,0 +1,34 @@ <?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="org.springblade.modules.evaluate.mapper.EvaluateCandidateMapper"> <!-- 通用查询映射结果 --> <resultMap id="evaluateCandidateResultMap" type="org.springblade.modules.evaluate.entity.EvaluateCandidateEntity"> <result column="id" property="id"/> <result column="tenant_id" property="tenantId"/> <result column="evaluate_task_id" property="evaluateTaskId"/> <result column="evaluate_task_name" property="evaluateTaskName"/> <result column="user_id" property="userId"/> <result column="user_name" property="userName"/> <result column="dept_name" property="deptName"/> <result column="post_name" property="postName"/> <result column="create_user" property="createUser"/> <result column="create_dept" property="createDept"/> <result column="create_time" property="createTime"/> <result column="update_user" property="updateUser"/> <result column="update_time" property="updateTime"/> <result column="status" property="status"/> <result column="is_deleted" property="isDeleted"/> </resultMap> <select id="selectEvaluateCandidatePage" resultMap="evaluateCandidateResultMap"> select * from yw_evaluate_candidate where is_deleted = 0 </select> <select id="exportEvaluateCandidate" resultType="org.springblade.modules.evaluate.excel.EvaluateCandidateExcel"> SELECT * FROM yw_evaluate_candidate ${ew.customSqlSegment} </select> </mapper> src/main/java/org/springblade/modules/evaluate/mapper/EvaluateResultMapper.java
@@ -42,6 +42,8 @@ */ List<EvaluateResultVO> selectEvaluateResultPage(IPage page, EvaluateResultVO evaluateResult); List<EvaluateResultEntity> selectEvaluateResultGroupBeId(IPage page,EvaluateResultVO evaluateResult); /** * 获取导出数据 src/main/java/org/springblade/modules/evaluate/mapper/EvaluateResultMapper.xml
@@ -6,7 +6,7 @@ <resultMap id="evaluateResultResultMap" type="org.springblade.modules.evaluate.entity.EvaluateResultEntity"> <result column="id" property="id"/> <result column="tenant_id" property="tenantId"/> <result column="assessment_task_id" property="assessmentTaskId"/> <result column="assessment_task_id" property="evaluateTaskId"/> <result column="be_id" property="beId"/> <result column="score_user_id" property="scoreUserId"/> <result column="remark" property="remark"/> @@ -18,6 +18,7 @@ <result column="update_time" property="updateTime"/> <result column="status" property="status"/> <result column="is_deleted" property="isDeleted"/> <result column="temp_count" property="tempCount"/> </resultMap> @@ -25,6 +26,17 @@ select * from yw_evaluate_result where is_deleted = 0 </select> <select id="selectEvaluateResultGroupBeId" resultMap="evaluateResultResultMap"> select be_id,count(*) as temp_count from yw_evaluate_result where is_deleted = 0 AND type = 0 <if test="evaluateResult.type !=null"> AND type = #{evaluateResult.type} </if> <if test="evaluateResult.evaluateTaskId !=null and evaluateResult.evaluateTaskId!=''"> AND evaluate_task_id = #{evaluateResult.evaluateTaskId} </if> GROUP BY be_id </select> <select id="exportEvaluateResult" resultType="org.springblade.modules.evaluate.excel.EvaluateResultExcel"> SELECT * FROM yw_evaluate_result ${ew.customSqlSegment} src/main/java/org/springblade/modules/evaluate/mapper/EvaluateTaskSetMapper.xml
@@ -32,9 +32,15 @@ WHEN 1 THEN ( select count(*) from yw_evaluate_result b where b.evaluate_task_id = a.evaluate_task_id and a.dept_id = b.be_id ) END as vote_num from yw_evaluate_task_set a where is_deleted = 0 <if test="evaluateTaskSet.type !=null and evaluateTaskSet.type!=''"> <if test="evaluateTaskSet.type !=null"> AND type = #{evaluateTaskSet.type} </if> <if test="evaluateTaskSet.evaluateTaskName !=null and evaluateTaskSet.evaluateTaskName !=''"> AND evaluate_task_name like concat('%', #{evaluateTaskSet.evaluateTaskName},'%') </if> <if test="evaluateTaskSet.deptName !=null and evaluateTaskSet.deptName !=''"> AND dept_name like concat('%', #{evaluateTaskSet.deptName},'%') </if> </select> src/main/java/org/springblade/modules/evaluate/service/IEvaluateCandidateService.java
New file @@ -0,0 +1,52 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.evaluate.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import org.springblade.modules.evaluate.entity.EvaluateCandidateEntity; import org.springblade.modules.evaluate.vo.EvaluateCandidateVO; import org.springblade.modules.evaluate.excel.EvaluateCandidateExcel; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import java.util.List; /** * 评优候选人 服务类 * * @author aix * @since 2023-12-23 */ public interface IEvaluateCandidateService extends BaseService<EvaluateCandidateEntity> { /** * 自定义分页 * * @param page * @param evaluateCandidate * @return */ IPage<EvaluateCandidateVO> selectEvaluateCandidatePage(IPage<EvaluateCandidateVO> page, EvaluateCandidateVO evaluateCandidate); /** * 导出数据 * * @param queryWrapper * @return */ List<EvaluateCandidateExcel> exportEvaluateCandidate(Wrapper<EvaluateCandidateEntity> queryWrapper); } src/main/java/org/springblade/modules/evaluate/service/IEvaluateResultService.java
@@ -40,6 +40,8 @@ */ IPage<EvaluateResultVO> selectEvaluateResultPage(IPage<EvaluateResultVO> page, EvaluateResultVO evaluateResult); IPage<EvaluateResultVO> selectEvaluateResultGroupBeId(IPage<EvaluateResultVO> page, EvaluateResultVO evaluateResult); /** * 导出数据 src/main/java/org/springblade/modules/evaluate/service/impl/EvaluateCandidateServiceImpl.java
New file @@ -0,0 +1,54 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.evaluate.service.impl; import org.springblade.modules.evaluate.entity.EvaluateCandidateEntity; import org.springblade.modules.evaluate.vo.EvaluateCandidateVO; import org.springblade.modules.evaluate.excel.EvaluateCandidateExcel; import org.springblade.modules.evaluate.mapper.EvaluateCandidateMapper; import org.springblade.modules.evaluate.service.IEvaluateCandidateService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseServiceImpl; import java.util.List; /** * 评优候选人 服务实现类 * * @author aix * @since 2023-12-23 */ @Service public class EvaluateCandidateServiceImpl extends BaseServiceImpl<EvaluateCandidateMapper, EvaluateCandidateEntity> implements IEvaluateCandidateService { @Override public IPage<EvaluateCandidateVO> selectEvaluateCandidatePage(IPage<EvaluateCandidateVO> page, EvaluateCandidateVO evaluateCandidate) { return page.setRecords(baseMapper.selectEvaluateCandidatePage(page, evaluateCandidate)); } @Override public List<EvaluateCandidateExcel> exportEvaluateCandidate(Wrapper<EvaluateCandidateEntity> queryWrapper) { List<EvaluateCandidateExcel> evaluateCandidateList = baseMapper.exportEvaluateCandidate(queryWrapper); //evaluateCandidateList.forEach(evaluateCandidate -> { // evaluateCandidate.setTypeName(DictCache.getValue(DictEnum.YES_NO, EvaluateCandidate.getType())); //}); return evaluateCandidateList; } } src/main/java/org/springblade/modules/evaluate/service/impl/EvaluateResultServiceImpl.java
@@ -16,15 +16,35 @@ */ package org.springblade.modules.evaluate.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.AllArgsConstructor; import org.springblade.common.cache.SysCache; import org.springblade.common.cache.UserCache; import org.springblade.core.tool.utils.StringUtil; import org.springblade.modules.assessment.wrapper.CandidateJsonObj; import org.springblade.modules.evaluate.entity.EvaluateCandidateEntity; import org.springblade.modules.evaluate.entity.EvaluateResultEntity; import org.springblade.modules.evaluate.entity.EvaluateTaskEntity; import org.springblade.modules.evaluate.entity.EvaluateTaskSetEntity; import org.springblade.modules.evaluate.service.IEvaluateCandidateService; import org.springblade.modules.evaluate.service.IEvaluateTaskService; import org.springblade.modules.evaluate.service.IEvaluateTaskSetService; import org.springblade.modules.evaluate.vo.EvaluateResultVO; import org.springblade.modules.evaluate.excel.EvaluateResultExcel; import org.springblade.modules.evaluate.mapper.EvaluateResultMapper; import org.springblade.modules.evaluate.service.IEvaluateResultService; import org.springblade.modules.evaluate.wrapper.EvaluateResultWrapper; import org.springblade.modules.system.entity.User; import org.springblade.modules.system.service.IUserService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseServiceImpl; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** @@ -34,13 +54,24 @@ * @since 2023-12-18 */ @Service @AllArgsConstructor public class EvaluateResultServiceImpl extends BaseServiceImpl<EvaluateResultMapper, EvaluateResultEntity> implements IEvaluateResultService { private final IEvaluateTaskService evaluateTaskService; private final IUserService userService; private final IEvaluateCandidateService evaluateCandidateService; @Override public IPage<EvaluateResultVO> selectEvaluateResultPage(IPage<EvaluateResultVO> page, EvaluateResultVO evaluateResult) { return page.setRecords(baseMapper.selectEvaluateResultPage(page, evaluateResult)); } @Override public IPage<EvaluateResultVO> selectEvaluateResultGroupBeId(IPage<EvaluateResultVO> page, EvaluateResultVO evaluateResult) { return page.setRecords(EvaluateResultWrapper.build().listVO(baseMapper.selectEvaluateResultGroupBeId(page, evaluateResult))); } @Override public List<EvaluateResultExcel> exportEvaluateResult(Wrapper<EvaluateResultEntity> queryWrapper) { @@ -51,4 +82,91 @@ return evaluateResultList; } @Override @Transactional public boolean saveOrUpdate(EvaluateResultEntity evaluateResult) { boolean ret = super.saveOrUpdate(evaluateResult); // 是否评分完成判断此操作 if (ret) { EvaluateTaskEntity taskPO = evaluateTaskService.getById(evaluateResult.getEvaluateTaskId()); //判断评分是否完成 0:type 判断设置的部门员工是否完成评分 1:type 判断设置的部门是否完成评分 if (evaluateResult.getType() == 0) { List<CandidateJsonObj> candidateJsonObjs = JSONArray.parseArray(JSON.toJSONString(taskPO.getCandidateNum()),CandidateJsonObj.class); String deptIdsStr = ""; for (CandidateJsonObj obj:candidateJsonObjs) { if (StringUtil.isNotBlank(deptIdsStr)) { deptIdsStr += "," + obj.getDeptId(); } else { deptIdsStr = obj.getDeptId() + ""; } } //根据部门获取所有用户数量 QueryWrapper<User> queryWrapper = new QueryWrapper(); queryWrapper.in("dept_id", deptIdsStr); // 拿到设置部门所有用户数量 Long userByDeptIdsCount = userService.count(queryWrapper); //用户数量和评优数据进行匹配 相同需要设置任务状态为已完成 QueryWrapper<EvaluateResultEntity> resultEntityQueryWrapper = new QueryWrapper<>(); resultEntityQueryWrapper.eq("evaluate_task_id", evaluateResult.getEvaluateTaskId()); Long evaluateResultCount = count(resultEntityQueryWrapper); // 相同需要设置任务状态为已完成 不同不处理 if (userByDeptIdsCount == evaluateResultCount) { taskPO.setCandidateState(2);//结束 evaluateTaskService.updateById(taskPO); //保存候选人信息 for (CandidateJsonObj obj:candidateJsonObjs) { Integer val = obj.getVal(); Page<EvaluateResultVO> page = new Page<>(); page.setCurrent(1); page.setSize(val); EvaluateResultVO vo = new EvaluateResultVO(); vo.setType(0); vo.setEvaluateTaskId(evaluateResult.getEvaluateTaskId()); IPage<EvaluateResultVO> evaluateResultVOIPage = selectEvaluateResultGroupBeId(page,vo); for (EvaluateResultVO resultVO:evaluateResultVOIPage.getRecords()) { EvaluateCandidateEntity evaluateCandidate = new EvaluateCandidateEntity(); evaluateCandidate.setEvaluateTaskId(evaluateResult.getEvaluateTaskId()); evaluateCandidate.setEvaluateTaskName(taskPO.getTaskName()); User user = UserCache.getUser(resultVO.getBeId()); evaluateCandidate.setUserId(user.getId()); evaluateCandidate.setUserName(user.getName()); evaluateCandidate.setDeptName(SysCache.getDeptName(Long.valueOf(user.getDeptId()))); evaluateCandidate.setPostName(SysCache.getPostName(Long.valueOf(user.getPostId()))); evaluateCandidateService.save(evaluateCandidate); } } } } else if (evaluateResult.getType() == 1) { QueryWrapper<EvaluateResultEntity> resultEntityQueryWrapper = new QueryWrapper<>(); resultEntityQueryWrapper.eq("evaluate_task_id", evaluateResult.getEvaluateTaskId()); Long evaluateResultCount = count(resultEntityQueryWrapper); //部门评优数量和所有用户匹配 QueryWrapper<User> queryWrapper = new QueryWrapper(); queryWrapper.in("user_type", 2);//员工用户 // 拿到设置部门所有用户数量 Long userByDeptIdsCount = userService.count(queryWrapper); // 相同需要设置任务状态为已完成 不同不处理 if (userByDeptIdsCount == evaluateResultCount) { taskPO.setCandidateState(2);//结束 evaluateTaskService.updateById(taskPO); } } } return ret; } } src/main/java/org/springblade/modules/evaluate/vo/EvaluateCandidateVO.java
New file @@ -0,0 +1,35 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.evaluate.vo; import org.springblade.modules.evaluate.entity.EvaluateCandidateEntity; import org.springblade.core.tool.node.INode; import lombok.Data; import lombok.EqualsAndHashCode; /** * 评优候选人 视图实体类 * * @author aix * @since 2023-12-23 */ @Data @EqualsAndHashCode(callSuper = true) public class EvaluateCandidateVO extends EvaluateCandidateEntity { private static final long serialVersionUID = 1L; } src/main/java/org/springblade/modules/evaluate/wrapper/EvaluateCandidateWrapper.java
New file @@ -0,0 +1,50 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.evaluate.wrapper; import org.springblade.core.mp.support.BaseEntityWrapper; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.modules.evaluate.entity.EvaluateCandidateEntity; import org.springblade.modules.evaluate.vo.EvaluateCandidateVO; import java.util.Objects; /** * 评优候选人 包装类,返回视图层所需的字段 * * @author aix * @since 2023-12-23 */ public class EvaluateCandidateWrapper extends BaseEntityWrapper<EvaluateCandidateEntity, EvaluateCandidateVO> { public static EvaluateCandidateWrapper build() { return new EvaluateCandidateWrapper(); } @Override public EvaluateCandidateVO entityVO(EvaluateCandidateEntity evaluateCandidate) { EvaluateCandidateVO evaluateCandidateVO = Objects.requireNonNull(BeanUtil.copy(evaluateCandidate, EvaluateCandidateVO.class)); //User createUser = UserCache.getUser(evaluateCandidate.getCreateUser()); //User updateUser = UserCache.getUser(evaluateCandidate.getUpdateUser()); //evaluateCandidateVO.setCreateUserName(createUser.getName()); //evaluateCandidateVO.setUpdateUserName(updateUser.getName()); return evaluateCandidateVO; } }