量表发布校验;根据分组查看发布优化;用户提交测评答案校验
This commit is contained in:
parent
0aef5e4362
commit
a154caee2a
|
@ -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));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,11 @@ public class SysEvaluationRecord {
|
||||||
*/
|
*/
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门id
|
||||||
|
*/
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* td_scale_publish表主键
|
* td_scale_publish表主键
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
|
@ -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表主键
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,5 +46,5 @@ public interface ISysScalePublishService {
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
SysScalePublishVo queryPublishScale();
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue