index2.ashx 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <%@ WebHandler Language="C#" Class="DKService_ExHGS3QR_AddWorkInfoHGS3_QR" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using Curtain.DataAccess;
  6. using DK.XuWei.WebMes;
  7. using Newtonsoft.Json.Linq;
  8. using Curtain.Log;
  9. using System.Collections;
  10. /// <summary>
  11. /// 给金马:扫码接口
  12. /// xuwei fix 2022-05-28 增加try catch 增加容错
  13. /// </summary>
  14. public class DKService_ExHGS3QR_AddWorkInfoHGS3_QR : IHttpHandler,IReadOnlySessionState
  15. {
  16. public void ProcessRequest(HttpContext context)
  17. {
  18. context.Response.ContentType = "text/plain";
  19. //获取参数
  20. string barcode = context.Request["barcode"] is object ? context.Request["barcode"] : "";
  21. string procedure_no = context.Request["procedure_no"] is object ? context.Request["procedure_no"] : "";
  22. string road_no = context.Request["road_no"] is object ? context.Request["road_no"] : "0";
  23. string rack = context.Request["rack"] is object ? context.Request["rack"] : "";
  24. string position = context.Request["position"] is object ? context.Request["position"] : "";
  25. string procedure_in = context.Request["procedure_in"] is object ? context.Request["procedure_in"] : "1";
  26. string jsonStr = "";
  27. string apiResult = "";
  28. bool apiStatus = false;
  29. try
  30. {
  31. //调用WCF接口
  32. WCF wcf = new WCF();
  33. wcf.Para.Add(new JProperty("barcode", barcode));
  34. wcf.Para.Add(new JProperty("procedure_no", procedure_no));
  35. wcf.Para.Add(new JProperty("road_no", road_no));
  36. wcf.Para.Add(new JProperty("rack", rack));
  37. wcf.Para.Add(new JProperty("position", position));
  38. wcf.Para.Add(new JProperty("procedure_in", procedure_in));
  39. jsonStr = wcf.Get("/DKService/ExHGS3QR/AddWorkInfoHGS3_QR");
  40. //这个接口很小的机率会带出html标签===============================================
  41. if (jsonStr.IndexOf("<html>") > 0) jsonStr = jsonStr.Substring(0, jsonStr.IndexOf("<html>"));
  42. //xuwei fix 2022-05-28 有时会带出 DOCTYPEhtml标签
  43. jsonStr = jsonStr.Replace("<!DOCTYPEhtml>","");
  44. jsonStr = jsonStr.Replace("\\u000d\\u000a", "")
  45. .Replace("\\n","").Replace("\\","").Replace(" ","")
  46. .Replace("产品编码:"," 产品编码 ")
  47. .Replace("当前工序:"," 当前工序 ")
  48. .Replace("可到工序:"," 可到工序 ")
  49. .Replace("{\"d\":\"","")
  50. .Replace("\"}\"}","\"}")
  51. ;
  52. //处理输出结果 OK开头成功 NOK开头失败
  53. JObject json = JObject.Parse(jsonStr);
  54. apiStatus = Convert.ToBoolean(json["success"]);
  55. }
  56. catch (Exception ex)
  57. {
  58. //输出错误日志文件
  59. Logger.Error(ex, context.Request.UserHostAddress + "\r\n" + context.Request.Url + "\r\n" + jsonStr);
  60. }
  61. finally
  62. {
  63. //记录日志文件
  64. Logger.Debug(context.Request.UserHostAddress + "\r\n" + context.Request.Url + "\r\n" +jsonStr);
  65. apiResult = jsonStr;
  66. context.Response.Write(apiResult);
  67. //记录接口调用日志
  68. Hashtable ht = new Hashtable();
  69. ht.Add("barcode", barcode);
  70. ht.Add("procedure_no", procedure_no);
  71. ht.Add("road_no", road_no);
  72. ht.Add("rack", rack);
  73. ht.Add("position", position);
  74. ht.Add("procedure_in", procedure_in);
  75. int apiId = Convert.ToInt32(procedure_no.Replace("_", "") + road_no + procedure_in);
  76. barcode = barcode.Replace("2c%", ",");
  77. int apiBarcodeCount = barcode.Split(',').Length;
  78. string apiUrl = "http://" + HttpContext.Current.Request.Url.Host + ":" + HttpContext.Current.Request.Url.Port.ToString() + "/api/DKService/ExHGS3QR/AddWorkInfoHGS3_QR/?" + JsonClient.ParaToString(ht);
  79. ApiLog.WriteApiLog("金马_扫码", apiUrl, apiStatus, apiResult, apiId, apiBarcodeCount);
  80. }
  81. }
  82. public bool IsReusable
  83. {
  84. get
  85. {
  86. return false;
  87. }
  88. }
  89. }