新增档案静态记录;优化量测逻辑;用户新增家庭住址

This commit is contained in:
cjw 2024-04-28 15:04:28 +08:00
parent da2688abd2
commit f3e56678cb
18 changed files with 211 additions and 65 deletions

View File

@ -4,9 +4,9 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
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.system.domain.bo.SysUserBo; import org.dromara.scale.domain.vo.ArchiveStatisticVo;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.scale.domain.vo.ArchiveVo;
import org.dromara.system.service.ISysUserService; import org.dromara.scale.service.IArchiveService;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -22,16 +22,25 @@ import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/scale/archives") @RequestMapping("/scale/archives")
public class ArchivesController { public class ArchiveController {
private final ISysUserService userService; private final IArchiveService archiveService;
/**
* 获取用户档案列表
*/
@SaCheckPermission("scale:archives:list")
@GetMapping("/pageList")
public TableDataInfo<ArchiveVo> pageList(ArchiveVo vo, PageQuery pageQuery) {
return archiveService.queryPageList(vo, pageQuery);
}
/** /**
* 获取用户列表 * 获取用户列表
*/ */
@SaCheckPermission("scale:archives:list") @SaCheckPermission("scale:archives:list")
@GetMapping("/pageList") @GetMapping("/statistic/pageList")
public TableDataInfo<SysUserVo> list(SysUserBo user, PageQuery pageQuery) { public TableDataInfo<ArchiveStatisticVo> statisticPageList(Long userId, PageQuery pageQuery) {
return userService.selectPageUserList(user, pageQuery); return archiveService.queryStatisticPageList(userId, pageQuery);
} }
} }

View File

@ -1,7 +1,6 @@
package org.dromara.scale.controller; package org.dromara.scale.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
@ -21,8 +20,6 @@ import org.dromara.scale.service.ISysScalePublishService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* 量表发布 * 量表发布
* *
@ -102,17 +99,17 @@ public class ScalePublishController extends BaseController {
return toAjax(sysScalePublishService.end(bo)); return toAjax(sysScalePublishService.end(bo));
} }
/** // /**
* 删除量表发布 // * 删除量表发布
* // *
* @param batchNos 主键串 // * @param batchNos 主键串
*/ // */
@SaCheckPermission("scale:publish:remove") // @SaCheckPermission("scale:publish:remove")
@Log(title = "删除量表发布", businessType = BusinessType.DELETE) // @Log(title = "删除量表发布", businessType = BusinessType.DELETE)
@DeleteMapping("/{batchNo}") // @DeleteMapping("/{batchNo}")
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long batchNos) { // public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long batchNos) {
return toAjax(sysScalePublishService.deleteWithValidByIds(List.of(batchNos), true)); // return toAjax(sysScalePublishService.deleteWithValidByIds(List.of(batchNos), true));
} // }
} }

View File

@ -0,0 +1,32 @@
package org.dromara.scale.domain.vo;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* <p>档案静态记录<p>
*
* @author cjw
* @version V1.0.0
* @date 2024/4/28 14:06
*/
@Data
public class ArchiveStatisticVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
private Long batchNo;
private String sessionName;
private Long scaleId;
private String scaleName;
private Integer situation;
private String createTime;
}

View File

@ -1,5 +1,7 @@
package org.dromara.scale.domain.vo; package org.dromara.scale.domain.vo;
import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
@ -10,7 +12,8 @@ import java.io.Serializable;
* @version V1.0.0 * @version V1.0.0
* @date 2024/4/26 15:51 * @date 2024/4/26 15:51
*/ */
public class ArchivesVo implements Serializable { @Data
public class ArchiveVo implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -42,7 +45,10 @@ public class ArchivesVo implements Serializable {
*/ */
private String phonenumber; private String phonenumber;
private String remark; /**
* 家庭住址
*/
private String address;
} }

View File

@ -0,0 +1,18 @@
package org.dromara.scale.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.dromara.scale.domain.vo.ArchiveStatisticVo;
import org.dromara.scale.domain.vo.ArchiveVo;
@Mapper
public interface ArchiveMapper {
Page<ArchiveVo> selectArchiveVoPage(@Param("page") Page<ArchiveVo> page, @Param(Constants.WRAPPER) Wrapper<ArchiveVo> queryWrapper);
Page<ArchiveStatisticVo> selectStatisticVoPage(@Param("page") Page<ArchiveStatisticVo> page, @Param("userId") Long userId);
}

View File

@ -1,8 +0,0 @@
package org.dromara.scale.mapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ArchivesMapper {
}

View File

@ -0,0 +1,12 @@
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.vo.ArchiveStatisticVo;
import org.dromara.scale.domain.vo.ArchiveVo;
public interface IArchiveService {
TableDataInfo<ArchiveVo> queryPageList(ArchiveVo vo, PageQuery pageQuery);
TableDataInfo<ArchiveStatisticVo> queryStatisticPageList(Long usetId, PageQuery pageQuery);
}

View File

@ -1,4 +0,0 @@
package org.dromara.scale.service;
public interface IArchivesService {
}

View File

@ -0,0 +1,41 @@
package org.dromara.scale.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.domain.vo.ArchiveStatisticVo;
import org.dromara.scale.domain.vo.ArchiveVo;
import org.dromara.scale.mapper.ArchiveMapper;
import org.dromara.scale.service.IArchiveService;
import org.springframework.stereotype.Service;
/**
* <p>TODO<p>
*
* @author cjw
* @version V1.0.0
* @date 2024/4/26 15:46
*/
@RequiredArgsConstructor
@Service
public class ArchiveServiceImpl implements IArchiveService {
private final ArchiveMapper archiveMapper;
@Override
public TableDataInfo<ArchiveVo> queryPageList(ArchiveVo vo, PageQuery pageQuery) {
LambdaQueryWrapper<ArchiveVo> lqw = Wrappers.lambdaQuery();
lqw.like(vo.getNickName() != null, ArchiveVo::getNickName, vo.getNickName());
Page<ArchiveVo> result = archiveMapper.selectArchiveVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
@Override
public TableDataInfo<ArchiveStatisticVo> queryStatisticPageList(Long userId, PageQuery pageQuery) {
Page<ArchiveStatisticVo> result = archiveMapper.selectStatisticVoPage(pageQuery.build(), userId);
return TableDataInfo.build(result);
}
}

View File

@ -1,13 +0,0 @@
package org.dromara.scale.service.impl;
import org.dromara.scale.service.IArchivesService;
/**
* <p>TODO<p>
*
* @author cjw
* @version V1.0.0
* @date 2024/4/26 15:46
*/
public class ArchivesServiceImpl implements IArchivesService {
}

View File

@ -119,11 +119,10 @@ public class WebServiceImpl implements IWebService {
if (evaluationRecord.getStatus() == 1) { if (evaluationRecord.getStatus() == 1) {
throw new ServiceException("此量表已经答题完毕,请勿重复提交"); throw new ServiceException("此量表已经答题完毕,请勿重复提交");
} }
SysEvaluationRecord update = new SysEvaluationRecord(); SysEvaluationRecord update = new SysEvaluationRecord();
update.setRecordId(recordId); update.setRecordId(recordId);
//以开始时间判断记录是否开始答题
update.setCreateTime(new Date()); update.setCreateTime(new Date());
update.setStatus(StatusEnum.IN_USE.getValue());
return recordMapper.updateById(update) > 0; return recordMapper.updateById(update) > 0;
} }
@ -135,17 +134,18 @@ public class WebServiceImpl implements IWebService {
if (!UserType.STUDENT.getName().equals(userType)) { if (!UserType.STUDENT.getName().equals(userType)) {
throw new ServiceException("只有学生账户才能测评"); throw new ServiceException("只有学生账户才能测评");
} }
List<SysEvaluationAnswerBo> answerList = bo.getAnswerList(); List<SysEvaluationAnswerBo> answerList = bo.getAnswerList();
Long recordId = answerList.get(0).getRecordId(); Long recordId = answerList.get(0).getRecordId();
SysEvaluationRecord sysEvaluationRecord = recordMapper.selectById(recordId); SysEvaluationRecord sysEvaluationRecord = recordMapper.selectById(recordId);
if (ObjectUtil.isEmpty(sysEvaluationRecord)) { if (ObjectUtil.isEmpty(sysEvaluationRecord)) {
throw new ServiceException("能查到测量记录,请确认后再提交"); throw new ServiceException("查询到需要测试的记录,请联系管理员");
} }
if (sysEvaluationRecord.getStatus() == 0) { if (sysEvaluationRecord.getCreateTime() == null) {
throw new ServiceException("此量表暂未开始作答,请确认后再提交"); throw new ServiceException("此量表暂未开始作答,请确认后再提交");
} }
if (sysEvaluationRecord.getStatus() == 1) {
throw new ServiceException("此量表已经答题完毕,请勿重复提交");
}
boolean allowQueryResult = true; boolean allowQueryResult = true;
Long scaleId = bo.getScaleId(); Long scaleId = bo.getScaleId();
Map<String, List<SysScaleAnswerVo>> answerMapByQuestion = scaleAnswerService.getScaleAnswerMap(scaleId); Map<String, List<SysScaleAnswerVo>> answerMapByQuestion = scaleAnswerService.getScaleAnswerMap(scaleId);
@ -157,7 +157,6 @@ public class WebServiceImpl implements IWebService {
if (keySize != answerSize) { if (keySize != answerSize) {
throw new ServiceException("有题目未作选择,请检查后提交"); throw new ServiceException("有题目未作选择,请检查后提交");
} }
SysScalePublishVo scalePublishVo = recordMapper.selectPublishByUseRecord(recordId); SysScalePublishVo scalePublishVo = recordMapper.selectPublishByUseRecord(recordId);
//查询考核结果 //查询考核结果
if (scalePublishVo.getAllowQueryResult() == 0) { if (scalePublishVo.getAllowQueryResult() == 0) {
@ -169,6 +168,11 @@ public class WebServiceImpl implements IWebService {
List<SysEvaluationConclusionVo> list = calculateEvaluationResult(scaleId, answerList); List<SysEvaluationConclusionVo> list = calculateEvaluationResult(scaleId, answerList);
List<SysEvaluationConclusion> conclusionAdd = MapstructUtils.convert(list, SysEvaluationConclusion.class); List<SysEvaluationConclusion> conclusionAdd = MapstructUtils.convert(list, SysEvaluationConclusion.class);
evaluationConclusionMapper.insertBatch(conclusionAdd); evaluationConclusionMapper.insertBatch(conclusionAdd);
//更新记录表完成
SysEvaluationRecord update = new SysEvaluationRecord();
update.setRecordId(recordId);
update.setStatus(StatusEnum.IN_USE.getValue());
recordMapper.updateById(update);
Integer riskLevel = -1; Integer riskLevel = -1;
//选择风险等级最高 //选择风险等级最高

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.scale.mapper.ArchiveMapper">
<select id="selectArchiveVoPage" resultType="org.dromara.scale.domain.vo.ArchiveVo">
select u.user_id,
u.nick_name,
u.dept_id,
u.sex,
u.phonenumber,
u.address,
d.dept_name
from sys_user u
left join sys_dept d on d.dept_id = u.dept_id
${ew.getCustomSqlSegment}
</select>
<select id="selectStatisticVoPage" resultType="org.dromara.scale.domain.vo.ArchiveStatisticVo">
select sp.batch_no,
sp.session_name,
s.scale_id,
s.scale_name,
MAX(sfr.situation),
er.create_time
from sys_evaluation_record er
left join sys_scale s on s.scale_id = er.scale_id
left join sys_scale_publish sp on sp.batch_no = er.batch_no
left join sys_evaluation_conclusion ec on ec.record_id = er.record_id
left join sys_scale_factor_range sfr on sfr.range_id = ec.factor_range_id
where er.user_id = #{userId}
and er.status = 1
group by er.record_id
</select>
</mapper>

View File

@ -4,11 +4,12 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.scale.mapper.SysInterveneRecordMapper"> <mapper namespace="org.dromara.scale.mapper.SysInterveneRecordMapper">
<select id="selectTimeList" resultType="org.dromara.scale.domain.vo.TimeAxisVo"> <select id="selectTimeList" resultType="org.dromara.scale.domain.vo.TimeAxisVo">
select intervene_id as `id`, select ir.intervene_id as `id`,
CONCAT(DATE_FORMAT(create_time, '%Y-%m-%d'), ' 的预警') as `name`, CONCAT(DATE_FORMAT(create_time, '%Y-%m-%d'), ' ', u.nick_name, '的干预') as `name`,
create_time as `time`, ir.create_time as `time`,
'intervene' as `type` 'intervene' as `type`
from sys_intervene_record from sys_intervene_record ir
where user_id = #{userId} left join sys_user u on u.user_id = ir.counselor_id
where ir.user_id = #{userId}
</select> </select>
</mapper> </mapper>

View File

@ -66,7 +66,7 @@ public class SysOssController extends BaseController {
* *
* @param file 文件 * @param file 文件
*/ */
@SaCheckPermission("system:oss:upload") //@SaCheckPermission("system:oss:upload")
@Log(title = "OSS对象存储", businessType = BusinessType.INSERT) @Log(title = "OSS对象存储", businessType = BusinessType.INSERT)
@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<SysOssUploadVo> upload(@RequestPart("file") MultipartFile file) { public R<SysOssUploadVo> upload(@RequestPart("file") MultipartFile file) {
@ -86,7 +86,7 @@ public class SysOssController extends BaseController {
* *
* @param ossId OSS对象ID * @param ossId OSS对象ID
*/ */
@SaCheckPermission("system:oss:download") //@SaCheckPermission("system:oss:download")
@GetMapping("/download/{ossId}") @GetMapping("/download/{ossId}")
public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException { public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException {
ossService.download(ossId, response); ossService.download(ossId, response);

View File

@ -260,7 +260,7 @@ public class SysUserController extends BaseController {
/** /**
* 获取部门树列表 * 获取部门树列表
*/ */
@SaCheckPermission("system:user:list") //@SaCheckPermission("system:user:list")
@GetMapping("/deptTree") @GetMapping("/deptTree")
public R<List<Tree<Long>>> deptTree(SysDeptBo dept) { public R<List<Tree<Long>>> deptTree(SysDeptBo dept) {
return R.ok(deptService.selectDeptTreeList(dept)); return R.ok(deptService.selectDeptTreeList(dept));

View File

@ -52,6 +52,11 @@ public class SysUser extends BaseEntity {
*/ */
private String email; private String email;
/**
* 家庭住址
*/
private String address;
/** /**
* 手机号码 * 手机号码
*/ */

View File

@ -62,6 +62,11 @@ public class SysUserBo extends BaseEntity {
@Size(min = 0, max = 50, message = "邮箱长度不能超过{max}个字符") @Size(min = 0, max = 50, message = "邮箱长度不能超过{max}个字符")
private String email; private String email;
/**
* 家庭住址
*/
private String address;
/** /**
* 手机号码 * 手机号码
*/ */

View File

@ -59,6 +59,11 @@ public class SysUserVo implements Serializable {
@Sensitive(strategy = SensitiveStrategy.EMAIL) @Sensitive(strategy = SensitiveStrategy.EMAIL)
private String email; private String email;
/**
* 家庭住址
*/
private String address;
/** /**
* 手机号码 * 手机号码
*/ */