public SendToAgvResult CallBackResult(ReciveAgeCallBack agvCallBack)
        {
            DataSet ds = new DataSet();

            ds = DataTrans.D_GetAgvCallBack(agvCallBack.ReqCode, out string msg);
            SendToAgvResult result = new SendToAgvResult();

            if (ds != null)
            {
                if (ds.Tables[0].Rows.Count > 0)
                {
                    result.Code    = "1";
                    result.Message = "请求编号已存在";
                    result.Data    = "";
                    result.ReqCode = agvCallBack.ReqCode;
                }
                else
                {
                    string msgInfo = bll.HandleCallBackData(agvCallBack);
                    if (msgInfo == "OK")
                    {
                        int n = DataTrans.D_InsertCallBack(agvCallBack, "2", out msg);
                        if (n > 0)
                        {
                            result.Code    = "0";
                            result.Message = "成功";
                            result.Data    = string.Empty;
                            result.ReqCode = agvCallBack.ReqCode;
                        }
                    }
                    else
                    {
                        result.Code    = "1";
                        result.Message = "失败";
                        result.Data    = string.Empty;
                        result.ReqCode = agvCallBack.ReqCode;
                    }
                }
            }
            else
            {
                result.Code    = "1";
                result.Message = "数据处理异常";
                result.Data    = string.Empty;
                result.ReqCode = agvCallBack.ReqCode;
            }
            return(result);
        }
Example #2
0
        /// <summary>
        /// 将接受到回调信息插入表中
        /// </summary>
        /// <param name="rcvcallback"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static int D_InsertCallBack(ReciveAgeCallBack rcvcallback, string status, out string msg)
        {
            msg = "";
            int n = 0;

            //string status = "1";
            #region 注释
            //string orastr = @"INSERT INTO RICO_AGV_CALLBACK
            //                                  (REQCODE,
            //                                   REQTIME,
            //                                   INTERFACENAME,
            //                                   COOX,
            //                                   COOY,
            //                                   CURRENTPOSITIONCODE,

            //                                   MAPCODE,
            //                                   MAPDATACODE,
            //                                   METHOD,
            //                                   PODCODE,
            //                                   PODDIR,
            //                                   REBOTCODE,
            //                                   TASKCODE,
            //                                   WBCODE,
            //                                   STATUS)
            //                                VALUES
            //                                  (:REQCODE,
            //                                   :REQTIME,
            //                                   :INTERFACENAME,
            //                                   :COOX,
            //                                   :COOY,
            //                                   :CURRENTPOSITIONCODE,

            //                                   :MAPCODE,
            //                                   :MAPDATACODE,
            //                                   :METHOD,
            //                                   :PODCODE,
            //                                   :PODDIR,
            //                                   :REBOTCODE,
            //                                   :TASKCODE,
            //                                   :WBCODE,
            //                                   :STATUS)";
            //OracleParameter[] parameters = new OracleParameter[]
            //{
            //    new OracleParameter(":REQCODE",rcvcallback.ReqCode),
            //    new OracleParameter(":REQTIME",rcvcallback.ReqTime),
            //    new OracleParameter(":INTERFACENAME",rcvcallback.InterfaceName),
            //    new OracleParameter(":COOX",rcvcallback.Coox),
            //    new OracleParameter(":COOY",rcvcallback.CooY),
            //    new OracleParameter(":CURRENTPOSITIONCODE",rcvcallback.CurrentPositionCode),

            //    new OracleParameter(":MAPCODE",rcvcallback.MapCode),
            //    new OracleParameter(":MAPDATACODE",rcvcallback.MapDataCode),
            //    new OracleParameter(":METHOD",rcvcallback.Method),
            //    new OracleParameter(":PODCODE",rcvcallback.PodCode),
            //    new OracleParameter(":PODDIR",rcvcallback.PodDir),
            //    new OracleParameter(":REBOTCODE",rcvcallback.RobotCode),
            //    new OracleParameter(":TASKCODE",rcvcallback.TaskCode),
            //    new OracleParameter(":WBCODE",rcvcallback.WbCode),
            //    new OracleParameter(":STATUS",status)
            //};
            #endregion
            string orastr = @"INSERT INTO RICO_AGV_CALLBACK
                                              (REQCODE,
                                               REQTIME,
                                               INTERFACENAME,
                                               COOX,
                                               COOY,
                                               CURRENTPOSITIONCODE,
                                   
                                               MAPCODE,
                                               MAPDATACODE,
                                               METHOD,
                                               PODCODE,
                                               PODDIR,
                                               REBOTCODE,
                                               TASKCODE,
                                               WBCODE,
                                               STATUS)
                                            VALUES
                                              ('" + rcvcallback.ReqCode
                            + "','" + rcvcallback.ReqTime
                            + "','" + rcvcallback.InterfaceName
                            + "','" + rcvcallback.CooX
                            + "','" + rcvcallback.CooY
                            + "','" + rcvcallback.CurrentPositionCode
                            + "','" + rcvcallback.MapCode
                            + "','" + rcvcallback.MapDataCode
                            + "','" + rcvcallback.Method
                            + "','" + rcvcallback.PodCode
                            + "','" + rcvcallback.PodDir
                            + "','" + rcvcallback.RobotCode
                            + "','" + rcvcallback.TaskCode
                            + "','" + rcvcallback.WbCode
                            + "','" + status + "')";
            try
            {
                n = OracleHelper.ExecuteNonQuery(CommandType.Text, orastr, null);
            }
            catch (Exception ex)
            {
                msg = "将请求编号" + rcvcallback.ReqCode + "调度" + rcvcallback.TaskCode + "插入表中异常";
                LogInfo.WriteLog(msg + ",异常状态为:" + ex.Message + "异常语句为:" + orastr);
            }
            return(n);
        }
Example #3
0
        public string HandleCallBackData(ReciveAgeCallBack agvCallBack)
        {
            string msg = string.Empty;

            //外形检测出到达
            if (agvCallBack.Method == Arrive)
            {
                DataSet ds = DataTrans.D_GetSchByTaskIdArrive(agvCallBack.TaskCode);
                if (ds != null && ds.Tables[0].Rows.Count > 0)
                {
                    #region 读取外形检测是否报警
                    bool         flag  = false;
                    string       ssjid = ds.Tables[0].Rows[0]["SNUMBER"].ToString();
                    TransportStr ts    = lsTransport.Find(si => si.SSJID == ssjid);
                    if (ts == null)
                    {
                        return(string.Empty);
                    }

                    int      btid = Convert.ToInt32(ts.BTID);
                    byte[]   bty  = new byte[2];
                    BitArray arr  = new BitArray(bty);
                    if (!HsWcsReadalarm(out arr))
                    {
                        return("");
                    }
                    else
                    {
                        for (int i = 0; i < 3; i++)
                        {
                            int start = (btid - 1) * 3;
                            flag = arr[start + i];
                            if (flag == true)
                            {
                                break;
                            }
                        }
                    }
                    #endregion

                    string desaddress = string.Empty;
                    //如果报警返回
                    if (flag == true)
                    {
                        desaddress = ts.VAR5;
                    }
                    else
                    {
                        TransportStr rkssj = lsTransport.Find(t => t.ALLEYID == ds.Tables[0].Rows[0]["TCARGO_ALLEY_ID"].ToString());
                        if (rkssj == null)
                        {
                            return(string.Empty);
                        }
                        desaddress = rkssj.VAR5;
                    }

                    ContinueToAgvInfo req    = ContinueToModel(ds, desaddress);
                    SendToAgvResult   result = ContinueTask(req);
                    if (result.Message == "成功" && flag)
                    {
                        NotifyEvent?.Invoke("R", $"外形检测不合格,给AGV发送返回起始点成功,任务id为:{agvCallBack.TaskCode}目的地{desaddress}");
                        log.WriteLog($"外形检测不合格,给AGV发送返回起始点成功,任务id为:{agvCallBack.TaskCode}目的地{desaddress}");

                        DataTrans.P_UpdatePhase(agvCallBack.TaskCode, "1", "5", string.Empty);
                    }
                    else if (result.Message == "成功" && !flag)
                    {
                        DataTrans.P_UpdatePhase(agvCallBack.TaskCode, "3", "3", string.Empty);
                        NotifyEvent?.Invoke("R", $"外形检测合格,给AGV发送目标巷道成功,任务Id为{agvCallBack.TaskCode}目的地{desaddress}");
                        log.WriteLog($"外形检测合格,给AGV发送目标巷道成功,任务Id为{agvCallBack.TaskCode}目的地{desaddress}");
                        msg = "OK";
                    }
                    else
                    {
                        NotifyEvent?.Invoke("R", $"给AGV发送目标巷道失败,任务id为:{agvCallBack.TaskCode}");
                        log.WriteLog($"给AGV发送目标巷道失败,任务id为:{agvCallBack.TaskCode}");
                        msg = "Lost";
                    }
                }
            }
            //放货完成
            else if (agvCallBack.Method == Finish)
            {
                DataSet ds = DataTrans.D_GetSchByTaskId(agvCallBack.TaskCode);
                if (ds != null && ds.Tables[0].Rows.Count > 0)
                {
                    TransportStr ts;
                    if (ds.Tables[0].Rows[0]["TASKTYPE"].ToString() == "1")
                    {
                        ts = lsTransport.Find(si => si.ALLEYID == ds.Tables[0].Rows[0]["TCARGO_ALLEY_ID"].ToString());
                    }
                    else
                    {
                        ts = lsTransport.Find(si => si.SSJID == ds.Tables[0].Rows[0]["TCARGO_ALLEY_ID"].ToString());
                    }
                    if (ts == null)
                    {
                        return(string.Empty);
                    }
                    ts.TRAYCODE = ds.Tables[0].Rows[0]["TRAYCODE"].ToString();
                    ts.ZXRWH    = ds.Tables[0].Rows[0]["TASKNO"].ToString();

                    if (crl.HsWriteToSSJ(ts))
                    {
                        NotifyEvent?.Invoke("S", $"根据AGV反馈任务与id{agvCallBack.TaskCode}放货完成,给输送机{ts.SSJID}下发任务成功");
                        log.WriteLog($"根据AGV反馈任务id{agvCallBack.TaskCode}放货完成,给输送机{ts.SSJID}下发任务成功");
                        if (ds.Tables[0].Rows[0]["TASKTYPE"].ToString() == "1")
                        {
                            DataTrans.P_UpdatePhase(agvCallBack.TaskCode, "1", "3", string.Empty);
                        }
                        else if (ds.Tables[0].Rows[0]["TASKTYPE"].ToString() == "2")
                        {
                            DataTrans.P_UpdatePhase(agvCallBack.TaskCode, "1", "4", string.Empty);
                        }
                        msg = "OK";
                    }
                    else
                    {
                        NotifyEvent?.Invoke("S", $"根据AGV反馈任务id{agvCallBack.TaskCode}放货完成,给输送机{ts.SSJID}下发任务失败");
                        log.WriteLog($"根据AGV反馈任务id{agvCallBack.TaskCode}放货完成,给输送机{ts.SSJID}下发任务失败");
                        msg = "Lost";
                    }
                }
            }
            return(msg);
        }