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/controller/KhVoteEmpController.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteEmpController.java index e44b062..0ba323b 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteEmpController.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/controller/KhVoteEmpController.java @@ -48,6 +48,18 @@ public class KhVoteEmpController extends BaseController return getDataTable(list); } + /** + * 查询投票选项列表 + */ + @PreAuthorize("@ss.hasPermi('kaohe:vote_emp:list')") + @GetMapping("/getVoteEmps") + public TableDataInfo getVoteEmps(KhVoteEmp khVoteEmp) + { + startPage(); + List list = khVoteEmpService.selectVoteEmpsByVoteId(khVoteEmp); + return getDataTable(list); + } + /** * 导出投票选项列表 */ diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/domain/KhVoteEmp.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/domain/KhVoteEmp.java index 011734e..165e6b5 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/domain/KhVoteEmp.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/domain/KhVoteEmp.java @@ -79,9 +79,21 @@ public class KhVoteEmp extends BaseEntity @Excel(name = "最终分数") private BigDecimal endScore; + /** 乐观锁版本号 */ + @Excel(name = "乐观锁版本号") + private Long version; + //仅做参数 传递本次评分分数 private BigDecimal score; + public Long getVersion() { + return version; + } + + public void setVersion(Long version) { + this.version = version; + } + public BigDecimal getScore() { return score; } @@ -262,6 +274,7 @@ public class KhVoteEmp extends BaseEntity .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("remark", getRemark()) + .append("version", getVersion()) .toString(); } } diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/domain/KhVoteRecard.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/domain/KhVoteRecard.java index 89da6e2..92f3637 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/domain/KhVoteRecard.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/domain/KhVoteRecard.java @@ -21,9 +21,13 @@ public class KhVoteRecard extends BaseEntity private Long id; /** 评测id */ - @Excel(name = "评测id") + // @Excel(name = "评测id") private Long pcId; + /** 评测id */ + @Excel(name = "考核任务名称") + private String pcName; + /** 考核项id */ @Excel(name = "考核项id") private Long khitemId; @@ -32,6 +36,11 @@ public class KhVoteRecard extends BaseEntity @Excel(name = "投票活动id") private Long voteId; + /** 评测id */ + @Excel(name = "评分主题") + private String votTitle; + + /** 用户id */ @Excel(name = "用户id") private Long userId; @@ -41,11 +50,11 @@ public class KhVoteRecard extends BaseEntity private String userName; /** 投票人uid */ - @Excel(name = "投票人uid") + // @Excel(name = "投票人uid") private String uid; /** 投票人 */ - @Excel(name = "投票人") + // @Excel(name = "投票人") private String tprName; /** 评分详情 */ @@ -58,9 +67,25 @@ public class KhVoteRecard extends BaseEntity private Date voteTime; /** IP */ - @Excel(name = "IP") + // @Excel(name = "IP") private String ipAddress; + public String getPcName() { + return pcName; + } + + public void setPcName(String pcName) { + this.pcName = pcName; + } + + public String getVoteTitle() { + return votTitle; + } + + public void setVoteTitle(String voteTitle) { + this.votTitle = voteTitle; + } + public void setId(Long id) { this.id = id; diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/mapper/KhVoteEmpMapper.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/mapper/KhVoteEmpMapper.java index 0c3ee42..b1cef70 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/mapper/KhVoteEmpMapper.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/mapper/KhVoteEmpMapper.java @@ -58,4 +58,6 @@ public interface KhVoteEmpMapper * @return 结果 */ public int deleteKhVoteEmpByIds(Long[] ids); + + List selectVoteEmpsByVoteId(KhVoteEmp khVoteEmp); } diff --git a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/IKhVoteEmpService.java b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/IKhVoteEmpService.java index 09ff4e3..0272f72 100644 --- a/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/IKhVoteEmpService.java +++ b/ruoyi-kaohe/src/main/java/com/ruoyi/kaohe/service/IKhVoteEmpService.java @@ -63,4 +63,6 @@ public interface IKhVoteEmpService public int deleteKhVoteEmpById(Long id); AjaxResult voteSubmit(KhVoteRecardParam param); + + List selectVoteEmpsByVoteId(KhVoteEmp khVoteEmp); } 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..dc0193a 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业务层处理 * @@ -57,6 +59,11 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService { return khVoteEmpMapper.selectKhVoteEmpList(khVoteEmp); } + @Override + public List selectVoteEmpsByVoteId(KhVoteEmp khVoteEmp) { + return khVoteEmpMapper.selectVoteEmpsByVoteId(khVoteEmp); + } + /** * 新增投票选项 * @@ -94,6 +101,7 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService { /** * 删除投票选项信息 + * 手动实现乐观锁重试机制 * * @param id 投票选项主键 * @return 结果 @@ -106,82 +114,169 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService { @Override @Transactional public AjaxResult voteSubmit(KhVoteRecardParam param) { - Map xuanxiangDetails = new HashMap<>(); + Map xuanxiangDetails = new LinkedHashMap<>(); + Map pingFenDetails = 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)) {//选项评分 - //存储投票详情到map - if (voteEmp.getOptionA().compareTo(BigDecimal.ZERO) == 1) { - xuanxiangDetails.put(voteEmp.getBkhdxName(), voteEmp.getOptionA()); - } - if (voteEmp.getOptionB().compareTo(BigDecimal.ZERO) == 1) { - xuanxiangDetails.put(voteEmp.getBkhdxName(), voteEmp.getOptionB()); + for (KhVoteEmp voteEmp : voteEmpList) { + // 最大重试次数 + // final int MAX_RETRY_COUNT = 3; + int retryCount = 0; + while (true) { + voteEmp.setUpdateTime(nowDate); + //根据id查询数据得到原值及版本号 + KhVoteEmp oldvoteEmp = khVoteEmpMapper.selectKhVoteEmpById(voteEmp.getId()); + //存储投票详情到map + if (voteEmp.getOptionA().compareTo(BigDecimal.ZERO) == 1) { + // xuanxiangDetails.put(voteEmp.getBkhdxId().toString(), voteEmp.getBkhdxName()+":优秀"); + xuanxiangDetails.put(voteEmp.getBkhdxName(), aName); + } + if (voteEmp.getOptionB().compareTo(BigDecimal.ZERO) == 1) { + //xuanxiangDetails.put(voteEmp.getBkhdxId().toString(), voteEmp.getBkhdxName()+":合格"); + xuanxiangDetails.put(voteEmp.getBkhdxName(), bName); + } + if (voteEmp.getOptionC().compareTo(BigDecimal.ZERO) == 1) { + //xuanxiangDetails.put(voteEmp.getBkhdxId().toString(), voteEmp.getBkhdxName()+":基本合格"); + xuanxiangDetails.put(voteEmp.getBkhdxName(), cName); + } + if (voteEmp.getOptionD().compareTo(BigDecimal.ZERO) == 1) { + //xuanxiangDetails.put(voteEmp.getBkhdxId().toString(), voteEmp.getBkhdxName()+":不合格"); + xuanxiangDetails.put(voteEmp.getBkhdxName(), dName); + } + //修改投票情况 + BigDecimal optionA = voteEmp.getOptionA().add(oldvoteEmp.getOptionA()); + BigDecimal optionB = voteEmp.getOptionB().add(oldvoteEmp.getOptionB()); + BigDecimal optionC = voteEmp.getOptionC().add(oldvoteEmp.getOptionC()); + 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); + voteEmp.setAvgScore(avgScore);//投票后计算平均分 + voteEmp.setOptionA(optionA); + voteEmp.setOptionB(optionB); + voteEmp.setOptionC(optionC); + voteEmp.setOptionD(optionD); + if (oldvoteEmp.getPercentage() != null) { //计算最后得分 + voteEmp.setEndScore(avgScore.multiply(oldvoteEmp.getPercentage())); + } else { + voteEmp.setEndScore(avgScore); + } + voteEmp.setVersion(oldvoteEmp.getVersion()); + int result = khVoteEmpMapper.updateKhVoteEmp(voteEmp); + if (result > 0) { + break; + } else { + // 更新失败,版本冲突,增加重试计数 + retryCount++; + System.out.println("-----------版本冲突," + voteEmp.getId() + "第" + retryCount + "次重试"); + // if (retryCount < MAX_RETRY_COUNT) { + // 等待一段时间后重试,避免立即重试导致的持续冲突 + try { + Thread.sleep(100* retryCount); // 重试间隔递增 + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new RuntimeException("重试过程被中断-------------", e); + } + // } + } } - if (voteEmp.getOptionC().compareTo(BigDecimal.ZERO) == 1) { - xuanxiangDetails.put(voteEmp.getBkhdxName(), voteEmp.getOptionC()); - } - if (voteEmp.getOptionD().compareTo(BigDecimal.ZERO) == 1) { - xuanxiangDetails.put(voteEmp.getBkhdxName(), voteEmp.getOptionD()); + } + } else if (typeid.equals(2L)) {//占比评分 + for (KhVoteEmp voteEmp : voteEmpList) { + int retryCount = 0; + while (true) { + 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.setEndScore(voteEmp.getAvgScore().multiply(oldvoteEmp.getPercentage())); + voteEmp.setVersion(oldvoteEmp.getVersion()); + int result = khVoteEmpMapper.updateKhVoteEmp(voteEmp); + if (result > 0) { + break; + } else { + // 更新失败,版本冲突,增加重试计数 + retryCount++; + System.out.println("-----------版本冲突," + voteEmp.getId() + "第" + retryCount + "次重试"); + // if (retryCount < MAX_RETRY_COUNT) { + // 等待一段时间后重试,避免立即重试导致的持续冲突 + try { + Thread.sleep(100* retryCount); // 重试间隔递增 + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new RuntimeException("重试过程被中断-------------", e); + } + } } - //修改投票情况 - BigDecimal optionA = voteEmp.getOptionA().add(oldvoteEmp.getOptionA()); - BigDecimal optionB = voteEmp.getOptionB().add(oldvoteEmp.getOptionB()); - BigDecimal optionC = voteEmp.getOptionC().add(oldvoteEmp.getOptionC()); - 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); - voteEmp.setAvgScore(avgScore);//投票后计算平均分 - voteEmp.setOptionA(optionA); - voteEmp.setOptionB(optionB); - voteEmp.setOptionC(optionC); - voteEmp.setOptionD(optionD); - if (oldvoteEmp.getPercentage() != null) { //计算最后得分 - voteEmp.setEndScore(avgScore.multiply(oldvoteEmp.getPercentage())); - }else{ - voteEmp.setEndScore(avgScore); + } + } else {//单独评分 不占比 以平均分为最后得分 + for (KhVoteEmp voteEmp : voteEmpList) { + int retryCount = 0; + while (true) { + 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.setEndScore(voteEmp.getAvgScore()); + voteEmp.setVersion(oldvoteEmp.getVersion()); + int result = khVoteEmpMapper.updateKhVoteEmp(voteEmp); + if (result > 0) { + break; + } else { + // 更新失败,版本冲突,增加重试计数 + retryCount++; + System.out.println("-----------版本冲突," + voteEmp.getId() + "第" + retryCount + "次重试"); + // if (retryCount < MAX_RETRY_COUNT) { + // 等待一段时间后重试,避免立即重试导致的持续冲突 + try { + Thread.sleep(100* retryCount); // 重试间隔递增 + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new RuntimeException("重试过程被中断-------------", e); + } + } } - } else if (typeid.equals(2L)) {//占比评分 - 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.setEndScore(voteEmp.getAvgScore().multiply(oldvoteEmp.getPercentage())); - } else {//单独评分 不占比 以平均分为最后得分 - 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.setEndScore(voteEmp.getAvgScore()); } - khVoteEmpMapper.updateKhVoteEmp(voteEmp); } + //存储投票记录 KhVoteRecard recard = new KhVoteRecard(); recard.setVoteId(param.getVoteId()); @@ -192,11 +287,17 @@ 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()); + pingFenDetails.put(voteEmp.getBkhdxName()/*+voteEmp.getBkhdxId()*/, voteEmp.getScore()); + recard.setVoteDetails(JSON.toJSONString(pingFenDetails)); + } + /*List details = voteEmpList.stream() .map(emp -> emp.getBkhdxName() + " : " + emp.getScore()) .collect(Collectors.toList()); - recard.setVoteDetails(JSON.toJSONString(details)); + recard.setVoteDetails(JSON.toJSONString(details));*/ } + recard.setRemark(JSON.toJSONString(voteEmpList)); khVoteRecardMapper.insertKhVoteRecard(recard); return AjaxResult.success(); } diff --git a/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteEmpMapper.xml b/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteEmpMapper.xml index 47becc9..a47139f 100644 --- a/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteEmpMapper.xml +++ b/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteEmpMapper.xml @@ -26,10 +26,11 @@ + - select id, khitem_typeId, vote_id, vote_title, bkhdx_id, bkhdx_name, content, vote_num,option_a, option_b, option_c, option_d, vote_score, avg_score, percentage, end_score, create_by, create_time, update_by, update_time, remark from kh_vote_emp + select id, khitem_typeId, vote_id, vote_title, bkhdx_id, bkhdx_name, content, vote_num,option_a, option_b, option_c, option_d, vote_score, avg_score, percentage, end_score, create_by, create_time, update_by, update_time, remark, version from kh_vote_emp + + @@ -81,6 +90,7 @@ update_by, update_time, remark, + #{khitemTypeid}, @@ -103,6 +113,7 @@ #{updateBy}, #{updateTime}, #{remark}, + @@ -129,8 +140,10 @@ update_by = #{updateBy}, update_time = #{updateTime}, remark = #{remark}, + version = version + 1 - where id = #{id} + + WHERE id = #{id} AND version = #{version} diff --git a/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml b/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml index 0c842ed..df41979 100644 --- a/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml +++ b/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml @@ -56,11 +56,11 @@ - + --> - + select r.id,v.pingce_id,r.vote_id,r.user_name,r.vote_details,r.vote_time,v.pingce_name,v.vote_title + from kh_vote_recard r join kh_vote v on r.vote_id=v.id - and pc_id = #{pcId} - and khitem_id = #{khitemId} - and vote_id = #{voteId} - and user_id = #{userId} - and user_name like concat('%', #{userName}, '%') - and uid = #{uid} - and tpr_name like concat('%', #{tprName}, '%') - and vote_details = #{voteDetails} - and vote_time = #{voteTime} - and ip_address = #{ipAddress} + and v.pingce_id = #{pcId} + and v.pingce_name like concat('%', #{pcName}, '%') + and r.khitem_id = #{khitemId} + and r.vote_id = #{voteId} + and v.vote_title like concat('%', #{voteTitle}, '%') + and r.user_id = #{userId} + and r.user_name like concat('%', #{userName}, '%') + and r.uid = #{uid} + and r.tpr_name like concat('%', #{tprName}, '%') + + and r.vote_time = #{voteTime} + and r.ip_address = #{ipAddress}