biz_startScan.cs 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7. using Newtonsoft.Json;
  8. using Saraff.Twain;
  9. using HXX.Scanner.Socket;
  10. using HXX.Scanner.Common;
  11. namespace HXX.Scanner.Biz.Socket
  12. {
  13. /// <summary>
  14. /// 业务处理 开始扫描
  15. /// </summary>
  16. public class biz_startScan
  17. {
  18. public static del_http_notify2 on_http_notify2;
  19. public static del_notify_startScan on_startScan;
  20. /// <summary>
  21. /// 主业务
  22. /// </summary>
  23. /// <param name="connId"></param>
  24. /// <param name="data"></param>
  25. public async static void Work(IntPtr connId, cmd_startScan2 data)
  26. {
  27. response_startScan response = new response_startScan();
  28. if (!config_environment.scan_state)
  29. {
  30. if (http_manager.check_is_queue_empty())
  31. {
  32. var result = await work_detail(connId, data);
  33. if (result.Status == 1)
  34. {
  35. response.code = 200;
  36. response.msg = "启动扫描成功";
  37. }
  38. else
  39. {
  40. response.code = result.Status;
  41. response.msg = result.Message;
  42. }
  43. }
  44. else
  45. {
  46. response.code = 510;
  47. response.msg = "启动扫描失败,上传正在进行中";
  48. }
  49. }
  50. else
  51. {
  52. response.code = 509;
  53. response.msg = "扫描仪正在使用中";
  54. }
  55. response.data = data;
  56. //SocketServerManager.Send_Family(connId, response.ToJson());
  57. SocketServerManager.Send_Single(connId, response.ToJson());
  58. }
  59. /// <summary>
  60. /// 扫描及构造返回值
  61. /// </summary>
  62. /// <param name="connId"></param>
  63. /// <param name="data"></param>
  64. /// <returns></returns>
  65. private async static Task<ResponseEntity> work_detail(IntPtr connId, cmd_startScan2 data)
  66. {
  67. var result = new ResponseEntity();
  68. try
  69. {
  70. //获取当前激活的扫描仪
  71. var scanner = scanner_manager.get_current();
  72. if (scanner != null)
  73. {
  74. //设置环境参数
  75. config_environment.scan_type2 = ScanType.Formal;
  76. config_environment.scan_type = biz_environment.get_scan_type(0);
  77. config_environment.scan_ab = biz_environment.get_ab(data.paperSchema);
  78. config_environment.paper_size = biz_environment.get_paper_size(3);
  79. //config_environment.use_source_ui = data.isLocalConfig == "0";
  80. config_environment.web_parameter = data;//保存参数本身
  81. config_environment.current_invoker = connId;
  82. //config_environment.use_source_ui = false;
  83. config_environment.use_source_ui = data.useDriveUI == 1;
  84. if (data.dpi > 0)
  85. {
  86. scanner.resolution = data.dpi;
  87. }
  88. scanner.setPaperSize(config_environment.paper_size);
  89. //初始化文件信息,文件名及计数器
  90. file_manager.Init(data);
  91. on_startScan(data.uploadUrl);
  92. //告诉网页端开始扫描
  93. var response = new response_uploading() { batchNumber = config_environment.web_parameter.batchNumber, subjectCode = config_environment.web_parameter.subjectCode };
  94. on_http_notify2(JsonConvert.SerializeObject(response));
  95. //发送扫描指令
  96. result = await engine_twain32.Engine.Scan(scanner);
  97. }
  98. else
  99. {
  100. result.Status = 509;
  101. result.Message = "未找到指定的扫描仪";
  102. }
  103. }
  104. catch (TwainException te)
  105. {
  106. config_environment.scan_state = false;
  107. LogManager.WriteLog(te);
  108. result.Message = biz_twainException.get_TwainException_msg(te);
  109. if (te.ConditionCode.Equals(TwCC.OperationError))
  110. {
  111. result.Status = 501;
  112. }
  113. else
  114. {
  115. result.Status = 501;
  116. }
  117. }
  118. catch (Exception ee)
  119. {
  120. LogManager.WriteLog(ee);
  121. result.Status = 509;
  122. result.Message = ee.Message;
  123. }
  124. finally
  125. {
  126. //config_environment.scan_state = false;
  127. }
  128. return result;
  129. }
  130. private async static Task<ResponseEntity> work_detail_test(IntPtr connId, cmd_startScan2 data)
  131. {
  132. var result = new ResponseEntity();
  133. try
  134. {
  135. //设置环境参数
  136. //config_environment.scan_type = biz_environment.get_scan_type(data.param.isTest);
  137. //config_environment.scan_ab = biz_environment.get_ab(data.param.scannerParams.paperSchema);
  138. //config_environment.paper_size = biz_environment.get_paper_size(data.param.scannerParams.paperSize);
  139. //config_environment.use_source_ui = data.param.isLocalConfig == "1";
  140. //config_environment.web_parameter = data.param;//保存参数本身
  141. //config_environment.current_invoker = connId;
  142. config_environment.scan_type2 = ScanType.Formal;
  143. config_environment.scan_type = biz_environment.get_scan_type(0);
  144. config_environment.scan_ab = biz_environment.get_ab(data.paperSchema);
  145. config_environment.paper_size = biz_environment.get_paper_size(4);
  146. config_environment.use_source_ui = data.isLocalConfig == "1";
  147. config_environment.web_parameter = data;//保存参数本身
  148. config_environment.current_invoker = connId;
  149. config_environment.scan_state = true;
  150. file_manager.Init(data);
  151. var response = new response_uploading() { batchNumber = config_environment.web_parameter.batchNumber, subjectCode = config_environment.web_parameter.subjectCode };
  152. on_http_notify2(JsonConvert.SerializeObject(response));
  153. //模拟扫描
  154. string ff = @"D:\test2\1\{0}.jpg";
  155. //Directory.Delete(@"D:\test2\2\", true);
  156. for (int i = 1; i <= 5; i++)
  157. {
  158. var fileInfo = file_manager.get_file_info2();
  159. var file = fileInfo.file_full_name.Replace(".bmp", ".jpg");
  160. var source = string.Format(ff, i.ToString());
  161. File.Copy(source, file);
  162. fileInfo.file_full_name = file;
  163. fileInfo.file_name= fileInfo.file_name.Replace(".bmp", ".jpg");
  164. fileInfo.file_ext = "jpg";
  165. file_manager.dic_file_list[file] = fileInfo;
  166. file_manager.save(file);
  167. }
  168. result.Status = 1;
  169. result.Message = "okk";
  170. }
  171. catch (Exception ee)
  172. {
  173. LogManager.WriteLog(ee);
  174. result.Status = 509;
  175. result.Message = ee.Message;
  176. }
  177. finally
  178. {
  179. config_environment.scan_state = false;
  180. }
  181. return result;
  182. }
  183. }
  184. }