diff --git a/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforAssistContract.java b/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforAssistContract.java index 7b41b137a..a8bcb53fe 100644 --- a/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforAssistContract.java +++ b/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforAssistContract.java @@ -17,10 +17,12 @@ import java.util.List; import java.util.Map; import java.util.Properties; import java.util.UUID; + import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; + import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; @@ -31,6 +33,7 @@ import org.dom4j.io.XMLWriter; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; + import com.amarsoft.are.ARE; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.JBOException; @@ -56,12 +59,26 @@ public class VoucherToNCforAssistContract implements Job{ Object userId = arg0.getTrigger().getJobDataMap().get("CurUserId"); String curUserId = userId == null? "system" : userId.toString(); // 定义事物 + JBOTransaction tx1=null; JBOTransaction tx=null; + Transaction Sqlca1 = null; Transaction Sqlca = null; // 获取配置文件的输入流 FileInputStream in=null; + // xml类别 + String type="contract"; + // 批次号 + String batch = ""; + // 文件名称 + String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());// 年月日时分秒 + // 明细表记录时间 + String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());// 年月日时分秒 + // 记录当前批次传输总量 + int count=0; try { + tx1= JBOFactory.createJBOTransaction(); tx= JBOFactory.createJBOTransaction(); + Sqlca1 = Transaction.createTransaction(tx1); Sqlca = Transaction.createTransaction(tx); /** * 读取配置文件信息 @@ -109,14 +126,7 @@ public class VoucherToNCforAssistContract implements Job{ String insertSql=""; // 合同编码对象 String contract_number=""; - // xml类别 - String type="contract"; - // 文件名称 - String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());// 年月日时分秒 - // 明细表记录时间 - String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());// 年月日时分秒 - // 记录当前批次传输总量 - int count=0; + // 记录历史批次号 List batchList= new ArrayList(); @@ -124,8 +134,6 @@ public class VoucherToNCforAssistContract implements Job{ String sql="SELECT id,CONTRACT_NUMBER FROM LB_CONTRACT_INFO WHERE CONTRACT_STATUS='31' AND CONTRACT_NUMBER NOT IN(SELECT TABLE_NUM FROM NCXML_DETAIL_RECORDS WHERE FLAG = '1' AND XML_TYPE='"+type+"')"; List> rs = DataOperatorUtil.getDataBySql(Sqlca,sql,null); if(rs!=null && rs.size()>0) { - // 批次号 - String batch = ""; // 生成xml头 Document document = DocumentHelper.createDocument(); // 生成每个xml的头 Element root = document.addElement("ufinterface"); @@ -174,22 +182,23 @@ public class VoucherToNCforAssistContract implements Job{ // 等于null说明新数据, 新增入记录表 if(record==null || "".equals(record)) { if("".equals(batch)) { - batch = SerialNumberUtil.getVoucherPCNumber(Sqlca); + batch = SerialNumberUtil.getVoucherPCNumber(Sqlca1); } - insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+contract_number+"','1','"+year_month_days+"','"+batch+"')"; - Sqlca.executeSQL(insertSql); + insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,ERR_DESCRIBE,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+contract_number+"','2','传输失败 , 请联系管理员 !','"+year_month_days+"','"+batch+"')"; + Sqlca1.executeSQL(insertSql); logger.info("辅助合同记录语句: " + insertSql); count++; }else { - String updSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='1',ERR_DESCRIBE=null,CREATE_TIME='"+year_month_days+"' WHERE BILLID='"+uuid+"' AND XML_TYPE= '"+type+"'"; - Sqlca.executeSQL(updSql); - logger.info("旧批次号记录: "+updSql); + /*String updSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='1',ERR_DESCRIBE=null,CREATE_TIME='"+year_month_days+"' WHERE BILLID='"+uuid+"' AND XML_TYPE= '"+type+"'"; + Sqlca.executeSQL(updSql);*/ String batch1= record.getAttribute("BATCH").getString(); + logger.info("旧批次号记录: "+batch1); if(batchList.indexOf(batch1) == -1) { batchList.add(batch1); } } } + Sqlca1.commit(); String URL=LOCALHOST_URL+"APleasing_Defdoc_"+year_month_day+".xml"; //String URL="D:\\voucherXml_NC\\APleasing_Defdoc_"+year_month_day+".xml"; file=new File(URL); @@ -200,23 +209,39 @@ public class VoucherToNCforAssistContract implements Job{ InterActionToNC(Sqlca,URL,type,batch,count,batchList); Sqlca.commit(); } - QuartzUtil.insertLog(plan_date,"com.tenwa.voucher.serviceImp.VoucherToNCforAssistContract", "success", "成功",curUserId); } catch (Exception e) { - QuartzUtil.insertLog(plan_date,"com.tenwa.voucher.serviceImp.VoucherToNCforAssistContract", "error", "失败",curUserId); try { Sqlca.rollback(); - } catch (JBOException e1) { - e1.printStackTrace(); + if(batch!=null || !"".equals(batch)){ + logger.debug("合同xml传输失败"); + /*String updateSql="UPDATE NCXML_DETAIL_RECORDS SET FLAG='2',ERR_DESCRIBE='传输过程中遇到异常, 请联系管理员 !' WHERE BATCH='"+batch+"'"; + Sqlca1.executeSQL(updateSql);*/ + String insertSql="INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','N','"+count+"','"+count+"','传输失败, 请联系管理员 !','"+year_month_days+"')"; + Sqlca1.executeSQL(insertSql); + Sqlca1.commit(); + } + } catch (Exception e2) { + e2.printStackTrace(); } + e.printStackTrace(); }finally { if(Sqlca!=null) { try { + Sqlca.commit(); Sqlca.disConnect(); } catch (JBOException e) { e.printStackTrace(); } } + if(Sqlca1!=null) { + try { + Sqlca1.commit(); + Sqlca1.disConnect(); + } catch (JBOException e) { + e.printStackTrace(); + } + } } } @@ -225,10 +250,24 @@ public class VoucherToNCforAssistContract implements Job{ */ public String sendContractData(JBOTransaction tx) { String returns="true"; + JBOTransaction tx1=null; + Transaction Sqlca1 = null; Transaction Sqlca = null; // 获取配置文件的输入流 FileInputStream in=null; + // xml类别 + String type="contract"; + // 记录当前批次传输总量 + int count=0; + // 批次号 + String batch = ""; + // 文件名称 + String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());// 年月日时分秒 + // 明细表记录时间 + String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());// 年月日时分秒 try { + tx1= JBOFactory.createJBOTransaction(); + Sqlca1 = Transaction.createTransaction(tx1); Sqlca = Transaction.createTransaction(tx); /** * 读取配置文件信息 @@ -276,23 +315,15 @@ public class VoucherToNCforAssistContract implements Job{ String insertSql=""; // 合同编码对象 String contract_number=""; - // xml类别 - String type="contract"; - // 文件名称 - String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());// 年月日时分秒 - // 明细表记录时间 - String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());// 年月日时分秒 - // 记录当前批次传输总量 - int count=0; + // 记录历史批次号 List batchList= new ArrayList(); // 获取未传输及之前传输失败的数据 - String sql="SELECT id,CONTRACT_NUMBER FROM LB_CONTRACT_INFO WHERE CONTRACT_NUMBER NOT IN(SELECT TABLE_NUM FROM NCXML_DETAIL_RECORDS WHERE FLAG = '1' AND XML_TYPE='"+type+"')"; + String sql="SELECT id,CONTRACT_NUMBER FROM LB_CONTRACT_INFO WHERE CONTRACT_STATUS='31' AND CONTRACT_NUMBER NOT IN(SELECT TABLE_NUM FROM NCXML_DETAIL_RECORDS WHERE FLAG = '1' AND XML_TYPE='"+type+"')"; List> rs = DataOperatorUtil.getDataBySql(Sqlca,sql,null); if(rs!=null && rs.size()>0) { - // 批次号 - String batch = ""; + // 生成xml头 Document document = DocumentHelper.createDocument(); // 生成每个xml的头 Element root = document.addElement("ufinterface"); @@ -341,22 +372,23 @@ public class VoucherToNCforAssistContract implements Job{ // 等于null说明新数据, 新增入记录表 if(record==null || "".equals(record)) { if("".equals(batch)) { - batch = SerialNumberUtil.getVoucherPCNumber(Sqlca); + batch = SerialNumberUtil.getVoucherPCNumber(Sqlca1); } - insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+contract_number+"','1','"+year_month_days+"','"+batch+"')"; - Sqlca.executeSQL(insertSql); + insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,ERR_DESCRIBE,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+contract_number+"','2','传输失败 , 请联系管理员 !','"+year_month_days+"','"+batch+"')"; + Sqlca1.executeSQL(insertSql); logger.info("辅助合同记录语句: " + insertSql); count++; }else { - String updSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='1',ERR_DESCRIBE=null,CREATE_TIME='"+year_month_days+"' WHERE BILLID='"+uuid+"' AND XML_TYPE= '"+type+"'"; - Sqlca.executeSQL(updSql); - logger.info("旧批次号记录: "+updSql); + /*String updSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='1',ERR_DESCRIBE=null,CREATE_TIME='"+year_month_days+"' WHERE BILLID='"+uuid+"' AND XML_TYPE= '"+type+"'"; + Sqlca.executeSQL(updSql);*/ String batch1= record.getAttribute("BATCH").getString(); + logger.info("旧批次号记录: "+batch1); if(batchList.indexOf(batch1) == -1) { batchList.add(batch1); } } } + Sqlca1.commit(); String URL=LOCALHOST_URL+"APleasing_Defdoc_"+year_month_day+".xml"; //String URL="D:\\voucherXml_NC\\APleasing_Defdoc_"+year_month_day+".xml"; file=new File(URL); @@ -368,22 +400,38 @@ public class VoucherToNCforAssistContract implements Job{ Sqlca.commit(); } } catch (Exception e) { - logger.info("客户xml传输失败"); try { Sqlca.rollback(); - } catch (JBOException e1) { - e1.printStackTrace(); + if(batch!=null || !"".equals(batch)){ + logger.debug("合同xml传输失败"); + /*String updateSql="UPDATE NCXML_DETAIL_RECORDS SET FLAG='2',ERR_DESCRIBE='传输过程中遇到异常, 请联系管理员 !' WHERE BATCH='"+batch+"'"; + Sqlca1.executeSQL(updateSql);*/ + String insertSql="INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','N','"+count+"','"+count+"','传输失败, 请联系管理员 !','"+year_month_days+"')"; + Sqlca1.executeSQL(insertSql); + Sqlca1.commit(); + } + } catch (Exception e2) { + e2.printStackTrace(); } e.printStackTrace(); returns="false"; }finally { if(Sqlca!=null) { try { + Sqlca.commit(); Sqlca.disConnect(); } catch (JBOException e) { e.printStackTrace(); } } + if(Sqlca1!=null) { + try { + Sqlca1.commit(); + Sqlca1.disConnect(); + } catch (JBOException e) { + e.printStackTrace(); + } + } } return returns; } @@ -402,7 +450,6 @@ public class VoucherToNCforAssistContract implements Job{ String account = VouchersPropertiesUtil.get("account"); String groupcode = VouchersPropertiesUtil.get("groupcode"); String RECEIVE_URL = VouchersPropertiesUtil.get("RECEIVE_URL"); //回执信息存放路径 - /** * 获取对方post连接 */ @@ -413,6 +460,7 @@ public class VoucherToNCforAssistContract implements Job{ connection.setDoOutput(true); connection.setRequestProperty("Content-type", "text/xml"); connection.setRequestMethod("POST"); + /** * 读取本方生成的xml, 传输到NC */ @@ -511,17 +559,16 @@ public class VoucherToNCforAssistContract implements Job{ } }*/ - // 判断, 若失败, 更新错误录入明细表 - if(!"1".equals(resultcode)) { - // 如果回执状态不等于1, 说明有误, 更新到记录字表并记录错误信息 - updateSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='"+resultcode+"',ERR_DESCRIBE='"+resultdescription+"' WHERE BILLID='"+bdocid+"' AND XML_TYPE= '"+type+"'"; - Sqlca.executeSQL(updateSql); - logger.info("根据回执信息, 修改传输失败状态, 记录错误信息"+updateSql); - BizObject old_record=JBOFactory.createBizObjectQuery(NCXML_DETAIL_RECORDS.CLASS_NAME, "BILLID='"+bdocid+"' AND BATCH <> '"+batch+"' AND XML_TYPE= '"+type+"'").getSingleResult(false); - if(old_record ==null) { - failed_count++; - } - } + /** + * 根据回执信息, 变更明细表记录 + */ + updateSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='"+resultcode+"',ERR_DESCRIBE='"+resultdescription+"' WHERE BILLID='"+bdocid+"' AND XML_TYPE= '"+type+"'"; + Sqlca.executeSQL(updateSql); + logger.info("根据回执信息, 变更明细表数据记录"+updateSql); + /*BizObject old_record=JBOFactory.createBizObjectQuery(NCXML_DETAIL_RECORDS.CLASS_NAME, "BILLID='"+bdocid+"' AND BATCH <> '"+batch+"' AND XML_TYPE= '"+type+"'").getSingleResult(false); + if(old_record ==null) { + failed_count++; + }*/ } // 判断集合为否为null, 不为空遍历集合, 获取旧数据的批次号 @@ -536,9 +583,9 @@ public class VoucherToNCforAssistContract implements Job{ con=Integer.valueOf(dataList.get(0).get("CON")); } if(con==0) { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; }else { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; } Sqlca.executeSQL(updateSql); } @@ -555,12 +602,12 @@ public class VoucherToNCforAssistContract implements Job{ } // 如果con等于0, 说明没有失败记录, 插入成功记录 if(con==0) { - insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','Y','"+count+"','"+con+"','导入成功 !','"+formatter2.format(new Date())+"')"; + insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','Y','"+count+"','"+con+"','"+resultdescription+"','"+formatter2.format(new Date())+"')"; Sqlca.executeSQL(insertSql); logger.info("本批次传输成功!"); // 如果con不等于0, 记录含失败记录的数据如总表 }else { - insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','"+resSuc+"','"+count+"','"+con+"','含失败记录 !','"+formatter2.format(new Date())+"')"; + insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','"+resSuc+"','"+count+"','"+con+"','"+resultdescription+"','"+formatter2.format(new Date())+"')"; Sqlca.executeSQL(insertSql); logger.info("本批次包含失败数据 !"); } @@ -587,9 +634,9 @@ public class VoucherToNCforAssistContract implements Job{ con=Integer.valueOf(dataList.get(0).get("CON")); } if(con==0) { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; }else { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; } Sqlca.executeSQL(updateSql); } diff --git a/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforCustomer.java b/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforCustomer.java index 9730cb264..6c4ce9f01 100644 --- a/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforCustomer.java +++ b/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforCustomer.java @@ -17,10 +17,12 @@ import java.util.List; import java.util.Map; import java.util.Properties; import java.util.UUID; + import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; + import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; @@ -31,6 +33,7 @@ import org.dom4j.io.XMLWriter; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; + import com.amarsoft.are.ARE; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.JBOException; @@ -43,6 +46,7 @@ import com.tenwa.comm.util.date.DateAssistant; import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.httpclient.resources.VouchersPropertiesUtil; import com.tenwa.util.SerialNumberUtil; + import jbo.voucher.NCXML_DETAIL_RECORDS; public class VoucherToNCforCustomer implements Job{ @@ -59,12 +63,26 @@ public class VoucherToNCforCustomer implements Job{ Object userId = arg0.getTrigger().getJobDataMap().get("CurUserId"); String curUserId = userId == null? "system" : userId.toString(); // 定义事物 + JBOTransaction tx1=null; + Transaction Sqlca1 = null; JBOTransaction tx=null; Transaction Sqlca = null; // 获取配置文件的输入流 FileInputStream in =null; + // 定义xml类型对象 + String type="customer"; + // 批次号 + String batch = ""; + // 记录当前批次传输总量 + int count=0; + // 文件路径所需 + String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + // 表数据记录日期 + String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); try { + tx1= JBOFactory.createJBOTransaction(); tx= JBOFactory.createJBOTransaction(); + Sqlca1 = Transaction.createTransaction(tx1); Sqlca = Transaction.createTransaction(tx); /** @@ -115,8 +133,6 @@ public class VoucherToNCforCustomer implements Job{ Document document=null; // 定义输出对象 XMLWriter writer=null; - // 定义xml类型对象 - String type="customer"; // 定义新增语句对象 String insertSql=""; // 定义xml传输id对象 @@ -127,21 +143,14 @@ public class VoucherToNCforCustomer implements Job{ String certid=""; // 定义客户名称对象 String customername=""; - // 文件路径所需 - String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); - // 表数据记录日期 - String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); // 查询为传输或之前传输失败的数据 String sql="SELECT MAX(cif.customerid) id,cif.customer_num,MAX(cif.customername) customername,MAX(cif.customertype) customertype,MAX(cif.customerid) customerid, MAX(cif.certid) AS certid FROM CUSTOMER_INFO cif LEFT JOIN lb_union_lessee lul ON lul.customer_id = cif.customerid LEFT JOIN lb_contract_info lci ON lci.id = lul.contract_id WHERE lci.contract_status >= '31' AND cif.customer_num NOT IN (SELECT TABLE_NUM FROM NCXML_DETAIL_RECORDS WHERE FLAG = '1' AND XML_TYPE = 'customer') AND cif.customer_num NOT IN (SELECT cust_id FROM CUSTOMER_LIST WHERE CUST_STATUS = '2' ) GROUP BY CIF.CUSTOMER_NUM "; List> rs = DataOperatorUtil.getDataBySql(Sqlca,sql,null); if(rs != null && rs.size()>0) { - // 批次号 - String batch = ""; // 记录历史批次号 List batchList= new ArrayList(); - // 记录当前批次传输总量 - int count=0; + // 生成xml头 document= DocumentHelper.createDocument(); Element root = document.addElement("ufinterface"); @@ -241,23 +250,24 @@ public class VoucherToNCforCustomer implements Job{ // 等于null说明新数据, 新增入记录表 if(record==null || "".equals(record)) { if("".equals(batch)) { - batch = SerialNumberUtil.getVoucherPCNumber(Sqlca); + batch = SerialNumberUtil.getVoucherPCNumber(Sqlca1); } // 将客户xml信息写入状态表中 - insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+customer_num+"','1','"+year_month_days+"','"+batch+"')"; - Sqlca.executeSQL(insertSql); + insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,ERR_DESCRIBE,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+customer_num+"','2','传输失败 , 请联系管理员 !','"+year_month_days+"','"+batch+"')"; + Sqlca1.executeSQL(insertSql); logger.info("客户记录语句: "+insertSql); count++; }else { - String updSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='1',ERR_DESCRIBE=null,CREATE_TIME='"+year_month_days+"' WHERE BILLID='"+uuid+"' AND XML_TYPE= '"+type+"'"; - Sqlca.executeSQL(updSql); - logger.info("旧批次号记录: "+updSql); + /*String updSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='1',ERR_DESCRIBE=null,CREATE_TIME='"+year_month_days+"' WHERE BILLID='"+uuid+"' AND XML_TYPE= '"+type+"'"; + Sqlca.executeSQL(updSql);*/ String batch1= record.getAttribute("BATCH").getString(); + logger.info("旧批次号记录: "+batch1); if(batchList.indexOf(batch1) == -1) { batchList.add(batch1); } } } + Sqlca1.commit(); String URL=LOCALHOST_URL+"APleasing_Customer_"+year_month_day+".xml"; //String URL="D:\\voucherXml_NC\\APleasing_Customer_"+year_month_day+".xml"; file=new File(URL); @@ -268,24 +278,39 @@ public class VoucherToNCforCustomer implements Job{ InterActionToNC(Sqlca,URL,type,batch,count,batchList); Sqlca.commit(); } - QuartzUtil.insertLog(plan_date,"com.tenwa.voucher.serviceImp.VoucherToNCforCustomer", "success", "成功",curUserId); } catch (Exception e) { - QuartzUtil.insertLog(plan_date,"com.tenwa.voucher.serviceImp.VoucherToNCforCustomer", "error", "失败",curUserId); try { - logger.debug("客户xml传输失败"); Sqlca.rollback(); - } catch (JBOException e1) { - e1.printStackTrace(); + if(batch!=null || !"".equals(batch)){ + logger.debug("客户xml传输失败"); + /*String updateSql="UPDATE NCXML_DETAIL_RECORDS SET FLAG='2',ERR_DESCRIBE='传输过程中遇到异常, 请联系管理员 !' WHERE BATCH='"+batch+"'"; + Sqlca1.executeSQL(updateSql);*/ + String insertSql="INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','N','"+count+"','"+count+"','传输失败, 请联系管理员 !','"+year_month_days+"')"; + Sqlca1.executeSQL(insertSql); + Sqlca1.commit(); + } + } catch (Exception e2) { + e2.printStackTrace(); } + e.printStackTrace(); }finally { if (Sqlca!=null) { try { + Sqlca.commit(); Sqlca.disConnect(); } catch (JBOException e) { e.printStackTrace(); } } + if (Sqlca1!=null) { + try { + Sqlca1.commit(); + Sqlca1.disConnect(); + } catch (JBOException e) { + e.printStackTrace(); + } + } } } @@ -294,10 +319,24 @@ public class VoucherToNCforCustomer implements Job{ */ public String sendCustomerData(JBOTransaction tx) { String returns="true"; + JBOTransaction tx1=null; + Transaction Sqlca1 = null; Transaction Sqlca = null; // 获取配置文件的输入流 FileInputStream in =null; + // 定义xml类型对象 + String type="customer"; + // 批次号 + String batch = ""; + // 记录当前批次传输总量 + int count=0; + // 文件路径所需 + String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + // 表数据记录日期 + String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); try { + tx1= JBOFactory.createJBOTransaction(); + Sqlca1 = Transaction.createTransaction(tx1); Sqlca = Transaction.createTransaction(tx); /** * 读取配置文件信息 @@ -347,8 +386,7 @@ public class VoucherToNCforCustomer implements Job{ Document document=null; // 定义输出对象 XMLWriter writer=null; - // 定义xml类型对象 - String type="customer"; + // 定义新增语句对象 String insertSql=""; // 定义xml传输id对象 @@ -359,21 +397,14 @@ public class VoucherToNCforCustomer implements Job{ String certid=""; // 定义客户名称对象 String customername=""; - // 文件路径所需 - String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); - // 表数据记录日期 - String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); // 查询为传输或之前传输失败的数据 - String sql="SELECT max(cif.customerid) id,cif.customer_num,MAX(cif.customername)customername,MAX(cif.customertype)customertype,MAX(cif.customerid) customerid,MAX(cif.certid) as certid FROM CUSTOMER_INFO cif LEFT JOIN lb_union_lessee lul ON lul.customer_id=cif.customerid LEFT JOIN lb_contract_info lci ON lci.id=lul.contract_id WHERE lci.contract_status >='31' AND cif.customer_num NOT IN (SELECT TABLE_NUM FROM NCXML_DETAIL_RECORDS WHERE FLAG = '1' AND XML_TYPE = '"+type+"') GROUP BY CIF.CUSTOMER_NUM "; + // String sql="SELECT max(cif.customerid) id,cif.customer_num,MAX(cif.customername)customername,MAX(cif.customertype)customertype,MAX(cif.customerid) customerid,MAX(cif.certid) as certid FROM CUSTOMER_INFO cif LEFT JOIN lb_union_lessee lul ON lul.customer_id=cif.customerid LEFT JOIN lb_contract_info lci ON lci.id=lul.contract_id WHERE lci.contract_status >='31' AND cif.customer_num NOT IN (SELECT TABLE_NUM FROM NCXML_DETAIL_RECORDS WHERE FLAG = '1' AND XML_TYPE = '"+type+"') GROUP BY CIF.CUSTOMER_NUM "; + String sql="SELECT MAX(cif.customerid) id,cif.customer_num,MAX(cif.customername) customername,MAX(cif.customertype) customertype,MAX(cif.customerid) customerid, MAX(cif.certid) AS certid FROM CUSTOMER_INFO cif LEFT JOIN lb_union_lessee lul ON lul.customer_id = cif.customerid LEFT JOIN lb_contract_info lci ON lci.id = lul.contract_id WHERE lci.contract_status >= '31' AND cif.customer_num NOT IN (SELECT TABLE_NUM FROM NCXML_DETAIL_RECORDS WHERE FLAG = '1' AND XML_TYPE = 'customer') AND cif.customer_num NOT IN (SELECT cust_id FROM CUSTOMER_LIST WHERE CUST_STATUS = '2' ) GROUP BY CIF.CUSTOMER_NUM "; List> rs = DataOperatorUtil.getDataBySql(Sqlca,sql,null); if(rs != null && rs.size()>0) { - // 批次号 - String batch = ""; // 记录历史批次号 List batchList= new ArrayList(); - // 记录当前批次传输总量 - int count=0; // 生成xml头 document= DocumentHelper.createDocument(); Element root = document.addElement("ufinterface"); @@ -473,23 +504,24 @@ public class VoucherToNCforCustomer implements Job{ // 等于null说明新数据, 新增入记录表 if(record==null || "".equals(record)) { if("".equals(batch)) { - batch = SerialNumberUtil.getVoucherPCNumber(Sqlca); + batch = SerialNumberUtil.getVoucherPCNumber(Sqlca1); } // 将客户xml信息写入状态表中 - insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+customer_num+"','1','"+year_month_days+"','"+batch+"')"; - Sqlca.executeSQL(insertSql); + insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,ERR_DESCRIBE,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+customer_num+"','2','传输失败 , 请联系管理员 !','"+year_month_days+"','"+batch+"')"; + Sqlca1.executeSQL(insertSql); logger.info("客户记录语句: "+insertSql); count++; }else { - String updSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='1',ERR_DESCRIBE=null,CREATE_TIME='"+year_month_days+"' WHERE BILLID='"+uuid+"' AND XML_TYPE= '"+type+"'"; - Sqlca.executeSQL(updSql); - logger.info("旧批次号记录: "+updSql); + /*String updSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='1',ERR_DESCRIBE=null,CREATE_TIME='"+year_month_days+"' WHERE BILLID='"+uuid+"' AND XML_TYPE= '"+type+"'"; + Sqlca.executeSQL(updSql);*/ String batch1= record.getAttribute("BATCH").getString(); + logger.info("旧批次号记录: "+batch1); if(batchList.indexOf(batch1) == -1) { batchList.add(batch1); } } } + Sqlca1.commit(); String URL=LOCALHOST_URL+"APleasing_Customer_"+year_month_day+".xml"; //String URL="D:\\voucherXml_NC\\APleasing_Customer_"+year_month_day+".xml"; file=new File(URL); @@ -502,21 +534,38 @@ public class VoucherToNCforCustomer implements Job{ } } catch (Exception e) { try { - logger.debug("客户xml传输失败"); Sqlca.rollback(); - } catch (JBOException e1) { - e1.printStackTrace(); + if(batch!=null || !"".equals(batch)){ + logger.debug("客户xml传输失败"); + /*String updateSql="UPDATE NCXML_DETAIL_RECORDS SET FLAG='2',ERR_DESCRIBE='传输过程中遇到异常, 请联系管理员 !' WHERE BATCH='"+batch+"'"; + Sqlca1.executeSQL(updateSql);*/ + String insertSql="INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','N','"+count+"','"+count+"','传输失败, 请联系管理员 !','"+year_month_days+"')"; + Sqlca1.executeSQL(insertSql); + Sqlca1.commit(); + } + } catch (Exception e2) { + e2.printStackTrace(); } + e.printStackTrace(); returns="false"; }finally { if (Sqlca!=null) { try { + Sqlca.commit(); Sqlca.disConnect(); } catch (JBOException e) { e.printStackTrace(); } } + if (Sqlca1!=null) { + try { + Sqlca1.commit(); + Sqlca1.disConnect(); + } catch (JBOException e) { + e.printStackTrace(); + } + } } return returns; } @@ -535,7 +584,6 @@ public class VoucherToNCforCustomer implements Job{ String account = VouchersPropertiesUtil.get("account"); String groupcode = VouchersPropertiesUtil.get("groupcode"); String RECEIVE_URL = VouchersPropertiesUtil.get("RECEIVE_URL"); //回执信息存放路径 - /** * 获取对方post连接 */ @@ -546,6 +594,7 @@ public class VoucherToNCforCustomer implements Job{ connection.setDoOutput(true); connection.setRequestProperty("Content-type", "text/xml"); connection.setRequestMethod("POST"); + /** * 读取本方生成的xml, 传输到NC */ @@ -580,7 +629,7 @@ public class VoucherToNCforCustomer implements Job{ TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); DocumentSource source = new DocumentSource(resDoc); - transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); + transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8"); //设置文档的换行与缩进 transformer.setOutputProperty(OutputKeys.INDENT, "YES"); @@ -591,7 +640,6 @@ public class VoucherToNCforCustomer implements Job{ // 回执信息存放路径 String resFile = RECEIVE_URL+"APleasing_"+type+""+fmt.format(new Date())+".xml"; //String resFile = "D:\\VOUCHER_RECEIPT\\APleasing_"+type+""+fmt.format(new Date())+".xml"; - System.out.println(resFile); StreamResult result = new StreamResult(new File(resFile)); // 将回执信息转化为xml transformer.transform(source,result); @@ -645,17 +693,16 @@ public class VoucherToNCforCustomer implements Job{ } }*/ - // 判断, 若失败, 更新错误录入明细表 - if(!"1".equals(resultcode)) { - // 如果回执状态不等于1, 说明有误, 更新到记录字表并记录错误信息 - updateSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='"+resultcode+"',ERR_DESCRIBE='"+resultdescription+"' WHERE BILLID='"+bdocid+"' AND XML_TYPE= '"+type+"'"; - Sqlca.executeSQL(updateSql); - logger.info("根据回执信息, 修改传输失败状态, 记录错误信息"+updateSql); - BizObject old_record=JBOFactory.createBizObjectQuery(NCXML_DETAIL_RECORDS.CLASS_NAME, "BILLID='"+bdocid+"' AND BATCH <> '"+batch+"' AND XML_TYPE= '"+type+"'").getSingleResult(false); - if(old_record ==null) { - failed_count++; - } - } + /** + * 根据回执信息, 变更明细表记录 + */ + updateSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='"+resultcode+"',ERR_DESCRIBE='"+resultdescription+"' WHERE BILLID='"+bdocid+"' AND XML_TYPE= '"+type+"'"; + Sqlca.executeSQL(updateSql); + logger.info("根据回执信息, 变更明细表数据记录"+updateSql); + /*BizObject old_record=JBOFactory.createBizObjectQuery(NCXML_DETAIL_RECORDS.CLASS_NAME, "BILLID='"+bdocid+"' AND BATCH <> '"+batch+"' AND XML_TYPE= '"+type+"'").getSingleResult(false); + if(old_record ==null) { + failed_count++; + }*/ } // 判断集合为否为null, 不为空遍历集合, 获取旧数据的批次号 @@ -670,9 +717,9 @@ public class VoucherToNCforCustomer implements Job{ con=Integer.valueOf(dataList.get(0).get("CON")); } if(con==0) { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; }else { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; } Sqlca.executeSQL(updateSql); } @@ -689,12 +736,12 @@ public class VoucherToNCforCustomer implements Job{ } // 如果con等于0, 说明没有失败记录, 插入成功记录 if(con==0) { - insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','Y','"+count+"','"+con+"','导入成功 !','"+formatter2.format(new Date())+"')"; + insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','Y','"+count+"','"+con+"','"+resultdescription+"','"+formatter2.format(new Date())+"')"; Sqlca.executeSQL(insertSql); logger.info("本批次传输成功!"); // 如果con不等于0, 记录含失败记录的数据如总表 }else { - insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','"+resSuc+"','"+count+"','"+con+"','含失败记录 !','"+formatter2.format(new Date())+"')"; + insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','"+resSuc+"','"+count+"','"+con+"','"+resultdescription+"','"+formatter2.format(new Date())+"')"; Sqlca.executeSQL(insertSql); logger.info("本批次包含失败数据 !"); } @@ -721,9 +768,9 @@ public class VoucherToNCforCustomer implements Job{ con=Integer.valueOf(dataList.get(0).get("CON")); } if(con==0) { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; }else { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; } Sqlca.executeSQL(updateSql); } diff --git a/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforDistributor.java b/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforDistributor.java index 1954ab131..54fe6c595 100644 --- a/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforDistributor.java +++ b/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforDistributor.java @@ -15,7 +15,6 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; -import java.util.Properties; import java.util.UUID; import javax.xml.transform.OutputKeys; @@ -33,6 +32,7 @@ import org.dom4j.io.XMLWriter; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; + import com.amarsoft.are.ARE; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.JBOException; @@ -61,11 +61,24 @@ public class VoucherToNCforDistributor implements Job{ Object userId = arg0.getTrigger().getJobDataMap().get("CurUserId"); String curUserId = userId == null? "system" : userId.toString(); // 定义事物 + JBOTransaction tx1=null; + Transaction Sqlca1 = null; JBOTransaction tx=null; Transaction Sqlca = null; // 获取配置文件的输入流 FileInputStream in=null; + // 批次号 + String batch = ""; + // xml类别 + String type="distributor"; + // 记录当前批次传输总量 + int count=0; + // 获取特定日期 + String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); try { + tx1= JBOFactory.createJBOTransaction(); + Sqlca1 = Transaction.createTransaction(tx1); tx= JBOFactory.createJBOTransaction(); Sqlca = Transaction.createTransaction(tx); /** @@ -112,7 +125,6 @@ public class VoucherToNCforDistributor implements Job{ File file = null; // 文件对象 XMLWriter writer = null; // 输出对象 - String type="distributor"; // xml类别 String DISTRIBUTOR_NAME = ""; // 经销商名称 String DISTRIBUTOR_CODING = ""; // 经销商id String DISTRIBUTOR_ADDRESS=""; // 地区编码 @@ -136,18 +148,11 @@ public class VoucherToNCforDistributor implements Job{ String MBAFC_EARLYDISBURSEMENT_TYPE="";// 资金类型/支付类型 // 记录历史批次号 List batchList= new ArrayList(); - // 记录当前批次传输总量 - int count=0; - // 获取特定日期 - String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); - String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); // 获取未传输及以前传输失败的数据 String sql="SELECT id,DISTRIBUTOR_NAME,DISTRIBUTOR_CODING,DISTRIBUTOR_ADDRESS,FACT_ADDR,PROVINCES,POSTCODE,REGISTERED_ADDR,BUSINESS_SCOPE,SUBSIDIARY_COMPANY,TYPE,BUSINESS_LICENSE_NO,DISTRIBUTOR_STATUS,E_MAIL,FAX_NUMBER,REGISTERED_ASSET,DISTRIBUTORER,MBAFC_EARLYDISBURSEMENT_TYPE,URL FROM DISTRIBUTOR_INFO WHERE (DISTRIBUTOR_CODING NOT IN(SELECT TABLE_NUM FROM NCXML_DETAIL_RECORDS WHERE FLAG ='1' AND XML_TYPE='"+type+"') and DISTRIBUTOR_CODING not in(SELECT cust_id FROM customer_list)) and DISTRIBUTOR_STATUS='distributor_status04' "; List> rs = DataOperatorUtil.getDataBySql(Sqlca,sql,null); if(rs !=null && rs.size()>0) { - // 批次号 - String batch = ""; // 设置xml标签头 Document document = DocumentHelper.createDocument(); Element root = document.addElement("ufinterface"); @@ -318,22 +323,23 @@ public class VoucherToNCforDistributor implements Job{ // 等于null说明新数据, 新增入记录表 if(record==null || "".equals(record)) { if("".equals(batch)) { - batch = SerialNumberUtil.getVoucherPCNumber(Sqlca); + batch = SerialNumberUtil.getVoucherPCNumber(Sqlca1); } - insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+DISTRIBUTOR_CODING+"','1','"+year_month_days+"','"+batch+"')"; - Sqlca.executeSQL(insertSql); + insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,ERR_DESCRIBE,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+DISTRIBUTOR_CODING+"','2','传输失败 , 请联系管理员 !','"+year_month_days+"','"+batch+"')"; + Sqlca1.executeSQL(insertSql); logger.info("经销商记录语句: "+ insertSql); count++; }else { - String updSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='1',ERR_DESCRIBE=null,CREATE_TIME='"+year_month_days+"' WHERE BILLID='"+uuid+"' AND XML_TYPE= '"+type+"'"; - Sqlca.executeSQL(updSql); - logger.info("旧批次号记录: "+updSql); + /*String updSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='1',ERR_DESCRIBE=null,CREATE_TIME='"+year_month_days+"' WHERE BILLID='"+uuid+"' AND XML_TYPE= '"+type+"'"; + Sqlca.executeSQL(updSql);*/ String batch1= record.getAttribute("BATCH").getString(); + logger.info("旧批次号记录: "+batch1); if(batchList.indexOf(batch1) == -1) { batchList.add(batch1); } } } + Sqlca1.commit(); //String f="D:\\voucherXml_NC\\APleasing_Supplier_"+year_month_day+".xml"; String f=LOCALHOST_URL+"APleasing_Supplier_"+year_month_day+".xml"; file=new File(f); @@ -344,24 +350,38 @@ public class VoucherToNCforDistributor implements Job{ InterActionToNC(Sqlca,f,type,batch,count,batchList); Sqlca.commit(); } - QuartzUtil.insertLog(plan_date,"com.tenwa.voucher.serviceImp.VoucherToNCforDistributor", "success", "成功",curUserId); } catch (Exception e) { - QuartzUtil.insertLog(plan_date,"com.tenwa.voucher.serviceImp.VoucherToNCforDistributor", "error", "失败",curUserId); try { - logger.debug("经销商xml传输失败"); Sqlca.rollback(); - } catch (JBOException e1) { - e1.printStackTrace(); + if(batch!=null || !"".equals(batch)){ + logger.debug("经销商xml传输失败"); + /*String updateSql="UPDATE NCXML_DETAIL_RECORDS SET FLAG='2',ERR_DESCRIBE='传输过程中遇到异常, 请联系管理员 !' WHERE BATCH='"+batch+"'"; + Sqlca1.executeSQL(updateSql);*/ + String insertSql="INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','N','"+count+"','"+count+"','传输失败, 请联系管理员 !','"+year_month_days+"')"; + Sqlca1.executeSQL(insertSql); + Sqlca1.commit(); + } + } catch (Exception e2) { + e2.printStackTrace(); } - e.printStackTrace(); + e.printStackTrace(); }finally { if(Sqlca!=null) { try { + Sqlca.commit(); Sqlca.disConnect(); } catch (JBOException e) { e.printStackTrace(); } } + if(Sqlca1!=null) { + try { + Sqlca1.commit(); + Sqlca1.disConnect(); + } catch (JBOException e) { + e.printStackTrace(); + } + } } } @@ -370,10 +390,23 @@ public class VoucherToNCforDistributor implements Job{ */ public String sendDistriturorData(JBOTransaction tx) { String returns="true"; + JBOTransaction tx1=null; + Transaction Sqlca1 = null; Transaction Sqlca = null; + // xml类别 + String type="distributor"; + // 记录当前批次传输总量 + int count=0; + // 获取特定日期 + String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); // 获取配置文件的输入流 FileInputStream in=null; + // 批次号 + String batch = ""; try { + tx1= JBOFactory.createJBOTransaction(); + Sqlca1 = Transaction.createTransaction(tx1); Sqlca = Transaction.createTransaction(tx); /** * 读取配置文件信息 @@ -419,7 +452,6 @@ public class VoucherToNCforDistributor implements Job{ File file = null; // 文件对象 XMLWriter writer = null; // 输出对象 - String type="distributor"; // xml类别 String DISTRIBUTOR_NAME = ""; // 经销商名称 String DISTRIBUTOR_CODING = ""; // 经销商id String DISTRIBUTOR_ADDRESS=""; // 地区编码 @@ -443,18 +475,10 @@ public class VoucherToNCforDistributor implements Job{ String MBAFC_EARLYDISBURSEMENT_TYPE="";// 资金类型/支付类型 // 记录历史批次号 List batchList= new ArrayList(); - // 记录当前批次传输总量 - int count=0; - - // 获取特定日期 - String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); - String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); // 获取未传输及以前传输失败的数据 String sql="SELECT id,DISTRIBUTOR_NAME,DISTRIBUTOR_CODING,DISTRIBUTOR_ADDRESS,FACT_ADDR,PROVINCES,POSTCODE,REGISTERED_ADDR,BUSINESS_SCOPE,SUBSIDIARY_COMPANY,TYPE,BUSINESS_LICENSE_NO,DISTRIBUTOR_STATUS,E_MAIL,FAX_NUMBER,REGISTERED_ASSET,DISTRIBUTORER,MBAFC_EARLYDISBURSEMENT_TYPE,URL FROM DISTRIBUTOR_INFO WHERE (DISTRIBUTOR_CODING NOT IN(SELECT TABLE_NUM FROM NCXML_DETAIL_RECORDS WHERE FLAG ='1' AND XML_TYPE='"+type+"') and DISTRIBUTOR_CODING not in(SELECT cust_id FROM customer_list)) and DISTRIBUTOR_STATUS='distributor_status04' "; List> rs = DataOperatorUtil.getDataBySql(Sqlca,sql,null); if(rs !=null && rs.size()>0) { - // 批次号 - String batch = ""; // 设置xml标签头 Document document = DocumentHelper.createDocument(); Element root = document.addElement("ufinterface"); @@ -625,22 +649,23 @@ public class VoucherToNCforDistributor implements Job{ // 等于null说明新数据, 新增入记录表 if(record==null || "".equals(record)) { if("".equals(batch)) { - batch = SerialNumberUtil.getVoucherPCNumber(Sqlca); + batch = SerialNumberUtil.getVoucherPCNumber(Sqlca1); } - insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+DISTRIBUTOR_CODING+"','1','"+year_month_days+"','"+batch+"')"; - Sqlca.executeSQL(insertSql); + insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,ERR_DESCRIBE,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+DISTRIBUTOR_CODING+"','2','传输失败 , 请联系管理员 !','"+year_month_days+"','"+batch+"')"; + Sqlca1.executeSQL(insertSql); logger.info("经销商记录语句: "+ insertSql); count++; }else { - String updSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='1',ERR_DESCRIBE=null,CREATE_TIME='"+year_month_days+"' WHERE BILLID='"+uuid+"' AND XML_TYPE= '"+type+"'"; - Sqlca.executeSQL(updSql); - logger.info("旧批次号记录: "+updSql); + /*String updSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='1',ERR_DESCRIBE=null,CREATE_TIME='"+year_month_days+"' WHERE BILLID='"+uuid+"' AND XML_TYPE= '"+type+"'"; + Sqlca.executeSQL(updSql);*/ String batch1= record.getAttribute("BATCH").getString(); + logger.info("旧批次号记录: "+batch1); if(batchList.indexOf(batch1) == -1) { batchList.add(batch1); } } } + Sqlca1.commit(); //String f="D:\\voucherXml_NC\\APleasing_Supplier_"+year_month_day+".xml"; String f=LOCALHOST_URL+"APleasing_Supplier_"+year_month_day+".xml"; file=new File(f); @@ -652,22 +677,38 @@ public class VoucherToNCforDistributor implements Job{ Sqlca.commit(); } } catch (Exception e) { - try { + try { + Sqlca.rollback(); + if(batch!=null || !"".equals(batch)){ logger.debug("经销商xml传输失败"); - Sqlca.rollback(); - } catch (JBOException e1) { - e1.printStackTrace(); + /*String updateSql="UPDATE NCXML_DETAIL_RECORDS SET FLAG='2',ERR_DESCRIBE='传输过程中遇到异常, 请联系管理员 !' WHERE BATCH='"+batch+"'"; + Sqlca1.executeSQL(updateSql);*/ + String insertSql="INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','N','"+count+"','"+count+"','传输失败, 请联系管理员 !','"+year_month_days+"')"; + Sqlca1.executeSQL(insertSql); + Sqlca1.commit(); } - e.printStackTrace(); + } catch (Exception e2) { + e2.printStackTrace(); + } + e.printStackTrace(); returns="false"; }finally { if(Sqlca!=null) { try { + Sqlca.commit(); Sqlca.disConnect(); } catch (JBOException e) { e.printStackTrace(); } } + if(Sqlca1!=null) { + try { + Sqlca1.commit(); + Sqlca1.disConnect(); + } catch (JBOException e) { + e.printStackTrace(); + } + } } return returns; } @@ -686,7 +727,6 @@ public class VoucherToNCforDistributor implements Job{ String account = VouchersPropertiesUtil.get("account"); String groupcode = VouchersPropertiesUtil.get("groupcode"); String RECEIVE_URL = VouchersPropertiesUtil.get("RECEIVE_URL"); //回执信息存放路径 - /** * 获取对方post连接 */ @@ -697,6 +737,7 @@ public class VoucherToNCforDistributor implements Job{ connection.setDoOutput(true); connection.setRequestProperty("Content-type", "text/xml"); connection.setRequestMethod("POST"); + /** * 读取本方生成的xml, 传输到NC */ @@ -795,17 +836,16 @@ public class VoucherToNCforDistributor implements Job{ } }*/ - // 判断, 若失败, 更新错误录入明细表 - if(!"1".equals(resultcode)) { - // 如果回执状态不等于1, 说明有误, 更新到记录字表并记录错误信息 - updateSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='"+resultcode+"',ERR_DESCRIBE='"+resultdescription+"' WHERE BILLID='"+bdocid+"' AND XML_TYPE= '"+type+"'"; - Sqlca.executeSQL(updateSql); - logger.info("根据回执信息, 修改传输失败状态, 记录错误信息"+updateSql); - BizObject old_record=JBOFactory.createBizObjectQuery(NCXML_DETAIL_RECORDS.CLASS_NAME, "BILLID='"+bdocid+"' AND BATCH <> '"+batch+"' AND XML_TYPE= '"+type+"'").getSingleResult(false); - if(old_record ==null) { - failed_count++; - } - } + /** + * 根据回执信息, 变更明细表记录 + */ + updateSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='"+resultcode+"',ERR_DESCRIBE='"+resultdescription+"' WHERE BILLID='"+bdocid+"' AND XML_TYPE= '"+type+"'"; + Sqlca.executeSQL(updateSql); + logger.info("根据回执信息, 变更明细表数据记录"+updateSql); + /*BizObject old_record=JBOFactory.createBizObjectQuery(NCXML_DETAIL_RECORDS.CLASS_NAME, "BILLID='"+bdocid+"' AND BATCH <> '"+batch+"' AND XML_TYPE= '"+type+"'").getSingleResult(false); + if(old_record ==null) { + failed_count++; + }*/ } // 判断集合为否为null, 不为空遍历集合, 获取旧数据的批次号 @@ -820,9 +860,9 @@ public class VoucherToNCforDistributor implements Job{ con=Integer.valueOf(dataList.get(0).get("CON")); } if(con==0) { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; }else { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; } Sqlca.executeSQL(updateSql); } @@ -839,12 +879,12 @@ public class VoucherToNCforDistributor implements Job{ } // 如果con等于0, 说明没有失败记录, 插入成功记录 if(con==0) { - insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','Y','"+count+"','"+con+"','导入成功 !','"+formatter2.format(new Date())+"')"; + insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','Y','"+count+"','"+con+"','"+resultdescription+"','"+formatter2.format(new Date())+"')"; Sqlca.executeSQL(insertSql); logger.info("本批次传输成功!"); // 如果con不等于0, 记录含失败记录的数据如总表 }else { - insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','"+resSuc+"','"+count+"','"+con+"','含失败记录 !','"+formatter2.format(new Date())+"')"; + insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','"+resSuc+"','"+count+"','"+con+"','"+resultdescription+"','"+formatter2.format(new Date())+"')"; Sqlca.executeSQL(insertSql); logger.info("本批次包含失败数据 !"); } @@ -871,9 +911,9 @@ public class VoucherToNCforDistributor implements Job{ con=Integer.valueOf(dataList.get(0).get("CON")); } if(con==0) { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; }else { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; } Sqlca.executeSQL(updateSql); } diff --git a/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforVoucherPZ.java b/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforVoucherPZ.java index 48e340712..b5537f8c2 100644 --- a/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforVoucherPZ.java +++ b/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforVoucherPZ.java @@ -16,12 +16,13 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Properties; import java.util.UUID; + import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; + import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; @@ -32,6 +33,7 @@ import org.dom4j.io.XMLWriter; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; + import com.amarsoft.are.ARE; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.JBOException; @@ -40,14 +42,11 @@ import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.are.log.Log; import com.amarsoft.awe.util.Transaction; import com.base.util.QuartzUtil; -import com.itextpdf.text.log.SysoCounter; import com.tenwa.comm.util.date.DateAssistant; import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.httpclient.resources.VouchersPropertiesUtil; import com.tenwa.util.SerialNumberUtil; -import jbo.com.tenwa.entity.comm.own.OWN_ACCOUNT; -import jbo.sys.USER_INFO; import jbo.voucher.LV_STACTS_CONFIG; import jbo.voucher.NCXML_DETAIL_RECORDS; @@ -89,14 +88,28 @@ public class VoucherToNCforVoucherPZ implements Job{ private static String DOM4JcreateToVoucher(){ // 定义事物 JBOTransaction tx=null; + JBOTransaction tx1=null; Transaction Sqlca = null; + Transaction Sqlca1 = null; String returns="true"; // 获取配置文件的输入流 FileInputStream in=null; + // 记录表类别 + String type="voucher"; + // 批次号 + String batch=""; + // 记录当前批次传输总量 + int count=0; + // 用于文件名凭借 + String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + // 明细表时间记录 + String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); try { // 定义全局对象 tx= JBOFactory.createJBOTransaction(); + tx1= JBOFactory.createJBOTransaction(); Sqlca = Transaction.createTransaction(tx); + Sqlca1 = Transaction.createTransaction(tx1); Map map = new HashMap(); /** * 读取配置文件信息 @@ -150,8 +163,6 @@ public class VoucherToNCforVoucherPZ implements Job{ File file=null; // 输出对象 XMLWriter writer=null; - // 记录表类别 - String type="voucher"; // xml主键id String uuid=""; // 获取科目id @@ -166,10 +177,6 @@ public class VoucherToNCforVoucherPZ implements Job{ String f5=""; // 定义新增语句对象 String insertSql=""; - // 用于文件名凭借 - String year_month_day = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); - // 明细表时间记录 - String year_month_days = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); // 查询凭证视图, 获取每条凭证 String sql = "SELECT id,f3,f60,ID,MODULE_NAME,DEPT_NAME,F1,F15,V8_STATUS,F5,GENERATE_DATE FROM VI_VOUCHER_V8 WHERE F3 NOT IN(SELECT TABLE_NUM FROM NCXML_DETAIL_RECORDS WHERE FLAG = '1' AND XML_TYPE='"+type+"') AND DATE_FORMAT(f1,'%Y-%m')>DATE_FORMAT('2019-02-11','%Y-%m')"; @@ -183,9 +190,9 @@ public class VoucherToNCforVoucherPZ implements Job{ int c = (int)(a / b); for (int i = 0; i <=c && a>0; i++) { // 批次号 - String batch=""; + batch=""; // 记录当前批次传输总量 - int count=0; + count=0; // 记录历史批次号 List batchList= new ArrayList(); document = DocumentHelper.createDocument(); // 创建Document对象 @@ -211,11 +218,11 @@ public class VoucherToNCforVoucherPZ implements Job{ // 获取v8表借方数据 String sql1 = "SELECT f5,f6,f7,f15,f59,f60,f65,f73,f74,f75,f76 FROM VOUCHER_V8 WHERE F3=:F3 AND ENTRYDC='1'"; - List> v1 = DataOperatorUtil.getDataBySql(Sqlca,sql1,map); + List> v1 = DataOperatorUtil.getDataBySql(Sqlca1,sql1,map); // 获取v8表贷方数据 String sql2 = "SELECT f1,f5,f6,f8,f15,f51,f52,f59,f60,f65,f73,f74,f75,f76 FROM VOUCHER_V8 WHERE F3=:F3 AND ENTRYDC='-1'"; - List> v2 = DataOperatorUtil.getDataBySql(Sqlca,sql2,map); + List> v2 = DataOperatorUtil.getDataBySql(Sqlca1,sql2,map); // 获取v8表公共信息 for (Map map2 : v2) { @@ -517,23 +524,24 @@ public class VoucherToNCforVoucherPZ implements Job{ if(record==null || "".equals(record)) { // 有新数据, 当前批次批次号为空才会生成 if("".equals(batch)) { - batch = SerialNumberUtil.getVoucherPCNumber(Sqlca); + batch = SerialNumberUtil.getVoucherPCNumber(Sqlca1); } // 等于null说明新数据, 新增入记录表 - insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+F3+"','1','"+year_month_days+"','"+batch+"')"; - Sqlca.executeSQL(insertSql); + insertSql="INSERT INTO NCXML_DETAIL_RECORDS(BILLID,XML_TYPE,TABLE_NUM,FLAG,ERR_DESCRIBE,CREATE_TIME,BATCH) VALUES('"+uuid+"','"+type+"','"+F3+"','2','传输失败 , 请联系管理员 !','"+year_month_days+"','"+batch+"')"; + Sqlca1.executeSQL(insertSql); logger.info("凭证记录表插入语句: "+insertSql); count++; }else { - String updSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='1',ERR_DESCRIBE=null,CREATE_TIME='"+year_month_days+"' WHERE BILLID='"+uuid+"' AND XML_TYPE= '"+type+"'"; - Sqlca.executeSQL(updSql); - logger.info("旧批次号记录: "+updSql); + // 统计旧批次 String batch1= record.getAttribute("BATCH").getString(); + logger.info("记录旧批次: "+batch1); if(batchList.indexOf(batch1) == -1) { batchList.add(batch1); } } - } + } + + Sqlca1.commit(); String URL=LOCALHOST_URL+"APleasing_VOUCHER_"+year_month_day+".xml"; //String URL="D:\\voucherXml_NC\\APleasing_VOUCHER_"+year_month_day+".xml"; file=new File(URL); @@ -546,22 +554,40 @@ public class VoucherToNCforVoucherPZ implements Job{ Sqlca.commit(); } } catch (Exception e) { - logger.info("凭证xml传输失败"); - try { - Sqlca.rollback(); - } catch (JBOException e1) { - e1.printStackTrace(); + logger.info("凭证xml传输失败"); + try { + Sqlca.rollback(); + if(batch!=null || !"".equals(batch)){ + logger.debug("凭证xml传输失败"); + /*String updateSql="UPDATE NCXML_DETAIL_RECORDS SET FLAG='2',ERR_DESCRIBE='传输过程中遇到异常, 请联系管理员 !' WHERE BATCH='"+batch+"'"; + Sqlca1.executeSQL(updateSql);*/ + String insertSql="INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','N','"+count+"','"+count+"','传输失败, 请联系管理员 !','"+year_month_days+"')"; + Sqlca1.executeSQL(insertSql); + Sqlca1.commit(); } - e.printStackTrace(); + } catch (Exception e2) { + e2.printStackTrace(); + } + + e.printStackTrace(); returns="false"; }finally { if(Sqlca!=null) { try { + Sqlca.commit(); Sqlca.disConnect(); } catch (JBOException e) { e.printStackTrace(); } } + if(Sqlca1!=null) { + try { + Sqlca1.commit(); + Sqlca1.disConnect(); + } catch (JBOException e) { + e.printStackTrace(); + } + } } return returns; } @@ -690,17 +716,16 @@ public class VoucherToNCforVoucherPZ implements Job{ } }*/ - // 判断, 若失败, 更新错误录入明细表 - if(!"1".equals(resultcode)) { - // 如果回执状态不等于1, 说明有误, 更新到记录字表并记录错误信息 - updateSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='"+resultcode+"',ERR_DESCRIBE='"+resultdescription+"' WHERE BILLID='"+bdocid+"' AND XML_TYPE= '"+type+"'"; - Sqlca.executeSQL(updateSql); - logger.info("根据回执信息, 修改传输失败状态, 记录错误信息"+updateSql); - BizObject old_record=JBOFactory.createBizObjectQuery(NCXML_DETAIL_RECORDS.CLASS_NAME, "BILLID='"+bdocid+"' AND BATCH <> '"+batch+"' AND XML_TYPE= '"+type+"'").getSingleResult(false); - if(old_record ==null) { - failed_count++; - } - } + /** + * 根据回执信息, 变更明细表记录 + */ + updateSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='"+resultcode+"',ERR_DESCRIBE='"+resultdescription+"' WHERE BILLID='"+bdocid+"' AND XML_TYPE= '"+type+"'"; + Sqlca.executeSQL(updateSql); + logger.info("根据回执信息, 变更明细表数据记录"+updateSql); + /*BizObject old_record=JBOFactory.createBizObjectQuery(NCXML_DETAIL_RECORDS.CLASS_NAME, "BILLID='"+bdocid+"' AND BATCH <> '"+batch+"' AND XML_TYPE= '"+type+"'").getSingleResult(false); + if(old_record ==null) { + failed_count++; + }*/ } // 判断集合为否为null, 不为空遍历集合, 获取旧数据的批次号 @@ -715,9 +740,9 @@ public class VoucherToNCforVoucherPZ implements Job{ con=Integer.valueOf(dataList.get(0).get("CON")); } if(con==0) { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; }else { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; } Sqlca.executeSQL(updateSql); } @@ -734,12 +759,12 @@ public class VoucherToNCforVoucherPZ implements Job{ } // 如果con等于0, 说明没有失败记录, 插入成功记录 if(con==0) { - insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','Y','"+count+"','"+con+"','导入成功 !','"+formatter2.format(new Date())+"')"; + insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','Y','"+count+"','"+con+"','"+resultdescription+"','"+formatter2.format(new Date())+"')"; Sqlca.executeSQL(insertSql); logger.info("本批次传输成功!"); // 如果con不等于0, 记录含失败记录的数据如总表 }else { - insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','"+resSuc+"','"+count+"','"+con+"','含失败记录 !','"+formatter2.format(new Date())+"')"; + insertSql = "INSERT INTO NCXML_TOTAL_RECORDS(ID,BATCH,XML_TYPE,FLAG_,COUNT_,FAILED_COUNT,ERR_DESCRIBE,CREATETIME) VALUES('"+UUID.randomUUID().toString().replace("-", "")+"','"+batch+"','"+type+"','"+resSuc+"','"+count+"','"+con+"','"+resultdescription+"','"+formatter2.format(new Date())+"')"; Sqlca.executeSQL(insertSql); logger.info("本批次包含失败数据 !"); } @@ -766,9 +791,9 @@ public class VoucherToNCforVoucherPZ implements Job{ con=Integer.valueOf(dataList.get(0).get("CON")); } if(con==0) { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FLAG_='Y',FAILED_COUNT='0',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; }else { - updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; + updateSql="UPDATE NCXML_TOTAL_RECORDS SET FAILED_COUNT='"+con+"',ERR_DESCRIBE='"+resultdescription+"',CREATETIME='"+formatter2.format(new Date())+"' WHERE XML_TYPE='"+type+"' AND BATCH='"+old_batch+"'"; } Sqlca.executeSQL(updateSql); }