diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoan/CleanLeaseMoneyAddOthers.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoan/CleanLeaseMoneyAddOthers.java index b5825e625..d342e8aae 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoan/CleanLeaseMoneyAddOthers.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoan/CleanLeaseMoneyAddOthers.java @@ -13,7 +13,7 @@ import com.tenwa.voucher.service.VoucherJavaParamService; */ public class CleanLeaseMoneyAddOthers implements VoucherJavaParamService { public Map getJavaParam(JBOTransaction tx, - Map param) throws BusinessException { + Map param,Map subData) throws BusinessException { MapreturnValue=new HashMap(); // ޲ String CLEAN_LEASE_MONEY=param.get("FACT_MONEY")==null?"0.00":param.get("FACT_MONEY"); diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoan/CommLoanFirstAddFinancingInterestHandlingMoney.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoan/CommLoanFirstAddFinancingInterestHandlingMoney.java index 48b5a8b87..30c8fab1d 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoan/CommLoanFirstAddFinancingInterestHandlingMoney.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoan/CommLoanFirstAddFinancingInterestHandlingMoney.java @@ -13,7 +13,7 @@ import com.tenwa.voucher.service.VoucherJavaParamService; public class CommLoanFirstAddFinancingInterestHandlingMoney implements VoucherJavaParamService{ @Override - public Map getJavaParam(JBOTransaction tx,Map param) throws BusinessException { + public Map getJavaParam(JBOTransaction tx,Map param,Map subData) throws BusinessException { MapreturnValue=new HashMap(); returnValue.putAll(param); returnValue.put("MONEY",param.get("FIRST_ADD_FINANCING_INTEREST_HANDLING")); diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoan/CommLoanFirstAddFinancingInterestMoney.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoan/CommLoanFirstAddFinancingInterestMoney.java index 19b66c53b..20bb56ad0 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoan/CommLoanFirstAddFinancingInterestMoney.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/CreateVoucherLoan/CommLoanFirstAddFinancingInterestMoney.java @@ -13,7 +13,7 @@ import com.tenwa.voucher.service.VoucherJavaParamService; public class CommLoanFirstAddFinancingInterestMoney implements VoucherJavaParamService{ @Override - public Map getJavaParam(JBOTransaction tx,Map param) throws BusinessException { + public Map getJavaParam(JBOTransaction tx,Map param,Map subData) throws BusinessException { MapreturnValue=new HashMap(); returnValue.putAll(param); returnValue.put("MONEY",param.get("FIRST_ADD_FINANCING_INTEREST")); diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractCar.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractCar.java index 7fe12a086..6b276159c 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractCar.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractCar.java @@ -11,7 +11,7 @@ public class auxiliaryContractCar implements VoucherJavaParamService { @Override public Map getJavaParam(JBOTransaction tx, - Map param) throws BusinessException { + Map param,Map subData) throws BusinessException { MapreturnValue=new HashMap(); String LEASFORMASSET=param.get("LEASFORMASSET"); diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractFactDate.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractFactDate.java index 641d5b1e9..a1a6e4602 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractFactDate.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractFactDate.java @@ -11,7 +11,7 @@ public class auxiliaryContractFactDate implements VoucherJavaParamService { @Override public Map getJavaParam(JBOTransaction tx, - Map param) throws BusinessException { + Map param,Map subData) throws BusinessException { MapreturnValue=new HashMap(); String FACT_DATE=param.get("FACT_DATE"); returnValue.put("FACT_DATE",FACT_DATE); diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractOrg.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractOrg.java index 757f0c0aa..a5f62317d 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractOrg.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractOrg.java @@ -11,7 +11,7 @@ public class auxiliaryContractOrg implements VoucherJavaParamService { @Override public Map getJavaParam(JBOTransaction tx, - Map param) throws BusinessException { + Map param,Map subData) throws BusinessException { MapreturnValue=new HashMap(); String DEPT=param.get("DEPT"); returnValue.put("DEPT",DEPT); diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractStartNum.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractStartNum.java index bd02aef7a..46cffb1c4 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractStartNum.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryContractStartNum.java @@ -11,7 +11,7 @@ public class auxiliaryContractStartNum implements VoucherJavaParamService { @Override public Map getJavaParam(JBOTransaction tx, - Map param) throws BusinessException { + Map param,Map subData) throws BusinessException { MapreturnValue=new HashMap(); String CONSTARTNUM=param.get("CONSTARTNUM"); returnValue.put("CONSTARTNUM",CONSTARTNUM); diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryFundType.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryFundType.java index a978359bd..1dca04c9c 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryFundType.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryFundType.java @@ -11,7 +11,7 @@ public class auxiliaryFundType implements VoucherJavaParamService { @Override public Map getJavaParam(JBOTransaction tx, - Map param) throws BusinessException { + Map param,Map subData) throws BusinessException { MapreturnValue=new HashMap(); String FUNDTYPE=param.get("FUNDTYPE"); returnValue.put("FUNDTYPE",FUNDTYPE); diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryLeasIncomeForm.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryLeasIncomeForm.java index 6cdfabeb6..2c538985c 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryLeasIncomeForm.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryLeasIncomeForm.java @@ -11,7 +11,7 @@ public class auxiliaryLeasIncomeForm implements VoucherJavaParamService { @Override public Map getJavaParam(JBOTransaction tx, - Map param) throws BusinessException { + Map param,Map subData) throws BusinessException { MapreturnValue=new HashMap(); String LEASINCOMEFORM=param.get("LEASINCOMEFORM"); returnValue.put("LEASINCOMEFORM",LEASINCOMEFORM); diff --git a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryLeas_formType.java b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryLeas_formType.java index d70815624..2241eb6f6 100644 --- a/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryLeas_formType.java +++ b/src_core/com/tenwa/voucher/CreateVoucherProcess/auxiliaryInfo/auxiliaryLeas_formType.java @@ -10,7 +10,7 @@ import com.tenwa.voucher.service.VoucherJavaParamService; public class auxiliaryLeas_formType implements VoucherJavaParamService { @Override - public Map getJavaParam(JBOTransaction tx,Map param) throws BusinessException { + public Map getJavaParam(JBOTransaction tx,Map param,Map subData) throws BusinessException { MapreturnValue=new HashMap(); String LEAS_FORM=param.get("LEAS_FORM"); returnValue.put("LEAS_FORM",LEAS_FORM); diff --git a/src_core/com/tenwa/voucher/serviceImp/VoucherParamServiceImpl.java b/src_core/com/tenwa/voucher/serviceImp/VoucherParamServiceImpl.java index 6fcd25d09..9fde4f169 100644 --- a/src_core/com/tenwa/voucher/serviceImp/VoucherParamServiceImpl.java +++ b/src_core/com/tenwa/voucher/serviceImp/VoucherParamServiceImpl.java @@ -80,9 +80,10 @@ public class VoucherParamServiceImpl { @SuppressWarnings("unchecked") public Map getParamJava(JBOTransaction tx,Map param,String javaClass) throws Exception{ try{ + MapsubData=new HashMap(); Class c=(Class)Class.forName(javaClass); VoucherJavaParamService ser=c.newInstance(); - return ser.getJavaParam(tx, param); + return ser.getJavaParam(tx, param,subData); }catch(Exception e){ throw e; } diff --git a/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforVoucherPZ.java b/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforVoucherPZ.java index 25d3036c1..4e9c7a9d8 100644 --- a/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforVoucherPZ.java +++ b/src_core/com/tenwa/voucher/serviceImp/VoucherToNCforVoucherPZ.java @@ -15,6 +15,7 @@ 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; @@ -47,11 +48,17 @@ import jbo.voucher.LV_STACTS_CONFIG; public class VoucherToNCforVoucherPZ implements Job{ private static Log logger=ARE.getLog(); - // 凭证信息传输 + + /*** + * 定时任务凭证NC传输 + */ public void execute(JobExecutionContext arg0) throws JobExecutionException { + // 获取当前日期 String plan_date = DateAssistant.getToday(); + // 获取当前用户id Object userId = arg0.getTrigger().getJobDataMap().get("CurUserId"); String curUserId = userId == null? "system" : userId.toString(); + // 获取回执信息判断成功与否 String ss = DOM4JcreateToVoucher(); if("true".equals(ss)) { QuartzUtil.insertLog(plan_date,"com.tenwa.voucher.serviceImp.VoucherToNCforVoucherPZ", "success", "成功",curUserId); @@ -60,9 +67,11 @@ public class VoucherToNCforVoucherPZ implements Job{ } } - /* - * 页面执行xml传输 - * */ + /** + * 凭证信息页面NC传输调用此方法 + * @param tx + * @return + */ public String sendVoucherData(JBOTransaction tx) { String ss = DOM4JcreateToVoucher(); return ss; @@ -73,62 +82,123 @@ public class VoucherToNCforVoucherPZ implements Job{ * @throws Exception */ private static String DOM4JcreateToVoucher(){ - // 本地xml存放文件夹, 没有就创建 - // File file2 = new File("D:\\voucherXml_NC"); - // if (!file2.exists()) {file2.mkdirs();}// 判断是否存在, 如果不存在就创建该文件夹 + // 定义事物 JBOTransaction tx=null; Transaction Sqlca = null; String returns="true"; - String type="voucher"; // 记录表类别 - String batch=""; - String deleteSql=""; + // 获取配置文件的输入流 + FileInputStream in=null; try { // 定义全局对象 tx= JBOFactory.createJBOTransaction(); Sqlca = Transaction.createTransaction(tx); Map map = new HashMap(); - Document document=null; // xml文件头 - File file=null; // 生成的xml文件路径 - XMLWriter writer=null; // 输出对象 - String uuid=""; // xml主键id - String SUBJECT_ID=null; // 获取科目id - String OWNED_COMPANY = null; // 所属公司 - String ACC_YEAR = null; // 会计期间/年 - String ACC_MONTH = null; // 会计期间/月 - String insertSql=""; // 定义新增语句对象 - String timeAll = ""; // 制单日期 - String f5=""; // 摘要 - + /** + * 读取配置文件信息 + * */ + // 创建Properties对象 + Properties properties = new Properties(); + // 获取配置文件输入流 + in = new FileInputStream("/vouchers.properties"); + // 通过Properties对象读取配置文件 + properties.load(in); + // 获取配置文件数据 + // 账套 + String account = properties.getProperty("voucher_account"); + // 单据类型 + String billtype = properties.getProperty("voucher_billtype"); + // 集团编码 + String groupcode = properties.getProperty("voucher_groupcode"); + // 系统参数 + String isexchange = properties.getProperty("voucher_isexchange"); + // 接收方 + String receiver = properties.getProperty("voucher_receiver"); + // 外系统编码 + String sender = properties.getProperty("voucher_sender"); + // 系统参数 + String replace = properties.getProperty("voucher_replace"); + // 凭证类别 + String pk_vouchertype = properties.getProperty("voucher_pk_vouchertype"); + // 来源系统 + String pk_system = properties.getProperty("voucher_pk_system"); + // 凭证类型值 + String voucherkind = properties.getProperty("voucher_voucherkind"); + // 核算账簿 + String pk_accountingbook = properties.getProperty("voucher_pk_accountingbook"); + // 制单人 + String pk_prepared = properties.getProperty("voucher_pk_prepared"); + // 所属组织 + String pk_org = properties.getProperty("voucher_pk_org"); + // 所属集团 + String pk_group = properties.getProperty("voucher_pk_group"); + // 币种 + String pk_currtype = properties.getProperty("voucher_pk_currtype"); + System.out.println(111); + /** + * 定义全局变量 + */ + // xml文件头 + Document document=null; + // 生成的xml文件路径 + File file=null; + // 输出对象 + XMLWriter writer=null; + // 记录表类别 + String type="voucher"; + // 批次号 + String batch=""; + // xml主键id + String uuid=""; + // 获取科目id + String SUBJECT_ID=null; + // 会计期间/年 + String ACC_YEAR = null; + // 会计期间/月 + String ACC_MONTH = null; + // 制单日期 + String timeAll = ""; + // 摘要 + 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 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+"')"; + String sql = "SELECT 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-01-11','%Y-%m')"; List> list = DataOperatorUtil.getDataBySql(Sqlca, sql, null);// 将所有凭证号封装到list集合中 - int a = list.size(); // v8视图总数据量/ xml中生成的总条数 - int b=1000; // 设置当前xml生成的条数 - int c = (int)(a / b); // 获取生成xml文件的数量, 最大循环值=c+1 + // v8视图总数据量/ xml中生成的总条数 + int a = list.size(); + // 设置当前xml生成的条数 + int b=1000; + // 获取生成xml文件的数量, 最大循环值=c+1 + int c = (int)(a / b); for (int i = 0; i <=c && a>0; i++) { - int count=0; // 记录当前批次传输总量 + // 记录当前批次传输总量 + int count=0; Sqlca = Transaction.createTransaction(tx); document = DocumentHelper.createDocument(); // 创建Document对象 - Element root = document.addElement("ufinterface"); // 设置xml头 - root.addAttribute("account", "bq1217"); // 设置xml头属性 - root.addAttribute("billtype", "vouchergl"); + // 设置xml头 + Element root = document.addElement("ufinterface"); + root.addAttribute("account", account); + root.addAttribute("billtype", billtype); root.addAttribute("businessunitcode", "develop"); root.addAttribute("filename", ""); - root.addAttribute("groupcode", "06"); - root.addAttribute("isexchange", "Y"); + root.addAttribute("groupcode", groupcode); + root.addAttribute("isexchange", isexchange); root.addAttribute("orgcode", ""); - root.addAttribute("receiver", "807001002001"); - root.addAttribute("replace", "Y"); + root.addAttribute("receiver", receiver); + root.addAttribute("replace", replace); root.addAttribute("roottag", ""); - root.addAttribute("sender", "GL"); + root.addAttribute("sender", sender); batch = SerialNumberUtil.getVoucherPCNumber(Sqlca); for (int x = i * b; x < (i + 1) * b && x < a; x++) { // 决定当前xml生成的数据量 // 获取凭证编号 String F3=list.get(x).get("F3"); + String F60=list.get(x).get("F60"); map.clear(); map.put("F3",F3); @@ -150,23 +220,24 @@ public class VoucherToNCforVoucherPZ implements Job{ // 获取本方信息 //BizObject own = JBOFactory.createBizObjectQuery(OWN_INFO.CLASS_NAME, "id=:OWNED_COMPANY").setParameter("OWNED_COMPANY", OWNED_COMPANY).getSingleResult(false); - + uuid=UUID.randomUUID().toString().replace("-", ""); Element voucher = root.addElement("voucher"); + voucher.addAttribute("id", uuid); Element voucherHead = voucher.addElement("voucher_head"); Element pkVoucher = voucherHead.addElement("pk_voucher");// 凭证主键/非空 - uuid=UUID.randomUUID().toString().replace("-", ""); - pkVoucher.setText(uuid); - Element pk_vouchertype = voucherHead.addElement("pk_vouchertype");// 凭证类别, 默认01/非空 - pk_vouchertype.setText("01");//---------------------------------------------------------------------- + // pkVoucher.setText(uuid); + pkVoucher.setText(""); + Element pk_vouchertype1 = voucherHead.addElement("pk_vouchertype");// 凭证类别, 默认01/非空 + //pk_vouchertype1.setText(pk_vouchertype);//---------------------------------------------------------------------- + pk_vouchertype1.setText("01");//---------------------------------------------------------------------- Element year = voucherHead.addElement("year");// 会计年度/非空 year.setText((ACC_YEAR==null)?"":ACC_YEAR); - Element pk_system = voucherHead.addElement("pk_system");// 来源系统/非空 - //pk_system.setText((own.getAttribute("OWN_NAME")==null)? "":own.getAttribute("OWN_NAME").getString());//---------------------------------------- - pk_system.setText("GL");//---------------------------------------- - Element voucherkind = voucherHead.addElement("voucherkind");// 凭证类型值/非空 - voucherkind.setText("0"); - Element pk_accountingbook = voucherHead.addElement("pk_accountingbook");// 核算核算账簿/非空 - pk_accountingbook.setText("807001002001-0001"); + Element pk_system1 = voucherHead.addElement("pk_system");// 来源系统/非空 + pk_system1.setText(pk_system);//---------------------------------------- + Element voucherkind1 = voucherHead.addElement("voucherkind");// 凭证类型值/非空 + voucherkind1.setText(voucherkind); + Element pk_accountingbook1 = voucherHead.addElement("pk_accountingbook");// 核算核算账簿/非空 + pk_accountingbook1.setText(pk_accountingbook); Element discardflag = voucherHead.addElement("discardflag");// 作废标志/可空 discardflag.setText(""); Element period = voucherHead.addElement("period");// 会计期间/非空 @@ -177,8 +248,8 @@ public class VoucherToNCforVoucherPZ implements Job{ attachment.setText(""); Element prepareddate = voucherHead.addElement("prepareddate");// 制单日期/非空 prepareddate.setText(timeAll);//--------------------------------------------------- - Element pk_prepared = voucherHead.addElement("pk_prepared");// 制单人/非空 - pk_prepared.setText("pz");//------------------------------------------- + Element pk_prepared1 = voucherHead.addElement("pk_prepared");// 制单人/非空 + pk_prepared1.setText(pk_prepared);//------------------------------------------- Element pk_casher = voucherHead.addElement("pk_casher");// 出纳 pk_casher.setText("");//------------------------------------------ Element signflag = voucherHead.addElement("signflag");// 签字标志 @@ -186,7 +257,7 @@ public class VoucherToNCforVoucherPZ implements Job{ Element pk_checked = voucherHead.addElement("pk_checked");// 审核人 pk_checked.setText("");//-------------------------------------------------- Element tallydate = voucherHead.addElement("tallydate");// 记账日期 - tallydate.setText(timeAll);//-------------------------- + tallydate.setText("");//-------------------------- Element pk_manager = voucherHead.addElement("pk_manager");// 记账人 pk_manager.setText(""); Element memo1 = voucherHead.addElement("memo1"); @@ -199,12 +270,12 @@ public class VoucherToNCforVoucherPZ implements Job{ reserve2.setText(""); Element siscardflag = voucherHead.addElement("siscardflag"); siscardflag.setText("");//-------------------------------------------------------- - Element pk_org = voucherHead.addElement("pk_org");// 所属组织/非空 - pk_org.setText("807001002001");//--------------------------------------------------------- + Element pk_org1 = voucherHead.addElement("pk_org");// 所属组织/非空 + pk_org1.setText(pk_org);//--------------------------------------------------------- Element pk_org_v = voucherHead.addElement("pk_org_v");// 所属组织版本/可空 pk_org_v.setText("");//------------------------------------------------------- - Element pk_group = voucherHead.addElement("pk_group");// 所属集团 如果不输集团取当前登陆集团 - pk_group.setText("06"); + Element pk_group1 = voucherHead.addElement("pk_group");// 所属集团 如果不输集团取当前登陆集团 + pk_group1.setText(pk_group); Element details = voucherHead.addElement("details"); // 循环借方集合, 按照v8表数据中生成相应的借方item for (Map v8Lend : v1) { @@ -235,55 +306,54 @@ public class VoucherToNCforVoucherPZ implements Job{ Element globaldebitamount1 = item1.addElement("globaldebitamount");// 全局本币借方金额/可空 globaldebitamount1.setText("");//------------------------------------------- Element pk_currtype1 = item1.addElement("pk_currtype");// 币种/非空 - pk_currtype1.setText("CNY");// + pk_currtype1.setText(pk_currtype);// Element pk_accasoa1 = item1.addElement("pk_accasoa");// 科目/非空 - //pk_accasoa1.setText((subject.getAttribute("SUBJECTS_CODE").getString()==null)?"":subject.getAttribute("SUBJECTS_CODE").getString()); - pk_accasoa1.setText(""); + pk_accasoa1.setText((subject.getAttribute("SUBJECTS_CODE").getString()==null)?"":subject.getAttribute("SUBJECTS_CODE").getString()); Element pk_unit1 = item1.addElement("pk_unit");// 所属二级核算单位/可空 pk_unit1.setText("");//--------------------------------------------------- Element pk_unit_v1 = item1.addElement("pk_unit_v");// 所属二级核算单位/版本可空 pk_unit_v1.setText("");//------------------------------------------------- Element ass1 = item1.addElement("ass");// 金额必须有一方不为空 // 客商辅助核算 - /*if(v8Lend.get("f65")!=null && !"".equals(v8Lend.get("f65"))) { + if(v8Lend.get("f65")!=null && !"".equals(v8Lend.get("f65"))) { Element ass_item1 = ass1.addElement("item"); Element pk_Checktype1 = ass_item1.addElement("pk_Checktype"); - pk_Checktype1.setText("客商辅助核算"); + pk_Checktype1.setText("客商"); Element pk_Checkvalue1 = ass_item1.addElement("pk_Checkvalue"); - pk_Checkvalue1.setText((v8Lend.get("f65")==null)?"":v8Lend.get("f65")); + pk_Checkvalue1.setText((v8Lend.get("f65")==null)?"无":v8Lend.get("f65")); } // 合同号辅助核算 if(v8Lend.get("f60")!=null && !"".equals(v8Lend.get("f60"))) {// 部门名称 Element ass_item2 = ass1.addElement("item"); Element pk_Checktype2 = ass_item2.addElement("pk_Checktype"); - pk_Checktype2.setText("合同号辅助核算"); + pk_Checktype2.setText("合同号"); Element pk_Checkvalue2 = ass_item2.addElement("pk_Checkvalue"); - pk_Checkvalue2.setText((v8Lend.get("f60")==null)?"":v8Lend.get("f60")); + pk_Checkvalue2.setText((v8Lend.get("f60")==null)?"无":v8Lend.get("f60")); } // 主营类型辅助核算 if(v8Lend.get("f73")!=null && !"".equals(v8Lend.get("f73"))) { Element ass_item3 = ass1.addElement("item"); Element pk_Checktype3 = ass_item3.addElement("pk_Checktype"); - pk_Checktype3.setText("主营类型辅助核算"); + pk_Checktype3.setText("主营类型"); Element pk_Checkvalue3 = ass_item3.addElement("pk_Checkvalue"); - pk_Checkvalue3.setText((v8Lend.get("f73")==null)?"":v8Lend.get("f73")); + pk_Checkvalue3.setText((v8Lend.get("f73")==null)?"无":v8Lend.get("f73")); } //现金流量项目辅助核算 if(v8Lend.get("f74")!=null && !"".equals(v8Lend.get("f74"))) { Element ass_item4 = ass1.addElement("item"); Element pk_Checktype4 = ass_item4.addElement("pk_Checktype"); - pk_Checktype4.setText("现金流量项目辅助核算"); + pk_Checktype4.setText("现金流量项目"); Element pk_Checkvalue4 = ass_item4.addElement("pk_Checkvalue"); - pk_Checkvalue4.setText((v8Lend.get("f74")==null)?"":v8Lend.get("f74")); + pk_Checkvalue4.setText((v8Lend.get("f74")==null)?"无":v8Lend.get("f74")); } //银行账户辅助核算 if(v8Lend.get("f75")!=null && !"".equals(v8Lend.get("f75"))) { Element ass_item5 = ass1.addElement("item"); Element pk_Checktype5 = ass_item5.addElement("pk_Checktype"); - pk_Checktype5.setText("银行账户辅助核算"); + pk_Checktype5.setText("银行账户"); Element pk_Checkvalue5 = ass_item5.addElement("pk_Checkvalue"); - pk_Checkvalue5.setText((v8Lend.get("f75")==null)?"":v8Lend.get("f75")); - }*/ + pk_Checkvalue5.setText((v8Lend.get("f75")==null)?"无":v8Lend.get("f75")); + } Element cashFlow = item1.addElement("cashFlow"); Element cashFlow_item1 = cashFlow.addElement("item"); Element m_pk_currtype1 = cashFlow_item1.addElement("m_pk_currtype");// 币种,最大长度为64,类型为:String @@ -331,53 +401,53 @@ public class VoucherToNCforVoucherPZ implements Job{ Element pk_currtype2 = item2.addElement("pk_currtype");// 币种 非空 pk_currtype2.setText("CNY"); Element pk_accasoa2 = item2.addElement("pk_accasoa");// 科目 非空 - //pk_accasoa2.setText((subject.getAttribute("SUBJECTS_CODE").getString()==null)?"":subject.getAttribute("SUBJECTS_CODE").getString()); - pk_accasoa2.setText(""); + pk_accasoa2.setText((subject.getAttribute("SUBJECTS_CODE").getString()==null)?"":subject.getAttribute("SUBJECTS_CODE").getString()); + // pk_accasoa2.setText(""); Element pk_unit2 = item2.addElement("pk_unit");// 所属二级核算单位 可空 (组织) pk_unit2.setText("");//------------------------------------------ Element pk_unit_v2 = item2.addElement("pk_unit_v");// 所属二级核算单位 版本可空 (组织) pk_unit_v2.setText("");//----------------------------------------------- Element ass2 = item2.addElement("ass");// // 客商辅助核算 - /*if(v8loan.get("f65")!=null && !"".equals(v8loan.get("f65"))) { + if(v8loan.get("f65")!=null && !"".equals(v8loan.get("f65"))) { Element ass_item1 = ass2.addElement("item"); Element pk_Checktype1 = ass_item1.addElement("pk_Checktype"); - pk_Checktype1.setText("客商辅助核算"); + pk_Checktype1.setText("客商"); Element pk_Checkvalue1 = ass_item1.addElement("pk_Checkvalue"); - pk_Checkvalue1.setText((v8loan.get("f65")==null)?"":v8loan.get("f65")); + pk_Checkvalue1.setText((v8loan.get("f65")==null)?"无":v8loan.get("f65")); } // 合同号辅助核算 if(v8loan.get("f60")!=null && !"".equals(v8loan.get("f60"))) {// 部门名称 Element ass_item2 = ass2.addElement("item"); Element pk_Checktype2 = ass_item2.addElement("pk_Checktype"); - pk_Checktype2.setText("合同号辅助核算"); + pk_Checktype2.setText("合同号"); Element pk_Checkvalue2 = ass_item2.addElement("pk_Checkvalue"); - pk_Checkvalue2.setText((v8loan.get("f60")==null)?"":v8loan.get("f60")); + pk_Checkvalue2.setText((v8loan.get("f60")==null)?"无":v8loan.get("f60")); } // 主营类型辅助核算 if(v8loan.get("f73")!=null && !"".equals(v8loan.get("f73"))) { Element ass_item3 = ass2.addElement("item"); Element pk_Checktype3 = ass_item3.addElement("pk_Checktype"); - pk_Checktype3.setText("主营类型辅助核算"); + pk_Checktype3.setText("主营类型"); Element pk_Checkvalue3 = ass_item3.addElement("pk_Checkvalue"); - pk_Checkvalue3.setText((v8loan.get("f73")==null)?"":v8loan.get("f73")); + pk_Checkvalue3.setText((v8loan.get("f73")==null)?"无":v8loan.get("f73")); } //现金流量项目辅助核算 if(v8loan.get("f74")!=null && !"".equals(v8loan.get("f74"))) { Element ass_item4 = ass2.addElement("item"); Element pk_Checktype4 = ass_item4.addElement("pk_Checktype"); - pk_Checktype4.setText("现金流量项目辅助核算"); + pk_Checktype4.setText("现金流量项目"); Element pk_Checkvalue4 = ass_item4.addElement("pk_Checkvalue"); - pk_Checkvalue4.setText((v8loan.get("f74")==null)?"":v8loan.get("f74")); + pk_Checkvalue4.setText((v8loan.get("f74")==null)?"无":v8loan.get("f74")); } //银行账户辅助核算 if(v8loan.get("f75")!=null && !"".equals(v8loan.get("f75"))) { Element ass_item5 = ass2.addElement("item"); Element pk_Checktype5 = ass_item5.addElement("pk_Checktype"); - pk_Checktype5.setText("银行账户辅助核算"); + pk_Checktype5.setText("银行账户"); Element pk_Checkvalue5 = ass_item5.addElement("pk_Checkvalue"); - pk_Checkvalue5.setText((v8loan.get("f75")==null)?"":v8loan.get("f75")); - }*/ + pk_Checkvalue5.setText((v8loan.get("f75")==null)?"无":v8loan.get("f75")); + } Element item2_cashFlow = item2.addElement("cashFlow"); Element cashflowitem2 = item2_cashFlow.addElement("item"); Element m_pk_currtype2 = cashflowitem2.addElement("m_pk_currtype");// 币种,最大长度为64,类型为:String @@ -411,23 +481,15 @@ public class VoucherToNCforVoucherPZ implements Job{ writer.setEscapeText(false);// 字符是否转义,默认true writer.write(document); writer.close(); - String ss = InterActionToNC(Sqlca,URL,type,batch,count); + InterActionToNC(Sqlca,URL,type,batch,count); Sqlca.commit(); - returns=ss; } } catch (Exception e) { - deleteSql = "DELETE FROM NCXML_DETAIL_RECORDS WHERE BATCH='"+batch+"' AND XML_TYPE = '"+type+"'"; try { - Sqlca.executeSQL(deleteSql); - Sqlca.commit(); - } catch (Exception e2) { - try { - Sqlca.rollback(); - } catch (JBOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - e2.printStackTrace(); + Sqlca.rollback(); + } catch (JBOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); } returns="false"; try { @@ -452,26 +514,21 @@ public class VoucherToNCforVoucherPZ implements Job{ /** * 像NC传输xml, 获取NC回执xml信息, 根据回执信息更改状态 */ - public static String InterActionToNC(Transaction Sqlca,String inputURL,String type,String batch,int count) throws Exception { + public static void InterActionToNC(Transaction Sqlca,String inputURL,String type,String batch,int count) throws Exception { String updateSql = ""; // 更新sql对象 String insertSql = ""; // 新增SQL对象 - String deleteSql = ""; // 删除SQL对象 String resultcode= ""; // 单条返回结果 String bdocid = ""; // xml回执id String resultdescription=""; //错误信息 - String returns="true"; - /** * 获取对方post连接 */ - //String url = "http://47.93.227.86:8858/service/XChangeServlet?account=q0225&groupcode=001"; String url = "http://172.16.0.88:9990/service/XChangeServlet?account=bq1217&groupcode=06"; URL realURL = new URL(url); HttpURLConnection connection = (HttpURLConnection)realURL.openConnection(); connection.setDoOutput(true); connection.setRequestProperty("Content-type", "text/xml"); connection.setRequestMethod("POST"); - /** * 读取本方生成的xml, 传输到NC */ @@ -485,19 +542,6 @@ public class VoucherToNCforVoucherPZ implements Job{ } input.close(); out.close(); - - /*BufferedReader reader = new BufferedReader (new InputStreamReader(new FileInputStream(file),"UTF-8")); - String xml=""; - String ss=null; - while((ss=reader.readLine()) != null) { - xml+=ss; - xml+="\r\n"; - out.write(ss.getBytes()); - } - System.out.println(xml); - reader.close(); - out.close();*/ - /** * 获取NC回执信息 */ @@ -512,13 +556,6 @@ public class VoucherToNCforVoucherPZ implements Job{ } System.out.println(xmlString); bufreader.close(); -/* int c; - while ((c = bufreader.read()) != -1) { - System.out.print((char) c); - xmlString += (char) c; - }*/ - //input.close(); - System.out.println("--------------------------" + xmlString); /** * 将获取到的回执信息生成本地xml */ @@ -530,83 +567,71 @@ public class VoucherToNCforVoucherPZ implements Job{ //设置文档的换行与缩进 transformer.setOutputProperty(OutputKeys.INDENT, "YES"); - // 将回执信息输出到本地 + // 文件拼接名称 SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmss"); - SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 年月日时分秒 - // File file2 = new File("D:\\VOUCHER_RECEIPT"); - // if (!file2.exists()) {file2.mkdirs();}// 判断是否存在, 如果不存在就创建该文件夹 + // 表数据记录日期 + SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // 回执信息存放路径 //String resFile = "//data//files//apzl_leasing//tmp//WEN//APleasing_"+type+""+fmt.format(new Date())+".xml"; String resFile = "D:\\VOUCHER_RECEIPT\\APleasing_"+type+""+fmt.format(new Date())+".xml"; StreamResult result = new StreamResult(new File(resFile)); + // 将回执信息转化为xml transformer.transform(source,result); /** * 解析xml, 根据回执信息更新状态 */ - SAXReader sr = new SAXReader(); Document doc = sr.read(resFile); Element root= doc.getRootElement(); - //获取根元素,得到导入用友是否成功successful的值,值为Y:成功 N:失败 + // 根据successful判断是否有失败的, 有则为N, 全部成功为Y String resSuc = root.attributeValue("successful"); - //后面对回执结果做判断,然后改变导入状态就行了 if(null != resSuc){ + // 状态为N说明本批次传输有失败的 if("N".equals(resSuc)){ - logger.info("导入失败"); - // 导入失败, 将本次在明细表中存储的数据删除 - deleteSql = "DELETE FROM NCXML_DETAIL_RECORDS WHERE BATCH='"+batch+"' AND XML_TYPE = '"+type+"'"; - // 导入失败, 将失败数据记录入总记录表 + // 失败记录数 + int failed_count=0; List list = root.elements(); + // 遍历list, 获取所有回执信息 + System.out.println(list.size()); for (Element element : list) { String names = element.getName(); String value = element.getStringValue(); + // 获取单条回执信息的详细信息 List list2 = element.elements(); for (Element el : list2) { + // 获取标签名 String s = el.getName(); + // xml回执id + if("bdocid".equals(s)) { + bdocid = el.getStringValue(); + } + // 回执状态: 1=成功, <>1 =失败 if("resultcode".equals(s)) { resultcode = el.getStringValue(); } + // 回执信息 if("resultdescription".equals(s)) { resultdescription = el.getStringValue(); } } - 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+"','"+count+"','"+resultdescription+"','"+formatter2.format(new Date())+"')"; + // 判断, 若失败, 更新错误录入明细表 + 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); + failed_count++; + } } - Sqlca.executeSQL(deleteSql); + 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+"','"+count+"','本次共导入: "+count+"条, 失败: "+failed_count+"条 !','"+formatter2.format(new Date())+"')"; Sqlca.executeSQL(insertSql); - returns="false"; + logger.info("本批次包含失败数据 !"); + // 状态为Y表示, 本次导入全部成功 }else if(resSuc.equals("Y")){ logger.info("导入成功"); - List list = root.elements(); - int failed_count=0; // 失败记录数 - for (Element element : list) { - List list2 = element.elements(); - for (Element el : list2) { - String s = el.getName(); - // 获取单条回执状态 - if("resultcode".equals(s)) { - resultcode = el.getStringValue(); - } - // xml回执id - if("bdocid".equals(s)) { - bdocid = el.getStringValue(); - } - // 错误信息 - if("resultdescription".equals(s)) { - resultdescription = el.getStringValue(); - } - } - - if(!"1".equals(resultcode)) { - // 如果回执状态不等于1, 说明有误, 更新到记录字表并记录错误信息 - updateSql=" UPDATE NCXML_DETAIL_RECORDS SET FLAG='"+resultcode+"',ERR_DESCRIBE='"+resultdescription+"' WHERE BUILLID='"+bdocid+"' AND XML_TYPE= '"+type+"'"; - Sqlca.executeSQL(updateSql); - logger.info("根据回执信息, 修改传输失败状态, 记录错误信息"+updateSql); - failed_count++; - } - } - // 将本批次传输总量及 失败数量记录入记录总表 - String insertSql1="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+"','"+failed_count+"','"+resultdescription+"','"+formatter2.format(new Date())+"')"; + // 将本次导入信息记录入记录总表 + String insertSql1="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+"','0','导入成功 !','"+formatter2.format(new Date())+"')"; Sqlca.executeSQL(insertSql1); }else{ logger.info("出现未知错误"); @@ -614,6 +639,5 @@ public class VoucherToNCforVoucherPZ implements Job{ }else{ logger.info("未找到successful属性"); } - return returns; } }