public TaskRequest queryTaskByNo(string dzwlbh, out string strerr) { strerr = string.Empty; try { Interfaces.Service.FenceService serv = new Interfaces.Service.FenceService(); //yw_hddz_wlgzEntity wlgz = serv.getWlgzByDzwlbh(dzwlbh); //List<yw_hddz_wlgz_cmdEntity> cmdlist = serv.getWlgzcmdByRwbh(wlgz.rwbh); string token = HttpUtility.UrlEncode(DESEncrypt(userid)); string url = baseUrl + "/getListenFence.do"; string param = "userId=" + userid + "&token=" + token + "&source=1&taskNo=" + dzwlbh; string strJson = PostWebRequest(url, param, Encoding.UTF8); FenceResponse <TaskRequest> response = JsonConvert.DeserializeObject <FenceResponse <TaskRequest> >(strJson); if (response.code == "0") { return(response.result); } else { strerr = response.des; } } catch (Exception ex) { strerr = ex.Message; writeLog("queryTaskByNo出现异常:" + ex.Message); } return(null); }
/// <exception cref="Com.Google.Protobuf.ServiceException"/> public virtual JournalProtocolProtos.FenceResponseProto Fence(RpcController controller , JournalProtocolProtos.FenceRequestProto req) { try { FenceResponse resp = impl.Fence(PBHelper.Convert(req.GetJournalInfo()), req.GetEpoch (), req.GetFencerInfo()); return((JournalProtocolProtos.FenceResponseProto)JournalProtocolProtos.FenceResponseProto .NewBuilder().SetInSync(resp.IsInSync()).SetLastTransactionId(resp.GetLastTransactionId ()).SetPreviousEpoch(resp.GetPreviousEpoch()).Build()); } catch (IOException e) { throw new ServiceException(e); } }
public bool stopTask(string dzwlbh, out string strerr) { strerr = string.Empty; Interfaces.Service.FenceService serv = new Interfaces.Service.FenceService(); s_fence_log log = new s_fence_log(); log.jklx = "终止监控"; log.sfcg = 0; log.dzwlbh = dzwlbh; try { string url = baseUrl + "/stopTaskForce.do"; userid = QsWebSoft.AppService.GetUserID(); if (string.IsNullOrEmpty(userid)) { userid = "10000"; } string token = HttpUtility.UrlEncode(DESEncrypt(userid)); string param = string.Format("userId={0}&token={1}&source=0&taskNo={2}", userid, token, dzwlbh); log.reqjson = param; string strJson = PostWebRequest(url, param, Encoding.UTF8); log.resjson = strJson; FenceResponse response = JsonConvert.DeserializeObject <FenceResponse>(strJson); if (response.code == "0") { log.sfcg = 1; } else { strerr = response.des; } } catch (Exception ex) { strerr = ex.Message; writeLog("stopTask出现异常:" + ex.Message); } finally { log.msg = strerr; serv.addfencelog(log); } return(log.sfcg == 1); }
/// <summary> /// 调用中间体 集装箱抓取 /// </summary> /// <param name="jzxh">集装箱号</param> /// <param name="ztdh">提单号</param> /// <param name="yjkgsj">预计靠港时间</param> /// <param name="strerr">异常信息</param> /// <returns></returns> public static bool containerShip(string jzxh, string ztdh, string yjkgsj, out string strerr) { strerr = string.Empty; Interfaces.Service.FenceService serv = new Interfaces.Service.FenceService(); s_fence_log log = new s_fence_log(); log.jklx = "集装箱推送"; log.sfcg = 0; log.dzwlbh = jzxh; try { string url = baseUrl + "/api/grab/grabContainerStatus"; string userid = "10000"; string token = HttpUtility.UrlEncode(DESEncrypt(userid)); string param = string.Format("userId={0}&token={1}&boxNumber={2}&ladingBill={3}&expectedStopTime={4}", userid, token, jzxh, ztdh, yjkgsj); log.reqjson = param; string strJson = PostWebRequest(url, param, Encoding.UTF8); log.resjson = strJson; FenceResponse response = JsonConvert.DeserializeObject <FenceResponse>(strJson); if (response.code == "0") { log.sfcg = 1; } else { strerr = response.des; } } catch (Exception ex) { strerr = ex.Message; writeLog("pushShip出现异常:" + ex.Message); } finally { log.msg = strerr; serv.addfencelog(log); } return(log.sfcg == 1); }
public bool AddLogisticsMonitoring(string dzwlbh, out string strerr) { Interfaces.Service.FenceService serv = new Interfaces.Service.FenceService(); strerr = ""; s_fence_log log = new s_fence_log(); log.jklx = "添加监控"; log.sfcg = 0; log.dzwlbh = dzwlbh; try { yw_hddz_wlgzEntity wlgz = serv.getWlgzByDzwlbh(dzwlbh); userid = QsWebSoft.AppService.GetUserID(); if (wlgz == null) { throw new Exception("编号" + dzwlbh + "的任务不存在"); } List <yw_hddz_wlgz_cmdEntity> cmdlist = serv.getWlgzcmdByRwbh(wlgz.rwbh); string token = HttpUtility.UrlEncode(DESEncrypt(userid)); string url = baseUrl + "/saveFenceInfo.do"; #region 日志 Hashtable ht = new Hashtable(); ht.Add("wlgz", wlgz); ht.Add("item", cmdlist); log.rwbh = wlgz.rwbh; log.rwkssj = wlgz.rwkssj; log.cph = wlgz.cph; log.sfxz = wlgz.status == 0 ? 1 : 0; log.reqjson = JsonConvert.SerializeObject(ht); #endregion if (string.IsNullOrEmpty(wlgz.cph) || wlgz.rwkssj == null) { throw new Exception("车牌号和任务开始时间必须都不能为空"); } if (wlgz.sfybd != "Y") { throw new Exception("必须有北斗设备才能添加监控任务"); } ElectronicFenceTask task = new ElectronicFenceTask(); task.taskNo = wlgz.dzwlbh; task.userId = userid; task.vno = wlgz.cph; task.starttime = wlgz.rwkssj.GetValueOrDefault().ToString("yyyy-MM-dd HH:mm:ss"); task.endtime = wlgz.rwkssj.GetValueOrDefault().AddDays(2).ToString("yyyy-MM-dd HH:mm:ss"); if (wlgz.rwkssj.GetValueOrDefault().AddDays(2) <= DateTime.Now) { throw new Exception("任务开始时间不能为2天前"); } task.fences = new List <ElectronicFenceTaskItem>(); bool isJump = true; int jumpNum = 0; foreach (var cmd in cmdlist) { ElectronicFenceTaskItem item = new ElectronicFenceTaskItem(); item.address = string.IsNullOrEmpty(cmd.dz_xx) ? cmd.rwmc : cmd.dz_xx; if (cmd.wllx == 0 && (string.IsNullOrEmpty(cmd.jd) || string.IsNullOrEmpty(cmd.wd) || string.IsNullOrEmpty(cmd.fw))) { if (cmd.wlxh == cmdlist.Count && cmd.rwmc == "堆场")// 最后一个堆场节点可以出现经度纬度为空 { continue; } throw new Exception("围栏类型为圆时经度、维度、范围必须都不能为空"); } if (cmd.wllx == 1 && string.IsNullOrEmpty(cmd.points)) { if (cmd.wlxh == cmdlist.Count && cmd.rwmc == "堆场")// 最后一个堆场节点可以出现空坐标 { continue; } throw new Exception("围栏类型为多边形时坐标点points不能为空"); } if ((cmd.jrdzwlsj != null && cmd.jdzwlsj_czry != "北斗") || (cmd.cdzwlsj != null && cmd.cdzwlsj_czry != "北斗")) { jumpNum = cmd.wlxh; isJump = true; } else { isJump = false; } item.no = cmd.wlxh; item.lat = cmd.wd; item.lng = cmd.jd; item.radius = cmd.fw; item.type = "0"; item.style = cmd.wllx == 1 ? "polygon" : "circle"; if (!string.IsNullOrEmpty(cmd.points)) { item.points = cmd.points.Replace("\"", "\'"); } //if (cmd.wlxh == 1 && cmd.rwlx != "1") //{ // item.type = "2"; //} //if (cmd.wlxh == 1 && cmd.rwmc != "港区") //{ // item.type = "2"; //} task.fences.Add(item); } if (isJump && jumpNum == task.fences[task.fences.Count - 1].no) { stopTask(task.taskNo, out strerr); serv.updateTaskExcptionStatusByRwbh(task.taskNo, 3); throw new Exception(" 最后一个节点已经有进出围栏时间, 自动终止围栏任务"); } //最后一个节点 只监控进 task.fences[task.fences.Count - 1].type = "1"; log.reqjson = JsonConvert.SerializeObject(task); string param = "userId=" + userid + "&token=" + token + "&json=" + HttpUtility.UrlEncode(log.reqjson); log.resjson = PostWebRequest(url, param, Encoding.UTF8); //log.resjson = "{\"code\":\"0\"}"; FenceResponse response = JsonConvert.DeserializeObject <FenceResponse>(log.resjson); if (response.code == "0") { if (wlgz.status == 0 || wlgz.status == null) { //修改监控状态 serv.updatewlgzstatus(wlgz.rwbh, 1); } writeLog("任务" + dzwlbh + "添加监控成功"); if (isJump && jumpNum > 0) { log.tgjd = jumpNum; string strErr = ""; if (jumpFence(dzwlbh, jumpNum + 1, out strErr)) { writeLog("任务" + dzwlbh + "监控节点自动跳到第" + (jumpNum) + "个节点"); return(true); } else { throw new Exception("跳过围栏时出现异常,描述:" + strErr); } } log.sfcg = 1; } else { throw new Exception(response.des); } } catch (Exception ex) { strerr = ex.Message; writeLog("添加任务" + dzwlbh + "出现异常" + ex.Message); } finally { log.msg = strerr; serv.addfencelog(log); } return(log.sfcg == 1); }