QXApi.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450
  1. using Microsoft.AspNetCore.Http;
  2. using QM.KJGH.CGGL.Model.CGSBT;
  3. using QM.KJGH.CGGL.Model.QxCghj;
  4. using QM.KJGH.CGGL.NMCGHJ.QX.Models;
  5. using QM.KJGH.Model.KJGH;
  6. using QM.KJGH.Model.KJGH.CGHJ;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.IO;
  10. using System.Linq;
  11. using System.Net;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using WS;
  15. using WS.AutoMapper;
  16. using WS.Http;
  17. using WS.IO;
  18. using WS.Log;
  19. namespace QM.KJGH.CGGL.NMCGHJ.QX
  20. {
  21. public class QXApi
  22. {
  23. /// <summary>
  24. /// 登录获取Token接口
  25. /// </summary>
  26. /// <param name=""></param>
  27. /// <returns></returns>
  28. public static string GetToken()
  29. {
  30. RunLog.Info("登录获取Token接口");
  31. //参数
  32. var pars = new { appid= QXConfig.APPID };
  33. //设置请求头
  34. var res = HttpHelper.HttpPost(QXConfig.URL_AUTHORIZE, pars.ToJson());
  35. RunLog.Info("登录获取Token接口返回:" + res);
  36. var resModel = res.ToModel<QXResponseApiModel>();
  37. if (resModel.Success)
  38. {
  39. QXResToken token = resModel.Data.ToString().ToModel<QXResToken>();
  40. return token.token;
  41. }
  42. else
  43. {
  44. RunLog.Debug("登录获取Token接口失败=>" + res);
  45. }
  46. return "";
  47. }
  48. #region 规划成果
  49. /// <summary>
  50. /// 接口1:检查文件分片信息
  51. /// </summary>
  52. /// <returns></returns>
  53. public static CghjQxcgsbrwView_QX Md5(CghjQxcgsbrwIo input)
  54. {
  55. RunLog.Info($"QXApi:检查文件分片信息:" + input.ToJson());
  56. if (string.IsNullOrWhiteSpace(input.MD5))
  57. throw new UseArgumentException("文件MD5参数不能为空");
  58. input.APPID = QXConfig.APPID;
  59. var token = GetToken();
  60. //参数
  61. Dictionary<string, string> pars = input.ToDictionary<string>();
  62. //设置请求头
  63. Dictionary<string, string> headers = new Dictionary<string, string>();
  64. headers.Add("Authorization", token);
  65. var urlParam = ApiHelper.FormatUrlParam(pars);
  66. var res = HttpHelper.HttpGet(QXConfig.URL_RESULTS_MD5, urlParam, headers);
  67. RunLog.Info($"QXApi:检查文件分片信息返回:" + res.ToJson());
  68. var resModel = res.ToModel<ResponseApiModel>();
  69. if (resModel.Success)
  70. {
  71. var qx = resModel.Data.ToJson().ToModel<CghjQxcgsbrwView_QX>();
  72. qx.token = token;
  73. return qx;
  74. }
  75. else
  76. {
  77. RunLog.Debug("检查文件分片信息失败=>" + res);
  78. throw new UseArgumentException("检查文件分片信息失败:"+ resModel.Message);
  79. }
  80. }
  81. /// <summary>
  82. /// 接口2:分片上传成果包
  83. /// </summary>
  84. /// <returns></returns>
  85. public static string Upload(CghjQxcgsbrwfpIo_QY input, string file)
  86. {
  87. RunLog.Info($"QXApi:分片上传成果包:" + input.ToJson());
  88. //设置请求头
  89. Dictionary<string, string> headers = new Dictionary<string, string>();
  90. headers.Add("Authorization", input.token);
  91. Dictionary<string, string> param = new Dictionary<string, string>();
  92. param.Add("md5", input.MD5);
  93. param.Add("chunk", input.chunk.ToString());
  94. //文件
  95. var files = new Dictionary<string, string>();
  96. files.Add("file", file);
  97. string res;
  98. try
  99. {
  100. res = ApiHelper.HttpPostData(QXConfig.URL_RESULTS_UPLOAD, param, input.chunk.ToString(), file, input.token, timeOut: QXConfig.TIME_OUT);
  101. }
  102. catch (WebException ex)
  103. {
  104. RunLog.Error(ex, "分片上传成果包失败=>" + ex.Message);
  105. throw new UseArgumentException("操作失败:" + ex.Message);
  106. }
  107. //var res = ApiHelper.HttpPostFormdata(QXConfig.URL_RESULTS_UPLOAD, postData: param, files: files, headers:headers);
  108. RunLog.Info($"QXApi:分片上传成果包返回:" + res.ToJson());
  109. //var res = ApiHelper.HttpPost(QXConfig.URL_RESULTS_UPLOAD, param, new string[] { file}, headers);
  110. var resModel = res.ToModel<ResponseApiModel>();
  111. if (resModel.Success)
  112. {
  113. return "上传成功";
  114. }
  115. else
  116. {
  117. RunLog.Debug("分片上传成果包失败=>" + res);
  118. throw new UseArgumentException("操作失败:" + resModel.Message);
  119. }
  120. }
  121. /// <summary>
  122. /// 接口3:合包并提交成果
  123. /// </summary>
  124. /// <returns></returns>
  125. public static string Complete(CghjQxcgsbrwhbIo_QY input)
  126. {
  127. RunLog.Info($"QXApi:合包并提交成果:" + input.ToJson());
  128. //设置请求头
  129. Dictionary<string, string> headers = new Dictionary<string, string>();
  130. headers.Add("Authorization", input.token);
  131. var res = HttpHelper.HttpPost(QXConfig.URL_RESULTS_COMPLETE, input.ToJson(), headers);
  132. RunLog.Info($"QXApi:合包并提交成果返回:" + res.ToJson());
  133. var resModel = res.ToModel<ResponseApiModel>();
  134. if (resModel.Success)
  135. {
  136. return "上传成功";
  137. }
  138. else
  139. {
  140. RunLog.Debug("合包并提交成果失败=>" + res);
  141. throw new Exception(resModel.Message);
  142. }
  143. }
  144. /// <summary>
  145. /// 接口:更新审查进度
  146. /// </summary>
  147. /// <returns></returns>
  148. public static List<CghjQxcgScjd> UploadProgres(string ids)
  149. {
  150. RunLog.Info($"QXApi:更新审查进度:" + ids);
  151. var token = GetToken();
  152. //参数
  153. Dictionary<string, string> pars = new Dictionary<string, string>();
  154. pars.Add("ids", ids);
  155. //设置请求头
  156. Dictionary<string, string> headers = new Dictionary<string, string>();
  157. headers.Add("Authorization", token);
  158. var urlParam = ApiHelper.FormatUrlParam(pars);
  159. var res = HttpHelper.HttpGet(QXConfig.URL_RESULTS_PROGRES, urlParam, headers);
  160. RunLog.Info($"QXApi:更新审查进度返回:" + res.ToJson());
  161. var resModel = res.ToModel<ResponseApiModel>();
  162. if (resModel.Success)
  163. {
  164. return resModel.Data.ToJson().ToModel<List<CghjQxcgScjd>>();
  165. }
  166. else
  167. {
  168. RunLog.Debug("检查文件分片信息失败=>" + res);
  169. throw new UseArgumentException("检查文件分片信息失败:" + resModel.Message);
  170. }
  171. }
  172. #endregion
  173. #region 监测指标
  174. /// <summary>
  175. /// 接口1:监测指标上报
  176. /// </summary>
  177. /// <returns></returns>
  178. public static bool JczbReport(JcyjzbReportIo input)
  179. {
  180. RunLog.Info($"QXApi:监测指标上报:" + input.ToJson());
  181. var token = GetToken();
  182. //设置请求头
  183. Dictionary<string, string> headers = new Dictionary<string, string>();
  184. headers.Add("Authorization", token);
  185. var res = HttpHelper.HttpPost(QXConfig.URL_MONITORING_REPORT, input.ToJson(), headers);
  186. RunLog.Info($"QXApi:监测指标上报返回:" + res.ToJson());
  187. var resModel = res.ToModel<ResponseApiModel>();
  188. if (resModel.Success)
  189. {
  190. return true;
  191. }
  192. else
  193. {
  194. RunLog.Debug("监测指标上报失败=>" + res);
  195. throw new UseArgumentException("监测指标上报失败:" + resModel.Message);
  196. }
  197. }
  198. /// <summary>
  199. /// 接口2:监测指标上传
  200. /// </summary>
  201. /// <returns></returns>
  202. public static bool JczbUpload(string file)
  203. {
  204. RunLog.Info($"QXApi:监测指标上传:" + file);
  205. var token = GetToken();
  206. var res = ApiHelper.HttpPostData(QXConfig.URL_MONITORING_UPLOAD, null, Path.GetFileName(file), file, token, timeOut: QXConfig.TIME_OUT);
  207. RunLog.Info($"QXApi:监测指标上传返回:" + res.ToJson());
  208. var resModel = res.ToModel<ResponseApiModel>();
  209. if (resModel.Success)
  210. {
  211. return true;
  212. }
  213. else
  214. {
  215. RunLog.Debug("监测指标上传失败=>" + res);
  216. throw new UseArgumentException("监测指标上传失败:" + resModel.Message);
  217. }
  218. }
  219. #endregion
  220. #region 体检评估
  221. /// <summary>
  222. /// 接口1:获取体检评估上报任务
  223. /// </summary>
  224. /// <returns></returns>
  225. public static List<CghjQxtjpgrwView> TjpgTemplate(CghjQxtjpgrwQuery input)
  226. {
  227. RunLog.Info($"QXApi:获取体检评估上报任务:" + input.ToJson());
  228. var token = GetToken();
  229. //参数
  230. Dictionary<string, string> pars = input.ToDictionary<string>();
  231. //设置请求头
  232. Dictionary<string, string> headers = new Dictionary<string, string>();
  233. headers.Add("Authorization", token);
  234. var urlParam = ApiHelper.FormatUrlParam(pars);
  235. var res = HttpHelper.HttpGet(QXConfig.URL_CHECKUP_TEMPLATE, urlParam, headers);
  236. RunLog.Info($"QXApi:获取体检评估上报任务返回:" + res.ToJson());
  237. var resModel = res.ToModel<ResponseApiModel>();
  238. if (resModel.Success)
  239. {
  240. var qx = resModel.Data.ToJson().ToModel<List<CghjQxtjpgrwView>>();
  241. return qx;
  242. }
  243. else
  244. {
  245. RunLog.Debug("获取体检评估上报任务失败=>" + res);
  246. throw new UseArgumentException("获取体检评估上报任务失败:" + resModel.Message);
  247. }
  248. }
  249. /// <summary>
  250. /// 接口2:上报体检评估任务结果信息
  251. /// </summary>
  252. /// <returns></returns>
  253. public static bool TjpgUpload(string id , string file)
  254. {
  255. RunLog.Info($"QXApi:上报体检评估任务结果信息:{id} => {file}");
  256. var token = GetToken();
  257. Dictionary<string, string> param = new Dictionary<string, string>();
  258. param.Add("id", id);
  259. var res = ApiHelper.HttpPostData(QXConfig.URL_CHECKUP_UPLOAD, param, Path.GetFileName(file), file, token, timeOut:QXConfig.TIME_OUT);
  260. RunLog.Info($"QXApi:上报体检评估任务结果信息返回:" + res.ToJson());
  261. var resModel = res.ToModel<ResponseApiModel>();
  262. if (resModel.Success)
  263. {
  264. return true;
  265. }
  266. else
  267. {
  268. RunLog.Debug("上报体检评估任务结果信息失败=>" + res);
  269. throw new UseArgumentException("上报体检评估任务结果信息失败:" + resModel.Message);
  270. }
  271. }
  272. #endregion
  273. #region 成果包查询接口
  274. /// <summary>
  275. /// 4.1 查询已办成果流程
  276. /// </summary>
  277. /// <returns></returns>
  278. public static List<CghjCgsbrwYbcg> GetYbcg(CghjCgcxIo input, ref string token)
  279. {
  280. token = GetToken();
  281. //参数
  282. Dictionary<string, string> pars = input.ToDictionary<string>();
  283. //设置请求头
  284. Dictionary<string, string> headers = new Dictionary<string, string>();
  285. headers.Add("Authorization", token);
  286. var url = ApiHelper.FormatUrlParam(pars, QXConfig.URL_LANDMYATTENDSDATA);
  287. RunLog.Info("查询已办成果流程接口请求:" + url);
  288. var res = HttpHelper.HttpGet(url, string.Empty, headers);
  289. RunLog.Info("查询已办成果流程接口返回:" + res);
  290. var resModel = res.ToModel<ResponseApiModel>();
  291. if (resModel.Success)
  292. {
  293. var qx = resModel.Data.ToJson().ToModel<List<CghjCgsbrwYbcg>>();
  294. return qx;
  295. }
  296. else
  297. {
  298. RunLog.Debug("查询已办成果流程失败=>" + res);
  299. throw new UseArgumentException("查询已办成果流程失败:" + resModel.Message);
  300. }
  301. }
  302. /// <summary>
  303. /// 4.2 查询待办成果列表
  304. /// </summary>
  305. /// <returns></returns>
  306. public static List<CghjCgsbrwDbcg> GetDbcg(CghjCgcxIo input, ref string token)
  307. {
  308. token = GetToken();
  309. //参数
  310. Dictionary<string, string> pars = input.ToDictionary<string>();
  311. //设置请求头
  312. Dictionary<string, string> headers = new Dictionary<string, string>();
  313. headers.Add("Authorization", token);
  314. var url = ApiHelper.FormatUrlParam(pars, QXConfig.URL_LANDGETALLTASKS);
  315. RunLog.Info("查询待办成果列表接口请求:" + url);
  316. var res = HttpHelper.HttpGet(url, string.Empty, headers);
  317. RunLog.Info("查询待办成果列表接口返回:" + res);
  318. var resModel = res.ToModel<ResponseApiModel>();
  319. if (resModel.Success)
  320. {
  321. var qx = resModel.Data.ToJson().ToModel<List<CghjCgsbrwDbcg>>();
  322. return qx;
  323. }
  324. else
  325. {
  326. RunLog.Debug("查询待办成果列表失败=>" + res);
  327. throw new UseArgumentException("查询待办成果列表失败:" + resModel.Message);
  328. }
  329. }
  330. /// <summary>
  331. /// 4.3 查询已办成果审批记录
  332. /// </summary>
  333. /// <returns></returns>
  334. public static List<CghjCgsbrwSpjl> GetSpjl(CghjCgcxSpjlIo input)
  335. {
  336. //var token = GetToken();
  337. //参数
  338. Dictionary<string, string> pars = input.ToDictionary<string>();
  339. pars.Remove("token");
  340. //设置请求头
  341. Dictionary<string, string> headers = new Dictionary<string, string>();
  342. headers.Add("Authorization", input.token);
  343. var url = ApiHelper.FormatUrlParam(pars, QXConfig.URL_LANDTASKSTATUS);
  344. RunLog.Info("查询已办成果审批记录接口请求:" + url);
  345. var res = HttpHelper.HttpGet(url, string.Empty, headers);
  346. RunLog.Info("查询已办成果审批记录接口返回:" + res);
  347. var resModel = res.ToModel<ResponseApiModel>();
  348. if (resModel.Success)
  349. {
  350. List<CghjCgsbrwSpjl> list = new List<CghjCgsbrwSpjl>();
  351. var jls = resModel.Data.ToJson().ToModel<List<CghjCgsbrwSpjl>>();
  352. foreach (var spjl in jls)
  353. {
  354. //CghjCgsbrwSpjl spjl = item.MapTo<CghjCgsbrwSpjl>();
  355. //if (item.COMMENTS != null && item.COMMENTS.Count > 0)
  356. //{
  357. // spjl.COMMENTS = item.COMMENTS.ToJson();
  358. //}
  359. //else
  360. //{
  361. // spjl.COMMENTS = null;
  362. //}
  363. spjl.ID = Guid.NewGuid().ToStringN();
  364. spjl.JLID = input.id;
  365. spjl.INSTID = input.instId;
  366. list.Add(spjl);
  367. }
  368. return list;
  369. }
  370. else
  371. {
  372. RunLog.Debug("查询已办成果审批记录失败=>" + res);
  373. throw new UseArgumentException("查询已办成果审批记录失败:" + resModel.Message);
  374. }
  375. }
  376. /// <summary>
  377. /// 4.4 下载成果质检审查报告
  378. /// </summary>
  379. /// <returns></returns>
  380. public static CghjCgsbrwCgzjbg GetCgzjbg(CghjCgcxScbgIo input)
  381. {
  382. //var token = GetToken();
  383. //参数
  384. Dictionary<string, string> pars = input.ToDictionary<string>();
  385. pars.Remove("token");
  386. //设置请求头
  387. Dictionary<string, string> headers = new Dictionary<string, string>();
  388. headers.Add("Authorization", input.token);
  389. var url = ApiHelper.FormatUrlParam(pars, QXConfig.URL_REPORTDOWNLOAD);
  390. RunLog.Info("下载成果质检审查报告接口请求:" + url);
  391. string path = FileManage.Instance.ToFullPath(@$"厅成果质检审查报告\{input.GHLX}报告\{input.solId}");
  392. RunLog.Info("下载成果质检审查报告保存路径:" + path);
  393. var file = ApiHelper.HttpDownFileOrDataPost(url, path, headers, timeOut: QXConfig.TIME_OUT);
  394. RunLog.Info("下载成果质检审查报告接口返回:" + file);
  395. if (file.Contains("质检审查报告暂没生成"))
  396. {
  397. return null;
  398. }
  399. else
  400. {
  401. if (string.IsNullOrWhiteSpace(file) || !File.Exists(file))
  402. {
  403. throw new UseArgumentException("下载成果质检审查报告失败");
  404. }
  405. CghjCgsbrwCgzjbg bo = new CghjCgsbrwCgzjbg()
  406. {
  407. ID = input.id,
  408. JLID = input.id,
  409. SOLID = input.solId,
  410. PATH = FileManage.Instance.ToRelativePath(file),
  411. NAME = Path.GetFileName(file),
  412. };
  413. return bo;
  414. }
  415. }
  416. #endregion
  417. }
  418. }