index.ashx 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. /// </summary>
  13. public class DKService_ExHGS3QR_AddWorkInfoHGS3_QR : IHttpHandler,IReadOnlySessionState
  14. {
  15. public void ProcessRequest(HttpContext context)
  16. {
  17. context.Response.ContentType = "text/plain";
  18. //获取参数
  19. string barcode = context.Request["barcode"] is object ? context.Request["barcode"] : "";
  20. string procedure_no = context.Request["procedure_no"] is object ? context.Request["procedure_no"] : "";
  21. string road_no = context.Request["road_no"] is object ? context.Request["road_no"] : "0";
  22. string rack = context.Request["rack"] is object ? context.Request["rack"] : "";
  23. string position = context.Request["position"] is object ? context.Request["position"] : "";
  24. string procedure_in = context.Request["procedure_in"] is object ? context.Request["procedure_in"] : "1";
  25. //调用WCF接口
  26. WCF wcf = new WCF();
  27. wcf.Para.Add(new JProperty("barcode", barcode));
  28. wcf.Para.Add(new JProperty("procedure_no", procedure_no));
  29. wcf.Para.Add(new JProperty("road_no", road_no));
  30. wcf.Para.Add(new JProperty("rack", rack));
  31. wcf.Para.Add(new JProperty("position", position));
  32. wcf.Para.Add(new JProperty("procedure_in", procedure_in));
  33. string jsonStr = wcf.Get("/DKService/ExHGS3QR/AddWorkInfoHGS3_QR");
  34. //这个接口很小的机率会带出html标签===============================================
  35. if (jsonStr.IndexOf("<html>") > 0) jsonStr = jsonStr.Substring(0, jsonStr.IndexOf("<html>"));
  36. //xuwei fix 2022-05-28 有时会带出 DOCTYPEhtml标签
  37. jsonStr = jsonStr.Replace("<!DOCTYPEhtml>","");
  38. jsonStr = jsonStr.Replace("\\u000d\\u000a", "")
  39. .Replace("\\n","").Replace("\\","").Replace(" ","")
  40. .Replace("产品编码:"," 产品编码 ")
  41. .Replace("当前工序:"," 当前工序 ")
  42. .Replace("可到工序:"," 可到工序 ")
  43. .Replace("{\"d\":\"","")
  44. .Replace("\"}\"}","\"}")
  45. ;
  46. Curtain.Log.Logger.Debug(context.Request.UserHostAddress + "\r\n" + context.Request.Url + "\r\n" +jsonStr);
  47. string apiResult = "";
  48. //处理输出结果 OK开头成功 NOK开头失败
  49. JObject json = JObject.Parse(jsonStr);
  50. bool apiStatus = false;
  51. apiStatus = Convert.ToBoolean(json["success"]);
  52. apiResult = jsonStr;
  53. context.Response.Write(apiResult);
  54. //记录接口调用日志
  55. Hashtable ht = new Hashtable();
  56. ht.Add("barcode", barcode);
  57. ht.Add("procedure_no", procedure_no);
  58. ht.Add("road_no", road_no);
  59. ht.Add("rack", rack);
  60. ht.Add("position", position);
  61. ht.Add("procedure_in", procedure_in);
  62. int apiId = Convert.ToInt32(procedure_no.Replace("_", "") + road_no + procedure_in);
  63. barcode = barcode.Replace("2c%", ",");
  64. int apiBarcodeCount = barcode.Split(',').Length;
  65. string apiUrl = "http://" + HttpContext.Current.Request.Url.Host + ":" + HttpContext.Current.Request.Url.Port.ToString() + "/api/DKService/ExHGS3QR/AddWorkInfoHGS3_QR/?" + JsonClient.ParaToString(ht);
  66. ApiLog.WriteApiLog("立库_扫码", apiUrl, apiStatus, apiResult, apiId, apiBarcodeCount);
  67. }
  68. public bool IsReusable
  69. {
  70. get
  71. {
  72. return false;
  73. }
  74. }
  75. }