From 57dc8d7859d5a15d231a5c79af15a8b885d679ca Mon Sep 17 00:00:00 2001 From: cjw Date: Mon, 22 Apr 2024 10:29:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BA=E4=BA=86=E4=BB=A5=E5=90=8E=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=EF=BC=8C=E4=BF=AE=E6=94=B9=E9=87=8F=E8=A1=A8=E6=B5=8B?= =?UTF-8?q?=E8=AF=84=E9=80=BB=E8=BE=91=EF=BC=8C=E5=B9=B6=E5=9B=A0=E4=B8=BA?= =?UTF-8?q?=E6=94=B9=E5=8A=A8=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96=E4=B9=8B?= =?UTF-8?q?=E5=89=8D=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scale/controller/StatisticController.java | 24 ++- .../SysInterveneRecordController.java | 14 +- .../scale/controller/web/WebController.java | 10 +- .../scale/domain/SysEvaluationRecord.java | 11 +- .../dromara/scale/domain/SysScalePublish.java | 6 + .../domain/bo/SysEvaluationRecordBo.java | 2 + .../scale/domain/bo/SysScalePublishBo.java | 2 +- ...ticCompleteVo.java => StatisticNumVo.java} | 2 +- .../domain/vo/SysEvaluationRecordVo.java | 5 + .../scale/domain/vo/SysScalePublishVo.java | 7 +- .../dromara/scale/domain/vo/SysScaleVo.java | 2 + .../scale/mapper/SysScalePublishMapper.java | 14 +- .../scale/service/IStatisticService.java | 10 +- .../service/ISysEvaluationRecordService.java | 4 + .../dromara/scale/service/IWebService.java | 3 +- .../scale/service/impl/StatisticService.java | 29 ++-- .../impl/SysEvaluationRecordServiceImpl.java | 37 ++++- .../impl/SysScalePublishServiceImpl.java | 21 +-- .../scale/service/impl/WebServiceImpl.java | 58 ++++---- .../scale/SysEvaluationRecordMapper.xml | 1 + .../mapper/scale/SysScalePublishMapper.xml | 16 +- .../dromara/system/mapper/SysUserMapper.java | 3 + .../system/service/ISysDeptService.java | 2 + .../service/impl/SysDeptServiceImpl.java | 11 ++ .../resources/mapper/system/SysUserMapper.xml | 140 +++++++++++++----- 25 files changed, 297 insertions(+), 137 deletions(-) rename ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/{StatisticCompleteVo.java => StatisticNumVo.java} (85%) diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/StatisticController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/StatisticController.java index 711638f..d8a0b73 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/StatisticController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/StatisticController.java @@ -3,7 +3,7 @@ package org.dromara.scale.controller; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.web.core.BaseController; -import org.dromara.scale.domain.vo.StatisticCompleteVo; +import org.dromara.scale.domain.vo.StatisticNumVo; import org.dromara.scale.domain.vo.StatisticWarnVo; import org.dromara.scale.service.IStatisticService; import org.springframework.web.bind.annotation.GetMapping; @@ -30,7 +30,7 @@ public class StatisticController extends BaseController { * 获取完成情况统计 */ @GetMapping("/complete/all") - public R getComplete(Long batchNo, Long scaleId) { + public R getComplete(Long batchNo, Long scaleId) { return R.ok(statisticService.getComplete4All(batchNo, scaleId)); } @@ -38,12 +38,12 @@ public class StatisticController extends BaseController { * 获取完成情况统计 */ @GetMapping("/complete/class") - public R> getComplete4Class(Long batchNo, Long scaleId) { + public R> getComplete4Class(Long batchNo, Long scaleId) { return R.ok(statisticService.getComplete4Class(batchNo, scaleId)); } /** - * 获取完成情况统计 + * 获取预警情况统计 */ @GetMapping("/warn/all") public R getWarn(Long batchNo, Long scaleId) { @@ -51,11 +51,25 @@ public class StatisticController extends BaseController { } /** - * 获取完成情况统计 + * 获取预警情况统计 */ @GetMapping("/warn/class") public R> getWarn4Class(Long batchNo, Long scaleId) { return R.ok(statisticService.getWarn4Class(batchNo, scaleId)); } + /** + * 获取预警情况统计 + */ + @GetMapping("/factor/all") + public R> getFactor(Long batchNo, Long scaleId) { + return R.ok(statisticService.getFactor4All(batchNo, scaleId)); + } + /** + * 获取预警情况统计 + */ + @GetMapping("/factor/class") + public R> getFactor4Class(Long batchNo, Long scaleId) { + return R.ok(statisticService.getFactor4Class(batchNo, scaleId)); + } } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysInterveneRecordController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysInterveneRecordController.java index c4041a2..e77eaf1 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysInterveneRecordController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysInterveneRecordController.java @@ -75,6 +75,8 @@ public class SysInterveneRecordController extends BaseController { return toAjax(sysInterveneRecordService.insertByBo(bo)); } + + /** * 修改干预记录 */ @@ -86,15 +88,5 @@ public class SysInterveneRecordController extends BaseController { // return toAjax(sysInterveneRecordService.updateByBo(bo)); // } - /** - * 删除干预记录 - * - * @param interveneIds 主键串 - */ -// @SaCheckPermission("scale:intervene:remove") -// @Log(title = "干预记录", businessType = BusinessType.DELETE) -// @DeleteMapping("/{interveneIds}") -// public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] interveneIds) { -// return toAjax(sysInterveneRecordService.deleteWithValidByIds(List.of(interveneIds), true)); -// } + } 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 8531bb3..84e092b 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 @@ -9,7 +9,6 @@ import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.web.core.BaseController; import org.dromara.scale.domain.bo.SubmitAnswerBo; -import org.dromara.scale.domain.bo.SysEvaluationRecordBo; import org.dromara.scale.domain.vo.QuestionAnswerVo; import org.dromara.scale.domain.vo.SysScalePublishVo; import org.dromara.scale.service.IWebService; @@ -57,9 +56,10 @@ public class WebController extends BaseController { */ @Log(title = "量测记录", businessType = BusinessType.INSERT) @RepeatSubmit() - @PostMapping("/record") - public R addRecord(@Validated(AddGroup.class) @RequestBody SysEvaluationRecordBo bo) { - return R.ok(webService.newRecord(bo)); + @PostMapping("/record/{id}") + public R addRecord(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return toAjax(webService.newRecord(id)); } /** @@ -68,7 +68,7 @@ public class WebController extends BaseController { @Log(title = "量测记录", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/record/answer") - public R> add(@Validated(AddGroup.class) @RequestBody SubmitAnswerBo bo) { + public R> add(@Validated(AddGroup.class) @RequestBody SubmitAnswerBo bo) { return R.ok(webService.submitAnswer(bo)); } } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysEvaluationRecord.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysEvaluationRecord.java index 60443c0..2b13925 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysEvaluationRecord.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysEvaluationRecord.java @@ -1,7 +1,5 @@ package org.dromara.scale.domain; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -17,7 +15,7 @@ import java.util.Date; */ @Data @TableName("sys_evaluation_record") -public class SysEvaluationRecord { +public class SysEvaluationRecord { @Serial private static final long serialVersionUID = 1L; @@ -48,10 +46,15 @@ public class SysEvaluationRecord { */ private Long batchNo; + /** + * 记录状态0初始化,1开始测试 + */ + private Integer status; + /** * 创建时间 */ - @TableField(fill = FieldFill.INSERT) + //@TableField(fill = FieldFill.INSERT) private Date createTime; 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 a426020..eb4b6e3 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 @@ -4,7 +4,10 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.github.linpeilie.annotations.AutoMapper; +import io.github.linpeilie.annotations.AutoMapping; import lombok.Data; +import org.dromara.scale.domain.vo.SysScalePublishVo; import java.io.Serial; import java.util.Date; @@ -17,6 +20,7 @@ import java.util.Date; */ @Data @TableName("sys_scale_publish") +@AutoMapper(target = SysScalePublishVo.class, reverseConvertGenerate = false) public class SysScalePublish { @Serial @@ -31,11 +35,13 @@ public class SysScalePublish { /** * 量表id,以逗号隔开 */ + @AutoMapping(target = "scaleIds", expression = "java(cn.hutool.core.util.StrUtil.split(source.getScaleIds(), \",\"))") private String scaleIds; /** * 量表名称 以逗号隔开 */ + @AutoMapping(target = "scaleNames", expression = "java(cn.hutool.core.util.StrUtil.split(source.getScaleNames(), \",\"))") private String scaleNames; /** diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysEvaluationRecordBo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysEvaluationRecordBo.java index 35f6a54..c348149 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysEvaluationRecordBo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysEvaluationRecordBo.java @@ -43,5 +43,7 @@ public class SysEvaluationRecordBo { @NotNull(message = "td_scale_publish表主键不能为空", groups = { AddGroup.class, EditGroup.class }) private Long batchNo; + private Integer status; + private Date createTime; } 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 cff5ec8..b4916ba 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 @@ -51,7 +51,7 @@ public class SysScalePublishBo { /** * 部门分组id */ - //@NotNull(message = "部门分组id不能为空", groups = { AddGroup.class, EditGroup.class }) + @NotNull(message = "年级分组id不能为空", groups = { AddGroup.class, EditGroup.class }) private Long deptId; /** diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticCompleteVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticNumVo.java similarity index 85% rename from ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticCompleteVo.java rename to ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticNumVo.java index 8a3bf73..66c7fba 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticCompleteVo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticNumVo.java @@ -13,7 +13,7 @@ import java.io.Serializable; * @date 2024/4/17 15:21 */ @Data -public class StatisticCompleteVo implements Serializable { +public class StatisticNumVo implements Serializable { @Serial private static final long serialVersionUID = 1L; diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysEvaluationRecordVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysEvaluationRecordVo.java index 8fedc51..7637585 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysEvaluationRecordVo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysEvaluationRecordVo.java @@ -54,6 +54,11 @@ public class SysEvaluationRecordVo implements Serializable { @ExcelProperty(value = "td_scale_publish表主键") private Long batchNo; + /** + * 记录状态0初始化,1开始测试 + */ + private Integer status; + private String scaleName; 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 913e6e5..59c6764 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 @@ -2,9 +2,7 @@ package org.dromara.scale.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; -import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.scale.domain.SysScalePublish; import java.io.Serial; import java.io.Serializable; @@ -20,7 +18,6 @@ import java.util.List; */ @Data @ExcelIgnoreUnannotated -@AutoMapper(target = SysScalePublish.class) public class SysScalePublishVo implements Serializable { @Serial @@ -36,13 +33,13 @@ public class SysScalePublishVo implements Serializable { * 量表id,以逗号隔开 */ @ExcelProperty(value = "量表id,以逗号隔开") - private String scaleIds; + List scaleIds; /** * 量表名称 以逗号隔开 */ @ExcelProperty(value = "量表名称 以逗号隔开") - private String scaleNames; + List scaleNames; /** * 场次名称 diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleVo.java index 12a339a..23b20f0 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleVo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScaleVo.java @@ -139,4 +139,6 @@ public class SysScaleVo implements Serializable { private boolean used; + + private 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 7d88da3..84c338a 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 @@ -5,7 +5,7 @@ import org.apache.ibatis.annotations.Param; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.scale.domain.SysScalePublish; import org.dromara.scale.domain.vo.EvaluationVo; -import org.dromara.scale.domain.vo.StatisticCompleteVo; +import org.dromara.scale.domain.vo.StatisticNumVo; import org.dromara.scale.domain.vo.StatisticWarnVo; import org.dromara.scale.domain.vo.SysScalePublishVo; @@ -20,14 +20,14 @@ import java.util.List; @Mapper public interface SysScalePublishMapper extends BaseMapperPlus { - StatisticCompleteVo selectSingleAllAvaluation(Long batchNo); + StatisticNumVo selectSingleAllAvaluation(Long batchNo); - StatisticCompleteVo selectSingleCompleteAvaluation(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId); + StatisticNumVo selectSingleCompleteAvaluation(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId); - List selectAllAvaluation(Long batchNo); + List selectAllAvaluation(Long batchNo); - List selectCompleteAvaluation(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId); + List selectCompleteAvaluation(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId); List selectEvaluationVoList(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId); @@ -36,4 +36,8 @@ public interface SysScalePublishMapper extends BaseMapperPlus selectStatisticWarn4Class(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId); + + List selectStatisticFactor(@Param("batchNo")Long batchNo, @Param("scaleId") Long scaleId); + + List selectStatisticFactor4Class(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId); } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IStatisticService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IStatisticService.java index 599aa47..a53728c 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IStatisticService.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IStatisticService.java @@ -1,6 +1,6 @@ package org.dromara.scale.service; -import org.dromara.scale.domain.vo.StatisticCompleteVo; +import org.dromara.scale.domain.vo.StatisticNumVo; import org.dromara.scale.domain.vo.StatisticWarnVo; import java.util.List; @@ -8,12 +8,16 @@ import java.util.List; public interface IStatisticService { - StatisticCompleteVo getComplete4All(Long batchNo, Long scaleId); + StatisticNumVo getComplete4All(Long batchNo, Long scaleId); - List getComplete4Class(Long batchNo, Long scaleId); + List getComplete4Class(Long batchNo, Long scaleId); StatisticWarnVo getWarn4All(Long batchNo, Long scaleId); List getWarn4Class(Long batchNo, Long scaleId); + + List getFactor4All(Long batchNo, Long scaleId); + + List getFactor4Class(Long batchNo, Long scaleId); } 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 fa3dbcc..dbfde4c 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,6 +3,7 @@ package org.dromara.scale.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.scale.domain.bo.SysEvaluationRecordBo; +import org.dromara.scale.domain.bo.SysScalePublishBo; import org.dromara.scale.domain.vo.SysEvaluationRecordVo; import java.util.List; @@ -31,6 +32,9 @@ public interface ISysEvaluationRecordService { List queryList(SysEvaluationRecordBo bo); + void insertBathByPublish(SysScalePublishBo bo); + + 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 0a231b5..e1c64f8 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 @@ -1,7 +1,6 @@ package org.dromara.scale.service; import org.dromara.scale.domain.bo.SubmitAnswerBo; -import org.dromara.scale.domain.bo.SysEvaluationRecordBo; import org.dromara.scale.domain.vo.QuestionAnswerVo; import org.dromara.scale.domain.vo.SysScalePublishVo; @@ -14,7 +13,7 @@ public interface IWebService { List queryQuestionAnswerListByScaleId(Long scaleId); - Long newRecord(SysEvaluationRecordBo bo); + Boolean newRecord(Long recordId); Map submitAnswer(SubmitAnswerBo bo); } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/StatisticService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/StatisticService.java index 147bc9b..511c599 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/StatisticService.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/StatisticService.java @@ -1,7 +1,7 @@ package org.dromara.scale.service.impl; import lombok.RequiredArgsConstructor; -import org.dromara.scale.domain.vo.StatisticCompleteVo; +import org.dromara.scale.domain.vo.StatisticNumVo; import org.dromara.scale.domain.vo.StatisticWarnVo; import org.dromara.scale.mapper.SysScalePublishMapper; import org.dromara.scale.service.IStatisticService; @@ -26,22 +26,22 @@ public class StatisticService implements IStatisticService { private final SysScalePublishMapper scalePublishMapper; @Override - public StatisticCompleteVo getComplete4All(Long batchNo, Long scaleId) { - StatisticCompleteVo all = scalePublishMapper.selectSingleAllAvaluation(batchNo); + public StatisticNumVo getComplete4All(Long batchNo, Long scaleId) { + StatisticNumVo all = scalePublishMapper.selectSingleAllAvaluation(batchNo); int total = all.getValue(); - StatisticCompleteVo already = scalePublishMapper.selectSingleCompleteAvaluation(batchNo, scaleId); + StatisticNumVo already = scalePublishMapper.selectSingleCompleteAvaluation(batchNo, scaleId); int alreadyValue = already.getValue(); all.setSpareValue(total - alreadyValue); return all; } @Override - public List getComplete4Class(Long batchNo, Long scaleId) { - List all = scalePublishMapper.selectAllAvaluation(batchNo); - Map collect = all.stream().collect(Collectors.groupingBy(StatisticCompleteVo::getName, - Collectors.collectingAndThen(Collectors.mapping(StatisticCompleteVo::getValue, Collectors.toList()), + public List getComplete4Class(Long batchNo, Long scaleId) { + List all = scalePublishMapper.selectAllAvaluation(batchNo); + Map collect = all.stream().collect(Collectors.groupingBy(StatisticNumVo::getName, + Collectors.collectingAndThen(Collectors.mapping(StatisticNumVo::getValue, Collectors.toList()), values -> values.get(0)))); - List completeList = scalePublishMapper.selectCompleteAvaluation(batchNo, scaleId); + List completeList = scalePublishMapper.selectCompleteAvaluation(batchNo, scaleId); completeList.forEach(a -> { String name = a.getName(); int total = collect.get(name); @@ -59,4 +59,15 @@ public class StatisticService implements IStatisticService { public List getWarn4Class(Long batchNo, Long scaleId) { return scalePublishMapper.selectStatisticWarn4Class(batchNo, scaleId); } + + @Override + public List getFactor4All(Long batchNo, Long scaleId) { + + return null; + } + + @Override + public List getFactor4Class(Long batchNo, Long scaleId) { + return null; + } } 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 5fcb658..9837944 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 @@ -6,13 +6,20 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; 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.SysEvaluationRecord; import org.dromara.scale.domain.bo.SysEvaluationRecordBo; +import org.dromara.scale.domain.bo.SysScalePublishBo; import org.dromara.scale.domain.vo.SysEvaluationRecordVo; import org.dromara.scale.mapper.SysEvaluationRecordMapper; import org.dromara.scale.service.ISysEvaluationRecordService; +import org.dromara.system.domain.SysUser; +import org.dromara.system.mapper.SysUserMapper; +import org.dromara.system.service.ISysDeptService; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -27,11 +34,15 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi private final SysEvaluationRecordMapper baseMapper; + private final ISysDeptService deptService; + + private final SysUserMapper userMapper; + /** * 查询量测记录 */ @Override - public SysEvaluationRecordVo queryById(Long recordId){ + public SysEvaluationRecordVo queryById(Long recordId) { return baseMapper.selectVoById(recordId); } @@ -63,5 +74,27 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi return lqw; } - + @Async + @Override + public void insertBathByPublish(SysScalePublishBo bo) { + Long deptId = bo.getDeptId(); + Long batchNo = bo.getBatchNo(); + List scaleIds = bo.getScaleIds(); + //判断人数 + boolean flag = deptService.isParent(deptId); + List sysUsers = userMapper.selectStudentListByDeptId(deptId, flag); + List recordList = new ArrayList<>(); + for (String scaleId : scaleIds) { + 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); + } } 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 a3c2abb..b658ad9 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 @@ -23,9 +23,9 @@ import org.dromara.scale.domain.vo.SysScalePublishVo; import org.dromara.scale.domain.vo.SysScaleVo; 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.vo.SysDeptVo; -import org.dromara.system.mapper.SysDeptMapper; +import org.dromara.system.service.ISysDeptService; import org.springframework.stereotype.Service; import java.util.Collection; @@ -50,7 +50,9 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { private final SysScaleMapper scaleMapper; - private final SysDeptMapper deptMapper; + private final ISysDeptService deptService; + + private final ISysEvaluationRecordService evaluationRecordService; /** * 查询量发布 @@ -128,6 +130,8 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { } //加入延迟队列 QueueUtils.addDelayedQueueObject("scalePublish-delay-queue", add.getBatchNo(), l, TimeUnit.MILLISECONDS); + //预处理量测记录,方便后续统计与查询 + evaluationRecordService.insertBathByPublish(bo); return flag; } @@ -172,7 +176,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { Long deptId = scalePublishVo.getDeptId(); //为父级 List evaluationVos; - if (isParent(deptId)) { + if (deptService.isParent(deptId)) { evaluationVos = baseMapper.selectEvaluationVoList4Parent(batchNo, scaleId); } else { evaluationVos = baseMapper.selectEvaluationVoList(batchNo, scaleId); @@ -186,13 +190,4 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { return evaluationVos; } - private boolean isParent(Long deptId) { - SysDeptVo dept = deptMapper.selectDeptById(deptId); - List split = StrUtil.split(dept.getAncestors(), StringUtils.SEPARATOR); - if (split.size() <= 2) { - return true; - } else { - return false; - } - } } 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 9d90a88..51056f3 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 @@ -16,7 +16,6 @@ import org.dromara.scale.constant.StatusEnum; import org.dromara.scale.domain.*; import org.dromara.scale.domain.bo.SubmitAnswerBo; import org.dromara.scale.domain.bo.SysEvaluationAnswerBo; -import org.dromara.scale.domain.bo.SysEvaluationRecordBo; import org.dromara.scale.domain.vo.*; import org.dromara.scale.mapper.*; import org.dromara.scale.service.ISysScaleAnswerService; @@ -94,18 +93,19 @@ public class WebServiceImpl implements IWebService { sysScalePublishVo = publishMapper.selectVoOne(lqw); } } - //都没有则查针对全部的发布 - if (sysScalePublishVo == null) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(SysScalePublish::getDeptId, null); - lqw.eq(SysScalePublish::getStatus, StatusEnum.IN_USE.getValue()); - sysScalePublishVo = publishMapper.selectVoOne(lqw); - } + //都没有则查针对全部的发布 暂时不考虑 +// if (sysScalePublishVo == null) { +// LambdaQueryWrapper 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 scaleIds = sysScalePublishVo.getScaleIds(); + //todo List publishScaleVos = scaleMapper.findSysScaleByIds(StrUtil.join(StrUtil.COMMA, scaleIds)); List recordVos = recordMapper.selectSclaeRecordListByUserAndBatch(userId, batchNo); for (SysScaleVo publishScaleVo : publishScaleVos) { @@ -114,7 +114,8 @@ public class WebServiceImpl implements IWebService { //已做过量表 for (SysEvaluationRecordVo recordVo : recordVos) { if (publishScaleVo.getScaleId().equals(recordVo.getScaleId())) { - publishScaleVo.setUsed(true); + publishScaleVo.setRecordId(recordVo.getRecordId()); + publishScaleVo.setUsed(recordVo.getStatus() == 1); } } } @@ -128,18 +129,20 @@ public class WebServiceImpl implements IWebService { } @Override - public Long newRecord(SysEvaluationRecordBo bo) { - LoginUser loginUser = getLoginUser(); - SysEvaluationRecord add = MapstructUtils.convert(bo, SysEvaluationRecord.class); - add.setUserId(loginUser.getUserId()); - add.setDeptId(loginUser.getDeptId()); - add.setCreateTime(new Date()); - validEntityBeforeSave(add); - boolean flag = recordMapper.insert(add) > 0; - if (flag) { - bo.setRecordId(add.getRecordId()); + public Boolean newRecord(Long recordId) { + //LoginUser loginUser = getLoginUser(); + SysEvaluationRecord evaluationRecord = recordMapper.selectById(recordId); + if (evaluationRecord == null) { + throw new ServiceException("未查询到需要测试的记录,请联系管理员"); } - return add.getRecordId(); + if (evaluationRecord.getStatus() == 1) { + throw new ServiceException("此量表已经答题完毕,请勿重复提交"); + } + SysEvaluationRecord update = new SysEvaluationRecord(); + update.setRecordId(recordId); + update.setCreateTime(new Date()); + update.setStatus(StatusEnum.IN_USE.getValue()); + return recordMapper.updateById(update) > 0; } @Transactional(rollbackFor = Exception.class) @@ -163,6 +166,9 @@ public class WebServiceImpl implements IWebService { if (ObjectUtil.isEmpty(sysEvaluationRecord)) { throw new ServiceException("未能查到测量记录,请确认后提交"); } + if (sysEvaluationRecord.getStatus() == 1) { + throw new ServiceException("此量表已经答题完毕,请勿重复提交"); + } SysScalePublishVo scalePublishVo = recordMapper.selectPublishByUseRecord(recordId); //查询考核结果 if (scalePublishVo.getAllowQueryResult() == 0) { @@ -208,16 +214,6 @@ public class WebServiceImpl implements IWebService { }}; } - private void validEntityBeforeSave(SysEvaluationRecord entity) { - //TODO 做一些数据校验,如唯一约束 - List recordList = recordMapper.selectVoList(new LambdaQueryWrapper() - .eq(SysEvaluationRecord::getBatchNo, entity.getBatchNo()) - .eq(SysEvaluationRecord::getUserId, entity.getUserId()) - .eq(SysEvaluationRecord::getScaleId, entity.getScaleId())); - if (!ObjectUtil.isEmpty(recordList)) { - throw new ServiceException("本场次中你已做过此量表"); - } - } private List calculateEvaluationResult(Long scaleId, List answerList) { Long recordId = answerList.get(0).getRecordId(); 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 a956da7..ccf6351 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 @@ -9,6 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from sys_evaluation_record where user_id = #{userId} and batch_no = #{batchNo} + and status = 1 + - select d.dept_name as `name`, count(er.record_id) as `value` from sys_scale_publish sp left join sys_dept d on d.dept_id = sp.dept_id @@ -22,7 +22,7 @@ group by d.dept_id - select d.dept_name as `name`, count(u.user_id) as `value` from sys_scale_publish sp left join sys_dept d on d.parent_id = sp.dept_id @@ -31,7 +31,7 @@ group by d.dept_id - select d.dept_name as `name`, count(er.record_id) as `value` from sys_scale_publish sp left join sys_dept d on d.parent_id = sp.dept_id @@ -98,4 +98,12 @@ and ec.status = 1 group by d.dept_id + + + + 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 94f8d66..e0d3c39 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 @@ -118,4 +118,7 @@ public interface SysUserMapper extends BaseMapperPlus { int updatePasswordBatchById(List list); + + List selectStudentListByDeptId(@Param("deptId") Long deptId,@Param("flag") boolean flag); + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java index b209381..be639ad 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java @@ -114,4 +114,6 @@ public interface ISysDeptService { * @return 结果 */ int deleteDeptById(Long deptId); + + boolean isParent(Long deptId); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index fe5cc0e..01f854b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -325,4 +326,14 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { return baseMapper.deleteById(deptId); } + @Override + public boolean isParent(Long deptId) { + SysDeptVo dept = baseMapper.selectDeptById(deptId); + List split = StrUtil.split(dept.getAncestors(), StringUtils.SEPARATOR); + if (split.size() <= 2) { + return true; + } else { + return false; + } + } } 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 595c123..89f5066 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 @@ -1,9 +1,8 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - @@ -49,82 +48,131 @@ d.dept_name, d.order_num, d.leader, - d.status as dept_status, - d.email as dept_email, + d.status as dept_status, + d.email as dept_email, d.create_time as dept_cteate_time, r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, - r.status as role_status + r.status as role_status from sys_user u - left join sys_dept d on u.dept_id = d.dept_id - left join sys_user_role sur on u.user_id = sur.user_id - left join sys_role r on r.role_id = sur.role_id + left join sys_dept d on u.dept_id = d.dept_id + left join sys_user_role sur on u.user_id = sur.user_id + left join sys_role r on r.role_id = sur.role_id @@ -134,4 +182,24 @@ WHERE user_id = #{item.userId} + +