diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysEvaluationRecordController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysEvaluationRecordController.java index cc86750..e568c1b 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysEvaluationRecordController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysEvaluationRecordController.java @@ -65,4 +65,6 @@ public class SysEvaluationRecordController extends BaseController { return R.ok(sysEvaluationRecordService.queryById(recordId)); } + + } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysScalePublishController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysScalePublishController.java index 5f2adcc..f695e94 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysScalePublishController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/SysScalePublishController.java @@ -14,6 +14,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.scale.domain.bo.SysScalePublishBo; +import org.dromara.scale.domain.vo.StatisticVo; import org.dromara.scale.domain.vo.SysScalePublishVo; import org.dromara.scale.service.ISysScalePublishService; import org.springframework.validation.annotation.Validated; @@ -53,7 +54,7 @@ public class SysScalePublishController extends BaseController { @SaCheckPermission("scale:publish:query") @GetMapping("/{batchNo}") public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable Long batchNo) { + @PathVariable Long batchNo) { return R.ok(sysScalePublishService.queryById(batchNo)); } @@ -87,8 +88,25 @@ public class SysScalePublishController extends BaseController { @SaCheckPermission("scale:publish:remove") @Log(title = "量发布", businessType = BusinessType.DELETE) @DeleteMapping("/{batchNo}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Long batchNos) { + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long batchNos) { return toAjax(sysScalePublishService.deleteWithValidByIds(List.of(batchNos), true)); } + + /** + * 获取量测记录统计 + */ + @SaCheckPermission("evaluation:record:query") + @GetMapping("/statistic/all") + public R getStatistic(Long batchNo, Long scale) { + return R.ok(sysScalePublishService.getStatistic4All(batchNo, scale)); + } + + /** + * 获取量测记录统计 + */ + @SaCheckPermission("evaluation:record:query") + @GetMapping("/statistic/class") + public R> getStatistic4Class(Long batchNo, Long scale) { + return R.ok(sysScalePublishService.getStatistic4Class(batchNo, scale)); + } } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticVo.java new file mode 100644 index 0000000..1424c85 --- /dev/null +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/StatisticVo.java @@ -0,0 +1,21 @@ +package org.dromara.scale.domain.vo; + +import lombok.Data; + +/** + *

统计实体

+ * + * @author cjw + * @version V1.0.0 + * @date 2024/4/17 15:21 + */ +@Data +public class StatisticVo { + + private String name; + + private int value; + + private int spareValue; + +} 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 ed4947e..87e4aaf 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 @@ -1,9 +1,13 @@ package org.dromara.scale.mapper; import org.apache.ibatis.annotations.Mapper; -import org.dromara.scale.domain.SysScalePublish; -import org.dromara.scale.domain.vo.SysScalePublishVo; +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.StatisticVo; +import org.dromara.scale.domain.vo.SysScalePublishVo; + +import java.util.List; /** * 量发布Mapper接口 @@ -14,4 +18,12 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @Mapper public interface SysScalePublishMapper extends BaseMapperPlus { + StatisticVo selectSingleAllAvaluation(Long batchNo); + + StatisticVo selectSingleAlreadyAvaluation(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId); + + + List selectAllAvaluation(Long batchNo); + + List selectAlreadyAvaluation(@Param("batchNo") Long batchNo, @Param("scaleId") 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 0849d51..fa3dbcc 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 @@ -32,4 +32,6 @@ public interface ISysEvaluationRecordService { + + } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScalePublishService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScalePublishService.java index 5f07b07..9027597 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScalePublishService.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScalePublishService.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.SysScalePublishBo; +import org.dromara.scale.domain.vo.StatisticVo; import org.dromara.scale.domain.vo.SysScalePublishVo; import java.util.Collection; @@ -46,5 +47,7 @@ public interface ISysScalePublishService { */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + StatisticVo getStatistic4All(Long batchNo,Long scale); + List getStatistic4Class(Long batchNo,Long scale); } 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 16d8d90..5fcb658 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 @@ -63,4 +63,5 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi return lqw; } + } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleFactorServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleFactorServiceImpl.java index 37beb15..04e5d09 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleFactorServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleFactorServiceImpl.java @@ -1,7 +1,7 @@ package org.dromara.scale.service.impl; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -193,7 +193,7 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { new LambdaQueryWrapper().eq(SysScaleFactor::getScaleId, scaleId)); List scaleFactorRangeVos = scaleFactorRangeMapper.selectVoList( new LambdaQueryWrapper().eq(SysScaleFactorRange::getScaleId, scaleId)); - if (!ArrayUtil.isEmpty(scaleFactorVos) && !ArrayUtil.isEmpty(scaleFactorRangeVos)) { + if (!ObjectUtil.isEmpty(scaleFactorVos) && !ObjectUtil.isEmpty(scaleFactorRangeVos)) { Map> map = scaleFactorRangeVos.stream() .collect(Collectors.groupingBy(SysScaleFactorRangeVo::getFactorId)); scaleFactorVos.forEach(item -> item.setFactorRangeList(map.get(item.getFactorId()))); 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 3a8ce73..9e1457e 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,7 +1,7 @@ package org.dromara.scale.service.impl; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ArrayUtil; +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.toolkit.Wrappers; @@ -18,6 +18,7 @@ import org.dromara.common.redis.utils.QueueUtils; import org.dromara.scale.constant.StatusEnum; import org.dromara.scale.domain.SysScalePublish; import org.dromara.scale.domain.bo.SysScalePublishBo; +import org.dromara.scale.domain.vo.StatisticVo; import org.dromara.scale.domain.vo.SysScalePublishVo; import org.dromara.scale.domain.vo.SysScaleVo; import org.dromara.scale.mapper.SysScaleMapper; @@ -28,6 +29,7 @@ import org.springframework.stereotype.Service; import java.util.Collection; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -101,7 +103,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { //将时间校验移出来,方便后面使用 Date expireTime = add.getExpireTime(); long l = DateUtils.differentMillisecond(new Date(), expireTime); - if(l<=1000 * 3600 * 12){ + if (l <= 1000 * 3600 * 12) { throw new ServiceException("截止日期必须在六小时后"); } if (CollUtil.isNotEmpty(bo.getScaleIds())) { @@ -145,7 +147,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { List sysScalePublishVos = baseMapper.selectVoList(new LambdaQueryWrapper() .eq(SysScalePublish::getDeptId, deptId) .eq(SysScalePublish::getStatus, StatusEnum.IN_USE.getValue())); - if (!ArrayUtil.isEmpty(sysScalePublishVos)) { + if (!ObjectUtil.isEmpty(sysScalePublishVos)) { throw new ServiceException("此年级下已有发布"); } } @@ -161,4 +163,35 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { return baseMapper.deleteBatchIds(ids) > 0; } + /** + * 统计本场次 + * + * @param batchNo + * @return + */ + @Override + public StatisticVo getStatistic4All(Long batchNo, Long scale) { + //SysScalePublishVo sysScalePublishVo = baseMapper.selectVoById(batchNo); + StatisticVo all = baseMapper.selectSingleAllAvaluation(batchNo); + int total = all.getValue(); + StatisticVo already = baseMapper.selectSingleAlreadyAvaluation(batchNo, scale); + int alreadyValue = already.getValue(); + all.setSpareValue(total - alreadyValue); + return all; + } + + @Override + public List getStatistic4Class(Long batchNo, Long scale) { + List all = baseMapper.selectAllAvaluation(batchNo); + Map collect = all.stream().collect(Collectors.groupingBy(StatisticVo::getName, + Collectors.collectingAndThen(Collectors.mapping(StatisticVo::getValue, Collectors.toList()), + values -> values.get(0)))); + List alreadyList = baseMapper.selectAlreadyAvaluation(batchNo, scale); + alreadyList.forEach(a -> { + String name = a.getName(); + int total = collect.get(name); + a.setSpareValue(total - a.getValue()); + }); + return alreadyList; + } } 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 2ffcf1c..474d108 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 @@ -1,6 +1,6 @@ package org.dromara.scale.service.impl; -import cn.hutool.core.util.ArrayUtil; +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.toolkit.Wrappers; @@ -150,7 +150,7 @@ public class WebServiceImpl implements IWebService { Map> answerMapByQuestion = scaleAnswerService.getScaleAnswerMap(scaleId); int keySize = answerMapByQuestion.keySet().size(); List answerList = bo.getAnswerList(); - if (ArrayUtil.isEmpty(answerList)) { + if (ObjectUtil.isEmpty(answerList)) { throw new ServiceException("请先填写答案,再提交"); } int answerSize = answerList.size(); @@ -210,7 +210,7 @@ public class WebServiceImpl implements IWebService { .eq(SysEvaluationRecord::getBatchNo, entity.getBatchNo()) .eq(SysEvaluationRecord::getUserId, entity.getUserId()) .eq(SysEvaluationRecord::getScaleId, entity.getScaleId())); - if (!ArrayUtil.isEmpty(recordList)) { + if (!ObjectUtil.isEmpty(recordList)) { throw new ServiceException("本场次中你已做过此量表"); } } @@ -239,7 +239,7 @@ public class WebServiceImpl implements IWebService { questionIds.add(q); Long questionId = Long.parseLong(q); List answerNum = answerMapByQuestion.get(questionId); - if (!ArrayUtil.isEmpty(answerNum)) { + if (!ObjectUtil.isEmpty(answerNum)) { //找出分数最大的选项 BigDecimal s = answerNum.stream() .max(Comparator.comparing(SysScaleAnswerVo::getScore)).get().getScore(); diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScalePublishMapper.xml b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScalePublishMapper.xml index 718bbe7..c08923f 100644 --- a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScalePublishMapper.xml +++ b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScalePublishMapper.xml @@ -1,7 +1,43 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + +