📄 clearmonthsubthread.java
字号:
package com.sxit.wap.threads;
import java.sql.*;
import java.util.*;
import com.sxit.wap.channel.*;
import com.sxit.wap.channelfee.*;
import com.sxit.wap.sms.*;
/********************************
这个程序是用来清除包月的定制记录
一个月运行一次,而且在月初的时候运行
******************************/
public class ClearMonthSubThread
extends Thread {
private int index;
private static int i = 0;
public ClearMonthSubThread() {
index = i++;
}
public void run() {
System.out.println("清除包月定制线程 :" + index);
String sql = "";
try {
String curr = DateUtil.getDateSql(Database.dbType, DateUtil.getCurrTime());
System.out.println(curr);
if (getClearSubType() == 1) { //如果继定的话,那把结束时间调到下个月初
Timestamp nextMonthFirstDay = DateUtil.getNextMonthFirstDay();
String str = DateUtil.getDateSql(Database.dbType, nextMonthFirstDay);
sql = "DELETE FROM WAP_USER_SUB WHERE CHANNEL_ID IN (SELECT ID FROM WAP_CHANNEL WHERE CHANNEL_STATUS = 9)";
//删除那些频道已经被删除的定制;
Database.updateBySql(sql);
System.out.println("clear sub which the channel is deleted");
sql = "DELETE FROM WAP_USER_SUB WHERE USER_MDN IN (SELECT MDN FROM USER_CHECK WHERE SUBSTATUS = '91003' OR SUBSTATUS = '91004')"; //清除所有销户用户的定制信息
Database.updateBySql(sql);
System.out.println("check user is finishd");
sql = "SELECT u.USER_MDN,u.CHANNEL_ID,u.FEE_TYPE,u.FEE_CODE FROM WAP_USER_SUB u, wap_channel c WHERE u.IS_CANCEL=0 AND u.FEE_TYPE =3 AND u.channel_id=c.id AND c.channel_status=1 AND u.END_DATE <= TO_DATE('" + DateUtil.getYYYYMM(DateUtil.getCurrTime()) + "-01','YYYY-MM-DD')";
Collection coll = Database.queryBySql(sql);
Iterator it = coll.iterator();
while (it.hasNext()) {
UserSubModel user = (UserSubModel) it.next();
//获取频道的最新费率
int feeNow = ChannelFeeBean.getFeeCode(user.getChannelId(),
user.getFeeType());
//写进定制表,以便产生话单
sql = "INSERT INTO WAP_USER_SUB_HIS VALUES('" + user.getUserMdn() +
"'," + user.getChannelId() + "," + curr + "," + user.getFeeType() +
"," + feeNow + ", '0', '2')";
System.out.println(sql);
Database.updateBySql(sql);
//更新包月用户的定制记录的费率
sql = "UPDATE WAP_USER_SUB SET END_DATE = " + str + ",fee_code=" +
feeNow + " WHERE user_mdn='" + user.getUserMdn() +
"' and channel_id=" + user.getChannelId() + " AND FEE_TYPE = 3";
System.out.println(sql);
Database.updateBySql(sql);
/*
短信通知
ChannelModel channel = ChannelDao.findByPK(user.getChannelId());
String msg = new String("你所订制的".getBytes(), "GB2312");
msg = msg + channel.getChannelName();
msg = msg + new String("已经成功续定,有效期至".getBytes(), "GB2312");
msg = msg +
new String(DateUtil.getYYYYMMDDHHMISS(nextMonthFirstDay).getBytes(),
"GB2312");
System.out.println(444);
smsInterface sms = new smsInterface();
if (sms.sendMessageByDate(user.getUserMdn(), msg, 10)) {
System.out.println("短信发送成功");
}
else {
System.out.println("短信发送失败");
}
*/
}
//删除不续定用户的记录
sql = "DELETE FROM WAP_USER_SUB WHERE IS_CANCEL = 1 AND FEE_TYPE = 3 AND END_DATE <= TO_DATE('"+ DateUtil.getYYYYMM(DateUtil.getCurrTime()) + "-01','YYYY-MM-DD')";
System.out.println(sql);
Database.updateBySql(sql);
}
else { //如果不继定的话,就删除
sql = "DELETE FROM WAP_USER_SUB WHERE END_DATE <= " + curr +
" AND FEE_TYPE = 3";
System.out.println(DateUtil.getCurrTime() + ">>>>>" + sql);
Database.updateBySql(sql);
System.out.println(666);
}
}
catch (Exception e) {
e.printStackTrace();
}
}
public int getClearSubType() throws Exception {
Connection dbConnection = null;
Statement stmt = null;
ResultSet rs = null;
int rowCount = 0;
String sql = "SELECT CLEAR_SUB_TYPE FROM WAP_SYSTEM_PARAM";
try {
dbConnection = Database.getConnection();
stmt = dbConnection.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
rowCount = rs.getInt(1);
}
else {
throw new Exception("ERROR in get row count!!");
}
return rowCount;
}
catch (SQLException e) {
throw new Exception(
"SQLException while execute getRowCountBySql mothod :\n" + e);
}
finally {
Database.closeResultSet(rs);
Database.closeStatement(stmt);
Database.closeConnection(dbConnection);
}
}
public static void main(String[] args) {
ClearMonthSubThread clearMonthSubThread = new ClearMonthSubThread();
clearMonthSubThread.start();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -