fix:规则引擎、定时任务问题修复

V0.5.x
xiwa 2023-07-19 10:05:55 +08:00
parent 104c193951
commit c26b26ce1c
13 changed files with 63 additions and 52 deletions

View File

@ -9,6 +9,7 @@
*/ */
package cc.iotkit.data.service; package cc.iotkit.data.service;
import cc.iotkit.common.api.PageRequest;
import cc.iotkit.common.utils.JsonUtils; import cc.iotkit.common.utils.JsonUtils;
import cc.iotkit.common.utils.MapstructUtils; import cc.iotkit.common.utils.MapstructUtils;
import cc.iotkit.data.dao.IJPACommData; import cc.iotkit.data.dao.IJPACommData;
@ -16,6 +17,8 @@ import cc.iotkit.data.manager.IRuleInfoData;
import cc.iotkit.data.dao.RuleInfoRepository; import cc.iotkit.data.dao.RuleInfoRepository;
import cc.iotkit.data.model.TbRuleInfo; import cc.iotkit.data.model.TbRuleInfo;
import cc.iotkit.common.api.Paging; import cc.iotkit.common.api.Paging;
import cc.iotkit.data.model.TbTaskInfo;
import cc.iotkit.data.util.PageBuilder;
import cc.iotkit.model.rule.FilterConfig; import cc.iotkit.model.rule.FilterConfig;
import cc.iotkit.model.rule.RuleAction; import cc.iotkit.model.rule.RuleAction;
import cc.iotkit.model.rule.RuleInfo; import cc.iotkit.model.rule.RuleInfo;
@ -105,6 +108,12 @@ public class RuleInfoDataImpl implements IRuleInfoData, IJPACommData<RuleInfo, S
return null; return null;
} }
@Override
public Paging<RuleInfo> findAll(PageRequest<RuleInfo> pageRequest) {
Page<TbRuleInfo> ret = ruleInfoRepository.findAll(PageBuilder.toPageable(pageRequest));
return new Paging<>(ret.getTotalElements(), fromTb(ret.getContent()));
}
@Override @Override
public RuleInfo save(RuleInfo data) { public RuleInfo save(RuleInfo data) {
if (StringUtils.isBlank(data.getId())) { if (StringUtils.isBlank(data.getId())) {

View File

@ -9,13 +9,15 @@
*/ */
package cc.iotkit.data.service; package cc.iotkit.data.service;
import cc.iotkit.common.api.PageRequest;
import cc.iotkit.common.api.Paging;
import cc.iotkit.common.utils.JsonUtils; import cc.iotkit.common.utils.JsonUtils;
import cc.iotkit.common.utils.MapstructUtils; import cc.iotkit.common.utils.MapstructUtils;
import cc.iotkit.data.dao.IJPACommData; import cc.iotkit.data.dao.IJPACommData;
import cc.iotkit.data.manager.ITaskInfoData;
import cc.iotkit.data.dao.TaskInfoRepository; import cc.iotkit.data.dao.TaskInfoRepository;
import cc.iotkit.data.manager.ITaskInfoData;
import cc.iotkit.data.model.TbTaskInfo; import cc.iotkit.data.model.TbTaskInfo;
import cc.iotkit.common.api.Paging; import cc.iotkit.data.util.PageBuilder;
import cc.iotkit.model.rule.RuleAction; import cc.iotkit.model.rule.RuleAction;
import cc.iotkit.model.rule.TaskInfo; import cc.iotkit.model.rule.TaskInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -80,6 +82,15 @@ public class TaskInfoDataImpl implements ITaskInfoData, IJPACommData<TaskInfo, S
return to(taskInfoRepository.findById(s).orElse(null)); return to(taskInfoRepository.findById(s).orElse(null));
} }
@Override
public Paging<TaskInfo> findAll(PageRequest<TaskInfo> pageRequest) {
Page<TbTaskInfo> ret = taskInfoRepository.findAll(PageBuilder.toPageable(pageRequest));
return new Paging<>(ret.getTotalElements(),
ret.getContent().stream().map(this::to)
.collect(Collectors.toList())
);
}
@Override @Override
public TaskInfo save(TaskInfo data) { public TaskInfo save(TaskInfo data) {
if (StringUtils.isBlank(data.getId())) { if (StringUtils.isBlank(data.getId())) {

View File

@ -18,6 +18,6 @@ public interface RuleLogRepository extends ElasticsearchRepository<DocRuleLog, S
void deleteByRuleId(String ruleId); void deleteByRuleId(String ruleId);
Page<DocRuleLog> findByRuleId(String ruleId, Pageable pageable); Page<DocRuleLog> findByRuleIdOrderByLogAtDesc(String ruleId, Pageable pageable);
} }

View File

@ -18,6 +18,6 @@ public interface TaskLogRepository extends ElasticsearchRepository<DocTaskLog, S
void deleteByTaskId(String taskId); void deleteByTaskId(String taskId);
Page<DocTaskLog> findByTaskId(String taskId, Pageable pageable); Page<DocTaskLog> findByTaskIdOrderByLogAtDesc(String taskId, Pageable pageable);
} }

View File

@ -35,7 +35,7 @@ public class RuleLogDataImpl implements IRuleLogData {
@Override @Override
public Paging<RuleLog> findByRuleId(String ruleId, int page, int size) { public Paging<RuleLog> findByRuleId(String ruleId, int page, int size) {
Page<DocRuleLog> paged = ruleLogRepository.findByRuleId(ruleId, Pageable.ofSize(size).withPage(page - 1)); Page<DocRuleLog> paged = ruleLogRepository.findByRuleIdOrderByLogAtDesc(ruleId, Pageable.ofSize(size).withPage(page - 1));
return new Paging<>(paged.getTotalElements(), return new Paging<>(paged.getTotalElements(),
paged.getContent().stream().map(o -> MapstructUtils.convert(o, RuleLog.class)) paged.getContent().stream().map(o -> MapstructUtils.convert(o, RuleLog.class))
.collect(Collectors.toList())); .collect(Collectors.toList()));

View File

@ -35,7 +35,7 @@ public class TaskLogDataImpl implements ITaskLogData {
@Override @Override
public Paging<TaskLog> findByTaskId(String taskId, int page, int size) { public Paging<TaskLog> findByTaskId(String taskId, int page, int size) {
Page<DocTaskLog> paged = taskLogRepository.findByTaskId(taskId, Pageable.ofSize(size).withPage(page - 1)); Page<DocTaskLog> paged = taskLogRepository.findByTaskIdOrderByLogAtDesc(taskId, Pageable.ofSize(size).withPage(page - 1));
return new Paging<>(paged.getTotalElements(), return new Paging<>(paged.getTotalElements(),
paged.getContent().stream().map(o -> MapstructUtils.convert(o, TaskLog.class)) paged.getContent().stream().map(o -> MapstructUtils.convert(o, TaskLog.class))
.collect(Collectors.toList())); .collect(Collectors.toList()));

View File

@ -44,14 +44,14 @@ public class RuleEngineController {
@PostMapping("/list") @PostMapping("/list")
public Paging<RuleInfoVo> rules( public Paging<RuleInfoVo> rules(
@Validated @RequestBody @Validated @RequestBody
PageRequest<RuleInfoBo> request PageRequest<RuleInfoBo> request
) { ) {
return ruleEngineService.selectPageList(request); return ruleEngineService.selectPageList(request);
} }
@ApiOperation("保存规则") @ApiOperation("保存规则")
@PostMapping("/edit") @PostMapping("/edit")
public boolean saveRule(@RequestBody @Validated Request<RuleInfoBo> ruleInfoBo) { public boolean saveRule(@RequestBody @Validated Request<RuleInfoBo> ruleInfoBo) {
return ruleEngineService.saveRule(ruleInfoBo.getData()); return ruleEngineService.saveRule(ruleInfoBo.getData());
} }
@ -80,7 +80,7 @@ public class RuleEngineController {
@ApiOperation("规则日志") @ApiOperation("规则日志")
@PostMapping("/ruleLog/list") @PostMapping("/ruleLog/list")
public Paging<RuleLogVo> getRuleLogs( public Paging<RuleLogVo> getRuleLogs(
@Validated @RequestBody PageRequest<RuleLogBo> request @Validated @RequestBody PageRequest<RuleLogBo> request
) { ) {
return ruleEngineService.selectRuleLogPageList(request); return ruleEngineService.selectRuleLogPageList(request);
} }
@ -102,7 +102,7 @@ public class RuleEngineController {
@ApiOperation("保存定时任务") @ApiOperation("保存定时任务")
@PostMapping("/task/save") @PostMapping("/task/save")
public boolean saveTask(@Validated @RequestBody Request<TaskInfoBo> taskInfo) { public boolean saveTask(@Validated @RequestBody Request<TaskInfoBo> taskInfo) {
return ruleEngineService.saveTask(taskInfo.getData()); return ruleEngineService.saveTask(taskInfo.getData());
} }
@ApiOperation("停止定时任务") @ApiOperation("停止定时任务")
@ -122,7 +122,7 @@ public class RuleEngineController {
@PostMapping("/task/renew") @PostMapping("/task/renew")
public boolean renewTask(@Validated @RequestBody Request<String> request) { public boolean renewTask(@Validated @RequestBody Request<String> request) {
String taskId = request.getData(); String taskId = request.getData();
return ruleEngineService.renewTask(taskId); return ruleEngineService.renewTask(taskId);
} }
@ -140,13 +140,12 @@ public class RuleEngineController {
@Validated @RequestBody PageRequest<TaskLogBo> request @Validated @RequestBody PageRequest<TaskLogBo> request
) { ) {
return ruleEngineService.selectTaskLogPageList(request); return ruleEngineService.selectTaskLogPageList(request);
} }
@ApiOperation("清除定时任务日志") @ApiOperation("清除定时任务日志")
@PostMapping("/taskLogs/clear") @PostMapping("/taskLogs/clear")
public boolean clearTaskLogs( @Validated @RequestBody Request<String> request) { public boolean clearTaskLogs(@Validated @RequestBody Request<String> request) {
return ruleEngineService.clearTaskLogs(request.getData()); return ruleEngineService.clearTaskLogs(request.getData());
} }
} }

View File

@ -20,19 +20,15 @@ public class RuleLogBo extends BaseDto {
private Long time; private Long time;
@ApiModelProperty(value="规则id") @ApiModelProperty(value="规则id")
private String ruleId; private String ruleId;
@ApiModelProperty(value="状态") @ApiModelProperty(value="状态")
private String state1; private String state1;
@ApiModelProperty(value="内容") @ApiModelProperty(value="内容")
private String content; private String content;
@ApiModelProperty(value="是否成功") @ApiModelProperty(value="是否成功")
private Boolean success; private Boolean success;
} }

View File

@ -1,38 +1,36 @@
package cc.iotkit.manager.dto.vo.ruleinfo; package cc.iotkit.manager.dto.vo.ruleinfo;
import cc.iotkit.common.api.BaseDto;
import cc.iotkit.model.rule.RuleInfo; import cc.iotkit.model.rule.RuleInfo;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
@ApiModel(value = "RuleLogBo") import java.io.Serializable;
@ApiModel(value = "RuleLogVo")
@Data @Data
@EqualsAndHashCode(callSuper = true) @AutoMapper(target = RuleInfo.class)
@AutoMapper(target = RuleInfo.class, reverseConvertGenerate = false) public class RuleLogVo implements Serializable {
public class RuleLogVo extends BaseDto { private static final long serialVersionUID = -1L;
private static final long serialVersionUID = -1L; @ApiModelProperty(value = "时间")
private Long time;
@ApiModelProperty(value="时间") @ApiModelProperty(value = "规则id")
private Long time;
@ApiModelProperty(value="规则id") private String ruleId;
private String ruleId; @ApiModelProperty(value = "状态")
@ApiModelProperty(value="状态") private String state1;
private String state1; @ApiModelProperty(value = "内容")
@ApiModelProperty(value="内容") private String content;
private String content; @ApiModelProperty(value = "是否成功")
@ApiModelProperty(value="是否成功") private Boolean success;
private Boolean success; }
}

View File

@ -9,16 +9,19 @@
*/ */
package cc.iotkit.manager.dto.vo.taskinfo; package cc.iotkit.manager.dto.vo.taskinfo;
import lombok.AllArgsConstructor; import cc.iotkit.model.rule.TaskLog;
import lombok.Builder; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import io.swagger.annotations.ApiModel;
import lombok.NoArgsConstructor; import lombok.*;
import java.io.Serializable;
@ApiModel(value = "TaskLogVo")
@Data @Data
@NoArgsConstructor @AutoMapper(target = TaskLog.class)
@AllArgsConstructor public class TaskLogVo implements Serializable {
@Builder private static final long serialVersionUID = -1L;
public class TaskLogVo {
private String id; private String id;

View File

@ -257,9 +257,7 @@ public class RuleEngineServiceImpl implements IRuleEngineService {
@Override @Override
public Paging<TaskLogVo> selectTaskLogPageList(PageRequest<TaskLogBo> request) { public Paging<TaskLogVo> selectTaskLogPageList(PageRequest<TaskLogBo> request) {
TaskLog taskLog = request.getData().to(TaskLog.class); TaskLog taskLog = request.getData().to(TaskLog.class);
Paging<TaskLog> byTaskId = taskLogData.findByTaskId(taskLog.getTaskId(), request.getPageNum(), request.getPageSize()); Paging<TaskLog> byTaskId = taskLogData.findByTaskId(taskLog.getTaskId(), request.getPageNum(), request.getPageSize());
return byTaskId.to(TaskLogVo.class); return byTaskId.to(TaskLogVo.class);
} }

View File

@ -55,7 +55,7 @@ public class TaskManager implements ApplicationContextAware {
int idx = 1; int idx = 1;
while (true) { while (true) {
PageRequest<TaskInfo> pageRequest = new PageRequest<>(); PageRequest<TaskInfo> pageRequest = new PageRequest<>();
pageRequest.setPageNum(idx+=1); pageRequest.setPageNum(idx);
pageRequest.setPageSize(100); pageRequest.setPageSize(100);
Paging<TaskInfo> all = taskInfoData.findAll(pageRequest); Paging<TaskInfo> all = taskInfoData.findAll(pageRequest);
List<TaskInfo> tasks = all.getRows(); List<TaskInfo> tasks = all.getRows();
@ -134,7 +134,7 @@ public class TaskManager implements ApplicationContextAware {
TriggerKey triggerKey = new TriggerKey(task.getId(), task.getUid()); TriggerKey triggerKey = new TriggerKey(task.getId(), task.getUid());
Trigger oldTrigger = getScheduler().getTrigger(triggerKey); Trigger oldTrigger = getScheduler().getTrigger(triggerKey);
if (oldTrigger == null) { if (oldTrigger == null) {
log.warn("task isn't exists,to add"); log.warn("saveTask:trigger does not exist");
addTask(task); addTask(task);
return; return;
} }
@ -147,9 +147,6 @@ public class TaskManager implements ApplicationContextAware {
} }
public void renewTask(TaskInfo task) throws SchedulerException { public void renewTask(TaskInfo task) throws SchedulerException {
if (!TaskInfo.TYPE_DELAY.equals(task.getType())) {
throw new BizException(ErrCode.TASK_NOT_SUPPORT_RENEW);
}
saveTask(task); saveTask(task);
} }

BIN
iot-starter/.DS_Store vendored Normal file

Binary file not shown.