@ -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_prepared 1 = voucherHead . addElement ( " pk_prepared " ) ; / / 制单人 / 非空
pk_prepared 1. 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_org 1 = voucherHead . addElement ( " pk_org " ) ; / / 所属组织 / 非空
pk_org 1. 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_group 1 = voucherHead . addElement ( " pk_group " ) ; / / 所属集团 如果不输集团取当前登陆集团
pk_group 1. 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 ;
}
}