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 6484e4f..aa805cc 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 @@ -46,7 +46,7 @@ public class KhVoteController extends BaseController { @Autowired private IKhTemItemService khTemItemService; - @Scheduled(cron = "0 * * * * ?") // 每分钟的第0秒执行一次 监测时间修改评分状态 + /*@Scheduled(cron = "0 * * * * ?") // 每分钟的第0秒执行一次 监测时间修改评分状态 public void performTask() { System.out.println("进入定时任务-------------------------------------------------------------"); //获取所有未完成的评分任务 @@ -97,7 +97,7 @@ public class KhVoteController extends BaseController { } } - } + }*/ /** * 查询投票评测列表 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 0ba323b..7da8e62 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 @@ -1,8 +1,10 @@ package com.ruoyi.kaohe.controller; +import java.math.BigDecimal; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.ruoyi.kaohe.domain.KhVoteItems; import com.ruoyi.kaohe.domain.KhVoteRecardParam; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; @@ -106,15 +108,25 @@ public class KhVoteEmpController extends BaseController } /** - * 进行投票——修改并计算对应的分值 + * 进行投票——修改对应票数及分值 */ @PreAuthorize("@ss.hasPermi('kaohe:vote_emp:edit')") - @Log(title = "投票选项", businessType = BusinessType.UPDATE) + @Log(title = "投票打分", businessType = BusinessType.UPDATE) @PutMapping("/voteSubmit") public AjaxResult voteSubmit(@RequestBody KhVoteRecardParam param) { return khVoteEmpService.voteSubmit(param); } + /** + * 进行投票——修改并计算对应的分值 + */ + @PreAuthorize("@ss.hasPermi('kaohe:vote_emp:edit')") + @Log(title = "投票统计", businessType = BusinessType.UPDATE) + @PutMapping("/StatisticalResults/{id}") + public AjaxResult StatisticalResults(@PathVariable Long id) + { + return khVoteEmpService.StatisticalResults(id); + } /** * 删除投票选项 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 55df608..ce1a7fa 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 @@ -84,6 +84,10 @@ public class KhVote extends BaseEntity /** 状态(0 未开始 1 进行中 2 完成) */ @Excel(name = "状态(0 未开始 1 进行中 2 完成)") private String state; + + /** 统计最终得分(0否1是) */ + private String statistical; + /** * 仅用作评分账号查看首页对应评分 的参数 * @return @@ -100,6 +104,14 @@ public class KhVote extends BaseEntity */ private List voteEmps; + public String getStatistical() { + return statistical; + } + + public void setStatistical(String statistical) { + this.statistical = statistical; + } + //首页查询评分任务的参数 private List voteIds; @@ -308,6 +320,8 @@ public class KhVote extends BaseEntity .append("umax", getUmax()) .append("percentage", getPercentage()) .append("state", getState()) + .append("samePercent", getSamePercent()) + .append("statistical", getStatistical()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) 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 165e6b5..44cfc89 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 @@ -20,7 +20,7 @@ public class KhVoteEmp extends BaseEntity private Long id; /** 考核类型id */ - @Excel(name = "考核类型id") + // @Excel(name = "考核类型id") private Long khitemTypeid; /** 投票id */ @@ -72,7 +72,7 @@ public class KhVoteEmp extends BaseEntity private BigDecimal avgScore; /** 评分占比(0-1之间) */ - @Excel(name = "评分占比(0-1之间)") + @Excel(name = "评分占比") private BigDecimal percentage; /** 最终分数 */ @@ -80,12 +80,18 @@ public class KhVoteEmp extends BaseEntity private BigDecimal endScore; /** 乐观锁版本号 */ - @Excel(name = "乐观锁版本号") + // @Excel(name = "乐观锁版本号") private Long version; //仅做参数 传递本次评分分数 private BigDecimal score; + //用作参数传入计算 + private BigDecimal a; + private BigDecimal b; + private BigDecimal c; + private BigDecimal d; + public Long getVersion() { return version; } @@ -94,6 +100,38 @@ public class KhVoteEmp extends BaseEntity this.version = version; } + public BigDecimal getA() { + return a; + } + + public void setA(BigDecimal a) { + this.a = a; + } + + public BigDecimal getB() { + return b; + } + + public void setB(BigDecimal b) { + this.b = b; + } + + public BigDecimal getC() { + return c; + } + + public void setC(BigDecimal c) { + this.c = c; + } + + public BigDecimal getD() { + return d; + } + + public void setD(BigDecimal d) { + this.d = d; + } + public BigDecimal getScore() { return score; } 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 b1cef70..7b4a2b3 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 @@ -60,4 +60,8 @@ public interface KhVoteEmpMapper public int deleteKhVoteEmpByIds(Long[] ids); List selectVoteEmpsByVoteId(KhVoteEmp khVoteEmp); + + int updateKhVoteEmp1(List voteEmp); + + public int batchUpdateVoteScore(List voteEmpList); } 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 0272f72..99a9382 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 @@ -65,4 +65,6 @@ public interface IKhVoteEmpService AjaxResult voteSubmit(KhVoteRecardParam param); List selectVoteEmpsByVoteId(KhVoteEmp khVoteEmp); + + AjaxResult StatisticalResults(Long id); } 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 0ab5ebc..b38b6df 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 @@ -11,6 +11,7 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.kaohe.domain.*; import com.ruoyi.kaohe.mapper.KhVoteEmpMapper; import com.ruoyi.kaohe.mapper.KhVoteMapper; +import com.ruoyi.kaohe.service.IKhVoteEmpService; import com.ruoyi.kaohe.util.PinYinUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -34,6 +35,8 @@ public class KhKhrwResultServiceImpl implements IKhKhrwResultService private KhVoteMapper khVoteMapper; @Autowired private KhVoteEmpMapper khVoteEmpMapper; + @Autowired + private IKhVoteEmpService khVoteEmpService; /** * 查询考核结果 @@ -137,6 +140,11 @@ public class KhKhrwResultServiceImpl implements IKhKhrwResultService //查询该考核任务下的所有评分任务 List votes = khVoteMapper.selectKhVoteList(khVote); for (KhVote vote : votes) { + //当前投票是否统计计算平均分和最终得分 + if(vote.getStatistical().equals("0")){ + khVoteEmpService.StatisticalResults(vote.getId()); + } + KhVoteEmp khVoteEmp = new KhVoteEmp(); khVoteEmp.setVoteId(vote.getId()); //查询该评分任务对应的所有被考核对象详情 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 39e6156..e6c8e75 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 @@ -8,16 +8,14 @@ import java.util.stream.Collectors; import com.alibaba.fastjson2.JSON; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.kaohe.domain.KhVoteItems; -import com.ruoyi.kaohe.domain.KhVoteRecard; -import com.ruoyi.kaohe.domain.KhVoteRecardParam; +import com.ruoyi.kaohe.domain.*; import com.ruoyi.kaohe.mapper.KhVoteItemsMapper; +import com.ruoyi.kaohe.mapper.KhVoteMapper; import com.ruoyi.kaohe.mapper.KhVoteRecardMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import com.ruoyi.kaohe.mapper.KhVoteEmpMapper; -import com.ruoyi.kaohe.domain.KhVoteEmp; import com.ruoyi.kaohe.service.IKhVoteEmpService; import org.springframework.transaction.annotation.Transactional; @@ -37,6 +35,9 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService { private KhVoteRecardMapper khVoteRecardMapper; @Autowired private KhVoteItemsMapper khVoteItemsMapper; + @Autowired + private KhVoteMapper khVoteMapper; + /** * 查询投票选项 @@ -114,15 +115,69 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService { @Override @Transactional - // @Async("threadPoolTaskExecutor") + public AjaxResult StatisticalResults(Long id) { + //修改未已统计计算 + KhVote vote = new KhVote(); + vote.setId(id); + vote.setStatistical("1"); + khVoteMapper.updateKhVote(vote); + + //统计计算平均值、最终值 + KhVoteEmp vEmp = new KhVoteEmp(); + vEmp.setVoteId(id); + List khVoteEmps = khVoteEmpMapper.selectKhVoteEmpList(vEmp); + for (KhVoteEmp voteEmp : khVoteEmps) { + if (voteEmp.getKhitemTypeid().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"); + + 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(); + } + } + } + //修改投票情况 + BigDecimal avgScore = (voteEmp.getOptionA().multiply(a).add(voteEmp.getOptionB().multiply(b).add(voteEmp.getOptionC().multiply(c).add(voteEmp.getOptionD().multiply(d))) + )).divide(voteEmp.getVoteNum(), 4, RoundingMode.HALF_UP); + + voteEmp.setAvgScore(avgScore);//投票后计算平均分 + if (voteEmp.getPercentage() != null) { + voteEmp.setEndScore(avgScore.multiply(voteEmp.getPercentage()));//计算最后得分 + } else { + voteEmp.setEndScore(avgScore); + } + } else if (voteEmp.getKhitemTypeid().equals(2L)) { + voteEmp.setAvgScore(voteEmp.getVoteScore().divide(voteEmp.getVoteNum(), 4, RoundingMode.HALF_UP));//计算平均分 + voteEmp.setEndScore(voteEmp.getOptionA().multiply(voteEmp.getPercentage())); //计算最终分 + } else if (voteEmp.getKhitemTypeid().equals(3L)) { + voteEmp.setAvgScore(voteEmp.getVoteScore().divide(voteEmp.getVoteNum(), 4, RoundingMode.HALF_UP)); + voteEmp.setEndScore(voteEmp.getAvgScore()); + } + } + return khVoteEmpMapper.updateKhVoteEmp1(khVoteEmps)> 0 ? AjaxResult.success() : AjaxResult.error(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + // @Async("threadPoolTaskExecutor") 异步添加需要同时开启主类的注解,另外会导致事务注解失效 public AjaxResult voteSubmit(KhVoteRecardParam param) { - System.out.println("------------------------开始异步批量处理用户数据,线程:" + Thread.currentThread().getName()); + System.out.println("------------------------开始批量处理评分数据,线程:" + Thread.currentThread().getName()); 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(); + Date nowDate = DateUtils.getNowDate(); //存储投票记录 KhVoteRecard recard = new KhVoteRecard(); @@ -131,15 +186,10 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService { recard.setVoteId(param.getVoteId()); recard.setUserId(param.getUserId()); recard.setUserName(param.getUserName()); - // recard.setUid(param.getUid()); //选项评分 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 = "基本合格"; @@ -147,170 +197,42 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService { 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) { - // 最大重试次数 - // 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++; - if (retryCount > 3) { - throw new RuntimeException("重试次数过多被中断-------------"); - } - System.out.println("-----------版本冲突," + voteEmp.getBkhdxName() + "第" + retryCount + "次重试"); - // 等待一段时间后重试,避免立即重试导致的持续冲突 - try { - Thread.sleep(1000 * retryCount); // 重试间隔递增 - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new RuntimeException("重试过程异常中断-------------", e); - } - // } - } - }*/ - } - } 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++; - if (retryCount > 3) { - throw new RuntimeException("重试次数过多被中断-------------"); - } - System.out.println("-----------版本冲突," + voteEmp.getBkhdxName() + "第" + retryCount + "次重试"); - // 等待一段时间后重试,避免立即重试导致的持续冲突 - try { - Thread.sleep(1000 * retryCount); // 重试间隔递增 - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new RuntimeException("重试过程异常中断-------------", e); - } - } - }*/ - } - } 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++; - if (retryCount > 3) { - throw new RuntimeException("重试次数过多被中断-------------"); - } - System.out.println("-----------版本冲突," + voteEmp.getBkhdxName() + "第" + retryCount + "次重试"); - // 等待一段时间后重试,避免立即重试导致的持续冲突 - try { - Thread.sleep(1000 * retryCount); // 重试间隔递增 - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new RuntimeException("重试过程异常中断-------------", e); - } - } - }*/ + for (int i = 0; i < voteEmpList.size(); i++) { + voteEmpList.get(i).setKhitemTypeid(typeid); + voteEmpList.get(i).setUpdateTime(nowDate); + if (voteEmpList.get(i).getOptionA().compareTo(BigDecimal.ZERO) == 1) { + xuanxiangDetails.put(voteEmpList.get(i).getBkhdxName(), aName); + } else if (voteEmpList.get(i).getOptionB().compareTo(BigDecimal.ZERO) == 1) { + xuanxiangDetails.put(voteEmpList.get(i).getBkhdxName(), bName); + } else if (voteEmpList.get(i).getOptionC().compareTo(BigDecimal.ZERO) == 1) { + xuanxiangDetails.put(voteEmpList.get(i).getBkhdxName(), cName); + } else if (voteEmpList.get(i).getOptionD().compareTo(BigDecimal.ZERO) == 1) { + xuanxiangDetails.put(voteEmpList.get(i).getBkhdxName(), dName); + } } - } - - //存储投票记录 - recard.setVoteTime(nowDate); - if (typeid.equals(1L)) {//选项评分 + //存储投票记录 recard.setVoteDetails(JSON.toJSONString(xuanxiangDetails)); - } else { - 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)); + } else {//占比评分 或 单独评分 + for (int i = 0; i < voteEmpList.size(); i++) { + voteEmpList.get(i).setKhitemTypeid(typeid); + voteEmpList.get(i).setUpdateTime(nowDate); + pingFenDetails.put(voteEmpList.get(i).getBkhdxName(), voteEmpList.get(i).getScore()); } - /*List details = voteEmpList.stream() - .map(emp -> emp.getBkhdxName() + " : " + emp.getScore()) - .collect(Collectors.toList()); - recard.setVoteDetails(JSON.toJSONString(details));*/ + //存储投票记录 + recard.setVoteDetails(JSON.toJSONString(pingFenDetails)); } + //批量修改评分数据 + khVoteEmpMapper.batchUpdateVoteScore(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 5ff5838..4de63d1 100644 --- a/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteEmpMapper.xml +++ b/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteEmpMapper.xml @@ -5,52 +5,74 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - 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 + 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 @@ -58,7 +80,7 @@ @@ -146,8 +168,48 @@ WHERE id = #{id} + + + + UPDATE kh_vote_emp + + avg_score = #{item.avgScore}, + end_score = #{item.endScore}, + + WHERE + id = #{item.id} + + + + + + UPDATE kh_vote_emp + + vote_num = vote_num + 1, + + + option_a = option_a + #{item.optionA}, + option_b = option_b + #{item.optionB}, + option_c = option_c + #{item.optionC}, + option_d = option_d + #{item.optionD}, + + + vote_score = vote_score + #{item.score}, + + + update_time = #{item.updateTime}, + version = version + 1 + + WHERE + id = #{item.id} + + + + - delete from kh_vote_emp where id = #{id} + delete + from kh_vote_emp + where id = #{id} diff --git a/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml b/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml index df41979..4c1b60e 100644 --- a/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml +++ b/ruoyi-kaohe/src/main/resources/mapper/kaohe/KhVoteMapper.xml @@ -22,6 +22,7 @@ + @@ -30,7 +31,7 @@ - select id, pingce_id, pingce_name,bkhdx_type, khitem_id, khitem_name, khitem_typeId, vote_items, vote_title, v_description, s_time, e_time, max_num, umax, percentage, `state`,same_percent, create_by, create_time, update_by, update_time, remark from kh_vote + select id, pingce_id, pingce_name,bkhdx_type, khitem_id, khitem_name, khitem_typeId, vote_items, vote_title, v_description, s_time, e_time, max_num, umax, percentage, `state`,same_percent,statistical, create_by, create_time, update_by, update_time, remark from kh_vote