去除计算公式代码;修改发布时分组逻辑;

This commit is contained in:
cjw 2024-04-23 10:52:21 +08:00
parent 78384ccaf5
commit 199e6f8086
28 changed files with 118 additions and 720 deletions

View File

@ -2,14 +2,10 @@ package org.dromara.scale.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
@ -35,14 +31,6 @@ public class SysScaleFactorRangeController extends BaseController {
private final ISysScaleFactorRangeService sysScaleFactorRangeService;
/**
* 查询因子分段列表
*/
// @SaCheckPermission("scale:scaleFactorRange:pageList")
// @GetMapping("/pageList")
// public TableDataInfo<SysScaleFactorRangeVo> list(SysScaleFactorRangeBo bo, PageQuery pageQuery) {
// return sysScaleFactorRangeService.queryPageList(bo, pageQuery);
// }
/**
* 导出因子分段列表
@ -67,38 +55,6 @@ public class SysScaleFactorRangeController extends BaseController {
return R.ok(sysScaleFactorRangeService.queryById(rangeId));
}
/**
* 新增因子分段
*/
@SaCheckPermission("scale:scaleFactorRange:add")
@Log(title = "因子分段", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody SysScaleFactorRangeBo bo) {
return toAjax(sysScaleFactorRangeService.insertByBo(bo));
}
/**
* 修改因子分段
*/
@SaCheckPermission("scale:scaleFactorRange:edit")
@Log(title = "因子分段", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysScaleFactorRangeBo bo) {
return toAjax(sysScaleFactorRangeService.updateByBo(bo));
}
/**
* 删除因子分段
*
* @param rangeIds 主键串
*/
@SaCheckPermission("scale:scaleFactorRange:remove")
@Log(title = "因子分段", businessType = BusinessType.DELETE)
@DeleteMapping("/{rangeIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] rangeIds) {
return toAjax(sysScaleFactorRangeService.deleteWithValidByIds(List.of(rangeIds), true));
}
}

View File

@ -1,106 +0,0 @@
package org.dromara.scale.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
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.SysScaleFormulaBo;
import org.dromara.scale.domain.vo.SysScaleFormulaVo;
import org.dromara.scale.service.ISysScaleFormulaService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 测评量公式
*
* @author jiangzhe
* @date 2024-03-29
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/scale/formula")
public class SysScaleFormulaController extends BaseController {
private final ISysScaleFormulaService sysScaleFormulaService;
/**
* 查询测评量公式列表
*/
@SaCheckPermission("scale:formula:pageList")
@GetMapping("/pageList")
public TableDataInfo<SysScaleFormulaVo> list(SysScaleFormulaBo bo, PageQuery pageQuery) {
return sysScaleFormulaService.queryPageList(bo, pageQuery);
}
/**
* 导出测评量公式列表
*/
@SaCheckPermission("scale:formula:export")
@Log(title = "测评量公式", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(SysScaleFormulaBo bo, HttpServletResponse response) {
List<SysScaleFormulaVo> list = sysScaleFormulaService.queryList(bo);
ExcelUtil.exportExcel(list, "测评量公式", SysScaleFormulaVo.class, response);
}
/**
* 获取测评量公式详细信息
*
* @param formulaId 主键
*/
@SaCheckPermission("scale:formula:query")
@GetMapping("/{formulaId}")
public R<SysScaleFormulaVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long formulaId) {
return R.ok(sysScaleFormulaService.queryById(formulaId));
}
/**
* 新增测评量公式
*/
@SaCheckPermission("scale:formula:add")
@Log(title = "测评量公式", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody SysScaleFormulaBo bo) {
return toAjax(sysScaleFormulaService.insertByBo(bo));
}
/**
* 修改测评量公式
*/
@SaCheckPermission("scale:formula:edit")
@Log(title = "测评量公式", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysScaleFormulaBo bo) {
return toAjax(sysScaleFormulaService.updateByBo(bo));
}
/**
* 删除测评量公式
*
* @param formulaIds 主键串
*/
@SaCheckPermission("scale:formula:remove")
@Log(title = "测评量公式", businessType = BusinessType.DELETE)
@DeleteMapping("/{formulaIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] formulaIds) {
return toAjax(sysScaleFormulaService.deleteWithValidByIds(List.of(formulaIds), true));
}
}

View File

@ -1,47 +0,0 @@
package org.dromara.scale.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.io.Serial;
/**
* 测评量公式对象 sys_scale_formula
*
* @author jiangzhe
* @date 2024-03-29
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_scale_formula")
public class SysScaleFormula extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 公式id
*/
@TableId(value = "formula_id")
private Long formulaId;
/**
* 公式名称
*/
private String formulaName;
/**
* 公式常量
*/
private BigDecimal formulaConstant;
/**
* 公式系数
*/
private BigDecimal formulaCoefficient;
}

View File

@ -52,12 +52,8 @@ public class SysScalePublish {
/**
* 部门分组id
*/
private Long deptId;
/**
* 应参评人数
*/
private Long partNum;
@AutoMapping(target = "deptIds", expression = "java(cn.hutool.core.util.StrUtil.split(source.getDeptIds(), \",\"))")
private String deptIds;
/**
* 截止日期

View File

@ -1,49 +0,0 @@
package org.dromara.scale.domain.bo;
import org.dromara.scale.domain.SysScaleFormula;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
/**
* 测评量公式业务对象 sys_scale_formula
*
* @author jiangzhe
* @date 2024-03-29
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = SysScaleFormula.class, reverseConvertGenerate = false)
public class SysScaleFormulaBo extends BaseEntity {
/**
* 公式id
*/
@NotNull(message = "公式id不能为空", groups = { EditGroup.class })
private Long formulaId;
/**
* 公式名称
*/
@NotBlank(message = "公式名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String formulaName;
/**
* 公式常量
*/
@NotNull(message = "公式常量不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal formulaConstant;
/**
* 公式系数
*/
@NotNull(message = "公式系数不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal formulaCoefficient;
}

View File

@ -48,17 +48,9 @@ public class SysScalePublishBo {
@NotBlank(message = "场次名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String sessionName;
/**
* 部门分组id
*/
@NotNull(message = "年级分组id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long deptId;
/**
* 应参评人数
*/
// @NotNull(message = "应参评人数不能为空", groups = { AddGroup.class, EditGroup.class })
private Long partNum;
@NotEmpty(message = "分组id以逗号隔开不能为空", groups = { AddGroup.class, EditGroup.class })
@AutoMapping(target = "deptIds", expression = "java(java.lang.String.join(\",\", source.getDeptIds()))")
private List<String> deptIds;
/**
* 截止日期

View File

@ -1,5 +1,6 @@
package org.dromara.scale.domain.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serial;
@ -23,5 +24,13 @@ public class StatisticNumVo implements Serializable {
private int value;
private int spareValue;
@JsonIgnore
private Long deptId;
@JsonIgnore
private String deptName;
@JsonIgnore
private Long parentId;
@JsonIgnore
private String parentName;
}

View File

@ -1,5 +1,6 @@
package org.dromara.scale.domain.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serial;
@ -18,11 +19,19 @@ public class StatisticWarnVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
private String deptName;
private String name;
private Integer noneNum;
private Integer lowNum;
private Integer middleNum;
private Integer highNum;
private Integer majorNum;
@JsonIgnore
private Long deptId;
@JsonIgnore
private String deptName;
@JsonIgnore
private Long parentId;
@JsonIgnore
private String parentName;
}

View File

@ -1,57 +0,0 @@
package org.dromara.scale.domain.vo;
import java.math.BigDecimal;
import org.dromara.scale.domain.SysScaleFormula;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 测评量公式视图对象 sys_scale_formula
*
* @author jiangzhe
* @date 2024-03-29
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = SysScaleFormula.class)
public class SysScaleFormulaVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 公式id
*/
@ExcelProperty(value = "公式id")
private Long formulaId;
/**
* 公式名称
*/
@ExcelProperty(value = "公式名称")
private String formulaName;
/**
* 公式常量
*/
@ExcelProperty(value = "公式常量")
private BigDecimal formulaConstant;
/**
* 公式系数
*/
@ExcelProperty(value = "公式系数")
private BigDecimal formulaCoefficient;
}

View File

@ -48,16 +48,10 @@ public class SysScalePublishVo implements Serializable {
private String sessionName;
/**
* 部门分组id
* 分组id以逗号隔开
*/
@ExcelProperty(value = "部门分组id")
private Long deptId;
/**
* 应参评人数
*/
@ExcelProperty(value = "应参评人数")
private Long partNum;
private List<String> deptIds;
/**
* 截止日期

View File

@ -1,17 +0,0 @@
package org.dromara.scale.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.dromara.scale.domain.SysScaleFormula;
import org.dromara.scale.domain.vo.SysScaleFormulaVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 测评量公式Mapper接口
*
* @author jiangzhe
* @date 2024-03-29
*/
@Mapper
public interface SysScaleFormulaMapper extends BaseMapperPlus<SysScaleFormula, SysScaleFormulaVo> {
}

View File

@ -20,6 +20,8 @@ public interface SysScalePublishMapper extends BaseMapperPlus<SysScalePublish, S
List<EvaluationVo> selectEvaluationVoList(@Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId, @Param("deptId") Long deptId);
String selectDeptNameByBatchNo(Long batchNo);
List<String> selectDeptIdsInUse();
SysScalePublishVo selectUsePublishVoByDeptId(Long deptId);
}

View File

@ -2,8 +2,8 @@ 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.SysScalePublish;
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;
@ -32,7 +32,7 @@ public interface ISysEvaluationRecordService {
List<SysEvaluationRecordVo> queryList(SysEvaluationRecordBo bo);
void insertBathByPublish(SysScalePublishBo bo);
void insertBathByPublish(SysScalePublish add);

View File

@ -1,12 +1,8 @@
package org.dromara.scale.service;
import org.dromara.scale.domain.SysScaleFactorRange;
import org.dromara.scale.domain.vo.SysScaleFactorRangeVo;
import org.dromara.scale.domain.bo.SysScaleFactorRangeBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.scale.domain.vo.SysScaleFactorRangeVo;
import java.util.Collection;
import java.util.List;
/**
@ -22,28 +18,10 @@ public interface ISysScaleFactorRangeService {
*/
SysScaleFactorRangeVo queryById(Long rangeId);
/**
* 查询因子分段列表
*/
TableDataInfo<SysScaleFactorRangeVo> queryPageList(SysScaleFactorRangeBo bo, PageQuery pageQuery);
/**
* 查询因子分段列表
*/
List<SysScaleFactorRangeVo> queryList(SysScaleFactorRangeBo bo);
/**
* 新增因子分段
*/
Boolean insertByBo(SysScaleFactorRangeBo bo);
/**
* 修改因子分段
*/
Boolean updateByBo(SysScaleFactorRangeBo bo);
/**
* 校验并批量删除因子分段信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -1,49 +0,0 @@
package org.dromara.scale.service;
import org.dromara.scale.domain.SysScaleFormula;
import org.dromara.scale.domain.vo.SysScaleFormulaVo;
import org.dromara.scale.domain.bo.SysScaleFormulaBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 测评量公式Service接口
*
* @author jiangzhe
* @date 2024-03-29
*/
public interface ISysScaleFormulaService {
/**
* 查询测评量公式
*/
SysScaleFormulaVo queryById(Long formulaId);
/**
* 查询测评量公式列表
*/
TableDataInfo<SysScaleFormulaVo> queryPageList(SysScaleFormulaBo bo, PageQuery pageQuery);
/**
* 查询测评量公式列表
*/
List<SysScaleFormulaVo> queryList(SysScaleFormulaBo bo);
/**
* 新增测评量公式
*/
Boolean insertByBo(SysScaleFormulaBo bo);
/**
* 修改测评量公式
*/
Boolean updateByBo(SysScaleFormulaBo bo);
/**
* 校验并批量删除测评量公式信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -5,7 +5,6 @@ import org.dromara.scale.domain.bo.BaseQueryBo;
import org.dromara.scale.domain.vo.StatisticNumVo;
import org.dromara.scale.domain.vo.StatisticWarnVo;
import org.dromara.scale.mapper.StatisticMapper;
import org.dromara.scale.mapper.SysScalePublishMapper;
import org.dromara.scale.service.IStatisticService;
import org.springframework.stereotype.Service;
@ -21,13 +20,10 @@ import java.util.List;
@RequiredArgsConstructor
@Service
public class StatisticService implements IStatisticService {
public class StatisticServiceImpl implements IStatisticService {
private final StatisticMapper statisticMapper;
private final SysScalePublishMapper publishMapper;
@Override
public StatisticNumVo getComplete4All(BaseQueryBo query) {
Long batchNo = query.getBatchNo();
@ -35,9 +31,9 @@ public class StatisticService implements IStatisticService {
List<StatisticNumVo> list = statisticMapper.selectCompleteAvaluation(batchNo, scaleId);
int complete = list.stream().mapToInt(StatisticNumVo::getValue).sum();
int uncompleted = list.stream().mapToInt(StatisticNumVo::getSpareValue).sum();
String deptName = publishMapper.selectDeptNameByBatchNo(batchNo);
StatisticNumVo data = new StatisticNumVo();
data.setName(deptName);
//data.setName(deptName);
data.setValue(complete);
data.setSpareValue(uncompleted);
return data;
@ -60,9 +56,9 @@ public class StatisticService implements IStatisticService {
int middleNum = list.stream().mapToInt(StatisticWarnVo::getMiddleNum).sum();
int highNum = list.stream().mapToInt(StatisticWarnVo::getHighNum).sum();
int majorNum = list.stream().mapToInt(StatisticWarnVo::getMajorNum).sum();
String deptName = publishMapper.selectDeptNameByBatchNo(batchNo);
StatisticWarnVo data = new StatisticWarnVo();
data.setDeptName(deptName);
//data.setDeptName(deptName);
data.setNoneNum(noneNum);
data.setLowNum(lowNum);
data.setMiddleNum(middleNum);

View File

@ -4,18 +4,18 @@ 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.core.utils.StringUtils;
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.SysScalePublish;
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;
@ -34,8 +34,6 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi
private final SysEvaluationRecordMapper baseMapper;
private final ISysDeptService deptService;
private final SysUserMapper userMapper;
/**
@ -76,15 +74,15 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi
@Async
@Override
public void insertBathByPublish(SysScalePublishBo bo) {
Long deptId = bo.getDeptId();
Long batchNo = bo.getBatchNo();
List<String> scaleIds = bo.getScaleIds();
//判断人数
boolean parent = deptService.isParent(deptId);
List<SysUser> sysUsers = userMapper.selectStudentListByDeptId(deptId, parent);
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 : scaleIds) {
for (String scaleId : scaleList) {
for (SysUser user : sysUsers) {
SysEvaluationRecord record = new SysEvaluationRecord();
record.setUserId(user.getUserId());

View File

@ -1,23 +1,18 @@
package org.dromara.scale.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.scale.domain.SysScaleFactorRange;
import org.dromara.scale.domain.bo.SysScaleFactorRangeBo;
import org.dromara.scale.domain.vo.SysScaleFactorRangeVo;
import org.dromara.scale.domain.SysScaleFactorRange;
import org.dromara.scale.mapper.SysScaleFactorRangeMapper;
import org.dromara.scale.service.ISysScaleFactorRangeService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 因子分段Service业务层处理
@ -39,15 +34,6 @@ public class SysScaleFactorRangeServiceImpl implements ISysScaleFactorRangeServi
return baseMapper.selectVoById(rangeId);
}
/**
* 查询因子分段列表
*/
@Override
public TableDataInfo<SysScaleFactorRangeVo> queryPageList(SysScaleFactorRangeBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<SysScaleFactorRange> lqw = buildQueryWrapper(bo);
Page<SysScaleFactorRangeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询因子分段列表
@ -71,45 +57,8 @@ public class SysScaleFactorRangeServiceImpl implements ISysScaleFactorRangeServi
return lqw;
}
/**
* 新增因子分段
*/
@Override
public Boolean insertByBo(SysScaleFactorRangeBo bo) {
SysScaleFactorRange add = MapstructUtils.convert(bo, SysScaleFactorRange.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setRangeId(add.getRangeId());
}
return flag;
}
/**
* 修改因子分段
*/
@Override
public Boolean updateByBo(SysScaleFactorRangeBo bo) {
SysScaleFactorRange update = MapstructUtils.convert(bo, SysScaleFactorRange.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(SysScaleFactorRange entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除因子分段
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@ -1,111 +0,0 @@
package org.dromara.scale.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.scale.domain.bo.SysScaleFormulaBo;
import org.dromara.scale.domain.vo.SysScaleFormulaVo;
import org.dromara.scale.domain.SysScaleFormula;
import org.dromara.scale.mapper.SysScaleFormulaMapper;
import org.dromara.scale.service.ISysScaleFormulaService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 测评量公式Service业务层处理
*
* @author jiangzhe
* @date 2024-03-29
*/
@RequiredArgsConstructor
@Service
public class SysScaleFormulaServiceImpl implements ISysScaleFormulaService {
private final SysScaleFormulaMapper baseMapper;
/**
* 查询测评量公式
*/
@Override
public SysScaleFormulaVo queryById(Long formulaId){
return baseMapper.selectVoById(formulaId);
}
/**
* 查询测评量公式列表
*/
@Override
public TableDataInfo<SysScaleFormulaVo> queryPageList(SysScaleFormulaBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<SysScaleFormula> lqw = buildQueryWrapper(bo);
Page<SysScaleFormulaVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询测评量公式列表
*/
@Override
public List<SysScaleFormulaVo> queryList(SysScaleFormulaBo bo) {
LambdaQueryWrapper<SysScaleFormula> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<SysScaleFormula> buildQueryWrapper(SysScaleFormulaBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<SysScaleFormula> lqw = Wrappers.lambdaQuery();
lqw.like(StringUtils.isNotBlank(bo.getFormulaName()), SysScaleFormula::getFormulaName, bo.getFormulaName());
lqw.eq(bo.getFormulaConstant() != null, SysScaleFormula::getFormulaConstant, bo.getFormulaConstant());
lqw.eq(bo.getFormulaCoefficient() != null, SysScaleFormula::getFormulaCoefficient, bo.getFormulaCoefficient());
return lqw;
}
/**
* 新增测评量公式
*/
@Override
public Boolean insertByBo(SysScaleFormulaBo bo) {
SysScaleFormula add = MapstructUtils.convert(bo, SysScaleFormula.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setFormulaId(add.getFormulaId());
}
return flag;
}
/**
* 修改测评量公式
*/
@Override
public Boolean updateByBo(SysScaleFormulaBo bo) {
SysScaleFormula update = MapstructUtils.convert(bo, SysScaleFormula.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(SysScaleFormula entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除测评量公式
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@ -15,7 +15,6 @@ import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.redis.utils.QueueUtils;
import org.dromara.scale.constant.StatusEnum;
import org.dromara.scale.domain.SysScalePublish;
import org.dromara.scale.domain.bo.BaseQueryBo;
import org.dromara.scale.domain.bo.SysScalePublishBo;
@ -26,7 +25,6 @@ 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.service.ISysDeptService;
import org.springframework.stereotype.Service;
import java.util.Collection;
@ -51,8 +49,6 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
private final SysScaleMapper scaleMapper;
private final ISysDeptService deptService;
private final ISysEvaluationRecordService evaluationRecordService;
/**
@ -88,8 +84,6 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
// lqw.eq(StringUtils.isNotBlank(bo.getScaleIds()), SysScalePublish::getScaleIds, bo.getScaleIds());
// lqw.eq(StringUtils.isNotBlank(bo.getScaleNames()), SysScalePublish::getScaleNames, bo.getScaleNames());
lqw.like(StringUtils.isNotBlank(bo.getSessionName()), SysScalePublish::getSessionName, bo.getSessionName());
lqw.eq(bo.getDeptId() != null, SysScalePublish::getDeptId, bo.getDeptId());
lqw.eq(bo.getPartNum() != null, SysScalePublish::getPartNum, bo.getPartNum());
lqw.eq(bo.getExpireTime() != null, SysScalePublish::getExpireTime, bo.getExpireTime());
lqw.eq(bo.getStatus() != null, SysScalePublish::getStatus, bo.getStatus());
lqw.eq(bo.getAllowQueryResult() != null, SysScalePublish::getAllowQueryResult, bo.getAllowQueryResult());
@ -132,7 +126,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
//加入延迟队列
QueueUtils.addDelayedQueueObject("scalePublish-delay-queue", add.getBatchNo(), l, TimeUnit.MILLISECONDS);
//预处理量测记录方便后续统计与查询
evaluationRecordService.insertBathByPublish(bo);
evaluationRecordService.insertBathByPublish(add);
return flag;
}
@ -151,12 +145,16 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
*/
private void validEntityBeforeSave(SysScalePublish entity) {
//TODO 做一些数据校验,如唯一约束
Long deptId = entity.getDeptId();
List<SysScalePublishVo> sysScalePublishVos = baseMapper.selectVoList(new LambdaQueryWrapper<SysScalePublish>()
.eq(SysScalePublish::getDeptId, deptId)
.eq(SysScalePublish::getStatus, StatusEnum.IN_USE.getValue()));
if (!ObjectUtil.isEmpty(sysScalePublishVos)) {
throw new ServiceException("此年级下已有发布");
String deptIds = entity.getDeptIds();
List<String> deptIdList = StringUtils.splitList(deptIds);
List<String> publishDeptIdList = baseMapper.selectDeptIdsInUse();
if (ObjectUtil.isNotEmpty(publishDeptIdList)) {
for (String publishDeptIds : publishDeptIdList) {
List<String> useList = StringUtils.splitList(publishDeptIds);
if (useList.stream().anyMatch(deptIdList::contains)) {
throw new ServiceException("所选年级下已有发布");
}
}
}
}

View File

@ -3,8 +3,6 @@ package org.dromara.scale.service.impl;
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;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.enums.UserType;
@ -24,7 +22,6 @@ import org.dromara.scale.service.ISysScaleFactorService;
import org.dromara.scale.service.ISysWarnRecordService;
import org.dromara.scale.service.IWebService;
import org.dromara.system.domain.SysOss;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.mapper.SysDeptMapper;
import org.dromara.system.mapper.SysOssMapper;
import org.springframework.stereotype.Service;
@ -82,32 +79,8 @@ public class WebServiceImpl implements IWebService {
if (!UserType.STUDENT.getName().equals(userType)) {
throw new ServiceException("只有学生账户才能测评");
}
SysScalePublishVo sysScalePublishVo = null;
if (deptId != null) {
//先查询直接用户组的发布
LambdaQueryWrapper<SysScalePublish> lqw = Wrappers.lambdaQuery();
lqw.eq(SysScalePublish::getDeptId, deptId);
lqw.eq(SysScalePublish::getStatus, StatusEnum.IN_USE.getValue());
sysScalePublishVo = publishMapper.selectVoOne(lqw);
//没有则查询上级用户组的发布
if (sysScalePublishVo == null) {
SysDeptVo sysDept = deptMapper.selectDeptById(deptId);
LambdaQueryWrapper<SysScalePublish> parentLqw = Wrappers.lambdaQuery();
parentLqw.eq(SysScalePublish::getDeptId, sysDept.getParentId());
parentLqw.eq(SysScalePublish::getStatus, StatusEnum.IN_USE.getValue());
sysScalePublishVo = publishMapper.selectVoOne(lqw);
}
}
//都没有则查针对全部的发布 暂时不考虑
// if (sysScalePublishVo == null) {
// LambdaQueryWrapper<SysScalePublish> 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();
}
SysScalePublishVo sysScalePublishVo = publishMapper.selectUsePublishVoByDeptId(deptId);
Long batchNo = sysScalePublishVo.getBatchNo();
List<String> scaleIds = sysScalePublishVo.getScaleIds();
//todo
@ -140,7 +113,6 @@ public class WebServiceImpl implements IWebService {
if (!UserType.STUDENT.getName().equals(userType)) {
throw new ServiceException("只有学生账户才能测评");
}
//LoginUser loginUser = getLoginUser();
SysEvaluationRecord evaluationRecord = recordMapper.selectById(recordId);
if (evaluationRecord == null) {
throw new ServiceException("未查询到需要测试的记录,请联系管理员");
@ -148,6 +120,7 @@ public class WebServiceImpl implements IWebService {
if (evaluationRecord.getStatus() == 1) {
throw new ServiceException("此量表已经答题完毕,请勿重复提交");
}
SysEvaluationRecord update = new SysEvaluationRecord();
update.setRecordId(recordId);
update.setCreateTime(new Date());
@ -163,20 +136,9 @@ public class WebServiceImpl implements IWebService {
if (!UserType.STUDENT.getName().equals(userType)) {
throw new ServiceException("只有学生账户才能测评");
}
boolean allowQueryResult = true;
Long scaleId = bo.getScaleId();
Map<String, List<SysScaleAnswerVo>> answerMapByQuestion = scaleAnswerService.getScaleAnswerMap(scaleId);
int keySize = answerMapByQuestion.keySet().size();
List<SysEvaluationAnswerBo> answerList = bo.getAnswerList();
if (ObjectUtil.isEmpty(answerList)) {
throw new ServiceException("请先填写答案,再提交");
}
int answerSize = answerList.size();
if (keySize != answerSize) {
throw new ServiceException("有题目未作选择,请检查后提交");
}
Long recordId = answerList.get(0).getRecordId();
List<SysEvaluationAnswerBo> answerList = bo.getAnswerList();
Long recordId = answerList.get(0).getRecordId();
SysEvaluationRecord sysEvaluationRecord = recordMapper.selectById(recordId);
if (ObjectUtil.isEmpty(sysEvaluationRecord)) {
throw new ServiceException("未能查到测量记录,请确认后再提交");
@ -184,6 +146,19 @@ public class WebServiceImpl implements IWebService {
if (sysEvaluationRecord.getStatus() == 0) {
throw new ServiceException("此量表暂未开始作答,请确认后再提交");
}
boolean allowQueryResult = true;
Long scaleId = bo.getScaleId();
Map<String, List<SysScaleAnswerVo>> answerMapByQuestion = scaleAnswerService.getScaleAnswerMap(scaleId);
int keySize = answerMapByQuestion.keySet().size();
if (ObjectUtil.isEmpty(answerList)) {
throw new ServiceException("请先填写答案,再提交");
}
int answerSize = answerList.size();
if (keySize != answerSize) {
throw new ServiceException("有题目未作选择,请检查后提交");
}
SysScalePublishVo scalePublishVo = recordMapper.selectPublishByUseRecord(recordId);
//查询考核结果
if (scalePublishVo.getAllowQueryResult() == 0) {
@ -191,7 +166,7 @@ public class WebServiceImpl implements IWebService {
}
List<SysEvaluationAnswer> answerAdd = MapstructUtils.convert(answerList, SysEvaluationAnswer.class);
evaluationAnswerMapper.insertBatch(answerAdd);
//计算
List<SysEvaluationConclusionVo> list = calculateEvaluationResult(scaleId, answerList);
List<SysEvaluationConclusion> conclusionAdd = MapstructUtils.convert(list, SysEvaluationConclusion.class);
evaluationConclusionMapper.insertBatch(conclusionAdd);
@ -203,7 +178,6 @@ public class WebServiceImpl implements IWebService {
riskLevel = ec.getSituation();
}
}
//判断风险等级是否为"高风险、重大风险"若是则形成预警记录
if (riskLevel.equals(SituationEnum.HIGH.getValue()) || riskLevel.equals(SituationEnum.MAJOR.getValue())) {
SysWarnRecord wre = new SysWarnRecord();
wre.setBatchNo(scalePublishVo.getBatchNo());

View File

@ -5,25 +5,33 @@
<mapper namespace="org.dromara.scale.mapper.StatisticMapper">
<select id="selectCompleteAvaluation" resultType="org.dromara.scale.domain.vo.StatisticNumVo">
select d.dept_name as `name`,
count(if(er.status = 1, 1, null)) as value,
count(if(er.status = 0, 1, null)) as spareValue
select d.dept_id,
d.dept_name,
d.parent_id,
parent.dept_name as `parentName`,
count(if(er.status = 1, 1, null)) as `value`,
count(if(er.status = 0, 1, null)) as `spareValue`
from sys_evaluation_record er
left join sys_dept d on d.dept_id = er.dept_id
left join sys_dept parent on parent.dept_id = d.parent_id
where er.batch_no = #{batchNo}
and er.scale_id = #{scaleId}
group by d.dept_id
</select>
<select id="selectStatisticWarn" resultType="org.dromara.scale.domain.vo.StatisticWarnVo">
select d.dept_name,
count(if(sfr.situation = 1, 1, null)) as noneNum,
count(if(sfr.situation = 2, 1, null)) as lowNum,
count(if(sfr.situation = 3, 1, null)) as middleNum,
count(if(sfr.situation = 4, 1, null)) as highNum,
count(if(sfr.situation = 5, 1, null)) as majorNum
select d.dept_id,
d.dept_name,
d.parent_id,
parent.dept_name as `parentName`,
count(if(sfr.situation = 1, 1, null)) as `noneNum`,
count(if(sfr.situation = 2, 1, null)) as `lowNum`,
count(if(sfr.situation = 3, 1, null)) as `middleNum`,
count(if(sfr.situation = 4, 1, null)) as `highNum`,
count(if(sfr.situation = 5, 1, null)) as `majorNum`
from sys_evaluation_record er
left join sys_dept d on d.dept_id = er.dept_id
left join sys_dept parent on parent.dept_id = d.parent_id
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.batch_no = #{batchNo}

View File

@ -1,7 +0,0 @@
<?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.SysScaleFormulaMapper">
</mapper>

View File

@ -24,10 +24,16 @@
order by d.dept_id
</select>
<select id="selectDeptNameByBatchNo" resultType="java.lang.String">
select d.dept_name
from sys_scale_publish sp
left join sys_dept d on d.dept_id = sp.dept_id
where sp.batch_no = #{batchNo}
<select id="selectDeptIdsInUse" resultType="java.lang.String">
select dept_ids
from sys_scale_publish
where status = 1
</select>
<select id="selectUsePublishVoByDeptId" resultType="org.dromara.scale.domain.vo.SysScalePublishVo">
select *
from sys_scale_publish
where status = 1
and find_in_set(#{deptId}, dept_ids)
</select>
</mapper>

View File

@ -119,6 +119,6 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
int updatePasswordBatchById(List<SysUserVo> list);
List<SysUser> selectStudentListByDeptId(@Param("deptId") Long deptId,@Param("isParent") boolean isParent);
List<SysUser> selectStudentListByDeptIds(String deptIds);
}

View File

@ -115,5 +115,4 @@ public interface ISysDeptService {
*/
int deleteDeptById(Long deptId);
boolean isParent(Long deptId);
}

View File

@ -4,10 +4,10 @@ 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;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.constant.UserConstants;
import org.dromara.common.core.exception.ServiceException;
@ -28,7 +28,6 @@ import org.dromara.system.mapper.SysDeptMapper;
import org.dromara.system.mapper.SysRoleMapper;
import org.dromara.system.mapper.SysUserMapper;
import org.dromara.system.service.ISysDeptService;
import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
@ -326,14 +325,5 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
return baseMapper.deleteById(deptId);
}
@Override
public boolean isParent(Long deptId) {
String ancestors = baseMapper.selectAncestorsById(deptId);
List<String> split = StrUtil.split(ancestors, StringUtils.SEPARATOR);
if (split.size() <= 2) {
return true;
} else {
return false;
}
}
}

View File

@ -183,24 +183,11 @@
</foreach>
</update>
<select id="selectStudentListByDeptId" resultType="org.dromara.system.domain.SysUser">
<select id="selectStudentListByDeptIds" resultType="org.dromara.system.domain.SysUser">
select u.*
from sys_dept d
left join sys_user u on u.dept_id = d.dept_id
<where>
u.user_type = 'student'
<choose>
<when test="isParent == true">
and d.parent_id = #{deptId}
</when>
<when test="isParent == false">
and d.dept_id = #{deptId}
</when>
<!-- 如果以上都不成立,则使用其他条件 -->
<otherwise>
and d.dept_id is null
</otherwise>
</choose>
</where>
where u.user_type = 'student'
and find_in_set(d.dept_id, #{deptIds})
</select>
</mapper>