diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ScalePublishController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ScalePublishController.java index ef735a7..1280d40 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ScalePublishController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ScalePublishController.java @@ -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 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 start(@RequestBody SysScalePublishBo bo) { + return toAjax(sysScalePublishService.start(bo)); + } + /** * 获取量表发布详细信息 * diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScalePublish.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScalePublish.java index 32732b4..d291b47 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScalePublish.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/SysScalePublish.java @@ -68,6 +68,11 @@ public class SysScalePublish { */ private Integer completeNum; + /** + * 开始日期 + */ + private Date startTime; + /** * 截止日期 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScalePublishBo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScalePublishBo.java index c50fa27..7158334 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScalePublishBo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/SysScalePublishBo.java @@ -51,6 +51,12 @@ public class SysScalePublishBo { private List userIds; private String userNames; + /** + * 开始日期 + */ + @NotNull(message = "开始日期不能为空", groups = {AddGroup.class, EditGroup.class}) + private Date startTime; + /** * 截止日期 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScalePublishVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScalePublishVo.java index a47d226..6670179 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScalePublishVo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/SysScalePublishVo.java @@ -50,12 +50,17 @@ public class SysScalePublishVo implements Serializable { * 测评总人数 */ private Integer totalNum; - + /** * 测评完成人数 */ private Integer completeNum; + /** + * 开始日期 + */ + private Date startTime; + /** * 截止日期 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScalePublishService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScalePublishService.java index ddbbc8f..6b845b7 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScalePublishService.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScalePublishService.java @@ -38,12 +38,8 @@ public interface ISysScalePublishService { */ Boolean insertByBo(SysScalePublishBo bo); - /** - * 修改量发布 - */ - Boolean updateByBo(SysScalePublishBo bo); - Boolean end(SysScalePublishBo bo); + Boolean start(SysScalePublishBo bo); /** * 删除量发布信息 diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java index 2448435..b98b148 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java @@ -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()) ? "男" : "女"); diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleFactorServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleFactorServiceImpl.java index 6cbbfd4..6d47232 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleFactorServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleFactorServiceImpl.java @@ -88,7 +88,15 @@ public class SysScaleFactorServiceImpl implements ISysScaleFactorService { @Override public List queryList(SysScaleFactorBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List 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 buildQueryWrapper(SysScaleFactorBo bo) { diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScalePublishServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScalePublishServiceImpl.java index f887986..acd5326 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScalePublishServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScalePublishServiceImpl.java @@ -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 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 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 + "%"); diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleServiceImpl.java index baea5c4..c978caa 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleServiceImpl.java @@ -78,13 +78,10 @@ public class SysScaleServiceImpl implements ISysScaleService { private LambdaQueryWrapper buildQueryWrapper(SysScaleBo bo) { LambdaQueryWrapper 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; } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/starter/ApplicationStarter.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/starter/ApplicationStarter.java index 4c0b055..67a06ce 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/starter/ApplicationStarter.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/starter/ApplicationStarter.java @@ -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); } } diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysWarnRecordMapper.xml b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysWarnRecordMapper.xml index bb6edf2..275afac 100644 --- a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysWarnRecordMapper.xml +++ b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysWarnRecordMapper.xml @@ -25,6 +25,7 @@ and DATE_FORMAT(wr.warn_time, '%Y-%m-%d') <= #{et.endTime} + order by wr.warn_time desc