📄 gzdacurrencysaveblh.java
字号:
package gov.gdlt.ssgly.taxcore.taxblh.gzda.service;
import java.util.*;
import java.sql.*;
import java.io.*;
import java.util.Iterator;
import java.text.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import com.ibatis.dao.client.DaoManager;
import com.ibatis.sqlmap.client.*;
import com.ibatis.sqlmap.engine.builder.xml.*;
import com.ibatis.common.resources.*;
import com.ibatis.dao.client.*;
import gov.gdlt.ssgly.taxcore.taxdao.gzda.persistence.*;
import gov.gdlt.ssgly.taxcore.taxdao.gzda.persistence.blob.*;
import gov.gdlt.ssgly.taxcore.taxdao.gzda.persistence.iface.*;
import gov.gdlt.ssgly.taxcore.taxdao.gzda.persistence.sqlmapdao.*;
import gov.gdlt.ssgly.taxcore.taxblh.gzda.service.xmlinterface.impl.*;
import gov.gdlt.ssgly.taxcore.taxblh.gzda.service.xmlinterface.*;
import gov.gdlt.ssgly.taxcore.taxevent.gzda.persistence.entity.GZDAfileAbstrVO;
import gov.gdlt.ssgly.taxcore.comm.exception.TaxBaseBizException;
import gov.gdlt.ssgly.taxcore.comm.exception.TaxBaseSystemException;
import gov.gdlt.ssgly.taxcore.comm.event.ResponseEvent;
import gov.gdlt.ssgly.taxcore.comm.event.RequestEvent;
import gov.gdlt.ssgly.taxcore.comm.blh.BaseBizLogicHandler;
import gov.gdlt.ssgly.taxcore.comm.servicelocator.SqlMapLocator;
import gov.gdlt.ssgly.taxcore.comm.servicelocator.JDBCLocator;
public class GZDAcurrencySaveBLH extends BaseBizLogicHandler implements Command{
protected DaoManager daoManager;
protected PopularDao popularDao;
public GZDAcurrencySaveBLH() {
daoManager = DaoConfig.getDaomanager();
popularDao = (PopularDao) daoManager.getDao(gov.gdlt.ssgly.taxcore.taxdao.gzda.persistence.iface.PopularDao.class);
}
private int insertPopular(String name,Map parameter){
return popularDao.popularInsert(name,parameter);
}
protected int updatePopular(String name,Map parameter){
return popularDao.popularUpdate(name,parameter);
}
private int deletePopular(String name,Map parameter){
return popularDao.popularUpdate(name,parameter);
}
private List selectFileAbstrcol(String name,String pare){
return popularDao.fileAbstrSelect(name,pare);
}
protected int insertFileAbstrt(String name,GZDAfileAbstrVO parameter){
return popularDao.fileAbstrInsert(name,parameter);
}
private java.util.Date parseDate(String yyyymmdd, String format)
{
try{
SimpleDateFormat formatter = new SimpleDateFormat(format);
java.util.Date date;
ParsePosition pos = new ParsePosition(0);
date = formatter.parse(yyyymmdd, pos);
return date;
}
catch(Exception e){
throw new IllegalArgumentException("错误的日期:"+yyyymmdd+e);
}
}
private Hashtable getColumeType(String tablename){
Hashtable vc=new Hashtable();
String sql="select * from "+tablename;
Connection con=null;
// System.out.println("con:"+con);
ResultSet res = null;
Statement stmt = null;
ResultSetMetaData data = null;
int col=0;
String cName;
int ctName;
//SqlMapClient sqlMap=null;
try{
//con=ConFactor.getConnectFromT3();
//con=ConFactor.getConnJdbc();
//sqlMap=SqlMapLocator.getInstance().getSqlMapClient();
//sqlMap.startTransaction();
//con = sqlMap.getCurrentConnection();
con=JDBCLocator.getInstance().getJDBCConnection();
stmt=con.createStatement();
res=stmt.executeQuery(sql);
data=res.getMetaData();
col=data.getColumnCount();
for(int i=1;i<=col ;i++){
cName=data.getColumnName(i);
ctName=data.getColumnType(i);
//System.out.println(cName+":"+ctName);
vc.put(cName,new Integer(ctName));
}
}
catch(SQLException se) {
System.out.println(se.toString());
}
finally{
try
{ if(con!=null)
// sqlMap.endTransaction();
con.close();
}
catch(SQLException se) {
}
}
return vc;
}
private Map getParameter(String[] name,String[] value,Hashtable ctype ){
Map m=new HashMap();
for(int i=0;i < name.length;i++){
String key=name[i];
String kvalue=value[i];
//System.out.println(key+"--"+kvalue);
Integer IType=(Integer)ctype.get(key);
//System.out.println("----:"+IType);
int iType=Integer.parseInt(IType.toString());
switch(iType){
case Types.BIT:case Types.TINYINT:case Types.BIGINT:case Types.LONGVARBINARY:
if((kvalue==null)||(kvalue.trim()=="")) kvalue="0";
m.put(key,Double.valueOf(kvalue));
break;
case Types.VARBINARY:case Types.BINARY:case Types.LONGVARCHAR:
break;
case Types.NULL:
break;
case Types.NUMERIC: case Types.DECIMAL:case Types.INTEGER:case Types.SMALLINT:
if((kvalue==null)||(kvalue.trim()=="")) kvalue="0";
//System.out.println(key+"---------------"+Double.valueOf(kvalue));
m.put(key,Double.valueOf(kvalue));
break;
case Types.FLOAT:case Types.REAL: case Types.DOUBLE:
if((kvalue==null)||(kvalue.trim()=="")) kvalue="0";
m.put(key,Double.valueOf(kvalue));
break;
case Types.DATE: case Types.TIME: case Types.TIMESTAMP:
if((kvalue==null)||(kvalue.trim()=="")) kvalue="1900-01-01";
m.put(key,DateEx.parseDate(kvalue,"yyyy-MM-dd"));
break;
default:
if((kvalue==null)||(kvalue.trim()=="")) kvalue=" ";
//System.out.println(key+"-------------"+kvalue);
m.put(key,new String(kvalue));
break;
}
}
return m;
}
private Param xmlParse(String xml,String enc){
String lowxml=xml;//xml.toLowerCase(); //转换成小写
StringReader SR = new StringReader(lowxml);
String names[]=null;
String values[]=null;
Map map=null;
Vector lab=new Vector();
Vector val=new Vector();
//ignore the DTD parse.
try{
SAXBuilder builder = new SAXBuilder();
Document document = builder.build(SR);
XMLOutputter out = new XMLOutputter();
out.setEncoding(enc);
// Get the root element
Element root = document.getRootElement();
Element action=root.getChild("action");
//Element sql=params.getChild("ITEM"); //只取一个item
List actions=action.getChildren();
Iterator i = actions.iterator();
while (i.hasNext()) { //对每个action
Element siu = (Element) i.next(); //取具体的有insert,update
String tableName=siu.getAttributeValue("tablename"); //操作的表名
Hashtable tType = getColumeType(tableName) ;
String label=siu.getAttributeValue("label"); //xml配置标签-调 用方法的ID
//System.out.println(label);
List rows=siu.getChildren() ;
Iterator j = rows.iterator();
while(j.hasNext()){ //对每个action的每同行
Element row=(Element)j.next();
int rowlen = row.getChildren().size(); //每行的长度度,即字段数
//System.out.println(rowlen);
names=new String[rowlen];
values=new String[rowlen];
List fields=row.getChildren();
Iterator f=fields.iterator();
int k=0;
while(f.hasNext()){
Element field=(Element)f.next();
names[k]=field.getName().toUpperCase();
values[k]=field.getText()==null?" ":field.getText();
k++;
}
map=getParameter(names,values,tType);
val.add(map);
lab.add(label);
}
//vector 多个map返回
}
}catch(JDOMException je){
System.out.println("传入的XML造型错误:"+je.toString());
}
Param param=new Param();
param.setLabel(lab);
param.setValue(val);
return param;
}
public String execute( RequestHelper helper ){
String xml=helper.getParaXml();
int oRnt=0;
//System.out.println(xml);
Param p=xmlParse(xml,"GBK");
Vector label=p.getLabel();
Vector value=p.getValue();
daoManager.startTransaction();
try{
for (int i = 0; i < label.size(); i++) {
String tag = (String) label.elementAt(i);
Map para = (Map) value.elementAt(i);
if (tag.indexOf("nsert") > 0) {
oRnt = insertPopular(tag, para);
}
else {if(tag.indexOf("elete")>0){
oRnt=deletePopular(tag, para);
}else{
oRnt = updatePopular(tag, para);
}
}
}
daoManager.commitTransaction();
}catch(Exception e){
daoManager.endTransaction();
String error=e.toString();
//error=error.substring(error.indexOf("ORA"),error.length());
System.out.println(error);
}finally{
//daoManager.commitTransaction();
}
return String.valueOf("<root>"+oRnt+"</root>");
}
protected String getCode(String code){
String res="";
List li=selectFileAbstrcol("selectfileabstrcode",code);
if(li.size()>0){
HashMap ha=(HashMap)li.get(0);
res=(String)ha.get("CODE");
}
return res;
}
protected String getTranno(){
String res="";
List li=selectFileAbstrcol("selectno","f");
if(li.size()>0){
HashMap ha=(HashMap)li.get(0);
res=ha.get("ID").toString();
}
return res;
}
protected double getLeve(String code){
double res=-1;
List li=selectFileAbstrcol("selectfileabstrmaxleve",code);
if(li.size()>0){
HashMap ha=(HashMap)li.get(0);
//System.out.println();
res=Double.parseDouble(ha.get("LEVE").toString());
}
return res;
}
/*
public int currencySaveFile(String type,String id,String cname,String author,String operid,String tpayerid,String title,
String doc,String abstr,String describe, FileInputStream filedoc){
int ret=0;
int leve=0;
String no="";
daoManager.startTransaction();
String c=getCode(id);
if(c.trim().equalsIgnoreCase("")){
throw new RuntimeException("分类ID还没有建立,请维护ID!");
}
leve=getLeve(id);
HashMap m=new HashMap();
m.put("LEVE",new Integer(leve));
no=getTranno();
GZDAfileAbstrVO gzdavo=new GZDAfileAbstrVO();
gzdavo.setABSTR(abstr);
gzdavo.setAUTHOR(author);
gzdavo.setCODE(id+"X");
gzdavo.setDESCTIBE(describe);
gzdavo.setDOC(doc);
gzdavo.setFILESTATUE("0"); //0---自己
gzdavo.setFILETYPE("1"); //1---是否叶子?
gzdavo.setLEVE(leve);
gzdavo.setNAME(cname);
gzdavo.setOPERID(operid);
gzdavo.setTITLE(title);
gzdavo.setTPAYERID(tpayerid);
gzdavo.setTRANNO(no);
gzdavo.setTYPE(type);
gzdavo.setURL(no);
try{
daoManager.commitTransaction();
int st=updatePopular("updatefdnext",m);
st=insertFileAbstrt("insertfileabstri",gzdavo);
OracleBlobParseBLH oc=new OracleBlobParseBLH();
oc.saveblob(no,filedoc);
}catch(Exception e){
System.out.println(e.toString());
daoManager.endTransaction();
}
return ret ;
}
*/
public int save( String xml ){
int oRnt=0;
//System.out.println(xml);
Param p=xmlParse(xml,"GBK");
Vector label=p.getLabel();
Vector value=p.getValue();
daoManager.startTransaction();
try{
for (int i = 0; i < label.size(); i++) {
String tag = (String) label.elementAt(i);
Map para = (Map) value.elementAt(i);
if (tag.indexOf("nsert") > 0) {
oRnt = insertPopular(tag, para);
}
else {if(tag.indexOf("elete")>0){
oRnt=deletePopular(tag, para);
}else{
oRnt = updatePopular(tag, para);
}
}
}
daoManager.commitTransaction();
}catch(Exception e){
daoManager.endTransaction();
String error=e.toString();
//error=error.substring(error.indexOf("ORA"),error.length());
System.out.println(error);
}finally{
//daoManager.commitTransaction();
}
return oRnt;
}
protected ResponseEvent validateData(RequestEvent req) throws
Exception {
return null;
}
protected ResponseEvent performTask(RequestEvent req) throws
TaxBaseBizException, TaxBaseSystemException {
String dealMethod = req.getDealMethod();
ResponseEvent resEvn = new ResponseEvent();
return resEvn;
}
public static void main(String[] args) {
String xml="<?xml version='1.0' encoding='GBK'?>"+
"<root>"+
"<action>"+
//"<update tablename='T_GZDA_FILEMANAGERABSTR' label='updatefdnext'>"+
//"<rows>"+
// "<leve>4</leve>"+
// "</rows>"+
// "</update>"+
"<insert tablename='T_GZDA_FILEMANAGERABSTR' label='insertfileabstr'>"+
"<rows>"+
"<CODE>12</CODE>"+
"<NAME>nn</NAME>"+
"<OPERID>123</OPERID>"+
"<FILETYPE>1</FILETYPE>"+
"<TYPE>doc</TYPE>"+
"<URL>2344</URL>"+
"<FILESTATUE>0</FILESTATUE>"+
"<CREATEDATE>2002-02-02</CREATEDATE>"+
"<AUTHOR>贺启欧</AUTHOR>"+
"<TITLE>aaaaa</TITLE>"+
"<ABSTR>sssss</ABSTR>"+
"<DOC>ddd</DOC>"+
"<DESCTIBE>ffff</DESCTIBE>"+
"<LEVE>4</LEVE>"+
"<TRANNO>12347</TRANNO>"+
"<TPAYERID>1234EE</TPAYERID>"+
"</rows>"+
"</insert>"+
"</action>"+
"</root>";
GZDAcurrencySaveBLH save=new GZDAcurrencySaveBLH();
int rt=0;
//rt=save.save(xml);
//List la=save.selectFileAbstrcol("selectfileabstrmaxleve","gh");
//HashMap ha=(HashMap)la.get(0);
System.out.println(save.getTranno());
}
class Param{
private Vector rowLabel;
private Vector valueMap;
public void setLabel(Vector rowLabel){
this.rowLabel=rowLabel;
}
public void setValue(Vector valueMap){
this.valueMap=valueMap;
}
public Vector getLabel(){
return this.rowLabel;
}
public Vector getValue(){
return this.valueMap;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -