JGLimsInterface.cs 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using Newtonsoft.Json;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Web.Script.Serialization;
  10. using System.Windows.Forms;
  11. namespace CarMeterSystem
  12. {
  13. public class JGLimsInterface
  14. {
  15. int iCarOrder = 0; //检化验第几车
  16. private Log lg = Log.GetInstance(); //写日志
  17. private MeterWorkCarActualFirstService actualFirstService = new MeterWorkCarActualFirstService(); //一次计量服务
  18. private PreTrackScaleService scaleService = new PreTrackScaleService(); //预报接口服务
  19. /// <summary>
  20. /// 计量车辆采样及提醒
  21. /// </summary>
  22. /// <param name="trackScale"></param>
  23. public void imsCarLims(PreTrackScale trackScale) {
  24. string limsResult = "";
  25. try
  26. {
  27. //2021年12月25日 只有船转汽才掉检化验接口:即压港序号不为空!!!
  28. if (trackScale == null || string.IsNullOrEmpty(trackScale.holddockSeq))
  29. {
  30. return;
  31. }
  32. limsResult = SendPostToLims(trackScale).Replace("msg", "data");
  33. JavaScriptSerializer js = new JavaScriptSerializer(); //实例化一个能够序列化数据的类
  34. if (limsResult.Contains("-1,"))
  35. {
  36. RESTfulResult<string> list = js.Deserialize<RESTfulResult<string>>(limsResult); //将json数据转化为对象类型并赋值给list
  37. if (list != null)
  38. {
  39. PbCache.ResultMessage += ";检化验接口异常,请点【语音求助】联系司秤工处理!" + list.Data;
  40. lg.WriteLog(24, "检化验接口异常:" + limsResult);
  41. }
  42. }
  43. else
  44. {
  45. RESTfulResult<JGLimsMsg> list = js.Deserialize<RESTfulResult<JGLimsMsg>>(limsResult); //将json数据转化为对象类型并赋值给list
  46. if (list != null)
  47. {
  48. if (list.Status.ToString().Equals("1"))
  49. {
  50. RESTfulResult<JGLimsMsg> listMsg = js.Deserialize<RESTfulResult<JGLimsMsg>>(limsResult);
  51. if (listMsg.Data.place!=null && listMsg.Data.place!=null)
  52. {
  53. PbCache.ResultMessage += ";车辆需要采样,卸货点为:" + listMsg.Data.place;
  54. trackScale.loadPointNo = listMsg.Data.placecode;
  55. trackScale.loadPointName = listMsg.Data.place;
  56. if (trackScale.loadPointName!=null && trackScale.loadPointName.Contains("西区"))
  57. {
  58. trackScale.receivingUintNo = "505307";
  59. trackScale.receivingUintName = "西区物流运输部废钢管理站";
  60. }
  61. else
  62. {
  63. trackScale.receivingUintNo = "505306";
  64. trackScale.receivingUintName = "东区物流运输部废钢管理站";
  65. }
  66. trackScale.updateManNo = "检化验抽检";
  67. trackScale.updateManName = "检化验抽检(第 "+ iCarOrder + " 车次)";
  68. trackScale.limsSamplingFlag = "1"; //检化验取样状态(0=不需要取样;1=待取样(已中签);2=已取样;3=待确认(默认值))
  69. RESTfulResult<string> rESTful = scaleService.updateLoadInfoFroInterface(trackScale);
  70. lg.WriteLog(24, "车辆需要采样,卸货点为:" + listMsg.Data.place + limsResult);
  71. }
  72. else
  73. {
  74. trackScale.updateManNo = "检化验不抽检";
  75. trackScale.updateManName = "检化验不抽检(第 " + iCarOrder + " 车次)";
  76. trackScale.limsSamplingFlag = "0"; //检化验取样状态(0=不需要取样;1=待取样(已中签);2=已取样;3=待确认(默认值))
  77. RESTfulResult<string> rESTful = scaleService.updateLoadInfoFroInterface(trackScale);
  78. PbCache.ResultMessage += ";车辆不需要采样";
  79. lg.WriteLog(24, "车辆不需要采样");
  80. }
  81. }
  82. }
  83. }
  84. }
  85. catch (Exception)
  86. {
  87. PbCache.ResultMessage += "检化验接口异常,请点【语音求助】联系司秤工处理!";
  88. }
  89. }
  90. /// <summary>
  91. /// 向检化验接口传参
  92. /// </summary>
  93. /// <param name="trackScale"></param>
  94. /// <returns></returns>
  95. public string SendPostToLims(PreTrackScale trackScale)
  96. {
  97. iCarOrder = carOrder(trackScale);
  98. HttpHelper http = new HttpHelper();
  99. var item = new HttpItem()
  100. {
  101. URL = "http://192.168.127.1/external/login",
  102. Method = "POST",
  103. ContentType = "application/json",
  104. PostEncoding = Encoding.UTF8,
  105. };
  106. item.Header.Add("Accept-Encoding", "gzip, deflate");
  107. item.Header.Add("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6");
  108. dynamic backObj = new
  109. {
  110. user = "admin",
  111. password = "xxzxjg009118"
  112. };
  113. var pr = JsonConvert.SerializeObject(backObj);
  114. item.Postdata = pr;
  115. var result = http.GetHtml(item);
  116. string html = result.Html;
  117. item = new HttpItem()
  118. {
  119. URL = "http://192.168.127.1/external/mes/getisspot",
  120. Method = "POST",
  121. ContentType = "application/json",
  122. PostEncoding = Encoding.UTF8,
  123. };
  124. item.Header.Add("Authorization", $"Bearer {html}");
  125. item.Header.Add("Accept-Encoding", "gzip, deflate");
  126. item.Header.Add("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6");
  127. dynamic Obj = new
  128. {
  129. HODEDOCKSEQ = trackScale.holddockSeq,//"h201908230003", //压港序号=卸货计划号(MES)
  130. ORDER = iCarOrder + "", //同一压港序号下的第几车
  131. CONTRACTNO =trackScale.contractNo , //合同号
  132. CAR_NO = trackScale.carNo , //车号
  133. SHIP_NO = trackScale.shipNo , //船号
  134. MAT_NAME = trackScale.matterName ,//物料名
  135. MAT_CODE = trackScale.matterNo ,//物料编号
  136. SDR_NAME = trackScale.forwardingUnitName ,//发货单位名称
  137. SDR_CODE = trackScale.forwardingUnitNo ,//发货单位编号
  138. REC_NAME = trackScale.receivingUintName ,//收货单位名称
  139. REC_CODE = trackScale.receivingUintNo ,//收货单位编码
  140. SCALE_NAME = PbCache.sportInfo.baseSpotName,//汽车衡名称
  141. SCALE_CODE = PbCache.sportInfo.baseSpotNo,//汽车衡编码
  142. };
  143. var cc = JsonConvert.SerializeObject(Obj);
  144. item.Postdata = cc;
  145. result = http.GetHtml(item);
  146. html = result.Html; //
  147. return html;
  148. }
  149. /// <summary>
  150. /// 查询当前是第几车;计量完成后才调用的,所以直接count就可以了
  151. /// </summary>
  152. /// <returns></returns>
  153. public int carOrder(PreTrackScale trackScale)
  154. {
  155. int i = 1;
  156. string strMat = "0";
  157. PbModelDbService<List<PbModelDb>> pbRelation = new PbModelDbService<List<PbModelDb>>();
  158. string sql = $"select count(1) text from (select t.prediction_no from meter_work_car_actual_first t where " +
  159. $"t.holddock_seq = '"+ trackScale .holddockSeq+ "' " +
  160. $"and t.value_flag in ('1', '2') group by t.prediction_no)";
  161. RESTfulResult<List<PbModelDb>> rmRelation = pbRelation.executeSqlDataWf(sql);
  162. if (rmRelation.Succeed && rmRelation.Data != null && rmRelation.Data.Count > 0)
  163. {
  164. strMat = rmRelation.Data[0].text;
  165. i = int.Parse(strMat);
  166. }
  167. return i;
  168. }
  169. }
  170. }