From 8c7b7078f78a28d15450dfc058a243ec8d66d3bc Mon Sep 17 00:00:00 2001 From: hshansha Date: Fri, 24 Oct 2025 11:10:12 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E7=94=9F=E6=88=90=E8=80=83=E6=A0=B8?= =?UTF-8?q?=E5=BE=97=E5=88=86=E5=A6=82=E6=9E=9C=E5=B7=B2=E7=94=9F=E6=88=90?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/KhKhrwResultController.java | 23 +++++++++++++++++-- .../kaohe/service/IKhKhrwResultService.java | 2 +- .../service/impl/KhKhrwResultServiceImpl.java | 9 ++++++-- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhKhrwResultController.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhKhrwResultController.java index aed4af2..1f3d2d2 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhKhrwResultController.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhKhrwResultController.java @@ -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 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 util = new ExcelUtil(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); + } /** * 获取考核结果详细信息 diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/IKhKhrwResultService.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/IKhKhrwResultService.java index 06d5601..699a766 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/IKhKhrwResultService.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/IKhKhrwResultService.java @@ -62,5 +62,5 @@ public interface IKhKhrwResultService */ public int deleteKhKhrwResultById(Long id); - AjaxResult generateResult(KhPingce pc); + AjaxResult generateResult(KhPingce pc,boolean isUpdate); } diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/impl/KhKhrwResultServiceImpl.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/impl/KhKhrwResultServiceImpl.java index 1ba078a..dae9d48 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/impl/KhKhrwResultServiceImpl.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/impl/KhKhrwResultServiceImpl.java @@ -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,12 @@ public class KhKhrwResultServiceImpl implements IKhKhrwResultService pcResult.setPcName(pc.getPcTitle()); pcResult.setTableHeader(children.toJSONString()); pcResult.setTableData(endData.toJSONString()); - this.insertKhKhrwResult(pcResult); + if(isUpdate){ + pcResult.setId(pc.getPcResultId()); + this.updateKhKhrwResult(pcResult); + }else{ + this.insertKhKhrwResult(pcResult); + } return AjaxResult.success(); } } From c2571248f5483f92269519b888f5d96bc3a70fb0 Mon Sep 17 00:00:00 2001 From: hshansha Date: Fri, 24 Oct 2025 11:12:25 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=A4=84=E7=90=86=E8=AF=84=E5=88=86=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/kaohe/controller/KhVoteController.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteController.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteController.java index 4a585a0..144ee2c 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteController.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteController.java @@ -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() + " 状态为已完成"); } } - }*/ + } /** * 查询投票评测列表 From ded53abc7415c49742661854271555b22e8bf07f Mon Sep 17 00:00:00 2001 From: hshansha Date: Fri, 24 Oct 2025 15:20:25 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E3=80=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=8A=95=E7=A5=A8=E8=A7=84=E5=88=99=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=AF=E5=AF=B9=E4=B8=8D=E5=90=8C=E8=80=83=E6=A0=B8=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E8=AE=BE=E7=BD=AE=E4=B8=8D=E5=90=8C=E5=8D=A0=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kaohe/controller/KhVoteController.java | 80 +++++++++++++------ .../java/com/ruoyi/kaohe/domain/KhVote.java | 25 ++++++ .../resources/mapper/kaohe/KhVoteMapper.xml | 7 +- 3 files changed, 88 insertions(+), 24 deletions(-) diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteController.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteController.java index 144ee2c..4829eec 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteController.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteController.java @@ -123,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 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().equals("0")){ + //根据评测id查询职工评测关联 职工 + KhPcEmp query = new KhPcEmp(); + query.setPcId(khVote.getPingceId()); + List 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(); } @@ -159,10 +180,23 @@ public class KhVoteController extends BaseController { KhVoteEmp query = new KhVoteEmp(); query.setVoteId(khVote.getId()); List khVoteEmps = voteEmpService.selectKhVoteEmpList(query); - for (KhVoteEmp khVoteEmp : khVoteEmps) { - khVoteEmp.setPercentage(khVote.getPercentage()); - khVoteEmp.setVoteTitle(khVote.getVoteTitle()); - voteEmpService.updateKhVoteEmp(khVoteEmp); + if (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(); diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/domain/KhVote.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/domain/KhVote.java index f9f4a31..be33ef2 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/domain/KhVote.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/domain/KhVote.java @@ -81,7 +81,32 @@ public class KhVote extends BaseEntity * @return */ private List itemIds; + /** + * 被考核对象评分占比是否一致得参数,仅新增时使用 0相同 1不同 + * @return + */ + private String samePercent; + /** + * 被考核对象评分占比不一致时 保存所有考核对象的评分,仅新增时使用 + * @return + */ + private List voteEmps; + public String getSamePercent() { + return samePercent; + } + + public void setSamePercent(String samePercent) { + this.samePercent = samePercent; + } + + public List getVoteEmps() { + return voteEmps; + } + + public void setVoteEmps(List voteEmps) { + this.voteEmps = voteEmps; + } public List getItemIds() { return itemIds; diff --git a/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml b/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml index de2d09d..9ce408e 100644 --- a/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml +++ b/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml @@ -19,6 +19,7 @@ + @@ -27,7 +28,7 @@ - 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 @@ -89,6 +91,7 @@ max_num, percentage, state, + same_percent, create_by, create_time, update_by, @@ -109,6 +112,7 @@ #{maxNum}, #{percentage}, #{state}, + #{samePercent}, #{createBy}, #{createTime}, #{updateBy}, @@ -133,6 +137,7 @@ max_num = #{maxNum}, percentage = #{percentage}, state = #{state}, + same_percent = #{samePercent}, create_by = #{createBy}, create_time = #{createTime}, update_by = #{updateBy}, From 8ca7584f8d964ea153931302d2163d55b32444c0 Mon Sep 17 00:00:00 2001 From: hshansha Date: Fri, 24 Oct 2025 16:06:31 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=B6=E7=BA=A7?= =?UTF-8?q?=E8=81=94=E5=88=A0=E9=99=A4=E5=85=B3=E8=81=94=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kaohe/controller/KhVoteController.java | 4 ++-- .../kaohe/service/impl/KhVoteServiceImpl.java | 18 +++++++++++++++++- .../resources/mapper/kaohe/KhVoteMapper.xml | 1 + 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteController.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteController.java index 4829eec..5d327bf 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteController.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteController.java @@ -123,7 +123,7 @@ public class KhVoteController extends BaseController { @Transactional public AjaxResult add(@RequestBody KhVote khVote) { khVoteService.insertKhVote(khVote); - if(khVote.getSamePercent().equals("0")){ + if(khVote.getSamePercent()==null||khVote.getSamePercent().equals("0")){ //根据评测id查询职工评测关联 职工 KhPcEmp query = new KhPcEmp(); query.setPcId(khVote.getPingceId()); @@ -180,7 +180,7 @@ public class KhVoteController extends BaseController { KhVoteEmp query = new KhVoteEmp(); query.setVoteId(khVote.getId()); List khVoteEmps = voteEmpService.selectKhVoteEmpList(query); - if (khVote.getSamePercent().equals("0")) { + if (khVote.getSamePercent()==null||khVote.getSamePercent().equals("0")) { for (KhVoteEmp khVoteEmp : khVoteEmps) { khVoteEmp.setPercentage(khVote.getPercentage()); khVoteEmp.setVoteTitle(khVote.getVoteTitle()); diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/impl/KhVoteServiceImpl.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/impl/KhVoteServiceImpl.java index 236ae8e..943fdf0 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/impl/KhVoteServiceImpl.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/impl/KhVoteServiceImpl.java @@ -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 khVoteEmps = khVoteEmpMapper.selectKhVoteEmpList(query); + List veIds = khVoteEmps.stream().map(KhVoteEmp::getId).collect(Collectors.toList()); + khVoteEmpMapper.deleteKhVoteEmpByIds(veIds.toArray(new Long[veIds.size()])); + } + return khVoteMapper.deleteKhVoteByIds(ids); } diff --git a/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml b/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml index 9ce408e..351422f 100644 --- a/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml +++ b/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml @@ -49,6 +49,7 @@ and state = #{state} and same_percent = #{samePercent} + ORDER BY id DESC