📄 jyiccardmanager.java~510~
字号:
package com.jysy.taxcore.comm.ic;
/**
* 京粤IC卡管理类
*
* <p>Title: JYICCardManager</p>
* <p>Description: 南京地税税控机IC卡编程接口</p>
* <p>Copyright: Copyright (c) 2004 广东京粤商用技术有限公司</p>
* <p>Company: 广东京粤商用技术有限公司</p>
* @author 李志毅
* @version 1.0
*/
import com.jysy.taxcore.comm.ic.*;
import com.jysy.taxcore.comm.exception.*;
import com.jysy.taxcore.comm.exception.TaxJYICException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.StringTokenizer;
/**
* 交通运输业(南京)税控接口增加项目
* @author 李大军
* @date 2004-05-28
*/
/**
* 驱动程序接口实现
*/
public class JYICCardManager implements IICCardManager {
private static String SPLITTER = "~~"; //分隔字符串的标志
private static String SUCCESS = "00"; //成功执行C函数的标志
public static String[] split(String source, String delim) {
String[] wordLists;
if (source == null) {
wordLists = new String[1];
wordLists[0] = source;
return wordLists;
}
if (delim == null) {
delim = ",";
}
StringTokenizer st = new StringTokenizer(source, delim);
int total = st.countTokens();
wordLists = new String[total];
for (int i = 0; i < total; i++) {
wordLists[i] = st.nextToken();
}
return wordLists;
}
public static String Calendar2Str(Calendar ca)
{
String bsrq = "";
if (ca != null) {
String stryear = Integer.toString(ca.get(Calendar.YEAR));
String strmonth = Integer.toString(ca.get(Calendar.MONTH) + 1);
String strdate = Integer.toString(ca.get(Calendar.DATE));
if (strmonth.length() < 2) {
strmonth = "0" + strmonth;
}
if (strdate.length() < 2) {
strdate = "0" + strdate;
}
bsrq = stryear + strmonth + strdate;
}
return bsrq;
}
//日期转换函数(把字符串转换为日期类型)
public static Calendar ChangeStr_Cale(String Strcal){
Calendar Calout = Calendar.getInstance();
Calout.set(Integer.parseInt(Strcal.substring(0, 4)),
Integer.parseInt(Strcal.substring(4, 6))-1,
Integer.parseInt(Strcal.substring(6, 8)));
return Calout;
}
//日期转换函数(把日期类型换为字符串转)
public void ICfxcshk(SwdjzlObject swdjzlObject) throws TaxBaseICException {
//税务登记号~~纳税人识别号~~税控机号~~纳税人名称~~卡密码~~密钥
String Swdjzl = swdjzlObject.getSwdjh() + SPLITTER
+ swdjzlObject.getNsrsbh() + SPLITTER
+ swdjzlObject.getSkjh() + SPLITTER
+ swdjzlObject.getNsrmc() + SPLITTER
+ swdjzlObject.getKmm() + SPLITTER
+ swdjzlObject.getMy();
ArrayList ListJyxmmx = swdjzlObject.getJyxmmx();
int intSize = ListJyxmmx.size();
String[] arrJyxmmx = new String[intSize];
for (int i = 0; i < intSize; i++) {
JyxmObject objJyxmmx = new JyxmObject();
objJyxmmx = (JyxmObject) ListJyxmmx.get(i);
arrJyxmmx[i] = objJyxmmx.getSldm() + SPLITTER + objJyxmmx.getXmmc() +
SPLITTER + objJyxmmx.getXmywmc();
objJyxmmx = null;
}
String strReturn = saveCshxx(Swdjzl, arrJyxmmx); //调用C函数接口将税务登记资料写入IC卡中
if (!strReturn.equals(SUCCESS)) {
throw new TaxJYICException(strReturn);
}
}
public void ICfxcbsk(SwdjzlObject swdjzlObject) throws TaxBaseICException {
Calendar sq = swdjzlObject.getBsrq();
String bsrq = "";
if (sq != null) {
String stryear = Integer.toString(sq.get(Calendar.YEAR));
String strmonth = Integer.toString(sq.get(Calendar.MONTH) + 1);
String strdate = Integer.toString(sq.get(Calendar.DATE));
if (strmonth.length() < 2) {
strmonth = "0" + strmonth;
}
if (strdate.length() < 2) {
strdate = "0" + strdate;
}
bsrq = stryear + strmonth + strdate;
}
//纳税人识别号~~税控机号~~卡密码~~报税日期
String Swdjzl = swdjzlObject.getNsrsbh() + SPLITTER
+ swdjzlObject.getSkjh() + SPLITTER
+ swdjzlObject.getKmm() + SPLITTER
+ bsrq;
String strReturn = saveCbsxx(Swdjzl); //调用C函数接口将税务登记资料写入IC卡中
if (!strReturn.equals(SUCCESS)) {
throw new TaxJYICException(strReturn);
}
}
public void ICbfcbskII(SwdjzlObject swdjzlObject) throws TaxBaseICException {
Calendar sq = swdjzlObject.getBsrq();
String bsrq = "";
if (sq != null) {
String stryear = Integer.toString(sq.get(Calendar.YEAR));
String strmonth = Integer.toString(sq.get(Calendar.MONTH) + 1);
String strdate = Integer.toString(sq.get(Calendar.DATE));
if (strmonth.length() < 2) {
strmonth = "0" + strmonth;
}
if (strdate.length() < 2) {
strdate = "0" + strdate;
}
bsrq = stryear + strmonth + strdate;
}
//纳税人识别号~~税控机号~~卡密码~~报税日期
String Swdjzl = swdjzlObject.getNsrsbh() + SPLITTER
+ swdjzlObject.getSkjh() + SPLITTER
+ swdjzlObject.getKmm() + SPLITTER
+ bsrq;
String strReturn = saveCbsxx(Swdjzl); //调用C函数接口将税务登记资料写入IC卡中
if (!strReturn.equals(SUCCESS)) {
throw new TaxJYICException(strReturn);
}
}
public void ICbfcbsk(SwdjzlObject swdjzlObject) throws TaxBaseICException {
Calendar sq = swdjzlObject.getBsrq();
String bsrq = "";
if (sq != null) {
String stryear = Integer.toString(sq.get(Calendar.YEAR));
String strmonth = Integer.toString(sq.get(Calendar.MONTH) + 1);
String strdate = Integer.toString(sq.get(Calendar.DATE));
if (strmonth.length() < 2) {
strmonth = "0" + strmonth;
}
if (strdate.length() < 2) {
strdate = "0" + strdate;
}
bsrq = stryear + strmonth + strdate;
}
//纳税人识别号~~税控机号~~卡密码~~报税日期
String Swdjzl = swdjzlObject.getNsrsbh() + SPLITTER
+ swdjzlObject.getSkjh() + SPLITTER
+ swdjzlObject.getKmm() + SPLITTER
+ bsrq;
String strReturn = bfCbskI(Swdjzl); //调用C函数接口将税务登记资料写入IC卡中
if (!strReturn.equals(SUCCESS)) {
throw new TaxJYICException(strReturn);
}
}
public void ICbfxtszk(SwdjzlObject swdjzlObject) throws TaxBaseICException {
//纳税人识别号~~税控机号~~卡密码
String Swdjzl = swdjzlObject.getNsrsbh() + SPLITTER
+ swdjzlObject.getSkjh() + SPLITTER
+ swdjzlObject.getKmm();
String strReturn = bfXtszk(Swdjzl); //调用C函数接口将税务登记资料写入IC卡中
if (!strReturn.equals(SUCCESS)) {
throw new TaxJYICException(strReturn);
}
}
public void ICbfskyk(SwdjzlObject swdjzlObject, int num) throws
TaxBaseICException {
//纳税人识别号~~税控机号~~卡密码~~收款员编号
String Swdjzl = swdjzlObject.getNsrsbh() + SPLITTER
+ swdjzlObject.getSkjh() + SPLITTER
+ swdjzlObject.getKmm() + SPLITTER
+ Integer.toString(num);
String strReturn = bfSkyk(Swdjzl); //调用C函数接口将税务登记资料写入IC卡中
if (!strReturn.equals(SUCCESS)) {
throw new TaxJYICException(strReturn);
}
}
public void ICbfwxk(String wxbh) throws TaxBaseICException {
if (wxbh == null || wxbh == "") {
wxbh = "10";
}
String strReturn = bfWxk(wxbh); //调用C函数接口将税务登记资料写入IC卡中
if (!strReturn.equals(SUCCESS)) {
throw new TaxJYICException(strReturn);
}
}
public SwdjzlObject getCbskSwdjzlObject() throws TaxBaseICException {
String strSwdjzl = null;
SwdjzlObject retObject = new SwdjzlObject();
strSwdjzl = getSwdjzl(); //调用C函数接口返回税务登记资料的字符串
//String[] arrSwdjzl = strSwdjzl.split(SPLITTER);
String[] arrSwdjzl = split(strSwdjzl,SPLITTER);
if (arrSwdjzl[0].equals(SUCCESS)) {
//执行成功
//税务登记号~~纳税人识别号~~税控机号~~报税日期
if (!arrSwdjzl[1].equals(SUCCESS))
retObject.setSwdjh(arrSwdjzl[1]); //税务登记号
if (arrSwdjzl.length > 2)
retObject.setNsrsbh(arrSwdjzl[2]); //纳税人识别号
if (arrSwdjzl.length > 3)
retObject.setSkjh(arrSwdjzl[3]); //税控机号
if (arrSwdjzl.length > 4) {
if (arrSwdjzl[4].length() >= 8) {
Calendar calendar = Calendar.getInstance();
calendar.set(Integer.parseInt(arrSwdjzl[4].substring(0, 4)),
Integer.parseInt(arrSwdjzl[4].substring(4, 6))-1,
Integer.parseInt(arrSwdjzl[4].substring(6, 8)));
retObject.setBsrq(calendar); //授权日期
}
}
}
else {
//执行时发生错误
retObject.setSwdjh(""); //税务登记号
//throw new TaxJYICException(arrSwdjzl[0]);
}
return retObject;
}
public FpsyqkObject getFpsyqkObject() throws TaxBaseICException {
FpsyqkObject retObject = new FpsyqkObject();
//未使用发票情况
ArrayList wsyfplist = new ArrayList();
String[] arrwsyfp = new String[2];
//注销发票明细
ArrayList zxfplist = new ArrayList();
String[] arrzxfp = new String[5];
//作废发票明细
ArrayList zffplist = new ArrayList();
String[] arrzffp = new String[115];
//退票明细
ArrayList tfplist = new ArrayList();
String[] arrtfp = new String[115];
retObject.setSwdjzl(getCbskSwdjzlObject());
String strReturn = getFpsyqk(arrwsyfp, arrzxfp, arrzffp);
if (strReturn.equals(SUCCESS)) {
for (int i = 0; i < 2; i++) {
//日期~~发票字轨~~起始发票序号~~结束发票序号
if (arrwsyfp[i] == null || arrwsyfp[i].equals("")) {
break;
}
WsyfpObject wsyfp = new WsyfpObject();
//String[] arrwsyfpElement = arrwsyfp[i].split(SPLITTER);
String[] arrwsyfpElement = split(arrwsyfp[i],SPLITTER);
Calendar cpsj = Calendar.getInstance();
cpsj.set(Integer.parseInt(arrwsyfpElement[0].substring(0, 4)),
Integer.parseInt(arrwsyfpElement[0].substring(4, 6))-1,
Integer.parseInt(arrwsyfpElement[0].substring(6, 8)));
wsyfp.setCpsj(cpsj); //日期
wsyfp.setFpzg(arrwsyfpElement[1]); //发票字轨
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -