Merge remote-tracking branch 'origin/main'

main
wanglei 2 months ago
commit 900546e7b1

@ -32,6 +32,10 @@
<artifactId>json</artifactId>
<version>20210307</version>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId>
</dependency>
</dependencies>
</project>

@ -1,6 +1,8 @@
package com.ruoyi.kaohe.controller;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.*;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
@ -10,6 +12,7 @@ import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.kaohe.domain.*;
import com.ruoyi.kaohe.service.IKhVoteEmpService;
import com.ruoyi.kaohe.service.IKhVoteService;
import com.ruoyi.kaohe.util.EnhancedJsonExporter;
import com.ruoyi.kaohe.util.PinYinUtil;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
@ -51,14 +54,16 @@ public class KhKhrwResultController extends BaseController {
@PreAuthorize("@ss.hasPermi('kaohe:kh_result:generate')")
@PostMapping("/generateResult")
public AjaxResult generateResult(KhPingce pc) { //传递参数 id、pcTitle、bkhdxtype
boolean isUpdate=false;
//查询是否已经生成结果
KhKhrwResult resultQuery = new KhKhrwResult();
resultQuery.setPcId(pc.getId());
List<KhKhrwResult> khKhrwResults = khKhrwResultService.selectKhKhrwResultList(resultQuery);
if(khKhrwResults!=null&&khKhrwResults.size()>0){
return AjaxResult.error("该考核任务已有生成结果!");
isUpdate=true;
pc.setPcResultId(khKhrwResults.get(0).getId());
}
return khKhrwResultService.generateResult(pc);
return khKhrwResultService.generateResult(pc,isUpdate);
}
/**
@ -83,6 +88,20 @@ public class KhKhrwResultController extends BaseController {
ExcelUtil<KhKhrwResult> util = new ExcelUtil<KhKhrwResult>(KhKhrwResult.class);
util.exportExcel(response, list, "考核结果数据");
}
/**
* id
*/
@PreAuthorize("@ss.hasPermi('kaohe:kh_result:export')")
@Log(title = "考核结果", businessType = BusinessType.EXPORT)
@PostMapping("/exportById")
public void exportById(HttpServletResponse response, Long id) throws Exception {
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("汇总数据.xlsx", "UTF-8"));
KhKhrwResult khrwResult = khKhrwResultService.selectKhKhrwResultById(id);
String tableHeader = khrwResult.getTableHeader();
String tableData = khrwResult.getTableData();
EnhancedJsonExporter.exportWithMergedHeader(tableHeader,tableData,response);
}
/**
*

@ -1,5 +1,6 @@
package com.ruoyi.kaohe.controller;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.kaohe.domain.KhPcEmp;
@ -44,7 +45,7 @@ public class KhVoteController extends BaseController {
@Autowired
private IKhVoteEmpService voteEmpService;
/*@Scheduled(cron = "0 * * * * ?") // 每分钟的第0秒执行一次 监测时间修改评分状态
@Scheduled(cron = "0 * * * * ?") // 每分钟的第0秒执行一次 监测时间修改评分状态
public void performTask() {
System.out.println("进入定时任务-------------------------------------------------------------");
//获取所有未完成的评分任务
@ -67,7 +68,7 @@ public class KhVoteController extends BaseController {
System.out.println("执行定时任务: " + System.currentTimeMillis() + " 修改评分任务: " + vote.getVoteTitle() + " 状态为已完成");
}
}
}*/
}
/**
*
@ -122,27 +123,48 @@ public class KhVoteController extends BaseController {
@Transactional
public AjaxResult add(@RequestBody KhVote khVote) {
khVoteService.insertKhVote(khVote);
//根据评测id查询职工评测关联 职工
KhPcEmp query = new KhPcEmp();
query.setPcId(khVote.getPingceId());
List<KhPcEmp> pcEmps = pcEmpService.selectKhPcEmpList(query);
for (KhPcEmp pcEmp : pcEmps) {
//新增投票选项关联表
KhVoteEmp voteEmp = new KhVoteEmp();
voteEmp.setBkhdxId(pcEmp.getBkhdxId());
voteEmp.setBkhdxName(pcEmp.getBkhdxName());
voteEmp.setVoteId(khVote.getId());
voteEmp.setVoteTitle(khVote.getVoteTitle());
voteEmp.setPercentage(khVote.getPercentage());
voteEmp.setKhitemTypeid(khVote.getKhitemTypeid());
if(khVote.getKhitemTypeid().equals(1L)){
voteEmp.setOptionA(BigDecimal.ZERO);
voteEmp.setOptionB(BigDecimal.ZERO);
voteEmp.setOptionC(BigDecimal.ZERO);
voteEmp.setOptionD(BigDecimal.ZERO);
if(khVote.getSamePercent()==null||khVote.getSamePercent().equals("0")){
//根据评测id查询职工评测关联 职工
KhPcEmp query = new KhPcEmp();
query.setPcId(khVote.getPingceId());
List<KhPcEmp> pcEmps = pcEmpService.selectKhPcEmpList(query);
for (KhPcEmp pcEmp : pcEmps) {
//新增投票选项关联表
KhVoteEmp voteEmp = new KhVoteEmp();
voteEmp.setBkhdxId(pcEmp.getBkhdxId());
voteEmp.setBkhdxName(pcEmp.getBkhdxName());
voteEmp.setVoteId(khVote.getId());
voteEmp.setVoteTitle(khVote.getVoteTitle());
voteEmp.setPercentage(khVote.getPercentage());
voteEmp.setKhitemTypeid(khVote.getKhitemTypeid());
if(khVote.getKhitemTypeid().equals(1L)){
voteEmp.setOptionA(BigDecimal.ZERO);
voteEmp.setOptionB(BigDecimal.ZERO);
voteEmp.setOptionC(BigDecimal.ZERO);
voteEmp.setOptionD(BigDecimal.ZERO);
}
voteEmpService.insertKhVoteEmp(voteEmp);
}
}else{
for (KhVoteEmp vEmp : khVote.getVoteEmps()) {
//新增投票选项关联表
KhVoteEmp voteEmp = new KhVoteEmp();
voteEmp.setBkhdxId(vEmp.getBkhdxId());
voteEmp.setBkhdxName(vEmp.getBkhdxName());
voteEmp.setVoteId(khVote.getId());
voteEmp.setVoteTitle(khVote.getVoteTitle());
voteEmp.setPercentage(vEmp.getPercentage());
voteEmp.setKhitemTypeid(khVote.getKhitemTypeid());
if(khVote.getKhitemTypeid().equals(1L)){
voteEmp.setOptionA(BigDecimal.ZERO);
voteEmp.setOptionB(BigDecimal.ZERO);
voteEmp.setOptionC(BigDecimal.ZERO);
voteEmp.setOptionD(BigDecimal.ZERO);
}
voteEmpService.insertKhVoteEmp(voteEmp);
}
voteEmpService.insertKhVoteEmp(voteEmp);
}
return AjaxResult.success();
}
@ -158,10 +180,23 @@ public class KhVoteController extends BaseController {
KhVoteEmp query = new KhVoteEmp();
query.setVoteId(khVote.getId());
List<KhVoteEmp> khVoteEmps = voteEmpService.selectKhVoteEmpList(query);
for (KhVoteEmp khVoteEmp : khVoteEmps) {
khVoteEmp.setPercentage(khVote.getPercentage());
khVoteEmp.setVoteTitle(khVote.getVoteTitle());
voteEmpService.updateKhVoteEmp(khVoteEmp);
if (khVote.getSamePercent()==null||khVote.getSamePercent().equals("0")) {
for (KhVoteEmp khVoteEmp : khVoteEmps) {
khVoteEmp.setPercentage(khVote.getPercentage());
khVoteEmp.setVoteTitle(khVote.getVoteTitle());
voteEmpService.updateKhVoteEmp(khVoteEmp);
}
}else{
//修改投票选项关联表
for (KhVoteEmp khVoteEmp : khVoteEmps) {
for (KhVoteEmp vEmp : khVote.getVoteEmps()) {
if (vEmp.getBkhdxId().equals(khVoteEmp.getBkhdxId())) {
khVoteEmp.setPercentage(vEmp.getPercentage());
}
}
khVoteEmp.setVoteTitle(khVote.getVoteTitle());
voteEmpService.updateKhVoteEmp(khVoteEmp);
}
}
khVoteService.updateKhVote(khVote);
return AjaxResult.success();

@ -26,9 +26,9 @@ public class KhEmployee extends BaseEntity {
private Long userId;
/**
*
* ID
*/
@Excel(name = "职工所属部门")
@Excel(name = "部门ID")
private Long deptId;
/**

@ -81,7 +81,32 @@ public class KhVote extends BaseEntity
* @return
*/
private List<Long> itemIds;
/**
* 使 0 1
* @return
*/
private String samePercent;
/**
* 使
* @return
*/
private List<KhVoteEmp> voteEmps;
public String getSamePercent() {
return samePercent;
}
public void setSamePercent(String samePercent) {
this.samePercent = samePercent;
}
public List<KhVoteEmp> getVoteEmps() {
return voteEmps;
}
public void setVoteEmps(List<KhVoteEmp> voteEmps) {
this.voteEmps = voteEmps;
}
public List<Long> getItemIds() {
return itemIds;

@ -62,5 +62,5 @@ public interface IKhKhrwResultService
*/
public int deleteKhKhrwResultById(Long id);
AjaxResult generateResult(KhPingce pc);
AjaxResult generateResult(KhPingce pc,boolean isUpdate);
}

@ -2,12 +2,14 @@ package com.ruoyi.kaohe.service.impl;
import java.util.List;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanValidators;
import com.ruoyi.system.mapper.SysDeptMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -25,10 +27,11 @@ import javax.annotation.Resource;
* @date 2025-06-17
*/
@Service
public class KhEmployeeServiceImpl implements IKhEmployeeService
{
public class KhEmployeeServiceImpl implements IKhEmployeeService {
@Resource
private KhEmployeeMapper khEmployeeMapper;
@Resource
private SysDeptMapper deptMapper;
private static final Logger log = LoggerFactory.getLogger(KhEmployeeServiceImpl.class);
@ -39,8 +42,7 @@ public class KhEmployeeServiceImpl implements IKhEmployeeService
* @return
*/
@Override
public KhEmployee selectKhEmployeeById(Long id)
{
public KhEmployee selectKhEmployeeById(Long id) {
return khEmployeeMapper.selectKhEmployeeById(id);
}
@ -51,8 +53,7 @@ public class KhEmployeeServiceImpl implements IKhEmployeeService
* @return
*/
@Override
public List<KhEmployee> selectKhEmployeeList(KhEmployee khEmployee)
{
public List<KhEmployee> selectKhEmployeeList(KhEmployee khEmployee) {
return khEmployeeMapper.selectKhEmployeeList(khEmployee);
}
@ -63,8 +64,7 @@ public class KhEmployeeServiceImpl implements IKhEmployeeService
* @return
*/
@Override
public int insertKhEmployee(KhEmployee khEmployee)
{
public int insertKhEmployee(KhEmployee khEmployee) {
khEmployee.setCreateTime(DateUtils.getNowDate());
return khEmployeeMapper.insertKhEmployee(khEmployee);
}
@ -76,8 +76,7 @@ public class KhEmployeeServiceImpl implements IKhEmployeeService
* @return
*/
@Override
public int updateKhEmployee(KhEmployee khEmployee)
{
public int updateKhEmployee(KhEmployee khEmployee) {
khEmployee.setUpdateTime(DateUtils.getNowDate());
return khEmployeeMapper.updateKhEmployee(khEmployee);
}
@ -89,8 +88,7 @@ public class KhEmployeeServiceImpl implements IKhEmployeeService
* @return
*/
@Override
public int deleteKhEmployeeByIds(Long[] ids)
{
public int deleteKhEmployeeByIds(Long[] ids) {
return khEmployeeMapper.deleteKhEmployeeByIds(ids);
}
@ -101,64 +99,53 @@ public class KhEmployeeServiceImpl implements IKhEmployeeService
* @return
*/
@Override
public int deleteKhEmployeeById(Long id)
{
public int deleteKhEmployeeById(Long id) {
return khEmployeeMapper.deleteKhEmployeeById(id);
}
@Override
public String importEmp(List<KhEmployee> empList, boolean updateSupport, String operName) {
if (StringUtils.isNull(empList) || empList.size() == 0)
{
if (StringUtils.isNull(empList) || empList.size() == 0) {
throw new ServiceException("导入职工数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
for (KhEmployee employee : empList)
{
try
{
for (KhEmployee employee : empList) {
try {
//根据deptId查询deptName
SysDept sysDept = deptMapper.selectDeptById(employee.getDeptId());
employee.setDeptName(sysDept.getDeptName());
// 验证是否存在这个职工
KhEmployee param = new KhEmployee();
param.setEmpName(employee.getEmpName());
param.setDeptId(employee.getDeptId());
List<KhEmployee> e = khEmployeeMapper.selectKhEmployeeList(param);
if (StringUtils.isNull(e)||e.size()==0)
{
if (StringUtils.isNull(e) || e.size() == 0) {
khEmployeeMapper.insertKhEmployee(employee);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + employee.getEmpName() + " 导入成功");
}
else if (updateSupport)
{
} else if (updateSupport) {
employee.setId(e.get(0).getId());
khEmployeeMapper.updateKhEmployee(employee);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + employee.getEmpName() + " 更新成功");
}
else
{
} else {
failureNum++;
failureMsg.append("<br/>" + failureNum + "、账号 " + employee.getEmpName() + " 已存在");
}
}
catch (Exception e)
{
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、账号 " + employee.getEmpName() + " 导入失败:";
failureMsg.append(msg + e.getMessage());
log.error(msg, e);
}
}
if (failureNum > 0)
{
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
}
else
{
} else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();

@ -108,7 +108,7 @@ public class KhKhrwResultServiceImpl implements IKhKhrwResultService
}
@Override
public AjaxResult generateResult(KhPingce pc) {
public AjaxResult generateResult(KhPingce pc,boolean isUpdate) {
JSONArray children = new JSONArray();
JSONObject tableColumn = new JSONObject();
tableColumn.put("name", "khdx");
@ -250,7 +250,13 @@ public class KhKhrwResultServiceImpl implements IKhKhrwResultService
pcResult.setPcName(pc.getPcTitle());
pcResult.setTableHeader(children.toJSONString());
pcResult.setTableData(endData.toJSONString());
this.insertKhKhrwResult(pcResult);
return AjaxResult.success();
if(isUpdate){
pcResult.setId(pc.getPcResultId());
this.updateKhKhrwResult(pcResult);
return AjaxResult.success("更新成功");
}else{
this.insertKhKhrwResult(pcResult);
return AjaxResult.success("生成成功");
}
}
}

@ -1,12 +1,17 @@
package com.ruoyi.kaohe.service.impl;
import java.util.List;
import java.util.stream.Collectors;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.kaohe.domain.KhVoteEmp;
import com.ruoyi.kaohe.mapper.KhVoteEmpMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.kaohe.mapper.KhVoteMapper;
import com.ruoyi.kaohe.domain.KhVote;
import com.ruoyi.kaohe.service.IKhVoteService;
import org.springframework.transaction.annotation.Transactional;
/**
* Service
@ -19,7 +24,8 @@ public class KhVoteServiceImpl implements IKhVoteService
{
@Autowired
private KhVoteMapper khVoteMapper;
@Autowired
private KhVoteEmpMapper khVoteEmpMapper;
/**
*
*
@ -77,8 +83,18 @@ public class KhVoteServiceImpl implements IKhVoteService
* @return
*/
@Override
@Transactional
public int deleteKhVoteByIds(Long[] ids)
{
//voteid查询职工评分修改对应值 同步删除关联表对应数据
for (Long id : ids) {
KhVoteEmp query = new KhVoteEmp();
query.setVoteId(id);
List<KhVoteEmp> khVoteEmps = khVoteEmpMapper.selectKhVoteEmpList(query);
List<Long> veIds = khVoteEmps.stream().map(KhVoteEmp::getId).collect(Collectors.toList());
khVoteEmpMapper.deleteKhVoteEmpByIds(veIds.toArray(new Long[veIds.size()]));
}
return khVoteMapper.deleteKhVoteByIds(ids);
}

@ -19,6 +19,7 @@
<result property="maxNum" column="max_num" />
<result property="percentage" column="percentage" />
<result property="state" column="state" />
<result property="samePercent" column="same_percent" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
@ -27,7 +28,7 @@
</resultMap>
<sql id="selectKhVoteVo">
select id, pingce_id, pingce_name, khitem_id, khitem_name, khitem_typeId, vote_items, vote_title, v_description, s_time, e_time, max_num, percentage, state, create_by, create_time, update_by, update_time, remark from kh_vote
select id, pingce_id, pingce_name, khitem_id, khitem_name, khitem_typeId, vote_items, vote_title, v_description, s_time, e_time, max_num, percentage, `state`,same_percent, create_by, create_time, update_by, update_time, remark from kh_vote
</sql>
<select id="selectKhVoteList" parameterType="KhVote" resultMap="KhVoteResult">
@ -46,7 +47,9 @@
<if test="maxNum != null "> and max_num = #{maxNum}</if>
<if test="percentage != null "> and percentage = #{percentage}</if>
<if test="state != null and state != ''"> and state = #{state}</if>
<if test="samePercent != null and samePercent != ''"> and same_percent = #{samePercent}</if>
</where>
ORDER BY id DESC
</select>
<select id="getListByPcIdAndItemIds" parameterType="KhVote" resultMap="KhVoteResult">
@ -89,6 +92,7 @@
<if test="maxNum != null">max_num,</if>
<if test="percentage != null">percentage,</if>
<if test="state != null">state,</if>
<if test="samePercent != null">same_percent,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
@ -109,6 +113,7 @@
<if test="maxNum != null">#{maxNum},</if>
<if test="percentage != null">#{percentage},</if>
<if test="state != null">#{state},</if>
<if test="samePercent != null">#{samePercent},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
@ -133,6 +138,7 @@
<if test="maxNum != null">max_num = #{maxNum},</if>
<if test="percentage != null">percentage = #{percentage},</if>
<if test="state != null">state = #{state},</if>
<if test="samePercent != null">same_percent = #{samePercent},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>

Loading…
Cancel
Save