OfficeServer.jsp 67 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413
  1. <%@page contentType="text/html; charset=gb2312"%>
  2. <%@page import="java.io.*"%>
  3. <%@page import="java.text.*"%>
  4. <%@page import="java.util.*"%>
  5. <%@page import="java.sql.*"%>
  6. <%@ page import="java.net.*"%>
  7. <%@page import="java.text.SimpleDateFormat"%>
  8. <%@page import="java.text.DateFormat"%>
  9. <%@page import="java.util.Date"%>
  10. <%@page import="oracle.sql.BLOB"%>
  11. <%@page import="oracle.jdbc.OracleDriver"%>
  12. <%@page import="oracle.jdbc.OracleResultSet"%>
  13. <%@page import="DBstep.iMsgServer2000.*"%>
  14. <%@page import="DBstep.iDBManager2000.*"%>
  15. <%!
  16. public class iWebOffice {
  17. private String targetUrl;//获得数据的接口url
  18. private int mFileSize;
  19. private byte[] mFileBody;
  20. private String mFileName;
  21. private String mFileType;
  22. private String mFileDate;
  23. private String mFileID;
  24. private int mTemplateId;
  25. private String mRecordID;
  26. private String mTemplate;
  27. private String mDateTime;
  28. private String mOption;
  29. private String mMarkName;
  30. private String mPassword;
  31. private String mMarkList;
  32. private String mBookmark;
  33. private String mDescript;
  34. private String mHostName;
  35. private String mMarkGuid;
  36. private String mCommand;
  37. private String mContent;
  38. private String mHtmlName;
  39. private String mDirectory;
  40. private String mFilePath;
  41. private String mUserName;
  42. private int mColumns;
  43. private int mCells;
  44. private String mMyDefine1;
  45. private String mLocalFile;
  46. private String mRemoteFile;
  47. private String mLabelName;
  48. private String mImageName;
  49. private String mTableContent;
  50. private String Sql;
  51. //打印控制
  52. private String mOfficePrints;
  53. private int mCopies;
  54. //自定义信息传递
  55. private String mInfo;
  56. private DBstep.iMsgServer2000 MsgObj;
  57. private DBstep.iDBManager2000 DbaObj;
  58. //==============================↓Bolb字段处理代码【开始】↓==============================
  59. //向数据库写文档数据内容
  60. private void PutAtBlob(BLOB vField, int vSize) throws IOException {
  61. try {
  62. OutputStream outstream = vField.getBinaryOutputStream();
  63. outstream.write(mFileBody, 0, vSize);
  64. outstream.close();
  65. }
  66. catch (SQLException e) {
  67. }
  68. }
  69. //从数据库取文档数据内容
  70. private void GetAtBlob(BLOB vField, int vSize) throws IOException {
  71. try {
  72. mFileBody = new byte[vSize];
  73. InputStream instream = vField.getBinaryStream();
  74. instream.read(mFileBody, 0, vSize);
  75. instream.close();
  76. }
  77. catch (SQLException e) {
  78. }
  79. }
  80. //格式化日期时间
  81. public String FormatDate(String DateValue, String DateType) {
  82. String Result;
  83. SimpleDateFormat formatter = new SimpleDateFormat(DateType);
  84. try {
  85. Date mDateTime = formatter.parse(DateValue);
  86. Result = formatter.format(mDateTime);
  87. }
  88. catch (Exception ex) {
  89. Result = ex.getMessage();
  90. }
  91. if (Result.equalsIgnoreCase("1900-01-01")) {
  92. Result = "";
  93. }
  94. return Result;
  95. }
  96. //==============================↑Bolb字段处理代码【结束】↑==============================
  97. //==============================↓文档、模板管理代码【开始】↓==============================
  98. //调出文档,将文档内容保存在mFileBody里,以便进行打包
  99. private boolean LoadFile() {
  100. boolean mResult = false;
  101. String Sql = "SELECT FileBody,FileSize FROM Document_File WHERE RecordID='" + mRecordID + "'";
  102. try {
  103. if (DbaObj.OpenConnection()) {
  104. try {
  105. ResultSet result = DbaObj.ExecuteQuery(Sql);
  106. if (result.next()) {
  107. try {
  108. mFileSize = result.getInt("FileSize");
  109. GetAtBlob(((OracleResultSet) result).getBLOB("FileBody"), mFileSize);
  110. mResult = true;
  111. }
  112. catch (IOException ex) {
  113. System.out.println(ex.toString());
  114. }
  115. }
  116. result.close();
  117. }
  118. catch (SQLException e) {
  119. System.out.println(e.getMessage());
  120. mResult = false;
  121. }
  122. }
  123. }
  124. finally {
  125. DbaObj.CloseConnection();
  126. }
  127. return (mResult);
  128. }
  129. //保存文档,如果文档存在,则覆盖,不存在,则添加
  130. private boolean SaveFile() {
  131. boolean mResult = false;
  132. int iFileId = -1;
  133. String Sql = "SELECT * FROM Document_File WHERE RecordID='" + mRecordID + "'";
  134. try {
  135. if (DbaObj.OpenConnection()) {
  136. try {
  137. ResultSet result = DbaObj.ExecuteQuery(Sql);
  138. if (result.next()) {
  139. Sql = "update Document_File set FileID=?,RecordID=?,FileName=?,FileType=?,FileSize=?,FileDate=?,FileBody=EMPTY_BLOB(),FilePath=?,UserName=?,Descript=? WHERE RecordID='" + mRecordID + "'";
  140. iFileId = result.getInt("FileId");
  141. }
  142. else {
  143. Sql = "insert into Document_File (FileID,RecordID,FileName,FileType,FileSize,FileDate,FileBody,FilePath,UserName,Descript) values (?,?,?,?,?,?,EMPTY_BLOB(),?,?,? )";
  144. iFileId = DbaObj.GetMaxID("Document_File", "FileId");
  145. }
  146. result.close();
  147. }
  148. catch (SQLException e) {
  149. System.out.println(e.toString());
  150. mResult = false;
  151. }
  152. java.sql.PreparedStatement prestmt = null;
  153. try {
  154. prestmt = DbaObj.Conn.prepareStatement(Sql);
  155. prestmt.setInt(1, iFileId);
  156. prestmt.setString(2, mRecordID);
  157. prestmt.setString(3, mFileName);
  158. prestmt.setString(4, mFileType);
  159. prestmt.setInt(5, mFileSize);
  160. prestmt.setDate(6, DbaObj.GetDate());
  161. prestmt.setString(7, mFilePath);
  162. prestmt.setString(8, mUserName);
  163. prestmt.setString(9, mDescript); //"通用版本"
  164. DbaObj.Conn.setAutoCommit(true);
  165. prestmt.execute();
  166. DbaObj.Conn.commit();
  167. prestmt.close();
  168. Statement stmt = null;
  169. DbaObj.Conn.setAutoCommit(false);
  170. stmt = DbaObj.Conn.createStatement();
  171. OracleResultSet update = (OracleResultSet) stmt.executeQuery("select FileBody from Document_File where Fileid=" + String.valueOf(iFileId) + " for update");
  172. if (update.next()) {
  173. try {
  174. PutAtBlob(((oracle.jdbc.OracleResultSet) update).getBLOB("FileBody"), mFileSize);
  175. }
  176. catch (IOException e) {
  177. System.out.println(e.toString());
  178. mResult = false;
  179. }
  180. }
  181. update.close();
  182. stmt.close();
  183. DbaObj.Conn.commit();
  184. mFileBody = null;
  185. mResult = true;
  186. }
  187. catch (SQLException e) {
  188. System.out.println(e.toString());
  189. mResult = false;
  190. }
  191. }
  192. }
  193. finally {
  194. DbaObj.CloseConnection();
  195. }
  196. return (mResult);
  197. }
  198. //调出模板文档,将模板文档内容保存在mFileBody里,以便进行打包
  199. private boolean LoadTemplate() {
  200. boolean mResult = false;
  201. String Sql = "SELECT FileBody,FileSize FROM Template_File WHERE RecordID='" + mTemplate + "'";
  202. try {
  203. if (DbaObj.OpenConnection()) {
  204. try {
  205. ResultSet result = DbaObj.ExecuteQuery(Sql);
  206. if (result.next()) {
  207. try {
  208. mFileSize = result.getInt("FileSize");
  209. GetAtBlob(((OracleResultSet) result).getBLOB("FileBody"), mFileSize);
  210. mResult = true;
  211. }
  212. catch (Exception ex) {
  213. System.out.println(ex.toString());
  214. }
  215. }
  216. result.close();
  217. }
  218. catch (SQLException e) {
  219. System.out.println(e.getMessage());
  220. mResult = false;
  221. }
  222. }
  223. }
  224. finally {
  225. DbaObj.CloseConnection();
  226. }
  227. return (mResult);
  228. }
  229. //保存模板文档,如果模板文档存在,则覆盖,不存在,则添加
  230. private boolean SaveTemplate() {
  231. boolean mResult = false;
  232. String Sql = "SELECT * FROM Template_File WHERE RecordID='" + mTemplate + "'";
  233. try {
  234. if (DbaObj.OpenConnection()) {
  235. try {
  236. ResultSet result = DbaObj.ExecuteQuery(Sql);
  237. if (result.next()) {
  238. Sql = "update Template_File set TemplateID=?,RecordID=?,FileName=?,FileType=?,FileSize=?,FileDate=?,FileBody=EMPTY_BLOB(),FilePath=?,UserName=?,Descript=? WHERE RecordID='" + mTemplate + "'";
  239. mTemplateId = result.getInt("TemplateId");
  240. }
  241. else {
  242. Sql = "insert into Template_File (TemplateID,RecordID,FileName,FileType,FileSize,FileDate,FileBody,FilePath,UserName,Descript) values (?,?,?,?,?,?,EMPTY_BLOB(),?,?,? )";
  243. mTemplateId = DbaObj.GetMaxID("Template_File", "TemplateId");
  244. }
  245. result.close();
  246. }
  247. catch (SQLException e) {
  248. System.out.println(e.toString());
  249. mResult = false;
  250. }
  251. java.sql.PreparedStatement prestmt = null;
  252. try {
  253. prestmt = DbaObj.Conn.prepareStatement(Sql);
  254. prestmt.setInt(1, mTemplateId);
  255. prestmt.setString(2, mTemplate);
  256. prestmt.setString(3, mFileName);
  257. prestmt.setString(4, mFileType);
  258. prestmt.setInt(5, mFileSize);
  259. prestmt.setDate(6, DbaObj.GetDate());
  260. prestmt.setString(7, mFilePath);
  261. prestmt.setString(8, mUserName);
  262. prestmt.setString(9, mDescript); //"通用版本"
  263. DbaObj.Conn.setAutoCommit(true);
  264. prestmt.execute();
  265. DbaObj.Conn.commit();
  266. prestmt.close();
  267. Statement stmt = null;
  268. DbaObj.Conn.setAutoCommit(false);
  269. stmt = DbaObj.Conn.createStatement();
  270. OracleResultSet update = (OracleResultSet) stmt.executeQuery("select FileBody from Template_File where TEMPLATEID=" + String.valueOf(mTemplateId) + " for update");
  271. if (update.next()) {
  272. try {
  273. mFileSize = mFileBody.length;
  274. PutAtBlob(((oracle.jdbc.OracleResultSet) update).getBLOB("FileBody"), mFileSize);
  275. }
  276. catch (IOException e) {
  277. System.out.println(e.toString());
  278. mResult = false;
  279. }
  280. }
  281. update.close();
  282. stmt.close();
  283. DbaObj.Conn.commit();
  284. mFileBody = null;
  285. mResult = true;
  286. }
  287. catch (SQLException e) {
  288. System.out.println(e.toString());
  289. mResult = false;
  290. }
  291. }
  292. }
  293. finally {
  294. DbaObj.CloseConnection();
  295. }
  296. return (mResult);
  297. }
  298. //==============================↑文档、模板管理代码【结束】↑==============================
  299. //==============================↓版本管理代码【开始】↓==============================
  300. //列出所有版本信息
  301. private boolean ListVersion() {
  302. boolean mResult = false;
  303. String mDesc = "";
  304. String Sql = "SELECT FileID,FileDate,UserName,Descript FROM Version_File WHERE RecordID='" + mRecordID + "'";
  305. mFileID = "\r\n";
  306. mDateTime = "保存时间\r\n";
  307. mUserName = "用户名\r\n";
  308. mDescript = "版本说明\r\n";
  309. try {
  310. if (DbaObj.OpenConnection()) {
  311. try {
  312. ResultSet result = DbaObj.ExecuteQuery(Sql);
  313. while (result.next()) {
  314. try {
  315. mFileID += String.valueOf(result.getInt("FileID")) + "\r\n"; //文件号列表
  316. mDateTime += result.getString("FileDate") + "\r\n"; //日期列表
  317. mUserName += result.getString("UserName") + "\r\n"; //用户名列表
  318. mDesc = result.getString("Descript"); //如果说明信息里有回车,则将回车变成>符号
  319. mDesc = mDesc.replace('\r', '>');
  320. mDesc = mDesc.replace('\n', '>');
  321. mDescript += mDesc + "\r\n";
  322. }
  323. catch (Exception ex) {
  324. System.out.println(ex.toString());
  325. }
  326. }
  327. result.close();
  328. mResult = true;
  329. }
  330. catch (SQLException e) {
  331. System.out.println(e.getMessage());
  332. mResult = false;
  333. }
  334. }
  335. }
  336. finally {
  337. DbaObj.CloseConnection();
  338. }
  339. return (mResult);
  340. }
  341. //调入选中版本,通过文件号调用mFileID,并把文件放入mFileBody里,以便进行打包
  342. private boolean LoadVersion(String mFileID) {
  343. boolean mResult = false;
  344. String Sql = "SELECT FileBody,FileSize FROM Version_File WHERE RecordID='" + mRecordID + "' and FileID=" + mFileID;
  345. try {
  346. if (DbaObj.OpenConnection()) {
  347. try {
  348. ResultSet result = DbaObj.ExecuteQuery(Sql);
  349. if (result.next()) {
  350. try {
  351. mFileSize = result.getInt("FileSize");
  352. GetAtBlob(((OracleResultSet) result).getBLOB("FileBody"), mFileSize);
  353. mResult = true;
  354. }
  355. catch (Exception ex) {
  356. System.out.println(ex.toString());
  357. }
  358. }
  359. result.close();
  360. }
  361. catch (SQLException e) {
  362. System.out.println(e.getMessage());
  363. mResult = false;
  364. }
  365. }
  366. }
  367. finally {
  368. DbaObj.CloseConnection();
  369. }
  370. return (mResult);
  371. }
  372. //保存版本,将该版本文件存盘,并将说明信息也保存起来
  373. private boolean SaveVersion() {
  374. boolean mResult = false;
  375. int iFileId = -1;
  376. String Sql = "insert into Version_File (FileID,RecordID,FileName,FileType,FileSize,FileDate,FileBody,FilePath,UserName,Descript) values (?,?,?,?,?,?,EMPTY_BLOB(),?,?,? )";
  377. if (mFileID.equalsIgnoreCase("")) {
  378. iFileId = DbaObj.GetMaxID("Version_File", "FileId");
  379. }
  380. else {
  381. iFileId = Integer.getInteger(mFileID.toString()).intValue();
  382. }
  383. try {
  384. if (DbaObj.OpenConnection()) {
  385. java.sql.PreparedStatement prestmt = null;
  386. try {
  387. prestmt = DbaObj.Conn.prepareStatement(Sql);
  388. prestmt.setInt(1, iFileId);
  389. prestmt.setString(2, mRecordID);
  390. prestmt.setString(3, mFileName);
  391. prestmt.setString(4, mFileType);
  392. prestmt.setInt(5, mFileSize);
  393. prestmt.setDate(6, DbaObj.GetDate());
  394. prestmt.setString(7, mFilePath);
  395. prestmt.setString(8, mUserName);
  396. prestmt.setString(9, mDescript); //"通用版本"
  397. DbaObj.Conn.setAutoCommit(true);
  398. prestmt.execute();
  399. DbaObj.Conn.commit();
  400. prestmt.close();
  401. Statement stmt = null;
  402. DbaObj.Conn.setAutoCommit(false);
  403. stmt = DbaObj.Conn.createStatement();
  404. OracleResultSet update = (OracleResultSet) stmt.executeQuery("select FileBody from Version_File where Fileid=" + String.valueOf(iFileId) + " for update");
  405. if (update.next()) {
  406. try {
  407. PutAtBlob(((oracle.jdbc.OracleResultSet) update).getBLOB("FileBody"), mFileSize);
  408. }
  409. catch (IOException e) {
  410. System.out.println(e.toString());
  411. mResult = false;
  412. }
  413. }
  414. update.close();
  415. stmt.close();
  416. DbaObj.Conn.commit();
  417. mFileBody = null;
  418. mResult = true;
  419. }
  420. catch (SQLException e) {
  421. System.out.println(e.toString());
  422. mResult = false;
  423. }
  424. }
  425. }
  426. finally {
  427. DbaObj.CloseConnection();
  428. }
  429. return (mResult);
  430. }
  431. //==============================↑版本管理代码【结束】↑==============================
  432. //==============================↓标签管理代码【开始】↓==============================
  433. //取得书签列表
  434. private boolean ListBookmarks() {
  435. boolean mResult = false;
  436. String Sql = "SELECT * FROM Bookmarks ";
  437. mBookmark = "";
  438. mDescript = "";
  439. try {
  440. if (DbaObj.OpenConnection()) {
  441. try {
  442. ResultSet result = DbaObj.ExecuteQuery(Sql);
  443. while (result.next()) {
  444. try {
  445. mBookmark += result.getString("BookMarkName") + "\r\n"; //用户名列表
  446. mDescript += result.getString("BookMarkDesc") + "\r\n"; //如果说明信息里有回车,则将回车变成>符号
  447. }
  448. catch (Exception ex) {
  449. System.out.println(ex.toString());
  450. }
  451. }
  452. result.close();
  453. mResult = true;
  454. }
  455. catch (SQLException e) {
  456. System.out.println(e.getMessage());
  457. mResult = false;
  458. }
  459. }
  460. }
  461. finally {
  462. DbaObj.CloseConnection();
  463. }
  464. return (mResult);
  465. }
  466. //装入书签
  467. private boolean LoadBookMarks() {
  468. boolean mResult = false;
  469. try {
  470. targetUrl+=mRecordID;
  471. //String targetUrl= "http://192.168.57.76:8080/yjpt/GetmSignatureData.do?documentID=" + mRecordID ;
  472. URL url = new URL(targetUrl);
  473. HttpURLConnection connection = (HttpURLConnection) url
  474. .openConnection();// 此时cnnection只是为一个连接对象,待连接中
  475. connection.setRequestMethod("GET");
  476. connection.connect();
  477. //System.out.println(connection.getResponseCode());
  478. BufferedReader bf = new BufferedReader(new InputStreamReader(
  479. connection.getInputStream(), "gb2312"));
  480. String line;
  481. StringBuilder sb = new StringBuilder(); // 用来存储响应数据
  482. // 循环读取流,若不到结尾处
  483. while ((line = bf.readLine()) != null) {
  484. sb.append(line);
  485. }
  486. bf.close(); // 重要且易忽略步骤 (关闭流,切记!)
  487. connection.disconnect(); // 销毁连接
  488. String api_result = "";
  489. try {
  490. api_result = java.net.URLDecoder
  491. .decode(sb.toString(), "gb2312");
  492. } catch (UnsupportedEncodingException e) {
  493. // TODO Auto-generated catch block
  494. e.printStackTrace();
  495. }
  496. String[] arrResult = api_result.split("\r\n");
  497. Map<String, String> map = new HashMap<String, String>();
  498. for (String tmp : arrResult) {
  499. String[] arrTmp = tmp.split("=");
  500. try {
  501. map.put(arrTmp[0].trim(), arrTmp[1]);
  502. } catch (Exception e) {
  503. map.put(arrTmp[0], "");
  504. }
  505. }
  506. MsgObj.SetMsgByName("BH",(map.get("BH")!=null? map.get("BH").trim():""));
  507. MsgObj.SetMsgByName("ZYDW", (map.get("ZYDW").trim()!=null?map.get("ZYDW"):""));
  508. MsgObj.SetMsgByName("ZYWTR", (map.get("ZYWTR").trim()!=null?map.get("ZYDW"):""));
  509. MsgObj.SetMsgByName("CM", (map.get("CM")!=null?map.get("CM").trim():""));
  510. MsgObj.SetMsgByName("XCGLFZR",(map.get("XCGLFZR")!=null? map.get("XCGLFZR").trim():""));
  511. MsgObj.SetMsgByName("WXHWMCBH", (map.get("WXHWMCBH")!=null?map.get("WXHWMCBH").trim():""));
  512. MsgObj.SetMsgByName("WPBH", (map.get("WPBH")!=null?map.get("WPBH").trim():""));
  513. MsgObj.SetMsgByName("JSPM",(map.get("JSPM")!=null? map.get("JSPM").trim():""));
  514. MsgObj.SetMsgByName("BZ", (map.get("BZ")!=null? map.get("BZ").trim():""));
  515. MsgObj.SetMsgByName("WXPLB", (map.get("WXPLB")!=null?map.get("WXPLB").trim():""));
  516. MsgObj.SetMsgByName("BYZD4",(map.get("BYZD4")!=null? map.get("BYZD4").trim():""));
  517. MsgObj.SetMsgByName("INOROUT",(map.get("INOROUT")!=null? map.get("INOROUT").trim():""));
  518. MsgObj.SetMsgByName("ZYSL", (map.get("ZYSL")!=null?map.get("ZYSL").trim():""));
  519. MsgObj.SetMsgByName("SG", (map.get("SG")!=null? map.get("SG").trim():""));
  520. MsgObj.SetMsgByName("XG", (map.get("XG")!=null? map.get("XG").trim():""));
  521. MsgObj.SetMsgByName("MAO", (map.get("MAO")!=null?map.get("MAO").trim():""));
  522. MsgObj.SetMsgByName("HZWXX", (map.get("HZWXX")!=null? map.get("HZWXX").trim():""));
  523. MsgObj.SetMsgByName("DXDJ", (map.get("DXDJ")!=null? map.get("DXDJ").trim():""));
  524. MsgObj.SetMsgByName("WRLB", (map.get("WRLB")!=null? map.get("WRLB").trim():""));
  525. MsgObj.SetMsgByName("JZXSL", (map.get("JZXSL")!=null? map.get("JZXSL").trim():""));
  526. MsgObj.SetMsgByName("HC", (map.get("HC")!=null?map.get("HC").trim():""));
  527. MsgObj.SetMsgByName("HWZL",(map.get("HWZL")!=null? map.get("HWZL").trim():""));
  528. MsgObj.SetMsgByName("HWXS",(map.get("HWXS")!=null? map.get("HWXS").trim():""));
  529. MsgObj.SetMsgByName("LHXZ",(map.get("LHXZ")!=null? map.get("LHXZ").trim():""));
  530. MsgObj.SetMsgByName("ZYDD",(map.get("ZYDD")!=null? map.get("ZYDD").trim():""));
  531. MsgObj.SetMsgByName("ZYSJQ",(map.get("ZYSJQ")!=null? map.get("ZYSJQ").trim():""));
  532. MsgObj.SetMsgByName("ZYSJZ", (map.get("ZYSJZ")!=null?map.get("ZYSJZ").trim():""));
  533. MsgObj.SetMsgByName("AQFFCS",(map.get("AQFFCS")!=null?map.get("AQFFCS").trim():""));
  534. MsgObj.SetMsgByName("BGR",(map.get("BGR")!=null? map.get("BGR").trim():""));
  535. MsgObj.SetMsgByName("LXFS",(map.get("LXFS")!=null? map.get("LXFS").trim():""));
  536. MsgObj.SetMsgByName("BGSJ",(map.get("BGSJ")!=null?map.get("BGSJ").trim():""));
  537. MsgObj.SetMsgByName("BYZD2",(map.get("BYZD2")!=null? map.get("BYZD2").trim():""));
  538. MsgObj.SetMsgByName("SHYJ",(map.get("SHYJ")!=null? map.get("SHYJ").trim():""));
  539. MsgObj.SetMsgByName("SHR", (map.get("SHR")!=null? map.get("SHR").trim():""));
  540. MsgObj.SetMsgByName("SHSJ", (map.get("SHSJ")!=null? map.get("SHSJ").trim():""));
  541. mResult = true;
  542. }
  543. catch (Exception ex) {
  544. System.out.println(ex.toString());
  545. }
  546. return (mResult);
  547. }
  548. //保存书签
  549. private boolean SaveBookMarks() {
  550. boolean mResult = false;
  551. String mBookMarkName;
  552. int mBookMarkId;
  553. int mIndex;
  554. try {
  555. if (DbaObj.OpenConnection()) {
  556. try {
  557. java.sql.PreparedStatement prestmt = null;
  558. String Sql = "DELETE FROM Template_BookMarks Where RecordID='" + mTemplate + "'";
  559. prestmt = DbaObj.Conn.prepareStatement(Sql);
  560. DbaObj.Conn.setAutoCommit(true);
  561. prestmt.execute();
  562. DbaObj.Conn.commit();
  563. prestmt.close();
  564. for (mIndex = 7; mIndex <= MsgObj.GetFieldCount() - 1; mIndex++) {
  565. java.sql.PreparedStatement prestmtx = null;
  566. mBookMarkName = MsgObj.GetFieldName(mIndex);
  567. mBookMarkId = DbaObj.GetMaxID("Template_BookMarks", "BookMarkId");
  568. Sql = "insert into Template_BookMarks (BookMarkId,RecordId,BookMarkName) values ('" + String.valueOf(mBookMarkId) + "','" + mTemplate + "','" + mBookMarkName + "')";
  569. prestmtx = DbaObj.Conn.prepareStatement(Sql);
  570. DbaObj.Conn.setAutoCommit(true);
  571. prestmtx.execute();
  572. DbaObj.Conn.commit();
  573. prestmtx.close();
  574. }
  575. mResult = true;
  576. }
  577. catch (SQLException e) {
  578. System.out.println(e.toString());
  579. mResult = false;
  580. }
  581. }
  582. }
  583. finally {
  584. DbaObj.CloseConnection();
  585. }
  586. return (mResult);
  587. }
  588. //==============================↑标签管理代码【结束】↑==============================
  589. //==============================↓签章管理代码【开始】↓==============================
  590. //取得签名列表
  591. private boolean LoadMarkList() {
  592. String Sql = "SELECT MarkName FROM Signature";
  593. mMarkList = "";
  594. boolean mResult = false;
  595. try {
  596. if (DbaObj.OpenConnection()) {
  597. try {
  598. ResultSet result = DbaObj.ExecuteQuery(Sql);
  599. while (result.next()) {
  600. try {
  601. mMarkList += result.getString("MarkName") + "\r\n";
  602. }
  603. catch (Exception ex) {
  604. System.out.println(ex.toString());
  605. }
  606. }
  607. result.close();
  608. mResult = true;
  609. }
  610. catch (SQLException e) {
  611. System.out.println(e.getMessage());
  612. mResult = false;
  613. }
  614. }
  615. }
  616. finally {
  617. DbaObj.CloseConnection();
  618. }
  619. return (mResult);
  620. }
  621. //调入签名纪录
  622. private boolean LoadMarkImage(String vMarkName, String vPassWord) {
  623. String Sql = "SELECT MarkBody,MarkType,MarkSize FROM Signature WHERE MarkName='" + vMarkName + "' and PassWord='" + vPassWord + "'";
  624. boolean mResult = false;
  625. try {
  626. if (DbaObj.OpenConnection()) {
  627. try {
  628. ResultSet result = DbaObj.ExecuteQuery(Sql);
  629. if (result.next()) {
  630. try {
  631. mFileSize = result.getInt("MarkSize");
  632. GetAtBlob(((OracleResultSet) result).getBLOB("MarkBody"), mFileSize);
  633. mFileType = result.getString("MarkType");
  634. mResult = true;
  635. }
  636. catch (Exception ex) {
  637. System.out.println(ex.toString());
  638. }
  639. }
  640. result.close();
  641. }
  642. catch (SQLException e) {
  643. System.out.println(e.getMessage());
  644. mResult = false;
  645. }
  646. }
  647. }
  648. finally {
  649. DbaObj.CloseConnection();
  650. }
  651. return (mResult);
  652. }
  653. //保存签名
  654. private boolean SaveSignature() {
  655. boolean mResult = false;
  656. int iSignatureID;
  657. String Sql = "insert into Document_Signature (SignatureID,RecordID,MarkName,UserName,DateTime,HostName,MarkGuid) values (?,?,?,?,to_date('" + mDateTime + "','yyyy-mm-dd hh24:mi:ss'),?,? ) ";
  658. iSignatureID = DbaObj.GetMaxID("Document_Signature", "SignatureID");
  659. if (DbaObj.OpenConnection()) {
  660. java.sql.PreparedStatement prestmt = null;
  661. try {
  662. prestmt = DbaObj.Conn.prepareStatement(Sql);
  663. prestmt.setInt(1, iSignatureID);
  664. prestmt.setString(2, mRecordID);
  665. prestmt.setString(3, mMarkName);
  666. prestmt.setString(4, mUserName);
  667. prestmt.setString(5, mHostName);
  668. prestmt.setString(6, mMarkGuid);
  669. DbaObj.Conn.setAutoCommit(true);
  670. prestmt.execute();
  671. DbaObj.Conn.commit();
  672. prestmt.close();
  673. mResult = true;
  674. }
  675. catch (SQLException e) {
  676. System.out.println(e.toString() + Sql);
  677. mResult = false;
  678. }
  679. DbaObj.CloseConnection();
  680. }
  681. return (mResult);
  682. }
  683. //列出所有签名
  684. private boolean LoadSignature() {
  685. boolean mResult = false;
  686. String Sql = "SELECT MarkName,UserName,DateTime,HostName,MarkGuid FROM Document_Signature WHERE RecordID='" + mRecordID + "'";
  687. mMarkName = "印章名称\r\n";
  688. mUserName = "签名人\r\n";
  689. mDateTime = "签章时间\r\n";
  690. mHostName = "客户端IP\r\n";
  691. mMarkGuid = "序列号\r\n";
  692. if (DbaObj.OpenConnection()) {
  693. try {
  694. mResult = true;
  695. ResultSet result = DbaObj.ExecuteQuery(Sql);
  696. while (result.next()) {
  697. mMarkName += result.getString("MarkName") + "\r\n"; //文件号列表
  698. mUserName += result.getString("UserName") + "\r\n"; //日期列表
  699. mDateTime += FormatDate(result.getString("DateTime"), "yyyy-MM-dd HH:mm:ss") + "\r\n";
  700. mHostName += result.getString("HostName") + "\r\n";
  701. mMarkGuid += result.getString("MarkGuid") + "\r\n";
  702. }
  703. result.close();
  704. }
  705. catch (Exception e) {
  706. System.out.println(e.toString());
  707. mResult = false;
  708. }
  709. DbaObj.CloseConnection();
  710. }
  711. return (mResult);
  712. }
  713. //==============================↑签章管理代码【结束】↑==============================
  714. //==============================↓扩展功能代码【开始】↓==============================
  715. //调出所对应的文本
  716. private boolean LoadContent() {
  717. boolean mResult = false;
  718. //打开数据库
  719. //根据 mRecordID 或 mFileName 等信息
  720. //提取文本信息付给mContent即可。
  721. //本演示假设取得的文本信息如下:
  722. mContent = "";
  723. mContent += "本文的纪录号:" + mRecordID + "\n";
  724. mContent += "本文的文件名:" + mFileName + "\n";
  725. mContent += " 这个部分请自己加入,和你们的数据库结合起来就可以了\n";
  726. mResult = true;
  727. return (mResult);
  728. }
  729. //保存所对应的文本
  730. private boolean SaveContent() {
  731. boolean mResult = false;
  732. //打开数据库
  733. //根据 mRecordID 或 mFileName 等信息
  734. //插入文本信息 mContent里的文本到数据库中即可。
  735. mResult = true;
  736. return (mResult);
  737. }
  738. //增加行并填充表格内容
  739. private boolean GetWordTable() {
  740. int i, n;
  741. String strI, strN;
  742. boolean mResult;
  743. mColumns = 3;
  744. mCells = 8;
  745. MsgObj.MsgTextClear();
  746. MsgObj.SetMsgByName("COLUMNS", String.valueOf(mColumns)); //设置表格行
  747. MsgObj.SetMsgByName("CELLS", String.valueOf(mCells)); //设置表格列
  748. //该部分内容可以从数据库中读取
  749. try {
  750. for (i = 1; i <= mColumns; i++) {
  751. strI = String.valueOf(i);
  752. for (n = 1; n <= mCells; n++) {
  753. MsgObj.SetMsgByName(String.valueOf(i) + String.valueOf(n), "内容" + DbaObj.GetDateTime());
  754. }
  755. }
  756. mResult = true;
  757. }
  758. catch (Exception e) {
  759. System.out.println(e.toString());
  760. mResult = false;
  761. }
  762. return (mResult);
  763. }
  764. //更新打印份数
  765. private boolean UpdataCopies(int mLeftCopies) {
  766. boolean mResult = true;
  767. //该函数可以把打印减少的次数记录到数据库
  768. //根据自己的系统进行扩展该功能
  769. return mResult;
  770. }
  771. //==============================↑扩展功能代码【结束】↑==============================
  772. //==============================↓接收流、写回流代码【开始】↓==============================
  773. //取得客户端发来的数据包
  774. private byte[] ReadPackage(HttpServletRequest request) {
  775. byte mStream[] = null;
  776. int totalRead = 0;
  777. int readBytes = 0;
  778. int totalBytes = 0;
  779. try {
  780. totalBytes = request.getContentLength();
  781. mStream = new byte[totalBytes];
  782. while (totalRead < totalBytes) {
  783. request.getInputStream();
  784. readBytes = request.getInputStream().read(mStream, totalRead, totalBytes - totalRead);
  785. totalRead += readBytes;
  786. continue;
  787. }
  788. }
  789. catch (Exception e) {
  790. System.out.println(e.toString());
  791. }
  792. return (mStream);
  793. }
  794. //发送处理后的数据包
  795. private void SendPackage(HttpServletResponse response) {
  796. try {
  797. ServletOutputStream OutBinarry = response.getOutputStream();
  798. OutBinarry.write(MsgObj.MsgVariant());
  799. OutBinarry.flush();
  800. OutBinarry.close();
  801. }
  802. catch (IOException e) {
  803. System.out.println(e.toString());
  804. }
  805. }
  806. //==============================↑接收流、写回流代码【结束】↑==============================
  807. public void ExecuteRun(HttpServletRequest request, HttpServletResponse response) {
  808. //获得应用服务器起地址端口等相关信息初始化获得数据的接口的url
  809. targetUrl = "http://" + request.getServerName() + ":"
  810. + request.getServerPort() + request.getContextPath()
  811. + "/GetmSignatureData.do" + "?documentID=";
  812. DbaObj = new DBstep.iDBManager2000(); //创建数据库对象
  813. MsgObj = new DBstep.iMsgServer2000(); //创建信息包对象
  814. mOption = "";
  815. mRecordID = "";
  816. mTemplate = "";
  817. mFileBody = null;
  818. mFileName = "";
  819. mFileType = "";
  820. mFileSize = 0;
  821. mFileID = "";
  822. mDateTime = "";
  823. mMarkName = "";
  824. mPassword = "";
  825. mMarkList = "";
  826. mBookmark = "";
  827. mMarkGuid = "";
  828. mDescript = "";
  829. mCommand = "";
  830. mContent = "";
  831. mLabelName = "";
  832. mImageName = "";
  833. mTableContent = "";
  834. mMyDefine1 = "";
  835. mOfficePrints = "0";
  836. mFilePath = request.getSession().getServletContext().getRealPath(""); //取得服务器路径
  837. System.out.println("ReadPackage");
  838. try {
  839. if (request.getMethod().equalsIgnoreCase("POST")) {
  840. //MsgObj.MsgVariant(ReadPackage(request)); //老版本后台类,不支持UTF-8编码自适应功能
  841. MsgObj.Load(request); //8.1.0.2版后台类新增解析接口,可支持UTF-8编码自适应功能
  842. if (MsgObj.GetMsgByName("DBSTEP").equalsIgnoreCase("DBSTEP")) { //判断是否是合法的信息包,或者数据包信息是否完整
  843. mOption = MsgObj.GetMsgByName("OPTION"); //取得操作信息
  844. mUserName = MsgObj.GetMsgByName("USERNAME"); //取得系统用户
  845. System.out.println("OPTION:"+mOption); //打印出调试信息
  846. if (mOption.equalsIgnoreCase("LOADFILE")) { //下面的代码为打开服务器数据库里的文件
  847. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  848. mFileName = MsgObj.GetMsgByName("FILENAME"); //取得文档名称
  849. mFileType = MsgObj.GetMsgByName("FILETYPE"); //取得文档类型
  850. MsgObj.MsgTextClear(); //清除文本信息
  851. //if (MsgObj.MsgFileLoad(mFilePath+"\\"+mFileName)) //从文件夹调入文档
  852. if (LoadFile()) { //从数据库调入文档
  853. MsgObj.MsgFileBody(mFileBody); //将文件信息打包
  854. MsgObj.SetMsgByName("STATUS", "打开成功!"); //设置状态信息
  855. MsgObj.MsgError(""); //清除错误信息
  856. }
  857. else {
  858. MsgObj.MsgError("打开失败!"); //设置错误信息
  859. }
  860. }
  861. else if (mOption.equalsIgnoreCase("SAVEFILE")) { //下面的代码为保存文件在服务器的数据库里
  862. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  863. mFileName = MsgObj.GetMsgByName("FILENAME"); //取得文档名称
  864. mFileType = MsgObj.GetMsgByName("FILETYPE"); //取得文档类型
  865. mUserName = mUserName; //取得保存用户名称
  866. mDescript = "通用版本"; //版本说明
  867. mFileSize = MsgObj.MsgFileSize(); //取得文档大小
  868. mFileDate = DbaObj.GetDateTime(); //取得文档时间
  869. mFileBody = MsgObj.MsgFileBody(); //取得文档内容
  870. String isEmpty = MsgObj.GetMsgByName("EMPTY"); //是否是空内容文档的标识
  871. if(isEmpty.equalsIgnoreCase("TRUE")){
  872. //此时接收的文档中内容是空白的,请用日志记录保存时间、保存用户、记录编号等信息,用于将来发现文档内容丢失时排查用。
  873. System.out.println("注意:本次保存的是空白内容的文档。RECORDID:"+mRecordID);
  874. }
  875. MsgObj.MsgTextClear(); //清除文本信息
  876. //if (MsgObj.MsgFileSave(mFilePath+"\\"+mFileName)) //保存文档内容到文件夹中
  877. if (SaveFile()) { //保存文档内容到数据库中
  878. MsgObj.SetMsgByName("STATUS", "保存成功!"); //设置状态信息
  879. MsgObj.MsgError(""); //清除错误信息
  880. }
  881. else {
  882. MsgObj.MsgError("保存失败!"); //设置错误信息
  883. }
  884. MsgObj.MsgFileClear(); //清除文档内容
  885. }
  886. else if (mOption.equalsIgnoreCase("LOADTEMPLATE")) { //下面的代码为打开服务器数据库里的模板文件
  887. mTemplate = MsgObj.GetMsgByName("TEMPLATE"); //取得模板文档类型
  888. //本段处理是否调用文档时打开模版,还是套用模版时打开模版。
  889. mCommand = MsgObj.GetMsgByName("COMMAND"); //取得客户端定义的变量COMMAND值
  890. if (mCommand.equalsIgnoreCase("INSERTFILE")) {
  891. if (MsgObj.MsgFileLoad(mFilePath + "\\Document\\" + mTemplate)) { //从服务器文件夹中调入模板文档
  892. MsgObj.SetMsgByName("STATUS", "打开模板成功!"); //设置状态信息
  893. MsgObj.MsgError(""); //清除错误信息
  894. }
  895. else {
  896. MsgObj.MsgError("打开模板失败!"); //设置错误信息
  897. }
  898. }
  899. else {
  900. MsgObj.MsgTextClear(); //清除文本信息
  901. if (LoadTemplate()) { //调入模板文档
  902. MsgObj.MsgFileBody(mFileBody); //将文件信息打包
  903. MsgObj.SetMsgByName("STATUS", "打开模板成功!"); //设置状态信息
  904. MsgObj.MsgError(""); //清除错误信息
  905. }
  906. else {
  907. MsgObj.MsgError("打开模板失败!"); //设置错误信息
  908. }
  909. }
  910. }
  911. else if (mOption.equalsIgnoreCase("SAVETEMPLATE")) { //下面的代码为保存模板文件在服务器的数据库里
  912. mTemplate = MsgObj.GetMsgByName("TEMPLATE"); //取得文档编号
  913. mFileName = MsgObj.GetMsgByName("FILENAME"); //取得文档名称
  914. mFileType = MsgObj.GetMsgByName("FILETYPE"); //取得文档类型
  915. mUserName = mUserName; //取得保存用户名称
  916. mDescript = "通用模板"; //版本说明
  917. mFileSize = MsgObj.MsgFileSize(); //取得文档大小
  918. mFileDate = DbaObj.GetDateTime(); //取得文档时间
  919. mFileBody = MsgObj.MsgFileBody(); //取得文档内容
  920. MsgObj.MsgTextClear();
  921. if (SaveTemplate()) { //保存模板文档内容
  922. MsgObj.SetMsgByName("STATUS", "保存模板成功!"); //设置状态信息
  923. MsgObj.MsgError(""); //清除错误信息
  924. }
  925. else {
  926. MsgObj.MsgError("保存模板失败!"); //设置错误信息
  927. }
  928. MsgObj.MsgFileClear();
  929. }
  930. else if (mOption.equalsIgnoreCase("LISTVERSION")) { //下面的代码为打开版本列表
  931. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  932. MsgObj.MsgTextClear();
  933. if (ListVersion()) { //生成版本列表
  934. MsgObj.SetMsgByName("FILEID", mFileID); //将文档号列表打包
  935. MsgObj.SetMsgByName("DATETIME", mDateTime); //将日期时间列表打包
  936. MsgObj.SetMsgByName("USERNAME", mUserName); //将用户名列表打包
  937. MsgObj.SetMsgByName("DESCRIPT", mDescript); //将说明信息列表打包
  938. MsgObj.SetMsgByName("STATUS", "版本列表成功!"); //设置状态信息
  939. MsgObj.MsgError(""); //清除错误信息
  940. }
  941. else {
  942. MsgObj.MsgError("版本列表失败!"); //设置错误信息
  943. }
  944. }
  945. else if (mOption.equalsIgnoreCase("LOADVERSION")) { //下面的代码为打开版本文档
  946. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  947. mFileID = MsgObj.GetMsgByName("FILEID"); //取得版本文档号
  948. MsgObj.MsgTextClear();
  949. if (LoadVersion(mFileID)) { //调入该版本文档
  950. MsgObj.MsgFileBody(mFileBody); //将文档信息打包
  951. MsgObj.SetMsgByName("STATUS", "打开版本成功!"); //设置状态信息
  952. MsgObj.MsgError(""); //清除错误信息
  953. }
  954. else {
  955. MsgObj.MsgError("打开版本失败!"); //设置错误信息
  956. }
  957. }
  958. else if (mOption.equalsIgnoreCase("SAVEVERSION")) { //下面的代码为保存版本文档
  959. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  960. mFileID = MsgObj.GetMsgByName("FILEID"); //取得版本文档号 如:WebSaveVersionByFileID,则FileID值存在
  961. mFileName = MsgObj.GetMsgByName("FILENAME"); //取得文档名称
  962. mFileType = MsgObj.GetMsgByName("FILETYPE"); //取得文档类型
  963. mUserName = mUserName; //取得保存用户名称
  964. mDescript = MsgObj.GetMsgByName("DESCRIPT"); //取得说明信息
  965. mFileSize = MsgObj.MsgFileSize(); //取得文档大小
  966. mFileDate = DbaObj.GetDateTime(); //取得文档时间
  967. mFileBody = MsgObj.MsgFileBody(); //取得文档内容
  968. MsgObj.MsgTextClear();
  969. if (SaveVersion()) { //保存版本文档
  970. MsgObj.SetMsgByName("STATUS", "保存版本成功!"); //设置状态信息
  971. MsgObj.MsgError(""); //清除错误信息
  972. }
  973. else {
  974. MsgObj.MsgError("保存版本失败!"); //设置错误信息
  975. }
  976. MsgObj.MsgFileClear(); //清除文档内容
  977. }
  978. else if (mOption.equalsIgnoreCase("LOADBOOKMARKS")) { //下面的代码为取得文档标签
  979. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  980. mTemplate = MsgObj.GetMsgByName("TEMPLATE"); //取得模板编号
  981. mFileName = MsgObj.GetMsgByName("FILENAME"); //取得文档名称
  982. mFileType = MsgObj.GetMsgByName("FILETYPE"); //取得文档类型
  983. MsgObj.MsgTextClear();
  984. if (LoadBookMarks()) {
  985. MsgObj.MsgError(""); //清除错误信息
  986. }
  987. else {
  988. MsgObj.MsgError("装入标签信息失败!"); //设置错误信息
  989. }
  990. }
  991. else if (mOption.equalsIgnoreCase("SAVEBOOKMARKS")) { //下面的代码为取得标签文档内容
  992. mTemplate = MsgObj.GetMsgByName("TEMPLATE"); //取得模板编号
  993. if (SaveBookMarks()) {
  994. MsgObj.MsgError(""); //清除错误信息
  995. }
  996. else {
  997. MsgObj.MsgError("保存标签信息失败!"); //设置错误信息
  998. }
  999. MsgObj.MsgTextClear(); //清除文本信息
  1000. }
  1001. else if (mOption.equalsIgnoreCase("LISTBOOKMARKS")) { //下面的代码为显示标签列表
  1002. MsgObj.MsgTextClear(); //清除文本信息
  1003. if (ListBookmarks()) {
  1004. MsgObj.SetMsgByName("BOOKMARK", mBookmark); //将用户名列表打包
  1005. MsgObj.SetMsgByName("DESCRIPT", mDescript); //将说明信息列表打包
  1006. MsgObj.MsgError(""); //清除错误信息
  1007. }
  1008. else {
  1009. MsgObj.MsgError("调入标签失败!"); //设置错误信息
  1010. }
  1011. }
  1012. else if (mOption.equalsIgnoreCase("LOADMARKLIST")) { //下面的代码为创建印章列表
  1013. MsgObj.MsgTextClear(); //清除文本信息
  1014. if (LoadMarkList()) {
  1015. MsgObj.SetMsgByName("MARKLIST", mMarkList); //显示签章列表
  1016. MsgObj.MsgError(""); //清除错误信息
  1017. }
  1018. else {
  1019. MsgObj.MsgError("创建印章列表失败!"); //设置错误信息
  1020. }
  1021. }
  1022. else if (mOption.equalsIgnoreCase("LOADMARKIMAGE")) { //下面的代码为打开印章文件
  1023. mMarkName = MsgObj.GetMsgByName("IMAGENAME"); //取得签名名称
  1024. mUserName = MsgObj.GetMsgByName("USERNAME"); //取得用户名称
  1025. mPassword = MsgObj.GetMsgByName("PASSWORD"); //取得用户密码
  1026. MsgObj.MsgTextClear(); //清除文本信息
  1027. if (LoadMarkImage(mMarkName, mPassword)) { //调入签名信息
  1028. MsgObj.SetMsgByName("IMAGETYPE", mFileType); //设置签名类型
  1029. MsgObj.MsgFileBody(mFileBody); //将签名信息打包
  1030. MsgObj.SetMsgByName("POSITION", "Manager"); //插入位置 在文档中标签"Manager"
  1031. MsgObj.SetMsgByName("ZORDER", "5"); //4:在文字上方 5:在文字下方
  1032. MsgObj.SetMsgByName("STATUS", "打开成功!"); //设置状态信息
  1033. MsgObj.MsgError(""); //清除错误信息
  1034. }
  1035. else {
  1036. MsgObj.MsgError("签名或密码错误!"); //设置错误信息
  1037. }
  1038. }
  1039. else if (mOption.equalsIgnoreCase("SAVESIGNATURE")) { //下面的代码为保存签章基本信息
  1040. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  1041. mFileName = MsgObj.GetMsgByName("FILENAME"); //取得文件名称
  1042. mMarkName = MsgObj.GetMsgByName("MARKNAME"); //取得签名名称
  1043. mUserName = MsgObj.GetMsgByName("USERNAME"); //取得用户名称
  1044. mDateTime = MsgObj.GetMsgByName("DATETIME"); //取得签名时间
  1045. mHostName = request.getRemoteAddr(); //取得用户IP
  1046. mMarkGuid = MsgObj.GetMsgByName("MARKGUID"); //取得唯一编号
  1047. MsgObj.MsgTextClear(); //清除文本信息
  1048. if (SaveSignature()) { //保存签章
  1049. MsgObj.SetMsgByName("STATUS", "保存印章成功!"); //设置状态信息
  1050. MsgObj.MsgError(""); //清除错误信息
  1051. }
  1052. else {
  1053. MsgObj.MsgError("保存印章失败!"); //设置错误信息
  1054. }
  1055. }
  1056. else if (mOption.equalsIgnoreCase("LOADSIGNATURE")) { //下面的代码为调出签章基本信息
  1057. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  1058. MsgObj.MsgTextClear(); //清除文本信息
  1059. if (LoadSignature()) { //调出签章
  1060. MsgObj.SetMsgByName("MARKNAME", mMarkName); //将签名名称列表打包
  1061. MsgObj.SetMsgByName("USERNAME", mUserName); //将用户名列表打包
  1062. MsgObj.SetMsgByName("DATETIME", mDateTime); //将时间列表打包
  1063. MsgObj.SetMsgByName("HOSTNAME", mHostName); //将盖章IP地址列表打包
  1064. MsgObj.SetMsgByName("MARKGUID", mMarkGuid); //将唯一编号列表打包
  1065. MsgObj.SetMsgByName("STATUS", "调入印章成功!"); //设置状态信息
  1066. MsgObj.MsgError(""); //清除错误信息
  1067. }
  1068. else {
  1069. MsgObj.MsgError("调入印章失败!"); //设置错误信息
  1070. }
  1071. }
  1072. else if(mOption.equalsIgnoreCase("SAVEPDF")){ //下面的代码为保存PDF文件
  1073. mRecordID=MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  1074. mFileName=MsgObj.GetMsgByName("FILENAME"); //取得文档名称
  1075. MsgObj.MsgTextClear(); //清除文本信息
  1076. if (MsgObj.MsgFileSave(mFilePath+"\\Document\\"+mRecordID+".pdf")){ //保存文档到文件夹中
  1077. MsgObj.SetMsgByName("STATUS", "保存成功!"); //设置状态信息
  1078. MsgObj.MsgError(""); //清除错误信息
  1079. }
  1080. else {
  1081. MsgObj.MsgError("保存失败!"); //设置错误信息
  1082. }
  1083. MsgObj.MsgFileClear(); //清除文档内容
  1084. }
  1085. else if (mOption.equalsIgnoreCase("SAVEASHTML")) { //下面的代码为将OFFICE存为HTML页面
  1086. mHtmlName = MsgObj.GetMsgByName("HTMLNAME"); //取得文件名称
  1087. mDirectory = MsgObj.GetMsgByName("DIRECTORY"); //取得目录名称
  1088. MsgObj.MsgTextClear();
  1089. if (mDirectory.trim().equalsIgnoreCase("")) {
  1090. mFilePath = mFilePath + "\\HTML";
  1091. }
  1092. else {
  1093. mFilePath = mFilePath + "\\HTML\\" + mDirectory;
  1094. }
  1095. MsgObj.MakeDirectory(mFilePath); //创建路径
  1096. if (MsgObj.MsgFileSave(mFilePath + "\\" + mHtmlName)) { //保存HTML文件
  1097. MsgObj.MsgError(""); //清除错误信息
  1098. MsgObj.SetMsgByName("STATUS", "保存HTML成功!"); //设置状态信息
  1099. }
  1100. else {
  1101. MsgObj.MsgError("保存HTML失败!"); //设置错误信息
  1102. }
  1103. MsgObj.MsgFileClear();
  1104. }
  1105. else if (mOption.equalsIgnoreCase("SAVEIMAGE")) { //下面的代码为将OFFICE存为HTML图片页面
  1106. mHtmlName = MsgObj.GetMsgByName("HTMLNAME"); //取得文件名称
  1107. mDirectory = MsgObj.GetMsgByName("DIRECTORY"); //取得目录名称
  1108. MsgObj.MsgTextClear();
  1109. if (mDirectory.trim().equalsIgnoreCase("")) {
  1110. mFilePath = mFilePath + "\\HTMLIMAGE";
  1111. }
  1112. else {
  1113. mFilePath = mFilePath + "\\HTMLIMAGE\\" + mDirectory;
  1114. }
  1115. MsgObj.MakeDirectory(mFilePath); //创建路径
  1116. if (MsgObj.MsgFileSave(mFilePath + "\\" + mHtmlName)) { //保存HTML文件
  1117. MsgObj.MsgError(""); //清除错误信息
  1118. MsgObj.SetMsgByName("STATUS", "保存HTML图片成功!"); //设置状态信息
  1119. }
  1120. else {
  1121. MsgObj.MsgError("保存HTML图片失败!"); //设置错误信息
  1122. }
  1123. MsgObj.MsgFileClear();
  1124. }
  1125. else if (mOption.equalsIgnoreCase("SAVEASPAGE")) { //下面的代码为将手写批注存为HTML图片页面
  1126. mHtmlName = MsgObj.GetMsgByName("HTMLNAME"); //取得文件名称
  1127. mDirectory = MsgObj.GetMsgByName("DIRECTORY"); //取得目录名称
  1128. MsgObj.MsgTextClear();
  1129. if (mDirectory.trim().equalsIgnoreCase("")) {
  1130. mFilePath = mFilePath + "\\HTML";
  1131. }
  1132. else {
  1133. mFilePath = mFilePath + "\\HTML\\" + mDirectory;
  1134. }
  1135. MsgObj.MakeDirectory(mFilePath); //创建路径
  1136. if (MsgObj.MsgFileSave(mFilePath + "\\" + mHtmlName)) { //保存HTML文件
  1137. MsgObj.MsgError(""); //清除错误信息
  1138. MsgObj.SetMsgByName("STATUS", "保存批注HTML图片成功!"); //设置状态信息
  1139. }
  1140. else {
  1141. MsgObj.MsgError("保存批注HTML图片失败!"); //设置错误信息
  1142. }
  1143. MsgObj.MsgFileClear();
  1144. }
  1145. else if (mOption.equalsIgnoreCase("INSERTFILE")) { //下面的代码为插入文件
  1146. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  1147. mFileName = MsgObj.GetMsgByName("FILENAME"); //取得文档名称
  1148. mFileType = MsgObj.GetMsgByName("FILETYPE"); //取得文档类型
  1149. MsgObj.MsgTextClear();
  1150. if (LoadFile()) { //调入文档
  1151. MsgObj.MsgFileBody(mFileBody); //将文件信息打包
  1152. MsgObj.SetMsgByName("POSITION", "Content"); //设置插入的位置[书签]
  1153. MsgObj.SetMsgByName("STATUS", "插入文件成功!"); //设置状态信息
  1154. MsgObj.MsgError(""); //清除错误信息
  1155. }
  1156. else {
  1157. MsgObj.MsgError("插入文件成功!"); //设置错误信息
  1158. }
  1159. }
  1160. else if (mOption.equalsIgnoreCase("UPDATEFILE")) { //下面的代码为更新保存文件
  1161. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  1162. mFileName = MsgObj.GetMsgByName("FILENAME"); //取得文档名称
  1163. mFileType = MsgObj.GetMsgByName("FILETYPE"); //取得文档类型
  1164. mUserName = mUserName; //取得保存用户名称
  1165. mDescript = "定稿版本"; //版本说明
  1166. mFileSize = MsgObj.MsgFileSize(); //取得文档大小
  1167. mFileDate = DbaObj.GetDateTime(); //取得文档时间
  1168. mFileBody = MsgObj.MsgFileBody(); //取得文档内容
  1169. MsgObj.MsgTextClear();
  1170. if (SaveVersion()) { //保存文档内容
  1171. MsgObj.SetMsgByName("STATUS", "保存定稿版本成功!"); //设置状态信息
  1172. MsgObj.MsgError(""); //清除错误信息
  1173. }
  1174. else {
  1175. MsgObj.MsgError("保存定稿版本失败!"); //设置错误信息
  1176. }
  1177. MsgObj.MsgFileClear();
  1178. }
  1179. else if (mOption.equalsIgnoreCase("INSERTIMAGE")) { //下面的代码为插入服务器图片
  1180. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  1181. mLabelName = MsgObj.GetMsgByName("LABELNAME"); //标签名
  1182. mImageName = MsgObj.GetMsgByName("IMAGENAME"); //图片名
  1183. mFilePath = mFilePath + "\\Document\\" + mImageName; //图片在服务器的完整路径
  1184. mFileType = mImageName.substring(mImageName.length() - 4).toLowerCase(); //取得文件的类型
  1185. MsgObj.MsgTextClear();
  1186. if (MsgObj.MsgFileLoad(mFilePath)) { //调入图片
  1187. MsgObj.SetMsgByName("IMAGETYPE", mFileType); //指定图片的类型
  1188. MsgObj.SetMsgByName("POSITION", mLabelName); //设置插入的位置[书签对象名]
  1189. MsgObj.SetMsgByName("STATUS", "插入图片成功!"); //设置状态信息
  1190. MsgObj.MsgError(""); //清除错误信息
  1191. }
  1192. else {
  1193. MsgObj.MsgError("插入图片失败!"); //设置错误信息
  1194. }
  1195. }
  1196. else if (mOption.equalsIgnoreCase("PUTFILE")) { //下面的代码为请求上传文件操作
  1197. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  1198. mFileBody = MsgObj.MsgFileBody(); //取得文档内容
  1199. mLocalFile = MsgObj.GetMsgByName("LOCALFILE"); //取得本地文件名称
  1200. mRemoteFile = MsgObj.GetMsgByName("REMOTEFILE"); //取得远程文件名称
  1201. MsgObj.MsgTextClear(); //清除文本信息
  1202. mFilePath = mFilePath + "\\Document\\" + mRemoteFile;
  1203. if (MsgObj.MsgFileSave(mFilePath)) { //调入文档
  1204. MsgObj.SetMsgByName("STATUS", "保存上传文件成功!"); //设置状态信息
  1205. MsgObj.MsgError(""); //清除错误信息
  1206. }
  1207. else {
  1208. MsgObj.MsgError("上传文件失败!"); //设置错误信息
  1209. }
  1210. }
  1211. else if (mOption.equalsIgnoreCase("GETFILE")) { //下面的代码为请求下载文件操作
  1212. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  1213. mLocalFile = MsgObj.GetMsgByName("LOCALFILE"); //取得本地文件名称
  1214. mRemoteFile = MsgObj.GetMsgByName("REMOTEFILE"); //取得远程文件名称
  1215. MsgObj.MsgTextClear(); //清除文本信息
  1216. mFilePath = mFilePath + "\\Document\\" + mRemoteFile;
  1217. if (MsgObj.MsgFileLoad(mFilePath)) { //调入文档内容
  1218. MsgObj.SetMsgByName("STATUS", "保存下载文件成功!"); //设置状态信息
  1219. MsgObj.MsgError(""); //清除错误信息
  1220. }
  1221. else {
  1222. MsgObj.MsgError("下载文件失败!"); //设置错误信息
  1223. }
  1224. }
  1225. else if (mOption.equalsIgnoreCase("DATETIME")) { //下面的代码为请求取得服务器时间
  1226. MsgObj.MsgTextClear(); //清除文本信息
  1227. MsgObj.SetMsgByName("DATETIME", DbaObj.GetDateTime()); //标准日期格式字串,如 2005-8-16 10:20:35
  1228. }
  1229. else if (mOption.equalsIgnoreCase("SENDMESSAGE")) { //下面的代码为Web页面请求信息[扩展接口]
  1230. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  1231. mFileName = MsgObj.GetMsgByName("FILENAME"); //取得文档名称
  1232. mFileType = MsgObj.GetMsgByName("FILETYPE"); //取得文档类型
  1233. mCommand = MsgObj.GetMsgByName("COMMAND"); //取得自定义的操作类型
  1234. mContent = MsgObj.GetMsgByName("CONTENT"); //取得文本信息 Content
  1235. mOfficePrints = MsgObj.GetMsgByName("OFFICEPRINTS"); //取得Office文档的打印次数
  1236. mInfo = MsgObj.GetMsgByName("TESTINFO"); //取得客户端传来的自定义信息
  1237. MsgObj.MsgTextClear();
  1238. MsgObj.MsgFileClear();
  1239. System.out.println("COMMAND:"+mCommand);
  1240. if (mCommand.equalsIgnoreCase("INPORTTEXT")) { //导入文本内容功能
  1241. if (LoadContent()) {
  1242. MsgObj.SetMsgByName("CONTENT", mContent);
  1243. MsgObj.SetMsgByName("STATUS", "导入成功!"); //设置状态信息
  1244. MsgObj.MsgError(""); //清除错误信息
  1245. }
  1246. else {
  1247. MsgObj.MsgError("导入失败!"); //设置错误信息
  1248. }
  1249. }
  1250. else if (mCommand.equalsIgnoreCase("EXPORTTEXT")) { //导出文本内容功能
  1251. if (SaveContent()) {
  1252. MsgObj.SetMsgByName("STATUS", "导出成功!"); //设置状态信息
  1253. MsgObj.MsgError(""); //清除错误信息
  1254. }
  1255. else {
  1256. MsgObj.MsgError("导出失败!"); //设置错误信
  1257. }
  1258. }
  1259. else if (mCommand.equalsIgnoreCase("WORDTABLE")) { //插入远程表格功能
  1260. if (GetWordTable()) {
  1261. MsgObj.SetMsgByName("COLUMNS", String.valueOf(mColumns)); //列
  1262. MsgObj.SetMsgByName("CELLS", String.valueOf(mCells)); //行
  1263. MsgObj.SetMsgByName("WORDCONTENT", mTableContent); //表格内容
  1264. MsgObj.SetMsgByName("STATUS", "增加和填充成功成功!"); //设置状态信息
  1265. MsgObj.MsgError(""); //清除错误信息
  1266. }
  1267. else {
  1268. MsgObj.MsgError("增加表格行失败!"); //设置错误信息
  1269. }
  1270. }
  1271. else if (mCommand.equalsIgnoreCase("COPIES")) { //打印份数控制功能
  1272. System.out.println("PRINTS:"+mOfficePrints);
  1273. mCopies = Integer.parseInt(mOfficePrints); //获得客户需要打印的份数
  1274. if (mCopies <= 2) { //比较打印份数,拟定该文档允许打印的总数为2份,注:可以在数据库中设置好文档允许打印的份数
  1275. if (UpdataCopies(2 - mCopies)) { //更新打印份数
  1276. MsgObj.SetMsgByName("STATUS", "1"); //设置状态信息,允许打印
  1277. MsgObj.MsgError(""); //清除错误信息
  1278. }
  1279. }
  1280. else {
  1281. MsgObj.SetMsgByName("STATUS", "0"); //不允许打印
  1282. MsgObj.MsgError("超过打印限度不允许打印!"); //设置错误信息
  1283. }
  1284. }
  1285. else if (mCommand.equalsIgnoreCase("SELFINFO")) {
  1286. mInfo = "服务器端收到客户端传来的信息:“" + mInfo + "” | ";
  1287. mInfo = mInfo + "当前服务器时间:" + DbaObj.GetDateTime(); //组合返回给客户端的信息
  1288. MsgObj.SetMsgByName("RETURNINFO", mInfo); //将返回的信息设置到信息包中
  1289. }
  1290. else {
  1291. MsgObj.MsgError("客户端Web发送数据包命令没有合适的处理函数![" + mCommand + "]");
  1292. MsgObj.MsgTextClear();
  1293. MsgObj.MsgFileClear();
  1294. }
  1295. }
  1296. else if (mOption.equalsIgnoreCase("SAVEPAGE")) { //下面的代码为保存为全文批注格式文件
  1297. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  1298. MsgObj.MsgTextClear(); //清除文本信息
  1299. mFilePath = mFilePath + "\\Document\\" + mRecordID + ".pgf"; //全文批注文件的完整路径
  1300. if (MsgObj.MsgFileSave(mFilePath)) { //保存全文批注文件
  1301. MsgObj.SetMsgByName("STATUS", "保存全文批注成功!"); //设置状态信息
  1302. MsgObj.MsgError(""); //清除错误信息
  1303. }
  1304. else {
  1305. MsgObj.MsgError("保存全文批注失败!"); //设置错误信息
  1306. }
  1307. }
  1308. else if (mOption.equalsIgnoreCase("LOADPAGE")) { //下面的代码为调入全文批注格式文件
  1309. mRecordID = MsgObj.GetMsgByName("RECORDID"); //取得文档编号
  1310. MsgObj.MsgTextClear(); //清除文本信息
  1311. mFilePath = mFilePath + "\\Document\\" + mRecordID + ".pgf"; //全文批注文件的完整路径
  1312. if (MsgObj.MsgFileLoad(mFilePath)) { //调入文档内容
  1313. MsgObj.SetMsgByName("STATUS", "打开全文批注成功!"); //设置状态信息
  1314. MsgObj.MsgError(""); //清除错误信息
  1315. }
  1316. else {
  1317. MsgObj.MsgError("打开全文批注失败!"); //设置错误信息
  1318. }
  1319. }
  1320. }
  1321. else {
  1322. MsgObj.MsgError("客户端发送数据包错误!");
  1323. MsgObj.MsgTextClear();
  1324. MsgObj.MsgFileClear();
  1325. }
  1326. }
  1327. else {
  1328. MsgObj.MsgError("请使用Post方法");
  1329. MsgObj.MsgTextClear();
  1330. MsgObj.MsgFileClear();
  1331. }
  1332. System.out.println("SendPackage");
  1333. System.out.println("");
  1334. //SendPackage(response); //老版后台类返回信息包数据方法
  1335. MsgObj.Send(response); //8.1.0.2新版后台类新增的功能接口,返回信息包数据
  1336. }
  1337. catch (Exception e) {
  1338. System.out.println(e.toString());
  1339. }
  1340. }
  1341. }
  1342. %>
  1343. <%
  1344. iWebOffice officeServer = new iWebOffice();
  1345. officeServer.ExecuteRun(request, response);
  1346. out.clear(); //用于解决JSP页面中“已经调用getOutputStream()”问题
  1347. out=pageContext.pushBody(); //用于解决JSP页面中“已经调用getOutputStream()”问题
  1348. %>