diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/controller/ApplyController.java b/ruoyi-business/src/main/java/com/ruoyi/business/controller/ApplyController.java index 0942c34..5ba5797 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/controller/ApplyController.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/controller/ApplyController.java @@ -57,7 +57,7 @@ public class ApplyController extends BaseController { @ApiOperation(value = "查询所有应用列表", httpMethod = "GET", response = Apply.class) @GetMapping("/listAll") public AjaxResult listAll(Apply apply) { - List list = applyService.list(apply); + List list = applyService.listAll(apply); return AjaxResult.success(list); } diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/domain/Apply.java b/ruoyi-business/src/main/java/com/ruoyi/business/domain/Apply.java index fbcb750..a244d6e 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/domain/Apply.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/domain/Apply.java @@ -80,6 +80,10 @@ public class Apply extends BaseEntity @Excel(name = "是否支持应用参数") @ApiModelProperty(name="supportParam",value = "是否支持应用参数") private Integer supportParam; + /** 应用参数 */ + @Excel(name = "应用参数") + @ApiModelProperty(name="param",value = "应用参数") + private String param; /** icon图下载地址 */ @Excel(name = "icon图下载地址") @ApiModelProperty(name="icon",value = "icon图下载地址") diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/domain/ApplyPlan.java b/ruoyi-business/src/main/java/com/ruoyi/business/domain/ApplyPlan.java index c1ff591..3309ab7 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/domain/ApplyPlan.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/domain/ApplyPlan.java @@ -74,6 +74,11 @@ public class ApplyPlan extends BaseEntity @ApiModelProperty(name="appType",value = "应用类型枚举") private String appType; + /** 是否支持应用参数 */ + @Excel(name = "是否支持应用参数") + @ApiModelProperty(name="supportParam",value = "是否支持应用参数") + private Integer supportParam; + /** 计划参数 */ @Excel(name = "计划参数") @ApiModelProperty(name="planParams",value = "计划参数") diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/AddApplyPlanBO.java b/ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/AddApplyPlanBO.java index 1ad8b42..301be5f 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/AddApplyPlanBO.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/AddApplyPlanBO.java @@ -77,6 +77,11 @@ public class AddApplyPlanBO extends BaseEntity @ApiModelProperty(name="manualTime",value = "预计人工耗时") private String manualTime; + /** 是否支持应用参数 */ + @Excel(name = "是否支持应用参数") + @ApiModelProperty(name="supportParam",value = "是否支持应用参数") + private Integer supportParam; + /** 参数 */ @Excel(name = "参数") @ApiModelProperty(name="planParams",value = "参数") diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/ApplyStartBO.java b/ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/ApplyStartBO.java index bad9fba..69294c3 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/ApplyStartBO.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/ApplyStartBO.java @@ -89,7 +89,7 @@ public class ApplyStartBO { * 应用运行参数 */ @Data - private static class RobotParam { + public static class RobotParam { // 参数名 private String name; // 参数值 diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/mapper/ApplyMapper.java b/ruoyi-business/src/main/java/com/ruoyi/business/mapper/ApplyMapper.java index c0af6f6..9047a80 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/mapper/ApplyMapper.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/mapper/ApplyMapper.java @@ -21,4 +21,12 @@ public interface ApplyMapper extends BaseMapper */ List selectApplyList(Apply apply); + /** + * 查询所有应用信息列表 + * + * @param apply 应用信息管理 + * @return 应用信息管理集合 + */ + List selectApplyAllList(Apply apply); + } diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/service/IApplyPlanService.java b/ruoyi-business/src/main/java/com/ruoyi/business/service/IApplyPlanService.java index c3bb19f..5ca204c 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/service/IApplyPlanService.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/service/IApplyPlanService.java @@ -30,6 +30,12 @@ public interface IApplyPlanService extends IService { */ boolean execPlan(ApplyStartBO applyStartBO) throws IllegalAccessException; + /** + * 定时查询指定时间执行的数据 + * @return + */ + boolean runAppBySetTime() throws IllegalAccessException; + /** * 创建计划 * @param addApplyPlanBO diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/service/IApplyService.java b/ruoyi-business/src/main/java/com/ruoyi/business/service/IApplyService.java index 6f169a8..e4f0929 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/service/IApplyService.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/service/IApplyService.java @@ -41,4 +41,12 @@ public interface IApplyService extends IService */ List list(Apply apply); + /** + * 查询所有应用信息列表 + * + * @param apply 应用信息管理 + * @return 应用信息管理集合 + */ + List listAll(Apply apply); + } diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/ApplyPlanServiceImpl.java b/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/ApplyPlanServiceImpl.java index 6165444..6444c59 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/ApplyPlanServiceImpl.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/ApplyPlanServiceImpl.java @@ -4,6 +4,8 @@ import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; import com.ruoyi.business.domain.Apply; import com.ruoyi.business.domain.Rebot; import com.ruoyi.business.domain.bo.*; @@ -18,6 +20,7 @@ import com.ruoyi.common.enums.ExcTypeStatus; import com.ruoyi.common.enums.PlanRunStatus; import com.ruoyi.common.enums.RebotStatus; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -41,6 +44,66 @@ public class ApplyPlanServiceImpl extends ServiceImpl listRebotVos = YinDaoHttpUtils.listRebot(listRebotBO); + if (listRebotVos.isEmpty()) { + log.error("暂无空闲机器人"); + // 刷新机器人数据 +// rebotService.syn(new Rebot()); + return false; + } + List applyPlanList = this.lambdaQuery().eq(ApplyPlan::getExcType, ExcTypeStatus.TWO.getKey()).isNull(ApplyPlan::getTaskUuid).orderByAsc(ApplyPlan::getExcTime).list(); + listRebotVos.forEach(rebot -> { + applyPlanList.forEach(e -> { + if (e.getExcTime().getTime() <= System.currentTimeMillis() && PlanRunStatus.AWAIT_CREATE.getKey().equals(e.getTaskStatus())) { + ApplyStartBO applyStartBO = new ApplyStartBO(); + applyStartBO.setRobotUuid(e.getAppId()); + applyStartBO.setAccountName(rebot.getRobotClientName()); + applyStartBO.setManualTime(e.getManualTime()); + //high 高 middle 中 low 低 + applyStartBO.setPriority("high"); + String planParams = e.getPlanParams(); + if(StringUtils.isNotEmpty(planParams)){ + JSONArray jsonArray = JSON.parseArray(planParams); + // 直接转换成List + List list = jsonArray.toJavaList(ApplyStartBO.RobotParam.class); + applyStartBO.setPlanParamsList(list); + } + try { + JobStartVO jobStartVO = YinDaoHttpUtils.appStart(applyStartBO); + ApplyPlan applyPlan = new ApplyPlan(); + applyPlan.setId(e.getId()); + applyPlan.setUpdateBy("-1"); + applyPlan.setUpdateTime(new Date()); + applyPlan.setTaskUuid(jobStartVO.getJobUuid()); + applyPlan.setTaskStatus(PlanRunStatus.CREATED.getKey()); + this.updateById(applyPlan); + Rebot updateRebot = new Rebot(); + updateRebot.setStatus(RebotStatus.RUNNING.getKey()); + rebotService.lambdaUpdate().eq(Rebot::getRobotClientName, rebot.getRobotClientName()).update(updateRebot); + } catch (IllegalAccessException ex) { + throw new RuntimeException(ex); + } + } + }); + }); + + return false; + } + /** * 获取应用执行结果 * @@ -166,6 +229,13 @@ public class ApplyPlanServiceImpl extends ServiceImpl list = jsonArray.toJavaList(ApplyStartBO.RobotParam.class); + applyStartBO.setPlanParamsList(list); + } JobStartVO jobStartVO = YinDaoHttpUtils.appStart(applyStartBO); ApplyPlan updateApplyPlan = new ApplyPlan(); @@ -182,11 +252,11 @@ public class ApplyPlanServiceImpl extends ServiceImpl 0; } + @Override @Transactional public boolean save(AddApplyPlanBO addApplyPlanBO) { @@ -204,6 +274,10 @@ public class ApplyPlanServiceImpl extends ServiceImpl implements public List list(Apply apply) { return baseMapper.selectApplyList(apply); } + + /** + * 查询所有应用信息列表 + * + * @param apply 应用信息管理 + * @return 应用信息管理 + */ + @Override + @DataScope(deptAlias = "apply") + public List listAll(Apply apply) { + return baseMapper.selectApplyAllList(apply); + } } diff --git a/ruoyi-business/src/main/resources/mapper/business/ApplyMapper.xml b/ruoyi-business/src/main/resources/mapper/business/ApplyMapper.xml index 165e5f8..84b1305 100644 --- a/ruoyi-business/src/main/resources/mapper/business/ApplyMapper.xml +++ b/ruoyi-business/src/main/resources/mapper/business/ApplyMapper.xml @@ -85,6 +85,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and owner_name like concat(#{ownerName}, '%') and owner_account like concat(#{ownerAccount}, '%') and app_name like concat(#{appName}, '%') + and version = #{version} and app_type_name like concat(#{appTypeName}, '%') and app_type = #{appType} and support_param = #{supportParam} @@ -94,4 +95,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${params.dataScope} + + + \ No newline at end of file diff --git a/ruoyi-business/src/main/resources/mapper/business/ApplyPlanMapper.xml b/ruoyi-business/src/main/resources/mapper/business/ApplyPlanMapper.xml index 887d2ed..2f87d70 100644 --- a/ruoyi-business/src/main/resources/mapper/business/ApplyPlanMapper.xml +++ b/ruoyi-business/src/main/resources/mapper/business/ApplyPlanMapper.xml @@ -21,6 +21,8 @@ + + @@ -73,6 +75,7 @@ plan.app_name, plan.app_id, plan.app_type, + plan.support_param, plan.plan_params, plan.wait_timeout, plan.priority, @@ -108,6 +111,7 @@ and robot_name like concat(#{robotName}, '%') and app_type_name like concat(#{appTypeName}, '%') + and support_param = #{supportParam} and app_name like concat(#{appName}, '%') and app_id = #{appId} and exc_type = #{excType} diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java index 3b77056..39e9682 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java @@ -41,6 +41,15 @@ public class RyTask { log.debug("执行顺序启动应用结束"); } + /** + * 指定时间执行一次 + */ + public void runAppBySetTime() throws IllegalAccessException { + log.debug("指定时间执行一次开始"); + applyPlanService.runAppBySetTime(); + log.debug("指定时间执行一次结束"); + } + /** * 获取应用执行结果 */ @@ -49,4 +58,9 @@ public class RyTask { applyPlanService.queryAppStartResult(); log.debug("更新应用执行结果结束"); } + + + + + }