Form1.cs 146 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697
  1. using Common;
  2. using iTextSharp.text;
  3. using iTextSharp.text.pdf;
  4. using LisPacsDataUpload.business;
  5. using LisPacsDataUpload.Models;
  6. using LisPacsDataUpload.services;
  7. using Newtonsoft.Json;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Data;
  11. using System.Drawing;
  12. using System.IO;
  13. using System.Text;
  14. using System.Threading;
  15. using System.Windows.Forms;
  16. using System.Xml;
  17. namespace LisPacsDataUpload
  18. {
  19. public partial class Form1 : Form
  20. {
  21. private static int zlhrConstant_true=1;// 是临生免 常量
  22. //定时器
  23. private System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer();
  24. //private DateTime Date;
  25. //private int PageSize = 10;
  26. //private int PageIndex = 0;
  27. //PageIndex = PageIndex + 1;
  28. // int PageStart = (PageIndex - 1) * PageSize + 1;
  29. //int PageEnd = PageSize * PageIndex;
  30. private int UploadPacs;//是否上传pacs
  31. private int UploadLis;//是否上传 Lis
  32. private string ShowLog = "";
  33. private int Lis_total = 0;//今日lis上传总数
  34. private int pacs_total = 0;//今日pacs上传总数
  35. private string DicPacs = AppDomain.CurrentDomain.BaseDirectory + "Pacs\\";
  36. private string DicLis = AppDomain.CurrentDomain.BaseDirectory + "Lis\\";
  37. private int zlhr = 0;// 是否为临生免
  38. private int lisSource = 1;// 0中联老版lis 1 中联新版lis 2 专业版临生免 3 三方lis
  39. private int pacsSource = 1;// 0中联老版pacs 2 专业版pacs 3 三方pacs
  40. private int open_multiple_upload_flag = 0;// 开启多个线程上传
  41. string lis_upload_url = "http://40.26.204.3:8084/phimp-napi/qyhrlischeckreportinfo/save"; //lis 上传接口地址
  42. string pacs_upload_url = "http://40.26.204.3:8084/phimp-napi/qyhrpacscheckreportinfo/save"; //pacs 上传地址
  43. string file_url = "http://40.26.204.3:8084/phimp-napi/attachMent/upload"; // 文件上传地址
  44. private delegate void SetTextCallback(string text);
  45. //在给textBox1.text赋值的地方调用以下方法即可
  46. public Form1()
  47. {
  48. InitializeComponent();
  49. this.MinimumSize = new Size(0, 0);
  50. timer1.Interval = OracleHelper<object>.Time();
  51. timer1.Enabled = true;
  52. timer1.Tick += new EventHandler(DataUpload);//添加事件
  53. timer1.Start();
  54. }
  55. private void Form1_Load(object sender, EventArgs e)
  56. {
  57. ShowLog = "启动正常。";
  58. LogHelper.Info(ShowLog);
  59. this.SetText(ShowLog);
  60. ShowCheckBox1();
  61. ShowCheckBox2();
  62. UploadPacs = OracleHelper<object>.UploadPacs();
  63. UploadLis = OracleHelper<object>.UploadLis();
  64. if (UploadLis == 1)
  65. {
  66. GetLisDefault();
  67. }
  68. if (UploadPacs == 1)
  69. {
  70. GetPacsDefault();
  71. }
  72. //AutoStart();
  73. DataUpload(sender, e);
  74. }
  75. private void ShowCheckBox1()
  76. {
  77. try
  78. {
  79. string sql_lis = @"select 互认,zlhr,open_multiple_upload,lis_source ,pacs_source from 互认配置表";
  80. DataTable dt_lis = OracleHelper<object>.RunQueryDS(sql_lis);
  81. int total = int.Parse(dt_lis.Rows[0]["互认"].ToString());
  82. if (total == 1)
  83. {
  84. checkBox1.Checked = true;
  85. }
  86. else
  87. {
  88. checkBox1.Checked = false;
  89. }
  90. int zlhrValue = int.Parse(dt_lis.Rows[0]["zlhr"].ToString());
  91. if (zlhrValue == zlhrConstant_true)
  92. {
  93. zlhr = zlhrValue;
  94. }
  95. open_multiple_upload_flag = int.Parse(dt_lis.Rows[0]["open_multiple_upload"].ToString());
  96. lisSource = int.Parse(dt_lis.Rows[0]["lis_source"].ToString());
  97. pacsSource = int.Parse(dt_lis.Rows[0]["pacs_source"].ToString());
  98. }
  99. catch (Exception ex)
  100. {
  101. LogHelper.Info("ex===" + ex.Message);
  102. }
  103. }
  104. private void ShowCheckBox2()
  105. {
  106. XmlDocument xmldoc = new XmlDocument();
  107. string xmlpath = AppDomain.CurrentDomain.BaseDirectory + "Xml.xml";
  108. xmldoc.Load(xmlpath);
  109. string str = xmldoc.SelectSingleNode("/root/key").InnerXml;
  110. if (str == "0")
  111. {
  112. checkBox2.Checked = false;
  113. }
  114. else
  115. {
  116. checkBox2.Checked = true;
  117. }
  118. }
  119. /// <summary>
  120. /// 开机启动
  121. /// </summary>
  122. private void AutoStart()
  123. {
  124. try
  125. {
  126. XmlDocument xmldoc = new XmlDocument();
  127. string xmlpath = AppDomain.CurrentDomain.BaseDirectory + "Xml.xml";
  128. xmldoc.Load(xmlpath);
  129. string str = xmldoc.SelectSingleNode("/root/key").InnerXml;
  130. if (str == "0")
  131. {
  132. string regPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
  133. string path = Application.ExecutablePath.ToLower(); //将当前程序起动路径
  134. string name = System.IO.Path.GetFileName(path); //获得应用程序名称
  135. var regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regPath, true);
  136. if (regKey != null && regKey.GetValue("LisPacsDataUpload") == null)
  137. {
  138. regKey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(regPath);
  139. regKey.SetValue("LisPacsDataUpload", path);
  140. regKey.Close();
  141. }
  142. XmlElement element = (XmlElement)xmldoc.SelectSingleNode("/root/key");
  143. element.InnerText = "1";
  144. xmldoc.Save(xmlpath);
  145. ShowLog = "写入注册表成功。";
  146. this.SetText(ShowLog);
  147. LogHelper.Info("写入注册表成功。");
  148. }
  149. else
  150. {
  151. ShowLog = "不允许此操作!";
  152. this.SetText(ShowLog);
  153. if (checkBox2.Checked)
  154. {
  155. checkBox2.Checked = false;
  156. }
  157. else
  158. {
  159. checkBox2.Checked = true;
  160. }
  161. }
  162. }
  163. catch (Exception ex)
  164. {
  165. //ShowLog = "不允许此操作!";
  166. //this.SetText(ShowLog);
  167. if (checkBox2.Checked)
  168. {
  169. checkBox2.Checked = false;
  170. }
  171. else
  172. {
  173. checkBox2.Checked = true;
  174. }
  175. ShowLog = "写入注册表异常:" + ex.Message;
  176. this.SetText(ShowLog);
  177. LogHelper.Info(ShowLog);
  178. }
  179. }
  180. private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
  181. {
  182. //switch (e.Button)
  183. //{
  184. // case System.Windows.Forms.MouseButtons.Left: //左击
  185. // //判断是否已经最小化于托盘
  186. // if (WindowState == FormWindowState.Minimized)
  187. // {
  188. // //还原窗体显示
  189. // WindowState = FormWindowState.Normal;
  190. // //激活窗体并给予它焦点
  191. // this.Activate();
  192. // //任务栏区显示图标
  193. // this.ShowInTaskbar = true;
  194. // //托盘区图标隐藏
  195. // notifyIcon1.Visible = false;
  196. // }
  197. // break;
  198. // case System.Windows.Forms.MouseButtons.Right:
  199. // //MessageBox.Show("右键");
  200. // break;
  201. //}
  202. }
  203. private void open_click(object sender, EventArgs e)
  204. {
  205. if (WindowState == FormWindowState.Minimized)
  206. {
  207. WindowState = FormWindowState.Normal;
  208. this.Activate();
  209. this.ShowInTaskbar = true;
  210. }
  211. }
  212. private void close_click(object sender, EventArgs e)
  213. {
  214. //this.Close();
  215. LogHelper.Info("程序退出。");
  216. System.Environment.Exit(0);
  217. }
  218. private void Form1_SizeChanged(object sender, EventArgs e)
  219. {
  220. //判断是否选择的是最小化按钮
  221. if (WindowState == FormWindowState.Minimized)
  222. {
  223. //托盘显示图标等于托盘图标对象
  224. //注意notifyIcon1是控件的名字而不是对象的名字
  225. //隐藏任务栏区图标
  226. this.ShowInTaskbar = false;
  227. //图标显示在托盘区
  228. notifyIcon1.Visible = true;
  229. }
  230. }
  231. private void DataUpload(object source, EventArgs e)
  232. {
  233. LogHelper.Info("开始轮询。");
  234. DateTime Date = DateTime.Now;
  235. int time = Date.Hour;
  236. int StartTime = OracleHelper<object>.StartTime();//18
  237. if (time == 0)
  238. {//今日上传数清零
  239. Lis_total = 0;
  240. pacs_total = 0;
  241. }
  242. else if (time < StartTime && time > 7)//
  243. {
  244. ShowLog = "开始轮询时间为[" + StartTime + "]点至明日早上7点,现在是" + time + "点。";
  245. this.SetText(ShowLog);
  246. LogHelper.Info(ShowLog);
  247. if (Directory.Exists(DicLis))
  248. {
  249. Directory.Delete(DicLis, true);
  250. }
  251. if (Directory.Exists(DicPacs))
  252. {
  253. Directory.Delete(DicPacs, true);
  254. }
  255. DelPDF();
  256. return;
  257. }
  258. LogHelper.Info("zlhr=="+zlhr);
  259. if (UploadLis == 1)
  260. {
  261. string name = "LIS1" + Tools.GuidTo16String();
  262. Thread th = new Thread(new ParameterizedThreadStart(CountUpload));
  263. th.IsBackground = true;
  264. th.Name = name;
  265. th.Start(name);
  266. System.Threading.Thread.Sleep(5000);
  267. string name2 = "LIS1" + Tools.GuidTo16String();
  268. Thread th2 = new Thread(new ParameterizedThreadStart(LisUpload));
  269. th2.IsBackground = true;
  270. th2.Name = name2;
  271. th2.Start(name2);
  272. // 开启第二个上传
  273. if (1 == open_multiple_upload_flag)
  274. {
  275. System.Threading.Thread.Sleep(5000);
  276. string name3 = "LIS2" + Tools.GuidTo16String();
  277. Thread th3 = new Thread(new ParameterizedThreadStart(LisUpload2));
  278. th3.IsBackground = true;
  279. th3.Name = name3;
  280. th3.Start(name3);
  281. }
  282. }
  283. // 这里特俗 直接借用时间点控制是否补传
  284. if (StartTime == 7)
  285. {
  286. System.Threading.Thread.Sleep(5000);
  287. string namecompletUpload = "LisCompletUpload" + Tools.GuidTo16String();
  288. Thread thredcompletUpload = new Thread(new ParameterizedThreadStart(LisCompletUpload));
  289. thredcompletUpload.IsBackground = true;
  290. thredcompletUpload.Name = namecompletUpload;
  291. thredcompletUpload.Start(namecompletUpload);
  292. }
  293. if (UploadPacs == 1)//没传影像云的需要上传检查
  294. {
  295. LogHelper.Info("没传影像云的需要上传检查");
  296. Thread thp = new Thread(new ThreadStart(PacsUploadNew));
  297. thp.IsBackground = true;
  298. thp.Name = "PACS" + Tools.GuidTo16String();
  299. thp.Start();
  300. }
  301. }
  302. private object CountLock = new object();
  303. private void CountUpload(object Thname)
  304. {
  305. try
  306. {
  307. lock (CountLock)
  308. {
  309. string Thread_name = "[" + Thname.ToString() + "]";
  310. string bill_url = "http://40.26.204.3:8084/phimp-napi/qyhrApplyInfo/upload";
  311. int success_count = 0;
  312. LogHelper.Info(Thread_name + "上传开单合计开始");
  313. string count_sql = @"select * from bill_project_view";
  314. List<Count> list_count = OracleHelper<Count>.RunQueryList(count_sql);
  315. LogHelper.Info("list_count" + list_count);
  316. if (list_count.Count < 1)
  317. {
  318. LogHelper.Info(Thread_name + "本次开单无数据,等待下一次轮询。");
  319. LogHelper.Info("执行sql:" + count_sql);
  320. }
  321. else
  322. {
  323. for (int i = 0; i < list_count.Count; i++)
  324. {
  325. if (!isAuthorization())
  326. {
  327. continue;
  328. }
  329. Dictionary<string, object> dic_pc = new Dictionary<string, object>();
  330. foreach (var property in list_count[i].GetType().GetProperties())
  331. {
  332. //LogHelper.Info("[count]Name:" + property.Name);
  333. //LogHelper.Info("[count]value:" + property.GetValue(list_count[i], null));
  334. dic_pc.Add(property.Name, property.GetValue(list_count[i], null));
  335. }
  336. string json_count = JsonConvert.SerializeObject(dic_pc);
  337. string json_count_log = json_count;
  338. string vi_count = Tools.GuidTo16String();
  339. json_count = Tools.AESEncrypt(json_count, Tools.pwd, vi_count);
  340. //string res_pacs_pc = Tools.WSCenterData(url, json_count, vi_count, Tools.accessToken, 1);
  341. string res_pacs_pc = string.Empty;
  342. string res_aes_pacs_pc = string.Empty;
  343. try
  344. {
  345. res_pacs_pc = Tools.WSCenterData(bill_url, json_count, vi_count, Tools.accessToken, 1);
  346. res_aes_pacs_pc = Tools.AESDecrypt(res_pacs_pc, Tools.pwd, vi_count);
  347. }
  348. catch (Exception e)
  349. {
  350. LogHelper.Error(e,"开单项目上传异常");
  351. LogHelper.Error(e, "开单项目上传异常 res_aes_pacs_pc"+ res_aes_pacs_pc);
  352. continue;
  353. }
  354. ResPacs respacs_pc = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs_pc), Encoding.UTF8);
  355. if (respacs_pc.statusCode != "1")
  356. {
  357. ShowLog = respacs_pc.message + ",[LIS]清单数据上传异常!跳过本条数据上传下一条,偏移量为:" + vi_count;
  358. this.SetText(ShowLog);
  359. LogHelper.Info(ShowLog);
  360. LogHelper.Info("[count]出错入参:" + json_count_log);
  361. LogHelper.Info("[LIS]出错入参:" + json_count + "|....|" + Tools.accessToken);
  362. LogHelper.Info("[count]出错出参:" + res_aes_pacs_pc);
  363. continue;
  364. }
  365. else
  366. {
  367. // LogHelper.Info(success_count + "入参:" + json_count_log);
  368. //LogHelper.Info(success_count + "出参:" + respacs_pc.message);
  369. //修改状态
  370. string sql_upload = @"update 互认开单项目 set 是否上传 = 1,上传时间 = to_date('{1}','yyyy/mm/dd hh24:mi:ss') where 相关id = '{0}'";
  371. sql_upload = string.Format(sql_upload, list_count[i].HISAPPLYCODE, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  372. int upload_count = OracleHelper<object>.ExecuteNonQuery(sql_upload);
  373. LogHelper.Info("清单上传"+ upload_count);
  374. success_count++;
  375. }
  376. }
  377. LogHelper.Info("本次清单上传全部结束一共:" + success_count);
  378. }
  379. }
  380. }
  381. catch (Exception e)
  382. {
  383. LogHelper.Error(e);
  384. }
  385. }
  386. private object LisLock = new object();
  387. private object LisLockComplet = new object();
  388. private void LisUpload(object Thname)
  389. {
  390. try
  391. {
  392. lock (LisLock)
  393. {
  394. string Thread_name = "[" + Thname.ToString() + "]";
  395. #region 1、单条上传lis文件及数据
  396. LogHelper.Info(Thread_name + "[LIS]开始");
  397. string lis_sql = @"select * from( Select rownum rn,b.* From (Select t.* from lis_upload t
  398. Where
  399. t.attachmentId Is Null
  400. ) b
  401. ) where rn <= 150 ";
  402. DataTable dt = new DataTable();
  403. if (zlhr == zlhrConstant_true)
  404. {
  405. lis_sql = @"Select t.* from lis_upload t Where t.attachmentId Is Null
  406. Order By t.AUDITTIME desc limit 100";
  407. dt = OracleHelper<object>.PgQueryDS(lis_sql);
  408. }
  409. else
  410. {
  411. dt = OracleHelper<object>.RunQueryDS(lis_sql);
  412. }
  413. LogHelper.Info("执行sql:" + lis_sql);
  414. if (dt.Rows.Count < 1)
  415. {
  416. LogHelper.Info(Thread_name + "本次[LIS]无数据,等待下一次轮询。");
  417. }
  418. else
  419. {
  420. ShowLog = Thread_name + "本次需上传[LIS]数据总条数为[" + dt.Rows.Count + "]条,逐条上传中,请耐心等待。";
  421. this.SetText(ShowLog);
  422. LogHelper.Info(ShowLog);
  423. int pdfcountAll = 0;
  424. int uploaded = 0;
  425. for (int i = 0; i < dt.Rows.Count; i++)
  426. {
  427. string reportId = dt.Rows[i]["reportId"].ToString();
  428. string requestId = dt.Rows[i]["requestId"].ToString();
  429. //生成pdf
  430. string generatePdfUrl = "未生成pdf成功";
  431. if (zlhr == zlhrConstant_true)
  432. {
  433. // 临生免报告id requestId
  434. string sql_zlhr = @"select dr.id as id from specimen_rec sr, diagnosticreport_rec dr where sr.id = dr.specmids::int
  435. and dr.status in ('3003', '3004') and sr.id = " + requestId;
  436. DataTable dt_lis = OracleHelper<object>.PgQueryDS(sql_zlhr);
  437. string id = dt_lis.Rows[0]["id"].ToString();
  438. generatePdfUrl = PdfUtils.GeneratePdf(lisSource, id, id, null);
  439. }
  440. else if(lisSource==3){
  441. // 申请id requestId
  442. generatePdfUrl = PdfUtils.GeneratePdf(lisSource, reportId, requestId, null);
  443. if (!generatePdfUrl.Contains(".pdf"))
  444. {
  445. LogHelper.Info("生成pdf失败,原因是 = " + generatePdfUrl);
  446. ShowLog = "生成pdf失败,原因是 =" + generatePdfUrl;
  447. this.SetText(ShowLog);
  448. continue;
  449. }
  450. }
  451. else if (lisSource == 10)
  452. {
  453. // 申请id requestId
  454. string pdfUrl = dt.Rows[i]["pdfUrl"].ToString(); // 三方pdf地址 需要下载
  455. generatePdfUrl = PdfUtils.GeneratePdf(lisSource, pdfUrl, requestId,null);
  456. if (string.IsNullOrEmpty(generatePdfUrl))
  457. {
  458. LogHelper.Info("生成pdf失败,原因是 = " + generatePdfUrl);
  459. ShowLog = "生成pdf失败,原因是 =" + generatePdfUrl;
  460. this.SetText(ShowLog);
  461. continue;
  462. }
  463. }
  464. else
  465. {
  466. // 申请id requestId
  467. //获取标本号 和报表编号
  468. //报告编号 reportNumber
  469. string reportNumber = dt.Rows[i]["reportNumber"].ToString();
  470. string bbid = dt.Rows[i]["bbid"].ToString(); // 标本id
  471. generatePdfUrl = PdfUtils.GeneratePdf(lisSource, reportNumber, bbid, requestId);
  472. if (!generatePdfUrl.Contains(".pdf"))
  473. {
  474. LogHelper.Info("生成pdf失败,原因是 = " + generatePdfUrl);
  475. ShowLog = "生成pdf失败,原因是 =" + generatePdfUrl;
  476. this.SetText(ShowLog);
  477. continue;
  478. }
  479. }
  480. //是否授权
  481. if (!isAuthorization())
  482. {
  483. continue;
  484. }
  485. //最新调整 需要获取 原始pdf 文件 存在场景 有三方lis、中联lis 、 以及专业版临生免 的报告 三种
  486. string attachmentFile = "";
  487. if (zlhr == zlhrConstant_true)
  488. {
  489. attachmentFile = generatePdfUrl;
  490. }
  491. else
  492. {
  493. LogHelper.Info("generatePdfUrl=" + generatePdfUrl);
  494. attachmentFile = Tools.FileToBase64Str(generatePdfUrl);
  495. }
  496. //LogHelper.Info("上传的文件类容==" + attachmentFile);
  497. //上传文件
  498. string file_json = "{\"attachmentType\":\".pdf\",\"attachmentName\":\"检验报告\",\"businessType\":\"A001\",\"attachmentFile\":\"" + attachmentFile + "\"}";
  499. string file_json_string = file_json;
  500. string file_vi = Tools.GuidTo16String();
  501. file_json = Tools.AESEncrypt(file_json, Tools.pwd, file_vi);
  502. //string file_url = "http://40.26.204.3:8084/phimp-napi/attachMent/upload";
  503. //string file_res = Tools.WSCenterData(file_url, file_json, file_vi, Tools.accessToken, 1);
  504. string file_res = string.Empty;
  505. string file_res_aes = string.Empty;
  506. try
  507. {
  508. file_res = Tools.WSCenterData(file_url, file_json, file_vi, Tools.accessToken, 1);
  509. file_res_aes = Tools.AESDecrypt(file_res, Tools.pwd, file_vi);
  510. }catch (Exception e)
  511. {
  512. LogHelper.Info("1上传报告异常");
  513. LogHelper.Info("file_res=="+ file_res);
  514. //写入后台表机构记录上传错误的数据
  515. string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,REASON,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}','{3}','{4}','{5}',0,to_date('{6}','yyyy/mm/dd hh24:mi:ss'))";
  516. errSql = string.Format(errSql, dt.Rows[i]["businessNumber"].ToString(), dt.Rows[i]["reportId"].ToString(), null, null,e.Message, file_vi, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  517. int err_count = 0;
  518. if (zlhr == zlhrConstant_true)
  519. {
  520. LogHelper.Info("errSql:" + errSql);
  521. err_count = OracleHelper<object>.PgExecuteNonQuery(errSql);
  522. }
  523. else
  524. {
  525. err_count = OracleHelper<object>.ExecuteNonQuery(errSql);
  526. }
  527. LogHelper.Info("写入后台表机构记录上传错误的数据" + err_count);
  528. LogHelper.Info(e.Message);
  529. continue;
  530. }
  531. LogHelper.Info("file_res_aes==="+ file_res_aes);
  532. ResFile resfile = Tools.JsonToObject<ResFile>(Tools.FormatStr(file_res_aes), Encoding.UTF8);
  533. if (resfile.statusCode != "1")
  534. {
  535. LogHelper.Info(resfile.message + ",[LIS]PDF文件上传失败!跳过本条数据上传下一条。");
  536. LogHelper.Info("入参:" + file_json);
  537. LogHelper.Info("出参:" + file_res_aes);
  538. ShowLog = "入参:" + file_json + ",出参:" + file_res_aes + ",[LIS]PDF文件上传失败!跳过本条数据上传下一条。";
  539. this.SetText(ShowLog);
  540. continue;
  541. }
  542. string sql = @"Insert Into 已上传PDF(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}',0,to_date('{3}','yyyy/mm/dd hh24:mi:ss'))";
  543. sql = string.Format(sql, dt.Rows[i]["businessNumber"].ToString(), dt.Rows[i]["reportId"].ToString(), resfile.mainBody.attachmentId, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  544. int file_count = 0;
  545. if (zlhr == zlhrConstant_true)
  546. {
  547. LogHelper.Info("sql:" + sql);
  548. file_count = OracleHelper<object>.PgExecuteNonQuery(sql);
  549. }
  550. else
  551. {
  552. file_count = OracleHelper<object>.ExecuteNonQuery(sql);
  553. }
  554. if (file_count < 1)
  555. {
  556. LogHelper.Info("[LIS]新增表【已上传PDF】失败,跳过本条数据上传下一条!");
  557. LogHelper.Info("执行sql:" + sql);
  558. ShowLog = "[LIS]新增表【已上传PDF】失败,跳过本条数据上传下一条!执行sql:" + sql;
  559. this.SetText(ShowLog);
  560. continue;
  561. }
  562. pdfcountAll += 1;
  563. string businessNumber = dt.Rows[i]["businessNumber"].ToString();
  564. //string reportId = dt.Rows[i]["reportId"].ToString();
  565. //上传lis数据
  566. string item_sql = @"select a.orgCode,
  567. a.orgName,
  568. a.orgThrdCode,
  569. a.reportId,
  570. a.reportName,
  571. a.requestId,
  572. a.barcode,
  573. a.sampleNo,
  574. a.businessNumber,
  575. a.patientType,
  576. a.patientName,
  577. a.patientSex,
  578. a.patientBirthday,
  579. a.patientAge,
  580. a.ageUnit,
  581. a.patientIdCard,
  582. a.inpatientAreaName,
  583. a.roomNo,
  584. a.bedNo,
  585. a.phoneNo,
  586. a.address,
  587. a.reportType,
  588. a.reportTypeName,
  589. a.sampCode,
  590. a.sampName,
  591. a.diagnosisCode,
  592. a.diagnosisName,
  593. a.resultType,
  594. a.applyTime,
  595. a.applyerCode,
  596. a.applyerName,
  597. a.applyDeptCode,
  598. a.applyDeptName,
  599. a.collectTime,
  600. a.collectCode,
  601. a.collectName,
  602. a.transportCode,
  603. a.transportName,
  604. a.transportDeptCode,
  605. a.transportDeptName,
  606. a.transportOrgCode,
  607. a.transportOrgName,
  608. a.acceptTime,
  609. a.acceptorCode,
  610. a.acceptorName,
  611. a.receiveTime,
  612. a.receiverCode,
  613. a.receiverName,
  614. a.checkTime,
  615. a.checkerCode,
  616. a.checkerName,
  617. a.checkDeptCode,
  618. a.checkDeptName,
  619. a.auditTime,
  620. a.auditorCode,
  621. a.auditorName,
  622. a.reportTime,
  623. a.reportorCode,
  624. a.reportorName,
  625. a.sampleNotes,
  626. a.checkPrice,
  627. b.attachmentId,
  628. a.patientId ,
  629. a.healthNo ,
  630. a.medicareNo ,
  631. a.socialNo ,
  632. a.inpatientAreaCode ,
  633. a.sampleName ,
  634. a.execHospitalCode ,
  635. a.execHospitalName,
  636. a.sameHospital,
  637. a.projectCode,
  638. a.projectName
  639. from lis_upload a ,已上传PDF b
  640. where b.businessnumber = a.BUSINESSNUMBER
  641. and b.reportid = a.REPORTID
  642. and b.attachmentid is not null
  643. and b.uploaded = 0
  644. and b.type = 2
  645. and a.BUSINESSNUMBER = '{0}'
  646. and a.REPORTID = '{1}'";
  647. item_sql = string.Format(item_sql, businessNumber, reportId);
  648. List<LIS> list = new List<LIS>();
  649. if (zlhr == zlhrConstant_true)
  650. {
  651. list = OracleHelper<LIS>.PgRunQueryList(item_sql);
  652. }
  653. else
  654. {
  655. list = OracleHelper<LIS>.RunQueryList(item_sql);
  656. }
  657. if (list.Count < 1)
  658. {
  659. LogHelper.Info("查询LIS数据为空,跳过本条数据上传下一条。");
  660. LogHelper.Info("执行sql:" + item_sql);
  661. continue;
  662. }
  663. List<Dictionary<string, object>> plist = new List<Dictionary<string, object>>();
  664. Dictionary<string, object> dic = new Dictionary<string, object>();
  665. foreach (var property in list[0].GetType().GetProperties())
  666. {
  667. dic.Add(property.Name, property.GetValue(list[0], null));
  668. }
  669. string lisitems_sql = @"Select * From lis_upload_items t Where t.groupItemCode = '" + list[0].REPORTID + "'";
  670. List<LISITEMS> lisitems = new List<LISITEMS>();
  671. if (zlhr == zlhrConstant_true)
  672. {
  673. lisitems = OracleHelper<LISITEMS>.PgRunQueryList(lisitems_sql);
  674. }
  675. else
  676. {
  677. lisitems = OracleHelper<LISITEMS>.RunQueryList(lisitems_sql);
  678. }
  679. if (lisitems.Count < 1)
  680. {
  681. LogHelper.Info("查询LIS项目指标数据为空,跳过本条数据上传下一条。");
  682. LogHelper.Info("执行sql:" + lisitems_sql);
  683. continue;
  684. }
  685. if (zlhr == zlhrConstant_true)
  686. {
  687. //处理 互认编码的数据
  688. HandleLisItemDataForWebLis(lisitems);
  689. }
  690. dic.Add("DETAILLIST", lisitems);
  691. plist.Add(dic);
  692. //是否授权
  693. if (!isAuthorization())
  694. {
  695. continue;
  696. }
  697. string json_pacs = JsonConvert.SerializeObject(plist);
  698. json_pacs = "{\"mainBody\":" + json_pacs + "}";
  699. string json_pacs_log = json_pacs;
  700. string vi_pacs = Tools.GuidTo16String();
  701. json_pacs = Tools.AESEncrypt(json_pacs, Tools.pwd, vi_pacs);
  702. string res_pacs = string.Empty;
  703. string res_aes_pacs = string.Empty;
  704. try {
  705. res_pacs = Tools.WSCenterData(lis_upload_url, json_pacs, vi_pacs, Tools.accessToken, 1);
  706. res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
  707. }
  708. catch (Exception e)
  709. {
  710. //写入后台表机构记录上传错误的数据
  711. string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,REASON,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}','{3}','{4}','{5}',0,to_date('{6}','yyyy/mm/dd hh24:mi:ss'))";
  712. errSql = string.Format(errSql, businessNumber, reportId, resfile.mainBody.attachmentId,null,e.Message, vi_pacs, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  713. int err_count = 0;
  714. if (zlhr == zlhrConstant_true)
  715. {
  716. LogHelper.Info("errSql:" + errSql);
  717. err_count = OracleHelper<object>.PgExecuteNonQuery(errSql);
  718. }
  719. else
  720. {
  721. err_count = OracleHelper<object>.ExecuteNonQuery(errSql);
  722. }
  723. LogHelper.Info("写入后台表机构记录上传错误的数据" + err_count);
  724. LogHelper.Info( e.Message);
  725. continue;
  726. }
  727. ResPacs respacs = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs), Encoding.UTF8);
  728. LogHelper.Info(reportId+":lis1上传检验报告的接口状态==" + JsonConvert.SerializeObject(respacs));
  729. if (respacs.statusCode != "1")
  730. {
  731. ShowLog = respacs.message + ",[LIS]数据上传异常!跳过本条数据上传下一条,偏移量为:reportId=" + reportId;
  732. this.SetText(ShowLog);
  733. LogHelper.Info(ShowLog);
  734. LogHelper.Info("[LIS]出错入参:" + json_pacs_log);
  735. LogHelper.Info("[LIS]出错出参:" + res_aes_pacs);
  736. continue;
  737. }
  738. else
  739. {
  740. Lis_total += 1;
  741. uploaded += 1;//(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,UPLOADED) Values('{0}','{1}',2,'{2}',0)
  742. string sql_upload = @"update 已上传PDF set UPLOADED = 1,UPLOADE_TIME = to_date('{2}','yyyy/mm/dd hh24:mi:ss') where type = 2
  743. and BUSINESSNUMBER = '{0}'
  744. and REPORTID = '{1}'";
  745. sql_upload = string.Format(sql_upload, list[0].BUSINESSNUMBER, list[0].REPORTID, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  746. int upload_count = 0;
  747. if (zlhr == zlhrConstant_true)
  748. {
  749. upload_count = OracleHelper<object>.PgExecuteNonQuery(sql_upload);
  750. }
  751. else
  752. {
  753. upload_count = OracleHelper<object>.ExecuteNonQuery(sql_upload);
  754. }
  755. if (upload_count < 1)
  756. {
  757. LogHelper.Info("[LIS]更新表【已上传PDF】失败,跳过本条数据上传下一条!");
  758. LogHelper.Info("执行sql:" + sql_upload);
  759. ShowLog = "[LIS]新增表【已上传PDF】失败,跳过本条数据上传下一条!执行sql:" + sql_upload;
  760. this.SetText(ShowLog);
  761. continue;
  762. }
  763. }
  764. }
  765. ShowLog = Thread_name + "本次已生成、上传[LIS]PDF文件总条数为[" + pdfcountAll + "]条,上传[LIS]总条数为[" + uploaded + "]条。";
  766. this.SetText(ShowLog);
  767. LogHelper.Info(ShowLog);
  768. GetLisDefault();
  769. }
  770. #endregion
  771. #region 2、补传失败lis数据
  772. LogHelper.Info("补传lis数据开始");
  773. ShowLog = Thread_name + "补传lis数据开始";
  774. this.SetText(ShowLog);
  775. this.SetText("补传lis数据开始");
  776. int count_pc = 0;
  777. string pc_sql = @"select * from lis_complet_upload ";
  778. LogHelper.Info("补传lis数据执行sql:" + pc_sql);
  779. List<LIS> list_pc = new List<LIS>();
  780. if (zlhr == zlhrConstant_true)
  781. {
  782. list_pc = OracleHelper<LIS>.PgRunQueryList(pc_sql);
  783. }
  784. else
  785. {
  786. list_pc = OracleHelper<LIS>.RunQueryList(pc_sql);
  787. }
  788. if (list_pc.Count < 1)
  789. {
  790. LogHelper.Info("查询补传[LIS]数据为空,等待下一次轮询。"+ list_pc.Count);
  791. return;
  792. }
  793. for (int i = 0; i < list_pc.Count; i++)
  794. {
  795. List<Dictionary<string, object>> plist_pc = new List<Dictionary<string, object>>();
  796. Dictionary<string, object> dic_pc = new Dictionary<string, object>();
  797. foreach (var property in list_pc[i].GetType().GetProperties())
  798. {
  799. dic_pc.Add(property.Name, property.GetValue(list_pc[i], null));
  800. }
  801. string lisitems_sql = @"Select * From lis_upload_items t Where t.groupItemCode = '" + list_pc[i].REPORTID +"'";
  802. List<LISITEMS> lisitems = OracleHelper<LISITEMS>.RunQueryList(lisitems_sql);
  803. if (zlhr == zlhrConstant_true)
  804. {
  805. lisitems = OracleHelper<LISITEMS>.PgRunQueryList(lisitems_sql);
  806. }
  807. else
  808. {
  809. lisitems = OracleHelper<LISITEMS>.RunQueryList(lisitems_sql);
  810. }
  811. if (lisitems.Count < 1)
  812. {
  813. LogHelper.Info("补传查询LIS项目指标数据为空,跳过本条数据上传下一条。");
  814. LogHelper.Info("执行sql:" + lisitems_sql);
  815. continue;
  816. }
  817. if (zlhr == zlhrConstant_true)
  818. {
  819. //处理 互认编码的数据
  820. HandleLisItemDataForWebLis(lisitems);
  821. }
  822. dic_pc.Add("DETAILLIST", lisitems);
  823. plist_pc.Add(dic_pc);
  824. //是否授权
  825. if (!isAuthorization())
  826. {
  827. continue;
  828. }
  829. string json_pacs_pc = JsonConvert.SerializeObject(plist_pc);
  830. json_pacs_pc = "{\"mainBody\":" + json_pacs_pc + "}";
  831. string json_pacs_log_pc = json_pacs_pc;
  832. string vi_pacs_pc = Tools.GuidTo16String();
  833. json_pacs_pc = Tools.AESEncrypt(json_pacs_pc, Tools.pwd, vi_pacs_pc);
  834. //string url_pacs = "http://40.26.204.3:8084/phimp-napi/qyhrlischeckreportinfo/save";
  835. //string res_pacs_pc = Tools.WSCenterData(url, json_pacs_pc, vi_pacs_pc, Tools.accessToken, 1);
  836. string res_pacs_pc = string.Empty;
  837. string res_aes_pacs_pc = string.Empty;
  838. try
  839. {
  840. res_pacs_pc = Tools.WSCenterData(lis_upload_url, json_pacs_pc, vi_pacs_pc, Tools.accessToken, 1);
  841. res_aes_pacs_pc = Tools.AESDecrypt(res_pacs_pc, Tools.pwd, vi_pacs_pc);
  842. }
  843. catch (Exception e)
  844. {
  845. //写入后台表机构记录上传错误的数据
  846. string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,REASON,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}','{3}','{4}','{5}',0,to_date('{6}','yyyy/mm/dd hh24:mi:ss'))";
  847. errSql = string.Format(errSql, dt.Rows[i]["businessNumber"].ToString(), dt.Rows[i]["reportId"].ToString(), null, null,e.Message, vi_pacs_pc, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  848. int err_count = 0;
  849. if (zlhr == zlhrConstant_true)
  850. {
  851. LogHelper.Info("errSql:" + errSql);
  852. err_count = OracleHelper<object>.PgExecuteNonQuery(errSql);
  853. }
  854. else
  855. {
  856. err_count = OracleHelper<object>.ExecuteNonQuery(errSql);
  857. }
  858. LogHelper.Info("写入后台表机构记录上传错误的数据" + err_count);
  859. LogHelper.Info(e.Message);
  860. continue;
  861. }
  862. ResPacs respacs_pc = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs_pc), Encoding.UTF8);
  863. if (respacs_pc.statusCode != "1")
  864. {
  865. ShowLog = respacs_pc.message + ",补传[LIS]数据上传异常!跳过本条数据上传下一条,偏移量为:reportId=" + list_pc[i].REPORTID;
  866. this.SetText(ShowLog);
  867. LogHelper.Info(ShowLog);
  868. LogHelper.Info("[LIS]出错入参:" + json_pacs_log_pc);
  869. LogHelper.Info("[LIS]出错出参:" + res_aes_pacs_pc);
  870. continue;
  871. }
  872. else
  873. {
  874. Lis_total += 1;
  875. count_pc += 1;//(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,UPLOADED) Values('{0}','{1}',2,'{2}',0)
  876. string sql_upload = @"update 已上传PDF set UPLOADED = 1,UPLOADE_TIME = to_date('{2}','yyyy/mm/dd hh24:mi:ss') where type = 2
  877. and BUSINESSNUMBER = '{0}'
  878. and REPORTID = '{1}'";
  879. sql_upload = string.Format(sql_upload, list_pc[i].BUSINESSNUMBER, list_pc[i].REPORTID, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  880. int upload_count = 0;
  881. if (zlhr==zlhrConstant_true)
  882. {
  883. upload_count = OracleHelper<object>.PgExecuteNonQuery(sql_upload);
  884. }
  885. else
  886. {
  887. upload_count = OracleHelper<object>.ExecuteNonQuery(sql_upload);
  888. }
  889. if (upload_count < 1)
  890. {
  891. LogHelper.Info("补传[LIS]更新表【已上传PDF】失败,跳过本条数据上传下一条!");
  892. LogHelper.Info("执行sql:" + sql_upload);
  893. ShowLog = "补传[LIS]新增表【已上传PDF】失败,跳过本条数据上传下一条!执行sql:" + sql_upload;
  894. this.SetText(ShowLog);
  895. continue;
  896. }
  897. }
  898. ShowLog = Thread_name + "补传第"+i+"条数据成功:医嘱id=" + list_pc[i].REPORTID;
  899. this.SetText(ShowLog);
  900. }
  901. if (count_pc > 0)
  902. {
  903. ShowLog = Thread_name + "本次补传[LIS]数据为[" + count_pc + "]条,等待下一次轮询。";
  904. this.SetText(ShowLog);
  905. LogHelper.Info(ShowLog);
  906. GetLisDefault();
  907. }
  908. #endregion
  909. }
  910. }
  911. catch (Exception ex)
  912. {
  913. LogHelper.Error(ex);
  914. }
  915. }
  916. private void LisCompletUpload(object Thname)
  917. {
  918. try
  919. {
  920. lock (LisLockComplet)
  921. {
  922. string Thread_name = "[" + Thname.ToString() + "]";
  923. #region 2、补传失败lis数据
  924. LogHelper.Info("LisCompletUpload补传lis数据开始");
  925. ShowLog = Thread_name + "LisCompletUpload补传lis数据开始";
  926. this.SetText(ShowLog);
  927. this.SetText("补传lis数据开始");
  928. int count_pc = 0;
  929. string pc_sql = @"select * from lis_complet_upload ";
  930. LogHelper.Info("补传lis数据执行sql:" + pc_sql);
  931. List<LIS> list_pc = new List<LIS>();
  932. if (zlhr == zlhrConstant_true)
  933. {
  934. list_pc = OracleHelper<LIS>.PgRunQueryList(pc_sql);
  935. }
  936. else
  937. {
  938. list_pc = OracleHelper<LIS>.RunQueryList(pc_sql);
  939. }
  940. if (list_pc.Count < 1)
  941. {
  942. LogHelper.Info("查询补传[LIS]数据为空,等待下一次轮询。" + list_pc.Count);
  943. return;
  944. }
  945. for (int i = 0; i < list_pc.Count; i++)
  946. {
  947. List<Dictionary<string, object>> plist_pc = new List<Dictionary<string, object>>();
  948. Dictionary<string, object> dic_pc = new Dictionary<string, object>();
  949. foreach (var property in list_pc[i].GetType().GetProperties())
  950. {
  951. dic_pc.Add(property.Name, property.GetValue(list_pc[i], null));
  952. }
  953. string lisitems_sql = @"Select * From lis_upload_items t Where t.groupItemCode = '" + list_pc[i].REPORTID + "'";
  954. List<LISITEMS> lisitems = OracleHelper<LISITEMS>.RunQueryList(lisitems_sql);
  955. if (zlhr == zlhrConstant_true)
  956. {
  957. lisitems = OracleHelper<LISITEMS>.PgRunQueryList(lisitems_sql);
  958. }
  959. else
  960. {
  961. lisitems = OracleHelper<LISITEMS>.RunQueryList(lisitems_sql);
  962. }
  963. if (lisitems.Count < 1)
  964. {
  965. LogHelper.Info("补传查询LIS项目指标数据为空,跳过本条数据上传下一条。");
  966. LogHelper.Info("执行sql:" + lisitems_sql);
  967. continue;
  968. }
  969. if (zlhr == zlhrConstant_true)
  970. {
  971. //处理 互认编码的数据
  972. HandleLisItemDataForWebLis(lisitems);
  973. }
  974. dic_pc.Add("DETAILLIST", lisitems);
  975. plist_pc.Add(dic_pc);
  976. //是否授权
  977. if (!isAuthorization())
  978. {
  979. continue;
  980. }
  981. string json_pacs_pc = JsonConvert.SerializeObject(plist_pc);
  982. json_pacs_pc = "{\"mainBody\":" + json_pacs_pc + "}";
  983. //LogHelper.Info("上传data" +json_pacs_pc);
  984. string json_pacs_log_pc = json_pacs_pc;
  985. string vi_pacs_pc = Tools.GuidTo16String();
  986. json_pacs_pc = Tools.AESEncrypt(json_pacs_pc, Tools.pwd, vi_pacs_pc);
  987. //string url_pacs = "http://40.26.204.3:8084/phimp-napi/qyhrlischeckreportinfo/save";
  988. //string res_pacs_pc = Tools.WSCenterData(url, json_pacs_pc, vi_pacs_pc, Tools.accessToken, 1);
  989. string res_pacs_pc = string.Empty;
  990. string res_aes_pacs_pc = string.Empty;
  991. try
  992. {
  993. res_pacs_pc = Tools.WSCenterData(lis_upload_url, json_pacs_pc, vi_pacs_pc, Tools.accessToken, 1);
  994. res_aes_pacs_pc = Tools.AESDecrypt(res_pacs_pc, Tools.pwd, vi_pacs_pc);
  995. }
  996. catch (Exception e)
  997. {
  998. //写入后台表机构记录上传错误的数据
  999. string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,REASON,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}','{3}','{4}','{5}',0,to_date('{6}','yyyy/mm/dd hh24:mi:ss'))";
  1000. errSql = string.Format(errSql, list_pc[i].BUSINESSNUMBER, list_pc[i].REPORTID, null, null,e.Message, vi_pacs_pc, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  1001. int err_count = 0;
  1002. if (zlhr == zlhrConstant_true)
  1003. {
  1004. LogHelper.Info("errSql:" + errSql);
  1005. err_count = OracleHelper<object>.PgExecuteNonQuery(errSql);
  1006. }
  1007. else
  1008. {
  1009. err_count = OracleHelper<object>.ExecuteNonQuery(errSql);
  1010. }
  1011. LogHelper.Info("写入后台表机构记录上传错误的数据" + err_count);
  1012. LogHelper.Info(e.Message);
  1013. continue;
  1014. }
  1015. ResPacs respacs_pc = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs_pc), Encoding.UTF8);
  1016. if (respacs_pc.statusCode != "1")
  1017. {
  1018. ShowLog = respacs_pc.message + ",补传[LIS]数据上传异常!跳过本条数据上传下一条,偏移量为:REPORTID=" + list_pc[i].REPORTID;
  1019. this.SetText(ShowLog);
  1020. LogHelper.Info(ShowLog);
  1021. LogHelper.Info("[LIS]出错入参:" + json_pacs_log_pc);
  1022. LogHelper.Info("[LIS]出错出参:" + res_aes_pacs_pc);
  1023. continue;
  1024. }
  1025. else
  1026. {
  1027. Lis_total += 1;
  1028. count_pc += 1;//(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,UPLOADED) Values('{0}','{1}',2,'{2}',0)
  1029. string sql_upload = @"update 已上传PDF set UPLOADED = 1,UPLOADE_TIME = to_date('{2}','yyyy/mm/dd hh24:mi:ss') where type = 2
  1030. and BUSINESSNUMBER = '{0}'
  1031. and REPORTID = '{1}'";
  1032. sql_upload = string.Format(sql_upload, list_pc[i].BUSINESSNUMBER, list_pc[i].REPORTID, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  1033. int upload_count = 0;
  1034. if (zlhr == zlhrConstant_true)
  1035. {
  1036. upload_count = OracleHelper<object>.PgExecuteNonQuery(sql_upload);
  1037. }
  1038. else
  1039. {
  1040. upload_count = OracleHelper<object>.ExecuteNonQuery(sql_upload);
  1041. }
  1042. if (upload_count < 1)
  1043. {
  1044. LogHelper.Info("补传[LIS]更新表【已上传PDF】失败,跳过本条数据上传下一条!");
  1045. LogHelper.Info("执行sql:" + sql_upload);
  1046. ShowLog = "补传[LIS]新增表【已上传PDF】失败,跳过本条数据上传下一条!执行sql:" + sql_upload;
  1047. this.SetText(ShowLog);
  1048. continue;
  1049. }
  1050. }
  1051. ShowLog = Thread_name + "补传第" + i + "条数据成功:医嘱id=" + list_pc[i].REPORTID;
  1052. this.SetText(ShowLog);
  1053. }
  1054. if (count_pc > 0)
  1055. {
  1056. ShowLog = Thread_name + "本次补传[LIS]数据为[" + count_pc + "]条,等待下一次轮询。";
  1057. this.SetText(ShowLog);
  1058. LogHelper.Info(ShowLog);
  1059. GetLisDefault();
  1060. }
  1061. #endregion
  1062. }
  1063. }
  1064. catch (Exception ex)
  1065. {
  1066. LogHelper.Error(ex);
  1067. }
  1068. }
  1069. private void HandleLisItemDataForWebLis(List<LISITEMS> items)
  1070. {
  1071. //处理 互认编码的数据
  1072. foreach (LISITEMS item in items)
  1073. {
  1074. string OBVID = item.OBVID;
  1075. string sqlhis = @"select 代码 from zllpmr.字典对码表 where 分类 = '检验互认项目' and 编码 ='{0}'";
  1076. sqlhis = string.Format(sqlhis, OBVID);
  1077. DataTable dtYbCode = OracleHelper<object>.RunQueryDS(sqlhis);
  1078. if (dtYbCode.Rows.Count > 0)
  1079. {
  1080. //取出诊疗项目id 取获取收费项目的医保编码 并赋值
  1081. item.STANDARDITEMID = dtYbCode.Rows[0]["代码"].ToString();
  1082. }
  1083. }
  1084. }
  1085. //处理编码的数据 为医保编码数据
  1086. private void HandleLisItemData(List<LISITEMS> items)
  1087. {
  1088. //处理 互认编码的数据
  1089. foreach (LISITEMS item in items)
  1090. {
  1091. string ITEMCODE = item.ITEMCODE;
  1092. string sqlhis = @"Select l.医保编码 From 诊疗项目目录 x,诊疗收费关系 y,收费项目目录 z,保险支付项目 m,互认项目清单 l
  1093. Where y.诊疗项目id = x.id And z.id = y.收费项目id And m.收费细目id = z.Id And l.医保通用编码 = m.项目编码 And Rownum = 1
  1094. And x.类别 = 'C' And m.险类 = 111
  1095. And x.编码 ='{0}'";
  1096. sqlhis = string.Format(sqlhis, ITEMCODE);
  1097. DataTable dtYbCode = OracleHelper<object>.RunQueryDS(sqlhis);
  1098. if (dtYbCode.Rows.Count > 0)
  1099. {
  1100. //取出诊疗项目id 取获取收费项目的医保编码 并赋值
  1101. item.STANDARDITEMID = dtYbCode.Rows[0]["医保编码"].ToString();
  1102. }
  1103. // 复制 报告id
  1104. /* string ITEMCODE = item.STANDARDITEMID;
  1105. string sqlhis = @"Select l.医保编码 From 诊疗项目目录 x,诊疗收费关系 y,收费项目目录 z,保险支付项目 m,互认项目清单 l
  1106. Where y.诊疗项目id = x.id And z.id = y.收费项目id And m.收费细目id = z.Id And l.医保通用编码 = m.项目编码 And Rownum = 1
  1107. And x.类别 = 'C' And m.险类 = 111
  1108. And x.编码 ='{0}'";
  1109. sqlhis = string.Format(sqlhis, ITEMCODE);
  1110. DataTable dtYbCode = OracleHelper<object>.RunQueryDS(sqlhis);
  1111. if (dtYbCode.Rows.Count > 0)
  1112. {
  1113. //取出诊疗项目id 取获取收费项目的医保编码 并赋值
  1114. item.STANDARDITEMID = dtYbCode.Rows[0]["医保编码"].ToString();
  1115. }*/
  1116. }
  1117. }
  1118. private object LisLock2 = new object();
  1119. private void LisUpload2(object Thname)
  1120. {
  1121. try
  1122. {
  1123. lock (LisLock2)
  1124. {
  1125. string Thread_name = "[" + Thname.ToString() + "]";
  1126. #region 1、单条上传lis文件及数据
  1127. LogHelper.Info(Thread_name + "[LIS]开始");
  1128. string lis_sql = @"select * from( Select rownum rn,b.* From (Select t.* from lis_upload t
  1129. Where
  1130. t.attachmentId Is Null
  1131. ) b
  1132. ) where rn <300 and rn >150 ";
  1133. DataTable dt = new DataTable();
  1134. if (zlhr == zlhrConstant_true)
  1135. {
  1136. /*limit 100 offset 100*/
  1137. lis_sql = @"Select t.* from lis_upload t Where t.attachmentId Is Null
  1138. Order By to_date(t.AUDITTIME,'yyyy-mm-dd hh24:mi:ss') limit 100 offset 100";
  1139. dt = OracleHelper<object>.PgQueryDS(lis_sql);
  1140. }
  1141. else
  1142. {
  1143. dt = OracleHelper<object>.RunQueryDS(lis_sql);
  1144. }
  1145. LogHelper.Info("thread2 " + lis_sql);
  1146. if (dt.Rows.Count < 1)
  1147. {
  1148. LogHelper.Info(Thread_name + " thread2 本次[LIS]无数据,等待下一次轮询。");
  1149. LogHelper.Info("thread2 执行sql:" + lis_sql);
  1150. }
  1151. else
  1152. {
  1153. ShowLog = Thread_name + "thread2 本次需上传[LIS]数据总条数为[" + dt.Rows.Count + "]条,逐条上传中,请耐心等待。";
  1154. this.SetText(ShowLog);
  1155. LogHelper.Info(ShowLog);
  1156. int pdfcountAll = 0;
  1157. int uploaded = 0;
  1158. for (int i = 0; i < dt.Rows.Count; i++)
  1159. {
  1160. string businessNumber = dt.Rows[i]["businessNumber"].ToString();
  1161. string reportId = dt.Rows[i]["reportId"].ToString();
  1162. string requestId = dt.Rows[i]["requestId"].ToString();
  1163. //生成pdf
  1164. string generatePdfUrl = "未生成pdf成功";
  1165. if (zlhr == zlhrConstant_true)
  1166. {
  1167. // 临生免报告id requestId
  1168. string sql_zlhr = @"select dr.id as id from specimen_rec sr, diagnosticreport_rec dr where sr.id = dr.specmids::int
  1169. and dr.status in ('3003', '3004') and sr.id = " + requestId;
  1170. DataTable dt_lis = OracleHelper<object>.PgQueryDS(sql_zlhr);
  1171. string id = dt_lis.Rows[0]["id"].ToString();
  1172. generatePdfUrl = PdfUtils.GeneratePdf(lisSource, id, id, null);
  1173. }
  1174. else if (lisSource == 3)
  1175. {
  1176. // 申请id requestId
  1177. generatePdfUrl = PdfUtils.GeneratePdf(lisSource, requestId, requestId, null);
  1178. if (!generatePdfUrl.Contains(".pdf"))
  1179. {
  1180. LogHelper.Info("生成pdf失败,原因是 = " + generatePdfUrl);
  1181. ShowLog = "生成pdf失败,原因是 =" + generatePdfUrl;
  1182. this.SetText(ShowLog);
  1183. continue;
  1184. }
  1185. }
  1186. else if (lisSource == 10)
  1187. {
  1188. // 申请id requestId
  1189. string pdfUrl = dt.Rows[i]["pdfUrl"].ToString(); // 三方pdf地址 需要下载
  1190. generatePdfUrl = PdfUtils.GeneratePdf(lisSource, pdfUrl, requestId, null);
  1191. if (string.IsNullOrEmpty(generatePdfUrl))
  1192. {
  1193. LogHelper.Info("生成pdf失败,原因是 = " + generatePdfUrl);
  1194. ShowLog = "生成pdf失败,原因是 =" + generatePdfUrl;
  1195. this.SetText(ShowLog);
  1196. continue;
  1197. }
  1198. }
  1199. else
  1200. {
  1201. // 申请id requestId
  1202. //获取标本号 和报表编号
  1203. string reportNumber = dt.Rows[i]["reportNumber"].ToString(); //报告编号
  1204. string bbid = dt.Rows[i]["bbid"].ToString(); // 标本id
  1205. generatePdfUrl = PdfUtils.GeneratePdf(lisSource, reportNumber, bbid, requestId);
  1206. if (!generatePdfUrl.Contains(".pdf"))
  1207. {
  1208. LogHelper.Info("生成pdf失败,原因是 = " + generatePdfUrl);
  1209. ShowLog = "生成pdf失败,原因是 =" + generatePdfUrl;
  1210. this.SetText(ShowLog);
  1211. continue;
  1212. }
  1213. LogHelper.Info("生成pdf成功,地址为 = " + generatePdfUrl);
  1214. }
  1215. //是否授权
  1216. if (!isAuthorization())
  1217. {
  1218. continue;
  1219. }
  1220. string attachmentFile = "";
  1221. if (zlhr == zlhrConstant_true)
  1222. {
  1223. attachmentFile = generatePdfUrl;
  1224. }
  1225. else
  1226. {
  1227. LogHelper.Info("thread2 最后GeneratePdfUrl= " + generatePdfUrl);
  1228. attachmentFile = Tools.FileToBase64Str(generatePdfUrl);
  1229. }
  1230. //上传文件
  1231. string file_json = "{\"attachmentType\":\".pdf\",\"attachmentName\":\"检验报告\",\"businessType\":\"A001\",\"attachmentFile\":\"" + attachmentFile + "\"}";
  1232. string file_json_string = file_json;
  1233. string file_vi = Tools.GuidTo16String();
  1234. file_json = Tools.AESEncrypt(file_json, Tools.pwd, file_vi);
  1235. // string file_url = "http://40.26.204.3:8084/phimp-napi/attachMent/upload";
  1236. //string file_res = Tools.WSCenterData(file_url, file_json, file_vi, Tools.accessToken, 1);
  1237. string file_res = string.Empty;
  1238. string file_res_aes = string.Empty;
  1239. try
  1240. {
  1241. file_res = Tools.WSCenterData(file_url, file_json, file_vi, Tools.accessToken, 1);
  1242. file_res_aes = Tools.AESDecrypt(file_res, Tools.pwd, file_vi);
  1243. }
  1244. catch (Exception e)
  1245. {
  1246. LogHelper.Info("写入后台表机构记录上传错误的数据");
  1247. //写入后台表机构记录上传错误的数据
  1248. string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,REASON,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}','{3}','{4}','{5}',0,to_date('{6}','yyyy/mm/dd hh24:mi:ss'))";
  1249. errSql = string.Format(errSql, businessNumber, reportId, null, null,e.Message, file_vi, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  1250. int err_count = 0;
  1251. if (zlhr == zlhrConstant_true)
  1252. {
  1253. LogHelper.Info("errSql:" + errSql);
  1254. err_count = OracleHelper<object>.PgExecuteNonQuery(errSql);
  1255. }
  1256. else
  1257. {
  1258. err_count = OracleHelper<object>.ExecuteNonQuery(errSql);
  1259. }
  1260. LogHelper.Info("写入上传错误状态" + err_count);
  1261. LogHelper.Info(e.Message);
  1262. continue;
  1263. }
  1264. ResFile resfile = Tools.JsonToObject<ResFile>(Tools.FormatStr(file_res_aes), Encoding.UTF8);
  1265. if (resfile.statusCode != "1")
  1266. {
  1267. LogHelper.Info(resfile.message + ",[LIS]PDF文件上传失败!跳过本条数据上传下一条。thread2 reportId="+ reportId);
  1268. LogHelper.Info("入参:" + file_json);
  1269. LogHelper.Info("出参:" + file_res_aes);
  1270. ShowLog = "入参:" + file_json + ",出参:" + file_res_aes + ",[LIS]PDF文件上传失败!跳过本条数据上传下一条。" + reportId;
  1271. this.SetText(ShowLog);
  1272. continue;
  1273. }
  1274. string sql = @"Insert Into 已上传PDF(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}',0,to_date('{3}','yyyy/mm/dd hh24:mi:ss'))";
  1275. sql = string.Format(sql, businessNumber, reportId, resfile.mainBody.attachmentId, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  1276. int file_count = 0;
  1277. if (zlhr==zlhrConstant_true)
  1278. {
  1279. file_count = OracleHelper<object>.PgExecuteNonQuery(sql);
  1280. }
  1281. else
  1282. {
  1283. file_count = OracleHelper<object>.ExecuteNonQuery(sql);
  1284. }
  1285. if (file_count < 1)
  1286. {
  1287. LogHelper.Info("thread2 [LIS]新增表【已上传PDF】失败,跳过本条数据上传下一条!");
  1288. LogHelper.Info("thread2 执行sql:" + sql);
  1289. ShowLog = "thread2 [LIS]新增表【已上传PDF】失败,跳过本条数据上传下一条!执行sql:" + sql;
  1290. this.SetText(ShowLog);
  1291. continue;
  1292. }
  1293. pdfcountAll += 1;
  1294. //上传lis数据
  1295. string item_sql = @"select a.orgCode,
  1296. a.orgName,
  1297. a.orgThrdCode,
  1298. a.reportId,
  1299. a.reportName,
  1300. a.requestId,
  1301. a.barcode,
  1302. a.sampleNo,
  1303. a.businessNumber,
  1304. a.patientType,
  1305. a.patientName,
  1306. a.patientSex,
  1307. a.patientBirthday,
  1308. a.patientAge,
  1309. a.ageUnit,
  1310. a.patientIdCard,
  1311. a.inpatientAreaName,
  1312. a.roomNo,
  1313. a.bedNo,
  1314. a.phoneNo,
  1315. a.address,
  1316. a.reportType,
  1317. a.reportTypeName,
  1318. a.sampCode,
  1319. a.sampName,
  1320. a.diagnosisCode,
  1321. a.diagnosisName,
  1322. a.resultType,
  1323. a.applyTime,
  1324. a.applyerCode,
  1325. a.applyerName,
  1326. a.applyDeptCode,
  1327. a.applyDeptName,
  1328. a.collectTime,
  1329. a.collectCode,
  1330. a.collectName,
  1331. a.transportCode,
  1332. a.transportName,
  1333. a.transportDeptCode,
  1334. a.transportDeptName,
  1335. a.transportOrgCode,
  1336. a.transportOrgName,
  1337. a.acceptTime,
  1338. a.acceptorCode,
  1339. a.acceptorName,
  1340. a.receiveTime,
  1341. a.receiverCode,
  1342. a.receiverName,
  1343. a.checkTime,
  1344. a.checkerCode,
  1345. a.checkerName,
  1346. a.checkDeptCode,
  1347. a.checkDeptName,
  1348. a.auditTime,
  1349. a.auditorCode,
  1350. a.auditorName,
  1351. a.reportTime,
  1352. a.reportorCode,
  1353. a.reportorName,
  1354. a.sampleNotes,
  1355. a.checkPrice,
  1356. b.attachmentId,
  1357. a.patientId ,
  1358. a.healthNo ,
  1359. a.medicareNo ,
  1360. a.socialNo ,
  1361. a.inpatientAreaCode ,
  1362. a.sampleName ,
  1363. a.execHospitalCode ,
  1364. a.execHospitalName,
  1365. a.sameHospital,
  1366. a.projectCode,
  1367. a.projectName
  1368. from lis_upload a ,已上传PDF b
  1369. where b.businessnumber = a.BUSINESSNUMBER
  1370. and b.reportid = a.REPORTID
  1371. and b.attachmentid is not null
  1372. and b.uploaded = 0
  1373. and b.type = 2
  1374. and a.BUSINESSNUMBER = '{0}'
  1375. and a.REPORTID = '{1}'";
  1376. item_sql = string.Format(item_sql, businessNumber, reportId);
  1377. List<LIS> list = new List<LIS>();
  1378. if (zlhr==zlhrConstant_true)
  1379. {
  1380. list = OracleHelper<LIS>.PgRunQueryList(item_sql);
  1381. }
  1382. else
  1383. {
  1384. list = OracleHelper<LIS>.RunQueryList(item_sql);
  1385. }
  1386. if (list.Count < 1)
  1387. {
  1388. LogHelper.Info("thread2 查询LIS数据为空,跳过本条数据上传下一条。");
  1389. LogHelper.Info("thread2 执行sql:" + item_sql);
  1390. continue;
  1391. }
  1392. List<Dictionary<string, object>> plist = new List<Dictionary<string, object>>();
  1393. Dictionary<string, object> dic = new Dictionary<string, object>();
  1394. foreach (var property in list[0].GetType().GetProperties())
  1395. {
  1396. dic.Add(property.Name, property.GetValue(list[0], null));
  1397. }
  1398. string lisitems_sql = @"Select* From lis_upload_items t Where t.groupItemCode = '" + list[0].REPORTID + "'";
  1399. List<LISITEMS> lisitems = new List<LISITEMS>();
  1400. if (zlhr==zlhrConstant_true)
  1401. {
  1402. lisitems = OracleHelper<LISITEMS>.PgRunQueryList(lisitems_sql);
  1403. }
  1404. else
  1405. {
  1406. lisitems = OracleHelper<LISITEMS>.RunQueryList(lisitems_sql);
  1407. }
  1408. if (lisitems.Count < 1)
  1409. {
  1410. LogHelper.Info("查询LIS项目指标数据为空,跳过本条数据上传下一条。");
  1411. LogHelper.Info("执行sql:" + lisitems_sql);
  1412. continue;
  1413. }
  1414. if(zlhr == zlhrConstant_true)
  1415. {
  1416. //处理 互认编码的数据
  1417. HandleLisItemDataForWebLis(lisitems);
  1418. }
  1419. dic.Add("DETAILLIST", lisitems);
  1420. plist.Add(dic);
  1421. //是否授权
  1422. if (!isAuthorization())
  1423. {
  1424. continue;
  1425. }
  1426. string json_pacs = JsonConvert.SerializeObject(plist);
  1427. json_pacs = "{\"mainBody\":" + json_pacs + "}";
  1428. string json_pacs_log = json_pacs;
  1429. string vi_pacs = Tools.GuidTo16String();
  1430. json_pacs = Tools.AESEncrypt(json_pacs, Tools.pwd, vi_pacs);
  1431. //string res_pacs = Tools.WSCenterData(url, json_pacs, vi_pacs, Tools.accessToken, 1);
  1432. string res_pacs = string.Empty;
  1433. string res_aes_pacs = string.Empty;
  1434. try
  1435. {
  1436. file_res = Tools.WSCenterData(lis_upload_url, json_pacs, vi_pacs, Tools.accessToken, 1);
  1437. res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
  1438. }
  1439. catch (Exception e)
  1440. {
  1441. //写入后台表机构记录上传错误的数据
  1442. LogHelper.Info("写入后台表机构记录上传错误的数据2");
  1443. string errSql = @"Insert Into 互认报告上传异常记录(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,REQUEST_DATA,REASON,IV,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',2,'{2}','{3}','{4}','{5}',0,to_date('{6}','yyyy/mm/dd hh24:mi:ss'))";
  1444. errSql = string.Format(errSql, dt.Rows[i]["businessNumber"].ToString(), dt.Rows[i]["reportId"].ToString(), resfile.mainBody.attachmentId,null, e.Message, vi_pacs, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  1445. int err_count = 0;
  1446. if (zlhr == zlhrConstant_true)
  1447. {
  1448. LogHelper.Info("errSql:" + errSql);
  1449. err_count = OracleHelper<object>.PgExecuteNonQuery(errSql);
  1450. }
  1451. else
  1452. {
  1453. err_count = OracleHelper<object>.ExecuteNonQuery(errSql);
  1454. }
  1455. LogHelper.Info("写入数据" + err_count);
  1456. LogHelper.Info(e.Message);
  1457. continue;
  1458. }
  1459. ResPacs respacs = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs), Encoding.UTF8);
  1460. LogHelper.Info(reportId + ":lis2上传检验报告的接口状态==" + JsonConvert.SerializeObject(respacs));
  1461. if (respacs.statusCode != "1")
  1462. {
  1463. ShowLog = respacs.message + ",thread2 ,[LIS]数据上传异常!跳过本条数据上传下一条,偏移量为:REPORTID=" + list[0].REPORTID;
  1464. this.SetText(ShowLog);
  1465. LogHelper.Info(ShowLog);
  1466. LogHelper.Info("thread2 [LIS]出错入参:" + json_pacs_log);
  1467. LogHelper.Info("thread2 [LIS]出错出参:" + res_aes_pacs);
  1468. continue;
  1469. }
  1470. else
  1471. {
  1472. Lis_total += 1;
  1473. uploaded += 1;//(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,UPLOADED) Values('{0}','{1}',2,'{2}',0)
  1474. string sql_upload = @"update 已上传PDF set UPLOADED = 1,UPLOADE_TIME = to_date('{2}','yyyy/mm/dd hh24:mi:ss') where type = 2
  1475. and BUSINESSNUMBER = '{0}'
  1476. and REPORTID = '{1}'";
  1477. sql_upload = string.Format(sql_upload, list[0].BUSINESSNUMBER, list[0].REPORTID, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  1478. int upload_count = 0;
  1479. if (zlhr==zlhrConstant_true)
  1480. {
  1481. upload_count = OracleHelper<object>.PgExecuteNonQuery(sql_upload);
  1482. }
  1483. else
  1484. {
  1485. upload_count = OracleHelper<object>.ExecuteNonQuery(sql_upload);
  1486. }
  1487. if (upload_count < 1)
  1488. {
  1489. LogHelper.Info("thread2 [LIS]更新表【已上传PDF】失败,跳过本条数据上传下一条!");
  1490. LogHelper.Info("thread2 执行sql:" + sql_upload);
  1491. ShowLog = "thread2 [LIS]新增表【已上传PDF】失败,跳过本条数据上传下一条!执行sql:" + sql_upload;
  1492. this.SetText(ShowLog);
  1493. continue;
  1494. }
  1495. }
  1496. }
  1497. ShowLog = Thread_name + "thread2 本次已生成、上传[LIS]PDF文件总条数为[" + pdfcountAll + "]条,上传[LIS]总条数为[" + uploaded + "]条。";
  1498. this.SetText(ShowLog);
  1499. LogHelper.Info(ShowLog);
  1500. GetLisDefault();
  1501. }
  1502. #endregion
  1503. }
  1504. }
  1505. catch (Exception ex)
  1506. {
  1507. LogHelper.Error(ex);
  1508. }
  1509. }
  1510. private object PacsLock = new object();
  1511. private void PacsUpload()
  1512. {
  1513. try
  1514. {
  1515. lock (PacsLock)
  1516. {
  1517. int uploaded = 0;
  1518. string url_pacs = "http://40.26.204.3:8084/phimp-napi/qyhrpacscheckreportinfo/save";
  1519. #region 1、生成、上传单条PACS文件及数据
  1520. LogHelper.Info("[PACS]开始");
  1521. string sql_pdf = @"select * from (
  1522. Select rownum as rn,b.* From (select t.* from PACS_UPLOAD t
  1523. Where t.attachmentId Is Null
  1524. ) b
  1525. ) Where rn <= 150";
  1526. DataTable dt = OracleHelper<object>.RunQueryDS(sql_pdf);
  1527. if (dt.Rows.Count < 1)
  1528. {
  1529. LogHelper.Info("本次无数据,或[PACS]PDF已生成并上传。");
  1530. LogHelper.Info("执行sql:" + sql_pdf);
  1531. }
  1532. else
  1533. {
  1534. ShowLog = "本次需上传[PACS]数据总条数为[" + dt.Rows.Count + "]条,逐条上传中,请耐心等待。";
  1535. this.SetText(ShowLog);
  1536. int countAll = 0;
  1537. for (int i = 0; i < dt.Rows.Count; i++)
  1538. {
  1539. //获取报告数据并生成报告 开始
  1540. string orgName = dt.Rows[i]["orgName"].ToString();
  1541. string name = dt.Rows[i]["patientName"].ToString();
  1542. string sex = dt.Rows[i]["sex"].ToString();
  1543. string ch = dt.Rows[i]["bedNo"].ToString();
  1544. string zyh = dt.Rows[i]["zyh"].ToString();
  1545. string mzh = dt.Rows[i]["mzh"].ToString();//patientType
  1546. string age = dt.Rows[i]["age"].ToString();
  1547. string type;
  1548. string patientType = dt.Rows[i]["patientType"].ToString();
  1549. string dep = dt.Rows[i]["dep"].ToString();
  1550. if (patientType == "1")
  1551. {
  1552. type = "门诊";
  1553. }
  1554. else if (patientType == "2")
  1555. {
  1556. type = "住院";
  1557. }
  1558. else if (patientType == "3")
  1559. {
  1560. type = "体检";
  1561. }
  1562. else
  1563. {
  1564. type = "其他";
  1565. }
  1566. string baseInfo = "姓名:{0} 性别:{1} 年龄:{2} 病人来源:{3} 床号:{4} 住院号:{5} 门诊号:{6} 申请科室:{7}";
  1567. string findings = dt.Rows[i]["findings"].ToString();
  1568. string diagnosResult = dt.Rows[i]["diagnosResult"].ToString();
  1569. string signature = "签名:{0} 日期:{1}";
  1570. string qname = dt.Rows[i]["auditorName"].ToString();
  1571. string qdate = dt.Rows[i]["auditTime"].ToString();
  1572. signature = string.Format(signature, qname, qdate);
  1573. baseInfo = string.Format(baseInfo, name, sex, age, type, ch, zyh, mzh, dep);
  1574. string res = CreatePDF(orgName, baseInfo, findings, diagnosResult, signature);
  1575. if (res == "")
  1576. {
  1577. ShowLog = "生成PACS的PDF文件失败。[PACS]上传失败!跳过本条数据上传下一条。";
  1578. LogHelper.Info(ShowLog);
  1579. this.SetText(ShowLog);
  1580. continue;
  1581. }
  1582. //获取报告数据并生成报告 结束
  1583. //是否授权
  1584. if (!isAuthorization())
  1585. {
  1586. continue;
  1587. }
  1588. //string path = Application.StartupPath + "\\pacs.pdf";
  1589. //上传文件
  1590. string file_json = "{\"attachmentType\":\".pdf\",\"attachmentName\":\"检查报告\",\"businessType\":\"A001\",\"attachmentFile\":\"" + Tools.FileToBase64Str(res) + "\"}";
  1591. string file_vi = Tools.GuidTo16String();
  1592. file_json = Tools.AESEncrypt(file_json, Tools.pwd, file_vi);
  1593. string file_url = "http://40.26.204.3:8084/phimp-napi/attachMent/upload";
  1594. //string file_res = Tools.WSCenterData(file_url, file_json, file_vi, Tools.accessToken, 1);
  1595. string file_res=string.Empty;
  1596. string file_res_aes = string.Empty;
  1597. try
  1598. {
  1599. file_res = Tools.WSCenterData(file_url, file_json, file_vi, Tools.accessToken, 1);
  1600. file_res_aes = Tools.AESDecrypt(file_res, Tools.pwd, file_vi);
  1601. }
  1602. catch (Exception e)
  1603. {
  1604. LogHelper.Error(e, "pacs 报告生成上传失败");
  1605. continue;
  1606. }
  1607. ResFile resfile = Tools.JsonToObject<ResFile>(Tools.FormatStr(file_res_aes), Encoding.UTF8);
  1608. if (resfile.statusCode != "1")
  1609. {
  1610. //LogHelper.Info(resfile.message + ",[PACS]文件上传失败,跳过本条数据上传下一条。");
  1611. LogHelper.Info("入参:" + file_json);
  1612. LogHelper.Info("出参:" + file_res_aes);
  1613. ShowLog = "入参:" + file_json + ",出参:" + file_res_aes + ",[PACS]文件上传失败,跳过本条数据上传下一条。";
  1614. this.SetText(ShowLog);
  1615. continue;
  1616. }
  1617. string sql = @"Insert Into 已上传PDF(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,UPLOADED,UPLOADE_TIME) Values('{0}','{1}',1,'{2}',0, to_date('{3}','yyyy/mm/dd hh24:mi:ss'))";
  1618. sql = string.Format(sql, dt.Rows[i]["businessNumber"].ToString(), dt.Rows[i]["reportId"].ToString(), resfile.mainBody.attachmentId, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  1619. int file_count = OracleHelper<object>.ExecuteNonQuery(sql);
  1620. if (file_count < 1)
  1621. {
  1622. ShowLog = "[PACS]新增表【已上传PDF】失败,跳过本条数据上传下一条。!";
  1623. LogHelper.Info(ShowLog);
  1624. this.SetText(ShowLog);
  1625. continue;
  1626. }
  1627. countAll += 1;
  1628. //上传数据
  1629. string item_sql = @"select
  1630. a.patientAge ,
  1631. a.ageUnit ,
  1632. a.patientIdCard ,
  1633. a.inTime ,
  1634. a.inpatientAreaName ,
  1635. a.roomNo ,
  1636. a.bedNo ,
  1637. a.phoneNo ,
  1638. a.address ,
  1639. a.reportTypeName ,
  1640. a.reportTypeCode ,
  1641. a.diagnosisCode ,
  1642. a.diagnosisName ,
  1643. a.applyTime ,
  1644. a.applyerCode ,
  1645. a.applyerName ,
  1646. a.applyDeptCode ,
  1647. a.applyDeptName ,
  1648. a.applyOrgCode ,
  1649. a.applyOrgName ,
  1650. a.receiverTime ,
  1651. a.receiverCode ,
  1652. a.receiverName ,
  1653. a.checkTime ,
  1654. a.checkerCode ,
  1655. a.checkerName ,
  1656. a.checkDeptCode ,
  1657. a.checkDeptName ,
  1658. a.reportTime ,
  1659. a.reportorCode ,
  1660. a.reportorName ,
  1661. a.auditTime ,
  1662. a.auditorCode ,
  1663. a.auditorName ,
  1664. a.localItemId ,
  1665. a.standardItemId ,
  1666. a.itemName ,
  1667. a.purpose ,
  1668. a.testPrice ,
  1669. a.checkTypeCode ,
  1670. a.checkTypeName ,
  1671. a.positionCode ,
  1672. a.positionName ,
  1673. a.methodCode ,
  1674. a.methodName ,
  1675. a.isEnganced ,
  1676. a.isMakeShadow ,
  1677. a.process ,
  1678. a.findings ,
  1679. a.diagnosResult ,
  1680. a.resultType ,
  1681. a.unit ,
  1682. a.machineType ,
  1683. a.machineCode ,
  1684. a.machineName ,
  1685. b.attachmentId ,
  1686. a.studyInstanceUid ,
  1687. a.dicomImgFtpUrl ,
  1688. a.orgCode ,
  1689. a.orgName ,
  1690. a.pacsYunOrgCode ,
  1691. a.reportId ,
  1692. a.reportName ,
  1693. a.reportType ,
  1694. a.requestId ,
  1695. a.businessNumber ,
  1696. a.patientType ,
  1697. a.patientName ,
  1698. a.patientSex ,
  1699. a.patientBirthday ,
  1700. a.regionHr,
  1701. a.HEALTHNO,
  1702. a.MEDICARENO ,
  1703. a.ACCESSNUMBER,
  1704. a.CONCLUSION,
  1705. a.BRIEFHISTORY,
  1706. a.ISIMAGESERVICE,
  1707. a.STUDYUID
  1708. from pacs_upload a ,已上传PDF b
  1709. where b.businessnumber = a.BUSINESSNUMBER
  1710. and b.reportid = a.REPORTID
  1711. and b.attachmentid is not null
  1712. and b.uploaded = 0
  1713. and b.type = 1
  1714. and a.BUSINESSNUMBER = '{0}'
  1715. and a.REPORTID = '{1}'";
  1716. item_sql = string.Format(item_sql, dt.Rows[i]["businessNumber"].ToString(), dt.Rows[i]["reportId"].ToString());
  1717. List<PACS> list = OracleHelper<PACS>.RunQueryList(item_sql);
  1718. if (list.Count < 1)
  1719. {
  1720. LogHelper.Info("查询PACS数据为空,跳过本条数据上传下一条。");
  1721. LogHelper.Info("执行sql:" + item_sql);
  1722. continue;
  1723. }
  1724. string json_pacs = Tools.ObjectToJson<List<PACS>>(list, Encoding.UTF8);
  1725. json_pacs = "{\"mainBody\":" + json_pacs + "}";
  1726. if (!isAuthorization())
  1727. {
  1728. continue;
  1729. }
  1730. string json_pacs_log = json_pacs;
  1731. string vi_pacs = Tools.GuidTo16String();
  1732. json_pacs = Tools.AESEncrypt(json_pacs, Tools.pwd, vi_pacs);
  1733. //string res_pacs = Tools.WSCenterData(url_pacs, json_pacs, vi_pacs, Tools.accessToken, 1);
  1734. string res_pacs = string.Empty;
  1735. string res_aes_pacs = string.Empty;
  1736. try
  1737. {
  1738. res_pacs = Tools.WSCenterData(url_pacs, json_pacs, vi_pacs, Tools.accessToken, 1);
  1739. res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
  1740. }
  1741. catch (Exception e)
  1742. {
  1743. LogHelper.Error(e, "pacs 报告上传失败");
  1744. continue;
  1745. }
  1746. //LogHelper.Info("[PACS]上传出参:" + res_aes_pacs);
  1747. ResPacs respacs = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs), Encoding.UTF8);
  1748. if (respacs.statusCode != "1")
  1749. {
  1750. ShowLog = respacs.message + ",[PACS]数据上传异常!跳过本条数据上传下一条,偏移量为:" + vi_pacs;
  1751. this.SetText(ShowLog);
  1752. LogHelper.Info("[PACS]出错入参:" + json_pacs_log);
  1753. LogHelper.Info("[PACS]出错出参:" + res_aes_pacs);
  1754. continue;
  1755. }
  1756. else
  1757. {
  1758. pacs_total += 1;
  1759. uploaded += 1;//(BUSINESSNUMBER,REPORTID,TYPE,ATTACHMENTID,UPLOADED) Values('{0}','{1}',2,'{2}',0)
  1760. string sql_upload = @"update 已上传PDF set UPLOADED = 1,UPLOADE_TIME = to_date('{2}','yyyy/mm/dd hh24:mi:ss') where type = 1
  1761. and BUSINESSNUMBER = '{0}'
  1762. and REPORTID = '{1}'";
  1763. sql_upload = string.Format(sql_upload, list[0].BUSINESSNUMBER, list[0].REPORTID, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  1764. int upload_count = OracleHelper<object>.ExecuteNonQuery(sql_upload);
  1765. if (upload_count < 1)
  1766. {
  1767. LogHelper.Info("[PACS]更新表【已上传PDF】失败,跳过本条数据上传下一条!");
  1768. LogHelper.Info("执行sql:" + sql_upload);
  1769. ShowLog = "[PACS]新增表【已上传PDF】失败,跳过本条数据上传下一条!执行sql:" + sql_upload;
  1770. this.SetText(ShowLog);
  1771. continue;
  1772. }
  1773. }
  1774. }
  1775. ShowLog = "本次已生成、上传[PACS]PDF文件总条数为[" + countAll + "]条,上传[PACS]总条数为[" + uploaded + "]条。";
  1776. this.SetText(ShowLog);
  1777. LogHelper.Info(ShowLog);
  1778. GetPacsDefault();
  1779. }
  1780. #endregion
  1781. #region 2、补传失败数据
  1782. //上传数据
  1783. LogHelper.Info("PACS补传失败数据");
  1784. string pc_sql = @"select
  1785. a.patientAge ,
  1786. a.ageUnit ,
  1787. a.patientIdCard ,
  1788. a.inTime ,
  1789. a.inpatientAreaName ,
  1790. a.roomNo ,
  1791. a.bedNo ,
  1792. a.phoneNo ,
  1793. a.address ,
  1794. a.reportTypeName ,
  1795. a.reportTypeCode ,
  1796. a.diagnosisCode ,
  1797. a.diagnosisName ,
  1798. a.applyTime ,
  1799. a.applyerCode ,
  1800. a.applyerName ,
  1801. a.applyDeptCode ,
  1802. a.applyDeptName ,
  1803. a.applyOrgCode ,
  1804. a.applyOrgName ,
  1805. a.receiverTime ,
  1806. a.receiverCode ,
  1807. a.receiverName ,
  1808. a.checkTime ,
  1809. a.checkerCode ,
  1810. a.checkerName ,
  1811. a.checkDeptCode ,
  1812. a.checkDeptName ,
  1813. a.reportTime ,
  1814. a.reportorCode ,
  1815. a.reportorName ,
  1816. a.auditTime ,
  1817. a.auditorCode ,
  1818. a.auditorName ,
  1819. a.localItemId ,
  1820. a.standardItemId ,
  1821. a.itemName ,
  1822. a.purpose ,
  1823. a.testPrice ,
  1824. a.checkTypeCode ,
  1825. a.checkTypeName ,
  1826. a.positionCode ,
  1827. a.positionName ,
  1828. a.methodCode ,
  1829. a.methodName ,
  1830. a.isEnganced ,
  1831. a.isMakeShadow ,
  1832. a.process ,
  1833. a.findings ,
  1834. a.diagnosResult ,
  1835. a.resultType ,
  1836. a.unit ,
  1837. a.machineType ,
  1838. a.machineCode ,
  1839. a.machineName ,
  1840. b.attachmentId ,
  1841. a.studyInstanceUid ,
  1842. a.dicomImgFtpUrl ,
  1843. a.orgCode ,
  1844. a.orgName ,
  1845. a.pacsYunOrgCode ,
  1846. a.reportId ,
  1847. a.reportName ,
  1848. a.reportType ,
  1849. a.requestId ,
  1850. a.businessNumber ,
  1851. a.patientType ,
  1852. a.patientName ,
  1853. a.patientSex ,
  1854. a.patientBirthday ,
  1855. a.regionHr,
  1856. a.HEALTHNO,
  1857. a.MEDICARENO ,
  1858. a.ACCESSNUMBER,
  1859. a.CONCLUSION,
  1860. a.BRIEFHISTORY,
  1861. a.ISIMAGESERVICE,
  1862. a.STUDYUID
  1863. from pacs_upload a ,已上传PDF b
  1864. where b.businessnumber = a.BUSINESSNUMBER
  1865. and b.reportid = a.REPORTID
  1866. and b.attachmentid is not null
  1867. and b.uploaded = 0
  1868. and b.type = 1";
  1869. List<PACS> list_pc = OracleHelper<PACS>.RunQueryList(pc_sql);
  1870. if (list_pc.Count < 1)
  1871. {
  1872. LogHelper.Info("查询补传PACS数据为空,等待下一次轮询。");
  1873. LogHelper.Info("执行sql:" + pc_sql);
  1874. return;
  1875. }
  1876. int count_pc = 0;
  1877. for (int i = 0; i < list_pc.Count; i++)
  1878. {
  1879. if (!isAuthorization())
  1880. {
  1881. continue;
  1882. }
  1883. string json_pacs = Tools.ObjectToJson<List<PACS>>(list_pc[i], Encoding.UTF8);
  1884. json_pacs = "{\"mainBody\":[" + json_pacs + "]}";
  1885. string json_pacs_log = json_pacs;
  1886. string vi_pacs = Tools.GuidTo16String();
  1887. json_pacs = Tools.AESEncrypt(json_pacs, Tools.pwd, vi_pacs);
  1888. //string res_pacs = Tools.WSCenterData(url_pacs, json_pacs, vi_pacs, Tools.accessToken, 1);
  1889. string res_pacs = string.Empty;
  1890. string res_aes_pacs = string.Empty;
  1891. try
  1892. {
  1893. res_pacs = Tools.WSCenterData(url_pacs, json_pacs, vi_pacs, Tools.accessToken, 1);
  1894. res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
  1895. }
  1896. catch (Exception e)
  1897. {
  1898. LogHelper.Error(e, "pacs 报告补传失败");
  1899. continue;
  1900. }
  1901. //LogHelper.Info("[PACS]上传出参:" + res_aes_pacs);
  1902. ResPacs respacs = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs), Encoding.UTF8);
  1903. if (respacs.statusCode != "1")
  1904. {
  1905. ShowLog = respacs.message + ",[PACS]数据上传异常!跳过本条数据上传下一条,偏移量为:" + vi_pacs;
  1906. this.SetText(ShowLog);
  1907. LogHelper.Info("[PACS]出错入参:" + json_pacs_log);
  1908. LogHelper.Info("[PACS]出错出参:" + res_aes_pacs);
  1909. continue;
  1910. }
  1911. else
  1912. {
  1913. pacs_total += 1;
  1914. count_pc += 1;
  1915. string sql_upload = @"update 已上传PDF set UPLOADED = 1,UPLOADE_TIME = to_date('{2}','yyyy/mm/dd hh24:mi:ss') where type = 1
  1916. and BUSINESSNUMBER = '{0}'
  1917. and REPORTID = '{1}'";
  1918. sql_upload = string.Format(sql_upload, list_pc[i].BUSINESSNUMBER, list_pc[i].REPORTID, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  1919. int upload_count = OracleHelper<object>.ExecuteNonQuery(sql_upload);
  1920. if (upload_count < 1)
  1921. {
  1922. LogHelper.Info("[PACS]更新表【已上传PDF】失败,跳过本条数据上传下一条!");
  1923. LogHelper.Info("执行sql:" + sql_upload);
  1924. ShowLog = "[PACS]新增表【已上传PDF】失败,跳过本条数据上传下一条!执行sql:" + sql_upload;
  1925. this.SetText(ShowLog);
  1926. continue;
  1927. }
  1928. }
  1929. }
  1930. if (count_pc > 0)
  1931. {
  1932. ShowLog = "本次补传[PACS]数据为[" + count_pc + "]条,等待下一次轮询。";
  1933. this.SetText(ShowLog);
  1934. LogHelper.Info(ShowLog);
  1935. GetPacsDefault();
  1936. }
  1937. #endregion
  1938. }
  1939. }
  1940. catch (Exception ex)
  1941. {
  1942. LogHelper.Error(ex);
  1943. }
  1944. }
  1945. private void PacsUploadNew()
  1946. {
  1947. try
  1948. {
  1949. lock (PacsLock)
  1950. {
  1951. int uploaded = 0;
  1952. // string url_pacs = "http://40.26.204.3:8084/phimp-napi/qyhrpacscheckreportinfo/save";
  1953. #region 1、生成、上传单条PACS文件及数据
  1954. LogHelper.Info("[PACS]开始");
  1955. DataTable dt = PacsUploadServiceImpl.getPacsDataTable();
  1956. if (dt.Rows.Count > 0)
  1957. {
  1958. ShowLog = "本次需上传[PACS]数据总条数为[" + dt.Rows.Count + "]条,逐条上传中,请耐心等待。";
  1959. this.SetText(ShowLog);
  1960. int countAll = 0;
  1961. for (int i = 0; i < dt.Rows.Count; i++)
  1962. {
  1963. string reportId = dt.Rows[i]["reportId"].ToString();
  1964. string businessNumber = dt.Rows[i]["businessNumber"].ToString();
  1965. string YZID = dt.Rows[i]["YZID"].ToString();
  1966. string reportNumber = dt.Rows[i]["reportNumber"].ToString();
  1967. #region 获取报告数据并生成报告 开始
  1968. /*
  1969. string orgName = dt.Rows[i]["orgName"].ToString();
  1970. string name = dt.Rows[i]["patientName"].ToString();
  1971. string sex = dt.Rows[i]["sex"].ToString();
  1972. string ch = dt.Rows[i]["bedNo"].ToString();
  1973. string zyh = dt.Rows[i]["zyh"].ToString();
  1974. string mzh = dt.Rows[i]["mzh"].ToString();//patientType
  1975. string age = dt.Rows[i]["age"].ToString();
  1976. string type;
  1977. string patientType = dt.Rows[i]["patientType"].ToString();
  1978. string dep = dt.Rows[i]["dep"].ToString();
  1979. if (patientType == "1")
  1980. {
  1981. type = "门诊";
  1982. }
  1983. else if (patientType == "2")
  1984. {
  1985. type = "住院";
  1986. }
  1987. else if (patientType == "3")
  1988. {
  1989. type = "体检";
  1990. }
  1991. else
  1992. {
  1993. type = "其他";
  1994. }
  1995. string baseInfo = "姓名:{0} 性别:{1} 年龄:{2} 病人来源:{3} 床号:{4} 住院号:{5} 门诊号:{6} 申请科室:{7}";
  1996. string findings = dt.Rows[i]["findings"].ToString();
  1997. string diagnosResult = dt.Rows[i]["diagnosResult"].ToString();
  1998. string signature = "签名:{0} 日期:{1}";
  1999. string qname = dt.Rows[i]["auditorName"].ToString();
  2000. string qdate = dt.Rows[i]["auditTime"].ToString();
  2001. signature = string.Format(signature, qname, qdate);
  2002. baseInfo = string.Format(baseInfo, name, sex, age, type, ch, zyh, mzh, dep);
  2003. string res = CreatePDF(orgName, baseInfo, findings, diagnosResult, signature);
  2004. if (res == "")
  2005. {
  2006. ShowLog = "生成PACS的PDF文件失败。[PACS]上传失败!跳过本条数据上传下一条。";
  2007. LogHelper.Info(ShowLog);
  2008. this.SetText(ShowLog);
  2009. continue;
  2010. }
  2011. //获取报告数据并生成报告 结束*/
  2012. #endregion
  2013. // 这里需要获取原始报告
  2014. string res = "";
  2015. if (pacsSource==0)
  2016. {
  2017. res = PdfUtils.GeneratePacsPdf(pacsSource,reportNumber, null, YZID);
  2018. }
  2019. if (!res.Contains(".pdf"))
  2020. {
  2021. LogHelper.Info("生成pdf失败,原因是 = " + res);
  2022. ShowLog = "生成pdf失败,原因是 =" + res;
  2023. this.SetText(ShowLog);
  2024. continue;
  2025. }
  2026. LogHelper.Info("生成pdf成功,地址为 = " + res);
  2027. //是否授权
  2028. if (!isAuthorization())
  2029. {
  2030. continue;
  2031. }
  2032. string base64FileContent = Tools.FileToBase64Str(res);
  2033. ResFile resfile = PdfUtils.uploadFileToPlatform(file_url, base64FileContent);
  2034. if (resfile.statusCode != "1")
  2035. {
  2036. LogHelper.Info(resfile.message + ",[PACS]文件上传失败,跳过本条数据上传下一条。报告id = "+ reportId);
  2037. ShowLog = reportId+" 报告上传失败,[PACS]文件上传失败,跳过本条数据上传下一条。";
  2038. this.SetText(ShowLog);
  2039. continue;
  2040. }
  2041. int file_count = PacsUploadServiceImpl.insertPdfForPacs(businessNumber, reportId,resfile.mainBody.attachmentId);
  2042. if (file_count < 1)
  2043. {
  2044. ShowLog = "[PACS]新增表【已上传PDF】失败,跳过本条数据上传下一条。!";
  2045. LogHelper.Info(ShowLog);
  2046. this.SetText(ShowLog);
  2047. continue;
  2048. }
  2049. countAll += 1;
  2050. //上传数据
  2051. List<PACS> list = PacsUploadServiceImpl.beginUploadPacsData(businessNumber,reportId);
  2052. if (list.Count < 1)
  2053. {
  2054. continue;
  2055. }
  2056. List<Dictionary<string, object>> plist = new List<Dictionary<string, object>>();
  2057. Dictionary<string, object> dic = new Dictionary<string, object>();
  2058. foreach (var property in list[0].GetType().GetProperties())
  2059. {
  2060. dic.Add(property.Name, property.GetValue(list[0], null));
  2061. }
  2062. string lisitems_sql = @"Select * From pacs_upload_items t Where t.yzxgid = " + list[0].YZID + "";
  2063. List<PacsItems> pacsItems = new List<PacsItems>();
  2064. if (zlhr == zlhrConstant_true)
  2065. {
  2066. pacsItems = OracleHelper<PacsItems>.PgRunQueryList(lisitems_sql);
  2067. }
  2068. else
  2069. {
  2070. pacsItems = OracleHelper<PacsItems>.RunQueryList(lisitems_sql);
  2071. }
  2072. if (pacsItems.Count < 1)
  2073. {
  2074. LogHelper.Info("查询pacs检查项目明细数据为空,跳过本条数据上传下一条。");
  2075. LogHelper.Info("执行sql:" + lisitems_sql);
  2076. continue;
  2077. }
  2078. /*if (zlhr == zlhrConstant_true)
  2079. {
  2080. //处理 互认编码的数据
  2081. HandleLisItemDataForWebLis(lisitems);
  2082. }*/
  2083. dic.Add("ITEMLIST", pacsItems);
  2084. plist.Add(dic);
  2085. if (!isAuthorization())
  2086. {
  2087. continue;
  2088. }
  2089. string json_pacs = JsonConvert.SerializeObject(plist);
  2090. //string json_pacs = Tools.ObjectToJson<List<PACS>>(plist, Encoding.UTF8);
  2091. // LogHelper.Info("pacs参数="+ json_pacs);
  2092. json_pacs = "{\"mainBody\":" + json_pacs + "}";
  2093. LogHelper.Info("pacs参数=" + json_pacs);
  2094. string json_pacs_log = json_pacs;
  2095. string vi_pacs = Tools.GuidTo16String();
  2096. json_pacs = Tools.AESEncrypt(json_pacs, Tools.pwd, vi_pacs);
  2097. //string res_pacs = Tools.WSCenterData(pacs_upload_url, json_pacs, vi_pacs, Tools.accessToken, 1);
  2098. string res_pacs = string.Empty;
  2099. string res_aes_pacs = string.Empty;
  2100. try
  2101. {
  2102. res_pacs = Tools.WSCenterData(pacs_upload_url, json_pacs, vi_pacs, Tools.accessToken, 1);
  2103. res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
  2104. }
  2105. catch (Exception e)
  2106. {
  2107. LogHelper.Error(e, "pacs 报告上传失败");
  2108. continue;
  2109. }
  2110. //LogHelper.Info("[PACS]上传出参:" + res_aes_pacs);
  2111. ResPacs respacs = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs), Encoding.UTF8);
  2112. if (respacs.statusCode != "1")
  2113. {
  2114. ShowLog = respacs.message + ",[PACS]数据上传异常!跳过本条数据上传下一条,偏移量为:" + vi_pacs;
  2115. this.SetText(ShowLog);
  2116. LogHelper.Info("[PACS]出错入参:" + json_pacs_log);
  2117. LogHelper.Info("[PACS]出错出参:" + res_aes_pacs);
  2118. continue;
  2119. }
  2120. else
  2121. {
  2122. pacs_total += 1;
  2123. uploaded += 1;
  2124. int upload_count = PacsUploadServiceImpl.updatePdfForPacs(businessNumber,reportId);
  2125. if (upload_count < 1)
  2126. {
  2127. LogHelper.Info("[PACS]更新表【已上传PDF】失败,跳过本条数据上传下一条!"+ reportId);
  2128. ShowLog = "[PACS]新增表【已上传PDF】失败,跳过本条数据上传下一条!执行sql:" + reportId;
  2129. this.SetText(ShowLog);
  2130. continue;
  2131. }
  2132. }
  2133. }
  2134. ShowLog = "本次已生成、上传[PACS]PDF文件总条数为[" + countAll + "]条,上传[PACS]总条数为[" + uploaded + "]条。";
  2135. this.SetText(ShowLog);
  2136. LogHelper.Info(ShowLog);
  2137. GetPacsDefault();
  2138. }
  2139. #endregion
  2140. #region 2、补传失败数据
  2141. //上传数据
  2142. LogHelper.Info("PACS补传数据");
  2143. ShowLog = "PACS补传数据开始";
  2144. this.SetText(ShowLog);
  2145. List<PACS> list_pc = PacsUploadServiceImpl.completUploadPacsData();
  2146. if (list_pc.Count < 1)
  2147. {
  2148. return;
  2149. }
  2150. int count_pc = 0;
  2151. for (int i = 0; i < list_pc.Count; i++)
  2152. {
  2153. List<Dictionary<string, object>> plist_pc = new List<Dictionary<string, object>>();
  2154. Dictionary<string, object> dic_pc = new Dictionary<string, object>();
  2155. foreach (var property in list_pc[i].GetType().GetProperties())
  2156. {
  2157. dic_pc.Add(property.Name, property.GetValue(list_pc[i], null));
  2158. }
  2159. string pacsitems_sql = @"Select * From pacs_upload_items t Where t.yzxgid = " + list_pc[i].YZID + "";
  2160. List<PacsItems> pacsItems = new List<PacsItems>();
  2161. if (zlhr == zlhrConstant_true)
  2162. {
  2163. pacsItems = OracleHelper<PacsItems>.PgRunQueryList(pacsitems_sql);
  2164. }
  2165. else
  2166. {
  2167. pacsItems = OracleHelper<PacsItems>.RunQueryList(pacsitems_sql);
  2168. }
  2169. if (pacsItems.Count < 1)
  2170. {
  2171. LogHelper.Info("查询pacs检查项目明细数据为空,跳过本条数据上传下一条。");
  2172. LogHelper.Info("执行sql:" + pacsitems_sql);
  2173. continue;
  2174. }
  2175. dic_pc.Add("ITEMLIST", pacsItems);
  2176. plist_pc.Add(dic_pc);
  2177. if (!isAuthorization())
  2178. {
  2179. continue;
  2180. }
  2181. string json_pacs = JsonConvert.SerializeObject(plist_pc);
  2182. //string json_pacs = Tools.ObjectToJson<List<PACS>>(list_pc[i], Encoding.UTF8);
  2183. json_pacs = "{\"mainBody\":" + json_pacs + "}";
  2184. string json_pacs_log = json_pacs;
  2185. string vi_pacs = Tools.GuidTo16String();
  2186. json_pacs = Tools.AESEncrypt(json_pacs, Tools.pwd, vi_pacs);
  2187. //string res_pacs = Tools.WSCenterData(pacs_upload_url, json_pacs, vi_pacs, Tools.accessToken, 1);
  2188. string res_pacs = string.Empty;
  2189. string res_aes_pacs = string.Empty;
  2190. try
  2191. {
  2192. res_pacs = Tools.WSCenterData(pacs_upload_url, json_pacs, vi_pacs, Tools.accessToken, 1);
  2193. res_aes_pacs = Tools.AESDecrypt(res_pacs, Tools.pwd, vi_pacs);
  2194. }
  2195. catch (Exception e)
  2196. {
  2197. LogHelper.Error(e, "pacs 报告上传失败");
  2198. continue;
  2199. }
  2200. //LogHelper.Info("[PACS]上传出参:" + res_aes_pacs);
  2201. ResPacs respacs = Tools.JsonToObject<ResPacs>(Tools.FormatStr(res_aes_pacs), Encoding.UTF8);
  2202. if (respacs.statusCode != "1")
  2203. {
  2204. ShowLog = respacs.message + ",[PACS]数据上传异常!跳过本条数据上传下一条,偏移量为:" + vi_pacs;
  2205. this.SetText(ShowLog);
  2206. LogHelper.Info("[PACS]出错入参:" + json_pacs_log);
  2207. LogHelper.Info("[PACS]出错出参:" + res_aes_pacs);
  2208. continue;
  2209. }
  2210. else
  2211. {
  2212. pacs_total += 1;
  2213. count_pc += 1;
  2214. string sql_upload = @"update 已上传PDF set UPLOADED = 1,UPLOADE_TIME = to_date('{2}','yyyy/mm/dd hh24:mi:ss') where type = 1
  2215. and BUSINESSNUMBER = '{0}'
  2216. and REPORTID = '{1}'";
  2217. sql_upload = string.Format(sql_upload, list_pc[i].BUSINESSNUMBER, list_pc[i].REPORTID, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
  2218. int upload_count = OracleHelper<object>.ExecuteNonQuery(sql_upload);
  2219. if (upload_count < 1)
  2220. {
  2221. LogHelper.Info("[PACS]更新表【已上传PDF】失败,跳过本条数据上传下一条!");
  2222. LogHelper.Info("执行sql:" + sql_upload);
  2223. ShowLog = "[PACS]新增表【已上传PDF】失败,跳过本条数据上传下一条!执行sql:" + sql_upload;
  2224. this.SetText(ShowLog);
  2225. continue;
  2226. }
  2227. }
  2228. }
  2229. if (count_pc > 0)
  2230. {
  2231. ShowLog = "本次补传[PACS]数据为[" + count_pc + "]条,等待下一次轮询。";
  2232. this.SetText(ShowLog);
  2233. LogHelper.Info(ShowLog);
  2234. GetPacsDefault();
  2235. }
  2236. #endregion
  2237. }
  2238. }
  2239. catch (Exception ex)
  2240. {
  2241. LogHelper.Error(ex);
  2242. }
  2243. }
  2244. /// <summary>
  2245. /// 生成pdf
  2246. /// </summary>
  2247. /// <param name="orgName">印江自治县人民医院</param>
  2248. /// <param name="baseInfo">"姓名:刘蚝 性别:男 年龄:20岁 床号:8床 住院号:20121545 门诊号:65478854"</param>
  2249. /// <param name="findings"></param>
  2250. /// <param name="diagnosResult"></param>
  2251. /// <param name="signature">签名:杨添红 日期:2022.9.7</param>
  2252. private string CreatePDF(string orgName, string baseInfo, string findings, string diagnosResult, string signature)
  2253. {
  2254. string res = "";
  2255. try
  2256. {
  2257. Document document = new Document(HeaderAndFooterEvent.rect);
  2258. //string dic = AppDomain.CurrentDomain.BaseDirectory + "Pacs\\";
  2259. if (!Directory.Exists(DicPacs))
  2260. {
  2261. Directory.CreateDirectory(DicPacs);
  2262. }
  2263. string path = DicPacs + Guid.NewGuid() + ".pdf";
  2264. //此处使用的是http请求的流,你也可以使用文件流Stream
  2265. FileStream str = new FileStream(path, FileMode.Create);
  2266. PdfWriter writer = PdfWriter.GetInstance(document, str);
  2267. document.Open();
  2268. writer.PageEvent = new HeaderAndFooterEvent();
  2269. HeaderAndFooterEvent.PAGE_NUMBER = false;//实现页眉跟页脚
  2270. HeaderAndFooterEvent.tpl = writer.DirectContent.CreateTemplate(500, 500); //定义模板
  2271. //印江自治县人民医院
  2272. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 12);
  2273. document.Add(HeaderAndFooterEvent.AddParagraph(orgName, 1, 1.5f));
  2274. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 12);
  2275. document.Add(HeaderAndFooterEvent.AddParagraph("检查报告单", 1, 1.5f));
  2276. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 8);
  2277. document.Add(HeaderAndFooterEvent.AddParagraph(baseInfo, 0, 3f));
  2278. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 12);
  2279. document.Add(HeaderAndFooterEvent.AddParagraph(" ", 1, 1.5f));
  2280. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 8);
  2281. document.Add(HeaderAndFooterEvent.AddParagraph(@"诊断意见:" + diagnosResult, 0, 1.5f));
  2282. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 8);
  2283. document.Add(HeaderAndFooterEvent.AddParagraph(@"检查所见:" + findings, 0, 1.5f));
  2284. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 12);
  2285. document.Add(HeaderAndFooterEvent.AddParagraph(" ", 1, 1.5f));
  2286. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 8);
  2287. document.Add(HeaderAndFooterEvent.AddParagraph(signature, 2, 1.5f));
  2288. writer.Flush();
  2289. writer.CloseStream = true;
  2290. document.Close();
  2291. //writer.Close();
  2292. //str.Close();
  2293. res = path;
  2294. }
  2295. catch (Exception ex)
  2296. {
  2297. res = "";
  2298. LogHelper.Error(ex);
  2299. }
  2300. return res;
  2301. }
  2302. private string CreateLisPDF(string orgName, string baseInfo, DataTable dt, string signature, string title)
  2303. {
  2304. string res = "";
  2305. try
  2306. {
  2307. Document document = new Document(HeaderAndFooterEvent.rect);
  2308. //此处使用的是http请求的流,你也可以使用文件流Stream
  2309. //string dic = AppDomain.CurrentDomain.BaseDirectory + "Lis\\";
  2310. if (!Directory.Exists(DicLis))
  2311. {
  2312. Directory.CreateDirectory(DicLis);
  2313. }
  2314. string path = DicLis + Guid.NewGuid() + ".pdf";
  2315. FileStream str = new FileStream(path, FileMode.Create);
  2316. PdfWriter writer = PdfWriter.GetInstance(document, str);
  2317. document.Open();
  2318. writer.PageEvent = new HeaderAndFooterEvent();
  2319. HeaderAndFooterEvent.PAGE_NUMBER = false;//实现页眉跟页脚
  2320. HeaderAndFooterEvent.tpl = writer.DirectContent.CreateTemplate(500, 500); //定义模板
  2321. //印江自治县人民医院
  2322. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 12);
  2323. document.Add(HeaderAndFooterEvent.AddParagraph(orgName, 1, 1.5f));
  2324. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 12);
  2325. document.Add(HeaderAndFooterEvent.AddParagraph(title + "报告单", 1, 1.5f));
  2326. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 8);
  2327. document.Add(HeaderAndFooterEvent.AddParagraph(baseInfo, 0, 3f));
  2328. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 12);
  2329. document.Add(HeaderAndFooterEvent.AddParagraph(" ", 1, 1.5f));
  2330. //HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 8);
  2331. //document.Add(HeaderAndFooterEvent.AddParagraph(@"序号 项目 结果 单位 参考区间", 0, 1.5f));
  2332. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 8);
  2333. HeaderAndFooterEvent.CreateTable(dt, document);
  2334. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 12);
  2335. document.Add(HeaderAndFooterEvent.AddParagraph(" ", 1, 1.5f));
  2336. HeaderAndFooterEvent.SetFont(BaseColor.DARK_GRAY, "宋体", 8);
  2337. document.Add(HeaderAndFooterEvent.AddParagraph(signature, 2, 1.5f));
  2338. writer.Flush();
  2339. writer.CloseStream = true;
  2340. document.Close();
  2341. res = path;
  2342. }
  2343. catch (Exception ex)
  2344. {
  2345. LogHelper.Info("CreateLisPDF 生成失败");
  2346. res = "";
  2347. LogHelper.Error(ex);
  2348. }
  2349. return res;
  2350. }
  2351. //token是否过期
  2352. private bool isAuthorization()
  2353. {
  2354. bool result = true;
  2355. string res_aes = string.Empty;
  2356. try
  2357. {
  2358. if (string.IsNullOrWhiteSpace(Tools.accessToken) || Tools.DateTimes == null || Tools.DateTimes <= DateTime.Now)
  2359. {
  2360. //获取授权
  2361. string vi = Tools.GuidTo16String();
  2362. string url = "http://40.26.204.3:8084/phimp-napi/token";
  2363. string res = Tools.WSCenterData(url, "", vi);
  2364. res_aes = Tools.AESDecrypt(res, Tools.pwd, vi);
  2365. Authorization ahz = Tools.JsonToObject<Authorization>(Tools.FormatStr(res_aes), Encoding.UTF8);
  2366. if (ahz.statusCode != "1")
  2367. {
  2368. ShowLog = ahz.message + ",获取Token授权失败!等待下一次轮询。";
  2369. this.SetText(ShowLog);
  2370. LogHelper.Info(ShowLog);
  2371. result = false;
  2372. }
  2373. Tools.accessToken = ahz.mainBody.accessToken;
  2374. Tools.DateTimes = DateTime.Now.AddSeconds(int.Parse(ahz.mainBody.expirationTime));
  2375. }
  2376. }
  2377. catch (Exception e)
  2378. {
  2379. result = false;
  2380. LogHelper.Info("isAuthorization Exception=" + result);
  2381. LogHelper.Info(res_aes+"获取token异常" + e.Message);
  2382. return result;
  2383. }
  2384. LogHelper.Info("isAuthorization="+ result);
  2385. return result;
  2386. }
  2387. private void Form1_FormClosing(object sender, FormClosingEventArgs e)
  2388. {
  2389. if (e.CloseReason == CloseReason.UserClosing)
  2390. {
  2391. //是否取消close操作
  2392. e.Cancel = true;
  2393. this.WindowState = FormWindowState.Minimized;
  2394. }
  2395. }
  2396. private void checkBox1_Click(object sender, EventArgs e)
  2397. {
  2398. int hr = 0;
  2399. string sql = @"update 互认配置表 set 互认 = {0}";
  2400. bool bl = checkBox1.Checked;
  2401. if (checkBox1.Checked)
  2402. {
  2403. hr = 1;
  2404. }
  2405. sql = string.Format(sql, hr);
  2406. int res = OracleHelper<object>.ExecuteNonQuery(sql);
  2407. if (res > 0)
  2408. {
  2409. if (bl)
  2410. {
  2411. textBox1.Text = "已修改为互认!";
  2412. }
  2413. else
  2414. {
  2415. textBox1.Text = "已修改为不互认!";
  2416. }
  2417. }
  2418. else
  2419. {
  2420. textBox1.Text = "是否互认修改失败!";
  2421. if (bl)
  2422. {
  2423. checkBox1.Checked = false;
  2424. }
  2425. else
  2426. {
  2427. checkBox1.Checked = true;
  2428. }
  2429. }
  2430. }
  2431. private void checkBox2_CheckedChanged(object sender, EventArgs e)
  2432. {
  2433. AutoStart();
  2434. }
  2435. public void GetLisDefault()
  2436. {
  2437. string sql = @"select count(1) listotal from lis_upload where attachmentId is null";
  2438. DataTable dt = new DataTable();
  2439. if (zlhr==zlhrConstant_true)
  2440. {
  2441. dt = OracleHelper<object>.PgQueryDS(sql);
  2442. }
  2443. else
  2444. {
  2445. dt = OracleHelper<object>.RunQueryDS(sql);
  2446. }
  2447. string label_lis = dt.Rows[0]["listotal"].ToString() + "条";
  2448. string lis_count = Lis_total + "条";
  2449. this.SetLisText(label_lis);
  2450. this.SetLisCountText(lis_count);
  2451. //获取待上传的数量
  2452. string waitsql = @"select count(1) listotal from lis_upload a ,已上传PDF b
  2453. where b.businessnumber = a.BUSINESSNUMBER
  2454. and b.reportid = a.REPORTID
  2455. and b.attachmentid is not null
  2456. and b.uploaded = 0
  2457. and b.type = 2";
  2458. DataTable waitdt = new DataTable();
  2459. if (zlhr == zlhrConstant_true)
  2460. {
  2461. waitdt = OracleHelper<object>.PgQueryDS(waitsql);
  2462. }
  2463. else
  2464. {
  2465. waitdt = OracleHelper<object>.RunQueryDS(sql);
  2466. }
  2467. LogHelper.Info("待上传数量为:" + waitdt.Rows[0]["listotal"].ToString() + "条");
  2468. }
  2469. public void GetPacsDefault()
  2470. {
  2471. string sql = @"select count(1) pacstotal from pacs_upload where attachmentId is null";
  2472. DataTable dt = OracleHelper<object>.RunQueryDS(sql);
  2473. string label_pacs = dt.Rows[0]["pacstotal"].ToString() + "条";
  2474. string pacs_count = pacs_total + "条";
  2475. this.SetPassText(label_pacs);
  2476. this.SetPacsCountText(pacs_count);
  2477. }
  2478. private void SetText(string text)
  2479. {
  2480. // InvokeRequired需要比较调用线程ID和创建线程ID
  2481. // 如果它们不相同则返回true
  2482. if (this.textBox1.InvokeRequired)
  2483. {
  2484. SetTextCallback d = new SetTextCallback(SetText);
  2485. this.Invoke(d, new object[] { text });
  2486. }
  2487. else
  2488. {
  2489. this.textBox1.Text = text;
  2490. }
  2491. }
  2492. private void SetLisText(string text)
  2493. {
  2494. // InvokeRequired需要比较调用线程ID和创建线程ID
  2495. // 如果它们不相同则返回true
  2496. if (this.textBox1.InvokeRequired)
  2497. {
  2498. SetTextCallback d = new SetTextCallback(SetLisText);
  2499. this.Invoke(d, new object[] { text });
  2500. }
  2501. else
  2502. {
  2503. this.label_lis.Text = text;
  2504. }
  2505. }
  2506. private void SetPassText(string text)
  2507. {
  2508. // InvokeRequired需要比较调用线程ID和创建线程ID
  2509. // 如果它们不相同则返回true
  2510. if (this.textBox1.InvokeRequired)
  2511. {
  2512. SetTextCallback d = new SetTextCallback(SetPassText);
  2513. this.Invoke(d, new object[] { text });
  2514. }
  2515. else
  2516. {
  2517. this.label_pacs.Text = text;
  2518. }
  2519. }
  2520. private void SetLisCountText(string text)
  2521. {
  2522. // InvokeRequired需要比较调用线程ID和创建线程ID
  2523. // 如果它们不相同则返回true
  2524. if (this.textBox1.InvokeRequired)
  2525. {
  2526. SetTextCallback d = new SetTextCallback(SetLisCountText);
  2527. this.Invoke(d, new object[] { text });
  2528. }
  2529. else
  2530. {
  2531. this.lis_count.Text = text;
  2532. }
  2533. }
  2534. private void SetPacsCountText(string text)
  2535. {
  2536. // InvokeRequired需要比较调用线程ID和创建线程ID
  2537. // 如果它们不相同则返回true
  2538. if (this.textBox1.InvokeRequired)
  2539. {
  2540. SetTextCallback d = new SetTextCallback(SetPacsCountText);
  2541. this.Invoke(d, new object[] { text });
  2542. }
  2543. else
  2544. {
  2545. this.pacs_count.Text = text;
  2546. }
  2547. }
  2548. private void DelPDF()
  2549. {
  2550. //每月1号删除
  2551. if (DateTime.Now.Day != 1)
  2552. {
  2553. return;
  2554. }
  2555. int month = OracleHelper<object>.UploadTime();
  2556. if (month < 1)
  2557. {
  2558. return;
  2559. }
  2560. string sql = @"delete from 已上传PDF a where a.uploaded = 1 And a.Uploade_Time < add_months(Sysdate,-{0})";
  2561. sql = string.Format(sql,month);
  2562. OracleHelper<object>.ExecuteNonQuery(sql);
  2563. }
  2564. }
  2565. }