新增预约发布功能;新增开启发布功能;列表倒叙
This commit is contained in:
parent
5d9dbb126e
commit
4caccd6af8
|
@ -10,7 +10,6 @@ import org.dromara.common.core.domain.R;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.utils.file.FileUtils;
|
import org.dromara.common.core.utils.file.FileUtils;
|
||||||
import org.dromara.common.core.validate.AddGroup;
|
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.excel.utils.ExcelUtil;
|
||||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
import org.dromara.common.log.annotation.Log;
|
import org.dromara.common.log.annotation.Log;
|
||||||
|
@ -99,17 +98,6 @@ public class ScalePublishController extends BaseController {
|
||||||
return toAjax(sysScalePublishService.insertByBo(bo));
|
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));
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取量表发布详细信息
|
* 获取量表发布详细信息
|
||||||
*
|
*
|
||||||
|
|
|
@ -68,6 +68,11 @@ public class SysScalePublish {
|
||||||
*/
|
*/
|
||||||
private Integer completeNum;
|
private Integer completeNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开始日期
|
||||||
|
*/
|
||||||
|
private Date startTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 截止日期
|
* 截止日期
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -51,6 +51,12 @@ public class SysScalePublishBo {
|
||||||
private List<String> userIds;
|
private List<String> userIds;
|
||||||
private String userNames;
|
private String userNames;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开始日期
|
||||||
|
*/
|
||||||
|
@NotNull(message = "开始日期不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
|
private Date startTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 截止日期
|
* 截止日期
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -56,6 +56,11 @@ public class SysScalePublishVo implements Serializable {
|
||||||
*/
|
*/
|
||||||
private Integer completeNum;
|
private Integer completeNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开始日期
|
||||||
|
*/
|
||||||
|
private Date startTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 截止日期
|
* 截止日期
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -38,12 +38,8 @@ public interface ISysScalePublishService {
|
||||||
*/
|
*/
|
||||||
Boolean insertByBo(SysScalePublishBo bo);
|
Boolean insertByBo(SysScalePublishBo bo);
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改量发布
|
|
||||||
*/
|
|
||||||
Boolean updateByBo(SysScalePublishBo bo);
|
|
||||||
|
|
||||||
Boolean end(SysScalePublishBo bo);
|
Boolean end(SysScalePublishBo bo);
|
||||||
|
Boolean start(SysScalePublishBo bo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除量发布信息
|
* 删除量发布信息
|
||||||
|
|
|
@ -121,7 +121,7 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi
|
||||||
wordData.setCreateTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, createTime));
|
wordData.setCreateTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, createTime));
|
||||||
wordData.setUseTime(DateUtils.getDatePoor4MinSec(createTime, updateTime));
|
wordData.setUseTime(DateUtils.getDatePoor4MinSec(createTime, updateTime));
|
||||||
|
|
||||||
SysUserVo user = userMapper.selectUserById(userId);
|
SysUserVo user = userMapper.selectVoById(userId);
|
||||||
wordData.setNickName(user.getNickName());
|
wordData.setNickName(user.getNickName());
|
||||||
wordData.setDeptName(user.getDept().getDeptName());
|
wordData.setDeptName(user.getDept().getDeptName());
|
||||||
wordData.setSex("0".equals(user.getSex()) ? "男" : "女");
|
wordData.setSex("0".equals(user.getSex()) ? "男" : "女");
|
||||||
|
|
|
@ -88,7 +88,15 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService {
|
||||||
@Override
|
@Override
|
||||||
public List<SysScaleFactorVo> queryList(SysScaleFactorBo bo) {
|
public List<SysScaleFactorVo> queryList(SysScaleFactorBo bo) {
|
||||||
LambdaQueryWrapper<SysScaleFactor> lqw = buildQueryWrapper(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) {
|
private LambdaQueryWrapper<SysScaleFactor> buildQueryWrapper(SysScaleFactorBo bo) {
|
||||||
|
|
|
@ -130,11 +130,12 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
||||||
if (limit != -1 && i >= limit) {
|
if (limit != -1 && i >= limit) {
|
||||||
throw new ServiceException("发布数量超出系统限制");
|
throw new ServiceException("发布数量超出系统限制");
|
||||||
}
|
}
|
||||||
|
Date date = new Date();
|
||||||
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.setStatus(StatusEnum.IN_USE.getValue());
|
||||||
add.setCreateBy(loginUser.getUserId());
|
add.setCreateBy(loginUser.getUserId());
|
||||||
add.setCreateTime(new Date());
|
add.setCreateTime(date);
|
||||||
validEntityBeforeSave(add);
|
validEntityBeforeSave(add);
|
||||||
Integer publishType = add.getPublishType();
|
Integer publishType = add.getPublishType();
|
||||||
String scaleIds = add.getScaleIds();
|
String scaleIds = add.getScaleIds();
|
||||||
|
@ -142,10 +143,16 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
||||||
String userIds = add.getUserIds();
|
String userIds = add.getUserIds();
|
||||||
//将时间校验移出来,方便后面使用
|
//将时间校验移出来,方便后面使用
|
||||||
Date expireTime = add.getExpireTime();
|
Date expireTime = add.getExpireTime();
|
||||||
long l = DateUtils.differentMillisecond(new Date(), expireTime);
|
long end = DateUtils.differentMillisecond(date, expireTime);
|
||||||
if (l <= 1000 * 3600 * 12) {
|
if (end <= 1000 * 3600 * 12) {
|
||||||
throw new ServiceException("截止日期必须在六小时后");
|
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);
|
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)));
|
||||||
|
@ -181,7 +188,10 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
||||||
List<String> scaleList = bo.getScaleIds();
|
List<String> scaleList = bo.getScaleIds();
|
||||||
insertRecordBatch(add.getBatchNo(), scaleList, userList);
|
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;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,15 +212,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
||||||
recordMapper.insertBatch(recordList, 100);
|
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
|
@Override
|
||||||
public Boolean end(SysScalePublishBo bo) {
|
public Boolean end(SysScalePublishBo bo) {
|
||||||
|
@ -220,6 +222,23 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
||||||
return baseMapper.updateById(update) > 0;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存前的数据校验
|
* 保存前的数据校验
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -78,13 +78,10 @@ public class SysScaleServiceImpl implements ISysScaleService {
|
||||||
private LambdaQueryWrapper<SysScale> buildQueryWrapper(SysScaleBo bo) {
|
private LambdaQueryWrapper<SysScale> buildQueryWrapper(SysScaleBo bo) {
|
||||||
LambdaQueryWrapper<SysScale> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<SysScale> lqw = Wrappers.lambdaQuery();
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getScaleName()), SysScale::getScaleName, bo.getScaleName());
|
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());
|
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;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,11 +30,18 @@ public class ApplicationStarter implements CommandLineRunner {
|
||||||
|
|
||||||
private void subscribeRedisDelayedQueue(){
|
private void subscribeRedisDelayedQueue(){
|
||||||
// 项目初始化设置一次即可
|
// 项目初始化设置一次即可
|
||||||
QueueUtils.subscribeBlockingQueue("scalePublish-delay-queue", (Long batchNo) -> {
|
QueueUtils.subscribeBlockingQueue("endPublish-delay-queue", (Long batchNo) -> {
|
||||||
SysScalePublish publish = new SysScalePublish();
|
SysScalePublish publish = new SysScalePublish();
|
||||||
publish.setBatchNo(batchNo);
|
publish.setBatchNo(batchNo);
|
||||||
publish.setStatus(StatusEnum.DISABLED.getValue());
|
publish.setStatus(StatusEnum.DISABLED.getValue());
|
||||||
publishMapper.updateById(publish);
|
publishMapper.updateById(publish);
|
||||||
}, true);
|
}, 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
and DATE_FORMAT(wr.warn_time, '%Y-%m-%d') <= #{et.endTime}
|
and DATE_FORMAT(wr.warn_time, '%Y-%m-%d') <= #{et.endTime}
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
|
order by wr.warn_time desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectEvaluationRecordListByWarnId" resultType="org.dromara.scale.domain.vo.SysEvaluationRecordVo">
|
<select id="selectEvaluationRecordListByWarnId" resultType="org.dromara.scale.domain.vo.SysEvaluationRecordVo">
|
||||||
|
|
|
@ -93,10 +93,10 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
|
||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
* @return 用户对象信息
|
* @return 用户对象信息
|
||||||
*/
|
*/
|
||||||
// @DataPermission({
|
@DataPermission({
|
||||||
// @DataColumn(key = "deptName", value = "d.dept_id"),
|
@DataColumn(key = "deptName", value = "d.dept_id"),
|
||||||
// @DataColumn(key = "userName", value = "u.user_id")
|
@DataColumn(key = "userName", value = "u.user_id")
|
||||||
// })
|
})
|
||||||
SysUserVo selectUserById(Long userId);
|
SysUserVo selectUserById(Long userId);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue