2020-11-20 11:49:04 +08:00

488 lines
15 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.tenwa.invoice;
import java.rmi.RemoteException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.xml.rpc.ServiceException;
import org.dom4j.Document;
import org.dom4j.Element;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.amarsoft.are.ARE;
import com.amarsoft.are.jbo.JBOTransaction;
import com.amarsoft.are.util.StringFunction;
import com.amarsoft.awe.util.SqlObject;
import com.amarsoft.awe.util.Transaction;
import com.amarsoft.dict.als.cache.CacheLoaderFactory;
public class IAutokpDo {
//参数
private String invoiceParam;
//00=专票02=普票
private String fpzl;
//00为正票01为负票
private String fpzf;
private String sid;
private String fpdm;
private String fphm;
public String invoice() {
String invoiceParam = this.invoiceParam.replaceAll("@", ",");
String requestParam = "";
Document doc;
boolean flag = true;
String flag_result = "";
IAutokpXML ivoiceXML = new IAutokpXML();
Map<String,List<Map<String,String>>> map = null;
if("00".equals(fpzf)){
map = ivoiceXML.getInvoiceParam(invoiceParam);
}else{
map = ivoiceXML.getRedbackInvoiceParam(invoiceParam);
}
for(Map.Entry<String, List<Map<String, String>>> lsm: map.entrySet()){
String contract_no=lsm.getKey();
String responseParam="";
doc = ivoiceXML.createInvoiceXML(lsm,fpzl,fpzf);
requestParam = doc.asXML();
try {
if(!requestParam.startsWith("error")&&requestParam!=null&&!"".equals(requestParam)){
IAutokpUtils.saveFile(requestParam, contract_no);
IAutokpserviceLocator kpl = new IAutokpserviceLocator();
IAutokp autoKP = kpl.getIAutokpPort();
responseParam = autoKP.invoice(requestParam);
System.out.println("返回结果:"+responseParam);
}
} catch (RemoteException e) {
flag = false;
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ServiceException e) {
flag = false;
// TODO Auto-generated catch block
e.printStackTrace();
}
//开票成功
if(!"".endsWith(responseParam)){
IAutokpUtils.saveFile(responseParam, contract_no+"_rnt");
Map<String,String> responseResult = IAutokpUtils.getResponseResult(responseParam);
insertInvoiceLog(lsm,doc,responseResult);
if("4011".equals(responseResult.get("fl"))){
insertInvoiceTable(lsm,doc,responseResult);
}else{
flag = false;
}
}
}
if(flag){
flag_result = "操作成功";
}else{
flag_result = "操作失败";
}
return flag_result;
}
/**
* 发票打印
* @return
*/
public String invoice_pr(){
String requestParam="";
String responseParam="";
String sid = "Invoice_getfph";
IAutokpXML ivoiceXML = new IAutokpXML();
requestParam = ivoiceXML.createInvoiceOthersXML(sid,fpzl,fpdm,fphm);
try {
IAutokpserviceLocator kpl = new IAutokpserviceLocator();
IAutokp autoKP = kpl.getIAutokpPort();
responseParam = autoKP.invoice_pr(requestParam);
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(!"".endsWith(responseParam)){
IAutokpUtils.saveFile(responseParam, fpdm+"-"+fphm+"_rnt");
Map<String,String> responseResult = IAutokpUtils.getResponseResult(responseParam);
if("5011".equals(responseResult.get("fl"))){
System.out.println("打印成功!");
}
}
return null;
}
/**
* 发票作废
* @return
*/
public String invoice_fpzf(){
boolean flag = true;
String flag_result = "";
String requestParam="";
String responseParam="";
String sid = "Invoice_getfph";
IAutokpXML ivoiceXML = new IAutokpXML();
requestParam = ivoiceXML.createInvoiceOthersXML(sid,fpzl,fpdm,fphm);
try {
IAutokpUtils.saveFile(requestParam, fpdm+"-"+fphm);
IAutokpserviceLocator kpl = new IAutokpserviceLocator();
IAutokp autoKP = kpl.getIAutokpPort();
responseParam = autoKP.invoice_fpzf(requestParam);
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(!"".endsWith(responseParam)){
IAutokpUtils.saveFile(responseParam, fpdm+"-"+fphm+"_rnt");
Map<String,String> responseResult = IAutokpUtils.getResponseResult(responseParam);
if("6011".equals(responseResult.get("fl"))){
invalidInvoice();
flag_result = "操作成功";
}else{
flag = false;
flag_result = responseResult.get("mess");
}
}
return flag_result;
}
/**
* 获取待开发票号
* @return
*/
public String getfph(){
String requestParam="";
String responseParam="";
String SID = "Invoice_getfph";
IAutokpXML ivoiceXML = new IAutokpXML();
requestParam = ivoiceXML.createInvoiceOthersXML(sid,fpzl,fpdm,fphm);
try {
IAutokpserviceLocator kpl = new IAutokpserviceLocator();
IAutokp autoKP = kpl.getIAutokpPort();
responseParam = autoKP.getfph(requestParam);
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(!"".endsWith(responseParam)){
IAutokpUtils.saveFile(responseParam, fpdm+"-"+fphm+"_rnt");
Map<String,String> responseResult = IAutokpUtils.getResponseResult(responseParam);
if("3011".equals(responseResult.get("fl"))){
System.out.println("获取待开发票清单成功");
}
}
return null;
}
/**
* 发票清单打印
* @return
*/
public String invoice_qdpr(){
String requestParam="";
String responseParam="";
String SID = "Invoice_qdpr";
try {
IAutokpserviceLocator kpl = new IAutokpserviceLocator();
IAutokp autoKP = kpl.getIAutokpPort();
responseParam = autoKP.invoice_qdpr(requestParam);
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public String getFpzl() {
return fpzl;
}
public void setFpzl(String fpzl) {
this.fpzl = fpzl;
}
public String getFpzf() {
return fpzf;
}
public void setFpzf(String fpzf) {
this.fpzf = fpzf;
}
public String getInvoiceParam() {
return invoiceParam;
}
public void setInvoiceParam(String invoiceParam) {
this.invoiceParam = invoiceParam;
}
public String getFpdm() {
return fpdm;
}
public void setFpdm(String fpdm) {
this.fpdm = fpdm;
}
public String getFphm() {
return fphm;
}
public void setFphm(String fphm) {
this.fphm = fphm;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public void insertInvoiceTable(Map.Entry<String, List<Map<String, String>>> lsm,Document doc,Map<String,String> responseResult){
String insertSql = "insert into li_invoice_tj_info(id,contract_no,plan_list,fpzl,fpzf,invoice_money,tax_type,tax_ratio,tax_money,sw_spbm,fpdm,fphm,hztzdh,mxxh,status,payee,tax_creator,tax_checker,inputtime,rele_id)values"
+"(REPLACE(UUID(),'-',''),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement ps = null;
Transaction Sqlca = null;
Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource());
Connection con;
try {
con = Sqlca.getConnection();
boolean autoCom = con.getAutoCommit();
if(autoCom){
con.setAutoCommit(false);
}
ps = con.prepareStatement(insertSql);
Element ele_order = doc.getRootElement().element("Data").element("Order");
Element ele_head = ele_order.element("Head");
Element ele_items = ele_order.element("Items");
String payee = ele_head.element("SKR").getText();
String tax_creator = ele_head.element("KJR").getText();
String tax_checker = ele_head.element("FHR").getText();
String hztzdh = "";
String status = "Y";
String fpdm = responseResult.get("fpdm");
String fphm = responseResult.get("fphm");
if("01".equals(fpzf)){
status = "red";
fpdm = ele_head.element("HCFPDM").getText();
fphm = ele_head.element("HCFPHM").getText();
hztzdh = ele_head.element("HZTZDH").getText();
}
List<Element> listItems = ele_items.elements();
for(int i=1;i<=listItems.size();i++){
String mxxh = listItems.get(i).element("MXXH").getText();
String planList = "";
String liti_id = "";
String taxType = "";
String contractNo = "";
planList = lsm.getValue().get(i).get("plan_list");
taxType = lsm.getValue().get(i).get("tax_no");
contractNo = lsm.getValue().get(i).get("contract_no");
if("01".equals(fpzf)){
liti_id = lsm.getValue().get(i).get("liti_id");
String usql = "update li_invoice_tj_info O set O.status='R' where id='"+liti_id+"'";
Sqlca.executeSQL(new SqlObject(usql));
}
String invoice_money = listItems.get(i).element("JE").getText();
String taxRatio = listItems.get(i).element("SLV").getText();
String taxMoney = listItems.get(i).element("shuier").getText();
String sw_spbm = listItems.get(i).element("sw_spbm").getText();
String inputtime = StringFunction.getTodayNow();
ps.setString(1,contractNo);
ps.setString(2,planList);
ps.setString(3,fpzl);
ps.setString(4,fpzf);
ps.setString(5,invoice_money);
ps.setString(6,taxType);
ps.setString(7,taxRatio);
ps.setString(8,taxMoney);
ps.setString(9,sw_spbm);
ps.setString(10,fpdm);
ps.setString(11,fphm);
ps.setString(12,hztzdh);
ps.setString(13,mxxh);
ps.setString(14,status);
ps.setString(15,payee);
ps.setString(16,tax_creator);
ps.setString(17,tax_checker);
ps.setString(18,inputtime);
ps.setString(19,liti_id);
ps.addBatch();
}
ps.executeBatch();
con.commit();
con.setAutoCommit(autoCom);
ps.close();
ps = null;
System.out.println("==========开票完毕==========");
} catch (SQLException e) {
ARE.getLog().debug("插入天津发票信息表出错,出错消息"+e.getMessage(),e);
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(ps != null){
try {
ps.close();
ps = null;
} catch (SQLException e) {
ARE.getLog().debug("数据库关闭异常:" + e);
}
}
}
}
public void insertInvoiceLog(Map.Entry<String, List<Map<String, String>>> lsm,Document doc,Map<String,String> responseResult){
String insertSql = "insert into li_invoice_tj_log(id,contract_no,customer_name,plan_list,tax_type,fpzl,fpzf,invoice_money,tax_ratio,tax_money,payee,tax_creator,tax_checker,fpdm,fphm,mxxh,hztzdh,fl,mess,inputtime)values"
+"(REPLACE(UUID(),'-',''),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement ps = null;
Transaction Sqlca = null;
Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource());
Connection con;
try {
con = Sqlca.getConnection();
boolean autoCom = con.getAutoCommit();
if(autoCom){
con.setAutoCommit(false);
}
ps = con.prepareStatement(insertSql);
Element ele_order = doc.getRootElement().element("Data").element("Order");
System.out.println("==============================+++++++++"+doc.getText());
System.out.println("=============================="+ele_order.getText());
Element ele_head = ele_order.element("Head");
Element ele_items = ele_order.element("Items");
String payee = ele_head.element("SKR").getText();
String tax_creator = ele_head.element("KJR").getText();
String tax_checker = ele_head.element("FHR").getText();
String hztzdh = "";
String fl = responseResult.get("fl");
String mess = responseResult.get("mess");
String fpdm = responseResult.get("fpdm");
String fphm = responseResult.get("fphm");
if("01".equals(fpzf)){
fpdm = ele_head.element("HCFPDM").getText();
fphm = ele_head.element("HCFPHM").getText();
hztzdh = ele_head.element("HZTZDH").getText();
}
List<Element> listItems = ele_items.elements();
for(int i=1;i<=listItems.size();i++){
String mxxh = listItems.get(i).element("MXXH").getText();
String planList = "";
String taxType = "";
String contractNo = "";
String customerName = "";
planList = lsm.getValue().get(i).get("plan_list");
taxType = lsm.getValue().get(i).get("tax_type");
contractNo = lsm.getValue().get(i).get("contract_no");
customerName = lsm.getValue().get(i).get("customer_name");
String invoice_money = listItems.get(i).element("JE").getText();
String taxRatio = listItems.get(i).element("SLV").getText();
String taxMoney = listItems.get(i).element("shuier").getText();
String inputtime = StringFunction.getTodayNow();
ps.setString(1,contractNo);
ps.setString(2,customerName);
ps.setString(3,taxType);
ps.setString(4,planList);
ps.setString(5,fpzl);
ps.setString(6,fpzf);
ps.setString(7,invoice_money);
ps.setString(8,taxRatio);
ps.setString(9,taxMoney);
ps.setString(10,payee);
ps.setString(11,tax_creator);
ps.setString(12,tax_checker);
ps.setString(13,fpdm);
ps.setString(14,fphm);
ps.setString(15,mxxh);
ps.setString(16,hztzdh);
ps.setString(17, fl);
ps.setString(18,mess);
ps.setString(19,inputtime);
ps.addBatch();
}
ps.executeBatch();
con.commit();
con.setAutoCommit(autoCom);
ps.close();
ps = null;
System.out.println("==========插入日志表完毕==========");
} catch (SQLException e) {
ARE.getLog().debug("插入天津发票信息日志表出错,出错消息"+e.getMessage(),e);
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(ps != null){
try {
ps.close();
ps = null;
} catch (SQLException e) {
ARE.getLog().debug("数据库关闭异常:" + e);
}
}
}
}
public void invalidInvoice(){
Transaction Sqlca = null;
Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource());
String usql = "update li_invoice_tj_info O set O.status='N' where fpdm='"+fpdm+"' and fphm='"+fphm+"'";
SqlObject sql;
try {
sql = new SqlObject(usql);
Sqlca.executeSQL(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void redbackInvoice(Transaction Sqlca){
String usql = "update li_invoice_tj_info O set O.status='R' where fpdm='"+fpdm+"' and fphm='"+fphm+"'";
try {
SqlObject sql = new SqlObject(usql);
Sqlca.executeSQL(sql);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}