量表发布校验;根据分组查看发布优化;用户提交测评答案校验

This commit is contained in:
cjw 2024-04-15 14:02:20 +08:00
parent 0aef5e4362
commit a154caee2a
10 changed files with 160 additions and 93 deletions

View File

@ -1,6 +1,5 @@
package org.dromara.scale.controller.web; package org.dromara.scale.controller.web;
import cn.hutool.core.util.ArrayUtil;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
@ -9,11 +8,11 @@ import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
import org.dromara.scale.domain.bo.SysEvaluationAnswerBo; import org.dromara.scale.domain.bo.SubmitAnswerBo;
import org.dromara.scale.domain.bo.SysEvaluationRecordBo; import org.dromara.scale.domain.bo.SysEvaluationRecordBo;
import org.dromara.scale.domain.vo.QuestionAnswerVo; import org.dromara.scale.domain.vo.QuestionAnswerVo;
import org.dromara.scale.domain.vo.SysScalePublishVo; import org.dromara.scale.domain.vo.SysScalePublishVo;
import org.dromara.scale.service.*; import org.dromara.scale.service.IWebService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -69,10 +68,7 @@ public class WebController extends BaseController {
@Log(title = "量测记录", businessType = BusinessType.INSERT) @Log(title = "量测记录", businessType = BusinessType.INSERT)
@RepeatSubmit() @RepeatSubmit()
@PostMapping("/record/answer") @PostMapping("/record/answer")
public R<Map<String,Object>> add(@Validated(AddGroup.class) @RequestBody List<SysEvaluationAnswerBo> answerList) { public R<Map<String,Object>> add(@Validated(AddGroup.class) @RequestBody SubmitAnswerBo bo) {
if (ArrayUtil.isEmpty(answerList)) { return R.ok(webService.submitAnswer(bo));
R.fail("请先填写,再提交");
}
return R.ok(webService.submitAnswer(answerList));
} }
} }

View File

@ -38,6 +38,11 @@ public class SysEvaluationRecord {
*/ */
private Long userId; private Long userId;
/**
* 部门id
*/
private Long deptId;
/** /**
* td_scale_publish表主键 * td_scale_publish表主键
*/ */

View File

@ -0,0 +1,21 @@
package org.dromara.scale.domain.bo;
import lombok.Data;
import java.util.List;
/**
* <p>TODO<p>
*
* @author cjw
* @version V1.0.0
* @date 2024/4/15 11:09
*/
@Data
public class SubmitAnswerBo {
private Long scaleId;
private List<SysEvaluationAnswerBo> answerList;
}

View File

@ -43,6 +43,11 @@ public class SysEvaluationRecordVo implements Serializable {
@ExcelProperty(value = "测评人id") @ExcelProperty(value = "测评人id")
private Long userId; private Long userId;
/**
* 部门id
*/
@ExcelProperty(value = "部门id")
private Long deptId;
/** /**
* td_scale_publish表主键 * td_scale_publish表主键
*/ */

View File

@ -7,8 +7,6 @@ import org.dromara.scale.domain.vo.SysScaleVo;
import java.util.List; import java.util.List;
import java.util.List;
/** /**
* 心理测评量Mapper接口 * 心理测评量Mapper接口
* *
@ -20,4 +18,7 @@ public interface SysScaleMapper extends BaseMapperPlus<SysScale, SysScaleVo> {
List<SysScaleVo> findSysScaleByIds(String scaleIds); List<SysScaleVo> findSysScaleByIds(String scaleIds);
void updateEvalNums(Long scaleId);
void updatePublishNums(Long scaleId);
} }

View File

@ -46,5 +46,5 @@ public interface ISysScalePublishService {
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
SysScalePublishVo queryPublishScale();
} }

View File

@ -1,6 +1,6 @@
package org.dromara.scale.service; package org.dromara.scale.service;
import org.dromara.scale.domain.bo.SysEvaluationAnswerBo; import org.dromara.scale.domain.bo.SubmitAnswerBo;
import org.dromara.scale.domain.bo.SysEvaluationRecordBo; import org.dromara.scale.domain.bo.SysEvaluationRecordBo;
import org.dromara.scale.domain.vo.QuestionAnswerVo; import org.dromara.scale.domain.vo.QuestionAnswerVo;
import org.dromara.scale.domain.vo.SysScalePublishVo; import org.dromara.scale.domain.vo.SysScalePublishVo;
@ -16,5 +16,5 @@ public interface IWebService {
Long newRecord(SysEvaluationRecordBo bo); Long newRecord(SysEvaluationRecordBo bo);
Map<String,Object> submitAnswer(List<SysEvaluationAnswerBo> answerList); Map<String,Object> submitAnswer(SubmitAnswerBo bo);
} }

View File

@ -1,31 +1,28 @@
package org.dromara.scale.service.impl; package org.dromara.scale.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.scale.domain.SysScale; import org.dromara.scale.constant.StatusEnum;
import org.dromara.scale.domain.SysScalePublish; import org.dromara.scale.domain.SysScalePublish;
import org.dromara.scale.domain.bo.SysScalePublishBo; import org.dromara.scale.domain.bo.SysScalePublishBo;
import org.dromara.scale.domain.vo.SysEvaluationRecordVo;
import org.dromara.scale.domain.vo.SysScalePublishVo; import org.dromara.scale.domain.vo.SysScalePublishVo;
import org.dromara.scale.domain.vo.SysScaleVo; import org.dromara.scale.domain.vo.SysScaleVo;
import org.dromara.scale.mapper.SysEvaluationRecordMapper;
import org.dromara.scale.mapper.SysScaleMapper; import org.dromara.scale.mapper.SysScaleMapper;
import org.dromara.scale.mapper.SysScalePublishMapper; import org.dromara.scale.mapper.SysScalePublishMapper;
import org.dromara.scale.service.ISysScalePublishService; import org.dromara.scale.service.ISysScalePublishService;
import org.dromara.system.domain.SysOss;
import org.dromara.system.mapper.SysOssMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -47,10 +44,6 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
private final SysScaleMapper sysScaleMapper; private final SysScaleMapper sysScaleMapper;
private final SysEvaluationRecordMapper recordMapper;
private final SysOssMapper sysOssMapper;
/** /**
* 查询量发布 * 查询量发布
*/ */
@ -82,7 +75,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
//Map<String, Object> params = bo.getParams(); //Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<SysScalePublish> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<SysScalePublish> lqw = Wrappers.lambdaQuery();
// lqw.eq(StringUtils.isNotBlank(bo.getScaleIds()), SysScalePublish::getScaleIds, bo.getScaleIds()); // lqw.eq(StringUtils.isNotBlank(bo.getScaleIds()), SysScalePublish::getScaleIds, bo.getScaleIds());
lqw.eq(StringUtils.isNotBlank(bo.getScaleNames()), SysScalePublish::getScaleNames, bo.getScaleNames()); // lqw.eq(StringUtils.isNotBlank(bo.getScaleNames()), SysScalePublish::getScaleNames, bo.getScaleNames());
lqw.like(StringUtils.isNotBlank(bo.getSessionName()), SysScalePublish::getSessionName, bo.getSessionName()); lqw.like(StringUtils.isNotBlank(bo.getSessionName()), SysScalePublish::getSessionName, bo.getSessionName());
lqw.eq(bo.getDeptId() != null, SysScalePublish::getDeptId, bo.getDeptId()); lqw.eq(bo.getDeptId() != null, SysScalePublish::getDeptId, bo.getDeptId());
lqw.eq(bo.getPartNum() != null, SysScalePublish::getPartNum, bo.getPartNum()); lqw.eq(bo.getPartNum() != null, SysScalePublish::getPartNum, bo.getPartNum());
@ -107,15 +100,15 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
List<SysScaleVo> list = sysScaleMapper.findSysScaleByIds(StrUtil.join(StrUtil.COMMA, bo.getScaleIds())); List<SysScaleVo> list = sysScaleMapper.findSysScaleByIds(StrUtil.join(StrUtil.COMMA, bo.getScaleIds()));
add.setScaleNames(list.stream().map(SysScaleVo::getScaleName).collect(Collectors.joining(StrUtil.COMMA))); add.setScaleNames(list.stream().map(SysScaleVo::getScaleName).collect(Collectors.joining(StrUtil.COMMA)));
List<SysScale> scaleList = new ArrayList<>(bo.getScaleIds().size()); //List<SysScale> scaleList = new ArrayList<>(bo.getScaleIds().size());
for (String scaleId : bo.getScaleIds()) { for (String scaleId : bo.getScaleIds()) {
SysScale sysScale = sysScaleMapper.selectById(scaleId); sysScaleMapper.updatePublishNums(Long.parseLong(scaleId));
sysScale.setPublishNums(sysScale.getPublishNums() + 1); // SysScale sysScale = sysScaleMapper.selectById(scaleId);
scaleList.add(sysScale); // sysScale.setPublishNums(sysScale.getPublishNums() + 1);
// scaleList.add(sysScale);
} }
sysScaleMapper.updateBatchById(scaleList, 100); //sysScaleMapper.updateBatchById(scaleList, 100);
} }
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
bo.setBatchNo(add.getBatchNo()); bo.setBatchNo(add.getBatchNo());
@ -139,6 +132,13 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
*/ */
private void validEntityBeforeSave(SysScalePublish entity) { private void validEntityBeforeSave(SysScalePublish entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
Long deptId = entity.getDeptId();
List<SysScalePublishVo> sysScalePublishVos = baseMapper.selectVoList(new LambdaQueryWrapper<SysScalePublish>()
.eq(SysScalePublish::getDeptId, deptId)
.eq(SysScalePublish::getStatus, StatusEnum.IN_USE.getValue()));
if(!ArrayUtil.isEmpty(sysScalePublishVos)){
throw new ServiceException("此年级下已有发布");
}
} }
/** /**
@ -152,45 +152,4 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;
} }
@Override
public SysScalePublishVo queryPublishScale() {
LoginUser loginUser = getLoginUser();
Long userId = loginUser.getUserId();
Long deptId = loginUser.getDeptId();
SysScalePublishVo sysScalePublishVo = null;
//先查询有用户组的发布
if (deptId != null) {
LambdaQueryWrapper<SysScalePublish> lqw = Wrappers.lambdaQuery();
lqw.eq(SysScalePublish::getDeptId, deptId);
lqw.eq(SysScalePublish::getStatus, 1);
lqw.last("limit 1");
sysScalePublishVo = baseMapper.selectVoOne(lqw);
}
//如果没用户组或者有用户组的发布为空则查针对全部的发布
if (sysScalePublishVo == null) {
LambdaQueryWrapper<SysScalePublish> lqw = Wrappers.lambdaQuery();
lqw.eq(SysScalePublish::getDeptId, null);
lqw.eq(SysScalePublish::getStatus, 1);
sysScalePublishVo = baseMapper.selectVoOne(lqw);
}
if (sysScalePublishVo == null) {
return new SysScalePublishVo();
}
Long batchNo = sysScalePublishVo.getBatchNo();
String scaleIds = sysScalePublishVo.getScaleIds();
List<SysScaleVo> publishScaleVos = sysScaleMapper.findSysScaleByIds(StrUtil.join(StrUtil.COMMA, scaleIds));
List<SysEvaluationRecordVo> recordVos = recordMapper.selectSclaeRecordListByUserAndBatch(userId, batchNo);
for (SysScaleVo publishScaleVo : publishScaleVos) {
SysOss sysOss = sysOssMapper.selectById(publishScaleVo.getCover());
publishScaleVo.setCoverUrl(sysOss.getUrl());
//已做过量表
for (SysEvaluationRecordVo recordVo : recordVos) {
if( publishScaleVo.getScaleId().equals(recordVo.getScaleId())){
publishScaleVo.setUsed(true);
}
}
}
sysScalePublishVo.setScaleList(publishScaleVos);
return sysScalePublishVo;
}
} }

View File

@ -1,26 +1,33 @@
package org.dromara.scale.service.impl; package org.dromara.scale.service.impl;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.scale.constant.ScaleDimensionEnum; import org.dromara.scale.constant.ScaleDimensionEnum;
import org.dromara.scale.constant.ScoreRuleTypeEnum; import org.dromara.scale.constant.ScoreRuleTypeEnum;
import org.dromara.scale.constant.SituationEnum; import org.dromara.scale.constant.SituationEnum;
import org.dromara.scale.constant.StatusEnum; import org.dromara.scale.constant.StatusEnum;
import org.dromara.scale.domain.SysEvaluationAnswer; import org.dromara.scale.domain.*;
import org.dromara.scale.domain.SysEvaluationConclusion; import org.dromara.scale.domain.bo.SubmitAnswerBo;
import org.dromara.scale.domain.SysEvaluationRecord;
import org.dromara.scale.domain.SysScale;
import org.dromara.scale.domain.bo.SysEvaluationAnswerBo; import org.dromara.scale.domain.bo.SysEvaluationAnswerBo;
import org.dromara.scale.domain.bo.SysEvaluationRecordBo; import org.dromara.scale.domain.bo.SysEvaluationRecordBo;
import org.dromara.scale.domain.vo.*; import org.dromara.scale.domain.vo.*;
import org.dromara.scale.mapper.SysEvaluationAnswerMapper; import org.dromara.scale.mapper.*;
import org.dromara.scale.mapper.SysEvaluationConclusionMapper; import org.dromara.scale.service.ISysScaleAnswerService;
import org.dromara.scale.mapper.SysEvaluationRecordMapper; import org.dromara.scale.service.ISysScaleFactorService;
import org.dromara.scale.mapper.SysScaleMapper; import org.dromara.scale.service.ISysScaleQuestionService;
import org.dromara.scale.service.*; import org.dromara.scale.service.IWebService;
import org.dromara.system.domain.SysOss;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.mapper.SysDeptMapper;
import org.dromara.system.mapper.SysOssMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.MathContext; import java.math.MathContext;
@ -42,7 +49,6 @@ import static org.dromara.common.satoken.utils.LoginHelper.getLoginUser;
@Service @Service
public class WebServiceImpl implements IWebService { public class WebServiceImpl implements IWebService {
private final ISysScalePublishService scalePublishService;
private final ISysScaleFactorService scaleFactorService; private final ISysScaleFactorService scaleFactorService;
@ -52,17 +58,67 @@ public class WebServiceImpl implements IWebService {
private final SysScaleMapper scaleMapper; private final SysScaleMapper scaleMapper;
private final SysScalePublishMapper publishMapper;
private final SysEvaluationRecordMapper recordMapper; private final SysEvaluationRecordMapper recordMapper;
private final SysEvaluationConclusionMapper evaluationConclusionMapper; private final SysEvaluationConclusionMapper evaluationConclusionMapper;
private final SysEvaluationAnswerMapper evaluationAnswerMapper; private final SysEvaluationAnswerMapper evaluationAnswerMapper;
private final SysOssMapper ossMapper;
private final SysDeptMapper deptMapper;
private final MathContext mathContext = new MathContext(2); private final MathContext mathContext = new MathContext(2);
@Override @Override
public SysScalePublishVo queryPublishScale() { public SysScalePublishVo queryPublishScale() {
return scalePublishService.queryPublishScale(); LoginUser loginUser = getLoginUser();
Long userId = loginUser.getUserId();
Long deptId = loginUser.getDeptId();
SysScalePublishVo sysScalePublishVo = null;
if (deptId != null) {
//先查询直接用户组的发布
LambdaQueryWrapper<SysScalePublish> lqw = Wrappers.lambdaQuery();
lqw.eq(SysScalePublish::getDeptId, deptId);
lqw.eq(SysScalePublish::getStatus, StatusEnum.IN_USE.getValue());
sysScalePublishVo = publishMapper.selectVoOne(lqw);
//没有则查询上级用户组的发布
if (sysScalePublishVo == null) {
SysDeptVo sysDept = deptMapper.selectDeptById(deptId);
LambdaQueryWrapper<SysScalePublish> parentLqw = Wrappers.lambdaQuery();
parentLqw.eq(SysScalePublish::getDeptId, sysDept.getParentId());
parentLqw.eq(SysScalePublish::getStatus, StatusEnum.IN_USE.getValue());
sysScalePublishVo = publishMapper.selectVoOne(lqw);
}
}
//都没有则查针对全部的发布
if (sysScalePublishVo == null) {
LambdaQueryWrapper<SysScalePublish> lqw = Wrappers.lambdaQuery();
lqw.eq(SysScalePublish::getDeptId, null);
lqw.eq(SysScalePublish::getStatus, StatusEnum.IN_USE.getValue());
sysScalePublishVo = publishMapper.selectVoOne(lqw);
}
if (sysScalePublishVo == null) {
return new SysScalePublishVo();
}
Long batchNo = sysScalePublishVo.getBatchNo();
String scaleIds = sysScalePublishVo.getScaleIds();
List<SysScaleVo> publishScaleVos = scaleMapper.findSysScaleByIds(StrUtil.join(StrUtil.COMMA, scaleIds));
List<SysEvaluationRecordVo> recordVos = recordMapper.selectSclaeRecordListByUserAndBatch(userId, batchNo);
for (SysScaleVo publishScaleVo : publishScaleVos) {
SysOss sysOss = ossMapper.selectById(publishScaleVo.getCover());
publishScaleVo.setCoverUrl(sysOss.getUrl());
//已做过量表
for (SysEvaluationRecordVo recordVo : recordVos) {
if (publishScaleVo.getScaleId().equals(recordVo.getScaleId())) {
publishScaleVo.setUsed(true);
}
}
}
sysScalePublishVo.setScaleList(publishScaleVos);
return sysScalePublishVo;
} }
@Override @Override
@ -75,6 +131,7 @@ public class WebServiceImpl implements IWebService {
LoginUser loginUser = getLoginUser(); LoginUser loginUser = getLoginUser();
SysEvaluationRecord add = MapstructUtils.convert(bo, SysEvaluationRecord.class); SysEvaluationRecord add = MapstructUtils.convert(bo, SysEvaluationRecord.class);
add.setUserId(loginUser.getUserId()); add.setUserId(loginUser.getUserId());
add.setDeptId(loginUser.getDeptId());
add.setCreateTime(new Date()); add.setCreateTime(new Date());
//validEntityBeforeSave(add); //validEntityBeforeSave(add);
boolean flag = recordMapper.insert(add) > 0; boolean flag = recordMapper.insert(add) > 0;
@ -84,9 +141,22 @@ public class WebServiceImpl implements IWebService {
return add.getRecordId(); return add.getRecordId();
} }
@Transactional(rollbackFor = Exception.class)
@Override @Override
public Map<String, Object> submitAnswer(List<SysEvaluationAnswerBo> answerList) { public Map<String, Object> submitAnswer(SubmitAnswerBo bo) {
boolean allowQueryResult = true; boolean allowQueryResult = true;
Long scaleId = bo.getScaleId();
Map<Long, List<SysScaleAnswerVo>> answerMapByQuestion = scaleAnswerService.getScaleAnswerMap(scaleId);
int keySize = answerMapByQuestion.keySet().size();
List<SysEvaluationAnswerBo> answerList = bo.getAnswerList();
if (ArrayUtil.isEmpty(answerList)) {
throw new ServiceException("请先填写,再提交");
}
int answerSize = answerList.size();
if (keySize != answerSize) {
throw new ServiceException("有题目未作选择,请检查后提交");
}
Long recordId = answerList.get(0).getRecordId(); Long recordId = answerList.get(0).getRecordId();
SysScalePublishVo scalePublishVo = recordMapper.selectPublishByUseRecord(recordId); SysScalePublishVo scalePublishVo = recordMapper.selectPublishByUseRecord(recordId);
//查询考核结果 //查询考核结果
@ -96,7 +166,7 @@ public class WebServiceImpl implements IWebService {
List<SysEvaluationAnswer> answerAdd = MapstructUtils.convert(answerList, SysEvaluationAnswer.class); List<SysEvaluationAnswer> answerAdd = MapstructUtils.convert(answerList, SysEvaluationAnswer.class);
evaluationAnswerMapper.insertBatch(answerAdd); evaluationAnswerMapper.insertBatch(answerAdd);
List<SysEvaluationConclusionVo> list = calculateEvaluationResult(answerList); List<SysEvaluationConclusionVo> list = calculateEvaluationResult(scaleId, answerList);
List<SysEvaluationConclusion> conclusionAdd = MapstructUtils.convert(list, SysEvaluationConclusion.class); List<SysEvaluationConclusion> conclusionAdd = MapstructUtils.convert(list, SysEvaluationConclusion.class);
evaluationConclusionMapper.insertBatch(conclusionAdd); evaluationConclusionMapper.insertBatch(conclusionAdd);
@ -129,7 +199,7 @@ public class WebServiceImpl implements IWebService {
.map(SysEvaluationConclusionVo::getScore) .map(SysEvaluationConclusionVo::getScore)
// 使用reduce()聚合函数,得到金额总和 // 使用reduce()聚合函数,得到金额总和
.reduce(BigDecimal.ZERO, BigDecimal::add); .reduce(BigDecimal.ZERO, BigDecimal::add);
return new HashMap<String, Object>() {{ return new HashMap<>() {{
//put("evalRecordId",evalRecord.getId()); //put("evalRecordId",evalRecord.getId());
//put("scaleName",scaleInfo.getName()); //put("scaleName",scaleInfo.getName());
put("totalScore", totalScore.doubleValue()); put("totalScore", totalScore.doubleValue());
@ -138,11 +208,8 @@ public class WebServiceImpl implements IWebService {
}}; }};
} }
private List<SysEvaluationConclusionVo> calculateEvaluationResult(List<SysEvaluationAnswerBo> answerList) { private List<SysEvaluationConclusionVo> calculateEvaluationResult(Long scaleId, List<SysEvaluationAnswerBo> answerList) {
Long recordId = answerList.get(0).getRecordId(); Long recordId = answerList.get(0).getRecordId();
SysEvaluationRecordVo recordVo = recordMapper.selectVoById(recordId);
Long scaleId = recordVo.getScaleId();
Map<Long, List<SysScaleQuestionVo>> questionMapByFactor = scaleQuestionService.getScaleQuestionMap(scaleId); Map<Long, List<SysScaleQuestionVo>> questionMapByFactor = scaleQuestionService.getScaleQuestionMap(scaleId);
Map<Long, List<SysScaleAnswerVo>> answerMapByQuestion = scaleAnswerService.getScaleAnswerMap(scaleId); Map<Long, List<SysScaleAnswerVo>> answerMapByQuestion = scaleAnswerService.getScaleAnswerMap(scaleId);
@ -181,10 +248,9 @@ public class WebServiceImpl implements IWebService {
}); });
scaleFactor.setQuestionIds(questionIds); scaleFactor.setQuestionIds(questionIds);
//计算得分率 //计算得分率
if (totalSocre.get().compareTo(BigDecimal.ZERO) > 0) { if (totalSocre.get().compareTo(BigDecimal.ZERO) > 0) {
evalConclusion.setScoreRate(evalConclusion.getScore() evalConclusion.setScoreRate(evalConclusion.getScore()
.multiply(new BigDecimal(100)).divide(totalSocre.get()).setScale(2, RoundingMode.HALF_UP)); .multiply(new BigDecimal(100)).divide(totalSocre.get(), 2, RoundingMode.HALF_UP));
} }
//计算量表加强后得分 //计算量表加强后得分
calcScoreByRuleType(evalConclusion, scaleFactor); calcScoreByRuleType(evalConclusion, scaleFactor);

View File

@ -3,8 +3,22 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.scale.mapper.SysScaleMapper"> <mapper namespace="org.dromara.scale.mapper.SysScaleMapper">
<select id="findSysScaleByIds" resultType="org.dromara.scale.domain.vo.SysScaleVo"> <select id="findSysScaleByIds" resultType="org.dromara.scale.domain.vo.SysScaleVo">
SELECT * FROM sys_scale t WHERE FIND_IN_SET(t.scale_id, #{scaleIds}) SELECT *
FROM sys_scale t
WHERE FIND_IN_SET(t.scale_id, #{scaleIds})
</select> </select>
<update id="updateEvalNums">
update sys_scale
set eval_nums = eval_nums + 1
where scale_id = #{scaleId}
</update>
<update id="updatePublishNums">
update sys_scale
set publish_nums = publish_nums + 1
where scale_id = #{scaleId}
</update>
</mapper> </mapper>