添加批处理,添加统计平均分、最终分接口

main
hshansha 1 month ago
parent 1a747622d4
commit 729e7e1bc3

@ -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 {
}
}
}
}*/
/**
*

@ -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);
}
/**
*

@ -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<KhVoteEmp> voteEmps;
public String getStatistical() {
return statistical;
}
public void setStatistical(String statistical) {
this.statistical = statistical;
}
//首页查询评分任务的参数
private List<Long> 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())

@ -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;
}

@ -60,4 +60,8 @@ public interface KhVoteEmpMapper
public int deleteKhVoteEmpByIds(Long[] ids);
List<KhVoteEmp> selectVoteEmpsByVoteId(KhVoteEmp khVoteEmp);
int updateKhVoteEmp1(List<KhVoteEmp> voteEmp);
public int batchUpdateVoteScore(List<KhVoteEmp> voteEmpList);
}

@ -65,4 +65,6 @@ public interface IKhVoteEmpService
AjaxResult voteSubmit(KhVoteRecardParam param);
List<KhVoteEmp> selectVoteEmpsByVoteId(KhVoteEmp khVoteEmp);
AjaxResult StatisticalResults(Long id);
}

@ -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<KhVote> 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());
//查询该评分任务对应的所有被考核对象详情

@ -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<KhVoteEmp> khVoteEmps = khVoteEmpMapper.selectKhVoteEmpList(vEmp);
for (KhVoteEmp voteEmp : khVoteEmps) {
if (voteEmp.getKhitemTypeid().equals(1L)) { //选项评分
List<KhVoteItems> 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<String, String> xuanxiangDetails = new LinkedHashMap<>();
Map<String, BigDecimal> pingFenDetails = new LinkedHashMap<>();
BigDecimal num = new BigDecimal("1");//投票人数+1
List<KhVoteEmp> 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<KhVoteItems> 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);
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);
}
// }
}
}*/
}
} 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);
}
}
}*/
}
}
//存储投票记录
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<String> 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();
}

@ -5,52 +5,74 @@
<mapper namespace="com.ruoyi.kaohe.mapper.KhVoteEmpMapper">
<resultMap type="KhVoteEmp" id="KhVoteEmpResult">
<result property="id" column="id" />
<result property="khitemTypeid" column="khitem_typeId" />
<result property="voteId" column="vote_id" />
<result property="voteTitle" column="vote_title" />
<result property="bkhdxId" column="bkhdx_id" />
<result property="bkhdxName" column="bkhdx_name" />
<result property="content" column="content" />
<result property="voteNum" column="vote_num" />
<result property="optionA" column="option_a" />
<result property="optionB" column="option_b" />
<result property="optionC" column="option_c" />
<result property="optionD" column="option_d" />
<result property="voteScore" column="vote_score" />
<result property="avgScore" column="avg_score" />
<result property="percentage" column="percentage" />
<result property="endScore" column="end_score" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="version" column="version" />
<result property="id" column="id"/>
<result property="khitemTypeid" column="khitem_typeId"/>
<result property="voteId" column="vote_id"/>
<result property="voteTitle" column="vote_title"/>
<result property="bkhdxId" column="bkhdx_id"/>
<result property="bkhdxName" column="bkhdx_name"/>
<result property="content" column="content"/>
<result property="voteNum" column="vote_num"/>
<result property="optionA" column="option_a"/>
<result property="optionB" column="option_b"/>
<result property="optionC" column="option_c"/>
<result property="optionD" column="option_d"/>
<result property="voteScore" column="vote_score"/>
<result property="avgScore" column="avg_score"/>
<result property="percentage" column="percentage"/>
<result property="endScore" column="end_score"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="remark" column="remark"/>
<result property="version" column="version"/>
</resultMap>
<sql id="selectKhVoteEmpVo">
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
</sql>
<select id="selectKhVoteEmpList" parameterType="KhVoteEmp" resultMap="KhVoteEmpResult">
<include refid="selectKhVoteEmpVo"/>
<where>
<if test="khitemTypeid != null "> and khitem_typeId = #{khitemTypeid}</if>
<if test="voteId != null "> and vote_id = #{voteId}</if>
<if test="voteTitle != null and voteTitle != ''"> and vote_title = #{voteTitle}</if>
<if test="bkhdxId != null "> and bkhdx_id = #{bkhdxId}</if>
<if test="bkhdxName != null and bkhdxName != ''"> and bkhdx_name like concat('%', #{bkhdxName}, '%')</if>
<if test="content != null and content != ''"> and content = #{content}</if>
<if test="voteNum != null "> and vote_num = #{voteNum}</if>
<if test="optionA != null "> and option_a = #{optionA}</if>
<if test="optionB != null "> and option_b = #{optionB}</if>
<if test="optionC != null "> and option_c = #{optionC}</if>
<if test="optionD != null "> and option_d = #{optionD}</if>
<if test="voteScore != null "> and vote_score = #{voteScore}</if>
<if test="avgScore != null "> and avg_score = #{avgScore}</if>
<if test="percentage != null "> and percentage = #{percentage}</if>
<if test="endScore != null "> and end_score = #{endScore}</if>
<if test="khitemTypeid != null ">and khitem_typeId = #{khitemTypeid}</if>
<if test="voteId != null ">and vote_id = #{voteId}</if>
<if test="voteTitle != null and voteTitle != ''">and vote_title = #{voteTitle}</if>
<if test="bkhdxId != null ">and bkhdx_id = #{bkhdxId}</if>
<if test="bkhdxName != null and bkhdxName != ''">and bkhdx_name like concat('%', #{bkhdxName}, '%')</if>
<if test="content != null and content != ''">and content = #{content}</if>
<if test="voteNum != null ">and vote_num = #{voteNum}</if>
<if test="optionA != null ">and option_a = #{optionA}</if>
<if test="optionB != null ">and option_b = #{optionB}</if>
<if test="optionC != null ">and option_c = #{optionC}</if>
<if test="optionD != null ">and option_d = #{optionD}</if>
<if test="voteScore != null ">and vote_score = #{voteScore}</if>
<if test="avgScore != null ">and avg_score = #{avgScore}</if>
<if test="percentage != null ">and percentage = #{percentage}</if>
<if test="endScore != null ">and end_score = #{endScore}</if>
<!--<if test="version != null "> and version = #{version}</if>-->
</where>
</select>
@ -58,7 +80,7 @@
<select id="selectVoteEmpsByVoteId" parameterType="KhVoteEmp" resultMap="KhVoteEmpResult">
select id, khitem_typeId, vote_id, bkhdx_id, bkhdx_name from kh_vote_emp
<where>
<if test="voteId != null "> and vote_id = #{voteId}</if>
<if test="voteId != null ">and vote_id = #{voteId}</if>
</where>
</select>
@ -146,8 +168,48 @@
WHERE id = #{id}
</update>
<!-- 批量——统计数据 -->
<update id="updateKhVoteEmp1" parameterType="java.util.List">
<foreach collection="list" item="item" separator=";">
UPDATE kh_vote_emp
<trim prefix="SET" suffixOverrides=",">
<if test="item.avgScore != null">avg_score = #{item.avgScore},</if>
<if test="item.endScore != null">end_score = #{item.endScore},</if>
</trim>
WHERE
id = #{item.id}
</foreach>
</update>
<update id="batchUpdateVoteScore" parameterType="java.util.List">
<foreach collection="list" item="item" separator=";">
UPDATE kh_vote_emp
<trim prefix="SET" suffixOverrides=",">
vote_num = vote_num + 1,
<choose>
<when test="item.khitemTypeid != null and item.khitemTypeid eq 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},
</when>
<otherwise>
vote_score = vote_score + #{item.score},
</otherwise>
</choose>
update_time = #{item.updateTime},
version = version + 1
</trim>
WHERE
id = #{item.id}
<!--AND version = #{item.version}-->
</foreach>
</update>
<delete id="deleteKhVoteEmpById" parameterType="Long">
delete from kh_vote_emp where id = #{id}
delete
from kh_vote_emp
where id = #{id}
</delete>
<delete id="deleteKhVoteEmpByIds" parameterType="String">

@ -22,6 +22,7 @@
<result property="percentage" column="percentage" />
<result property="state" column="state" />
<result property="samePercent" column="same_percent" />
<result property="statistical" column="statistical" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
@ -30,7 +31,7 @@
</resultMap>
<sql id="selectKhVoteVo">
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
</sql>
<select id="selectKhVoteList" parameterType="KhVote" resultMap="KhVoteResult">
@ -114,6 +115,7 @@
<if test="percentage != null">percentage,</if>
<if test="state != null">state,</if>
<if test="samePercent != null">same_percent,</if>
<if test="statistical != null and statistical != ''">statistical,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
@ -136,6 +138,7 @@
<if test="percentage != null">#{percentage},</if>
<if test="state != null">#{state},</if>
<if test="samePercent != null">#{samePercent},</if>
<if test="statistical != null and statistical != ''">#{statistical},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
@ -162,6 +165,7 @@
<if test="percentage != null">percentage = #{percentage},</if>
<if test="state != null">state = #{state},</if>
<if test="samePercent != null">same_percent = #{samePercent},</if>
<if test="statistical != null and statistical != ''">statistical = #{statistical},</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