using com.hnshituo.core.webapp.vo; using Common; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Script.Serialization; using System.Windows.Forms; namespace CarMeterSystem { public class JGLimsInterface { int iCarOrder = 0; //检化验第几车 private Log lg = Log.GetInstance(); //写日志 private MeterWorkCarActualFirstService actualFirstService = new MeterWorkCarActualFirstService(); //一次计量服务 private PreTrackScaleService scaleService = new PreTrackScaleService(); //预报接口服务 /// /// 计量车辆采样及提醒 /// /// public void imsCarLims(PreTrackScale trackScale) { string limsResult = ""; try { //2021年12月25日 只有船转汽才掉检化验接口:即压港序号不为空!!! if (trackScale == null || string.IsNullOrEmpty(trackScale.holddockSeq)) { return; } limsResult = SendPostToLims(trackScale).Replace("msg", "data"); JavaScriptSerializer js = new JavaScriptSerializer(); //实例化一个能够序列化数据的类 if (limsResult.Contains("-1,")) { RESTfulResult list = js.Deserialize>(limsResult); //将json数据转化为对象类型并赋值给list if (list != null) { PbCache.ResultMessage += ";检化验接口异常,请点【语音求助】联系司秤工处理!" + list.Data; lg.WriteLog(24, "检化验接口异常:" + limsResult); } } else { RESTfulResult list = js.Deserialize>(limsResult); //将json数据转化为对象类型并赋值给list if (list != null) { if (list.Status.ToString().Equals("1")) { RESTfulResult listMsg = js.Deserialize>(limsResult); if (listMsg.Data.place!=null && listMsg.Data.place!=null) { PbCache.ResultMessage += ";车辆需要采样,卸货点为:" + listMsg.Data.place; trackScale.loadPointNo = listMsg.Data.placecode; trackScale.loadPointName = listMsg.Data.place; if (trackScale.loadPointName!=null && trackScale.loadPointName.Contains("西区")) { trackScale.receivingUintNo = "505307"; trackScale.receivingUintName = "西区物流运输部废钢管理站"; } else { trackScale.receivingUintNo = "505306"; trackScale.receivingUintName = "东区物流运输部废钢管理站"; } trackScale.updateManNo = "检化验抽检"; trackScale.updateManName = "检化验抽检(第 "+ iCarOrder + " 车次)"; trackScale.limsSamplingFlag = "1"; //检化验取样状态(0=不需要取样;1=待取样(已中签);2=已取样;3=待确认(默认值)) RESTfulResult rESTful = scaleService.updateLoadInfoFroInterface(trackScale); lg.WriteLog(24, "车辆需要采样,卸货点为:" + listMsg.Data.place + limsResult); } else { trackScale.updateManNo = "检化验不抽检"; trackScale.updateManName = "检化验不抽检(第 " + iCarOrder + " 车次)"; trackScale.limsSamplingFlag = "0"; //检化验取样状态(0=不需要取样;1=待取样(已中签);2=已取样;3=待确认(默认值)) RESTfulResult rESTful = scaleService.updateLoadInfoFroInterface(trackScale); PbCache.ResultMessage += ";车辆不需要采样"; lg.WriteLog(24, "车辆不需要采样"); } } } } } catch (Exception) { PbCache.ResultMessage += "检化验接口异常,请点【语音求助】联系司秤工处理!"; } } /// /// 向检化验接口传参 /// /// /// public string SendPostToLims(PreTrackScale trackScale) { iCarOrder = carOrder(trackScale); HttpHelper http = new HttpHelper(); var item = new HttpItem() { URL = "http://192.168.127.1/external/login", Method = "POST", ContentType = "application/json", PostEncoding = Encoding.UTF8, }; item.Header.Add("Accept-Encoding", "gzip, deflate"); 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"); dynamic backObj = new { user = "admin", password = "xxzxjg009118" }; var pr = JsonConvert.SerializeObject(backObj); item.Postdata = pr; var result = http.GetHtml(item); string html = result.Html; item = new HttpItem() { URL = "http://192.168.127.1/external/mes/getisspot", Method = "POST", ContentType = "application/json", PostEncoding = Encoding.UTF8, }; item.Header.Add("Authorization", $"Bearer {html}"); item.Header.Add("Accept-Encoding", "gzip, deflate"); 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"); dynamic Obj = new { HODEDOCKSEQ = trackScale.holddockSeq,//"h201908230003", //压港序号=卸货计划号(MES) ORDER = iCarOrder + "", //同一压港序号下的第几车 CONTRACTNO =trackScale.contractNo , //合同号 CAR_NO = trackScale.carNo , //车号 SHIP_NO = trackScale.shipNo , //船号 MAT_NAME = trackScale.matterName ,//物料名 MAT_CODE = trackScale.matterNo ,//物料编号 SDR_NAME = trackScale.forwardingUnitName ,//发货单位名称 SDR_CODE = trackScale.forwardingUnitNo ,//发货单位编号 REC_NAME = trackScale.receivingUintName ,//收货单位名称 REC_CODE = trackScale.receivingUintNo ,//收货单位编码 SCALE_NAME = PbCache.sportInfo.baseSpotName,//汽车衡名称 SCALE_CODE = PbCache.sportInfo.baseSpotNo,//汽车衡编码 }; var cc = JsonConvert.SerializeObject(Obj); item.Postdata = cc; result = http.GetHtml(item); html = result.Html; // return html; } /// /// 查询当前是第几车;计量完成后才调用的,所以直接count就可以了 /// /// public int carOrder(PreTrackScale trackScale) { int i = 1; string strMat = "0"; PbModelDbService> pbRelation = new PbModelDbService>(); string sql = $"select count(1) text from (select t.prediction_no from meter_work_car_actual_first t where " + $"t.holddock_seq = '"+ trackScale .holddockSeq+ "' " + $"and t.value_flag in ('1', '2') group by t.prediction_no)"; RESTfulResult> rmRelation = pbRelation.executeSqlDataWf(sql); if (rmRelation.Succeed && rmRelation.Data != null && rmRelation.Data.Count > 0) { strMat = rmRelation.Data[0].text; i = int.Parse(strMat); } return i; } } }