?? jyiccardmanager.java~504~
字號:
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 + -