量表发布过期判断
This commit is contained in:
parent
a154caee2a
commit
0a27a4ca98
|
@ -125,7 +125,14 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||
* 计算相差天数
|
||||
*/
|
||||
public static int differentDaysByMillisecond(Date date1, Date date2) {
|
||||
return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)));
|
||||
return Math.abs((int) (differentMillisecond(date1, date2) / (1000 * 3600 * 24)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算相差毫秒数
|
||||
*/
|
||||
public static long differentMillisecond(Date date1, Date date2) {
|
||||
return date2.getTime() - date1.getTime();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.dromara.scale.controller.web;
|
|||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
|
@ -19,6 +20,8 @@ import org.springframework.web.bind.annotation.*;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.common.satoken.utils.LoginHelper.getLoginUser;
|
||||
|
||||
/**
|
||||
* <p>TODO<p>
|
||||
*
|
||||
|
|
|
@ -9,10 +9,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.DateUtils;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
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.SysScalePublishBo;
|
||||
|
@ -26,6 +28,7 @@ import org.springframework.stereotype.Service;
|
|||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.dromara.common.satoken.utils.LoginHelper.getLoginUser;
|
||||
|
@ -95,7 +98,12 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
|||
add.setCreateBy(loginUser.getUserId());
|
||||
add.setCreateTime(new Date());
|
||||
validEntityBeforeSave(add);
|
||||
|
||||
//将时间校验移出来,方便后面使用
|
||||
Date expireTime = add.getExpireTime();
|
||||
long l = DateUtils.differentMillisecond(new Date(), expireTime);
|
||||
if(l<=1000 * 3600 * 12){
|
||||
throw new ServiceException("截止日期必须在六小时后");
|
||||
}
|
||||
if (CollUtil.isNotEmpty(bo.getScaleIds())) {
|
||||
List<SysScaleVo> list = sysScaleMapper.findSysScaleByIds(StrUtil.join(StrUtil.COMMA, bo.getScaleIds()));
|
||||
add.setScaleNames(list.stream().map(SysScaleVo::getScaleName).collect(Collectors.joining(StrUtil.COMMA)));
|
||||
|
@ -113,7 +121,8 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
|||
if (flag) {
|
||||
bo.setBatchNo(add.getBatchNo());
|
||||
}
|
||||
|
||||
//加入延迟队列
|
||||
QueueUtils.addDelayedQueueObject("scalePublish-delay-queue", add.getBatchNo(), l, TimeUnit.MILLISECONDS);
|
||||
return flag;
|
||||
}
|
||||
|
||||
|
@ -134,9 +143,9 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
|
|||
//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(!ArrayUtil.isEmpty(sysScalePublishVos)){
|
||||
.eq(SysScalePublish::getDeptId, deptId)
|
||||
.eq(SysScalePublish::getStatus, StatusEnum.IN_USE.getValue()));
|
||||
if (!ArrayUtil.isEmpty(sysScalePublishVos)) {
|
||||
throw new ServiceException("此年级下已有发布");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
package org.dromara.scale.starter;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.redis.utils.QueueUtils;
|
||||
import org.dromara.scale.constant.StatusEnum;
|
||||
import org.dromara.scale.domain.SysScalePublish;
|
||||
import org.dromara.scale.mapper.SysScalePublishMapper;
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* <p>项目初始化执行的任务<p>
|
||||
*
|
||||
* @author cjw
|
||||
* @version V1.0.0
|
||||
* @date 2024/4/15 15:08
|
||||
*/
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
@Order(value = 99)
|
||||
public class ApplicationStarter implements CommandLineRunner {
|
||||
|
||||
private final SysScalePublishMapper publishMapper;
|
||||
|
||||
@Override
|
||||
public void run(String... strings){
|
||||
subscribeRedisDelayedQueue();
|
||||
}
|
||||
|
||||
private void subscribeRedisDelayedQueue(){
|
||||
// 项目初始化设置一次即可
|
||||
QueueUtils.subscribeBlockingQueue("scalePublish-delay-queue", (Long batchNo) -> {
|
||||
SysScalePublish publish = new SysScalePublish();
|
||||
publish.setBatchNo(batchNo);
|
||||
publish.setStatus(StatusEnum.DISABLED.getValue());
|
||||
publishMapper.updateById(publish);
|
||||
}, true);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue