新增预约发布功能;新增开启发布功能;列表倒叙

This commit is contained in:
cjw 2024-06-06 10:23:29 +08:00
parent 5d9dbb126e
commit 4caccd6af8
12 changed files with 91 additions and 48 deletions

View File

@ -10,7 +10,6 @@ import org.dromara.common.core.domain.R;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.file.FileUtils;
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;
@ -99,17 +98,6 @@ public class ScalePublishController extends BaseController {
return toAjax(sysScalePublishService.insertByBo(bo));
}
/**
* 修改量表发布
*/
@SaCheckPermission("scale:publish:edit")
@Log(title = "修改量表发布", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysScalePublishBo bo) {
return toAjax(sysScalePublishService.updateByBo(bo));
}
/**
* 中止记录
*
@ -121,6 +109,17 @@ public class ScalePublishController extends BaseController {
return toAjax(sysScalePublishService.end(bo));
}
/**
* 开始记录
*
*/
@SaCheckPermission("scale:publish:edit")
@Log(title = "中止量表发布", businessType = BusinessType.UPDATE)
@PostMapping("/start")
public R<Void> start(@RequestBody SysScalePublishBo bo) {
return toAjax(sysScalePublishService.start(bo));
}
/**
* 获取量表发布详细信息
*

View File

@ -68,6 +68,11 @@ public class SysScalePublish {
*/
private Integer completeNum;
/**
* 开始日期
*/
private Date startTime;
/**
* 截止日期
*/

View File

@ -51,6 +51,12 @@ public class SysScalePublishBo {
private List<String> userIds;
private String userNames;
/**
* 开始日期
*/
@NotNull(message = "开始日期不能为空", groups = {AddGroup.class, EditGroup.class})
private Date startTime;
/**
* 截止日期
*/

View File

@ -50,12 +50,17 @@ public class SysScalePublishVo implements Serializable {
* 测评总人数
*/
private Integer totalNum;
/**
* 测评完成人数
*/
private Integer completeNum;
/**
* 开始日期
*/
private Date startTime;
/**
* 截止日期
*/

View File

@ -38,12 +38,8 @@ public interface ISysScalePublishService {
*/
Boolean insertByBo(SysScalePublishBo bo);
/**
* 修改量发布
*/
Boolean updateByBo(SysScalePublishBo bo);
Boolean end(SysScalePublishBo bo);
Boolean start(SysScalePublishBo bo);
/**
* 删除量发布信息

View File

@ -121,7 +121,7 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi
wordData.setCreateTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, createTime));
wordData.setUseTime(DateUtils.getDatePoor4MinSec(createTime, updateTime));
SysUserVo user = userMapper.selectUserById(userId);
SysUserVo user = userMapper.selectVoById(userId);
wordData.setNickName(user.getNickName());
wordData.setDeptName(user.getDept().getDeptName());
wordData.setSex("0".equals(user.getSex()) ? "" : "");

View File

@ -88,7 +88,15 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService {
@Override
public List<SysScaleFactorVo> queryList(SysScaleFactorBo bo) {
LambdaQueryWrapper<SysScaleFactor> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
List<SysScaleFactorVo> sysScaleFactorVos = baseMapper.selectVoList(lqw);
for (SysScaleFactorVo record : sysScaleFactorVos) {
SysScale sysScale = scaleMapper.selectById(record.getScaleId());
record.setScaleTitle(sysScale.getScaleTitle());
//SysScaleFormula sysScaleFormula = scaleFormulaMapper.selectById(record.getFormulaId());
//record.setFormulaName(sysScaleFormula.getFormulaName());
}
return sysScaleFactorVos;
}
private LambdaQueryWrapper<SysScaleFactor> buildQueryWrapper(SysScaleFactorBo bo) {

View File

@ -130,11 +130,12 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
if (limit != -1 && i >= limit) {
throw new ServiceException("发布数量超出系统限制");
}
Date date = new Date();
LoginUser loginUser = getLoginUser();
SysScalePublish add = MapstructUtils.convert(bo, SysScalePublish.class);
add.setStatus(StatusEnum.IN_USE.getValue());
//add.setStatus(StatusEnum.IN_USE.getValue());
add.setCreateBy(loginUser.getUserId());
add.setCreateTime(new Date());
add.setCreateTime(date);
validEntityBeforeSave(add);
Integer publishType = add.getPublishType();
String scaleIds = add.getScaleIds();
@ -142,10 +143,16 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
String userIds = add.getUserIds();
//将时间校验移出来方便后面使用
Date expireTime = add.getExpireTime();
long l = DateUtils.differentMillisecond(new Date(), expireTime);
if (l <= 1000 * 3600 * 12) {
long end = DateUtils.differentMillisecond(date, expireTime);
if (end <= 1000 * 3600 * 12) {
throw new ServiceException("截止日期必须在六小时后");
}
Date startTime = add.getStartTime();
long start = DateUtils.differentMillisecond(startTime, date);
boolean startFlag = false;
if (start > 0) {
startFlag = true;
}
//发布次数
List<SysScaleVo> list = scaleMapper.findSysScaleByIds(scaleIds);
add.setScaleNames(list.stream().map(SysScaleVo::getScaleName).collect(Collectors.joining(StrUtil.COMMA)));
@ -181,7 +188,10 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
List<String> scaleList = bo.getScaleIds();
insertRecordBatch(add.getBatchNo(), scaleList, userList);
//加入延迟队列
QueueUtils.addDelayedQueueObject("scalePublish-delay-queue", add.getBatchNo(), l, TimeUnit.MILLISECONDS);
QueueUtils.addDelayedQueueObject("endPublish-delay-queue", add.getBatchNo(), end, TimeUnit.MILLISECONDS);
if (startFlag) {
QueueUtils.addDelayedQueueObject("startPublish-delay-queue", add.getBatchNo(), start, TimeUnit.MILLISECONDS);
}
return flag;
}
@ -202,15 +212,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
recordMapper.insertBatch(recordList, 100);
}
/**
* 修改量发布
*/
@Override
public Boolean updateByBo(SysScalePublishBo bo) {
SysScalePublish update = MapstructUtils.convert(bo, SysScalePublish.class);
//validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
@Override
public Boolean end(SysScalePublishBo bo) {
@ -220,6 +222,23 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
return baseMapper.updateById(update) > 0;
}
@Override
public Boolean start(SysScalePublishBo bo) {
SysScalePublish scalePublish = baseMapper.selectById(bo.getBatchNo());
Date expireTime = scalePublish.getExpireTime();
long l = DateUtils.differentMillisecond(new Date(), expireTime);
if (l <= 0) {
throw new ServiceException("此发布已经截止,无法再开启");
}
if (l <= 10 * 60 * 1000) {
throw new ServiceException("此发布距离截至日期不足十分钟,无法再开启");
}
SysScalePublish update = new SysScalePublish();
update.setBatchNo(bo.getBatchNo());
update.setStatus(StatusEnum.IN_USE.getValue());
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
@ -321,7 +340,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
wordData.setPersonNum(String.valueOf(personTotal));
int malePercent = processHalfUpPercent(maleNum, personTotal);
// int femalePercent = processHalfUpPercent(femaleNum, personTotal);
int femalePercent = 100-malePercent;
int femalePercent = 100 - malePercent;
wordData.setMaleNum(String.valueOf(maleNum));
wordData.setMalePercent(malePercent + "%");
wordData.setFemaleNum(String.valueOf(femaleNum));
@ -334,7 +353,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
int recordNum = completeNum + undoneNum;
int completePercent = processHalfUpPercent(completeNum, recordNum);
// int undonePercent = processHalfUpPercent(undoneNum, recordNum);
int undonePercent = 100-completePercent;
int undonePercent = 100 - completePercent;
wordData.setCompleteNum(String.valueOf(completeNum));
wordData.setCompletePercent(completePercent + "%");
@ -348,7 +367,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
int warnPercent = processHalfUpPercent(warnNum, completeNum);
int normalNum = completeNum - warnNum;
// int normalPercent = processHalfUpPercent(normalNum, completeNum);
int normalPercent = 100-warnPercent;
int normalPercent = 100 - warnPercent;
wordData.setRecordNum(String.valueOf(completeNum));
wordData.setWarnNum(String.valueOf(warnNum));
wordData.setWarnPercent(warnPercent + "%");

View File

@ -78,13 +78,10 @@ public class SysScaleServiceImpl implements ISysScaleService {
private LambdaQueryWrapper<SysScale> buildQueryWrapper(SysScaleBo bo) {
LambdaQueryWrapper<SysScale> lqw = Wrappers.lambdaQuery();
lqw.like(StringUtils.isNotBlank(bo.getScaleName()), SysScale::getScaleName, bo.getScaleName());
lqw.eq(StringUtils.isNotBlank(bo.getScaleCode()), SysScale::getScaleCode, bo.getScaleCode());
lqw.like(StringUtils.isNotBlank(bo.getScaleCode()), SysScale::getScaleCode, bo.getScaleCode());
lqw.eq(bo.getStatus() != null, SysScale::getStatus, bo.getStatus());
if (CollUtil.isNotEmpty(bo.getScaleType())) {
lqw.like(CollUtil.isNotEmpty(bo.getScaleType()), SysScale::getScaleType, bo.getScaleType().get(0));
}
lqw.like(CollUtil.isNotEmpty(bo.getScaleType()), SysScale::getScaleType, bo.getScaleType().get(0));
lqw.orderByDesc(SysScale::getCreateTime);
return lqw;
}

View File

@ -30,11 +30,18 @@ public class ApplicationStarter implements CommandLineRunner {
private void subscribeRedisDelayedQueue(){
// 项目初始化设置一次即可
QueueUtils.subscribeBlockingQueue("scalePublish-delay-queue", (Long batchNo) -> {
QueueUtils.subscribeBlockingQueue("endPublish-delay-queue", (Long batchNo) -> {
SysScalePublish publish = new SysScalePublish();
publish.setBatchNo(batchNo);
publish.setStatus(StatusEnum.DISABLED.getValue());
publishMapper.updateById(publish);
}, true);
QueueUtils.subscribeBlockingQueue("startPublish-delay-queue", (Long batchNo) -> {
//SysScalePublish scalePublish = publishMapper.selectById(batchNo);
SysScalePublish publish = new SysScalePublish();
publish.setBatchNo(batchNo);
publish.setStatus(StatusEnum.IN_USE.getValue());
publishMapper.updateById(publish);
}, true);
}
}

View File

@ -25,6 +25,7 @@
and DATE_FORMAT(wr.warn_time, '%Y-%m-%d') &lt;= #{et.endTime}
</if>
</where>
order by wr.warn_time desc
</select>
<select id="selectEvaluationRecordListByWarnId" resultType="org.dromara.scale.domain.vo.SysEvaluationRecordVo">

View File

@ -93,10 +93,10 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
* @param userId 用户ID
* @return 用户对象信息
*/
// @DataPermission({
// @DataColumn(key = "deptName", value = "d.dept_id"),
// @DataColumn(key = "userName", value = "u.user_id")
// })
@DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id"),
@DataColumn(key = "userName", value = "u.user_id")
})
SysUserVo selectUserById(Long userId);
@Override