📄 sendinfoservice.java
字号:
* @return result(true:是,false:否)
*/
private boolean isOverThirtyMin(String orderId) {
boolean result = true;
try {
Object[] _object = new Object[1];
_object[0] = orderId;
StringBuffer sql = new StringBuffer();
sql
.append("select round(to_number(sysdate - t.accepttime) * 1440) time from tf_prodorder t where t.prodorderid = ?");
String time = dacClient.getStringFromSqlQuery(sql.toString(), _object);
if (Integer.parseInt(time) < 30) {
result = false;
}
} catch (Exception ex) {
FileLogger.getLogger().error("判断业务受理单是否是超过30分钟的超时单出错:" + ex.getMessage(), ex);
}
return result;
}
/**
* 发送短信提醒客户
*
* @return result(1:发送入日志都成功;2:发送成功,入日志失败;0:失败)
*/
private String sendInfo(int newOrderCnt, int overFiveMinCnt, int overThirtyMinCnt, String cityCode) {
String result = "0";
try {
Map infos = new Hashtable();
String[] phoNumber = getPhonumByCitycode(dacClient, cityCode);
if (phoNumber != null) {
infos.put("phoNumber1", phoNumber[0]);
infos.put("phoNumber2", phoNumber[1]);
if (overThirtyMinCnt > 0) {
if (phoNumber[0] != null && !phoNumber[0].equals("")) {
setOrderInfo(cityCode, infos);
result = toStaff(cityCode, infos);
}
if (phoNumber[1] != null && !phoNumber[1].equals("")) {
setOrderInfo(cityCode, infos);
result = toLeader(cityCode, infos);
}
} else {
if (newOrderCnt > 0 || overFiveMinCnt > 0) {
setOrderInfo(cityCode, infos);
if (phoNumber[0] != null && !phoNumber[0].equals("")) {
setOrderInfo(cityCode, infos);
result = toStaff(cityCode, infos);
}
}
}
}
} catch (Exception ex) {
FileLogger.getLogger().error("发送短信提醒客户出错:" + ex.getMessage(), ex);
}
return result;
}
/**
* 取某个地市发送提醒信息的电话号码(每个地市有两个电话号码)
*
* @return result(!=null:成功,null:失败)result[0]:初级电话号码,result[1]:高级级电话号码
*/
private String[] getPhonumByCitycode(DacClient dbClient, String cityCode) {
String result[] = null;
try {
CallingBean cb = new CallingBean();
DataTable dt = cb.getCallingListByCitycode(new DacClient(), cityCode, 1);
if (dt != null && dt.getRows().getCount() > 0) {
result = new String[2];
result[0] = dt.getRow(0).getString("PHONUMBER1");
result[1] = dt.getRow(0).getString("PHONUMBER2");
}
} catch (Exception ex) {
FileLogger.getLogger().error("取某个地市发送提醒信息的电话号码出错:" + ex.getMessage(), ex);
}
return result;
}
/**
* 发送短信提醒员工
*
* @return result(1:发送入日志都成功;2:发送成功,入日志失败;0:失败)
*/
private String toStaff(String cityCode, Map infos) {
String result = "0";
try {
if (infos != null) {
String phoNumber = (String) infos.get("phoNumber1");
if (phoNumber != null && !phoNumber.equals("")) {
String newOrderCnt = (String) infos.get("newOrderCnt");
String overFiveMinCnt = (String) infos.get("overFiveMinCnt");
String overThirtyMinCnt = (String) infos.get("overThirtyMinCnt");
String info = "您好,您所在的地市有";
if (Integer.parseInt(newOrderCnt) > 0) {
info = info + newOrderCnt + "张新业务受理单";
}
if (Integer.parseInt(overFiveMinCnt) > 0) {
info = info + "," + overFiveMinCnt + "张超时5分钟的业务受理单";
}
if (Integer.parseInt(overThirtyMinCnt) > 0) {
info = info + "," + overThirtyMinCnt + "张超时30分钟的业务受理单";
}
info = info + "在网上营业厅内部管理系统上等待处理。";
DacClient dc = new DacClient();
// int time = getSendtime(dc,phoNumber);
// if(time < 0 || time > 5) {
// //该号码没有发送过短信或者离上次发送短信时间超过了5分钟,就再次发送
result = SendSmsPwd(cityCode, phoNumber, info);
if (result.equals("1")) {
boolean b = addSendinfo(dc, phoNumber, "1", infos);
if (!b)
result = "2";
}
// }
}
}
} catch (Exception ex) {
FileLogger.getLogger().error("发送短信提醒员工出错:" + ex.getMessage(), ex);
}
return result;
}
/**
* 发送短信提醒领导
*
* @return result(1:发送入日志都成功;2:发送成功,入日志失败;0:失败)
*/
private String toLeader(String cityCode, Map infos) {
String result = "0";
try {
if (infos != null) {
String phoNumber = (String) infos.get("phoNumber2");
if (phoNumber != null && !phoNumber.equals("")) {
String newOrderCnt = (String) infos.get("newOrderCnt");
String overFiveMinCnt = (String) infos.get("overFiveMinCnt");
String overThirtyMinCnt = (String) infos.get("overThirtyMinCnt");
String info = "您好,您所在的地市有";
if (Integer.parseInt(newOrderCnt) > 0) {
info = info + newOrderCnt + "张新业务受理单";
}
if (Integer.parseInt(overFiveMinCnt) > 0) {
info = info + "," + overFiveMinCnt + "张超时在5分钟以上30分钟以下的业务受理单";
}
if (Integer.parseInt(overThirtyMinCnt) > 0) {
info = info + "," + overThirtyMinCnt + "张超时30分钟以上的业务受理单";
}
info = info + "在网上营业厅内部管理系统上等待处理。";
DacClient dc = new DacClient();
// int time = getSendtime(dc,phoNumber);
// if(time < 0 || time > 30) {
// //该号码没有发送过短信或者离上次发送短信时间超过了30分钟,就再次发送
result = SendSmsPwd(cityCode, phoNumber, info);
if (result.equals("1")) {
boolean b = addSendinfo(dc, phoNumber, "2", infos);
if (!b)
result = "2";
}
// }
}
}
} catch (Exception ex) {
FileLogger.getLogger().error("发送短信提醒领导出错:" + ex.getMessage(), ex);
}
return result;
}
/**
* ********第三方接口*******
*
* 发送短信。
*
* @param citycode
* @param phonenum
* 必须是带上区号的业务号码
* @param info
* @return
*/
private String SendSmsPwd(String citycode, String phonenum, String info) {
String result = null;
FormBody _formbody = new FormBody();
// 调用的服务
String servicename = "SendSMS";
try {
Hashtable hashTable = new Hashtable();
hashTable.put("SM_DATA", info);
hashTable.put("RECV_NBR", phonenum);
String str = CallTuxdoInter.callTuxdo(hashTable, servicename);
if (str != null) {
_formbody.fromXML(str);
// 返回结果,如果为1说时,返回成功
result = _formbody.getString("RESULTSTATE");
}
} catch (Exception ex) {
result = "0";
FileLogger.getLogger().error("发送短信出错:" + ex.getMessage(), ex);
}
// 如果发送成功返回1;
return result;
}
/**
* 找出某个地市的联系电话离上次发送相差的时间
*
* @param dbClient,phoNumber
* @return -1表示该号码没有发送过信息
*/
private int getSendtime(DacClient dbClient, String phoNumber) {
String time = "0";
try {
List oParam = new ArrayList();
StringBuffer sql = new StringBuffer();
sql.append("select round( ");
sql.append("(sysdate - t.sendtime) * 1440 ");
sql
.append(") time from (select t1.sendtime from tf_sendinfotime t1 where t1.phonumber = ? order by t1.sendtime desc) t ");
oParam.add(phoNumber);
Object ap[] = new Object[oParam.size()];
for (int i = 0; i < ap.length; i++) {
ap[i] = oParam.get(i);
}
time = dbClient.getStringFromSqlQuery(sql.toString(), ap);
if (time == null || time.equals(""))
return -1;
return Integer.parseInt(time);
} catch (Exception ex) {
FileLogger.getLogger().error("找出某个地市的联系电话离上次发送相差的时间出错:" + ex.getMessage(), ex);
}
return Integer.parseInt(time);
}
/**
* 添加一条发送短信的记录
*
* @param _prod
* @return productid
*/
private boolean addSendinfo(DacClient dbClient, String phoNumber, String pholevel, Map infos) {
try {
StringBuffer _sb = new StringBuffer();
_sb
.append("insert into tf_sendinfotime(sendinfotimeid,phonumber,sendtime,neworder,overfivemin,overthirtymin,pholevel) ");
_sb.append("values(seq_sendinfotimeid.nextval,?,sysdate,?,?,?,?) ");
Object[] _object = new Object[5];
_object[0] = phoNumber;
_object[1] = infos.get("newOrder");
_object[2] = infos.get("overFiveMin");
_object[3] = infos.get("overThirtyMin");
_object[4] = pholevel;
dbClient.beginTransaction(1000);
int i = dbClient.executeUpdate(_sb.toString(), 1000, _object);
if (i > 0) {
CallingBean.endTransaction(dbClient, true);
return true;
}
} catch (Exception ex) {
FileLogger.getLogger().error("添加一条发送短信的记录出错:" + ex.getMessage(), ex);
}
CallingBean.endTransaction(dbClient, true);
return false;
}
public void run() {
if (!isRun) {
// 避免重入情况。
isRun = true;
try {
SendinfoService.exec();
} catch (Exception ex) {
FileLogger.getLogger().warn("任务执行异常:", ex);
}
isRun = false;
}
}
/**
* 公共方法
*
* @return Method
*/
public static void sendinfo() {
try {
// 每1分钟执行一次。
CronRuntime.init();
} catch (Exception ex) {
FileLogger.getLogger().error(ex.getMessage(), ex);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -