新增发布删除;其他优化

This commit is contained in:
cjw 2024-04-30 14:56:20 +08:00
parent 6a39aefb66
commit d8b0f3a9ee
10 changed files with 78 additions and 61 deletions

View File

@ -74,8 +74,7 @@ public class ScalePublishController extends BaseController {
*/
@SaCheckPermission("scale:publish:query")
@GetMapping("/{batchNo}")
public R<SysScalePublishVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long batchNo) {
public R<SysScalePublishVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long batchNo) {
return R.ok(sysScalePublishService.queryById(batchNo));
}
@ -114,5 +113,15 @@ public class ScalePublishController extends BaseController {
return toAjax(sysScalePublishService.end(bo));
}
/**
* 获取量表发布详细信息
*
* @param batchNo 主键
*/
@SaCheckPermission("scale:publish:delete")
@GetMapping("/{batchNo}")
public R<Void> delete(@NotNull(message = "主键不能为空") @PathVariable Long batchNo) {
return toAjax(sysScalePublishService.deleteById(batchNo));
}
}

View File

@ -10,7 +10,6 @@ import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.scale.domain.vo.SysScaleVo;
import java.io.Serial;
import java.math.BigDecimal;
/**
* 心理测评量对象 sys_scale
@ -80,12 +79,6 @@ public class SysScale extends BaseEntity {
*/
private Long cover;
/**
* 测评次数
*/
private Integer evalNums;
/**
* 发布次数
*/
@ -97,11 +90,6 @@ public class SysScale extends BaseEntity {
@AutoMapping(target = "scaleType", expression = "java(cn.hutool.core.util.StrUtil.split(source.getScaleType(), \",\"))")
private String scaleType;
/**
* 价格/ 单次
*/
private BigDecimal price;
/**
* 维度类型0:单项单维1:多项单维型2:多项多维型
*/

View File

@ -12,7 +12,6 @@ import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.scale.domain.SysScale;
import java.math.BigDecimal;
import java.util.List;
/**
@ -86,11 +85,6 @@ public class SysScaleBo extends BaseEntity {
@NotNull(message = "封面不能为空", groups = {AddGroup.class, EditGroup.class})
private Long cover;
/**
* 测评次数
*/
private Integer evalNums;
/**
* 量表类型对应字典项scale_type
*/
@ -98,12 +92,6 @@ public class SysScaleBo extends BaseEntity {
@AutoMapping(target = "scaleType", expression = "java(java.lang.String.join(\",\", source.getScaleType()))")
private List<String> scaleType;
/**
* 价格/ 单次
*/
@NotNull(message = "价格/ 单次不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal price;
/**
* 维度类型0:单项单维1:多项单维型2:多项多维型
*/

View File

@ -8,7 +8,6 @@ import org.dromara.common.excel.convert.ExcelDictConvert;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@ -90,11 +89,6 @@ public class SysScaleVo implements Serializable {
*/
private String coverUrl;
/**
* 测评次数
*/
private Integer evalNums;
/**
* 发布次数
*/
@ -111,11 +105,6 @@ public class SysScaleVo implements Serializable {
*/
private List<String> scaleTypeName;
/**
* 价格/ 单次
*/
private BigDecimal price;
/**
* 维度类型0:单项单维1:多项单维型2:多项多维型
*/

View File

@ -31,4 +31,8 @@ public interface SysEvaluationRecordMapper extends BaseMapperPlus<SysEvaluationR
List<WordEvaluationAnswerVo> selectAnswer4Word(Long recordId);
List<SysEvaluationRecordVo> selectUseByBatchNo(Long batchNo);
int deleteByBatchNo(Long batchNo);
}

View File

@ -22,6 +22,7 @@ public interface SysScalePublishMapper extends BaseMapperPlus<SysScalePublish, S
Page<EvaluationVo> selectEvaluationVoList(@Param("page") Page<EvaluationVo> page, @Param("batchNo") Long batchNo, @Param("scaleId") Long scaleId, @Param("deptId") Long deptId);
List<String> selectDeptIdsInUse();
List<String> selectUserIdsInUse();
List<EvaluationVo> selectUndoneEvaluationVoList(@Param("batchNo") Long batchNo);

View File

@ -7,7 +7,6 @@ import org.dromara.scale.domain.bo.SysScalePublishBo;
import org.dromara.scale.domain.vo.EvaluationVo;
import org.dromara.scale.domain.vo.SysScalePublishVo;
import java.util.Collection;
import java.util.List;
/**
@ -46,13 +45,14 @@ public interface ISysScalePublishService {
Boolean end(SysScalePublishBo bo);
/**
* 校验并批量删除量发布信息
* 删除量发布信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
Boolean deleteById(Long batchNo);
TableDataInfo<EvaluationVo> getEvaluationList(BaseQueryBo query, PageQuery pageQuery);
List<EvaluationVo> queryUndoneExportList(BaseQueryBo query);
}

View File

@ -20,6 +20,7 @@ import org.dromara.scale.domain.SysScalePublish;
import org.dromara.scale.domain.bo.BaseQueryBo;
import org.dromara.scale.domain.bo.SysScalePublishBo;
import org.dromara.scale.domain.vo.EvaluationVo;
import org.dromara.scale.domain.vo.SysEvaluationRecordVo;
import org.dromara.scale.domain.vo.SysScalePublishVo;
import org.dromara.scale.domain.vo.SysScaleVo;
import org.dromara.scale.mapper.SysEvaluationRecordMapper;
@ -33,7 +34,6 @@ import org.dromara.system.mapper.SysUserMapper;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
@ -121,7 +121,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
if (l <= 1000 * 3600 * 12) {
throw new ServiceException("截止日期必须在六小时后");
}
//发布次数
List<SysScaleVo> list = scaleMapper.findSysScaleByIds(scaleIds);
add.setScaleNames(list.stream().map(SysScaleVo::getScaleName).collect(Collectors.joining(StrUtil.COMMA)));
for (String scaleId : bo.getScaleIds()) {
@ -136,11 +136,13 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
//冗余名称
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)));
@ -180,7 +182,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
@Override
public Boolean updateByBo(SysScalePublishBo bo) {
SysScalePublish update = MapstructUtils.convert(bo, SysScalePublish.class);
validEntityBeforeSave(update);
//validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
@ -197,14 +199,29 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
*/
private void validEntityBeforeSave(SysScalePublish entity) {
//TODO 做一些数据校验,如唯一约束
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("所选年级下已有发布");
Integer publishType = entity.getPublishType();
if (publishType == 1) {
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("所选年级下已有普测发布");
}
}
}
} else {
String userIds = entity.getUserIds();
List<String> userIdList = StringUtils.splitList(userIds);
List<String> publishUserIdList = baseMapper.selectUserIdsInUse();
if (ObjectUtil.isNotEmpty(publishUserIdList)) {
for (String publishUserIds : publishUserIdList) {
List<String> useList = StringUtils.splitList(publishUserIds);
if (useList.stream().anyMatch(userIdList::contains)) {
throw new ServiceException("所选用户下已有个测发布");
}
}
}
}
@ -214,11 +231,13 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
* 批量删除量发布
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
public Boolean deleteById(Long batchNo) {
List<SysEvaluationRecordVo> sysEvaluationRecordVos = recordMapper.selectUseByBatchNo(batchNo);
if (ObjectUtil.isNotEmpty(sysEvaluationRecordVos)) {
throw new ServiceException("此发布下已有测评,无法删除");
}
return baseMapper.deleteBatchIds(ids) > 0;
recordMapper.deleteByBatchNo(batchNo);
return baseMapper.deleteById(batchNo) > 0;
}
/**

View File

@ -15,7 +15,7 @@
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})
and find_in_set(er.batch_no, #{batchNos})
</select>
<select id="selectPublishByUseRecord" resultType="org.dromara.scale.domain.vo.SysScalePublishVo">
@ -38,10 +38,23 @@
sa.answer_option,
sa.score
from sys_evaluation_answer ea
left join sys_scale_question sq on sq.question_id = ea.question_id
left join sys_scale_answer sa on sa.answer_id = ea.answer_id
left join sys_scale_factor sf on find_in_set(ea.question_id, sf.question_ids)
left join sys_scale_question sq on sq.question_id = ea.question_id
left join sys_scale_answer sa on sa.answer_id = ea.answer_id
left join sys_scale_factor sf on find_in_set(ea.question_id, sf.question_ids)
where ea.record_id = #{recordId}
order by sf.factor_name
</select>
<select id="selectUseByBatchNo" resultType="org.dromara.scale.domain.vo.SysEvaluationRecordVo">
select *
from sys_evaluation_record
where batch_no = #{batchNo}
and status = 1
</select>
<delete id="deleteByBatchNo">
delete
from sys_evaluation_record
where batch_no = #{batchNo}
</delete>
</mapper>

View File

@ -30,6 +30,12 @@
where status = 1
</select>
<select id="selectUserIdsInUse" resultType="java.lang.String">
select user_ids
from sys_scale_publish
where status = 1
</select>
<select id="selectUndoneEvaluationVoList" resultType="org.dromara.scale.domain.vo.EvaluationVo">
select d.dept_id,
d.dept_name,
@ -53,14 +59,14 @@
u.nick_name as `createName`
from sys_scale_publish sp
left join sys_user u on u.user_id = sp.create_by
where sp.batch_no= #{batchNo}
where sp.batch_no = #{batchNo}
</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)
and find_in_set(#{deptId}, dept_ids)
</select>
<select id="selectUseBatchNoByUserId" resultType="java.lang.String">