新增个测发布;优化测评端量表获取
This commit is contained in:
parent
022deaf4a3
commit
6a39aefb66
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建者
|
* 创建者
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建者
|
* 创建者
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改量发布
|
* 修改量发布
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue