投票记录方式修改

main
hshansha 1 month ago
parent c879dac412
commit d9e042017a

@ -237,21 +237,21 @@ public class KhPingceController extends BaseController {
/**
* idsnull voteemp voteemp
* ids id-----votevoteemp
* vote_recard
* ids id-----votevoteemp
*/
// @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<KhVote> votes = khVoteService.selectKhVoteList(vote);
List<Long> vIds = votes.stream().map(KhVote::getId).collect(Collectors.toList());
if (vIds != null && vIds.size() > 0) {
if (votes != null && votes.size() > 0) {
List<Long> 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<KhPingce> jxzPingces = khPingceService.selectKhPingceList(jxz);
List<Long> jxzIds = jxzPingces.stream().map(KhPingce::getId).collect(Collectors.toList());
for (Long jxzId : jxzIds) {
KhVote vote = new KhVote();
vote.setPingceId(jxzId);
List<KhVote> votes = khVoteService.selectKhVoteList(vote);
List<Long> 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<KhVoteEmp> 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<Long> jxzIds = jxzPingces.stream().map(KhPingce::getId).collect(Collectors.toList());
for (Long jxzId : jxzIds) {
KhVote vote = new KhVote();
vote.setPingceId(jxzId);
List<KhVote> votes = khVoteService.selectKhVoteList(vote);
if (votes != null && votes.size() > 0) {
List<Long> vIds = votes.stream().map(KhVote::getId).collect(Collectors.toList());
//修改voteemp
for (Long vId : vIds) {
KhVoteEmp vemp = new KhVoteEmp();
vemp.setVoteId(vId);
List<KhVoteEmp> 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);
}
}
}

@ -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<String, BigDecimal> xuanxiangDetails = new HashMap<>();
Map<String, String> xuanxiangDetails = new LinkedHashMap<>();
BigDecimal num = new BigDecimal("1");//投票人数+1
List<KhVoteEmp> voteEmpList = param.getVoteEmpList();
Date nowDate = DateUtils.getNowDate();
Long typeid = param.getKhitemTypeid();
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();
//选项评分
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 = "基本合格";
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<String> 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<String> 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();

Loading…
Cancel
Save