diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysScaleQuestionController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysScaleQuestionController.java index 8b19b13..0a414dd 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysScaleQuestionController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysScaleQuestionController.java @@ -57,6 +57,17 @@ public class SysScaleQuestionController extends BaseController { ExcelUtil.exportExcel(list, "量问题内容", SysScaleQuestionVo.class, response); } + /** + * 查询量表所有问题 + * + * @param bo + * @return + */ + @GetMapping("/findByScaleId") + public R> findByScaleId(SysScaleQuestionBo bo) { + return R.ok(sysScaleQuestionService.queryList(bo)); + } + /** * 获取量问题内容详细信息 * @@ -65,7 +76,7 @@ public class SysScaleQuestionController extends BaseController { @SaCheckPermission("scale:question:query") @GetMapping("/{questionId}") public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable Long questionId) { + @PathVariable Long questionId) { return R.ok(sysScaleQuestionService.queryById(questionId)); } 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 06e392b..956eaa4 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 @@ -1,7 +1,9 @@ package org.dromara.scale.domain.bo; import io.github.linpeilie.annotations.AutoMapper; +import io.github.linpeilie.annotations.AutoMapping; import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; import org.dromara.common.core.validate.AddGroup; @@ -9,6 +11,7 @@ import org.dromara.common.core.validate.EditGroup; import org.dromara.scale.domain.SysScalePublish; import java.util.Date; +import java.util.List; /** * 量发布业务对象 sys_scale_publish @@ -29,13 +32,14 @@ public class SysScalePublishBo { /** * 量表id,以逗号隔开 */ - @NotBlank(message = "量表id,以逗号隔开不能为空", groups = { AddGroup.class, EditGroup.class }) - private String scaleIds; + @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 }) +// @NotBlank(message = "量表名称 以逗号隔开不能为空", groups = { AddGroup.class, EditGroup.class }) private String scaleNames; /** @@ -53,7 +57,7 @@ public class SysScalePublishBo { /** * 应参评人数 */ - @NotNull(message = "应参评人数不能为空", groups = { AddGroup.class, EditGroup.class }) +// @NotNull(message = "应参评人数不能为空", groups = { AddGroup.class, EditGroup.class }) private Long partNum; /** diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleMapper.java index 51228ba..02dc998 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleMapper.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScaleMapper.java @@ -7,6 +7,8 @@ import org.dromara.scale.domain.vo.SysScaleVo; import java.util.List; +import java.util.List; + /** * 心理测评量Mapper接口 * @@ -16,6 +18,6 @@ import java.util.List; @Mapper public interface SysScaleMapper extends BaseMapperPlus { - List selectPublishListByIds(List list); + List findSysScaleByIds(String scaleIds); } 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 3ce9394..1abeba6 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,5 +1,7 @@ package org.dromara.scale.service.impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -9,6 +11,7 @@ import org.dromara.common.core.utils.MapstructUtils; 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.domain.SysScale; import org.dromara.scale.domain.SysScalePublish; import org.dromara.scale.domain.bo.SysScalePublishBo; import org.dromara.scale.domain.vo.SysEvaluationRecordVo; @@ -21,9 +24,11 @@ import org.dromara.scale.service.ISysScalePublishService; import org.springframework.stereotype.Service; import java.util.Arrays; +import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; import static org.dromara.common.satoken.utils.LoginHelper.getLoginUser; @@ -38,6 +43,7 @@ import static org.dromara.common.satoken.utils.LoginHelper.getLoginUser; public class SysScalePublishServiceImpl implements ISysScalePublishService { private final SysScalePublishMapper baseMapper; + private final SysScaleMapper sysScaleMapper; private final SysScaleMapper scaleMapper; @@ -73,7 +79,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { private LambdaQueryWrapper buildQueryWrapper(SysScalePublishBo bo) { //Map params = bo.getParams(); LambdaQueryWrapper 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.like(StringUtils.isNotBlank(bo.getSessionName()), SysScalePublish::getSessionName, bo.getSessionName()); lqw.eq(bo.getDeptId() != null, SysScalePublish::getDeptId, bo.getDeptId()); @@ -94,10 +100,25 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { add.setCreateBy(loginUser.getUserId()); add.setCreateTime(new Date()); validEntityBeforeSave(add); + + if (CollUtil.isNotEmpty(bo.getScaleIds())) { + List list = sysScaleMapper.findSysScaleByIds(StrUtil.join(StrUtil.COMMA, bo.getScaleIds())); + add.setScaleNames(list.stream().map(SysScaleVo::getScaleName).collect(Collectors.joining(StrUtil.COMMA))); + + List scaleList = new ArrayList<>(bo.getScaleIds().size()); + for (String scaleId : bo.getScaleIds()) { + SysScale sysScale = sysScaleMapper.selectById(scaleId); + sysScale.setPublishNums(sysScale.getPublishNums() + 1); + scaleList.add(sysScale); + } + sysScaleMapper.updateBatchById(scaleList, 100); + } + boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setBatchNo(add.getBatchNo()); } + return flag; } @@ -150,9 +171,8 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { sysScalePublishVo = baseMapper.selectVoOne(lqw); } Long batchNo = sysScalePublishVo.getBatchNo(); - List idList = Arrays.stream(sysScalePublishVo.getScaleIds().split(",")) - .mapToLong(Long::valueOf).boxed().toList(); - List publishScaleVos = scaleMapper.selectPublishListByIds(idList); + String scaleIds = sysScalePublishVo.getScaleIds(); + List publishScaleVos = sysScaleMapper.findSysScaleByIds(StrUtil.join(StrUtil.COMMA, scaleIds)); List recordVos = recordMapper.selectSclaeRecordListByUserAndBatch(userId, batchNo); for (SysEvaluationRecordVo recordVo : recordVos) { publishScaleVos.stream().filter(p -> p.getScaleId().equals(recordVo.getScaleId())) diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScaleMapper.xml b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScaleMapper.xml index baa56ab..e7e6217 100644 --- a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScaleMapper.xml +++ b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScaleMapper.xml @@ -3,12 +3,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + SELECT * FROM sys_scale t WHERE FIND_IN_SET(t.scale_id, #{scaleIds})