From d9e042017a09bc9fbfd7bb2a0b0389d53b4163df Mon Sep 17 00:00:00 2001 From: hshansha Date: Sat, 8 Nov 2025 11:51:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=95=E7=A5=A8=E8=AE=B0=E5=BD=95=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kaohe/controller/KhPingceController.java | 64 +++++------ .../service/impl/KhVoteEmpServiceImpl.java | 103 ++++++++++++------ 2 files changed, 101 insertions(+), 66 deletions(-) diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhPingceController.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhPingceController.java index 6b9f22e..df16a3b 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhPingceController.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhPingceController.java @@ -237,21 +237,21 @@ public class KhPingceController extends BaseController { /** * ids传入为null——————清理数据库时调用, 清除已完成的全部关联数据、进行中的仅清除voteemp的打票成绩 保留考核项及关联的voteemp - * ids有值 按任务id-----修改所有关联的vote的voteemp数据为原始状态 * 清理数据库时:vote_recard表手动直接全部清除 截断表即可 + * ids有值 按任务id-----修改所有关联的vote的voteemp数据为原始状态 */ // @PreAuthorize("@ss.hasPermi('kaohe:pingce:remove')") @Log(title = "考核评测", businessType = BusinessType.DELETE) @DeleteMapping("/clean") @Transactional - public AjaxResult removeTest(@RequestParam Long[] ids) { - if(ids!=null&&ids.length>0){ //按任务id-----修改所有关联的vote的voteemp数据为原始状态 + public AjaxResult removeTest(@RequestParam Long[] ids) { + if (ids != null && ids.length > 0) { //按任务id-----修改所有关联的vote的voteemp数据为原始状态 for (Long jxzId : ids) { KhVote vote = new KhVote(); vote.setPingceId(jxzId); List votes = khVoteService.selectKhVoteList(vote); - List vIds = votes.stream().map(KhVote::getId).collect(Collectors.toList()); - if (vIds != null && vIds.size() > 0) { + if (votes != null && votes.size() > 0) { + List vIds = votes.stream().map(KhVote::getId).collect(Collectors.toList()); //修改voteemp for (Long vId : vIds) { KhVoteEmp vemp = new KhVoteEmp(); @@ -276,7 +276,7 @@ public class KhPingceController extends BaseController { } } } - }else{//null认为清理所有 (已完成删除全部数据,进行中数据清除评分数据) + } else {//null认为清理所有 (已完成删除全部数据,进行中数据清除评分数据) //已完成的数据直接清除任务及所有关联数据————完全删除已完成任务 KhPingce khPingce = new KhPingce(); khPingce.setState("2"); @@ -289,32 +289,34 @@ public class KhPingceController extends BaseController { KhPingce jxz = new KhPingce(); jxz.setState("1"); List jxzPingces = khPingceService.selectKhPingceList(jxz); - List jxzIds = jxzPingces.stream().map(KhPingce::getId).collect(Collectors.toList()); - for (Long jxzId : jxzIds) { - KhVote vote = new KhVote(); - vote.setPingceId(jxzId); - List votes = khVoteService.selectKhVoteList(vote); - List vIds = votes.stream().map(KhVote::getId).collect(Collectors.toList()); - if (vIds != null && vIds.size() > 0) { - //修改voteemp - for (Long vId : vIds) { - KhVoteEmp vemp = new KhVoteEmp(); - vemp.setVoteId(vId); - List vEmps = khVoteEmpService.selectKhVoteEmpList(vemp); - if (vEmps != null && vEmps.size() > 0) { - //修改关联的员工数据到最初创建状态 - for (KhVoteEmp uPEmp : vEmps) { - uPEmp.setVoteNum(BigDecimal.ZERO); - uPEmp.setVoteScore(BigDecimal.ZERO); - uPEmp.setAvgScore(BigDecimal.ZERO); - uPEmp.setEndScore(BigDecimal.ZERO); - if (uPEmp.getKhitemTypeid().equals(1L)) { - uPEmp.setOptionA(BigDecimal.ZERO); - uPEmp.setOptionB(BigDecimal.ZERO); - uPEmp.setOptionC(BigDecimal.ZERO); - uPEmp.setOptionD(BigDecimal.ZERO); + if(jxzPingces!=null&&jxzPingces.size()>0){ + List jxzIds = jxzPingces.stream().map(KhPingce::getId).collect(Collectors.toList()); + for (Long jxzId : jxzIds) { + KhVote vote = new KhVote(); + vote.setPingceId(jxzId); + List votes = khVoteService.selectKhVoteList(vote); + if (votes != null && votes.size() > 0) { + List vIds = votes.stream().map(KhVote::getId).collect(Collectors.toList()); + //修改voteemp + for (Long vId : vIds) { + KhVoteEmp vemp = new KhVoteEmp(); + vemp.setVoteId(vId); + List vEmps = khVoteEmpService.selectKhVoteEmpList(vemp); + if (vEmps != null && vEmps.size() > 0) { + //修改关联的员工数据到最初创建状态 + for (KhVoteEmp uPEmp : vEmps) { + uPEmp.setVoteNum(BigDecimal.ZERO); + uPEmp.setVoteScore(BigDecimal.ZERO); + uPEmp.setAvgScore(BigDecimal.ZERO); + uPEmp.setEndScore(BigDecimal.ZERO); + if (uPEmp.getKhitemTypeid().equals(1L)) { + uPEmp.setOptionA(BigDecimal.ZERO); + uPEmp.setOptionB(BigDecimal.ZERO); + uPEmp.setOptionC(BigDecimal.ZERO); + uPEmp.setOptionD(BigDecimal.ZERO); + } + khVoteEmpService.updateKhVoteEmp(uPEmp); } - khVoteEmpService.updateKhVoteEmp(uPEmp); } } } diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/impl/KhVoteEmpServiceImpl.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/impl/KhVoteEmpServiceImpl.java index b1476bc..d0537d7 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/impl/KhVoteEmpServiceImpl.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/impl/KhVoteEmpServiceImpl.java @@ -20,6 +20,8 @@ import com.ruoyi.kaohe.domain.KhVoteEmp; import com.ruoyi.kaohe.service.IKhVoteEmpService; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; + /** * 投票选项Service业务层处理 * @@ -106,46 +108,59 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService { @Override @Transactional public AjaxResult voteSubmit(KhVoteRecardParam param) { - Map xuanxiangDetails = new HashMap<>(); + Map xuanxiangDetails = new LinkedHashMap<>(); BigDecimal num = new BigDecimal("1");//投票人数+1 List voteEmpList = param.getVoteEmpList(); Date nowDate = DateUtils.getNowDate(); Long typeid = param.getKhitemTypeid(); - List voteItems = khVoteItemsMapper.selectKhVoteItemsList(null);//从数据库获取分值 - BigDecimal a = new BigDecimal("100"); - BigDecimal b = new BigDecimal("80"); - BigDecimal c = new BigDecimal("60"); - BigDecimal d = new BigDecimal("40"); - if(voteItems!=null&&voteItems.size()>0){ - for (KhVoteItems voteItem : voteItems) { - if (voteItem.getId() == 1) { - a = voteItem.getScore(); - } else if (voteItem.getId() == 2) { - b = voteItem.getScore(); - } else if (voteItem.getId() == 3) { - c = voteItem.getScore(); - } else { - d = voteItem.getScore(); + //选项评分 + if (typeid.equals(1L)) { + List voteItems = khVoteItemsMapper.selectKhVoteItemsList(null);//从数据库获取分值 + BigDecimal a = new BigDecimal("100"); + BigDecimal b = new BigDecimal("80"); + BigDecimal c = new BigDecimal("60"); + BigDecimal d = new BigDecimal("40"); + String aName = "优秀"; + String bName = "合格"; + String cName = "基本合格"; + String dName = "不合格"; + if (voteItems != null && voteItems.size() > 0) { + for (KhVoteItems voteItem : voteItems) { + if (voteItem.getId() == 1) { + a = voteItem.getScore(); + aName = voteItem.getVitemName(); + } else if (voteItem.getId() == 2) { + b = voteItem.getScore(); + bName = voteItem.getVitemName(); + } else if (voteItem.getId() == 3) { + c = voteItem.getScore(); + cName = voteItem.getVitemName(); + } else { + d = voteItem.getScore(); + dName = voteItem.getVitemName(); + } } } - } - for (KhVoteEmp voteEmp : voteEmpList) { - voteEmp.setUpdateTime(nowDate); - //根据id查询数据得到之前的值 - KhVoteEmp oldvoteEmp = khVoteEmpMapper.selectKhVoteEmpById(voteEmp.getId()); - if (typeid.equals(1L)) {//选项评分 + for (KhVoteEmp voteEmp : voteEmpList) { + voteEmp.setUpdateTime(nowDate); + //根据id查询数据得到之前的值 + KhVoteEmp oldvoteEmp = khVoteEmpMapper.selectKhVoteEmpById(voteEmp.getId()); //存储投票详情到map if (voteEmp.getOptionA().compareTo(BigDecimal.ZERO) == 1) { - xuanxiangDetails.put(voteEmp.getBkhdxName(), voteEmp.getOptionA()); + // xuanxiangDetails.put(voteEmp.getBkhdxId().toString(), voteEmp.getBkhdxName()+":优秀"); + xuanxiangDetails.put(voteEmp.getBkhdxName(), aName); } if (voteEmp.getOptionB().compareTo(BigDecimal.ZERO) == 1) { - xuanxiangDetails.put(voteEmp.getBkhdxName(), voteEmp.getOptionB()); + //xuanxiangDetails.put(voteEmp.getBkhdxId().toString(), voteEmp.getBkhdxName()+":合格"); + xuanxiangDetails.put(voteEmp.getBkhdxName(), bName); } if (voteEmp.getOptionC().compareTo(BigDecimal.ZERO) == 1) { - xuanxiangDetails.put(voteEmp.getBkhdxName(), voteEmp.getOptionC()); + //xuanxiangDetails.put(voteEmp.getBkhdxId().toString(), voteEmp.getBkhdxName()+":基本合格"); + xuanxiangDetails.put(voteEmp.getBkhdxName(), cName); } if (voteEmp.getOptionD().compareTo(BigDecimal.ZERO) == 1) { - xuanxiangDetails.put(voteEmp.getBkhdxName(), voteEmp.getOptionD()); + //xuanxiangDetails.put(voteEmp.getBkhdxId().toString(), voteEmp.getBkhdxName()+":不合格"); + xuanxiangDetails.put(voteEmp.getBkhdxName(), dName); } //修改投票情况 BigDecimal optionA = voteEmp.getOptionA().add(oldvoteEmp.getOptionA()); @@ -154,7 +169,7 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService { BigDecimal optionD = voteEmp.getOptionD().add(oldvoteEmp.getOptionD()); voteEmp.setVoteNum(oldvoteEmp.getVoteNum().add(num)); BigDecimal avgScore = (optionA.multiply(a).add(optionB.multiply(b).add(optionC.multiply(c).add(optionD.multiply(d))) - )).divide(voteEmp.getVoteNum(),4, RoundingMode.HALF_UP); + )).divide(voteEmp.getVoteNum(), 4, RoundingMode.HALF_UP); voteEmp.setAvgScore(avgScore);//投票后计算平均分 voteEmp.setOptionA(optionA); voteEmp.setOptionB(optionB); @@ -162,26 +177,39 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService { voteEmp.setOptionD(optionD); if (oldvoteEmp.getPercentage() != null) { //计算最后得分 voteEmp.setEndScore(avgScore.multiply(oldvoteEmp.getPercentage())); - }else{ + } else { voteEmp.setEndScore(avgScore); } - } else if (typeid.equals(2L)) {//占比评分 + khVoteEmpMapper.updateKhVoteEmp(voteEmp); + } + } else if (typeid.equals(2L)) {//占比评分 + for (KhVoteEmp voteEmp : voteEmpList) { + voteEmp.setUpdateTime(nowDate); + //根据id查询数据得到之前的值 + KhVoteEmp oldvoteEmp = khVoteEmpMapper.selectKhVoteEmpById(voteEmp.getId()); BigDecimal sumScore = voteEmp.getScore().add(oldvoteEmp.getVoteScore()); voteEmp.setVoteScore(sumScore); //修改投票人数 平均分*占比=最后得分 voteEmp.setVoteNum(oldvoteEmp.getVoteNum().add(num)); - voteEmp.setAvgScore(sumScore.divide(voteEmp.getVoteNum(),4, RoundingMode.HALF_UP)); + voteEmp.setAvgScore(sumScore.divide(voteEmp.getVoteNum(), 4, RoundingMode.HALF_UP)); voteEmp.setEndScore(voteEmp.getAvgScore().multiply(oldvoteEmp.getPercentage())); - } else {//单独评分 不占比 以平均分为最后得分 + khVoteEmpMapper.updateKhVoteEmp(voteEmp); + } + } else {//单独评分 不占比 以平均分为最后得分 + for (KhVoteEmp voteEmp : voteEmpList) { + voteEmp.setUpdateTime(nowDate); + //根据id查询数据得到之前的值 + KhVoteEmp oldvoteEmp = khVoteEmpMapper.selectKhVoteEmpById(voteEmp.getId()); BigDecimal sumScore = voteEmp.getScore().add(oldvoteEmp.getVoteScore()); voteEmp.setVoteNum(oldvoteEmp.getVoteNum() .add(num)); voteEmp.setVoteScore(sumScore); - voteEmp.setAvgScore(sumScore.divide(voteEmp.getVoteNum(),4, RoundingMode.HALF_UP)); + voteEmp.setAvgScore(sumScore.divide(voteEmp.getVoteNum(), 4, RoundingMode.HALF_UP)); voteEmp.setEndScore(voteEmp.getAvgScore()); + khVoteEmpMapper.updateKhVoteEmp(voteEmp); } - khVoteEmpMapper.updateKhVoteEmp(voteEmp); } + //存储投票记录 KhVoteRecard recard = new KhVoteRecard(); recard.setVoteId(param.getVoteId()); @@ -192,10 +220,15 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService { if (typeid.equals(1L)) {//选项评分 recard.setVoteDetails(JSON.toJSONString(xuanxiangDetails)); } else { - List details = voteEmpList.stream() + for (KhVoteEmp voteEmp : voteEmpList) { + //xuanxiangDetails.put(voteEmp.getBkhdxId().toString(), voteEmp.getBkhdxName()+":"+voteEmp.getScore()); + xuanxiangDetails.put(voteEmp.getBkhdxName(), voteEmp.getScore().toString()); + recard.setVoteDetails(JSON.toJSONString(xuanxiangDetails)); + } + /*List details = voteEmpList.stream() .map(emp -> emp.getBkhdxName() + " : " + emp.getScore()) .collect(Collectors.toList()); - recard.setVoteDetails(JSON.toJSONString(details)); + recard.setVoteDetails(JSON.toJSONString(details));*/ } khVoteRecardMapper.insertKhVoteRecard(recard); return AjaxResult.success();