凭证配置方法变更及接口备份

This commit is contained in:
xiezhiwen 2019-02-15 10:59:42 +08:00
parent b59d5a3934
commit 7a6202fd61
12 changed files with 203 additions and 178 deletions

View File

@ -13,7 +13,7 @@ import com.tenwa.voucher.service.VoucherJavaParamService;
*/
public class CleanLeaseMoneyAddOthers implements VoucherJavaParamService {
public Map<String, String> getJavaParam(JBOTransaction tx,
Map<String, String> param) throws BusinessException {
Map<String, String> param,Map<String, String> subData) throws BusinessException {
Map<String,String>returnValue=new HashMap<String,String>();
// ÈÚ×Ê×âÁÞ²ú
String CLEAN_LEASE_MONEY=param.get("FACT_MONEY")==null?"0.00":param.get("FACT_MONEY");

View File

@ -13,7 +13,7 @@ import com.tenwa.voucher.service.VoucherJavaParamService;
public class CommLoanFirstAddFinancingInterestHandlingMoney implements VoucherJavaParamService{
@Override
public Map<String, String> getJavaParam(JBOTransaction tx,Map<String, String> param) throws BusinessException {
public Map<String, String> getJavaParam(JBOTransaction tx,Map<String, String> param,Map<String, String> subData) throws BusinessException {
Map<String,String>returnValue=new HashMap<String,String>();
returnValue.putAll(param);
returnValue.put("MONEY",param.get("FIRST_ADD_FINANCING_INTEREST_HANDLING"));

View File

@ -13,7 +13,7 @@ import com.tenwa.voucher.service.VoucherJavaParamService;
public class CommLoanFirstAddFinancingInterestMoney implements VoucherJavaParamService{
@Override
public Map<String, String> getJavaParam(JBOTransaction tx,Map<String, String> param) throws BusinessException {
public Map<String, String> getJavaParam(JBOTransaction tx,Map<String, String> param,Map<String, String> subData) throws BusinessException {
Map<String,String>returnValue=new HashMap<String,String>();
returnValue.putAll(param);
returnValue.put("MONEY",param.get("FIRST_ADD_FINANCING_INTEREST"));

View File

@ -11,7 +11,7 @@ public class auxiliaryContractCar implements VoucherJavaParamService {
@Override
public Map<String, String> getJavaParam(JBOTransaction tx,
Map<String, String> param) throws BusinessException {
Map<String, String> param,Map<String, String> subData) throws BusinessException {
Map<String,String>returnValue=new HashMap<String,String>();
String LEASFORMASSET=param.get("LEASFORMASSET");

View File

@ -11,7 +11,7 @@ public class auxiliaryContractFactDate implements VoucherJavaParamService {
@Override
public Map<String, String> getJavaParam(JBOTransaction tx,
Map<String, String> param) throws BusinessException {
Map<String, String> param,Map<String, String> subData) throws BusinessException {
Map<String,String>returnValue=new HashMap<String,String>();
String FACT_DATE=param.get("FACT_DATE");
returnValue.put("FACT_DATE",FACT_DATE);

View File

@ -11,7 +11,7 @@ public class auxiliaryContractOrg implements VoucherJavaParamService {
@Override
public Map<String, String> getJavaParam(JBOTransaction tx,
Map<String, String> param) throws BusinessException {
Map<String, String> param,Map<String, String> subData) throws BusinessException {
Map<String,String>returnValue=new HashMap<String,String>();
String DEPT=param.get("DEPT");
returnValue.put("DEPT",DEPT);

View File

@ -11,7 +11,7 @@ public class auxiliaryContractStartNum implements VoucherJavaParamService {
@Override
public Map<String, String> getJavaParam(JBOTransaction tx,
Map<String, String> param) throws BusinessException {
Map<String, String> param,Map<String, String> subData) throws BusinessException {
Map<String,String>returnValue=new HashMap<String,String>();
String CONSTARTNUM=param.get("CONSTARTNUM");
returnValue.put("CONSTARTNUM",CONSTARTNUM);

View File

@ -11,7 +11,7 @@ public class auxiliaryFundType implements VoucherJavaParamService {
@Override
public Map<String, String> getJavaParam(JBOTransaction tx,
Map<String, String> param) throws BusinessException {
Map<String, String> param,Map<String, String> subData) throws BusinessException {
Map<String,String>returnValue=new HashMap<String,String>();
String FUNDTYPE=param.get("FUNDTYPE");
returnValue.put("FUNDTYPE",FUNDTYPE);

View File

@ -11,7 +11,7 @@ public class auxiliaryLeasIncomeForm implements VoucherJavaParamService {
@Override
public Map<String, String> getJavaParam(JBOTransaction tx,
Map<String, String> param) throws BusinessException {
Map<String, String> param,Map<String, String> subData) throws BusinessException {
Map<String,String>returnValue=new HashMap<String,String>();
String LEASINCOMEFORM=param.get("LEASINCOMEFORM");
returnValue.put("LEASINCOMEFORM",LEASINCOMEFORM);

View File

@ -10,7 +10,7 @@ import com.tenwa.voucher.service.VoucherJavaParamService;
public class auxiliaryLeas_formType implements VoucherJavaParamService {
@Override
public Map<String, String> getJavaParam(JBOTransaction tx,Map<String, String> param) throws BusinessException {
public Map<String, String> getJavaParam(JBOTransaction tx,Map<String, String> param,Map<String, String> subData) throws BusinessException {
Map<String,String>returnValue=new HashMap<String,String>();
String LEAS_FORM=param.get("LEAS_FORM");
returnValue.put("LEAS_FORM",LEAS_FORM);

View File

@ -80,9 +80,10 @@ public class VoucherParamServiceImpl {
@SuppressWarnings("unchecked")
public Map<String,String> getParamJava(JBOTransaction tx,Map<String,String> param,String javaClass) throws Exception{
try{
Map<String,String>subData=new HashMap<String,String>();
Class<VoucherJavaParamService> c=(Class<VoucherJavaParamService>)Class.forName(javaClass);
VoucherJavaParamService ser=c.newInstance();
return ser.getJavaParam(tx, param);
return ser.getJavaParam(tx, param,subData);
}catch(Exception e){
throw e;
}

View File

@ -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<String, String> map = new HashMap<String, String>();
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<Map<String, String>> 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<String, String> 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<Element> list = root.elements();
// 遍历list, 获取所有回执信息
System.out.println(list.size());
for (Element element : list) {
String names = element.getName();
String value = element.getStringValue();
// 获取单条回执信息的详细信息
List<Element> 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<Element> list = root.elements();
int failed_count=0; // 失败记录数
for (Element element : list) {
List<Element> 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;
}
}