📄 cdrreportdetail.java
字号:
package com.sxit.wap.threads;
import java.io.*;
import java.sql.*;
import java.util.Date;
public class CDRReportDetail {
//两个序列号
private int fileHeadNo = 1;
private long fileBodyNo = 1;
private int fileNo = 0;
private long SystemCount = 10000000000l;
//为生成文件头准备的信息
private java.sql.Timestamp firstTime = null;
private java.sql.Timestamp lastTime = null;
private int totalRows =0;
private int totalFee = 0;
//
public CDRReportDetail () {
}
public String getFileName (Date date, Date currTime) {
fileNo = (fileNo +1 ) % 10000 ;
if (fileNo ==0) fileNo =1;
System.out.println(date);//
return "15" +new java.text.SimpleDateFormat("MM").format (date)
+new java.text.SimpleDateFormat("yyyyMMddHHmm").format (currTime)+
"030"+fillIntZero ( fileNo, 4)+".req";
}
public String dateToString ( Date date ) {
if (date ==null)
return "";
return new java.text.SimpleDateFormat("yyyyMMddHHmmss").format (date);
}
public void beforGetFileHead (java.sql.Timestamp firstTime,java.sql.Timestamp lastTime,int totalRows,int totalFee) {
this.firstTime = firstTime;
this.lastTime = lastTime;
this.totalRows = totalRows;
this.totalFee = totalFee;
}
private String fillIntZero ( int t, int times ) {
int j = 1;
for ( int i = 0; i < times; i++ )
j = j * 10;
String str = Integer.toString ( j + t );
str = str.substring ( str.length () - times ); //从0001开始,排满9999
return str;
}
private String fillLongZero ( long t, int times ) {
long j = 1;
for ( int i = 0; i < times; i++ )
j = j * 10;
String str = Long.toString ( j + t );
str = str.substring ( str.length () - times ); //从0001开始,排满9999
return str;
}
public String getFileHead (Date currTime) {
//0103 00 20030808112125 901 105 030 20030805110431 20030807171726 0000000090 00000850000
//0025 00 20040228142328 901 105 030 20040228000000 20040228000000 1410065410 1410065408
String str = "";
str += fillIntZero(fileHeadNo,4);//从0001开始,排满9999
fileHeadNo = (fileHeadNo +1 ) % 10000 ;
if (fileHeadNo ==0)fileHeadNo = 1;
str += "00";//文件版本号
str += dateToString(currTime);//文件产生时间
str += "904";//文件生成方系统代码
str += "105";//文件采集方系统代码
str += "030";//用户归属地代码,国内用户取省分代码
str += dateToString(firstTime);;//记录开始日期时间,结果集第一条记录时间
str += dateToString(lastTime);;//记录结束日期时间,结果集最后一条记录时间
str += fillLongZero(totalRows,10);//总记录数CHAR(10)
str += fillLongZero(totalFee*10,10);//总费用CHAR(10)人民币:厘。
//str += "0";//备注
str += "\n";//换行
return str;
}
public void doFileBody (ResultSet result,PrintWriter out) {
Date tempDate = null;
try {
while ( result.next () ) {
out.print( Long.toString (fileBodyNo) );//1.流水号1-9999999999
fileBodyNo = (fileBodyNo +1) % 10000000000l ;
if (fileBodyNo ==0) fileBodyNo= 1;
out.print ("\t") ;
out.print ( "0" );//2.详单类型
out.print ("\t") ;
out.print ( new String(result.getString (10 ).getBytes("ISO8859-1")) );//3.SP标识 从数据库中读取---------------------cp name
out.print ("\t") ;
//out.print ( "");//4.SP侧本次服务登陆名-----------------------""
out.print ( "\t" );
//out.print ( "");//5.移动终端IP地址-------------------------------""
out.print ( "\t01\t" );
out.print ( "WAP1.2" );//6.业务类型
out.print ( "\t" );
//out.print ( new String(result.getString (1 ).getBytes(),"GB2312") );//7.业务类型名称----------------------------------sp name
out.print ( "\t" );
//out.print ( result.getString ( 5 ) );//8.业务代码-----------------------------
//out.print ( "\t" );
out.print ( new String(result.getString (8 ).getBytes(),"GB2312") );//9.业务名称---------------------------channel name
out.print ( "\t" );
out.print ((result.getString (7)==null || "".equals(result.getString (7)))?"":new String(result.getString (7 ).getBytes(),"GB2312"));//10.内容/应用代码---------------------channel id
out.print ( "\t" );
out.print ( new String(result.getString (8 ).getBytes(),"GB2312") );//11.内容/应用名称------------------------channel name
out.print ( "\t" );
out.print ( result.getString ( 6 ) );//12.MDN号码--------------------------mdn
out.print ( "\t" );
out.print ( "86" + result.getString ( 6 ));//13.IMSI号码--------------------------""
out.print ( "\t" );
out.print ( "WAP" );//14.NAI用户名----------------------------"WAP"
out.print ( "\t" );
out.print ( "NAIDomain");//15.NAI的Domain字符串---------------------------"NAIDomain"
out.print ( "\t" );
tempDate = result.getTimestamp ( 2 ) ;
if (tempDate !=null)
out.print ( new java.text.SimpleDateFormat("yyyyMMddHHmmss").format (tempDate) );//16.起始时间---------------------------???
out.print ( "\t" );
tempDate = result.getTimestamp ( 2 ) ;//tempDate = result.getDate ( 3 ) ;
if (tempDate !=null)
out.print ( new java.text.SimpleDateFormat("yyyyMMddHHmmss").format (tempDate) );//17.终止时间---------------------------""
out.print ( "\t" );
//out.print ( "" );//18.数量---------------------------""
out.print ( "\t" );
//out.print ( "" );//19.时长---------------------------""
out.print ( "\t" );
//out.print ( "");//20.上行流量---------------------------""
out.print ( "\t" );
//out.print ( "" );//21.下行流量---------------------------""
out.print ( "\t" );
//out.print ( "");//22.总流量---------------------------""
out.print ( "\t" );
out.print ( result.getString ( 4 ) + "0" );//23.优惠前金额---------------------------
out.print ( "\t" );
out.print ( result.getString ( 4 ) + "0" );//24.优惠后金额---------------------------
out.print ( "\t" );
out.print ( "0" );//25.优惠金额---------------------------0
out.print ( "\t" );
out.print ( "4" );//26.计费单位---------------------------4
out.print ( "\t" );
out.print ( result.getString ( 5 ) );//27.计费类型---------------------------FeeType
out.print ( "\t" );
//out.print ( "" );//28.费率描述代码---------------------------""
out.print ( "\t" );
//out.print ( "");//29.优惠描述代码---------------------------""
out.print ( "\t" );
out.print ( new String(result.getString (9 ).getBytes("ISO8859-1")) );//30.URL---------------------------
out.print ( "\t" );
out.print ( "030");//31.系统编码---------------------------"030"
out.print ( "\t" );
out.print (Long.toString( SystemCount) );//32.系统内部主键---------------------------SysIntraKey
SystemCount ++ ;
if (SystemCount >Long.MAX_VALUE-2)
SystemCount =1;
out.print ( "\t" );
out.print ( "0" );//33.系统保留1
out.print ( "\t" );
//out.print ( "" );//34.系统保留2
out.print ( "\t" );
//out.print ( "" );//35.备注
//out.print ( "\t" );
out.print ( "\n" );//36.换行
String rowid = result.getString("rowid");
Database.updateBySql("update wap_user_sub_his set is_done = 1 where rowid= '" + rowid + "'");
}
} catch ( Exception e1 ) {
e1.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -