From 6a39aefb664d8f7676a449dd09c4e6316b5fab86 Mon Sep 17 00:00:00 2001 From: cjw Date: Tue, 30 Apr 2024 10:54:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=AA=E6=B5=8B=E5=8F=91?= =?UTF-8?q?=E5=B8=83=EF=BC=9B=E4=BC=98=E5=8C=96=E6=B5=8B=E8=AF=84=E7=AB=AF?= =?UTF-8?q?=E9=87=8F=E8=A1=A8=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scale/controller/web/WebController.java | 3 +- .../dromara/scale/domain/SysScalePublish.java | 15 ++++ .../scale/domain/bo/SysScalePublishBo.java | 28 ++++---- .../scale/domain/vo/SysScalePublishVo.java | 19 +++-- .../mapper/SysEvaluationRecordMapper.java | 3 +- .../scale/mapper/SysScalePublishMapper.java | 6 +- .../service/ISysEvaluationRecordService.java | 3 - .../dromara/scale/service/IWebService.java | 4 +- .../impl/SysEvaluationRecordServiceImpl.java | 30 -------- .../impl/SysScalePublishServiceImpl.java | 70 +++++++++++++++---- .../scale/service/impl/WebServiceImpl.java | 39 +++++------ .../scale/SysEvaluationRecordMapper.xml | 18 +++-- .../mapper/scale/SysScalePublishMapper.xml | 21 ++++-- .../dromara/system/mapper/SysUserMapper.java | 1 + .../resources/mapper/system/SysUserMapper.xml | 9 ++- 15 files changed, 157 insertions(+), 112 deletions(-) diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/web/WebController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/web/WebController.java index 4f4cb51..275931f 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/web/WebController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/web/WebController.java @@ -11,6 +11,7 @@ import org.dromara.common.web.core.BaseController; import org.dromara.scale.domain.bo.SubmitAnswerBo; import org.dromara.scale.domain.vo.QuestionAnswerVo; import org.dromara.scale.domain.vo.SysScalePublishVo; +import org.dromara.scale.domain.vo.SysScaleVo; import org.dromara.scale.service.IWebService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -37,7 +38,7 @@ public class WebController extends BaseController { * 查询发布量表 */ @GetMapping("/publish") - public R queryPublish() { + public R> queryPublish() { return R.ok(webService.queryPublishScale()); } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScalePublish.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScalePublish.java index ba96133..db8df3b 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScalePublish.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScalePublish.java @@ -53,6 +53,16 @@ public class SysScalePublish { @AutoMapping(target = "deptNames", expression = "java(cn.hutool.core.util.StrUtil.split(source.getDeptNames(), \",\"))") 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; + /** + * 0个测 1普测 + */ + private Integer publishType; + /** * 创建者 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScalePublishBo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScalePublishBo.java index 0a2a0a7..a2f589c 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScalePublishBo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScalePublishBo.java @@ -21,56 +21,56 @@ import java.util.List; */ @Data @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; /** * 量表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()))") private List scaleIds; - - /** - * 量表名称 以逗号隔开 - */ -// @NotBlank(message = "量表名称 以逗号隔开不能为空", groups = { AddGroup.class, EditGroup.class }) private String scaleNames; /** * 场次名称 */ - @NotBlank(message = "场次名称不能为空", groups = { AddGroup.class, EditGroup.class }) + @NotBlank(message = "场次名称不能为空", groups = {AddGroup.class, EditGroup.class}) private String sessionName; - @NotEmpty(message = "分组id,以逗号隔开不能为空", groups = { AddGroup.class, EditGroup.class }) @AutoMapping(target = "deptIds", expression = "java(java.lang.String.join(\",\", source.getDeptIds()))") private List deptIds; - private String deptNames; + + @AutoMapping(target = "userIds", expression = "java(java.lang.String.join(\",\", source.getUserIds()))") + private List userIds; + private String userNames; + /** * 截止日期 */ - @NotNull(message = "截止日期不能为空", groups = { AddGroup.class, EditGroup.class }) + @NotNull(message = "截止日期不能为空", groups = {AddGroup.class, EditGroup.class}) private Date expireTime; /** * 状态 0:停用;1:正常 */ - //@NotNull(message = "状态 0:停用;1:正常不能为空", groups = { AddGroup.class, EditGroup.class }) private Integer status; /** * 0:不允许,1:允许 */ - @NotNull(message = "0:不允许,1:允许不能为空", groups = { AddGroup.class, EditGroup.class }) + @NotNull(message = "结果展示类型不能为空", groups = {AddGroup.class, EditGroup.class}) private Integer allowQueryResult; + @NotNull(message = "量表类型不能为空", groups = {AddGroup.class, EditGroup.class}) + private Integer publishType; + /** * 创建者 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScalePublishVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScalePublishVo.java index f8eee61..d66e0fa 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScalePublishVo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScalePublishVo.java @@ -1,7 +1,5 @@ package org.dromara.scale.domain.vo; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; import java.io.Serial; @@ -17,7 +15,6 @@ import java.util.List; * @date 2024-04-07 */ @Data -@ExcelIgnoreUnannotated public class SysScalePublishVo implements Serializable { @Serial @@ -26,45 +23,47 @@ public class SysScalePublishVo implements Serializable { /** * */ - @ExcelProperty(value = "") private Long batchNo; /** * 量表id,以逗号隔开 */ - @ExcelProperty(value = "量表id,以逗号隔开") List scaleIds; List scaleNames; /** * 场次名称 */ - @ExcelProperty(value = "场次名称") private String sessionName; /** * 分组id,以逗号隔开 */ - @ExcelProperty(value = "部门分组id") private List deptIds; private List deptNames; + + private List userIds; + private List userNames; + + /** + * 测评总人数 + */ + private Integer totalNum; + /** * 截止日期 */ - @ExcelProperty(value = "截止日期") private Date expireTime; /** * 状态 0:停用;1:正常 */ - @ExcelProperty(value = "状态 0:停用;1:正常") private Integer status; /** * 0:不允许,1:允许 */ - @ExcelProperty(value = "0:不允许,1:允许") private Integer allowQueryResult; private Long createBy; diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysEvaluationRecordMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysEvaluationRecordMapper.java index d920540..e46c865 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysEvaluationRecordMapper.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysEvaluationRecordMapper.java @@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; 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.SysEvaluationRecordVo; import org.dromara.scale.domain.vo.SysScalePublishVo; @@ -22,7 +23,7 @@ import java.util.List; @Mapper public interface SysEvaluationRecordMapper extends BaseMapperPlus { - List selectSclaeRecordListByUserAndBatch(@Param("userId") Long userId, @Param("batchNo") Long batchNo); + List selectPublishScaleListByUserAndBatch(@Param("userId") Long userId, @Param("batchNos") String batchNos); SysScalePublishVo selectPublishByUseRecord(Long recordId); diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScalePublishMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScalePublishMapper.java index e0e9eb7..2dca7b8 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScalePublishMapper.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScalePublishMapper.java @@ -23,10 +23,12 @@ public interface SysScalePublishMapper extends BaseMapperPlus selectDeptIdsInUse(); - SysScalePublish selectUsePublishByDeptId(Long deptId); - List selectUndoneEvaluationVoList(@Param("batchNo") Long batchNo); SysScalePublish selectPublishById(@Param("batchNo") Long batchNo); + String selectUseBatchNoByDeptId(Long deptId); + + String selectUseBatchNoByUserId(Long userId); + } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysEvaluationRecordService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysEvaluationRecordService.java index 7c6090c..e26dfe6 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysEvaluationRecordService.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysEvaluationRecordService.java @@ -3,7 +3,6 @@ package org.dromara.scale.service; import com.deepoove.poi.XWPFTemplate; import org.dromara.common.mybatis.core.page.PageQuery; 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.SysEvaluationRecordBo; import org.dromara.scale.domain.vo.SysEvaluationRecordVo; @@ -35,8 +34,6 @@ public interface ISysEvaluationRecordService { List queryList(SysEvaluationRecordBo bo); - void insertBathByPublish(SysScalePublish add); - XWPFTemplate getWordTemplate(BaseQueryBo bo) throws IOException; diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IWebService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IWebService.java index e1c64f8..a4d55d2 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IWebService.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IWebService.java @@ -2,14 +2,14 @@ package org.dromara.scale.service; import org.dromara.scale.domain.bo.SubmitAnswerBo; 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.Map; public interface IWebService { - SysScalePublishVo queryPublishScale(); + List queryPublishScale(); List queryQuestionAnswerListByScaleId(Long scaleId); diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java index 3ec119f..08cfaaa 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java @@ -11,13 +11,10 @@ import com.deepoove.poi.data.Tables; import com.deepoove.poi.data.style.BorderStyle; import lombok.RequiredArgsConstructor; 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.TableDataInfo; -import org.dromara.scale.constant.StatusEnum; import org.dromara.scale.domain.EvaluationEecordWordData; 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.SysEvaluationRecordBo; 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.SysScaleMapper; import org.dromara.scale.service.ISysEvaluationRecordService; -import org.dromara.system.domain.SysUser; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.mapper.SysUserMapper; import org.springframework.core.io.ClassPathResource; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.io.IOException; import java.rmi.ServerException; -import java.util.ArrayList; import java.util.List; /** @@ -97,30 +91,6 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi return lqw; } - @Async - @Override - public void insertBathByPublish(SysScalePublish add) { - String deptIds = add.getDeptIds(); - Long batchNo = add.getBatchNo(); - String scaleIds = add.getScaleIds(); - List scaleList = StringUtils.splitList(scaleIds); - List sysUsers = userMapper.selectStudentListByDeptIds(deptIds); - - List 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 public XWPFTemplate getWordTemplate(BaseQueryBo bo) throws IOException { Long userId = bo.getUserId(); diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScalePublishServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScalePublishServiceImpl.java index 000d2b1..0fd325d 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScalePublishServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScalePublishServiceImpl.java @@ -1,6 +1,5 @@ package org.dromara.scale.service.impl; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.redis.utils.QueueUtils; import org.dromara.scale.constant.StatusEnum; +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.SysScalePublishBo; import org.dromara.scale.domain.vo.EvaluationVo; import org.dromara.scale.domain.vo.SysScalePublishVo; import org.dromara.scale.domain.vo.SysScaleVo; +import org.dromara.scale.mapper.SysEvaluationRecordMapper; import org.dromara.scale.mapper.SysScaleMapper; import org.dromara.scale.mapper.SysScalePublishMapper; -import org.dromara.scale.service.ISysEvaluationRecordService; import org.dromara.scale.service.ISysScalePublishService; +import org.dromara.system.domain.SysUser; import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.mapper.SysDeptMapper; +import org.dromara.system.mapper.SysUserMapper; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; @@ -52,10 +55,12 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { private final SysScaleMapper scaleMapper; - private final ISysEvaluationRecordService evaluationRecordService; + private final SysEvaluationRecordMapper recordMapper; private final SysDeptMapper deptMapper; + private final SysUserMapper userMapper; + /** * 查询量发布 */ @@ -101,35 +106,74 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { public Boolean insertByBo(SysScalePublishBo bo) { LoginUser loginUser = getLoginUser(); SysScalePublish add = MapstructUtils.convert(bo, SysScalePublish.class); + add.setStatus(StatusEnum.IN_USE.getValue()); add.setCreateBy(loginUser.getUserId()); add.setCreateTime(new Date()); 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(); long l = DateUtils.differentMillisecond(new Date(), expireTime); if (l <= 1000 * 3600 * 12) { throw new ServiceException("截止日期必须在六小时后"); } - if (CollUtil.isNotEmpty(bo.getScaleIds())) { - List list = scaleMapper.findSysScaleByIds(StrUtil.join(StrUtil.COMMA, bo.getScaleIds())); - add.setScaleNames(list.stream().map(SysScaleVo::getScaleName).collect(Collectors.joining(StrUtil.COMMA))); - for (String scaleId : bo.getScaleIds()) { - scaleMapper.updatePublishNums(Long.parseLong(scaleId)); - } + + List list = scaleMapper.findSysScaleByIds(scaleIds); + add.setScaleNames(list.stream().map(SysScaleVo::getScaleName).collect(Collectors.joining(StrUtil.COMMA))); + for (String scaleId : bo.getScaleIds()) { + scaleMapper.updatePublishNums(Long.parseLong(scaleId)); } - List deptList = deptMapper.findDeptByIds(StrUtil.join(StrUtil.COMMA, bo.getDeptIds())); - add.setDeptNames(deptList.stream().map(SysDeptVo::getDeptName).collect(Collectors.joining(StrUtil.COMMA))); + //处理用户 + List userList; + if (publishType == 1) { + if (StringUtils.isEmpty(deptIds)) { + throw new ServiceException("分组id,以逗号隔开不能为空"); + } + //冗余名称 + List 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 scaleList = bo.getScaleIds(); + insertRecordBatch(batchNo, scaleList, userList); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setBatchNo(add.getBatchNo()); } //加入延迟队列 QueueUtils.addDelayedQueueObject("scalePublish-delay-queue", add.getBatchNo(), l, TimeUnit.MILLISECONDS); - //预处理量测记录,方便后续统计与查询 - evaluationRecordService.insertBathByPublish(add); return flag; } + private void insertRecordBatch(Long batchNo, List scaleList, List userList) { + List 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); + } + /** * 修改量发布 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/WebServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/WebServiceImpl.java index 3476592..ac01d52 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/WebServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/WebServiceImpl.java @@ -2,11 +2,13 @@ package org.dromara.scale.service.impl; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.enums.UserType; import org.dromara.common.core.exception.ServiceException; 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.ScoreRuleTypeEnum; 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.ISysWarnRecordService; import org.dromara.scale.service.IWebService; -import org.dromara.system.domain.SysOss; import org.dromara.system.mapper.SysOssMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -69,7 +70,7 @@ public class WebServiceImpl implements IWebService { @Override - public SysScalePublishVo queryPublishScale() { + public List queryPublishScale() { LoginUser loginUser = getLoginUser(); Long userId = loginUser.getUserId(); Long deptId = loginUser.getDeptId(); @@ -77,27 +78,21 @@ public class WebServiceImpl implements IWebService { if (!UserType.STUDENT.getName().equals(userType)) { throw new ServiceException("只有学生账户才能测评"); } - SysScalePublish sysScalePublish = publishMapper.selectUsePublishByDeptId(deptId); - - Long batchNo = sysScalePublish.getBatchNo(); - String scaleIds = sysScalePublish.getScaleIds(); - //todo - List publishScaleVos = scaleMapper.findSysScaleByIds(scaleIds); - List 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); - } - } + String deptBatchNo = publishMapper.selectUseBatchNoByDeptId(deptId); + String userBatchNo = publishMapper.selectUseBatchNoByUserId(userId); + List batchList = new ArrayList<>(); + List scaleVos = new ArrayList<>(); + if (StringUtils.isNotEmpty(deptBatchNo)) { + batchList.add(deptBatchNo); } - SysScalePublishVo sysScalePublishVo = MapstructUtils.convert(sysScalePublish, SysScalePublishVo.class); - sysScalePublishVo.setScaleList(publishScaleVos); - return sysScalePublishVo; + if (StringUtils.isNotEmpty(userBatchNo)) { + batchList.add(userBatchNo); + } + if (batchList.size() == 0) { + return scaleVos; + } + scaleVos = recordMapper.selectPublishScaleListByUserAndBatch(userId, StrUtil.join(StrUtil.COMMA, batchList)); + return scaleVos; } @Override diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysEvaluationRecordMapper.xml b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysEvaluationRecordMapper.xml index 5fdd6ff..3f1da64 100644 --- a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysEvaluationRecordMapper.xml +++ b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysEvaluationRecordMapper.xml @@ -3,11 +3,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + select s.scale_id, + s.scale_name, + s.scale_title, + 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}) - - + + + + diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java index 7e76cd8..7798c65 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java @@ -121,5 +121,6 @@ public interface SysUserMapper extends BaseMapperPlus { int updateInterveneById(@Param(Constants.ENTITY) SysUser user); + List findUserByIds(String userIds); } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 7528d8e..34b618c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -171,9 +171,9 @@ @@ -188,10 +188,15 @@ from sys_dept d left join sys_user u on u.dept_id = d.dept_id where u.user_type = 'student' + and u.del_flag = 0 and find_in_set(d.dept_id, #{deptIds}) update sys_user set intervene_status = #{et.interveneStatus} where user_id = #{et.userId} + +