Example #1
0
        /// <summary>
        ///  监控任务记录日志
        /// </summary>
        /// <param name="log"></param>
        public void addfencelog(s_fence_log log)
        {
            using (conn = ConnectionFactory.CreateConnection())
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }

                log.id = Guid.NewGuid().ToString();
                string sql = SqlFactory.GetInsertSql(log);
                conn.Execute(sql, log);
            }
        }
Example #2
0
        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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
        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);
        }