新增个测发布;优化测评端量表获取

This commit is contained in:
cjw 2024-04-30 10:54:10 +08:00
parent 022deaf4a3
commit 6a39aefb66
15 changed files with 157 additions and 112 deletions

View File

@ -11,6 +11,7 @@ import org.dromara.common.web.core.BaseController;
import org.dromara.scale.domain.bo.SubmitAnswerBo; import org.dromara.scale.domain.bo.SubmitAnswerBo;
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.domain.vo.SysScaleVo;
import org.dromara.scale.service.IWebService; 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.*;
@ -37,7 +38,7 @@ public class WebController extends BaseController {
* 查询发布量表 * 查询发布量表
*/ */
@GetMapping("/publish") @GetMapping("/publish")
public R<SysScalePublishVo> queryPublish() { public R<List<SysScaleVo>> queryPublish() {
return R.ok(webService.queryPublishScale()); return R.ok(webService.queryPublishScale());
} }

View File

@ -53,6 +53,16 @@ public class SysScalePublish {
@AutoMapping(target = "deptNames", expression = "java(cn.hutool.core.util.StrUtil.split(source.getDeptNames(), \",\"))") @AutoMapping(target = "deptNames", expression = "java(cn.hutool.core.util.StrUtil.split(source.getDeptNames(), \",\"))")
private String deptNames; private String deptNames;
@AutoMapping(target = "userIds", expression = "java(cn.hutool.core.util.StrUtil.split(source.getUserIds(), \",\"))")
private String userIds;
@AutoMapping(target = "userNames", expression = "java(cn.hutool.core.util.StrUtil.split(source.getUserNames(), \",\"))")
private String userNames;
/**
* 测评总人数
*/
private Integer totalNum;
/** /**
* 截止日期 * 截止日期
*/ */
@ -68,6 +78,11 @@ public class SysScalePublish {
*/ */
private Integer allowQueryResult; private Integer allowQueryResult;
/**
* 0个测 1普测
*/
private Integer publishType;
/** /**
* 创建者 * 创建者
*/ */

View File

@ -21,56 +21,56 @@ import java.util.List;
*/ */
@Data @Data
@AutoMapper(target = SysScalePublish.class, reverseConvertGenerate = false) @AutoMapper(target = SysScalePublish.class, reverseConvertGenerate = false)
public class SysScalePublishBo { public class SysScalePublishBo {
/** /**
* *
*/ */
@NotNull(message = "不能为空", groups = { EditGroup.class }) @NotNull(message = "不能为空", groups = {EditGroup.class})
private Long batchNo; private Long batchNo;
/** /**
* 量表id以逗号隔开 * 量表id以逗号隔开
*/ */
@NotEmpty(message = "量表id以逗号隔开不能为空", groups = { AddGroup.class, EditGroup.class }) @NotEmpty(message = "量表id以逗号隔开不能为空", groups = {AddGroup.class, EditGroup.class})
@AutoMapping(target = "scaleIds", expression = "java(java.lang.String.join(\",\", source.getScaleIds()))") @AutoMapping(target = "scaleIds", expression = "java(java.lang.String.join(\",\", source.getScaleIds()))")
private List<String> scaleIds; private List<String> scaleIds;
/**
* 量表名称 以逗号隔开
*/
// @NotBlank(message = "量表名称 以逗号隔开不能为空", groups = { AddGroup.class, EditGroup.class })
private String scaleNames; private String scaleNames;
/** /**
* 场次名称 * 场次名称
*/ */
@NotBlank(message = "场次名称不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "场次名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String sessionName; private String sessionName;
@NotEmpty(message = "分组id以逗号隔开不能为空", groups = { AddGroup.class, EditGroup.class })
@AutoMapping(target = "deptIds", expression = "java(java.lang.String.join(\",\", source.getDeptIds()))") @AutoMapping(target = "deptIds", expression = "java(java.lang.String.join(\",\", source.getDeptIds()))")
private List<String> deptIds; private List<String> deptIds;
private String deptNames; private String deptNames;
@AutoMapping(target = "userIds", expression = "java(java.lang.String.join(\",\", source.getUserIds()))")
private List<String> userIds;
private String userNames;
/** /**
* 截止日期 * 截止日期
*/ */
@NotNull(message = "截止日期不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "截止日期不能为空", groups = {AddGroup.class, EditGroup.class})
private Date expireTime; private Date expireTime;
/** /**
* 状态 0:停用1:正常 * 状态 0:停用1:正常
*/ */
//@NotNull(message = "状态 0:停用1:正常不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer status; private Integer status;
/** /**
* 0:不允许1允许 * 0:不允许1允许
*/ */
@NotNull(message = "0:不允许1允许不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "结果展示类型不能为空", groups = {AddGroup.class, EditGroup.class})
private Integer allowQueryResult; private Integer allowQueryResult;
@NotNull(message = "量表类型不能为空", groups = {AddGroup.class, EditGroup.class})
private Integer publishType;
/** /**
* 创建者 * 创建者
*/ */

View File

@ -1,7 +1,5 @@
package org.dromara.scale.domain.vo; package org.dromara.scale.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
@ -17,7 +15,6 @@ import java.util.List;
* @date 2024-04-07 * @date 2024-04-07
*/ */
@Data @Data
@ExcelIgnoreUnannotated
public class SysScalePublishVo implements Serializable { public class SysScalePublishVo implements Serializable {
@Serial @Serial
@ -26,45 +23,47 @@ public class SysScalePublishVo implements Serializable {
/** /**
* *
*/ */
@ExcelProperty(value = "")
private Long batchNo; private Long batchNo;
/** /**
* 量表id以逗号隔开 * 量表id以逗号隔开
*/ */
@ExcelProperty(value = "量表id以逗号隔开")
List<String> scaleIds; List<String> scaleIds;
List<String> scaleNames; List<String> scaleNames;
/** /**
* 场次名称 * 场次名称
*/ */
@ExcelProperty(value = "场次名称")
private String sessionName; private String sessionName;
/** /**
* 分组id以逗号隔开 * 分组id以逗号隔开
*/ */
@ExcelProperty(value = "部门分组id")
private List<String> deptIds; private List<String> deptIds;
private List<String> deptNames; private List<String> deptNames;
private List<String> userIds;
private List<String> userNames;
/**
* 测评总人数
*/
private Integer totalNum;
/** /**
* 截止日期 * 截止日期
*/ */
@ExcelProperty(value = "截止日期")
private Date expireTime; private Date expireTime;
/** /**
* 状态 0:停用1:正常 * 状态 0:停用1:正常
*/ */
@ExcelProperty(value = "状态 0:停用1:正常")
private Integer status; private Integer status;
/** /**
* 0:不允许1允许 * 0:不允许1允许
*/ */
@ExcelProperty(value = "0:不允许1允许")
private Integer allowQueryResult; private Integer allowQueryResult;
private Long createBy; private Long createBy;

View File

@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.scale.domain.SysEvaluationRecord; import org.dromara.scale.domain.SysEvaluationRecord;
import org.dromara.scale.domain.vo.SysScaleVo;
import org.dromara.scale.domain.vo.WordEvaluationAnswerVo; import org.dromara.scale.domain.vo.WordEvaluationAnswerVo;
import org.dromara.scale.domain.vo.SysEvaluationRecordVo; import org.dromara.scale.domain.vo.SysEvaluationRecordVo;
import org.dromara.scale.domain.vo.SysScalePublishVo; import org.dromara.scale.domain.vo.SysScalePublishVo;
@ -22,7 +23,7 @@ import java.util.List;
@Mapper @Mapper
public interface SysEvaluationRecordMapper extends BaseMapperPlus<SysEvaluationRecord, SysEvaluationRecordVo> { public interface SysEvaluationRecordMapper extends BaseMapperPlus<SysEvaluationRecord, SysEvaluationRecordVo> {
List<SysEvaluationRecordVo> selectSclaeRecordListByUserAndBatch(@Param("userId") Long userId, @Param("batchNo") Long batchNo); List<SysScaleVo> selectPublishScaleListByUserAndBatch(@Param("userId") Long userId, @Param("batchNos") String batchNos);
SysScalePublishVo selectPublishByUseRecord(Long recordId); SysScalePublishVo selectPublishByUseRecord(Long recordId);

View File

@ -23,10 +23,12 @@ public interface SysScalePublishMapper extends BaseMapperPlus<SysScalePublish, S
List<String> selectDeptIdsInUse(); List<String> selectDeptIdsInUse();
SysScalePublish selectUsePublishByDeptId(Long deptId);
List<EvaluationVo> selectUndoneEvaluationVoList(@Param("batchNo") Long batchNo); List<EvaluationVo> selectUndoneEvaluationVoList(@Param("batchNo") Long batchNo);
SysScalePublish selectPublishById(@Param("batchNo") Long batchNo); SysScalePublish selectPublishById(@Param("batchNo") Long batchNo);
String selectUseBatchNoByDeptId(Long deptId);
String selectUseBatchNoByUserId(Long userId);
} }

View File

@ -3,7 +3,6 @@ package org.dromara.scale.service;
import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.XWPFTemplate;
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.SysScalePublish;
import org.dromara.scale.domain.bo.BaseQueryBo; import org.dromara.scale.domain.bo.BaseQueryBo;
import org.dromara.scale.domain.bo.SysEvaluationRecordBo; import org.dromara.scale.domain.bo.SysEvaluationRecordBo;
import org.dromara.scale.domain.vo.SysEvaluationRecordVo; import org.dromara.scale.domain.vo.SysEvaluationRecordVo;
@ -35,8 +34,6 @@ public interface ISysEvaluationRecordService {
List<SysEvaluationRecordVo> queryList(SysEvaluationRecordBo bo); List<SysEvaluationRecordVo> queryList(SysEvaluationRecordBo bo);
void insertBathByPublish(SysScalePublish add);
XWPFTemplate getWordTemplate(BaseQueryBo bo) throws IOException; XWPFTemplate getWordTemplate(BaseQueryBo bo) throws IOException;

View File

@ -2,14 +2,14 @@ package org.dromara.scale.service;
import org.dromara.scale.domain.bo.SubmitAnswerBo; import org.dromara.scale.domain.bo.SubmitAnswerBo;
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.SysScaleVo;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
public interface IWebService { public interface IWebService {
SysScalePublishVo queryPublishScale(); List<SysScaleVo> queryPublishScale();
List<QuestionAnswerVo> queryQuestionAnswerListByScaleId(Long scaleId); List<QuestionAnswerVo> queryQuestionAnswerListByScaleId(Long scaleId);

View File

@ -11,13 +11,10 @@ import com.deepoove.poi.data.Tables;
import com.deepoove.poi.data.style.BorderStyle; import com.deepoove.poi.data.style.BorderStyle;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.poi.xwpf.usermodel.XWPFTable; import org.apache.poi.xwpf.usermodel.XWPFTable;
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.constant.StatusEnum;
import org.dromara.scale.domain.EvaluationEecordWordData; import org.dromara.scale.domain.EvaluationEecordWordData;
import org.dromara.scale.domain.SysEvaluationRecord; import org.dromara.scale.domain.SysEvaluationRecord;
import org.dromara.scale.domain.SysScalePublish;
import org.dromara.scale.domain.bo.BaseQueryBo; import org.dromara.scale.domain.bo.BaseQueryBo;
import org.dromara.scale.domain.bo.SysEvaluationRecordBo; import org.dromara.scale.domain.bo.SysEvaluationRecordBo;
import org.dromara.scale.domain.vo.SysEvaluationRecordVo; import org.dromara.scale.domain.vo.SysEvaluationRecordVo;
@ -28,16 +25,13 @@ import org.dromara.scale.mapper.SysEvaluationRecordMapper;
import org.dromara.scale.mapper.SysInterveneRecordMapper; import org.dromara.scale.mapper.SysInterveneRecordMapper;
import org.dromara.scale.mapper.SysScaleMapper; import org.dromara.scale.mapper.SysScaleMapper;
import org.dromara.scale.service.ISysEvaluationRecordService; import org.dromara.scale.service.ISysEvaluationRecordService;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.mapper.SysUserMapper; import org.dromara.system.mapper.SysUserMapper;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.IOException; import java.io.IOException;
import java.rmi.ServerException; import java.rmi.ServerException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -97,30 +91,6 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi
return lqw; return lqw;
} }
@Async
@Override
public void insertBathByPublish(SysScalePublish add) {
String deptIds = add.getDeptIds();
Long batchNo = add.getBatchNo();
String scaleIds = add.getScaleIds();
List<String> scaleList = StringUtils.splitList(scaleIds);
List<SysUser> sysUsers = userMapper.selectStudentListByDeptIds(deptIds);
List<SysEvaluationRecord> recordList = new ArrayList<>();
for (String scaleId : scaleList) {
for (SysUser user : sysUsers) {
SysEvaluationRecord record = new SysEvaluationRecord();
record.setUserId(user.getUserId());
record.setDeptId(user.getDeptId());
record.setBatchNo(batchNo);
record.setScaleId(Long.parseLong(scaleId));
record.setStatus(StatusEnum.DISABLED.getValue());
recordList.add(record);
}
}
baseMapper.insertBatch(recordList, 100);
}
@Override @Override
public XWPFTemplate getWordTemplate(BaseQueryBo bo) throws IOException { public XWPFTemplate getWordTemplate(BaseQueryBo bo) throws IOException {
Long userId = bo.getUserId(); Long userId = bo.getUserId();

View File

@ -1,6 +1,5 @@
package org.dromara.scale.service.impl; package org.dromara.scale.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
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;
@ -16,20 +15,24 @@ 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.common.redis.utils.QueueUtils; import org.dromara.common.redis.utils.QueueUtils;
import org.dromara.scale.constant.StatusEnum; import org.dromara.scale.constant.StatusEnum;
import org.dromara.scale.domain.SysEvaluationRecord;
import org.dromara.scale.domain.SysScalePublish; import org.dromara.scale.domain.SysScalePublish;
import org.dromara.scale.domain.bo.BaseQueryBo; import org.dromara.scale.domain.bo.BaseQueryBo;
import org.dromara.scale.domain.bo.SysScalePublishBo; import org.dromara.scale.domain.bo.SysScalePublishBo;
import org.dromara.scale.domain.vo.EvaluationVo; import org.dromara.scale.domain.vo.EvaluationVo;
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.ISysEvaluationRecordService;
import org.dromara.scale.service.ISysScalePublishService; import org.dromara.scale.service.ISysScalePublishService;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.mapper.SysDeptMapper; import org.dromara.system.mapper.SysDeptMapper;
import org.dromara.system.mapper.SysUserMapper;
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;
@ -52,10 +55,12 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
private final SysScaleMapper scaleMapper; private final SysScaleMapper scaleMapper;
private final ISysEvaluationRecordService evaluationRecordService; private final SysEvaluationRecordMapper recordMapper;
private final SysDeptMapper deptMapper; private final SysDeptMapper deptMapper;
private final SysUserMapper userMapper;
/** /**
* 查询量发布 * 查询量发布
*/ */
@ -101,35 +106,74 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
public Boolean insertByBo(SysScalePublishBo bo) { public Boolean insertByBo(SysScalePublishBo bo) {
LoginUser loginUser = getLoginUser(); LoginUser loginUser = getLoginUser();
SysScalePublish add = MapstructUtils.convert(bo, SysScalePublish.class); SysScalePublish add = MapstructUtils.convert(bo, SysScalePublish.class);
add.setStatus(StatusEnum.IN_USE.getValue());
add.setCreateBy(loginUser.getUserId()); add.setCreateBy(loginUser.getUserId());
add.setCreateTime(new Date()); add.setCreateTime(new Date());
validEntityBeforeSave(add); validEntityBeforeSave(add);
Integer publishType = add.getPublishType();
Long batchNo = add.getBatchNo();
String scaleIds = add.getScaleIds();
String deptIds = add.getDeptIds();
String userIds = add.getUserIds();
//将时间校验移出来方便后面使用 //将时间校验移出来方便后面使用
Date expireTime = add.getExpireTime(); Date expireTime = add.getExpireTime();
long l = DateUtils.differentMillisecond(new Date(), expireTime); long l = DateUtils.differentMillisecond(new Date(), expireTime);
if (l <= 1000 * 3600 * 12) { if (l <= 1000 * 3600 * 12) {
throw new ServiceException("截止日期必须在六小时后"); throw new ServiceException("截止日期必须在六小时后");
} }
if (CollUtil.isNotEmpty(bo.getScaleIds())) {
List<SysScaleVo> list = scaleMapper.findSysScaleByIds(StrUtil.join(StrUtil.COMMA, bo.getScaleIds())); List<SysScaleVo> list = scaleMapper.findSysScaleByIds(scaleIds);
add.setScaleNames(list.stream().map(SysScaleVo::getScaleName).collect(Collectors.joining(StrUtil.COMMA))); add.setScaleNames(list.stream().map(SysScaleVo::getScaleName).collect(Collectors.joining(StrUtil.COMMA)));
for (String scaleId : bo.getScaleIds()) { for (String scaleId : bo.getScaleIds()) {
scaleMapper.updatePublishNums(Long.parseLong(scaleId)); scaleMapper.updatePublishNums(Long.parseLong(scaleId));
}
} }
List<SysDeptVo> deptList = deptMapper.findDeptByIds(StrUtil.join(StrUtil.COMMA, bo.getDeptIds())); //处理用户
add.setDeptNames(deptList.stream().map(SysDeptVo::getDeptName).collect(Collectors.joining(StrUtil.COMMA))); List<SysUser> userList;
if (publishType == 1) {
if (StringUtils.isEmpty(deptIds)) {
throw new ServiceException("分组id以逗号隔开不能为空");
}
//冗余名称
List<SysDeptVo> deptList = deptMapper.findDeptByIds(deptIds);
add.setDeptNames(deptList.stream().map(SysDeptVo::getDeptName).collect(Collectors.joining(StrUtil.COMMA)));
userList = userMapper.selectStudentListByDeptIds(deptIds);
} else {
if (StringUtils.isEmpty(userIds)) {
throw new ServiceException("用户id以逗号隔开不能为空");
}
userList = userMapper.findUserByIds(userIds);
//冗余名称
add.setUserNames(userList.stream().map(SysUser::getNickName).collect(Collectors.joining(StrUtil.COMMA)));
}
add.setTotalNum(userList.size());
//预处理量测记录方便后续统计与查询
List<String> scaleList = bo.getScaleIds();
insertRecordBatch(batchNo, scaleList, userList);
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
bo.setBatchNo(add.getBatchNo()); bo.setBatchNo(add.getBatchNo());
} }
//加入延迟队列 //加入延迟队列
QueueUtils.addDelayedQueueObject("scalePublish-delay-queue", add.getBatchNo(), l, TimeUnit.MILLISECONDS); QueueUtils.addDelayedQueueObject("scalePublish-delay-queue", add.getBatchNo(), l, TimeUnit.MILLISECONDS);
//预处理量测记录方便后续统计与查询
evaluationRecordService.insertBathByPublish(add);
return flag; return flag;
} }
private void insertRecordBatch(Long batchNo, List<String> scaleList, List<SysUser> userList) {
List<SysEvaluationRecord> recordList = new ArrayList<>(scaleList.size() * userList.size());
for (String scaleId : scaleList) {
for (SysUser user : userList) {
SysEvaluationRecord record = new SysEvaluationRecord();
record.setUserId(user.getUserId());
record.setDeptId(user.getDeptId());
record.setBatchNo(batchNo);
record.setScaleId(Long.parseLong(scaleId));
record.setStatus(StatusEnum.DISABLED.getValue());
recordList.add(record);
}
}
recordMapper.insertBatch(recordList, 100);
}
/** /**
* 修改量发布 * 修改量发布
*/ */

View File

@ -2,11 +2,13 @@ package org.dromara.scale.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
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.enums.UserType; import org.dromara.common.core.enums.UserType;
import org.dromara.common.core.exception.ServiceException; 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.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;
@ -20,7 +22,6 @@ import org.dromara.scale.service.ISysScaleAnswerService;
import org.dromara.scale.service.ISysScaleFactorService; import org.dromara.scale.service.ISysScaleFactorService;
import org.dromara.scale.service.ISysWarnRecordService; import org.dromara.scale.service.ISysWarnRecordService;
import org.dromara.scale.service.IWebService; import org.dromara.scale.service.IWebService;
import org.dromara.system.domain.SysOss;
import org.dromara.system.mapper.SysOssMapper; import org.dromara.system.mapper.SysOssMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -69,7 +70,7 @@ public class WebServiceImpl implements IWebService {
@Override @Override
public SysScalePublishVo queryPublishScale() { public List<SysScaleVo> queryPublishScale() {
LoginUser loginUser = getLoginUser(); LoginUser loginUser = getLoginUser();
Long userId = loginUser.getUserId(); Long userId = loginUser.getUserId();
Long deptId = loginUser.getDeptId(); Long deptId = loginUser.getDeptId();
@ -77,27 +78,21 @@ public class WebServiceImpl implements IWebService {
if (!UserType.STUDENT.getName().equals(userType)) { if (!UserType.STUDENT.getName().equals(userType)) {
throw new ServiceException("只有学生账户才能测评"); throw new ServiceException("只有学生账户才能测评");
} }
SysScalePublish sysScalePublish = publishMapper.selectUsePublishByDeptId(deptId); String deptBatchNo = publishMapper.selectUseBatchNoByDeptId(deptId);
String userBatchNo = publishMapper.selectUseBatchNoByUserId(userId);
Long batchNo = sysScalePublish.getBatchNo(); List<String> batchList = new ArrayList<>();
String scaleIds = sysScalePublish.getScaleIds(); List<SysScaleVo> scaleVos = new ArrayList<>();
//todo if (StringUtils.isNotEmpty(deptBatchNo)) {
List<SysScaleVo> publishScaleVos = scaleMapper.findSysScaleByIds(scaleIds); batchList.add(deptBatchNo);
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.setRecordId(recordVo.getRecordId());
publishScaleVo.setUsed(recordVo.getStatus() == 1);
}
}
} }
SysScalePublishVo sysScalePublishVo = MapstructUtils.convert(sysScalePublish, SysScalePublishVo.class); if (StringUtils.isNotEmpty(userBatchNo)) {
sysScalePublishVo.setScaleList(publishScaleVos); batchList.add(userBatchNo);
return sysScalePublishVo; }
if (batchList.size() == 0) {
return scaleVos;
}
scaleVos = recordMapper.selectPublishScaleListByUserAndBatch(userId, StrUtil.join(StrUtil.COMMA, batchList));
return scaleVos;
} }
@Override @Override

View File

@ -3,11 +3,19 @@
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.SysEvaluationRecordMapper"> <mapper namespace="org.dromara.scale.mapper.SysEvaluationRecordMapper">
<select id="selectSclaeRecordListByUserAndBatch" resultType="org.dromara.scale.domain.vo.SysEvaluationRecordVo"> <select id="selectPublishScaleListByUserAndBatch" resultType="org.dromara.scale.domain.vo.SysScaleVo">
select * select s.scale_id,
from sys_evaluation_record s.scale_name,
where user_id = #{userId} s.scale_title,
and batch_no = #{batchNo} s.cover,
s.questions_num,
o.url as `coverUrl`,
if(er.status = 1, true, false) as `use`
from sys_evaluation_record er
left join sys_scale s on s.scale_id = er.scale_id
left join sys_oss o on o.oss_id = s.cover
where er.user_id = #{userId}
and find_in_set(er.batch_no,#{batchNos})
</select> </select>
<select id="selectPublishByUseRecord" resultType="org.dromara.scale.domain.vo.SysScalePublishVo"> <select id="selectPublishByUseRecord" resultType="org.dromara.scale.domain.vo.SysScalePublishVo">

View File

@ -30,13 +30,6 @@
where status = 1 where status = 1
</select> </select>
<select id="selectUsePublishByDeptId" resultType="org.dromara.scale.domain.SysScalePublish">
select *
from sys_scale_publish
where status = 1
and find_in_set(#{deptId}, dept_ids)
</select>
<select id="selectUndoneEvaluationVoList" resultType="org.dromara.scale.domain.vo.EvaluationVo"> <select id="selectUndoneEvaluationVoList" resultType="org.dromara.scale.domain.vo.EvaluationVo">
select d.dept_id, select d.dept_id,
d.dept_name, d.dept_name,
@ -62,4 +55,18 @@
left join sys_user u on u.user_id = sp.create_by left join sys_user u on u.user_id = sp.create_by
where sp.batch_no= #{batchNo} where sp.batch_no= #{batchNo}
</select> </select>
<select id="selectUseBatchNoByDeptId" resultType="java.lang.String">
select batch_no
from sys_scale_publish
where status = 1
and find_in_set(#{deptId}, dept_ids)
</select>
<select id="selectUseBatchNoByUserId" resultType="java.lang.String">
select batch_no
from sys_scale_publish
where status = 1
and find_in_set(#{userId}, user_ids)
</select>
</mapper> </mapper>

View File

@ -121,5 +121,6 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
int updateInterveneById(@Param(Constants.ENTITY) SysUser user); int updateInterveneById(@Param(Constants.ENTITY) SysUser user);
List<SysUser> findUserByIds(String userIds);
} }

View File

@ -171,9 +171,9 @@
<select id="selectStudentListByDeptId" parameterType="Long" resultMap="SysUserResult"> <select id="selectStudentListByDeptId" parameterType="Long" resultMap="SysUserResult">
<include refid="selectUserVo"/> <include refid="selectUserVo"/>
where u.del_flag = '0' where u.dept_id = #{deptId}
and u.dept_id = #{deptId}
and user_type = 'student' and user_type = 'student'
and u.del_flag = '0'
</select> </select>
<update id="updatePasswordBatchById" parameterType="java.util.List"> <update id="updatePasswordBatchById" parameterType="java.util.List">
@ -188,10 +188,15 @@
from sys_dept d from sys_dept d
left join sys_user u on u.dept_id = d.dept_id left join sys_user u on u.dept_id = d.dept_id
where u.user_type = 'student' where u.user_type = 'student'
and u.del_flag = 0
and find_in_set(d.dept_id, #{deptIds}) and find_in_set(d.dept_id, #{deptIds})
</select> </select>
<update id="updateInterveneById"> <update id="updateInterveneById">
update sys_user set intervene_status = #{et.interveneStatus} where user_id = #{et.userId} update sys_user set intervene_status = #{et.interveneStatus} where user_id = #{et.userId}
</update> </update>
<select id="findUserByIds" resultType="org.dromara.system.domain.SysUser">
select * from sys_user where find_in_set(user_id, #{userIds})
</select>
</mapper> </mapper>