ソースを参照

git-svn-id: https://192.168.57.71/svn/lyggkj@59 1a6f6e3a-4066-fe46-b609-79c204482ece

ld_liufl 9 年 前
コミット
216ed6e200
26 ファイル変更3892 行追加26 行削除
  1. 43 1
      gkaq/yjpt-flex/trunk/html-template/index.template.html
  2. 3 0
      gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/common/Global.as
  3. 7 0
      gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/model/SystemModel.as
  4. 89 20
      gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/view/zysqbp/ZysqbpAudit.mxml
  5. 10 2
      gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/view/zysqbp/ZysqbpView.mxml
  6. 38 0
      gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/view/zysqbp/zysqbpConfirm.mxml
  7. BIN
      gkaq/yjpt-java/trunk/java_src/DBstep/iDBManager2000.class
  8. 215 0
      gkaq/yjpt-java/trunk/java_src/DBstep/iDBManager2000.java
  9. BIN
      gkaq/yjpt-java/trunk/java_src/DBstep/iFileUpLoad2000.class
  10. BIN
      gkaq/yjpt-java/trunk/java_src/DBstep/iMsgServer2000.class
  11. 10 0
      gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/common/GlobalData.java
  12. 1 1
      gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/common/LoginFilter.java
  13. 5 0
      gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/controller/auth/AuthenticateController.java
  14. 196 0
      gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/controller/zysqbp/ZysqbpController.java
  15. 1413 0
      gkaq/yjpt-java/trunk/yjpt/OfficeServer.jsp
  16. 463 0
      gkaq/yjpt-java/trunk/yjpt/Service.jsp
  17. BIN
      gkaq/yjpt-java/trunk/yjpt/WEB-INF/lib/ojdbc14.jar
  18. BIN
      gkaq/yjpt-java/trunk/yjpt/WEB-INF/lib/ojdbc6.jar
  19. 6 1
      gkaq/yjpt-java/trunk/yjpt/WEB-INF/web.xml
  20. 6 1
      gkaq/yjpt-java/trunk/yjpt/WEB-INF/web.xml.ftl
  21. 1375 0
      gkaq/yjpt-java/trunk/yjpt/ZysqbpPrintSignature.jsp
  22. 4 0
      gkaq/yjpt-java/trunk/yjpt/iSignatureAPI.js
  23. 4 0
      gkaq/yjpt-java/trunk/yjpt/iSignatureHTML.js
  24. 4 0
      gkaq/yjpt-java/trunk/yjpt/iWebOffice2009.js
  25. BIN
      gkaq/yjpt-java/trunk/yjpt/wjd/vssver2.scc
  26. 0 0
      gkaq/yjpt-java/trunk/yjpt/wjd/wjd.key

+ 43 - 1
gkaq/yjpt-flex/trunk/html-template/index.template.html

@@ -54,7 +54,7 @@
             attributes.name = "${application}";
             attributes.align = "middle";
             swfobject.embedSWF(
-                "${swf}.swf?version=4.1.7", "flashContent", 
+                "${swf}.swf?version=4.1.3", "flashContent", 
                 "${width}", "${height}", 
                 swfVersionStr, xiSwfUrlStr, 
                 flashvars, params, attributes);
@@ -133,5 +133,47 @@
                 <!--<![endif]-->
             </object>
         </noscript>     
+		
+		  <!--------------------------- iSignature begin: ----------------------------------->
+        <form name="mainForm" style="display:none">  
+			<div id="obj" ></div> 
+		</form>
+		
+        <script type="text/javascript"> 
+        	window.onload=function(){ 
+				var ServiceUrl =  window.location.protocol+"//"+ window.location.hostname +":"+window.location.port+ window.location.pathname+ "Service.jsp";
+				var objHtml= '<OBJECT id="SignatureControl" classid="clsid:D85C89BE-263C-472D-9B6B-5264CD85B36E" codebase="iSignatureHTML.cab#version=8,2,2,56" width="0" height="0" >'+
+		 			'<param name="ServiceUrl"  value="'+
+					ServiceUrl+'"  > '+
+					'</OBJECT>';
+				document.getElementById('obj').innerHTML = objHtml;
+			}
+        	
+			//作用:进行批量签章
+			function RunBatchSignature(documentID,userName,ExtParam){ 
+				ExtParam = encodeURI(ExtParam,"utf-8");
+				//userName = encodeURI(userName,"utf-8"); 
+  				mainForm.SignatureControl.FieldsList="BH=编号;ZYDW=作业单位;ZYWTR=作业委托人;CM=船名;XCGLFZR=现场管理负责人;WXHWMCBH=危险品名称;WPBH=物品编号;JSPM=技术品名;BZ=包装;WXPLB=类别和项别;BYZD4=包装类别;INOROUT=进出港;ZYSL=作业数量(吨);SG=上港;XG=下港;MAO=内外贸;HZWXX=火灾危险性;DXDJ=毒性等级;WRLB=污染类别;JZXSL=集装箱数量;HC=航次;HWZL=货物种类;HWXS=货物形式;LHXZ=理化性质;ZYDD=作业地点;ZYSJQ=作业时间起;ZYSJZ=作业时间止;AQFFCS=安全防范措施;BGR=报告人;LXFS=联系方式;BGSJ=报告时间;BYZD2=申报员证书编号;SHYJ=审核意见;SHR=审核人;SHSJ=审核时间";       //所保护字段
+  				mainForm.SignatureControl.Position(0,0);                        //签章位置
+  				mainForm.SignatureControl.DocumentList=documentID;                        //签章页面ID
+  				mainForm.SignatureControl.WebSetFontOther("True","同意通过","0","宋体","11","000128","True");  //默认签章附加信息及字体,具体参数信息参阅技术白皮书
+  				mainForm.SignatureControl.SaveHistory="True";                    //是否自动保存历史记录,true保存  false不保存  默认值false
+  				mainForm.SignatureControl.UserName="wjd";                          //文件版签章用户
+  				mainForm.SignatureControl.WebCancelOrder=0;			                 //签章撤消原则设置, 0无顺序 1先进后出  2先进先出  默认值0
+  				mainForm.SignatureControl.DivId = "yfdiv";                    //签章所在层
+  				mainForm.SignatureControl.EnableMove = "false";
+  				mainForm.SignatureControl.AutoCloseBatchWindow=true;		//为true当批量签章完成后,系统自动关闭进度窗口,否则不自动关闭,系统默认为false。
+  				mainForm.SignatureControl.ExtParam = ExtParam;						//输入的附加信息
+  				return mainForm.SignatureControl.RunBatchSignature();                //执行批量签章 
+			}
+			
+			//打开危险品审批的打印页面
+			function ZysqbpPrintSignature(documentID){
+				var url = "/yjpt/ZysqbpPrintSignature.jsp?Template=1468222709986&UserName=&FileType=.doc&documentID="+documentID;
+				window.open (url,"_blank");
+			}
+		</script>
+		<!------------------------------ iSignature end ----------------------------------->
+		
    </body>
 </html>

+ 3 - 0
gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/common/Global.as

@@ -73,6 +73,9 @@ package com.jtgh.yjpt.common
 			return map;
 		}
 		
+		/** 危险品审批是否启用签章,默认不启用*/
+		public static var iSignature:String = YesNoSelect.NO;
+		
 		/** 超级管理员 */
 		public static var adminId:Number = 1;
 		/** 同步用户 */

+ 7 - 0
gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/model/SystemModel.as

@@ -8,19 +8,24 @@ package com.jtgh.yjpt.model
 	import com.jtgh.yjpt.select.MenuTypeSelect;
 	import com.jtgh.yjpt.select.YesNoSelect;
 	import com.jtgh.yjpt.view.Workspace;
+	import com.jtgh.yjpt.view.core.ChangePwd;
 	import com.jtgh.yjpt.view.core.LoginPanel;
 	import com.jtgh.yjpt.vo.access.UserVo;
 	import com.jtgh.yjpt.vo.common.CodeVo;
 	import com.jtgh.yjpt.vo.sys.ButtonVo;
 	import com.jtgh.yjpt.vo.sys.MenuVo;
 	
+	import flash.display.DisplayObject;
 	import flash.events.Event;
 	import flash.utils.Dictionary;
 	import flash.utils.getDefinitionByName;
 	
+	import mx.controls.Alert;
 	import mx.core.UIComponent;
 	import mx.core.mx_internal;
+	import mx.events.CloseEvent;
 	import mx.events.FlexEvent;
+	import mx.resources.ResourceManager;
 	
 	import spark.components.Group;
 
@@ -166,6 +171,8 @@ package com.jtgh.yjpt.model
 				Global.btyyj=bc.getAttribute("btyyj") as  String;
 				Global.thyj=bc.getAttribute("thyj") as  String;
 				Global.version=bc.getAttribute("version") as  String;
+				//设置是否在危险品审批中使用签章功能的参数
+				Global.iSignature=bc.getAttribute("iSignature") as String;
 			}
 			//界面,登陆界面换成主框架
 			thisModel.mainPane.removeAllElements();

+ 89 - 20
gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/view/zysqbp/ZysqbpAudit.mxml

@@ -10,34 +10,22 @@
 		 horizontalAlign="center">
 	<fx:Script>
 		<![CDATA[
-			import com.jtgh.yjpt.common.BusinessContext;
 			import com.jtgh.yjpt.common.Global;
 			import com.jtgh.yjpt.common.util.Constants;
 			import com.jtgh.yjpt.common.util.Utils;
 			import com.jtgh.yjpt.model.task.TaskModel;
 			import com.jtgh.yjpt.model.zysqbp.ShbpEditModel;
 			import com.jtgh.yjpt.model.zysqbp.ShbpModel;
-			import com.jtgh.yjpt.view.jsxmaqsc.DataList;
-			import com.jtgh.yjpt.vo.common.AccessoryVo;
 			import com.jtgh.yjpt.vo.common.CodeVo;
-			import com.jtgh.yjpt.vo.gkgq.GqVo;
-			import com.jtgh.yjpt.vo.jyr.JyrVo;
-			import com.jtgh.yjpt.vo.jyrxxgl.JyrxxglVo;
-			import com.jtgh.yjpt.vo.zyfzndjy.Gkwxhwzyfzbl_fzVo;
 			import com.jtgh.yjpt.vo.zysqbp.ZysqbpVo;
+			import com.jtgh.yjpt.select.YesNoSelect;
+			import flash.external.ExternalInterface;
 			
 			import mx.collections.ArrayCollection;
-			import mx.controls.Alert;
 			import mx.core.FlexGlobals;
 			import mx.events.CloseEvent;
 			import mx.events.FlexEvent;
-			import mx.events.ListEvent;
-			import mx.formatters.DateFormatter;
-			import mx.rpc.events.ResultEvent;
 			import mx.utils.StringUtil;
-			
-			import spark.components.ComboBox;
-			import spark.components.Label;
 			[Bindable]
 			public var thisModel:ShbpEditModel = new ShbpEditModel();
 			[Bindable]
@@ -85,24 +73,105 @@
 			/**
 			 * 通过
 			 */
+//			public function doPass(e:Event):void{
+//				var shjy:String=StringUtil.trim(shyj.text);
+//				if(shjy==""){
+//					Utils.showInfoMessage("shyj.empty",null,"zysqbp");
+//					return;
+//				}
+//				Utils.doOtherConfirm(function():void{
+//					var shDate:Date=shsj.selectedDate;
+//					Utils.callRemote("zysqbpController","aduit",function():void{
+//						if(taskModel!=null){
+//							taskModel.thisView.doQuery();
+//						}else{
+//							model.doQuery(null);
+//						}
+//						view.dispatchEvent(new CloseEvent(Event.CLOSE));
+//					},shjy,shDate,true,zysqbp);
+//				});
+//			}
 			public function doPass(e:Event):void{
 				var shjy:String=StringUtil.trim(shyj.text);
 				if(shjy==""){
 					Utils.showInfoMessage("shyj.empty",null,"zysqbp");
 					return;
+				} 
+				if(Global.iSignature== YesNoSelect.YES){
+					var view_self:ZysqbpAudit = this; 
+					var view:zysqbpConfirm = new zysqbpConfirm(); 
+					view.v = view_self;
+					Utils.popupWindow("确认信息",view as DisplayObject,FlexGlobals.topLevelApplication as DisplayObject,null, 300, 150);  
 				}
-				Utils.doOtherConfirm(function():void{
+				else{
+					Utils.doOtherConfirm(function():void{
 					var shDate:Date=shsj.selectedDate;
-					Utils.callRemote("zysqbpController","aduit",function():void{
+					Utils.callRemote("zysqbpController","aduit",function():void{ 				
 						if(taskModel!=null){
 							taskModel.thisView.doQuery();
 						}else{
 							model.doQuery(null);
 						}
 						view.dispatchEvent(new CloseEvent(Event.CLOSE));
-					},shjy,shDate,true,zysqbp);
-				});
+						},shjy,shDate,true,zysqbp);
+					});
+				} 
+			}
+			/**
+			 * 确认操作页面"同意"按钮回调的函数
+			 */
+			public function ConfirmBackPass():void{
+				//Alert.show("pass");
+				PassCallRemoteFun();
+			}
+			
+			/**
+			 * 确认操作页面"同意且盖章"按钮回调的函数
+			 */
+			public function ConfirmBackPassAndSignature():void{
+				//Alert.show("pass signature");
+				if(CallSignatue()){//调用签章代码,签章成功,再审批通过
+					PassCallRemoteFun();
+				}
+			}
+			
+			public function CallSignatue():Boolean{
+				var shjy:String=StringUtil.trim(shyj.text);
+				var shDate:String=shsj.selectedDate.fullYear+"-"+ (shsj.selectedDate.month+1)+"-"+ shsj.selectedDate.date;  
+				var shr_txt:String=StringUtil.trim(shr.text);  
+				var ExtParam:String = "SHYJ=" +shjy + "\r\n"+
+					                  "SHR=" +shr_txt+ "\r\n"+
+								      "SHSJ=" + shDate + "\r\n";
+				//签章
+				var SignatureResult:Boolean =ExternalInterface.call("RunBatchSignature",zysqbp.id,Global.user.name,ExtParam);
+				return SignatureResult;
+			}
+			
+			/**
+			 * 点击通过按钮调用后台代码
+			 */
+			public function PassCallRemoteFun():void{
+				var shjy:String=StringUtil.trim(shyj.text);
+				if(shjy==""){
+					Utils.showInfoMessage("shyj.empty",null,"zysqbp");
+					return;
+				}
+				
+				var shDate:Date=shsj.selectedDate;
+				Utils.callRemote("zysqbpController","aduit",function():void{
+					
+					if(taskModel!=null){
+						taskModel.thisView.doQuery();
+					}else{
+						model.doQuery(null);
+					}
+					view.dispatchEvent(new CloseEvent(Event.CLOSE));
+				},shjy,shDate,true,zysqbp);
+				
 			}
+			
+
+
 			/**
 			 * 不同意
 			 */
@@ -215,7 +284,7 @@
 					back.includeInLayout=true;
 					disagree.visible=true;
 					disagree.includeInLayout=true;
-					shyj.text=Global.thyj;
+					shyj.text="";
 				}
 			}
 			
@@ -230,7 +299,7 @@
 					disagree.includeInLayout=false;
 					ty.selected=false;
 					bty.selected=false;
-					shyj.text="按照市政府“大气环境质量保障管控方案通知”要求,停止港口危险货物装卸过驳作业审批。敬请谅解,做好配合。";				
+					shyj.text=Global.thyj;
 				}else{
 					pass.visible=true;
 					pass.includeInLayout=true;

+ 10 - 2
gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/view/zysqbp/ZysqbpView.mxml

@@ -20,6 +20,8 @@
 			import com.jtgh.yjpt.select.MaoSelect;
 			import com.jtgh.yjpt.vo.common.CodeVo;
 			import com.jtgh.yjpt.vo.zysqbp.ZysqbpVo;
+			import com.jtgh.yjpt.select.YesNoSelect;
+			import flash.external.ExternalInterface;
 			
 			import mx.collections.ArrayCollection;
 			import mx.events.CloseEvent;
@@ -188,6 +190,11 @@
 				param.setParameter("type",PrintUtil.REPORT_EXPORT_TYPE_HTML);
 				PrintUtil.doPrint1(param,"_blank");
 			}
+			
+			protected function print2(event:MouseEvent):void{
+				ExternalInterface.call("ZysqbpPrintSignature",zysqbp.id);
+			}
+			
 			protected function download(event:MouseEvent):void{
 				var param:PrintParam=new PrintParam("zysqbp");
 				param.setParameter("id",zysqbp.id.toString());
@@ -688,9 +695,10 @@
 			</s:VGroup>
 		</s:BorderContainer>
 		<s:HGroup width="100%" height="40" gap="0" horizontalAlign="center" verticalAlign="middle">
+			<s:Button label="{resourceManager.getString('common','btn.print')}" click="print2(event)" skinClass="skins.cus.ButtonSkin" visible="{Global.iSignature==YesNoSelect.YES}" />
 			<s:Button label="{resourceManager.getString('common','btn.close')}" click="this.dispatchEvent(new CloseEvent(CloseEvent.CLOSE))" skinClass="skins.cus.ButtonSkin"/>
-			<s:Button label="{resourceManager.getString('common','btn.print')}" click="print(event)" skinClass="skins.cus.ButtonSkin"/>
-			<s:Button label="{resourceManager.getString('common','btn.download')}" click="download(event)" skinClass="skins.cus.ButtonSkin"/>
+			<s:Button label="{resourceManager.getString('common','btn.print')}" click="print(event)" skinClass="skins.cus.ButtonSkin" visible="{Global.iSignature!=YesNoSelect.YES}"/>
+			<s:Button label="{resourceManager.getString('common','btn.download')}" click="download(event)" skinClass="skins.cus.ButtonSkin" visible="{Global.iSignature!=YesNoSelect.YES}"/>
 		</s:HGroup>
 	</s:VGroup>
 </s:VGroup>

+ 38 - 0
gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/view/zysqbp/zysqbpConfirm.mxml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<s:VGroup xmlns:fx="http://ns.adobe.com/mxml/2009" 
+		  xmlns:eshangrao="com.systex.fp.jobschedule.util.*"
+		  xmlns:s="library://ns.adobe.com/flex/spark" 
+		  xmlns:mx="library://ns.adobe.com/flex/mx"  
+		  horizontalAlign="center"
+		  verticalAlign="middle"
+		  width="300" height="88">
+	  
+	<fx:Script>
+		<![CDATA[
+			import mx.events.CloseEvent;
+			[Bindable]
+			public var v:ZysqbpAudit;
+			
+		    public function doPass(e:Event):void{
+				this.dispatchEvent(new CloseEvent(CloseEvent.CLOSE));
+				//关闭自身 调用审批通过方法 
+				v.ConfirmBackPass();
+			}
+			
+			public function doPassAndSignature(e:Event):void{
+				this.dispatchEvent(new CloseEvent(CloseEvent.CLOSE));
+				//关闭自身 调用签章和审批通过方法
+				v.ConfirmBackPassAndSignature();
+			}
+		]]>
+	</fx:Script>
+	
+	<s:HGroup  width="100%" height="30"  horizontalAlign="center" verticalAlign="middle">
+		<s:Label id="tip" fontSize="15" fontWeight="bold" text="确认操作?"/>
+	</s:HGroup>
+	<s:HGroup y="67" width="100%" height="52" horizontalAlign="center" verticalAlign="middle"> 
+		<s:Button id="pass" label="同意" click="doPass(event)"  skinClass="skins.cus.ButtonSkin" />
+		<s:Button id="passAddSignature" label="同意且盖章" click="doPassAndSignature(event)"  skinClass="skins.cus.ButtonSkin"  width="100"/>
+		<s:Button id="close" label="{resourceManager.getString('common','btn.cancel')}" click="this.dispatchEvent(new CloseEvent(CloseEvent.CLOSE))" skinClass="skins.cus.ButtonSkin"/>
+	</s:HGroup> 
+</s:VGroup>

BIN
gkaq/yjpt-java/trunk/java_src/DBstep/iDBManager2000.class


+ 215 - 0
gkaq/yjpt-java/trunk/java_src/DBstep/iDBManager2000.java

@@ -0,0 +1,215 @@
+package DBstep;
+
+import java.sql.*;
+import java.io.*;
+import java.text.*;
+import java.util.*;
+
+/**
+ * <p>Title: iWebOffice网络文档SQL事例</p>
+ * <p>Description: </p>
+ * <p>Copyright: Copyright (c) 2005</p>
+ * <p>Company: www.goldgrid.com</p>
+ * @author 陈珈
+ * @version 1.0
+ */
+
+public class iDBManager2000 {
+
+  public String ClassString=null;
+  public String ConnectionString=null;
+  public String UserName=null;
+  public String PassWord=null;
+
+  public Connection Conn;
+  public Statement Stmt;
+
+
+  public iDBManager2000() {
+
+
+    //For ODBC
+    //ClassString="sun.jdbc.odbc.JdbcOdbcDriver";
+    //ConnectionString=("jdbc:odbc:DBDemo");
+    //UserName="dbdemo";
+    //PassWord="dbdemo";
+
+
+    //For Access Driver
+    //ClassString="sun.jdbc.odbc.JdbcOdbcDriver";
+    //ConnectionString=("jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=C:\\dbdemo.mdb;ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows=128;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;").replace('\\','/');
+
+    //For SQLServer Driver
+    //ClassString="com.microsoft.jdbc.sqlserver.SQLServerDriver";
+    //ConnectionString="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=DBDemo;User=dbdemo;Password=dbdemo";
+    //UserName="dbdemo";
+    //PassWord="dbdemo";
+	  
+	  
+	  
+	  //读取配置文件
+	  Properties properties = new Properties();
+
+		InputStream inputStream = null;
+		try {
+			
+			// 获取当前类加载的根目录,如:/C:/Program Files/Apache/Tomcat 6.0/webapps/fee/WEB-INF/classes/    
+			String path = iDBManager2000.class.getClassLoader().getResource("").toURI().getPath();      
+
+			inputStream = new FileInputStream(path+"spring/application.properties" );
+
+			properties.load(inputStream);
+
+			inputStream.close();
+			
+			  //For Oracle Driver
+//		    ClassString="oracle.jdbc.driver.OracleDriver";
+//		    ConnectionString="jdbc:oracle:thin:@localhost:1521:orcl";
+//		    UserName="yjptzj";
+//		    PassWord="yjpt";
+			ClassString = properties.getProperty("jdbc.driver");
+			ConnectionString= properties.getProperty("jdbc.url");
+			UserName = properties.getProperty("jdbc.username");
+			PassWord = properties.getProperty("jdbc.password");
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+ 
+	 
+
+    //For Oracle Driver
+    /*ClassString="oracle.jdbc.driver.OracleDriver";
+    ConnectionString="jdbc:oracle:thin:@192.168.18.200:1521:jjwl";
+    UserName="jjwl";
+    PassWord="jjwl"; */
+
+
+    //For MySQL Driver
+    //ClassString="org.gjt.mm.mysql.Driver";
+    //ConnectionString="jdbc:mysql://localhost/softforum?user=...&password=...&useUnicode=true&characterEncoding=8859_1";
+    //ClassString="com.mysql.jdbc.Driver";
+    //ConnectionString="jdbc:mysql://localhost/dbstep?user=root&password=&useUnicode=true&characterEncoding=gb2312";
+
+    //For Sybase Driver
+    //ClassString="com.sybase.jdbc.SybDriver";
+    //ConnectionString="jdbc:sybase:Tds:localhost:5007/tsdata"; //tsdata为你的数据库名
+    //Properties sysProps = System.getProperties();
+    //SysProps.put("user","userid");
+    //SysProps.put("password","user_password");
+    //If using Sybase then DriverManager.getConnection(ConnectionString,sysProps);
+  }
+
+  public boolean OpenConnection()
+  {
+   boolean mResult=true;
+   try
+   {
+     Class.forName(ClassString);
+     if ((UserName==null) && (PassWord==null))
+     {
+       Conn= DriverManager.getConnection(ConnectionString);
+     }
+     else
+     {
+       Conn= DriverManager.getConnection(ConnectionString,UserName,PassWord);
+     }
+
+     Stmt=Conn.createStatement();
+     mResult=true;
+   }
+   catch(Exception e)
+   {
+     System.out.println(e.toString());
+     mResult=false;
+   }
+   return (mResult);
+  }
+
+  //关闭数据库连接
+  public void CloseConnection()
+  {
+   try
+   {
+     Stmt.close();
+     Conn.close();
+   }
+   catch(Exception e)
+   {
+     System.out.println(e.toString());
+   }
+  }
+
+  public String GetDateTime()
+  {
+   Calendar cal  = Calendar.getInstance();
+   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+   String mDateTime=formatter.format(cal.getTime());
+   return (mDateTime);
+  }
+
+  public  java.sql.Date  GetDate()
+  {
+    java.sql.Date mDate;
+    Calendar cal  = Calendar.getInstance();
+    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+    String mDateTime=formatter.format(cal.getTime());
+    return (java.sql.Date.valueOf(mDateTime));
+  }
+
+  public int GetMaxID(String vTableName,String vFieldName)
+  {
+   int mResult=0;
+   String mSql=new String();
+   iDBManager2000 DbaObj=new iDBManager2000();
+   mSql = "select max("+vFieldName+")+1 as MaxID from " + vTableName;
+   if (DbaObj.OpenConnection())
+   {
+     try
+     {
+       ResultSet result=DbaObj.ExecuteQuery(mSql);
+       if (result.next())
+       {
+         mResult=result.getInt("MaxID");
+       }
+       if (mResult==0) mResult=1;
+       //System.out.println(String.valueOf(mResult));
+       result.close();
+     }
+     catch(Exception e)
+     {
+       System.out.println(e.toString());
+     }
+     DbaObj.CloseConnection();
+   }
+   return (mResult);
+ }
+
+  public ResultSet ExecuteQuery(String SqlString)
+  {
+    ResultSet result=null;
+    try
+    {
+      result=Stmt.executeQuery(SqlString);
+    }
+    catch(Exception e)
+    {
+      System.out.println(e.toString());
+    }
+    return (result);
+  }
+
+  public int ExecuteUpdate(String SqlString)
+  {
+    int result=0;
+    try
+    {
+      result=Stmt.executeUpdate(SqlString);
+    }
+    catch(Exception e)
+    {
+      System.out.println(e.toString());
+    }
+    return (result);
+  }
+}

BIN
gkaq/yjpt-java/trunk/java_src/DBstep/iFileUpLoad2000.class


BIN
gkaq/yjpt-java/trunk/java_src/DBstep/iMsgServer2000.class


+ 10 - 0
gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/common/GlobalData.java

@@ -84,6 +84,12 @@ public class GlobalData {
 					.getBean(UserService.class);
 			TB_USER = userService.findOne(Long.parseLong(tbUser));
 		}
+		
+		//获得是否启用危险品审批中签章功能的配置信息
+		String IsUse_iSignature = sc.getInitParameter("iSignature");
+		if(!StringUtils.isEmpty(IsUse_iSignature))
+			iSignature = IsUse_iSignature;
+		
 		try {
 			GlobalData.initProperties();
 			GlobalData.initApply();
@@ -389,6 +395,10 @@ public class GlobalData {
 	public static String JJR_MENU = "008001";
 
 	public static boolean isJunit = false;
+	
+	
+	/** 危险品审批是否启用签章,默认不启用*/
+	public static String iSignature = Constants.NO;
 
 	/**
 	 * 超级用户ID

+ 1 - 1
gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/common/LoginFilter.java

@@ -33,7 +33,7 @@ public class LoginFilter implements Filter {
 			"/yjpt/resource.*", "/yjpt/img.*", "/yjpt/messagebroker/amf.*",
 			"/yjpt/upload.*", "/yjpt/downloadImage.*",
 			"/yjpt/.*QrCodePrint.do", "/yjpt/checkcode.do", "/yjpt/state.do",
-			"/yjpt/loginForExtra.do" ,"/yjpt/jyxkzAndFz.do","/yjpt/downloadYhsc.do"};
+			"/yjpt/loginForExtra.do" ,"/yjpt/jyxkzAndFz.do","/yjpt/downloadYhsc.do","/yjpt/GetmSignatureData.do"};
 
 	/**
 	 * 初始化

+ 5 - 0
gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/controller/auth/AuthenticateController.java

@@ -389,6 +389,11 @@ public class AuthenticateController extends BaseController {
 		bc.setAttribute("btyyj", codeService.findOne(11200015l).getBz());
 		bc.setAttribute("thyj", codeService.findOne(11200016l).getBz());
 		bc.setAttribute("version", GlobalData.APP_VERSION);
+		
+		
+		//设置是否在危险品审批中使用签章功能的参数
+		bc.setAttribute("iSignature", GlobalData.iSignature);
+		
 		if (Constants.NO.equals(user.getSfjyr())) {
 			// 非经营人
 			bc.setAttribute("initMenu",

+ 196 - 0
gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/controller/zysqbp/ZysqbpController.java

@@ -3,6 +3,7 @@ package com.jtgh.yjpt.controller.zysqbp;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -4654,5 +4655,200 @@ public class ZysqbpController extends BaseController {
 		}
 		return strings;
 	}
+	
+	/*
+	 * 批量签章时,获取所要保护的数据 
+	 * xh 2016.7.4
+	 * (  public String GetmSignatureData(@RequestParam String documentID,HttpSession session)  )
+	 */
+	@RequestMapping(value = "GetmSignatureData", method = RequestMethod.GET)
+	@ResponseBody 
+	public String GetmSignatureData(@RequestParam String documentID){ 
+		ZysqbpEntity data = zysqbpService.findOne(Long.parseLong(documentID));
+		
+		String audit_user="",audit_date="",audit_op="";
+		SimpleDateFormat myFmt=new SimpleDateFormat("yyyy-M-d");
+		SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		
+		//审批信息
+		if (data.getTaskList() != null && data.getTaskList().size() > 0) {
+			for (TaskInfoEntity task : data.getTaskList()) {
+				if ("wf.sc".equals(task.getCurrName())) {
+//					parameters.put("audit_user", task.getAuditUsername());
+//					parameters.put("audit_date", task.getAuditTime());
+//					parameters.put("audit_op", task.getAuditMsg());
+//					parameters.put("audit_dept", task.getByzd2());
+					audit_user = task.getAuditUsername();
+					if(task.getAuditTime()!=null)
+						audit_date = myFmt.format(task.getAuditTime());
+					audit_op =  task.getAuditMsg();	
+				}
+			}
+		}
+		
+		
+		String div = "\r\n";//分隔符
+		StringBuffer sb = new StringBuffer();
+		sb.append("BH="+ ((data.getBh()==null)?"":data.getBh())+ div);
+		sb.append("ZYDW="+((data.getZydw()==null)?"":data.getZydw().getGkjyr())+div);
+		sb.append("ZYWTR="+((data.getZywtr()==null)?"":data.getZywtr())+div);
+		sb.append("CM="+((data.getCm()==null)?"":data.getCm())+div);
+		sb.append("XCGLFZR="+((data.getXcglfzr()==null)?"":data.getXcglfzr())+div);
+		sb.append("WXHWMCBH="+((data.getWxhwmcbh()==null)?"":data.getWxhwmcbh())+div);
+		sb.append("WPBH="+((data.getWpbh()==null)?"":data.getWpbh())+div);
+		sb.append("JSPM="+((data.getJspm()==null)?"":data.getJspm())+div);
+		sb.append("BZ="+((data.getBz()==null)?"":data.getBz())+div);
+		sb.append("WXPLB="+((data.getWxplb()==null)?"":data.getWxplb())+div);
+		sb.append("BYZD4="+((data.getByzd4()==null)?"":data.getByzd4())+div);
+	 
+		String inorout ="";
+		// 1进港/2出港
+		if(data.getInorout().equals("1")){ 
+			inorout = "进港";
+		}
+		else if(data.getInorout().equals("2")){ 
+			inorout="出港";
+		} 
+		sb.append("INOROUT="+inorout+div);
+		
+		sb.append("ZYSL="+((data.getZysl()==null)?"":data.getZysl())+div);
+		sb.append("SG="+((data.getSg()==null)?"":data.getSg())+div);
+		sb.append("XG="+((data.getXg()==null)?"":data.getXg())+div);
+		
+		String mao="";
+		//1内贸/2外贸 
+		if(data.getMao().equals("1")){ 
+			mao = "内贸";
+		}
+		else if(data.getMao().equals("2")){ 
+			mao = "外贸 ";
+		}
+		sb.append("MAO="+mao+div);
+		
+		 
+		sb.append("HZWXX="+(data.getHzwxx()==null?"": resource.getString(data.getHzwxx().getName()))+div);
+		sb.append("DXDJ="+((data.getDxdj()==null)?"":data.getDxdj())+div);
+		sb.append("WRLB="+((data.getWrlb()==null)?"":data.getWrlb())+div);
+		sb.append("JZXSL="+((data.getWrlb()==null)?"":data.getWrlb())+div);
+		sb.append("HC="+((data.getHc()==null)?"":data.getHc())+div);
+		sb.append("HWZL="+  (data.getHwzl()==null?"": resource.getString(data.getHwzl().getName()))+div);
+		 	
+		String hwxs = data.getHwxs();
+		String hwxs1 = "";
+		if (hwxs != null && hwxs != "") {
+			if (hwxs.indexOf("1") != -1) {
+				hwxs1 = hwxs1 + "包件体;";
+			}
+			if (hwxs.indexOf("2") != -1) {
+				hwxs1 = hwxs1 + "中型散装容器;";
+			}
+			if (hwxs.indexOf("7") != -1) {
+				hwxs1 = hwxs1 + "槽罐车;";
+			}
+			if (hwxs.indexOf("10") != -1) {
+				hwxs1 = hwxs1 + "其他;";
+			}
+
+			if (hwxs.indexOf("3") != -1 || hwxs.indexOf("4") != -1
+					|| hwxs.indexOf("5") != -1 || hwxs.indexOf("6") != -1) {
+				String hwxs2 = "集装箱(";
+				if (hwxs.indexOf("3") != -1) {
+					hwxs2 = hwxs2
+							+ "20'"
+							+ data.getSl20c()
+									.toString()
+									.substring(
+											0,
+											data.getSl20c().toString().length() - 2)
+							+ "个,";
+				}
+				if (hwxs.indexOf("4") != -1) {
+					hwxs2 = hwxs2
+							+ "40'"
+							+ data.getSl40c()
+									.toString()
+									.substring(
+											0,
+											data.getSl40c().toString().length() - 2)
+							+ "个,";
+				}
+				if (hwxs.indexOf("5") != -1) {
+					hwxs2 = hwxs2
+							+ "45'"
+							+ data.getSl45c()
+									.toString()
+									.substring(
+											0,
+											data.getSl45c().toString().length() - 2)
+							+ "个,";
+				}
+				if (hwxs.indexOf("6") != -1) {
+					hwxs2 = hwxs2
+							+ "特种箱"
+							+ data.getSlspc()
+									.toString()
+									.substring(
+											0,
+											data.getSlspc().toString().length() - 2)
+							+ "个,";
+				}
+				hwxs1 = hwxs1 + hwxs2.substring(0, hwxs2.length() - 1) + ");";
+			}
+			if (hwxs.indexOf("8") != -1 || hwxs.indexOf("9") != -1) {
+				String hwxs3 = "罐柜(";
+				if (hwxs.indexOf("8") != -1) {
+					hwxs3 = hwxs3
+							+ "20'"
+							+ data.getSl20t()
+									.toString()
+									.substring(
+											0,
+											data.getSl20t().toString().length() - 2)
+							+ "个,";
+				}
+				if (hwxs.indexOf("9") != -1) {
+					hwxs3 = hwxs3
+							+ "40'"
+							+ data.getSl40t()
+									.toString()
+									.substring(
+											0,
+											data.getSl40t().toString().length() - 2)
+							+ "个,";
+				}
+				hwxs1 = hwxs1 + hwxs3.substring(0, hwxs3.length() - 1) + ");";
+			}
+			hwxs1 = hwxs1.substring(0, hwxs1.length() - 1);
+		}
+		
+		sb.append("HWXS="+hwxs1+div);
+		sb.append("LHXZ="+((data.getLhxz()==null)?"":data.getLhxz())+div);
+		 
+		String zydd = ((data.getZydd()==null)?"":resource.getString(data.getZydd().getName()))+
+				((data.getZyddqybh()==null) ? "" : data.getZyddqybh().getQynbmc());
+		sb.append("ZYDD="+zydd+div);
+		  
+		sb.append("ZYSJQ="+((data.getZysjq()==null)?"":myFmt2.format(data.getZysjq()))+div);
+		sb.append("ZYSJZ="+((data.getZysjz()==null)?"":myFmt2.format(data.getZysjz()))+div);
+		sb.append("AQFFCS="+((data.getAqffcs()==null)?"":data.getAqffcs())+div);
+		sb.append("BGR="+((data.getBgr()==null)?"":data.getBgr())+div);
+		sb.append("LXFS="+((data.getLxfs()==null)?"":data.getLxfs())+div);
+		sb.append("BGSJ="+((data.getBgsj()==null)?"":myFmt2.format(data.getBgsj()))+div);
+		sb.append("BYZD2="+((data.getByzd2()==null)?"":data.getByzd2())+div);
+ 
+		//审核意见 
+		sb.append("SHYJ="+audit_op+div);
+		sb.append("SHR="+audit_user+div);
+		sb.append("SHSJ="+audit_date+div);
+ 
+	     
+	    try {
+			return  java.net.URLEncoder.encode(sb.toString(),"gb2312");
+		} catch (UnsupportedEncodingException e) { 
+			e.printStackTrace();
+		}  
+	     
+	    return "error";
+	}
 
 }

+ 1413 - 0
gkaq/yjpt-java/trunk/yjpt/OfficeServer.jsp

@@ -0,0 +1,1413 @@
+<%@page contentType="text/html; charset=gb2312"%>
+<%@page import="java.io.*"%>
+<%@page import="java.text.*"%>
+<%@page import="java.util.*"%>
+<%@page import="java.sql.*"%>
+<%@ page import="java.net.*"%>
+<%@page import="java.text.SimpleDateFormat"%>
+<%@page import="java.text.DateFormat"%>
+<%@page import="java.util.Date"%>
+<%@page import="oracle.sql.BLOB"%>
+<%@page import="oracle.jdbc.OracleDriver"%>
+<%@page import="oracle.jdbc.driver.OracleResultSet"%>
+<%@page import="DBstep.iMsgServer2000.*"%>
+<%@page import="DBstep.iDBManager2000.*"%>
+<%!
+  public class iWebOffice {
+	
+	private String targetUrl;//获得数据的接口url
+	
+    private int mFileSize;
+    private byte[] mFileBody;
+    private String mFileName;
+    private String mFileType;
+    private String mFileDate;
+    private String mFileID;
+    private int mTemplateId;
+    private String mRecordID;
+    private String mTemplate;
+    private String mDateTime;
+    private String mOption;
+    private String mMarkName;
+    private String mPassword;
+    private String mMarkList;
+    private String mBookmark;
+    private String mDescript;
+    private String mHostName;
+    private String mMarkGuid;
+    private String mCommand;
+    private String mContent;
+    private String mHtmlName;
+    private String mDirectory;
+    private String mFilePath;
+    private String mUserName;
+    private int mColumns;
+    private int mCells;
+    private String mMyDefine1;
+    private String mLocalFile;
+    private String mRemoteFile;
+    private String mLabelName;
+    private String mImageName;
+    private String mTableContent;
+    private String Sql;
+    //打印控制
+    private String mOfficePrints;
+    private int mCopies;
+    //自定义信息传递
+    private String mInfo;
+    private DBstep.iMsgServer2000 MsgObj;
+    private DBstep.iDBManager2000 DbaObj;
+
+
+    //==============================↓Bolb字段处理代码【开始】↓==============================
+    //向数据库写文档数据内容
+    private void PutAtBlob(BLOB vField, int vSize) throws IOException {
+      try {
+        OutputStream outstream = vField.getBinaryOutputStream();
+        outstream.write(mFileBody, 0, vSize);
+        outstream.close();
+      }
+      catch (SQLException e) {
+      }
+    }
+    //从数据库取文档数据内容
+    private void GetAtBlob(BLOB vField, int vSize) throws IOException {
+      try {
+        mFileBody = new byte[vSize];
+        InputStream instream = vField.getBinaryStream();
+        instream.read(mFileBody, 0, vSize);
+        instream.close();
+      }
+      catch (SQLException e) {
+      }
+    }
+    //格式化日期时间
+    public String FormatDate(String DateValue, String DateType) {
+      String Result;
+      SimpleDateFormat formatter = new SimpleDateFormat(DateType);
+      try {
+        Date mDateTime = formatter.parse(DateValue);
+        Result = formatter.format(mDateTime);
+      }
+      catch (Exception ex) {
+        Result = ex.getMessage();
+      }
+      if (Result.equalsIgnoreCase("1900-01-01")) {
+        Result = "";
+      }
+      return Result;
+    }
+    //==============================↑Bolb字段处理代码【结束】↑==============================
+
+
+    //==============================↓文档、模板管理代码【开始】↓==============================
+    //调出文档,将文档内容保存在mFileBody里,以便进行打包
+    private boolean LoadFile() {
+      boolean mResult = false;
+      String Sql = "SELECT FileBody,FileSize FROM Document_File WHERE RecordID='" + mRecordID + "'";
+      try {
+        if (DbaObj.OpenConnection()) {
+          try {
+            ResultSet result = DbaObj.ExecuteQuery(Sql);
+            if (result.next()) {
+              try {
+                mFileSize = result.getInt("FileSize");
+                GetAtBlob(((OracleResultSet) result).getBLOB("FileBody"), mFileSize);
+                mResult = true;
+              }
+              catch (IOException ex) {
+                System.out.println(ex.toString());
+              }
+            }
+            result.close();
+          }
+          catch (SQLException e) {
+            System.out.println(e.getMessage());
+            mResult = false;
+          }
+        }
+      }
+      finally {
+        DbaObj.CloseConnection();
+      }
+      return (mResult);
+    }
+    //保存文档,如果文档存在,则覆盖,不存在,则添加
+    private boolean SaveFile() {
+      boolean mResult = false;
+      int iFileId = -1;
+      String Sql = "SELECT * FROM Document_File WHERE RecordID='" + mRecordID + "'";
+      try {
+        if (DbaObj.OpenConnection()) {
+          try {
+            ResultSet result = DbaObj.ExecuteQuery(Sql);
+            if (result.next()) {
+              Sql = "update Document_File set FileID=?,RecordID=?,FileName=?,FileType=?,FileSize=?,FileDate=?,FileBody=EMPTY_BLOB(),FilePath=?,UserName=?,Descript=? WHERE RecordID='" + mRecordID + "'";
+              iFileId = result.getInt("FileId");
+            }
+            else {
+              Sql = "insert into Document_File (FileID,RecordID,FileName,FileType,FileSize,FileDate,FileBody,FilePath,UserName,Descript) values (?,?,?,?,?,?,EMPTY_BLOB(),?,?,? )";
+              iFileId = DbaObj.GetMaxID("Document_File", "FileId");
+            }
+            result.close();
+          }
+          catch (SQLException e) {
+            System.out.println(e.toString());
+            mResult = false;
+          }
+          java.sql.PreparedStatement prestmt = null;
+          try {
+            prestmt = DbaObj.Conn.prepareStatement(Sql);
+            prestmt.setInt(1, iFileId);
+            prestmt.setString(2, mRecordID);
+            prestmt.setString(3, mFileName);
+            prestmt.setString(4, mFileType);
+            prestmt.setInt(5, mFileSize);
+            prestmt.setDate(6, DbaObj.GetDate());
+            prestmt.setString(7, mFilePath);
+            prestmt.setString(8, mUserName);
+            prestmt.setString(9, mDescript); //"通用版本"
+            DbaObj.Conn.setAutoCommit(true);
+            prestmt.execute();
+            DbaObj.Conn.commit();
+            prestmt.close();
+            Statement stmt = null;
+            DbaObj.Conn.setAutoCommit(false);
+            stmt = DbaObj.Conn.createStatement();
+            OracleResultSet update = (OracleResultSet) stmt.executeQuery("select FileBody from Document_File where Fileid=" + String.valueOf(iFileId) + " for update");
+            if (update.next()) {
+              try {
+                PutAtBlob(((oracle.jdbc.OracleResultSet) update).getBLOB("FileBody"), mFileSize);
+              }
+              catch (IOException e) {
+                System.out.println(e.toString());
+                mResult = false;
+              }
+            }
+            update.close();
+            stmt.close();
+            DbaObj.Conn.commit();
+            mFileBody = null;
+            mResult = true;
+          }
+          catch (SQLException e) {
+            System.out.println(e.toString());
+            mResult = false;
+          }
+        }
+      }
+      finally {
+        DbaObj.CloseConnection();
+      }
+      return (mResult);
+    }
+    //调出模板文档,将模板文档内容保存在mFileBody里,以便进行打包
+    private boolean LoadTemplate() {
+      boolean mResult = false;
+      String Sql = "SELECT FileBody,FileSize FROM Template_File WHERE RecordID='" + mTemplate + "'";
+      try {
+        if (DbaObj.OpenConnection()) {
+          try {
+            ResultSet result = DbaObj.ExecuteQuery(Sql);
+            if (result.next()) {
+              try {
+                mFileSize = result.getInt("FileSize");
+                GetAtBlob(((OracleResultSet) result).getBLOB("FileBody"), mFileSize);
+                mResult = true;
+              }
+              catch (Exception ex) {
+                System.out.println(ex.toString());
+              }
+            }
+            result.close();
+          }
+          catch (SQLException e) {
+            System.out.println(e.getMessage());
+            mResult = false;
+          }
+        }
+      }
+      finally {
+        DbaObj.CloseConnection();
+      }
+      return (mResult);
+    }
+    //保存模板文档,如果模板文档存在,则覆盖,不存在,则添加
+    private boolean SaveTemplate() {
+      boolean mResult = false;
+      String Sql = "SELECT * FROM Template_File WHERE RecordID='" + mTemplate + "'";
+      try {
+        if (DbaObj.OpenConnection()) {
+          try {
+            ResultSet result = DbaObj.ExecuteQuery(Sql);
+            if (result.next()) {
+              Sql = "update Template_File set TemplateID=?,RecordID=?,FileName=?,FileType=?,FileSize=?,FileDate=?,FileBody=EMPTY_BLOB(),FilePath=?,UserName=?,Descript=? WHERE RecordID='" + mTemplate + "'";
+              mTemplateId = result.getInt("TemplateId");
+            }
+            else {
+              Sql = "insert into Template_File (TemplateID,RecordID,FileName,FileType,FileSize,FileDate,FileBody,FilePath,UserName,Descript) values (?,?,?,?,?,?,EMPTY_BLOB(),?,?,? )";
+              mTemplateId = DbaObj.GetMaxID("Template_File", "TemplateId");
+            }
+            result.close();
+          }
+          catch (SQLException e) {
+            System.out.println(e.toString());
+            mResult = false;
+          }
+          java.sql.PreparedStatement prestmt = null;
+          try {
+            prestmt = DbaObj.Conn.prepareStatement(Sql);
+            prestmt.setInt(1, mTemplateId);
+            prestmt.setString(2, mTemplate);
+            prestmt.setString(3, mFileName);
+            prestmt.setString(4, mFileType);
+            prestmt.setInt(5, mFileSize);
+            prestmt.setDate(6, DbaObj.GetDate());
+            prestmt.setString(7, mFilePath);
+            prestmt.setString(8, mUserName);
+            prestmt.setString(9, mDescript); //"通用版本"
+            DbaObj.Conn.setAutoCommit(true);
+            prestmt.execute();
+            DbaObj.Conn.commit();
+            prestmt.close();
+            Statement stmt = null;
+            DbaObj.Conn.setAutoCommit(false);
+            stmt = DbaObj.Conn.createStatement();
+            OracleResultSet update = (OracleResultSet) stmt.executeQuery("select FileBody from Template_File where TEMPLATEID=" + String.valueOf(mTemplateId) + " for update");
+            if (update.next()) {
+              try {
+                mFileSize = mFileBody.length;
+                PutAtBlob(((oracle.jdbc.OracleResultSet) update).getBLOB("FileBody"), mFileSize);
+              }
+              catch (IOException e) {
+                System.out.println(e.toString());
+                mResult = false;
+              }
+            }
+            update.close();
+            stmt.close();
+            DbaObj.Conn.commit();
+            mFileBody = null;
+            mResult = true;
+          }
+          catch (SQLException e) {
+            System.out.println(e.toString());
+            mResult = false;
+          }
+        }
+      }
+      finally {
+        DbaObj.CloseConnection();
+      }
+      return (mResult);
+    }
+    //==============================↑文档、模板管理代码【结束】↑==============================
+
+
+    //==============================↓版本管理代码【开始】↓==============================
+    //列出所有版本信息
+    private boolean ListVersion() {
+      boolean mResult = false;
+      String mDesc = "";
+      String Sql = "SELECT FileID,FileDate,UserName,Descript FROM Version_File WHERE RecordID='" + mRecordID + "'";
+      mFileID = "\r\n";
+      mDateTime = "保存时间\r\n";
+      mUserName = "用户名\r\n";
+      mDescript = "版本说明\r\n";
+      try {
+        if (DbaObj.OpenConnection()) {
+          try {
+            ResultSet result = DbaObj.ExecuteQuery(Sql);
+            while (result.next()) {
+              try {
+                mFileID += String.valueOf(result.getInt("FileID")) + "\r\n"; //文件号列表
+                mDateTime += result.getString("FileDate") + "\r\n"; //日期列表
+                mUserName += result.getString("UserName") + "\r\n"; //用户名列表
+                mDesc = result.getString("Descript"); //如果说明信息里有回车,则将回车变成>符号
+                mDesc = mDesc.replace('\r', '>');
+                mDesc = mDesc.replace('\n', '>');
+                mDescript += mDesc + "\r\n";
+              }
+              catch (Exception ex) {
+                System.out.println(ex.toString());
+              }
+            }
+            result.close();
+            mResult = true;
+          }
+          catch (SQLException e) {
+            System.out.println(e.getMessage());
+            mResult = false;
+          }
+        }
+      }
+      finally {
+        DbaObj.CloseConnection();
+      }
+      return (mResult);
+    }
+    //调入选中版本,通过文件号调用mFileID,并把文件放入mFileBody里,以便进行打包
+    private boolean LoadVersion(String mFileID) {
+      boolean mResult = false;
+      String Sql = "SELECT FileBody,FileSize FROM Version_File WHERE RecordID='" + mRecordID + "' and  FileID=" + mFileID;
+      try {
+        if (DbaObj.OpenConnection()) {
+          try {
+            ResultSet result = DbaObj.ExecuteQuery(Sql);
+            if (result.next()) {
+              try {
+                mFileSize = result.getInt("FileSize");
+                GetAtBlob(((OracleResultSet) result).getBLOB("FileBody"), mFileSize);
+                mResult = true;
+              }
+              catch (Exception ex) {
+                System.out.println(ex.toString());
+              }
+            }
+            result.close();
+          }
+          catch (SQLException e) {
+            System.out.println(e.getMessage());
+            mResult = false;
+          }
+        }
+      }
+      finally {
+        DbaObj.CloseConnection();
+      }
+      return (mResult);
+    }
+    //保存版本,将该版本文件存盘,并将说明信息也保存起来
+    private boolean SaveVersion() {
+      boolean mResult = false;
+      int iFileId = -1;
+      String Sql = "insert into Version_File (FileID,RecordID,FileName,FileType,FileSize,FileDate,FileBody,FilePath,UserName,Descript) values (?,?,?,?,?,?,EMPTY_BLOB(),?,?,? )";
+      if (mFileID.equalsIgnoreCase("")) {
+        iFileId = DbaObj.GetMaxID("Version_File", "FileId");
+      }
+      else {
+        iFileId = Integer.getInteger(mFileID.toString()).intValue();
+      }
+      try {
+        if (DbaObj.OpenConnection()) {
+          java.sql.PreparedStatement prestmt = null;
+          try {
+            prestmt = DbaObj.Conn.prepareStatement(Sql);
+            prestmt.setInt(1, iFileId);
+            prestmt.setString(2, mRecordID);
+            prestmt.setString(3, mFileName);
+            prestmt.setString(4, mFileType);
+            prestmt.setInt(5, mFileSize);
+            prestmt.setDate(6, DbaObj.GetDate());
+            prestmt.setString(7, mFilePath);
+            prestmt.setString(8, mUserName);
+            prestmt.setString(9, mDescript); //"通用版本"
+            DbaObj.Conn.setAutoCommit(true);
+            prestmt.execute();
+            DbaObj.Conn.commit();
+            prestmt.close();
+            Statement stmt = null;
+            DbaObj.Conn.setAutoCommit(false);
+            stmt = DbaObj.Conn.createStatement();
+            OracleResultSet update = (OracleResultSet) stmt.executeQuery("select FileBody from Version_File where Fileid=" + String.valueOf(iFileId) + " for update");
+            if (update.next()) {
+              try {
+                PutAtBlob(((oracle.jdbc.OracleResultSet) update).getBLOB("FileBody"), mFileSize);
+              }
+              catch (IOException e) {
+                System.out.println(e.toString());
+                mResult = false;
+              }
+            }
+            update.close();
+            stmt.close();
+            DbaObj.Conn.commit();
+            mFileBody = null;
+            mResult = true;
+          }
+          catch (SQLException e) {
+            System.out.println(e.toString());
+            mResult = false;
+          }
+        }
+      }
+      finally {
+        DbaObj.CloseConnection();
+      }
+      return (mResult);
+    }
+    //==============================↑版本管理代码【结束】↑==============================
+
+
+    //==============================↓标签管理代码【开始】↓==============================
+    //取得书签列表
+    private boolean ListBookmarks() {
+      boolean mResult = false;
+      String Sql = "SELECT * FROM Bookmarks ";
+      mBookmark = "";
+      mDescript = "";
+      try {
+        if (DbaObj.OpenConnection()) {
+          try {
+            ResultSet result = DbaObj.ExecuteQuery(Sql);
+            while (result.next()) {
+              try {
+                mBookmark += result.getString("BookMarkName") + "\r\n"; //用户名列表
+                mDescript += result.getString("BookMarkDesc") + "\r\n"; //如果说明信息里有回车,则将回车变成>符号
+              }
+              catch (Exception ex) {
+                System.out.println(ex.toString());
+              }
+            }
+            result.close();
+            mResult = true;
+          }
+          catch (SQLException e) {
+            System.out.println(e.getMessage());
+            mResult = false;
+          }
+        }
+      }
+      finally {
+        DbaObj.CloseConnection();
+      }
+      return (mResult);
+    }
+    //装入书签
+    private boolean LoadBookMarks() {
+      boolean mResult = false;
+      try {
+    	  
+  		targetUrl+=mRecordID;
+      	//String targetUrl= "http://192.168.57.76:8080/yjpt/GetmSignatureData.do?documentID=" + mRecordID ;
+		URL url = new URL(targetUrl);
+		HttpURLConnection connection = (HttpURLConnection) url
+				.openConnection();// 此时cnnection只是为一个连接对象,待连接中 
+		connection.setRequestMethod("GET");
+
+		connection.connect();
+
+		//System.out.println(connection.getResponseCode());
+
+		BufferedReader bf = new BufferedReader(new InputStreamReader(
+				connection.getInputStream(), "gb2312"));
+		String line;
+		StringBuilder sb = new StringBuilder(); // 用来存储响应数据
+
+		// 循环读取流,若不到结尾处
+		while ((line = bf.readLine()) != null) {
+			sb.append(line);
+		}
+		bf.close(); // 重要且易忽略步骤 (关闭流,切记!) 
+		connection.disconnect(); // 销毁连接
+
+		String api_result = "";
+		try {
+			api_result = java.net.URLDecoder
+					.decode(sb.toString(), "gb2312");
+		} catch (UnsupportedEncodingException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		 
+
+		String[] arrResult = api_result.split("\r\n");
+		Map<String, String> map = new HashMap<String, String>();
+		for (String tmp : arrResult) {
+			String[] arrTmp = tmp.split("=");
+			try {
+				map.put(arrTmp[0].trim(), arrTmp[1]);
+			} catch (Exception e) {
+				map.put(arrTmp[0], "");
+			}
+
+		}
+		
+      MsgObj.SetMsgByName("BH",(map.get("BH")!=null? map.get("BH").trim():""));
+      MsgObj.SetMsgByName("ZYDW", (map.get("ZYDW").trim()!=null?map.get("ZYDW"):""));
+      MsgObj.SetMsgByName("ZYWTR", (map.get("ZYWTR").trim()!=null?map.get("ZYDW"):""));
+      MsgObj.SetMsgByName("CM", (map.get("CM")!=null?map.get("CM").trim():""));
+      MsgObj.SetMsgByName("XCGLFZR",(map.get("XCGLFZR")!=null? map.get("XCGLFZR").trim():""));
+      MsgObj.SetMsgByName("WXHWMCBH", (map.get("WXHWMCBH")!=null?map.get("WXHWMCBH").trim():""));
+      MsgObj.SetMsgByName("WPBH", (map.get("WPBH")!=null?map.get("WPBH").trim():""));
+      MsgObj.SetMsgByName("JSPM",(map.get("JSPM")!=null? map.get("JSPM").trim():""));
+      MsgObj.SetMsgByName("BZ", (map.get("BZ")!=null? map.get("BZ").trim():""));
+      MsgObj.SetMsgByName("WXPLB", (map.get("WXPLB")!=null?map.get("WXPLB").trim():""));
+      MsgObj.SetMsgByName("BYZD4",(map.get("BYZD4")!=null? map.get("BYZD4").trim():""));
+      MsgObj.SetMsgByName("INOROUT",(map.get("INOROUT")!=null? map.get("INOROUT").trim():""));
+      MsgObj.SetMsgByName("ZYSL", (map.get("ZYSL")!=null?map.get("ZYSL").trim():""));
+      MsgObj.SetMsgByName("SG", (map.get("SG")!=null? map.get("SG").trim():""));
+      MsgObj.SetMsgByName("XG", (map.get("XG")!=null? map.get("XG").trim():""));
+      MsgObj.SetMsgByName("MAO", (map.get("MAO")!=null?map.get("MAO").trim():""));
+      MsgObj.SetMsgByName("HZWXX", (map.get("HZWXX")!=null? map.get("HZWXX").trim():""));
+      MsgObj.SetMsgByName("DXDJ", (map.get("DXDJ")!=null? map.get("DXDJ").trim():""));
+      MsgObj.SetMsgByName("WRLB", (map.get("WRLB")!=null? map.get("WRLB").trim():""));
+      MsgObj.SetMsgByName("JZXSL", (map.get("JZXSL")!=null? map.get("JZXSL").trim():""));
+      MsgObj.SetMsgByName("HC", (map.get("HC")!=null?map.get("HC").trim():""));
+      MsgObj.SetMsgByName("HWZL",(map.get("HWZL")!=null? map.get("HWZL").trim():""));
+      MsgObj.SetMsgByName("HWXS",(map.get("HWXS")!=null? map.get("HWXS").trim():""));
+      MsgObj.SetMsgByName("LHXZ",(map.get("LHXZ")!=null? map.get("LHXZ").trim():""));
+      MsgObj.SetMsgByName("ZYDD",(map.get("ZYDD")!=null? map.get("ZYDD").trim():""));
+      MsgObj.SetMsgByName("ZYSJQ",(map.get("ZYSJQ")!=null? map.get("ZYSJQ").trim():""));
+      MsgObj.SetMsgByName("ZYSJZ", (map.get("ZYSJZ")!=null?map.get("ZYSJZ").trim():""));
+      MsgObj.SetMsgByName("AQFFCS",(map.get("AQFFCS")!=null?map.get("AQFFCS").trim():""));
+      MsgObj.SetMsgByName("BGR",(map.get("BGR")!=null? map.get("BGR").trim():""));
+      MsgObj.SetMsgByName("LXFS",(map.get("LXFS")!=null? map.get("LXFS").trim():""));
+      MsgObj.SetMsgByName("BGSJ",(map.get("BGSJ")!=null?map.get("BGSJ").trim():""));
+      MsgObj.SetMsgByName("BYZD2",(map.get("BYZD2")!=null? map.get("BYZD2").trim():""));
+      MsgObj.SetMsgByName("SHYJ",(map.get("SHYJ")!=null? map.get("SHYJ").trim():""));
+      MsgObj.SetMsgByName("SHR", (map.get("SHR")!=null? map.get("SHR").trim():""));
+      MsgObj.SetMsgByName("SHSJ", (map.get("SHSJ")!=null? map.get("SHSJ").trim():""));
+      
+      
+      mResult = true;
+    }
+    catch (Exception ex) {
+      System.out.println(ex.toString());
+    }
+      
+      return (mResult);
+    }
+    
+    //保存书签
+    private boolean SaveBookMarks() {
+      boolean mResult = false;
+      String mBookMarkName;
+      int mBookMarkId;
+      int mIndex;
+      try {
+        if (DbaObj.OpenConnection()) {
+          try {
+            java.sql.PreparedStatement prestmt = null;
+            String Sql = "DELETE FROM Template_BookMarks Where RecordID='" + mTemplate + "'";
+            prestmt = DbaObj.Conn.prepareStatement(Sql);
+            DbaObj.Conn.setAutoCommit(true);
+            prestmt.execute();
+            DbaObj.Conn.commit();
+            prestmt.close();
+            for (mIndex = 7; mIndex <= MsgObj.GetFieldCount() - 1; mIndex++) {
+              java.sql.PreparedStatement prestmtx = null;
+              mBookMarkName = MsgObj.GetFieldName(mIndex);
+              mBookMarkId = DbaObj.GetMaxID("Template_BookMarks", "BookMarkId");
+              Sql = "insert into Template_BookMarks (BookMarkId,RecordId,BookMarkName) values ('" + String.valueOf(mBookMarkId) + "','" + mTemplate + "','" + mBookMarkName + "')";
+              prestmtx = DbaObj.Conn.prepareStatement(Sql);
+              DbaObj.Conn.setAutoCommit(true);
+              prestmtx.execute();
+              DbaObj.Conn.commit();
+              prestmtx.close();
+            }
+            mResult = true;
+          }
+          catch (SQLException e) {
+            System.out.println(e.toString());
+            mResult = false;
+          }
+        }
+      }
+      finally {
+        DbaObj.CloseConnection();
+      }
+      return (mResult);
+    }
+    //==============================↑标签管理代码【结束】↑==============================
+
+
+    //==============================↓签章管理代码【开始】↓==============================
+    //取得签名列表
+    private boolean LoadMarkList() {
+      String Sql = "SELECT MarkName FROM Signature";
+      mMarkList = "";
+      boolean mResult = false;
+      try {
+        if (DbaObj.OpenConnection()) {
+          try {
+            ResultSet result = DbaObj.ExecuteQuery(Sql);
+            while (result.next()) {
+              try {
+                mMarkList += result.getString("MarkName") + "\r\n";
+              }
+              catch (Exception ex) {
+                System.out.println(ex.toString());
+              }
+            }
+            result.close();
+            mResult = true;
+          }
+          catch (SQLException e) {
+            System.out.println(e.getMessage());
+            mResult = false;
+          }
+        }
+      }
+      finally {
+        DbaObj.CloseConnection();
+      }
+      return (mResult);
+    }
+    //调入签名纪录
+    private boolean LoadMarkImage(String vMarkName, String vPassWord) {
+      String Sql = "SELECT MarkBody,MarkType,MarkSize FROM Signature WHERE MarkName='" + vMarkName + "' and PassWord='" + vPassWord + "'";
+      boolean mResult = false;
+      try {
+        if (DbaObj.OpenConnection()) {
+          try {
+            ResultSet result = DbaObj.ExecuteQuery(Sql);
+            if (result.next()) {
+              try {
+                mFileSize = result.getInt("MarkSize");
+                GetAtBlob(((OracleResultSet) result).getBLOB("MarkBody"), mFileSize);
+                mFileType = result.getString("MarkType");
+                mResult = true;
+              }
+              catch (Exception ex) {
+                System.out.println(ex.toString());
+              }
+            }
+            result.close();
+          }
+          catch (SQLException e) {
+            System.out.println(e.getMessage());
+            mResult = false;
+          }
+        }
+      }
+      finally {
+        DbaObj.CloseConnection();
+      }
+      return (mResult);
+    }
+    //保存签名
+    private boolean SaveSignature() {
+      boolean mResult = false;
+      int iSignatureID;
+      String Sql = "insert into Document_Signature (SignatureID,RecordID,MarkName,UserName,DateTime,HostName,MarkGuid) values (?,?,?,?,to_date('" + mDateTime + "','yyyy-mm-dd hh24:mi:ss'),?,? ) ";
+      iSignatureID = DbaObj.GetMaxID("Document_Signature", "SignatureID");
+      if (DbaObj.OpenConnection()) {
+        java.sql.PreparedStatement prestmt = null;
+        try {
+          prestmt = DbaObj.Conn.prepareStatement(Sql);
+          prestmt.setInt(1, iSignatureID);
+          prestmt.setString(2, mRecordID);
+          prestmt.setString(3, mMarkName);
+          prestmt.setString(4, mUserName);
+          prestmt.setString(5, mHostName);
+          prestmt.setString(6, mMarkGuid);
+          DbaObj.Conn.setAutoCommit(true);
+          prestmt.execute();
+          DbaObj.Conn.commit();
+          prestmt.close();
+          mResult = true;
+        }
+        catch (SQLException e) {
+          System.out.println(e.toString() + Sql);
+          mResult = false;
+        }
+        DbaObj.CloseConnection();
+      }
+      return (mResult);
+    }
+    //列出所有签名
+    private boolean LoadSignature() {
+      boolean mResult = false;
+      String Sql = "SELECT MarkName,UserName,DateTime,HostName,MarkGuid FROM Document_Signature WHERE RecordID='" + mRecordID + "'";
+      mMarkName = "印章名称\r\n";
+      mUserName = "签名人\r\n";
+      mDateTime = "签章时间\r\n";
+      mHostName = "客户端IP\r\n";
+      mMarkGuid = "序列号\r\n";
+      if (DbaObj.OpenConnection()) {
+        try {
+          mResult = true;
+          ResultSet result = DbaObj.ExecuteQuery(Sql);
+          while (result.next()) {
+            mMarkName += result.getString("MarkName") + "\r\n"; //文件号列表
+            mUserName += result.getString("UserName") + "\r\n"; //日期列表
+            mDateTime += FormatDate(result.getString("DateTime"), "yyyy-MM-dd HH:mm:ss") + "\r\n";
+            mHostName += result.getString("HostName") + "\r\n";
+            mMarkGuid += result.getString("MarkGuid") + "\r\n";
+          }
+          result.close();
+        }
+        catch (Exception e) {
+          System.out.println(e.toString());
+          mResult = false;
+        }
+        DbaObj.CloseConnection();
+      }
+      return (mResult);
+    }
+    //==============================↑签章管理代码【结束】↑==============================
+
+
+    //==============================↓扩展功能代码【开始】↓==============================
+    //调出所对应的文本
+    private boolean LoadContent() {
+      boolean mResult = false;
+      //打开数据库
+      //根据 mRecordID 或 mFileName 等信息
+      //提取文本信息付给mContent即可。
+      //本演示假设取得的文本信息如下:
+      mContent = "";
+      mContent += "本文的纪录号:" + mRecordID + "\n";
+      mContent += "本文的文件名:" + mFileName + "\n";
+      mContent += "    这个部分请自己加入,和你们的数据库结合起来就可以了\n";
+      mResult = true;
+      return (mResult);
+    }
+    //保存所对应的文本
+    private boolean SaveContent() {
+      boolean mResult = false;
+      //打开数据库
+      //根据 mRecordID 或 mFileName 等信息
+      //插入文本信息 mContent里的文本到数据库中即可。
+      mResult = true;
+      return (mResult);
+    }
+    //增加行并填充表格内容
+    private boolean GetWordTable() {
+      int i, n;
+      String strI, strN;
+      boolean mResult;
+      mColumns = 3;
+      mCells = 8;
+      MsgObj.MsgTextClear();
+      MsgObj.SetMsgByName("COLUMNS", String.valueOf(mColumns)); //设置表格行
+      MsgObj.SetMsgByName("CELLS", String.valueOf(mCells)); //设置表格列
+      //该部分内容可以从数据库中读取
+      try {
+        for (i = 1; i <= mColumns; i++) {
+          strI = String.valueOf(i);
+          for (n = 1; n <= mCells; n++) {
+            MsgObj.SetMsgByName(String.valueOf(i) + String.valueOf(n), "内容" + DbaObj.GetDateTime());
+          }
+        }
+        mResult = true;
+      }
+      catch (Exception e) {
+        System.out.println(e.toString());
+        mResult = false;
+      }
+      return (mResult);
+    }
+    //更新打印份数
+    private boolean UpdataCopies(int mLeftCopies) {
+      boolean mResult = true;
+      //该函数可以把打印减少的次数记录到数据库
+      //根据自己的系统进行扩展该功能
+      return mResult;
+    }
+    //==============================↑扩展功能代码【结束】↑==============================
+
+
+    //==============================↓接收流、写回流代码【开始】↓==============================
+    //取得客户端发来的数据包
+    private byte[] ReadPackage(HttpServletRequest request) {
+      byte mStream[] = null;
+      int totalRead = 0;
+      int readBytes = 0;
+      int totalBytes = 0;
+      try {
+        totalBytes = request.getContentLength();
+        mStream = new byte[totalBytes];
+        while (totalRead < totalBytes) {
+          request.getInputStream();
+          readBytes = request.getInputStream().read(mStream, totalRead, totalBytes - totalRead);
+          totalRead += readBytes;
+          continue;
+        }
+      }
+      catch (Exception e) {
+        System.out.println(e.toString());
+      }
+      return (mStream);
+    }
+    //发送处理后的数据包
+    private void SendPackage(HttpServletResponse response) {
+      try {
+        ServletOutputStream OutBinarry = response.getOutputStream();
+        OutBinarry.write(MsgObj.MsgVariant());
+        OutBinarry.flush();
+        OutBinarry.close();
+      }
+      catch (IOException e) {
+        System.out.println(e.toString());
+      }
+    }
+    //==============================↑接收流、写回流代码【结束】↑==============================
+
+
+    public void ExecuteRun(HttpServletRequest request, HttpServletResponse response) {
+    	
+      //获得应用服务器起地址端口等相关信息初始化获得数据的接口的url
+      targetUrl = "http://" + request.getServerName() + ":"
+   				+ request.getServerPort() + request.getContextPath()
+   				+ "/GetmSignatureData.do" + "?documentID=";
+    	
+      DbaObj = new DBstep.iDBManager2000(); //创建数据库对象
+      MsgObj = new DBstep.iMsgServer2000(); //创建信息包对象
+      mOption = "";
+      mRecordID = "";
+      mTemplate = "";
+      mFileBody = null;
+      mFileName = "";
+      mFileType = "";
+      mFileSize = 0;
+      mFileID = "";
+      mDateTime = "";
+      mMarkName = "";
+      mPassword = "";
+      mMarkList = "";
+      mBookmark = "";
+      mMarkGuid = "";
+      mDescript = "";
+      mCommand = "";
+      mContent = "";
+      mLabelName = "";
+      mImageName = "";
+      mTableContent = "";
+      mMyDefine1 = "";
+      mOfficePrints = "0";
+      mFilePath = request.getSession().getServletContext().getRealPath("");       //取得服务器路径
+      System.out.println("ReadPackage");
+
+      try {
+        if (request.getMethod().equalsIgnoreCase("POST")) {
+          //MsgObj.MsgVariant(ReadPackage(request));                              //老版本后台类,不支持UTF-8编码自适应功能
+          MsgObj.Load(request);                                                   //8.1.0.2版后台类新增解析接口,可支持UTF-8编码自适应功能
+
+          if (MsgObj.GetMsgByName("DBSTEP").equalsIgnoreCase("DBSTEP")) {         //判断是否是合法的信息包,或者数据包信息是否完整
+            mOption = MsgObj.GetMsgByName("OPTION");                              //取得操作信息
+            mUserName = MsgObj.GetMsgByName("USERNAME");                          //取得系统用户
+            System.out.println("OPTION:"+mOption);                                //打印出调试信息
+            if (mOption.equalsIgnoreCase("LOADFILE")) {                           //下面的代码为打开服务器数据库里的文件
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              mFileName = MsgObj.GetMsgByName("FILENAME");                        //取得文档名称
+              mFileType = MsgObj.GetMsgByName("FILETYPE");                        //取得文档类型
+              MsgObj.MsgTextClear();                                              //清除文本信息
+              //if (MsgObj.MsgFileLoad(mFilePath+"\\"+mFileName))			            //从文件夹调入文档
+              if (LoadFile()) {                                                   //从数据库调入文档
+                MsgObj.MsgFileBody(mFileBody);                                    //将文件信息打包
+                MsgObj.SetMsgByName("STATUS", "打开成功!");                       //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("打开失败!");                                     //设置错误信息
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("SAVEFILE")) {                      //下面的代码为保存文件在服务器的数据库里
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              mFileName = MsgObj.GetMsgByName("FILENAME");                        //取得文档名称
+              mFileType = MsgObj.GetMsgByName("FILETYPE");                        //取得文档类型
+              mUserName = mUserName;                                              //取得保存用户名称
+              mDescript = "通用版本";                                             //版本说明
+              mFileSize = MsgObj.MsgFileSize();                                   //取得文档大小
+              mFileDate = DbaObj.GetDateTime();                                   //取得文档时间
+              mFileBody = MsgObj.MsgFileBody();                                   //取得文档内容
+
+              String isEmpty = MsgObj.GetMsgByName("EMPTY");                      //是否是空内容文档的标识
+              if(isEmpty.equalsIgnoreCase("TRUE")){
+                //此时接收的文档中内容是空白的,请用日志记录保存时间、保存用户、记录编号等信息,用于将来发现文档内容丢失时排查用。
+                System.out.println("注意:本次保存的是空白内容的文档。RECORDID:"+mRecordID);
+              }
+
+              MsgObj.MsgTextClear();                                              //清除文本信息
+              //if (MsgObj.MsgFileSave(mFilePath+"\\"+mFileName))			            //保存文档内容到文件夹中
+              if (SaveFile()) {                                                   //保存文档内容到数据库中
+                MsgObj.SetMsgByName("STATUS", "保存成功!");                       //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("保存失败!");                                     //设置错误信息
+              }
+              MsgObj.MsgFileClear();                                              //清除文档内容
+            }
+
+            else if (mOption.equalsIgnoreCase("LOADTEMPLATE")) {                  //下面的代码为打开服务器数据库里的模板文件
+              mTemplate = MsgObj.GetMsgByName("TEMPLATE");                        //取得模板文档类型
+              //本段处理是否调用文档时打开模版,还是套用模版时打开模版。
+              mCommand = MsgObj.GetMsgByName("COMMAND");                          //取得客户端定义的变量COMMAND值
+              if (mCommand.equalsIgnoreCase("INSERTFILE")) {
+                if (MsgObj.MsgFileLoad(mFilePath + "\\Document\\" + mTemplate)) { //从服务器文件夹中调入模板文档
+                  MsgObj.SetMsgByName("STATUS", "打开模板成功!");                 //设置状态信息
+                  MsgObj.MsgError("");                                            //清除错误信息
+                }
+                else {
+                  MsgObj.MsgError("打开模板失败!");                               //设置错误信息
+                }
+              }
+              else {
+                MsgObj.MsgTextClear();                                            //清除文本信息
+                if (LoadTemplate()) {                                             //调入模板文档
+                  MsgObj.MsgFileBody(mFileBody);                                  //将文件信息打包
+                  MsgObj.SetMsgByName("STATUS", "打开模板成功!");                 //设置状态信息
+                  MsgObj.MsgError("");                                            //清除错误信息
+                }
+                else {
+                  MsgObj.MsgError("打开模板失败!");                               //设置错误信息
+                }
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("SAVETEMPLATE")) {                  //下面的代码为保存模板文件在服务器的数据库里
+              mTemplate = MsgObj.GetMsgByName("TEMPLATE");                        //取得文档编号
+              mFileName = MsgObj.GetMsgByName("FILENAME");                        //取得文档名称
+              mFileType = MsgObj.GetMsgByName("FILETYPE");                        //取得文档类型
+              mUserName = mUserName;                                              //取得保存用户名称
+              mDescript = "通用模板";                                             //版本说明
+              mFileSize = MsgObj.MsgFileSize();                                   //取得文档大小
+              mFileDate = DbaObj.GetDateTime();                                   //取得文档时间
+              mFileBody = MsgObj.MsgFileBody();                                   //取得文档内容
+              MsgObj.MsgTextClear();
+              if (SaveTemplate()) {                                               //保存模板文档内容
+                MsgObj.SetMsgByName("STATUS", "保存模板成功!");                   //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("保存模板失败!");                                 //设置错误信息
+              }
+              MsgObj.MsgFileClear();
+            }
+
+            else if (mOption.equalsIgnoreCase("LISTVERSION")) {                   //下面的代码为打开版本列表
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              MsgObj.MsgTextClear();
+              if (ListVersion()) {                                                //生成版本列表
+                MsgObj.SetMsgByName("FILEID", mFileID);                           //将文档号列表打包
+                MsgObj.SetMsgByName("DATETIME", mDateTime);                       //将日期时间列表打包
+                MsgObj.SetMsgByName("USERNAME", mUserName);                       //将用户名列表打包
+                MsgObj.SetMsgByName("DESCRIPT", mDescript);                       //将说明信息列表打包
+                MsgObj.SetMsgByName("STATUS", "版本列表成功!");                   //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("版本列表失败!");                                 //设置错误信息
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("LOADVERSION")) {                   //下面的代码为打开版本文档
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              mFileID = MsgObj.GetMsgByName("FILEID");                            //取得版本文档号
+              MsgObj.MsgTextClear();
+              if (LoadVersion(mFileID)) {                                         //调入该版本文档
+                MsgObj.MsgFileBody(mFileBody);                                    //将文档信息打包
+                MsgObj.SetMsgByName("STATUS", "打开版本成功!");                   //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("打开版本失败!");                                 //设置错误信息
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("SAVEVERSION")) {                   //下面的代码为保存版本文档
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              mFileID = MsgObj.GetMsgByName("FILEID");                            //取得版本文档号   如:WebSaveVersionByFileID,则FileID值存在
+              mFileName = MsgObj.GetMsgByName("FILENAME");                        //取得文档名称
+              mFileType = MsgObj.GetMsgByName("FILETYPE");                        //取得文档类型
+              mUserName = mUserName;                                              //取得保存用户名称
+              mDescript = MsgObj.GetMsgByName("DESCRIPT");                        //取得说明信息
+              mFileSize = MsgObj.MsgFileSize();                                   //取得文档大小
+              mFileDate = DbaObj.GetDateTime();                                   //取得文档时间
+              mFileBody = MsgObj.MsgFileBody();                                   //取得文档内容
+              MsgObj.MsgTextClear();
+              if (SaveVersion()) {                                                //保存版本文档
+                MsgObj.SetMsgByName("STATUS", "保存版本成功!");                   //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("保存版本失败!");                                 //设置错误信息
+              }
+              MsgObj.MsgFileClear();                                              //清除文档内容
+            }
+
+            else if (mOption.equalsIgnoreCase("LOADBOOKMARKS")) {                 //下面的代码为取得文档标签
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              mTemplate = MsgObj.GetMsgByName("TEMPLATE");                        //取得模板编号
+              mFileName = MsgObj.GetMsgByName("FILENAME");                        //取得文档名称
+              mFileType = MsgObj.GetMsgByName("FILETYPE");                        //取得文档类型
+              MsgObj.MsgTextClear();
+              if (LoadBookMarks()) {
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("装入标签信息失败!");                             //设置错误信息
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("SAVEBOOKMARKS")) {                 //下面的代码为取得标签文档内容
+              mTemplate = MsgObj.GetMsgByName("TEMPLATE");                        //取得模板编号
+              if (SaveBookMarks()) {
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("保存标签信息失败!");                             //设置错误信息
+              }
+              MsgObj.MsgTextClear();                                              //清除文本信息
+            }
+
+            else if (mOption.equalsIgnoreCase("LISTBOOKMARKS")) {                 //下面的代码为显示标签列表
+              MsgObj.MsgTextClear();                                              //清除文本信息
+              if (ListBookmarks()) {
+                MsgObj.SetMsgByName("BOOKMARK", mBookmark);                       //将用户名列表打包
+                MsgObj.SetMsgByName("DESCRIPT", mDescript);                       //将说明信息列表打包
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("调入标签失败!");                                 //设置错误信息
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("LOADMARKLIST")) {                  //下面的代码为创建印章列表
+              MsgObj.MsgTextClear();                                              //清除文本信息
+              if (LoadMarkList()) {
+                MsgObj.SetMsgByName("MARKLIST", mMarkList);                       //显示签章列表
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("创建印章列表失败!");                             //设置错误信息
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("LOADMARKIMAGE")) {                 //下面的代码为打开印章文件
+              mMarkName = MsgObj.GetMsgByName("IMAGENAME");                       //取得签名名称
+              mUserName = MsgObj.GetMsgByName("USERNAME");                        //取得用户名称
+              mPassword = MsgObj.GetMsgByName("PASSWORD");                        //取得用户密码
+              MsgObj.MsgTextClear();                                              //清除文本信息
+              if (LoadMarkImage(mMarkName, mPassword)) {                          //调入签名信息
+                MsgObj.SetMsgByName("IMAGETYPE", mFileType);                      //设置签名类型
+                MsgObj.MsgFileBody(mFileBody);                                    //将签名信息打包
+                MsgObj.SetMsgByName("POSITION", "Manager");                       //插入位置  在文档中标签"Manager"
+                MsgObj.SetMsgByName("ZORDER", "5");                               //4:在文字上方 5:在文字下方
+                MsgObj.SetMsgByName("STATUS", "打开成功!");                       //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("签名或密码错误!");                               //设置错误信息
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("SAVESIGNATURE")) {                 //下面的代码为保存签章基本信息
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              mFileName = MsgObj.GetMsgByName("FILENAME");                        //取得文件名称
+              mMarkName = MsgObj.GetMsgByName("MARKNAME");                        //取得签名名称
+              mUserName = MsgObj.GetMsgByName("USERNAME");                        //取得用户名称
+              mDateTime = MsgObj.GetMsgByName("DATETIME");                        //取得签名时间
+              mHostName = request.getRemoteAddr();                                //取得用户IP
+              mMarkGuid = MsgObj.GetMsgByName("MARKGUID");                        //取得唯一编号
+              MsgObj.MsgTextClear();                                              //清除文本信息
+              if (SaveSignature()) {                                              //保存签章
+                MsgObj.SetMsgByName("STATUS", "保存印章成功!");                   //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("保存印章失败!");                                 //设置错误信息
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("LOADSIGNATURE")) {                 //下面的代码为调出签章基本信息
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              MsgObj.MsgTextClear();                                              //清除文本信息
+              if (LoadSignature()) {                                              //调出签章
+                MsgObj.SetMsgByName("MARKNAME", mMarkName);                       //将签名名称列表打包
+                MsgObj.SetMsgByName("USERNAME", mUserName);                       //将用户名列表打包
+                MsgObj.SetMsgByName("DATETIME", mDateTime);                       //将时间列表打包
+                MsgObj.SetMsgByName("HOSTNAME", mHostName);                       //将盖章IP地址列表打包
+                MsgObj.SetMsgByName("MARKGUID", mMarkGuid);                       //将唯一编号列表打包
+                MsgObj.SetMsgByName("STATUS", "调入印章成功!");                   //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("调入印章失败!");                                 //设置错误信息
+              }
+            }
+
+            else if(mOption.equalsIgnoreCase("SAVEPDF")){	                        //下面的代码为保存PDF文件
+              mRecordID=MsgObj.GetMsgByName("RECORDID");	                        //取得文档编号
+              mFileName=MsgObj.GetMsgByName("FILENAME");	                        //取得文档名称
+              MsgObj.MsgTextClear();					                                    //清除文本信息
+              if (MsgObj.MsgFileSave(mFilePath+"\\Document\\"+mRecordID+".pdf")){ //保存文档到文件夹中
+                MsgObj.SetMsgByName("STATUS", "保存成功!");                       //设置状态信息
+                MsgObj.MsgError("");					                                    //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("保存失败!");			                                //设置错误信息
+              }
+              MsgObj.MsgFileClear();					                                    //清除文档内容
+            }
+
+            else if (mOption.equalsIgnoreCase("SAVEASHTML")) {                    //下面的代码为将OFFICE存为HTML页面
+              mHtmlName = MsgObj.GetMsgByName("HTMLNAME");                        //取得文件名称
+              mDirectory = MsgObj.GetMsgByName("DIRECTORY");                      //取得目录名称
+              MsgObj.MsgTextClear();
+              if (mDirectory.trim().equalsIgnoreCase("")) {
+                mFilePath = mFilePath + "\\HTML";
+              }
+              else {
+                mFilePath = mFilePath + "\\HTML\\" + mDirectory;
+              }
+              MsgObj.MakeDirectory(mFilePath);                                    //创建路径
+              if (MsgObj.MsgFileSave(mFilePath + "\\" + mHtmlName)) {             //保存HTML文件
+                MsgObj.MsgError("");                                              //清除错误信息
+                MsgObj.SetMsgByName("STATUS", "保存HTML成功!");                   //设置状态信息
+              }
+              else {
+                MsgObj.MsgError("保存HTML失败!");                                 //设置错误信息
+              }
+              MsgObj.MsgFileClear();
+            }
+
+            else if (mOption.equalsIgnoreCase("SAVEIMAGE")) {                     //下面的代码为将OFFICE存为HTML图片页面
+              mHtmlName = MsgObj.GetMsgByName("HTMLNAME");                        //取得文件名称
+              mDirectory = MsgObj.GetMsgByName("DIRECTORY");                      //取得目录名称
+              MsgObj.MsgTextClear();
+              if (mDirectory.trim().equalsIgnoreCase("")) {
+                mFilePath = mFilePath + "\\HTMLIMAGE";
+              }
+              else {
+                mFilePath = mFilePath + "\\HTMLIMAGE\\" + mDirectory;
+              }
+              MsgObj.MakeDirectory(mFilePath);                                    //创建路径
+              if (MsgObj.MsgFileSave(mFilePath + "\\" + mHtmlName)) {             //保存HTML文件
+                MsgObj.MsgError("");                                              //清除错误信息
+                MsgObj.SetMsgByName("STATUS", "保存HTML图片成功!");               //设置状态信息
+              }
+              else {
+                MsgObj.MsgError("保存HTML图片失败!");                             //设置错误信息
+              }
+              MsgObj.MsgFileClear();
+            }
+
+            else if (mOption.equalsIgnoreCase("SAVEASPAGE")) {                    //下面的代码为将手写批注存为HTML图片页面
+              mHtmlName = MsgObj.GetMsgByName("HTMLNAME");                        //取得文件名称
+              mDirectory = MsgObj.GetMsgByName("DIRECTORY");                      //取得目录名称
+              MsgObj.MsgTextClear();
+              if (mDirectory.trim().equalsIgnoreCase("")) {
+                mFilePath = mFilePath + "\\HTML";
+              }
+              else {
+                mFilePath = mFilePath + "\\HTML\\" + mDirectory;
+              }
+              MsgObj.MakeDirectory(mFilePath);                                    //创建路径
+              if (MsgObj.MsgFileSave(mFilePath + "\\" + mHtmlName)) {             //保存HTML文件
+                MsgObj.MsgError("");                                              //清除错误信息
+                MsgObj.SetMsgByName("STATUS", "保存批注HTML图片成功!");           //设置状态信息
+              }
+              else {
+                MsgObj.MsgError("保存批注HTML图片失败!");                         //设置错误信息
+              }
+              MsgObj.MsgFileClear();
+            }
+
+            else if (mOption.equalsIgnoreCase("INSERTFILE")) {                    //下面的代码为插入文件
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              mFileName = MsgObj.GetMsgByName("FILENAME");                        //取得文档名称
+              mFileType = MsgObj.GetMsgByName("FILETYPE");                        //取得文档类型
+              MsgObj.MsgTextClear();
+              if (LoadFile()) {                                                   //调入文档
+                MsgObj.MsgFileBody(mFileBody);                                    //将文件信息打包
+                MsgObj.SetMsgByName("POSITION", "Content");                       //设置插入的位置[书签]
+                MsgObj.SetMsgByName("STATUS", "插入文件成功!");                   //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("插入文件成功!");                                 //设置错误信息
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("UPDATEFILE")) {                    //下面的代码为更新保存文件
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              mFileName = MsgObj.GetMsgByName("FILENAME");                        //取得文档名称
+              mFileType = MsgObj.GetMsgByName("FILETYPE");                        //取得文档类型
+              mUserName = mUserName;                                              //取得保存用户名称
+              mDescript = "定稿版本";                                             //版本说明
+              mFileSize = MsgObj.MsgFileSize();                                   //取得文档大小
+              mFileDate = DbaObj.GetDateTime();                                   //取得文档时间
+              mFileBody = MsgObj.MsgFileBody();                                   //取得文档内容
+              MsgObj.MsgTextClear();
+              if (SaveVersion()) {                                                //保存文档内容
+                MsgObj.SetMsgByName("STATUS", "保存定稿版本成功!");               //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("保存定稿版本失败!");                             //设置错误信息
+              }
+              MsgObj.MsgFileClear();
+            }
+
+            else if (mOption.equalsIgnoreCase("INSERTIMAGE")) {                   //下面的代码为插入服务器图片
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              mLabelName = MsgObj.GetMsgByName("LABELNAME");                      //标签名
+              mImageName = MsgObj.GetMsgByName("IMAGENAME");                      //图片名
+              mFilePath = mFilePath + "\\Document\\" + mImageName;                //图片在服务器的完整路径
+              mFileType = mImageName.substring(mImageName.length() - 4).toLowerCase(); //取得文件的类型
+              MsgObj.MsgTextClear();
+              if (MsgObj.MsgFileLoad(mFilePath)) {                                //调入图片
+                MsgObj.SetMsgByName("IMAGETYPE", mFileType);                      //指定图片的类型
+                MsgObj.SetMsgByName("POSITION", mLabelName);                      //设置插入的位置[书签对象名]
+                MsgObj.SetMsgByName("STATUS", "插入图片成功!");                   //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("插入图片失败!");                                 //设置错误信息
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("PUTFILE")) {                       //下面的代码为请求上传文件操作
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              mFileBody = MsgObj.MsgFileBody();                                   //取得文档内容
+              mLocalFile = MsgObj.GetMsgByName("LOCALFILE");                      //取得本地文件名称
+              mRemoteFile = MsgObj.GetMsgByName("REMOTEFILE");                    //取得远程文件名称
+              MsgObj.MsgTextClear();                                              //清除文本信息
+              mFilePath = mFilePath + "\\Document\\" + mRemoteFile;
+              if (MsgObj.MsgFileSave(mFilePath)) {                                //调入文档
+                MsgObj.SetMsgByName("STATUS", "保存上传文件成功!");               //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("上传文件失败!");                                 //设置错误信息
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("GETFILE")) {                       //下面的代码为请求下载文件操作
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              mLocalFile = MsgObj.GetMsgByName("LOCALFILE");                      //取得本地文件名称
+              mRemoteFile = MsgObj.GetMsgByName("REMOTEFILE");                    //取得远程文件名称
+              MsgObj.MsgTextClear();                                              //清除文本信息
+              mFilePath = mFilePath + "\\Document\\" + mRemoteFile;
+              if (MsgObj.MsgFileLoad(mFilePath)) {                                //调入文档内容
+                MsgObj.SetMsgByName("STATUS", "保存下载文件成功!");               //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("下载文件失败!");                                 //设置错误信息
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("DATETIME")) {                      //下面的代码为请求取得服务器时间
+              MsgObj.MsgTextClear();                                              //清除文本信息
+              MsgObj.SetMsgByName("DATETIME", DbaObj.GetDateTime());              //标准日期格式字串,如 2005-8-16 10:20:35
+            }
+
+            else if (mOption.equalsIgnoreCase("SENDMESSAGE")) {                   //下面的代码为Web页面请求信息[扩展接口]
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              mFileName = MsgObj.GetMsgByName("FILENAME");                        //取得文档名称
+              mFileType = MsgObj.GetMsgByName("FILETYPE");                        //取得文档类型
+              mCommand = MsgObj.GetMsgByName("COMMAND");                          //取得自定义的操作类型
+              mContent = MsgObj.GetMsgByName("CONTENT");                          //取得文本信息 Content
+              mOfficePrints = MsgObj.GetMsgByName("OFFICEPRINTS");                //取得Office文档的打印次数
+              mInfo = MsgObj.GetMsgByName("TESTINFO");                            //取得客户端传来的自定义信息
+              MsgObj.MsgTextClear();
+              MsgObj.MsgFileClear();
+              System.out.println("COMMAND:"+mCommand);
+              if (mCommand.equalsIgnoreCase("INPORTTEXT")) {                      //导入文本内容功能
+                if (LoadContent()) {
+                  MsgObj.SetMsgByName("CONTENT", mContent);
+                  MsgObj.SetMsgByName("STATUS", "导入成功!");                     //设置状态信息
+                  MsgObj.MsgError("");                                            //清除错误信息
+                }
+                else {
+                  MsgObj.MsgError("导入失败!");                                   //设置错误信息
+                }
+              }
+              else if (mCommand.equalsIgnoreCase("EXPORTTEXT")) {                 //导出文本内容功能
+                if (SaveContent()) {
+                  MsgObj.SetMsgByName("STATUS", "导出成功!");                     //设置状态信息
+                  MsgObj.MsgError("");                                            //清除错误信息
+                }
+                else {
+                  MsgObj.MsgError("导出失败!");                                   //设置错误信
+                }
+              }
+              else if (mCommand.equalsIgnoreCase("WORDTABLE")) {                  //插入远程表格功能
+                if (GetWordTable()) {
+                  MsgObj.SetMsgByName("COLUMNS", String.valueOf(mColumns));       //列
+                  MsgObj.SetMsgByName("CELLS", String.valueOf(mCells));           //行
+                  MsgObj.SetMsgByName("WORDCONTENT", mTableContent);              //表格内容
+                  MsgObj.SetMsgByName("STATUS", "增加和填充成功成功!");           //设置状态信息
+                  MsgObj.MsgError("");                                            //清除错误信息
+                }
+                else {
+                  MsgObj.MsgError("增加表格行失败!");                             //设置错误信息
+                }
+              }
+              else if (mCommand.equalsIgnoreCase("COPIES")) {                     //打印份数控制功能
+                System.out.println("PRINTS:"+mOfficePrints);
+                mCopies = Integer.parseInt(mOfficePrints);                        //获得客户需要打印的份数
+                if (mCopies <= 2) {                                               //比较打印份数,拟定该文档允许打印的总数为2份,注:可以在数据库中设置好文档允许打印的份数
+                  if (UpdataCopies(2 - mCopies)) {                                //更新打印份数
+                    MsgObj.SetMsgByName("STATUS", "1");                           //设置状态信息,允许打印
+                    MsgObj.MsgError("");                                          //清除错误信息
+                  }
+                }
+                else {
+                  MsgObj.SetMsgByName("STATUS", "0");                             //不允许打印
+                  MsgObj.MsgError("超过打印限度不允许打印!");                     //设置错误信息
+                }
+              }
+              else if (mCommand.equalsIgnoreCase("SELFINFO")) {
+                mInfo = "服务器端收到客户端传来的信息:“" + mInfo + "” | ";                
+                mInfo = mInfo + "当前服务器时间:" + DbaObj.GetDateTime();        //组合返回给客户端的信息
+                MsgObj.SetMsgByName("RETURNINFO", mInfo);                         //将返回的信息设置到信息包中
+              }
+              else {
+                MsgObj.MsgError("客户端Web发送数据包命令没有合适的处理函数![" + mCommand + "]");
+                MsgObj.MsgTextClear();
+                MsgObj.MsgFileClear();
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("SAVEPAGE")) {                      //下面的代码为保存为全文批注格式文件
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              MsgObj.MsgTextClear();                                              //清除文本信息
+              mFilePath = mFilePath + "\\Document\\" + mRecordID + ".pgf";        //全文批注文件的完整路径
+              if (MsgObj.MsgFileSave(mFilePath)) {                                //保存全文批注文件
+                MsgObj.SetMsgByName("STATUS", "保存全文批注成功!");               //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("保存全文批注失败!");                             //设置错误信息
+              }
+            }
+
+            else if (mOption.equalsIgnoreCase("LOADPAGE")) {                      //下面的代码为调入全文批注格式文件
+              mRecordID = MsgObj.GetMsgByName("RECORDID");                        //取得文档编号
+              MsgObj.MsgTextClear();                                              //清除文本信息
+              mFilePath = mFilePath + "\\Document\\" + mRecordID + ".pgf";        //全文批注文件的完整路径
+              if (MsgObj.MsgFileLoad(mFilePath)) {                                //调入文档内容
+                MsgObj.SetMsgByName("STATUS", "打开全文批注成功!");               //设置状态信息
+                MsgObj.MsgError("");                                              //清除错误信息
+              }
+              else {
+                MsgObj.MsgError("打开全文批注失败!");                             //设置错误信息
+              }
+            }
+          }
+          else {
+            MsgObj.MsgError("客户端发送数据包错误!");
+            MsgObj.MsgTextClear();
+            MsgObj.MsgFileClear();
+          }
+        }
+        else {
+          MsgObj.MsgError("请使用Post方法");
+          MsgObj.MsgTextClear();
+          MsgObj.MsgFileClear();
+        }
+        System.out.println("SendPackage");
+        System.out.println("");
+        //SendPackage(response);                                                    //老版后台类返回信息包数据方法
+        MsgObj.Send(response);                                                    //8.1.0.2新版后台类新增的功能接口,返回信息包数据
+      }
+      catch (Exception e) {
+        System.out.println(e.toString());
+      }
+    }
+  }
+%>
+<%
+  iWebOffice officeServer = new iWebOffice();
+  officeServer.ExecuteRun(request, response);
+  out.clear();                                                                    //用于解决JSP页面中“已经调用getOutputStream()”问题
+  out=pageContext.pushBody();                                                     //用于解决JSP页面中“已经调用getOutputStream()”问题
+%>

+ 463 - 0
gkaq/yjpt-java/trunk/yjpt/Service.jsp

@@ -0,0 +1,463 @@
+<%@ page contentType="text/html; charset=gb2312" %>
+<%@ page import="java.io.*" %>
+<%@ page import="java.text.*" %>
+<%@ page import="java.util.*" %>
+<%@ page import="java.lang.*"%>
+<%@ page import="java.sql.*" %>
+<%@ page import="java.net.*" %>
+<%@ page import="DBstep.iDBManager2000.*" %>
+<%@ page import="DBstep.*" %>
+<%@page import="oracle.jdbc.driver.OracleResultSet"%>
+<%@page import="oracle.sql.BLOB"%>
+
+<%
+    DBstep.iDBManager2000 ObjConnBean = new DBstep.iDBManager2000();
+	String mCommand;
+	String mDocumentID = "";
+	String mSignatureID = "";
+	byte[] mSignature;	
+	String mSignatures;
+	String strSql;
+  String mUserName;
+  String mExtParam;
+	int mSignatureSize;
+	String mSignature_1="";
+	
+	boolean mResult;
+	java.lang.String KeyName;                 //文件名
+	java.io.File ObjFile;                     //文件对象
+	java.io.FileReader ObjFileReader;         //读文件对象
+	char[] ChrBuffer;                        //缓冲
+	int intLength;                            //实际读出的字符数
+
+	String mSignatureName;			  //印章名称
+	String mSignatureUnit;			  //签章单位
+	String mSignatureUser;			  //持章人
+	String mSignatureSN;			  //签章SN
+	String mSignatureGUID;			  //全球唯一标识符
+
+	String mMACHIP;			  //机器IP
+	String OPType;			  //操作标志
+	String mKeySn;       //KEY序列号
+	mCommand=request.getParameter("COMMAND");
+	mUserName=new String(request.getParameter("USERNAME").getBytes("8859_1"));
+	mExtParam=new String(request.getParameter("EXTPARAM").getBytes("8859_1"));
+
+    System.out.println("");
+    System.out.println("ReadPackage");
+    System.out.println(mCommand);    
+	if(mCommand.equalsIgnoreCase("SAVESIGNATURE")){        //保存签章数据信息
+		mDocumentID=new String(request.getParameter("DOCUMENTID").getBytes("8859_1"));
+		mSignatureID=new String(request.getParameter("SIGNATUREID").getBytes("8859_1"));
+		mSignature=request.getParameter("SIGNATURE").getBytes("8859_1");
+	    mSignatureSize=mSignature.length;
+		System.out.println("DocuemntID:"+mDocumentID);
+		System.out.println("SignatureID:"+mSignatureID);
+		//System.out.println("Signature:"+mSignature);
+   		if (ObjConnBean.OpenConnection()){
+			  strSql="SELECT * from HTMLSignature Where SignatureID='"+mSignatureID+"' and DocumentID='"+mDocumentID+"'";
+    		ResultSet rs = null;
+    		rs = ObjConnBean.ExecuteQuery(strSql);
+    		if (rs.next()) {
+       			//strSql = "update HTMLSignature set DocumentID='"+mDocumentID+"',SIGNATUREID='"+mSignatureID+"',Signature='"+mSignature+"'";
+       			//strSql = strSql + "  Where SignatureID='"+mSignatureID+"' and DocumentID='"+mDocumentID+"'";
+		    	strSql="update HTMLSignature set DocumentID=?,SignatureID=?,SignatureSize=?,Signature=EMPTY_BLOB() where SignatureID='"+mSignatureID+"' and DocumentID='"+mDocumentID+"'";
+		    	//ObjConnBean.ExecuteUpdate(strSql);
+    		}else{  			
+				  //取得唯一值(mSignature)
+   				java.util.Date dt=new java.util.Date();
+   				long lg=dt.getTime();
+   				Long ld=new Long(lg);
+   				mSignatureID=ld.toString();
+       			strSql="insert into HTMLSignature (DocumentID,SignatureID,SignatureSize,Signature) values (?,?,?,EMPTY_BLOB()) ";	
+       			}   
+       			rs.close();	
+       			try{	
+        			java.sql.PreparedStatement prestmt=null;			
+		    	    prestmt=ObjConnBean.Conn.prepareStatement(strSql);
+        			prestmt.setString(1, mDocumentID);
+			        prestmt.setString(2, mSignatureID);
+			        prestmt.setInt(3, mSignatureSize);
+			        ObjConnBean.Conn.setAutoCommit(true);
+        			prestmt.execute();
+		    	    ObjConnBean.Conn.commit();
+        			prestmt.close();
+			        Statement stmt = null;
+			         ObjConnBean.Conn.setAutoCommit(false);
+		            stmt = ObjConnBean.Conn.createStatement();
+		            OracleResultSet update = (OracleResultSet) stmt.executeQuery("select Signature from HTMLSignature where DocumentID=" + mDocumentID + " and SignatureID=" + mSignatureID + " for update");
+		            if (update.next()) {
+		              try {
+		                // PutAtBlob(((oracle.jdbc.OracleResultSet) update).getBLOB("FileBody"), SignatureSize);
+		                BLOB vField=((oracle.jdbc.OracleResultSet) update).getBLOB("Signature");
+		                OutputStream outstream = vField.getBinaryOutputStream();
+				        outstream.write(mSignature, 0, mSignatureSize);
+				        outstream.close();
+		              }
+		              catch (IOException e) {
+		                System.out.println(e.toString());
+		                mResult = false;
+		              }
+		            }
+		            update.close();
+		            stmt.close();
+		            ObjConnBean.Conn.commit();
+		            mSignature = null; 
+            		mResult = true;
+				}
+      			catch(SQLException e){
+       		 		System.out.println("保存签章错误:"+e.toString());
+        			mResult=false;
+      			}
+    		
+  		ObjConnBean.CloseConnection();
+  		}
+		out.clear();
+		out.print("SIGNATUREID="+mSignatureID+"\r\n");
+		out.print("RESULT=OK");
+	}
+
+	if(mCommand.equalsIgnoreCase("GETNOWTIME")){         //获取服务器时间
+		java.sql.Date mDate;
+		Calendar cal  = Calendar.getInstance();
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+		String mDateTime=formatter.format(cal.getTime());
+		out.clear();
+		out.print("NOWTIME="+mDateTime+"\r\n");
+		out.print("RESULT=OK");
+	}
+	if(mCommand.equalsIgnoreCase("DELESIGNATURE")){   //删除签章数据信息
+		mDocumentID=request.getParameter("DOCUMENTID");
+		mSignatureID=request.getParameter("SIGNATUREID");
+		System.out.println("DocuemntID:"+mDocumentID);
+		System.out.println("SignatureID:"+mSignatureID);
+   		if (ObjConnBean.OpenConnection()){
+  			strSql="SELECT * from HTMLSignature Where SignatureID='"+mSignatureID+"' and DocumentID='"+mDocumentID+"'";
+			ResultSet rs=null;
+			rs = ObjConnBean.ExecuteQuery(strSql);
+			if(rs.next()){
+				try{
+					strSql="DELETE from HTMLSignature Where SignatureID='"+mSignatureID+"' and DocumentID='"+mDocumentID+"'";
+					ObjConnBean.ExecuteUpdate(strSql);
+				}
+				catch(Exception ex){
+					out.println(ex.toString());
+				}
+			}
+			ObjConnBean.CloseConnection();
+  		}
+		out.clear();
+		out.print("RESULT=OK");
+	}
+
+	if(mCommand.equalsIgnoreCase("LOADSIGNATURE")){    //调入签章数据信息
+		mDocumentID=request.getParameter("DOCUMENTID");
+		mSignatureID=request.getParameter("SIGNATUREID");
+		System.out.println("DocuemntID:"+mDocumentID);
+		System.out.println("SignatureID:"+mSignatureID);
+   		if (ObjConnBean.OpenConnection()){
+  			strSql="SELECT * from HTMLSignature Where SignatureID='"+mSignatureID+"' and DocumentID='"+mDocumentID+"'";
+			ResultSet rs=null;
+			rs = ObjConnBean.ExecuteQuery(strSql);
+			if(rs.next()){
+			try{
+				
+					mSignatureSize=rs.getInt("SignatureSize");
+					BLOB vField=((OracleResultSet) rs).getBLOB("Signature");
+					mSignature=new byte[mSignatureSize];
+					InputStream instream = vField.getBinaryStream();
+					instream.read(mSignature, 0, mSignatureSize);
+	        		instream.close();
+	        		mSignature_1=new String(mSignature);
+	        	}
+	        	catch (IOException ex) {
+                	System.out.println(ex.toString());
+               }
+			}
+			ObjConnBean.CloseConnection();
+  		}
+  		System.out.println(mSignature_1);
+		out.clear();
+		out.print(mSignature_1+"\r\n");
+		out.print("RESULT=OK");
+	}
+
+
+	if(mCommand.equalsIgnoreCase("SHOWSIGNATURE")){   //获取当前签章SignatureID,调出SignatureID,再自动调LOADSIGNATURE数据
+		  mDocumentID=request.getParameter("DOCUMENTID");
+		  System.out.println("DocuemntID:"+mDocumentID);
+    	mSignatures="";
+   		if (ObjConnBean.OpenConnection()){
+  			strSql="SELECT * from HTMLSignature Where DocumentID='"+mDocumentID + "'";
+			ResultSet rs=null;
+			rs = ObjConnBean.ExecuteQuery(strSql);
+			while(rs.next()){
+				mSignatures=mSignatures+rs.getString("SignatureID")+";";
+			}
+			ObjConnBean.CloseConnection();
+  		}
+		out.clear();
+		out.print("SIGNATURES="+mSignatures+"\r\n");
+		out.print("RESULT=OK");
+	}
+
+
+	//---------------------------------------------------------------------------------------
+	if(mCommand.equalsIgnoreCase("GETSIGNATUREDATA")){           //批量签章时,获取所要保护的数据
+		String mSignatureData = "";
+		mDocumentID = request.getParameter("DOCUMENTID");
+		System.out.println(new String(request
+				.getParameter("FIELDSLIST").getBytes("8859_1")));
+		System.out.println(request.getParameter("FIELDSNAME"));
+		 
+		String targetUrl = "http://" + request.getServerName() + ":"
+				+ request.getServerPort() + request.getContextPath()
+				+ "/GetmSignatureData.do" + "?documentID="
+				+ mDocumentID;
+		try {
+			URL url = new URL(targetUrl);
+			HttpURLConnection connection = (HttpURLConnection) url
+					.openConnection();// 此时cnnection只是为一个连接对象,待连接中 
+			connection.setRequestMethod("GET");
+			//设置通用的请求属性  
+			connection.setRequestProperty("accept", "*/*");
+			connection.setRequestProperty("connection", "Keep-Alive");
+			connection
+					.setRequestProperty("user-agent",
+							"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
+
+			connection.connect();
+			BufferedReader bf = new BufferedReader(
+					new InputStreamReader(connection.getInputStream(),
+							"gb2312"));
+			String line;
+			StringBuilder sb1 = new StringBuilder(); // 用来存储响应数据
+
+			// 循环读取流,若不到结尾处
+			while ((line = bf.readLine()) != null) {
+				sb1.append(line);
+			}
+			bf.close(); // 重要且易忽略步骤 (关闭流,切记!) 
+			connection.disconnect(); // 销毁连接
+
+			String result = "";
+			try {
+				result = java.net.URLDecoder.decode(sb1.toString(),
+						"gb2312");
+			} catch (UnsupportedEncodingException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		 
+			String[] arrResult = result.split("\r\n");
+			Map<String, String> map = new HashMap<String, String>();//字符串转换为map
+			for (String tmp : arrResult) {
+				String[] arrTmp = tmp.split("=");
+				try {
+					map.put(arrTmp[0].trim(), arrTmp[1]);
+				} catch (Exception e) {
+					map.put(arrTmp[0], "");
+				}
+			}
+
+			//---------------------------------------------------------------------------
+			StringBuffer sb = new StringBuffer();
+			sb.append("BH=" + (map.get("BH")!=null?map.get("BH").trim():null)+ "\r\n");
+			sb.append("ZYDW=" +(map.get("ZYDW")!=null?map.get("ZYDW").trim():null) + "\r\n");
+			sb.append("ZYWTR="+(map.get("ZYWTR")!=null?map.get("ZYWTR").trim():null) + "\r\n");
+			sb.append("CM=" + (map.get("CM")!= null?map.get("CM").trim():null) + "\r\n");
+			sb.append("XCGLFZR=" + (map.get("XCGLFZR")!=null? map.get("XCGLFZR").trim():null) + "\r\n");
+			sb.append("WXHWMCBH=" +(map.get("WXHWMCBH")!=null? map.get("WXHWMCBH").trim():null) + "\r\n");
+			sb.append("WPBH=" + (map.get("WPBH")!=null? map.get("WPBH").trim():null) + "\r\n");
+			sb.append("JSPM=" + (map.get("JSPM")!=null? map.get("JSPM").trim():null) + "\r\n");
+			sb.append("BZ=" + (map.get("BZ")!=null? map.get("BZ").trim():null) + "\r\n");
+			sb.append("WXPLB=" +(map.get("WXPLB")!=null? map.get("WXPLB").trim():null) + "\r\n");
+			sb.append("BYZD4=" +(map.get("BYZD4")!=null? map.get("BYZD4").trim():null) + "\r\n");
+			sb.append("INOROUT=" +(map.get("INOROUT")!=null? map.get("INOROUT").trim():null) + "\r\n");
+			sb.append("ZYSL=" +(map.get("ZYSL")!=null? map.get("ZYSL").trim():null) + "\r\n");
+			sb.append("SG=" + (map.get("SG")!=null? map.get("SG").trim():null) + "\r\n");
+			sb.append("XG=" + (map.get("XG")!=null? map.get("XG").trim():null) + "\r\n");
+			sb.append("MAO=" + (map.get("MAO")!=null? map.get("MAO").trim():null) + "\r\n");
+			sb.append("HZWXX=" +(map.get("HZWXX")!=null? map.get("HZWXX").trim():null) + "\r\n");
+			sb.append("DXDJ=" + (map.get("DXDJ")!=null? map.get("DXDJ").trim():null) + "\r\n");
+			sb.append("WRLB=" + (map.get("WRLB")!=null? map.get("WRLB").trim():null) + "\r\n");
+			sb.append("JZXSL=" +(map.get("JZXSL")!=null? map.get("JZXSL").trim():null) + "\r\n");
+			sb.append("HC=" +(map.get("HC")!=null? map.get("HC").trim():null) + "\r\n");
+			sb.append("HWZL=" +(map.get("HWZL")!=null? map.get("HWZL").trim():null) + "\r\n");
+			sb.append("HWXS=" +(map.get("HWXS")!=null? map.get("HWXS").trim():null) + "\r\n");
+			sb.append("LHXZ=" +(map.get("LHXZ")!=null? map.get("LHXZ").trim():null) + "\r\n");
+			sb.append("ZYDD=" +(map.get("ZYDD")!=null? map.get("ZYDD").trim():null) + "\r\n");
+			sb.append("ZYSJQ=" +(map.get("ZYSJQ")!=null? map.get("ZYSJQ").trim():null) + "\r\n");
+			sb.append("ZYSJZ=" +(map.get("ZYSJZ")!=null? map.get("ZYSJZ").trim():null) + "\r\n");
+			sb.append("AQFFCS=" +(map.get("AQFFCS")!=null? map.get("AQFFCS").trim():null) + "\r\n");
+			sb.append("BGR=" +(map.get("BGR")!=null? map.get("BGR").trim():null) + "\r\n");
+			sb.append("LXFS=" +(map.get("LXFS")!=null? map.get("LXFS").trim():null) + "\r\n");
+			sb.append("BGSJ=" +(map.get("BGSJ")!=null? map.get("BGSJ").trim():null) + "\r\n");
+			sb.append("BYZD2=" +(map.get("BYZD2")!=null? map.get("BYZD2").trim():null) + "\r\n");
+			//审核前审核的数据还没入库
+			//sb.append("SHYJ=" +(map.get("SHYJ")!=null? map.get("SHYJ").trim():null) + "\r\n");
+			//sb.append("SHR=" +(map.get("SHR")!=null? map.get("SHR").trim():null) + "\r\n");
+			//sb.append("SHSJ=" + (map.get("SHSJ")!=null? map.get("SHSJ").trim():null) + "\r\n");
+			mExtParam = URLDecoder.decode(mExtParam,"utf-8");
+			//System.out.println(mExtParam);
+			sb.append(mExtParam);
+			//##############################################################
+
+			//mSignatureData = session.getAttribute("mSignatureData").toString();
+			//session.putValue("mSignatureData",null);
+			mSignatureData = sb.toString();
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		 
+		mSignatureData = java.net.URLEncoder.encode(mSignatureData);
+		out.clear();
+		out.print("SIGNATUREDATA=" + mSignatureData + "\r\n");
+		out.print("RESULT=OK");
+	}
+
+	if(mCommand.equalsIgnoreCase("PUTSIGNATUREDATA")){            //批量签章时,写入签章数据
+		mDocumentID=new String(request.getParameter("DOCUMENTID").getBytes("8859_1"));
+		mSignature=request.getParameter("SIGNATURE").getBytes("8859_1");
+		mSignatureSize=mSignature.length;
+   		if (ObjConnBean.OpenConnection()){
+      			java.sql.PreparedStatement prestmt=null;
+      			try{
+				//取得唯一值(mSignature)
+    				java.util.Date dt=new java.util.Date();
+    				long lg=dt.getTime();
+    				Long ld=new Long(lg);
+    				mSignatureID=ld.toString();
+        			String Sql="insert into HTMLSignature (DocumentID,SignatureID,SignatureSize,Signature) values (?,?,?,EMPTY_BLOB()) ";
+		    	    prestmt =ObjConnBean.Conn.prepareStatement(Sql);
+        			prestmt.setString(1, mDocumentID);
+			        prestmt.setString(2, mSignatureID);
+    	    		prestmt.setInt(3, mSignatureSize);
+			        ObjConnBean.Conn.setAutoCommit(true);
+        			prestmt.execute();
+		    	    ObjConnBean.Conn.commit();
+        			prestmt.close();
+			        Statement stmt = null;
+			        ObjConnBean.Conn.setAutoCommit(false);
+		            stmt = ObjConnBean.Conn.createStatement();
+		           OracleResultSet update = (OracleResultSet) stmt.executeQuery("select Signature from HTMLSignature where DocumentID=" + mDocumentID + " and SignatureID=" + mSignatureID + " for update");
+		            if (update.next()) {
+		              try {
+		                BLOB vField=((oracle.jdbc.OracleResultSet) update).getBLOB("Signature");
+		                OutputStream outstream = vField.getBinaryOutputStream();
+				        outstream.write(mSignature, 0, mSignatureSize);
+				        outstream.close();
+		                mSignature_1=new String(mSignature);
+		              }
+		              catch (IOException e) {
+		                System.out.println(e.toString());
+		                mResult = false;
+		              }
+		            }
+		            update.close();
+		            stmt.close();
+		            ObjConnBean.Conn.commit();
+		            mSignature = null; 
+			        mResult=true;
+    	  		}
+      			catch(SQLException e){
+       		 		System.out.println(e.toString());
+        			mResult=false;
+      			}
+  		ObjConnBean.CloseConnection();
+  		}
+		out.clear();
+		out.print("SIGNATUREID="+mSignature_1+"\r\n");
+		out.print("RESULT=OK");
+	}
+
+	//---------------------------------------------------------------------------------------
+
+
+	if(mCommand.equalsIgnoreCase("SIGNATUREKEY")){
+		//mUserName=new String(request.getParameter("USERNAME").getBytes("8859_1")); 
+		String RealPath =mUserName+"\\"+mUserName+".key";
+		KeyName=application.getRealPath(RealPath);
+
+		ObjFile=new java.io.File(KeyName);         //创建文件对象 
+		ChrBuffer=new char[10];
+		try{
+			if(ObjFile.exists()){//文件存在 
+				InputStreamReader isr=new InputStreamReader(new FileInputStream(KeyName));
+				//ObjFileReader = new java.io.FileReader(ObjFile); 		//创建读文件对象 
+				//ObjFileReader.skip(1);
+				//ObjFileReader.read(ChrBuffer, 0, 1);
+				//System.out.println(ChrBuffer);
+				while((intLength=isr.read(ChrBuffer))!=-1){    //读文件内容 
+					out.write(ChrBuffer,0,intLength);         
+				} 
+				out.write("\r\n");
+				out.write("RESULT=OK");
+				isr.close(); //关闭读文件对象 
+			} 
+			else{
+				out.println("File Not Found"+KeyName); //文件不存在 
+			} 
+		}
+		catch(Exception e){
+                        
+			System.out.println(e.toString());
+		}		
+	}
+
+
+
+	if(mCommand.equalsIgnoreCase("SAVEHISTORY")){    //保存签章历史信息
+		mSignatureName=new String(request.getParameter("SIGNATURENAME").getBytes("8859_1"));//印章名称
+		mSignatureUnit=new String(request.getParameter("SIGNATUREUNIT").getBytes("8859_1"));//印章单位
+		mSignatureUser=new String(request.getParameter("SIGNATUREUSER").getBytes("8859_1"));//印章用户名
+		mSignatureSN=new String(request.getParameter("SIGNATURESN").getBytes("8859_1"));//印章序列号
+		mSignatureGUID=new String(request.getParameter("SIGNATUREGUID").getBytes("8859_1"));//全球唯一标识
+		mDocumentID=new String(request.getParameter("DOCUMENTID").getBytes("8859_1"));//页面ID
+		mSignatureID=new String(request.getParameter("SIGNATUREID").getBytes("8859_1"));//签章序列号
+		mMACHIP=new String(request.getParameter("MACHIP").getBytes("8859_1"));//签章机器IP
+		OPType=new String(request.getParameter("LOGTYPE").getBytes("8859_1"));//日志标志
+    mKeySn=new String(request.getParameter("KEYSN").getBytes("8859_1"));//KEY序列号
+    if (ObjConnBean.OpenConnection()){
+      java.sql.PreparedStatement prestmt=null;
+      try{
+				java.sql.Date mDate;
+				Calendar cal  = Calendar.getInstance();
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+				String mDateTime=formatter.format(cal.getTime());
+
+        strSql="insert into HTMLHistory(SignatureName,SignatureUnit,SignatureUser,SignatureSN,";
+        strSql=strSql+"SignatureGUID,DocumentID,SignatureID,IP,LogTime,LogType,KeySN)";
+        strSql=strSql+" values(?,?,?,?,?,?,?,?,?,?,?)";
+        prestmt =ObjConnBean.Conn.prepareStatement(strSql);
+
+        prestmt.setString(1, mSignatureName);
+        prestmt.setString(2, mSignatureUnit);
+        prestmt.setString(3, mSignatureUser);
+        prestmt.setString(4, mSignatureSN);
+        prestmt.setString(5, mSignatureGUID);
+        prestmt.setString(6, mDocumentID);
+        prestmt.setString(7, mSignatureID);
+        prestmt.setString(8, mMACHIP);
+        prestmt.setString(9,mDateTime);
+        prestmt.setString(10,OPType);
+        prestmt.setString(11,mKeySn);
+        ObjConnBean.Conn.setAutoCommit(true);
+        prestmt.execute();
+        ObjConnBean.Conn.commit();
+        prestmt.close();
+        mResult=true;
+      }
+      catch(SQLException e){
+        System.out.println(e.toString());
+        mResult=false;
+      }
+  		ObjConnBean.CloseConnection();
+    }
+		out.clear();
+		out.print("SIGNATUREID="+mSignatureID+"\r\n");
+		out.print("RESULT=OK");
+	}
+%>

BIN
gkaq/yjpt-java/trunk/yjpt/WEB-INF/lib/ojdbc14.jar


BIN
gkaq/yjpt-java/trunk/yjpt/WEB-INF/lib/ojdbc6.jar


+ 6 - 1
gkaq/yjpt-java/trunk/yjpt/WEB-INF/web.xml

@@ -30,6 +30,11 @@
 		<param-value>Y</param-value>
 	</context-param>
 	<context-param>
+		<description>是否在危险品审批中启用签章功能(Y/N)</description>
+		<param-name>iSignature</param-name>
+		<param-value>N</param-value>
+	</context-param>
+	<context-param>
 		<param-name>contextConfigLocation</param-name>
 		<param-value>
 			classpath*:spring/applicationContext*.xml
@@ -94,7 +99,7 @@
 	<context-param>
 		<description>是否jax-ws同步(Y/N)</description>
 		<param-name>jaxws_sync</param-name>
-		<param-value>N</param-value>
+		<param-value>Y</param-value>
 	</context-param>
 	<context-param>
 		<description>同步UserId</description>

+ 6 - 1
gkaq/yjpt-java/trunk/yjpt/WEB-INF/web.xml.ftl

@@ -7,7 +7,7 @@
 	<context-param>
 		<description>系统版本</description>
 		<param-name>version</param-name>
-		<param-value>4.1.3</param-value>
+		<param-value>4.1.7</param-value>
 	</context-param>	
 	<context-param>
 		<description>0:省级;1:市级</description>
@@ -30,6 +30,11 @@
 		<param-value>${qlygSync}</param-value>
 	</context-param>
 	<context-param>
+		<description>是否在危险品审批中启用签章功能(Y/N)</description>
+		<param-name>iSignature</param-name>
+		<param-value>${iSign}</param-value>
+	</context-param>
+	<context-param>
 		<param-name>contextConfigLocation</param-name>
 		<param-value>
 			classpath*:spring/applicationContext*.xml

+ 1375 - 0
gkaq/yjpt-java/trunk/yjpt/ZysqbpPrintSignature.jsp

@@ -0,0 +1,1375 @@
+<%@ page contentType="text/html; charset=gb2312"%>
+<%-- <%@page contentType="application/msword;charset=GBK" %> --%>
+<%-- <%@page contentType="application/msword;charset=GBK" %> --%>
+<%-- <%response.setHeader("Content-disposition","attachment; filename=exdata.doc");%> --%>
+<%@ page import="java.io.*"%>
+<%@ page import="java.text.*"%>
+<%@ page import="java.util.*"%>
+<%@ page import="java.lang.*"%>
+<%@ page import="java.sql.*"%>
+<%@ page import="java.net.*"%>
+<%@ page import="DBstep.*"%>
+<%@page import="oracle.jdbc.driver.OracleResultSet"%>
+<%@page import="oracle.sql.BLOB"%>
+
+<%!String BH;//=编号;
+	String ZYDW;//=作业单位;
+	String ZYWTR;//作业委托人
+	String CM;//=船名;
+	String XCGLFZR;//=现场管理负责人;
+	String WXHWMCBH;//=危险品名称;
+	String WPBH;//=物品编号;
+	String JSPM;//=技术品名;
+	String BZ;//=包装;
+	String WXPLB;//=类别和项别;
+	String BYZD4;//=包装类别;
+	String INOROUT;//=进出港;
+	String ZYSL;//=作业数量(吨);
+	String SG;//=上港;
+	String XG;//=下港;
+	String MAO;//=内外贸;
+	String HZWXX;//=火灾危险性;
+	String DXDJ;//=毒性等级;
+	String WRLB;//=污染类别;
+	String JZXSL;//=集装箱数量;
+	String HC;//=航次;
+	String HWZL;//=货物种类;
+	String HWXS;//=货物形式;
+	String LHXZ;//=理化性质;
+	String ZYDD;//=作业地点;
+	String ZYSJQ;//=作业时间起;
+	String ZYSJZ;//=作业时间止;
+	String AQFFCS;//=安全防范措施;
+	String BGR;//=报告人;
+	String LXFS;//=联系方式;
+	String BGSJ;//=报告时间;
+	String BYZD2;//=申报员证书编号;
+	String SHYJ;//=审核意见;
+	String SHR;//=审核人;
+	String SHSJ;//=审核时间
+	String DocumentID; //文档编号
+	String mServerUrl;%>
+
+<%
+	DocumentID = request.getParameter("documentID");
+	mServerUrl = "http://" + request.getServerName() + ":"
+			+ request.getServerPort() + request.getContextPath()
+			+ "/Service.jsp";
+
+	try {
+		String targetUrl = "http://" + request.getServerName() + ":"
+				+ request.getServerPort() + request.getContextPath()
+				+ "/GetmSignatureData.do" + "?documentID=" + DocumentID;
+
+		URL url = new URL(targetUrl);
+		HttpURLConnection connection = (HttpURLConnection) url
+				.openConnection();// 此时cnnection只是为一个连接对象,待连接中 
+		connection.setRequestMethod("GET");
+
+		connection.connect();
+
+		//System.out.println(connection.getResponseCode());
+
+		BufferedReader bf = new BufferedReader(new InputStreamReader(
+				connection.getInputStream(), "gb2312"));
+		String line;
+		StringBuilder sb = new StringBuilder(); // 用来存储响应数据
+
+		// 循环读取流,若不到结尾处
+		while ((line = bf.readLine()) != null) {
+			sb.append(line);
+		}
+		bf.close(); // 重要且易忽略步骤 (关闭流,切记!) 
+		connection.disconnect(); // 销毁连接
+
+		String result = "";
+		try {
+			result = java.net.URLDecoder
+					.decode(sb.toString(), "gb2312");
+		} catch (UnsupportedEncodingException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		String[] arrResult = result.split("\r\n");
+		Map<String, String> map = new HashMap<String, String>();
+		for (String tmp : arrResult) {
+			String[] arrTmp = tmp.split("=");
+			try {
+				map.put(arrTmp[0].trim(), arrTmp[1]);
+			} catch (Exception e) {
+				map.put(arrTmp[0], "");
+			}
+
+		}
+
+		BH = map.get("BH").trim();//=编号;
+		ZYDW = map.get("ZYDW").trim();//=作业单位;
+		ZYWTR = map.get("ZYWTR").trim();//作业委托人
+		CM = map.get("CM").trim();//=船名;
+		XCGLFZR = map.get("XCGLFZR").trim();//=现场管理负责人;
+		WXHWMCBH = map.get("WXHWMCBH").trim();//=危险品名称;
+		WPBH = map.get("WPBH").trim();//=物品编号;
+		JSPM = map.get("JSPM");//=技术品名;
+		BZ = map.get("BZ").trim();//=包装;
+		WXPLB = map.get("WXPLB").trim();//=类别和项别;
+		BYZD4 = map.get("BYZD4");//=包装类别;
+		INOROUT = map.get("INOROUT").trim();//=进出港;
+		ZYSL = map.get("ZYSL").trim();//=作业数量(吨);
+		SG = map.get("SG").trim();//=上港;
+		XG = map.get("XG").trim();//=下港;
+		MAO = map.get("MAO").trim();//=内外贸;
+		HZWXX = map.get("HZWXX").trim();//=火灾危险性;
+		DXDJ = map.get("DXDJ").trim();//=毒性等级;
+		WRLB = map.get("WRLB").trim();//=污染类别;
+		JZXSL = map.get("JZXSL").trim();//=集装箱数量;
+		HC = map.get("HC").trim();//=航次;
+		HWZL = map.get("HWZL").trim();//=货物种类;
+		HWXS = map.get("HWXS").trim();//=货物形式;
+		LHXZ = map.get("LHXZ").trim();//=理化性质;
+		ZYDD = map.get("ZYDD").trim();//=作业地点;
+		ZYSJQ = map.get("ZYSJQ").trim();//=作业时间起;
+		ZYSJZ = map.get("ZYSJZ").trim();//=作业时间止;
+		AQFFCS = map.get("AQFFCS").trim();//=安全防范措施;
+		BGR = map.get("BGR").trim();//=报告人;
+		LXFS = map.get("LXFS").trim();//=联系方式;
+		BGSJ = map.get("BGSJ").trim();//=报告时间;
+		BYZD2 = map.get("BYZD2").trim();//=申报员证书编号;
+		SHYJ = map.get("SHYJ").trim();//=审核意见;
+		SHR = map.get("SHR").trim();//=审核人;
+		SHSJ = map.get("SHSJ").trim();
+
+	} catch (Exception e) {
+		e.printStackTrace();
+	}
+
+	//--------------------------------------load world ----------------------------
+	ResultSet result2 = null;
+	String mSubject = null;
+	String mStatus = null;
+	String mAuthor = null;
+	String mFileName = null;
+	String mFileDate = null;
+	String mHTMLPath = "";
+
+	String mDisabled = "";
+	String mDisabledSave = "";
+	String mWord = "";
+	String mExcel = "";
+
+	//自动获取OfficeServer和OCX文件完整URL路径
+	String mHttpUrlName = request.getRequestURI();
+	String mScriptName = request.getServletPath();
+	String mServerName = "OfficeServer.jsp";
+
+	String mServerUrl2 = "http://"
+			+ request.getServerName()
+			+ ":"
+			+ request.getServerPort()
+			+ mHttpUrlName.substring(0,
+					mHttpUrlName.lastIndexOf(mScriptName)) + "/"
+			+ mServerName;//取得OfficeServer文件的完整URL
+	String mHttpUrl = "http://"
+			+ request.getServerName()
+			+ ":"
+			+ request.getServerPort()
+			+ mHttpUrlName.substring(0,
+					mHttpUrlName.lastIndexOf(mScriptName)) + "/";
+
+	String mRecordID = request.getParameter("RecordID");
+	String mTemplate = request.getParameter("Template");
+	String mFileType = request.getParameter("FileType");
+	String mEditType = request.getParameter("EditType");
+	String mShowType = request.getParameter("ShowType");
+	String mUserName = new String(request.getParameter("UserName")
+			.getBytes("8859_1"));
+
+	//设置编号初始值
+	if (mRecordID == null) {
+		mRecordID = "";
+	}
+
+	//设置编辑状态初始值
+	if (mEditType == null || mEditType == "") {
+		mEditType = "1,1";
+	}
+
+	//设置显示模式初始值
+	if (mShowType == null || mShowType == "") {
+		mShowType = "1";
+	}
+
+	//设置文档类型初始值
+	if (mFileType == null || mFileType == "") {
+		mFileType = ".doc";
+	}
+
+	//设置用户名初始值
+	if (mUserName == null || mUserName == "") {
+		mUserName = "金格科技";
+	}
+
+	//设置模板初始值
+	if (mTemplate == null) {
+		mTemplate = "";
+	}
+
+	//打开数据库
+	DBstep.iDBManager2000 DbaObj = new DBstep.iDBManager2000();
+	if (DbaObj.OpenConnection()) {
+		String mSql = "Select * From Document Where RecordID='"
+				+ mRecordID + "'";
+		try {
+			result2 = DbaObj.ExecuteQuery(mSql);
+			if (result2.next()) {
+				mRecordID = result2.getString("RecordID");
+				mTemplate = result2.getString("Template");
+				mSubject = result2.getString("Subject");
+				mAuthor = result2.getString("Author");
+				mFileDate = result2.getString("FileDate");
+				mStatus = result2.getString("Status");
+				mFileType = result2.getString("FileType");
+				mHTMLPath = result2.getString("HTMLPath");
+			} else {
+				//取得唯一值(mRecordID)
+				java.util.Date dt = new java.util.Date();
+				long lg = dt.getTime();
+				Long ld = new Long(lg);
+				//初始化值
+				mRecordID = ld.toString();//保存的是文档的编号,通过该编号,可以在里找到所有属于这条纪录的文档
+				mTemplate = mTemplate;
+				mSubject = "请输入主题";
+				mAuthor = mUserName;
+				mFileDate = DbaObj.GetDateTime();
+				mStatus = "DERF";
+				mFileType = mFileType;
+				mHTMLPath = "";
+			}
+			result2.close();
+		} catch (SQLException e) {
+			System.out.println(e.toString());
+		}
+		DbaObj.CloseConnection();
+	}
+
+	if (mEditType == "0,0") {
+		mDisabled = "disabled";
+		mDisabledSave = "disabled";
+	} else {
+		mDisabled = "";
+	}
+
+	mFileName = mRecordID + mFileType; //取得完整的文档名称
+	if (mFileType.equalsIgnoreCase(".doc")
+			|| mFileType.equalsIgnoreCase(".wps")) {
+		mWord = "";
+		mExcel = "disabled";
+	} else if (mFileType == ".xls") {
+		mWord = "disabled";
+		mExcel = "";
+	} else {
+		mDisabled = "disabled";
+	}
+%>
+
+<html>
+<head>
+<title></title>
+<style media="print">
+.Noprint {
+	display: none;
+}
+</style>
+<script type="text/javascript">
+  
+//作用:自动锁定文档
+function ProtectDocument()
+{
+   var mLength=document.getElementsByName("iHtmlSignature").length; 
+   var mProtect = false;
+   for (var i=0;i<mLength;i++){
+       var vItem=document.getElementsByName("iHtmlSignature")[i];
+	   if(vItem.DocProtect)
+	   {
+          mProtect = true;
+		  break;
+	   }	   
+   }
+  if(!mProtect){
+     var vItem = document.getElementsByName("iHtmlSignature")[mLength-1];
+	 vItem.LockDocument(true);
+   }
+}
+
+ 
+
+//作用:获取签章信息,以XML格式返回,并且分析显示数据.具体的XML格式请参照技术白皮书
+//      具体分析后的内容如何处理,请自己做适当处理,本示例仅将返回结果进行提示。
+function WebGetSignatureInfo(){
+  var mSignXMl=DocForm.SignatureControl.GetSignatureInfo();   //读取当前文档签章信息,以XML返回
+  alert(mSignXMl);                                      //调试信息
+
+  var XmlObj = new ActiveXObject("Microsoft.XMLDOM");
+  XmlObj.async = false;
+  var LoadOk=XmlObj.loadXML(mSignXMl);
+  var ErrorObj = XmlObj.parseError;
+
+  if (ErrorObj.errorCode != 0){
+     alert("返回信息错误...");
+  }else{
+
+    var CurNodes=XmlObj.getElementsByTagName("iSignature_HTML");
+    for (var iXml=0;iXml<CurNodes.length;iXml++){
+	    var TmpNodes=CurNodes.item(iXml);
+		/*
+		alert(TmpNodes.selectSingleNode("SignatureOrder").text);  //签章序列号
+		alert(TmpNodes.selectSingleNode("SignatureName").text);   //签章名称
+		alert(TmpNodes.selectSingleNode("SignatureUnit").text);   //签章单位
+		alert(TmpNodes.selectSingleNode("SignatureUser").text);   //签章用户
+		alert(TmpNodes.selectSingleNode("SignatureDate").text);   //签章日期
+		alert(TmpNodes.selectSingleNode("SignatureIP").text);     //签章电脑IP
+		alert(TmpNodes.selectSingleNode("KeySN").text);           //钥匙盘序列号
+		alert(TmpNodes.selectSingleNode("SignatureSN").text);     //签章序列号
+		alert(TmpNodes.selectSingleNode("SignatureResult").text); //签章验测结果
+		*/
+    }
+
+  }
+}
+
+
+//作用:设置禁止(允许)签章的密钥盘   具体参数信息请参照技术白皮书
+function WebAllowKeySN()
+{
+  var KeySn=window.prompt("请输入禁止在此页面上签章的钥匙盘序列号:");
+  DocForm.SignatureControl.WebAllowKeySN(false,KeySn);
+}
+
+
+//作用:获取KEY密钥盘的SN序列号
+function WebGetKeySN()
+{
+  var KeySn=DocForm.SignatureControl.WebGetKeySN();
+  alert("您的钥匙盘序列号为:"+KeySn);
+}
+
+
+//作用:校验用户的 PIN码是否正确
+function WebVerifyKeyPIN()
+{
+  var KeySn = DocForm.SignatureControl.WebGetKeySN();
+  var mBoolean = DocForm.SignatureControl.WebVerifyKeyPIN("123456");
+  if (mBoolean){
+  	alert(KeySn+":通过校验");
+  }else{
+  	alert(KeySn+":未通过校验");
+  }
+}
+
+
+//作用:修改钥匙盘PIN码,参数1为原PIN码,参数2为修改后的PIN码
+function WebEditKeyPIN()
+{
+  var oldPIN = window.prompt("请输入原来的PIN码");
+  if(oldPIN == null){
+	return;
+  }
+  var newPIN = window.prompt("请输入修改后的PIN码");
+  if(newPIN == null){
+	return;
+  }
+  var mBoolean = DocForm.SignatureControl.WebEditKeyPIN(oldPIN,newPIN);
+  if (mBoolean){
+  	alert("钥匙盘PIN码修改成功!");
+  }else{
+  	alert("钥匙盘PIN码修改不成功!");
+  }
+}
+
+
+//作用:批量验证签章
+function BatchCheckSign()
+{
+   DocForm.SignatureControl.BatchCheckSign();
+}
+
+
+ 
+
+//作用:显示或隐藏签章
+function ShowSignature(visibleValue)
+{
+   var mLength=document.getElementsByName("iHtmlSignature").length; 
+   for (var i=0;i<mLength;i++){
+       var vItem=document.getElementsByName("iHtmlSignature")[i];
+       vItem.Visiabled = visibleValue;
+   }
+}
+
+//作用:删除签章
+function DeleteSignature()
+{
+   var mLength=document.getElementsByName("iHtmlSignature").length; 
+   var mSigOrder = "";
+   for (var i=mLength-1;i>=0;i--){
+       var vItem=document.getElementsByName("iHtmlSignature")[i];
+	   //mSigOrder := 
+	   if (vItem.SignatureOrder=="1")
+	   {
+         vItem.DeleteSignature();
+	   }
+   }
+}
+
+//作用:移动签章
+function MoveSignature()
+{
+  DocForm.SignatureControl.MovePositionByNoSave(100,100);
+  alert("位置增加100");
+  DocForm.SignatureControl.MovePositionByNoSave(-100,-100);
+  alert("回到原来位置");
+  DocForm.SignatureControl.MovePositionToNoSave(100,100);
+  alert("移动到100,100");
+}
+
+
+//作用:脱密
+function ShedCryptoDocument()
+{
+  DocForm.SignatureControl.ShedCryptoDocument();
+}
+
+
+//作用:脱密还原
+function ResetCryptoDocument()
+{
+  DocForm.SignatureControl.ResetCryptoDocument();
+}
+
+
+//作用:打印文档
+function PrintDocument(){
+   var tagElement = document.getElementById('documentPrintID');
+   tagElement.className = 'print';                                                 //样式改变为可打印
+   var mCount = DocForm.SignatureControl.PrintDocument(false,2,5);  //打印控制窗体
+   alert("实际打印份数:"+mCount);
+   tagElement.className = 'Noprint';                                               //样式改变为不可打印
+}
+
+//作用:获取IE版本,如果是高于IE9,设置打印方式解决签章打印黑白问题
+function getIEVersion()
+{
+ 
+	var mXml = "<?xml version='1.0' encoding='GB2312' standalone='yes'?>";
+  	mXml = mXml + "  <Signature>";
+  	mXml = mXml + "    <OtherParam>";
+  	mXml = mXml + "	    <PrintType>1</PrintType>";	//IE9以上设置为1解决签章打印黑白问题
+  	//mXml = mXml + "	    <DIVIndex>-999999</DIVIndex>";	//IE9以上设置为1解决签章打印黑白问题  		
+  	mXml = mXml + "    </OtherParam>";  		
+  	mXml = mXml + "  </Signature>";
+  	DocForm.SignatureControl.XmlConfigParam = mXml;				
+ 
+}
+  
+
+//作用:显示操作状态
+function StatusMsg(mString){
+  //webform.StatusBar.value=mString;
+}
+
+//作用:载入iWebOffice
+function Load(){
+
+	DocForm.SignatureControl.ShowSignature('<%=DocumentID%>');
+  try{
+    //以下属性必须设置,实始化iWebOffice
+    webform.WebOffice.WebUrl="<%=mServerUrl2%>";             //WebUrl:系统服务器路径,与服务器文件交互操作,如保存、打开文档,重要文件
+    webform.WebOffice.RecordID="<%=DocumentID%>";            //RecordID:本文档记录编号 mRecordID
+    webform.WebOffice.Template="<%=mTemplate%>";            //Template:模板编号
+    webform.WebOffice.FileName="<%=mFileName%>";            //FileName:文档名称
+    webform.WebOffice.FileType="<%=mFileType%>";            //FileType:文档类型  .doc  .xls  .wps
+    webform.WebOffice.UserName="<%=mUserName%>";            //UserName:操作用户名,痕迹保留需要
+    webform.WebOffice.EditType="<%=mEditType%>";            //EditType:编辑类型  方式一、方式二  <参考技术文档>
+                                                            //第一位可以为0,1,2,3 其中:0不可编辑;1可以编辑,无痕迹;2可以编辑,有痕迹,不能修订;3可以编辑,有痕迹,能修订;
+                                                            //第二位可以为0,1 其中:0不可批注,1可以批注。可以参考iWebOffice2009的EditType属性,详细参考技术白皮书
+    webform.WebOffice.MaxFileSize = 4 * 1024;               //最大的文档大小控制,默认是8M,现在设置成4M。
+    webform.WebOffice.Language="CH";                        //Language:多语言支持显示选择   CH简体 TW繁体 EN英文
+    //webform.WebOffice.ShowWindow = true;                  //控制显示打开或保存文档的进度窗口,默认不显示
+
+    webform.WebOffice.PenColor="#FF0000";                   //PenColor:默认批注颜色
+    webform.WebOffice.PenWidth="1";                         //PenWidth:默认批注笔宽
+    webform.WebOffice.Print="1";                            //Print:默认是否可以打印:1可以打印批注,0不可以打印批注
+    webform.WebOffice.ShowToolBar="0";                      //ShowToolBar:是否显示工具栏:1显示,0不显示
+
+    
+    //WebSetRibbonUIXML();                                  //控制OFFICE2007的选项卡显示
+    webform.WebOffice.WebOpen();                            //打开该文档    交互OfficeServer  调出文档OPTION="LOADFILE"    调出模板OPTION="LOADTEMPLATE"     <参考技术文档>
+    webform.WebOffice.ShowType=<%=mShowType%>;              //文档显示方式  1:表示文字批注  2:表示手写批注  0:表示文档核稿
+
+     
+    
+    if (!webform.WebOffice.WebLoadBookmarks()){  	//交互OfficeServer的OPTION="LOADBOOKMARKS"
+     	//StatusMsg(webform.WebOffice.Status);
+  	}else{
+     	//StatusMsg(webform.WebOffice.Status);
+  	}
+  	
+  	
+  	ConvertSignature();//将html的章转到office中的test1标签处
+  	
+  	
+    
+  }catch(e){
+  	 
+    alert(e.description);                                   //显示出错误信息
+  }
+}
+
+function SetCharacterEncoding()
+{ 
+	//var mValue = window.prompt("请输入信息字符集 0:ANSI  1:UTF-8 2:为HTML签章采用字符集","2");
+	//if(mValue == null){
+	//return;
+	//}
+	   
+	
+	//webform.SignatureControl.SetParam("SIGNRESULTUTF8","0");
+	//设置SignatureValueStr结果字符集
+	var mLength=document.getElementsByName("iHtmlSignature").length; 
+	var mSigOrder = "";
+	for (var i=mLength-1;i>=0;i--){
+		var vItem=document.getElementsByName("iHtmlSignature")[i];
+		vItem.SetParam('SIGNRESULTUTF8', "0");
+       
+		//alert(document.getElementsByName("iHtmlSignature").SignatureValueStr);
+		
+	}	
+
+}
+
+//HTML签章转换为OFFICE签章
+function ConvertSignature(){
+    //alert("222");
+    SetCharacterEncoding();
+     var mResult = true;
+     var BmkName = "test1";
+     var vItem = document.getElementsByName("iHtmlSignature");
+     if(vItem.length<=0){
+     	//alert("请先点击上面的‘HTML签章’,至少盖一个HTML签章!");
+     	return;
+     }
+      
+      SetActiveDocument();
+      
+      webform.WebOffice.SignatureAPI.BeginLoadSignature();
+	  try{
+	     // webform.WebOffice.SignatureAPI.LockDocument(1); //锁定文档
+	      var mLength = vItem.length;
+	      var  books= webform.WebOffice.WebObject.Bookmarks;
+	      if(books.Exists(BmkName)) {
+	      
+              webform.WebOffice.WebObject.Bookmarks.Item(BmkName).Range.Select();
+           //   webform.WebOffice.SignatureAPI.UnLockDocument();
+		//alert("签章高度和宽度:"+vItem[0].clientHeight+"||"+vItem[0].clientWidth);
+		
+			  if(vItem[0].Check){
+                //webform.WebOffice.SignatureAPI.ConvertHTML2Office(vItem[0].SignatureValueStr);
+                zhuanzhang(vItem[0].SignatureValueStr);
+              }
+		
+            }
+	    
+	   // webform.WebOffice.SignatureAPI.LockDocument(1); //锁定文档
+	    webform.WebOffice.SignatureAPI.EndLoadSignature(); 
+        webform.WebOffice.SignatureAPI.ReleaseActiveDocument(); 	
+	
+	  }catch(e){
+	        alert(e.discription);
+	        mResult= false;
+	  }
+	//  webform.WebOffice.WebObject.NormalTemplate.Saved = true;
+
+  return mResult;
+}
+
+function zhuanzhang(htmlsigndata){ 
+    //webform.WebOffice.SignatureAPI.ConvertHTML2Office("1212121");
+	//webform.SignatureAPI.ConvertHTML2Office(htmlsigndata);
+    webform.WebOffice.SignatureAPI.ConvertHTML2Office(htmlsigndata);
+}
+
+
+//作用:退出iWebOffice
+function UnLoad(){
+	DocForm.SignatureControl.DeleteSignature();
+  try{
+   webform.SignatureAPI.ReleaseActiveDocument();
+    if (!webform.WebOffice.WebClose()){
+      StatusMsg(webform.WebOffice.Status);
+    }else{
+      StatusMsg("关闭文档...");
+    }
+  }catch(e){
+    //alert(e.description);
+  }
+}
+
+ //作用:存为本地文件
+function WebSaveLocal(){ 
+  try{
+    webform.WebOffice.WebSaveLocal();
+    StatusMsg(webform.WebOffice.Status);
+  }catch(e){alert(e.description);}
+}
+
+//作用:设置活动文档对象
+function SetActiveDocument(){
+  try{
+  if (webform.WebOffice.FileType==".doc"){
+     webform.WebOffice.SignatureAPI.ActiveDocument = webform.WebOffice.WebObject;   //设置WORD对象
+  }  
+ }catch(e){
+    alert(e.description);
+  }
+}
+
+function createSign(){
+try{
+   SetActiveDocument();     //设置活动文档
+  if(webform.WebOffice.SignatureAPI.SelectionState==0){ //成功
+	  //webform.WebOffice.SignatureAPI.SelectIndex = GetSign('签名');
+      webform.WebOffice.SignatureAPI.CreateSignature(1);	//建立电子签章
+	  webform.WebOffice.SignatureAPI.ReleaseActiveDocument(); 
+    }
+}catch(e){alert(e.description)}
+}
+
+
+//test
+function test(){
+try{
+	var msg = webform.WebOffice.SignatureAPI.CreateComment("2年");
+	if(msg){
+		SetActiveDocument(); 
+		webform.WebOffice.SignatureAPI.ActionAddinButton(2); 
+		 //webform..SignatureAPI.ReleaseActiveDocument(); 
+	}else{
+	alert(msg);
+	}
+}
+catch(e){alert(e.description);}
+
+try{
+//var table = webform.WebOffice.WebObject.Tables.Add(webform.WebOffice.WebObject.Bookmarks("test").Range,4,4);  
+//table.Borders.Enable=true;
+//alert(webform.WebOffice.WebObject.FormFields("test1").Range);
+/*
+ var myTable = webform.WebOffice.WebObject.Tables.Add(webform.WebOffice.WebObject.FormFields("test1").Range,4,3);
+	 myTable.Borders.InsideLineStyle = 1;
+	 myTable.Borders.OutsideLineStyle = 1;
+
+
+var Selection =webform.WebOffice.WebObject.Application.Range;
+//books("test").Range.Select();
+Selection.InsertFile(path);
+
+*/
+return;
+ // SetActiveDocument();     //设置活动文档
+//webform.WebOffice.SignatureAPI.SelectIndex = GetSign('8365');
+// webform.WebOffice.SignatureAPI.ActionAddinButton(1);//签章参数
+ // alert(webform.WebOffice.SignatureAPI.SelectionState);
+ // webform.WebOffice.SignatureAPI.SetSignatureParam("MousePositioning","1");
+  //webform.WebOffice.SignatureAPI.ActionAddinButton(1);
+  // webform.WebOffice.WebObject.Bookmarks.Item("test").Range.Select();
+// var Selection=  webform.WebOffice.Application.Selection;
+  // webform.WebOffice.WebObject.Application.Selection.InlineShapes.AddPicture("c:\\1.jpg",false,true);
+
+//var Selection = wd.Application.Selection;
+        //下面方法中第一个参数为水印图片路径
+//Selection.HeaderFooter.Shapes.AddPicture("c:\11.gif", false, true);
+ var  books= webform.WebOffice.WebObject.Bookmarks;
+
+var Selection =webform.WebOffice.WebObject.Application.Selection;
+//books("test").Range.Select();
+Selection.GoTo(-1,0,0,"test");
+
+Selection.MoveDown(5,5);
+Selection.TypeParagraph();//回车
+Selection.text = "[描述]";//书签描述
+books.Add("名称",Selection);//光标位置 插入书签
+
+
+}catch(e){
+alert(e.description);
+}finally{
+  // webform.WebOffice.SignatureAPI.ReleaseActiveDocument();  
+  }
+}
+
+//无对话框签章
+function CreateNoneSignature(){
+try{
+  var fc,fd,BmkName;
+  SetActiveDocument();   //设置活动文档
+ 
+  BmkName = "test";//首先在文档上添加一个名称 test 的标签
+  webform.WebOffice.SignatureAPI.BeginLoadSignature();
+  if(webform.WebOffice.WebObject.Bookmarks.Exists(BmkName))
+  {
+    webform.WebOffice.WebObject.Bookmarks.Item(BmkName).Range.Select();
+    if(webform.WebOffice.SignatureAPI.SelectionState == 0)//成功
+    {
+         webform.WebOffice.SignatureAPI.CreateGroupSignature(true, 0, "000000");//true,密钥盘签章索引,签章密码
+    }
+  }else{
+         webform.WebOffice.SignatureAPI.CreateGroupSignature(true, 0, "000000");//true,密钥盘签章索引,签章密码
+  }
+  webform.WebOffice.SignatureAPI.EndLoadSignature(); 
+  webform.WebOffice.SignatureAPI.ReleaseActiveDocument(); 	
+
+}catch(e){alert(e.discription);}
+}
+
+ 
+</script>
+</head>
+<body id="documentPrintID" class="Noprint" onLoad="Load();"
+	onUnload="UnLoad();">
+
+	<input type="button" value="转章" onclick="zhuanzhang('111');" />
+
+	<input type="button" value="download" onclick="WebSaveLocal();" />
+	<input type=button class=SideButton value="测试" onclick='test();'>
+	<input type=button class=SideButton value="无对话框签章"
+		onclick='CreateNoneSignature();'>
+	<form name="DocForm">
+		<input type="hidden" name="DocumentID" value="<%=DocumentID%>">
+		<OBJECT id="SignatureControl"
+			classid="clsid:D85C89BE-263C-472D-9B6B-5264CD85B36E"
+			codebase="iSignatureHTML.cab#version=8,2,2,56" width="0" height="0">
+			<param name="ServiceUrl" value="<%=mServerUrl%>">
+			<!--读去数据库相关信息-->
+			<param name="PrintControlType" value=2>
+			<!--打印控制方式(0:不控制  1:签章服务器控制  2:开发商控制)-->
+		</OBJECT>
+		<div style="width: 100%; text-align: center;">
+			<table id="tab"
+				style="width: 595px; border-collapse: collapse; empty-cells: show; background-color: "
+				border="0" cellspacing="0" cellpadding="0">
+				<thead>
+					<tr valign="top" style="height: 20px;">
+						<td colspan="7"></td>
+					</tr>
+
+					<!-- title -->
+					<tr valign="top" style="height: 33px;">
+						<td></td>
+						<td
+							style="text-align: center; text-indent: 0px; vertical-align: middle;"
+							colspan="5"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 20px; font-weight: bold;">
+								危险货物港口作业申请书 </span>
+						</td>
+						<td></td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr valign="top" style="height: 23px;">
+						<td></td>
+						<td
+							style="text-align: left; text-indent: 0px; padding-left: 10px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1; font-family: 宋体; font-size: 12px;">
+								编号: </span>
+						</td>
+						<td
+							style="text-align: left; text-indent: 0px; vertical-align: middle;"
+							colspan="4"><input type="text" name="BH" value="<%=BH%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								作业单位 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+
+							<input type="text" name="ZYDW" value="<%=ZYDW%>"
+							style='width: 100%; border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								作业委托人 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="ZYWTR" value="<%=ZYWTR%>"
+							style='width: 100%; border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								船名 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="CM" value="<%=CM%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								现场管理负责人 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="XCGLFZR" value="<%=XCGLFZR%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								危险品名称 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="WXHWMCBH" value="<%=WXHWMCBH%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								物品编号 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="WPBH" value="<%=WPBH%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								技术品名 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="JSPM" value="<%=JSPM%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								包装 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="BZ" value="<%=BZ%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								类别和项别 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="WXPLB" value="<%=WXPLB%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								包装类别 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="BYZD4" value="<%=BYZD4%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								进出港 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="INOROUT" value="<%=INOROUT%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								作业数量(吨) </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="ZYSL" value="<%=ZYSL%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								上港 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="SG" value="<%=SG%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								下港 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="XG" value="<%=XG%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								内外贸 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="MAO" value="<%=MAO%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								火灾危险性 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="HZWXX" value="<%=HZWXX%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								毒性等级 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="DXDJ" value="<%=DXDJ%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								污染类别 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="WRLB" value="<%=WRLB%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								集装箱数量 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="JZXSL" value="<%=JZXSL%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								航次 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="HC" value="<%=HC%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								货物种类 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="3"><input type="text" name="HWZL" value="<%=HWZL%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								货物形式 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="3"><input type="text" name="HWXS" value="<%=HWXS%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 45px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								理化性质 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-bottom: 5px; padding-left: 5px; vertical-align: middle;"
+							colspan="3"><Textarea name="LHXZ" onfocus="this.blur();"
+								rows="4"
+								style='width: 100%; height: 100%; overflow: hidden; background-attachment: fixed; font-family: 宋体; font-size: 12px; background-repeat: no-repeat; border-style: solid; border-color: #FFFFFF'><%=LHXZ%></Textarea>
+						</td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								作业地点 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="3"><input type="text" name="ZYDD" value="<%=ZYDD%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								作业时间起 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="ZYSJQ" value="<%=ZYSJQ%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								作业时间止 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="ZYSJZ" value="<%=ZYSJZ%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 83px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								安全防范措施 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-bottom: 5px; padding-left: 5px; vertical-align: middle;"
+							colspan="3"><Textarea name="AQFFCS" onfocus="this.blur();"
+								rows="6"
+								style='width: 100%; height: 100%; overflow: hidden; background-attachment: fixed; font-family: 宋体; font-size: 12px; background-repeat: no-repeat; border-style: solid; border-color: #FFFFFF'><%=AQFFCS%></Textarea>
+						</td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								报告人 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="BGR" value="<%=BGR%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px; width: 100%;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								联系方式 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="LXFS" value="<%=LXFS%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								报告时间 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="BGSJ" value="<%=BGSJ%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								申报员证书编号 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="BYZD2" value="<%=BYZD2%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 28px;">
+						<td></td>
+						<td
+							style="text-align: center; text-indent: 0px; vertical-align: middle;"
+							colspan="5"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 16px; font-weight: bold;">
+								审核 </span>
+						</td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 40px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								审核意见 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="SHYJ" value="<%=SHYJ%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border-top-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;">
+							<div id="yfdiv" style="position: absolute;" bgcolor=#ffffff></div>
+						</td>
+						<td
+							style="border-top-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-width: 1px; border-right-width: 1px; border-top-style: solid; border-right-style: solid;">
+						</td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 40px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								审核机构 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+						</td>
+						<td
+							style="border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-bottom-width: 1px; border-left-width: 1px; border-bottom-style: solid; border-left-style: solid;">
+						</td>
+						<td
+							style="border-right-color: rgb(0, 0, 0); border-bottom-color: rgb(0, 0, 0); border-right-width: 1px; border-bottom-width: 1px; border-right-style: solid; border-bottom-style: solid;">
+						</td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								审核人 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="SHR" value="<%=SHR%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								审核日期 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<input type="text" name="SHSJ" value="<%=SHSJ%>"
+							style='border-left: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; font-family: 宋体; font-size: 12px;'
+							onfocus="this.blur();" /></td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 30px;">
+						<td></td>
+						<td
+							style="text-align: center; text-indent: 0px; vertical-align: middle;"
+							colspan="5"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 16px; font-weight: bold;">
+								开工报、完工报 </span>
+						</td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								靠泊时间 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+						</td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 25px;">
+						<td></td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="2"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								开工时间 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+							<span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px; font-weight: bold;">
+								完工时间 </span>
+						</td>
+						<td
+							style="border: 1px solid rgb(0, 0, 0); border-image: none; text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;">
+						</td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 20px;">
+						<td></td>
+						<td
+							style="text-align: left; text-indent: 0px; padding-left: 5px; vertical-align: middle;"
+							colspan="5"><span
+							style="color: rgb(0, 0, 0); line-height: 1.1406; font-family: 宋体; font-size: 12px;">
+
+						</span>
+						</td>
+						<td></td>
+					</tr>
+					<tr valign="top" style="height: 20px;">
+						<td colspan="7"></td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+	</form>
+	<form name="webform">
+
+		<table border="0" cellspacing="0" cellpadding="0" width="100%"
+			height="100%">
+			<tr>
+				<td bgcolor="menu" height="98%" valign="top"><script
+						src="iWebOffice2009.js"></script> <script src="iSignatureHTML.js"></script>
+
+					<object id="SignatureAPI" width="0" height="0"
+						classid="clsid:79F9A6F8-7DBE-4098-A040-E6E0C3CF2001"
+						codebase="iSignatureAPI.ocx#version=9,0,0,316"> </object></td>
+			</tr>
+		</table>
+
+
+	</form>
+
+</body>
+</html>

+ 4 - 0
gkaq/yjpt-java/trunk/yjpt/iSignatureAPI.js

@@ -0,0 +1,4 @@
+var str = '';
+str += '<object id="SignatureAPI" width="0" height="0" classid="clsid:79F9A6F8-7DBE-4098-A040-E6E0C3CF2001" codebase=""iSignatureAPI.ocx#version=8,0,0,0">';
+str += '</object>';
+document.write(str);

+ 4 - 0
gkaq/yjpt-java/trunk/yjpt/iSignatureHTML.js

@@ -0,0 +1,4 @@
+var str = '';
+str += '<id="SignatureControl"  classid="clsid:D85C89BE-263C-472D-9B6B-5264CD85B36E" codebase="iSignatureHTML.cab#version=8,1,0,180">';
+str += '</object>';
+document.write(str);

+ 4 - 0
gkaq/yjpt-java/trunk/yjpt/iWebOffice2009.js

@@ -0,0 +1,4 @@
+var str = '';
+str += '<object id="WebOffice" width="100%" height="100%" classid="clsid:8B23EA28-2009-402F-92C4-59BE0E063499" codebase="iWebOffice2009.cab#version=10,8,6,2">';
+str += '</object>';
+document.write(str); 

BIN
gkaq/yjpt-java/trunk/yjpt/wjd/vssver2.scc


ファイルの差分が大きいため隠しています
+ 0 - 0
gkaq/yjpt-java/trunk/yjpt/wjd/wjd.key


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません