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); }
/// <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); }
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); }