页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

(本文档仅供参考)

需求说明:

计划任务推送只在工作日执行,需要跳过周末、节假日。

实现思路:

因为法定节假日每年的具体日期存在差异,并且可能因为补班导致周末也是需要上班的,所以每年的工作日也是不固定的。

对于此需求,可以在数据库中维护一张日历表,并且有一列标记列,例如为0则代表节假日,为1则代表工作日,通过查询标记列的值,来判断是否要执行计划任务推送。

参考方案:

先创建一个日历表,手动维护节假日,例如下:ID为编号、date为日期、tag为标记列,来判断是否为工作日。

...

代码块
languagejs
importPackage(Packages.smartbi.sdk.service.datasource);
importClass(java.text.SimpleDateFormat);

//获取当前日期
var currDateStr = new SimpleDateFormat("yyyy-MM-dd").format(new Date());

//声明数据源id,(“这里填写需要的数据源id”)
var datasrcId="DS.mysqljiejiar"; 

//声明sql语句,将当前日期作为参数传递
var sql="select tag from calendar where date='"+currDateStr+"'"; 

var datasrcService =new DataSourceService(connector); //new一个DataSourceServic对象
var Data = datasrcService.executeNoCacheable(datasrcId,sql); //调用executeNoCacheable方法执行插入

//查到标记值,判断是否要执行计划任务
var a = Data.get(0, 0).getValue();
logger.debug("-----------------------------------"+a);
if(a==1){
    //这里写计划任务推送的主代码

}else{
    logger.debug("-----------------不执行------------------");
}

...