📄 dhdzjskh.java
字号:
package testDzjs.yhServer.appInstance;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.net.Socket;
import testDzjs.yhServer.com.SendReceive;
import testDzjs.yhServer.com.YHBuildProtocol;
/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2005-4-16
* Time: 22:50:47
* To change this template use File | Settings | File Templates.
*/
/**
* 个体开户
*/
public class DhDzjsKh implements YhInterface{
SendReceive sendReceive = new SendReceive(); //数据发送接收实例
YHBuildProtocol buildProtocol = new YHBuildProtocol(); //协议构造
Socket socket = null; //套接字
BufferedInputStream in = null; //输入流
BufferedOutputStream out = null; //输出流
//请求包
private String packageType = "03"; //包类型
private String nsrZl = "1"; //纳税人种类 1个体户 2单位
private String nsrbm = ""; //纳税人编码
private String dnbm = ""; //电脑编码 区域分段(2)+银行分段(1)+ 序号(5)
private String sbmm = ""; //申报密码
private String yhdm = ""; //银行代码 01工行 02农行 03中行 04建行
private String zhlx = ""; //帐号类型 1结算账户 2信用卡 3储蓄卡
private String nsrmc = ""; //纳税人名称
private String sfzhm = ""; //身份证号码
private String dhhm = "" ; //联系电话
private String swjg_dm = "";//税务机关代码
//请求包
//返回包
private String rPackageType = "04"; //包类型
private String bz = ""; //标志 00成功 01无此银行帐号 02已登记 03身份证错 04开户余额不足 05纳税人编码不存在 06余额不足 07已销户 08帐户状态错 09无此交易 10无此征收机关编码 11银行系统忙 12身份证号码错 13补登存 14交易流水号 99其它
private String rnsrbm = ""; //纳税人编码
private String rswjgdm = "";//税务机关代码
//返回包
//请求包长度
private int[] sendLength = {2,1,20,8,6,2,1,80,20,20,11};
//返回包长度
private int[] receiveLength = {2,2,20,11};
private int rLength = 35;
//返回包
String[] receive = new String[4];
private long sCount = 0;
/**
* 外部调用入口
* @param socket
* @param in
* @param out
*/
public void start(Socket socket,BufferedInputStream in,BufferedOutputStream out,long l){
this.sCount = l;
this.socket = socket;
this.in = in;
this.out = out;
run();
}
public void setNsrbm(String s){
this.nsrbm = s;
}
public void setSwjgdm(String s){
this.swjg_dm = s;
}
public void setNsrmc(String s){
this.nsrmc = s;
}
/**
* 处理流程
*/
public void run(){
khcl();
sender(buildSendBody());
parseReceiver(receiver());
jgcl();
}
public String getInfo(){
return "";
}
/**
* 开户处理
* 生成开户包的值
*/
private void khcl(){
String tmp = "";
tmp ="01020001" + sCount;
// nsrbm = "430526197108193266";
dnbm = tmp.substring(tmp.length() - 8);
sbmm = "888888"; //申报密码
yhdm = "02"; //银行代码 01工行 02农行 03中行 04建行
zhlx = "1"; //帐号类型 1结算账户 2信用卡 3储蓄卡
// nsrmc = "毛香莲"; //纳税人名称
sfzhm = nsrbm; //身份证号码
dhhm = "9988001" ; //联系电话
// swjg_dm = "14305810000";//税务机关代码
}
/**
* 开户结果处理
* 校验开户是否成功
*/
private void jgcl(){
// rPackageType = this.receive[0]; //包类型
// bz = this.receive[1]; //标志 00成功 01无此银行帐号 02已登记 03身份证错 04开户余额不足 05纳税人编码不存在 06余额不足 07已销户 08帐户状态错 09无此交易 10无此征收机关编码 11银行系统忙 12身份证号码错 13补登存 14交易流水号 99其它
// rnsrbm = this.receive[2]; //纳税人编码
// rswjgdm = this.receive[3];//税务机关代码
}
/**
* 生成请求开户包
* @return
*/
private byte[] buildSendBody(){
byte[] body;
String[] send = {packageType,nsrZl,nsrbm,dnbm,sbmm,yhdm,zhlx,nsrmc,sfzhm,dhhm,swjg_dm};
// body = buildProtocol.getProtocolDataDH(send,sendLength);
body = buildProtocol.getProtocolData(send,sendLength);
return body;
}
/**
* 向输出流发送数据
* @param message
*/
private void sender(byte[] message){
try {
sendReceive.sendByte(message,out);
} catch (IOException e) {
try {
this.socket.close();
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}
/**
* 从输入流读取数据
* @return
*/
private String receiver(){
String receive = "";
try {
// receive = sendReceive.receiveDH(in,rLength);
receive = sendReceive.receive(in);
this.socket.close();
} catch (IOException e) {
try {
this.socket.close();
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
System.out.println(DbYh.threadCount + "收到税局开户返回包:" + receive);
return receive;
}
/**
* 解析返回包
* @param receive
*/
private void parseReceiver(String receive){
int startx = 0;
for(int i = 0;i < receiveLength.length;i ++){
this.receive[i] = readString(receive,startx,receiveLength[i]);
startx += receiveLength[i];
}
rPackageType = this.receive[0]; //包类型
bz = this.receive[1]; //标志 00成功 01无此银行帐号 02已登记 03身份证错 04开户余额不足 05纳税人编码不存在 06余额不足 07已销户 08帐户状态错 09无此交易 10无此征收机关编码 11银行系统忙 12身份证号码错 13补登存 14交易流水号 99其它
rnsrbm = this.receive[2]; //纳税人编码
rswjgdm = this.receive[3];//税务机关代码
}
/**
* 字串读取
* @param str
* @param startx
* @param length
* @return
*/
private String readString(String str,int startx,int length){
return str.substring(startx,startx+length);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -