需求介绍
增加对数据的订单监控,达到数据配置的要求时候发送短信
模型设计
create table MKT_WARING
(
mkt_waring_id NUMBER(16), --主键
waring_sql VARCHAR2(3000), --sql
waring_sql_param VARCHAR2(500), --sql参数
waring_cron VARCHAR2(200), --cron表达式
waring_status VARCHAR2(50), --状态
waring_sms_tempalte VARCHAR2(100), --短信模板
waring_sms_context VARCHAR2(3000), --短信内容
waring_phone VARCHAR2(50),--电话号码
waring_remark VARCHAR2(200),--备注
waring_type VARCHAR2(10),--类型
waring_expression VARCHAR2(3000) --表达式(正则最好)
)
代码部分
package com.sitech.waring.config;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.sitech.crmtpd.market.domain.comp.WaringConfigEntity;
import com.sitech.waring.scheduled.BaseJob;
import com.sitech.waring.scheduled.OrderOverStock;
import com.sitech.waring.scheduled.OrderSuccessRateLow;
import com.sitech.waring.scheduled.OrderTimeoutWaring;
import lombok.extern.slf4j.Slf4j;
import netscape.javascript.JSObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
/**
* @oauth: qiangSW
* @date: 2020/3/24 15:07
* @description: com.sitech.waring.config
* @doc:
*/
@Configuration
@Slf4j
public class WaringProjeactInit {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private OrderOverStock orderOverStock;
@Autowired
private OrderSuccessRateLow orderSuccessRateLow;
@Autowired
private OrderTimeoutWaring orderTimeoutWaring;
public static List<WaringConfigEntity> waringConfigEntities = Lists.newArrayList();
@Bean
public List<WaringConfigEntity> initWaringConfig() {
String sql = "select mkt_waring_id,waring_sql,waring_sql_param,waring_cron,waring_status,waring_sms_tempalte," +
"waring_sms_context,waring_phone,waring_expression from mkt_waring where waring_status = '0' and waring_type = '0'";
List<WaringConfigEntity> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WaringConfigEntity.class));
waringConfigEntities.addAll(query);
log.info("加载预警配置信息{}", JSONObject.toJSONString(query));
return query;
}
//项目初始化job
@Bean
public void addJobInfo() {
BaseJob.jobMap.put(orderOverStock.WARING_ID, orderOverStock);
BaseJob.jobMap.put(orderSuccessRateLow.WARING_ID, orderSuccessRateLow);
BaseJob.jobMap.put(orderTimeoutWaring.WARING_ID, orderTimeoutWaring);
}
}
package com.sitech.waring.scheduled;
import com.google.common.collect.Maps;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Map;
/**
* @oauth: qiangSW
* @date: 2020/4/5 9:57
* @description: com.sitech.waring.scheduled
* @doc:
*/
public interface BaseJob {
public Map<Long, Runnable> jobMap = Maps.newHashMap();
public void addJob();
}
package com.sitech.waring.scheduled;
import com.sitech.waring.Service.SendSmsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
/**
* @oauth: qiangSW
* @date: 2020/3/25 11:04
* @description: com.sitech.waring.scheduled
* @doc: 工单积压预警
*/
@Component
@Slf4j
public class OrderOverStock implements Runnable {
public static final Long WARING_ID = 2l;
@Autowired
private SendSmsService sendSmsService;
@Override