frmCaseFileCompare.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720
  1. using ICSharpCode.SharpZipLib.Tar;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.IO;
  8. using System.IO.Compression;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Windows.Forms;
  13. using wispro.sp.utility;
  14. using SharpCompress.Archives;
  15. using SharpCompress.Archives.Rar;
  16. using SharpCompress.Common;
  17. using System.Collections;
  18. using wispro.sp.entity.CompareCase;
  19. using wispro.sp.share.webViewObject;
  20. using System.Net.Http;
  21. using System.Net.Http.Json;
  22. using wispro.sp.share;
  23. using OpenQA.Selenium.Support.UI;
  24. using System.Dynamic;
  25. namespace wispro.sp.winClient
  26. {
  27. public partial class frmCaseFileCompare : Form
  28. {
  29. private CompareDocx draft_fristReturn;
  30. private CompareDocx fristReturn_Finally;
  31. public frmCaseFileCompare()
  32. {
  33. InitializeComponent();
  34. }
  35. private void label1_Click(object sender, EventArgs e)
  36. {
  37. }
  38. private CaseInfo getCaseInfo_files(string caseNo, out string draftFile, out string returnFile, out string finalFile)
  39. {
  40. draftFile = null;
  41. returnFile = null;
  42. finalFile = null;
  43. var retFiles = wispro.sp.utility.IPEasyUtility.DownloadCaseFiles(caseNo);
  44. if (retFiles != null)
  45. {
  46. CaseInfo caseInfo = new CaseInfo();
  47. caseInfo.CaseNo = retFiles.CaseNo;
  48. IDictionary<String, Object> keyValuePairs = (IDictionary<String, Object>)retFiles;
  49. if (keyValuePairs.ContainsKey("CaseName"))
  50. {
  51. caseInfo.CaseName = retFiles.CaseName;
  52. }
  53. if (keyValuePairs.ContainsKey("Customer"))
  54. {
  55. caseInfo.Customer = new entity.Customer() { Name = retFiles.Customer };
  56. }
  57. if (keyValuePairs.ContainsKey("FirstDraftDate"))
  58. {
  59. caseInfo.DraftDate = string.IsNullOrEmpty(retFiles.FirstDraftDate) ? null : DateTime.Parse(retFiles.FirstDraftDate);
  60. }
  61. if (keyValuePairs.ContainsKey("ReturnDate"))
  62. {
  63. caseInfo.ReturnDate = string.IsNullOrEmpty(retFiles.ReturnDate) ? null : DateTime.Parse(retFiles.ReturnDate);
  64. }
  65. if (keyValuePairs.ContainsKey("FinalizationDate"))
  66. {
  67. caseInfo.FinalVersionDate = string.IsNullOrEmpty(retFiles.FinalizationDate) ? null : DateTime.Parse(retFiles.FinalizationDate);
  68. }
  69. if (keyValuePairs.ContainsKey("DoPersons"))
  70. {
  71. caseInfo.Handlers = retFiles.DoPersons;
  72. }
  73. if (keyValuePairs.ContainsKey("Reviewer"))
  74. {
  75. if (!string.IsNullOrEmpty(retFiles.Reviewer))
  76. {
  77. caseInfo.Reviewer = new entity.Staff() { Name = retFiles.Reviewer };
  78. }
  79. }
  80. if (keyValuePairs.ContainsKey("draftFile"))
  81. {
  82. draftFile = retFiles.draftFile;
  83. }
  84. if (keyValuePairs.ContainsKey("firstReturnFile"))
  85. {
  86. returnFile = retFiles.firstReturnFile;
  87. }
  88. if (keyValuePairs.ContainsKey("finallyFile"))
  89. {
  90. finalFile = retFiles.finallyFile;
  91. }
  92. return caseInfo;
  93. }
  94. else
  95. {
  96. return null;
  97. }
  98. }
  99. private async Task compareCaseFile()
  100. {
  101. DataTable table = wispro.sp.utility.IPEasyUtility.GetFinished3FilesCases(1);
  102. if (table != null)
  103. {
  104. foreach (DataRow row in table.Rows)
  105. {
  106. if (row["申请类型"].ToString().Trim() == "外观设计")
  107. {
  108. continue;
  109. }
  110. string draftFile = string.Empty;
  111. string returnFile = string.Empty;
  112. string finalFile = string.Empty;
  113. string CaseNo = row["我方文号"].ToString();
  114. var isExistResp = await new APIService().CaseExist(CaseNo);
  115. //isExistResp.Wait();
  116. if (isExistResp)
  117. {
  118. continue;
  119. }
  120. CaseInfo caseInfo = getCaseInfo_files(CaseNo, out draftFile, out returnFile, out finalFile);
  121. int i = (string.IsNullOrEmpty(draftFile) ? 0 : 1) +
  122. (string.IsNullOrEmpty(returnFile) ? 0 : 1) +
  123. (string.IsNullOrEmpty(finalFile) ? 0 : 1);
  124. if (i > 1)
  125. {
  126. CompareFiles(draftFile, returnFile, finalFile, caseInfo);
  127. await new APIService().SaveCompareResult(caseInfo);
  128. }
  129. }
  130. }
  131. }
  132. private void CompareFiles(string draftFile, string returnFile, string finalFile, CaseInfo caseInfo)
  133. {
  134. string strExtractPath = @"c:\temp";
  135. string tmpdraftFile = ExtractFile(draftFile, 0, strExtractPath);
  136. string tmpreturnFile = ExtractFile(returnFile, 1, strExtractPath);
  137. string tmpfinalFile = ExtractFile(finalFile, 2, strExtractPath);
  138. if (!string.IsNullOrEmpty(tmpdraftFile) && !string.IsNullOrEmpty(tmpreturnFile))
  139. {
  140. CompareDocx docx = new CompareDocx();
  141. docx.Compare(tmpdraftFile, tmpreturnFile);
  142. if (docx.FulltextResult.oldWordCount > 0)
  143. {
  144. caseInfo.DRRFulltext = docx.FulltextResult;
  145. }
  146. if (docx.AbstractResult.oldWordCount > 0)
  147. {
  148. caseInfo.DRRAbstract = docx.AbstractResult;
  149. }
  150. if (docx.ClaimResult.oldWordCount > 0)
  151. {
  152. caseInfo.DRRCalim = docx.ClaimResult;
  153. }
  154. if (docx.AbstractResult.oldWordCount > 0)
  155. {
  156. caseInfo.DRRAll = docx.AllStringResult;
  157. }
  158. }
  159. if (!string.IsNullOrEmpty(tmpfinalFile) && !string.IsNullOrEmpty(tmpreturnFile))
  160. {
  161. CompareDocx docx = new CompareDocx();
  162. docx.Compare(tmpreturnFile, tmpfinalFile);
  163. if (docx.FulltextResult.oldWordCount > 0)
  164. {
  165. caseInfo.RFRFulltext = docx.FulltextResult;
  166. }
  167. if (docx.AbstractResult.oldWordCount > 0)
  168. {
  169. caseInfo.RFRAbstract = docx.AbstractResult;
  170. }
  171. if (docx.ClaimResult.oldWordCount > 0)
  172. {
  173. caseInfo.RFRCalim = docx.ClaimResult;
  174. }
  175. if (docx.AllStringResult.oldWordCount > 0)
  176. {
  177. caseInfo.RFRAll = docx.AllStringResult;
  178. }
  179. }
  180. #region 清除下载和解压缩后的文件
  181. if (System.IO.File.Exists(returnFile))
  182. {
  183. System.IO.File.Delete(returnFile);
  184. }
  185. if (System.IO.File.Exists(draftFile))
  186. {
  187. System.IO.File.Delete(draftFile);
  188. }
  189. if (System.IO.File.Exists(finalFile))
  190. {
  191. System.IO.File.Delete(finalFile);
  192. }
  193. if (System.IO.Directory.Exists(Path.Combine(strExtractPath, returnFile.Substring(0, returnFile.Length - 4))))
  194. {
  195. System.IO.Directory.Delete(Path.Combine(strExtractPath, returnFile.Substring(0, returnFile.Length - 4)), true);
  196. }
  197. if (System.IO.Directory.Exists(Path.Combine(strExtractPath, draftFile.Substring(0, draftFile.Length - 4))))
  198. {
  199. System.IO.Directory.Delete(Path.Combine(strExtractPath, draftFile.Substring(0, draftFile.Length - 4)), true);
  200. }
  201. if (System.IO.Directory.Exists(Path.Combine(strExtractPath, finalFile.Substring(0, finalFile.Length - 4))))
  202. {
  203. System.IO.Directory.Delete(Path.Combine(strExtractPath, finalFile.Substring(0, finalFile.Length - 4)), true);
  204. }
  205. #endregion
  206. }
  207. CaseInfo caseInfo;
  208. private void button1_Click(object sender, EventArgs e)
  209. {
  210. if (string.IsNullOrEmpty(this.txtCaseNo.Text))
  211. {
  212. if (MessageBox.Show("获取前一天所有的完成案件,并比较文档?", "提示框", MessageBoxButtons.YesNo) == DialogResult.Yes)
  213. {
  214. compareCaseFile();
  215. return;
  216. }
  217. else
  218. {
  219. MessageBox.Show("请输入案号!", "提示框", MessageBoxButtons.OK);
  220. this.txtCaseNo.Focus();
  221. return;
  222. }
  223. }
  224. else
  225. {
  226. #region 获取文本框中输入的案件,并比较三个文件
  227. string draftFile = string.Empty;
  228. string finalFile = string.Empty;
  229. string returnFile = string.Empty;
  230. caseInfo = getCaseInfo_files(txtCaseNo.Text.Trim(), out draftFile, out returnFile, out finalFile);
  231. int i = (string.IsNullOrEmpty(draftFile) ? 0 : 1) +
  232. (string.IsNullOrEmpty(returnFile) ? 0 : 1) +
  233. (string.IsNullOrEmpty(finalFile) ? 0 : 1);
  234. if (i > 1)
  235. {
  236. CompareFiles(draftFile, returnFile, finalFile, caseInfo);
  237. new APIService().SaveCompareResult(caseInfo);
  238. }
  239. comboBox1.SelectedIndex = 0;
  240. #endregion
  241. }
  242. }
  243. private static string ExtractFile(string file, int type, string strExtractPath)
  244. {
  245. if (file.ToLower().EndsWith(".zip") || file.ToLower().EndsWith(".rar"))
  246. {
  247. string extractPath = Path.Combine(strExtractPath, file.Substring(0, file.Length - 4));
  248. if (file.ToLower().EndsWith(".zip"))
  249. {
  250. ExtractFileUtil.ExtractZip(file, extractPath);
  251. }
  252. else
  253. {
  254. ExtractFileUtil.ExtractRarFile(file, extractPath);
  255. }
  256. foreach (string f in Directory.GetFiles(extractPath, "*.*", SearchOption.AllDirectories))
  257. {
  258. switch (type)
  259. {
  260. case 0:
  261. if (f.ToUpper().IndexOf("V1R", StringComparison.OrdinalIgnoreCase) > 0)
  262. {
  263. return f;
  264. }
  265. break;
  266. case 1:
  267. if (f.ToUpper().IndexOf("V1F", StringComparison.OrdinalIgnoreCase) > 0)
  268. {
  269. return f;
  270. }
  271. break;
  272. case 2:
  273. if (f.IndexOf("定稿", StringComparison.OrdinalIgnoreCase) > 0)
  274. {
  275. return f;
  276. }
  277. break;
  278. }
  279. }
  280. return null;
  281. }
  282. else
  283. {
  284. return file;
  285. }
  286. }
  287. private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
  288. {
  289. if (caseInfo != null)
  290. {
  291. richTextBox1.Clear();
  292. string strHtml = string.Empty;
  293. switch (comboBox1.SelectedIndex)
  294. {
  295. case 0:
  296. if (caseInfo.DRRAll != null)
  297. {
  298. strHtml = $"<b>所有文字比较:</b><br/><p>初稿与第一次返稿比较结果:</p><p>初稿文件字数:{caseInfo.DRRAll.oldWordCount}</p><p>删除文字数量:{caseInfo.DRRAll.DeleteCount}</p><p>插入文字数量:{caseInfo.DRRAll.InsertCount}</p><p>修改比率:{(caseInfo.DRRAll.diffRate * 100).ToString("0.0000")}%</p><p>文档语义相似度:{(caseInfo.DRRAll.TextSimilarity * 100).ToString("0.0000")}%</p>";
  299. }
  300. if (caseInfo.RFRAll != null)
  301. {
  302. strHtml = strHtml + $"<p></p><p>第一次返稿与定稿比较结果:</p><p>第一次返稿文件字数:{caseInfo.RFRAll.oldWordCount}</p><p>删除文字数量:{caseInfo.RFRAll.DeleteCount}</p><p>插入文字数量:{caseInfo.RFRAll.InsertCount}</p><p>修改比率:{(caseInfo.RFRAll.diffRate * 100).ToString("0.0000")}%</p><p>文档语义相似度:{(caseInfo.RFRAll.TextSimilarity * 100).ToString("0.0000")}%</p>";
  303. }
  304. richTextBox1.Rtf = new HtmlToRtfConverter().ConvertHtmlToRtf(strHtml);
  305. break;
  306. case 1:
  307. if (caseInfo.DRRAll != null)
  308. {
  309. richTextBox1.Rtf = new HtmlToRtfConverter().ConvertHtmlToRtf(caseInfo.DRRAll.CompareResultString);
  310. }
  311. break;
  312. case 2:
  313. if (caseInfo.RFRAll != null)
  314. {
  315. richTextBox1.Rtf = new HtmlToRtfConverter().ConvertHtmlToRtf(caseInfo.RFRAll.CompareResultString);
  316. }
  317. break;
  318. case 3:
  319. if (caseInfo.DRRAbstract != null)
  320. {
  321. strHtml = $"<b>摘要比较:</b><br/><p>初稿与第一次返稿比较结果:</p><p>初稿文件字数:{caseInfo.DRRAbstract.oldWordCount}</p><p>删除文字数量:{caseInfo.DRRAbstract.DeleteCount}</p><p>插入文字数量:{caseInfo.DRRAbstract.InsertCount}</p><p>修改比率:{(caseInfo.DRRAbstract.diffRate * 100).ToString("0.0000")}%</p><p>语义相似度:{(caseInfo.DRRAbstract.TextSimilarity * 100).ToString("0.0000")}%</p>";
  322. }
  323. if (caseInfo.RFRAbstract != null)
  324. {
  325. strHtml = strHtml + $"<p></p><p>第一次返稿与定稿比较结果:</p><p>第一次返稿文件字数:{caseInfo.RFRAbstract.oldWordCount}</p><p>删除文字数量:{caseInfo.RFRAbstract.DeleteCount}</p><p>插入文字数量:{caseInfo.RFRAbstract.InsertCount}</p><p>修改比率:{(caseInfo.RFRAbstract.diffRate * 100).ToString("0.0000")}%</p><p>语义相似度:{(caseInfo.RFRAbstract.TextSimilarity * 100).ToString("0.0000")}%</p>";
  326. }
  327. richTextBox1.Rtf = new HtmlToRtfConverter().ConvertHtmlToRtf(strHtml);
  328. break;
  329. case 4:
  330. if (caseInfo.DRRAbstract != null)
  331. {
  332. richTextBox1.Rtf = new HtmlToRtfConverter().ConvertHtmlToRtf(caseInfo.DRRAbstract.CompareResultString);
  333. }
  334. break;
  335. case 5:
  336. if (caseInfo.RFRAbstract != null)
  337. {
  338. richTextBox1.Rtf = new HtmlToRtfConverter().ConvertHtmlToRtf(caseInfo.RFRAbstract.CompareResultString);
  339. }
  340. break;
  341. case 6:
  342. if (caseInfo.DRRCalim != null)
  343. {
  344. strHtml = $"<b>权力要求比较:</b><br/><p>初稿与第一次返稿比较结果:</p><p>初稿文件字数:{caseInfo.DRRCalim.oldWordCount}</p><p>删除文字数量:{caseInfo.DRRCalim.DeleteCount}</p><p>插入文字数量:{caseInfo.DRRCalim.InsertCount}</p><p>修改比率:{(caseInfo.DRRCalim.diffRate * 100).ToString("0.0000")}%</p><p>语义相似度:{(caseInfo.DRRCalim.TextSimilarity * 100).ToString("0.0000")}%</p>";
  345. }
  346. if (caseInfo.RFRCalim != null)
  347. {
  348. strHtml = strHtml + $"<p></p><p>第一次返稿与定稿比较结果:</p><p>第一次返稿文件字数:{caseInfo.RFRCalim.oldWordCount}</p><p>删除文字数量:{caseInfo.RFRCalim.DeleteCount}</p><p>插入文字数量:{caseInfo.RFRCalim.InsertCount}</p><p>修改比率:{(caseInfo.RFRCalim.diffRate * 100).ToString("0.0000")}%</p><p>语义相似度:{(caseInfo.RFRCalim.TextSimilarity * 100).ToString("0.0000")}%</p>";
  349. }
  350. richTextBox1.Rtf = new HtmlToRtfConverter().ConvertHtmlToRtf(strHtml);
  351. break;
  352. case 7:
  353. if (caseInfo.DRRCalim != null)
  354. {
  355. richTextBox1.Rtf = new HtmlToRtfConverter().ConvertHtmlToRtf(caseInfo.DRRCalim.CompareResultString);
  356. }
  357. break;
  358. case 8:
  359. if (caseInfo.RFRCalim != null)
  360. {
  361. richTextBox1.Rtf = new HtmlToRtfConverter().ConvertHtmlToRtf(caseInfo.RFRCalim.CompareResultString);
  362. }
  363. break;
  364. case 9:
  365. if (caseInfo.DRRFulltext != null)
  366. {
  367. strHtml = $"<b>说明书比较:</b><br/><p>初稿与第一次返稿比较结果:</p><p>初稿文件字数:{caseInfo.DRRFulltext.oldWordCount}</p><p>删除文字数量:{caseInfo.DRRFulltext.DeleteCount}</p><p>插入文字数量:{caseInfo.DRRFulltext.InsertCount}</p><p>修改比率:{(caseInfo.DRRFulltext.diffRate * 100).ToString("0.0000")}%</p><p>语义相似度:{(caseInfo.DRRFulltext.TextSimilarity * 100).ToString("0.0000")}%</p>";
  368. }
  369. if (caseInfo.RFRFulltext != null)
  370. {
  371. strHtml = strHtml + $"<p></p><p>第一次返稿与定稿比较结果:</p><p>第一次返稿文件字数:{caseInfo.RFRFulltext.oldWordCount}</p><p>删除文字数量:{caseInfo.RFRFulltext.DeleteCount}</p><p>插入文字数量:{caseInfo.RFRFulltext.InsertCount}</p><p>修改比率:{(caseInfo.RFRFulltext.diffRate * 100).ToString("0.0000")}%</p><p>语义相似度:{(caseInfo.RFRFulltext.TextSimilarity * 100).ToString("0.0000")}%</p>";
  372. }
  373. richTextBox1.Rtf = new HtmlToRtfConverter().ConvertHtmlToRtf(strHtml);
  374. break;
  375. case 10:
  376. if (caseInfo.DRRFulltext != null)
  377. {
  378. richTextBox1.Rtf = new HtmlToRtfConverter().ConvertHtmlToRtf(caseInfo.DRRFulltext.CompareResultString);
  379. }
  380. break;
  381. case 11:
  382. if (caseInfo.RFRFulltext != null)
  383. {
  384. richTextBox1.Rtf = new HtmlToRtfConverter().ConvertHtmlToRtf(caseInfo.RFRFulltext.CompareResultString);
  385. }
  386. break;
  387. }
  388. }
  389. }
  390. private void button2_Click(object sender, EventArgs e)
  391. {
  392. new Form1().ShowDialog();
  393. #region 选择文档比较
  394. //OpenFileDialog openFileDialog = new OpenFileDialog();
  395. //if(openFileDialog.ShowDialog() == DialogResult.OK)
  396. //{
  397. // string strPath = openFileDialog.FileName.ToLower().Replace(".rar", "").Replace(".zip","");
  398. // if(openFileDialog.FileName.Contains(".rar"))
  399. // {
  400. // ExtractFileUtil.ExtractRarFile(openFileDialog.FileName, strPath);
  401. // }
  402. // else
  403. // {
  404. // ExtractFileUtil.ExtractZip(openFileDialog.FileName,strPath);
  405. // }
  406. // string[] files = Directory.EnumerateFiles(strPath, "*.*", SearchOption.AllDirectories).ToArray<string>();
  407. // Array.Sort(files);
  408. // Array.Reverse(files);
  409. // draft_fristReturn = new CompareDocx();
  410. // draft_fristReturn.Compare(files[0], files[1]);
  411. // if (files.Length > 2)
  412. // {
  413. // fristReturn_Finally = new CompareDocx();
  414. // fristReturn_Finally.Compare(files[1], files[2]);
  415. // }
  416. // SaveResult(strPath,draft_fristReturn);
  417. // SaveResult(strPath, fristReturn_Finally);
  418. //}
  419. #endregion
  420. }
  421. private void SaveResult(string strPath, CompareDocx draft_fristReturn)
  422. {
  423. string strHtml = @"<!DOCTYPE html>
  424. <html lang=""en"">
  425. <head>
  426. <meta charset=""utf-8"">
  427. <meta http-equiv=""X-UA-Compatible"" content=""IE=edge"">
  428. <meta name=""description"" content=""email code"">
  429. <meta name=""viewport"" content=""width=device-width, initial-scale=1"">
  430. <title>对比结果</title>
  431. <script>
  432. function toggleDiv() {
  433. var radio = document.querySelector('input[name=""options""]:checked');
  434. if(!radio){
  435. return
  436. }
  437. var value = radio.value
  438. var div = document.getElementById('resultContent');
  439. var childrenDom = div.children
  440. if(!childrenDom || childrenDom.length==0){
  441. return
  442. }
  443. for(var i = 0;i<childrenDom.length;i++){
  444. var dom = childrenDom[i]
  445. if(dom.id == value){
  446. dom.className = 'checked'
  447. }else{
  448. dom.className = ''
  449. }
  450. }
  451. }
  452. </script>
  453. </head>
  454. <!--对比结果模板-->
  455. <body>
  456. <div class=""contrastResult"">
  457. <form action="""">
  458. <div>
  459. <label for=""originalFile"">原文件:</label>
  460. <span id=""originalFile"">{0}</span>
  461. </div>
  462. <div>
  463. <label for=""contrastFile"">对比文件:</label>
  464. <span id=""contrastFile"">{1}</span>
  465. </div>
  466. <div>
  467. <label for=""result"">对比结果:</label>
  468. <div id=""result"">
  469. <table>
  470. <thead>
  471. <tr>
  472. <td></td>
  473. <td>全部对比</td>
  474. <td>摘要</td>
  475. <td>权利要求</td>
  476. <td>说明书</td>
  477. </tr>
  478. </thead>
  479. <tbody>
  480. <tr>
  481. <td>原文字数</td>
  482. <td>{2}</td>
  483. <td>{3}</td>
  484. <td>{4}</td>
  485. <td>{5}</td>
  486. </tr>
  487. <tr>
  488. <td>删除字数</td>
  489. <td>{6}</td>
  490. <td>{7}</td>
  491. <td>{8}</td>
  492. <td>{9}</td>
  493. </tr>
  494. <tr>
  495. <td>插入字数</td>
  496. <td>{10}</td>
  497. <td>{11}</td>
  498. <td>{12}</td>
  499. <td>{13}</td>
  500. </tr>
  501. <tr>
  502. <td>修改比例</td>
  503. <td>{14}</td>
  504. <td>{15}</td>
  505. <td>{16}</td>
  506. <td>{17}</td>
  507. </tr>
  508. <tr>
  509. <td>语义相似度</td>
  510. <td>{18}</td>
  511. <td>{19}</td>
  512. <td>{20}</td>
  513. <td>{21}</td>
  514. </tr>
  515. </tbody>
  516. </table>
  517. </div>
  518. </div>
  519. <div class=""resultType"">
  520. <label for="""">结果:</label>
  521. <input type=""radio"" name=""options"" value=""allContrast"" id=""allContrast"" checked onchange=""toggleDiv()"">
  522. <label for=""allContrast"">全部对比</label>
  523. <input type=""radio"" name=""options"" value=""abstract"" id=""abstract"" onchange=""toggleDiv()"">
  524. <label for=""abstract"">摘要</label>
  525. <input type=""radio"" name=""options"" value=""claim"" id=""claim"" onchange=""toggleDiv()"">
  526. <label for=""claim"">权利要求</label>
  527. <input type=""radio"" name=""options"" value=""instructions"" id=""instructions"" onchange=""toggleDiv()"">
  528. <label for=""instructions"">说明书</label>
  529. </div>
  530. <div id=""resultContent"">
  531. <div id=""allContrast"">{22}</div>
  532. <div id=""abstract"">{23}</div>
  533. <div id=""claim"">{24}</div>
  534. <div id=""instructions"">{25}</div>
  535. </div>
  536. </form>
  537. </div>
  538. <script>
  539. toggleDiv();
  540. </script>
  541. </body>
  542. <style>
  543. .contrastResult{
  544. width: 1000px;
  545. margin: 0 auto;
  546. padding: 50px 0;
  547. }
  548. div{
  549. margin: 20px 0 ;
  550. }
  551. table{
  552. width: 100%;
  553. table-layout: fixed;
  554. border-collapse: collapse;
  555. }
  556. table td{
  557. border: 1px solid black;
  558. padding: 10px;
  559. }
  560. table thead td{
  561. text-align: center;
  562. }
  563. table tr>td:first-child{
  564. width: 120px;
  565. }
  566. #resultContent>div{
  567. display: none;
  568. overflow:auto;
  569. height:400px;
  570. }
  571. .checked{
  572. display: block !important;
  573. }
  574. </style>
  575. </html>";
  576. if (draft_fristReturn != null)
  577. {
  578. var temHtml = strHtml
  579. .Replace("{0}", new FileInfo(draft_fristReturn.oldDocument.FilePath).Name)
  580. .Replace("{1}", new FileInfo(draft_fristReturn.newDocument.FilePath).Name)
  581. .Replace("{2}", draft_fristReturn.AllStringResult.oldWordCount.ToString())
  582. .Replace("{3}", draft_fristReturn.AbstractResult.oldWordCount.ToString())
  583. .Replace("{4}", draft_fristReturn.ClaimResult.oldWordCount.ToString())
  584. .Replace("{5}", draft_fristReturn.FulltextResult.oldWordCount.ToString())
  585. .Replace("{6}", draft_fristReturn.AllStringResult.DeleteCount.ToString())
  586. .Replace("{7}", draft_fristReturn.AbstractResult.DeleteCount.ToString())
  587. .Replace("{8}", draft_fristReturn.ClaimResult.DeleteCount.ToString())
  588. .Replace("{9}", draft_fristReturn.FulltextResult.DeleteCount.ToString())
  589. .Replace("{10}", draft_fristReturn.AllStringResult.InsertCount.ToString())
  590. .Replace("{11}", draft_fristReturn.AbstractResult.InsertCount.ToString())
  591. .Replace("{12}", draft_fristReturn.ClaimResult.InsertCount.ToString())
  592. .Replace("{13}", draft_fristReturn.FulltextResult.InsertCount.ToString())
  593. .Replace("{14}", (draft_fristReturn.AllStringResult.diffRate * 100).ToString("0.0000") + "%")
  594. .Replace("{15}", (draft_fristReturn.AbstractResult.diffRate * 100).ToString("0.0000") + "%")
  595. .Replace("{16}", (draft_fristReturn.ClaimResult.diffRate * 100).ToString("0.0000") + "%")
  596. .Replace("{17}", (draft_fristReturn.FulltextResult.diffRate * 100).ToString("0.0000") + "%")
  597. .Replace("{18}", (draft_fristReturn.AllStringResult.TextSimilarity * 100).ToString("0.0000") + "%")
  598. .Replace("{19}", (draft_fristReturn.AbstractResult.TextSimilarity * 100).ToString("0.0000") + "%")
  599. .Replace("{20}", (draft_fristReturn.ClaimResult.TextSimilarity * 100).ToString("0.0000") + "%")
  600. .Replace("{21}", (draft_fristReturn.FulltextResult.TextSimilarity * 100).ToString("0.0000") + "%")
  601. .Replace("{22}", draft_fristReturn.AllStringResult.CompareResultString)
  602. .Replace("{23}", draft_fristReturn.AbstractResult.CompareResultString)
  603. .Replace("{24}", draft_fristReturn.ClaimResult.CompareResultString)
  604. .Replace("{25}", draft_fristReturn.FulltextResult.CompareResultString);
  605. string fileName = $"{new FileInfo(draft_fristReturn.oldDocument.FilePath).Name}_{new FileInfo(draft_fristReturn.newDocument.FilePath).Name}.html";
  606. using (var f = File.CreateText(Path.Combine(strPath, fileName)))
  607. {
  608. f.Write(temHtml);
  609. }
  610. }
  611. }
  612. private void button3_Click(object sender, EventArgs e)
  613. {
  614. emlFileReader reader = new emlFileReader(@"D:\Users\luowen\Downloads\2f7e92c1-e009-4b19-ba8d-332e8f6f2ffc.eml");
  615. }
  616. }
  617. }