| | |
| | | /// <param name="url"></param> |
| | | /// <param name="taskNo"></param> |
| | | /// <exception cref="Exception"></exception> |
| | | public void GetPalletNo(Pallnetmsg model, string url, out string taskNo) |
| | | public void GetPalletNo(Pallnetmsg model, string url,string urlMes, out string taskNo) |
| | | { |
| | | lock (GetPalleLock) |
| | | { |
| | |
| | | //叫桶设备所在储位信息(目标储位) |
| | | var endLoction = new SysStorageLocat(); |
| | | |
| | | var urlMes = "";//回传MES的接口地址 |
| | | var noticeNo = "0";//出入库单据明细ID |
| | | |
| | | //所有待分配的桶 |
| | |
| | | foreach (var item in palletList) |
| | | { |
| | | #region 去掉MES |
| | | //string jsonReq = JsonConvert.SerializeObject(item.PalletNo); |
| | | //var response = HttpHelper.DoPost(urlMes, jsonReq, "回传MES脏桶编号", "RCS").ToString(); |
| | | //var obj = JsonConvert.DeserializeObject<ReMes>(response);//解析返回数据 |
| | | //if (obj.Success == "0") |
| | | //{ |
| | | // if (obj.Result != "1")//不可清洗,将脏桶冻结 |
| | | // { |
| | | // item.Status = "5";//异常冻结 |
| | | // //修改该桶库存状态 |
| | | // Db.Updateable(item).ExecuteCommand(); |
| | | var reObj = new |
| | | { |
| | | devive = item.PackagNo |
| | | }; |
| | | string jsonReq = JsonConvert.SerializeObject(reObj); |
| | | var response = HttpHelper.DoPost(urlMes, jsonReq, "回传MES脏桶编号判断是否可清洗", "MES").ToString(); |
| | | var obj = JsonConvert.DeserializeObject<ReMes>(response);//解析返回数据 |
| | | if (obj.state == "200") |
| | | { |
| | | if (obj.data != "1")//不可清洗,将脏桶冻结 |
| | | { |
| | | item.Status = "5";//异常冻结 |
| | | //修改该桶库存状态 |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | |
| | | // continue; |
| | | // } |
| | | // //下发小车任务 |
| | | // var task2 = new TaskDetial |
| | | // { |
| | | // Startport = item.LocatNo, |
| | | // Endport = model.Location, |
| | | // Pallno = item.PalletNo, |
| | | // Type = model.Type, |
| | | // Crtype = "1", |
| | | // Noticedetailno = int.Parse(noticeno), |
| | | // }; |
| | | // CreateLotTask(task2); |
| | | // return; |
| | | //} |
| | | //else |
| | | //{ |
| | | // throw new Exception("回传MES净桶编号失败!"); |
| | | //} |
| | | continue; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("叫脏桶回传MES判断失败!"); |
| | | } |
| | | #endregion |
| | | |
| | | item.Status = "2";//分配状态 0:待分配,1:部分分配 , 2:已分配 |
| | |
| | | { |
| | | try |
| | | { |
| | | //桶信息 |
| | | var detail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == pallnetmsg.PalletNo && w.PalletStatus == "3"); |
| | | if (detail == null) |
| | | { |
| | | throw new Exception($"库存中不存在桶号为:{pallnetmsg.PalletNo}的库存!"); |
| | | } |
| | | //下发小车任务 |
| | | //设备信息 |
| | | var deviceInfo = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode.Contains(pallnetmsg.Location)); |
| | | if (deviceInfo == null) |
| | | { |
| | | throw new Exception($"不存在设备号为:{pallnetmsg.Location}的设备!"); |
| | | } |
| | | //目标储位信息 |
| | | var endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == deviceInfo.WareHouseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);// Column=1 清洗储位,Column=2 清洗完料储位 |
| | | if (endLoction == null) |
| | | { |
| | | throw new Exception("叫桶设备目标储位信息不存在"); |
| | | } |
| | | |
| | | detail.Status = "2";//分配状态 0:待分配,1:部分分配 , 2:已分配 |
| | | //更新桶库存明细 |
| | | Db.Updateable(detail).ExecuteCommand(); |
| | | |
| | | //起始储位地址信息 |
| | | var startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == detail.LocatNo); |
| | | if (startLoction == null) |
| | | { |
| | | throw new Exception($"桶号:{detail.PalletNo}储位信息{detail.LocatNo}不存在"); |
| | | } |
| | | |
| | | var taskNo = new Common().GetMaxNo("TN");//任务号 |
| | | var logTaskEntry = new LogTask |
| | | { |
| | | TaskNo = taskNo, |
| | | Sender = "WMS", |
| | | Receiver = "RCS", |
| | | //IsSuccess = 1, //是否下发成功 0失败 1成功 |
| | | SendDate = DateTime.Now, //发送时间 |
| | | //BackDate = DateTime.Now, //返回时间 |
| | | StartLocat = startLoction.LocatNo,//起始位置 |
| | | EndLocat = endLoction.LocatNo,//目标位置 |
| | | PalletNo = detail.PalletNo,//托盘码 |
| | | IsSend = 1,//是否可再次下发 |
| | | IsCancel = 1,//是否可取消 |
| | | IsFinish = 1,//是否可完成 |
| | | Type = "1",//任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | OrderType = "3",//单据类型 0 入库 1 出库 3 移库 |
| | | Status = "0",//任务状态0:等待执行1正在执行2执行完成 |
| | | NoticeDetailNo = 0, |
| | | Msg = $"MES下发清洗指定脏桶,桶号:{pallnetmsg.PalletNo},设备号:{pallnetmsg.Location}", //关键信息 |
| | | LotNo = ""//批次号 |
| | | }; |
| | | //组织下发小车任务信息 |
| | | var task = new TaskDetial |
| | | { |
| | | Startport = detail.LocatNo, |
| | | Endport = pallnetmsg.Location, |
| | | Pallno = detail.PalletNo, |
| | | Crtype = "1", |
| | | Taskno = taskNo,//任务号 |
| | | Startport = startLoction.LocatNo,//起始位置 |
| | | Endport = endLoction.LocatNo,//目标位置 |
| | | Pallno = detail.PalletNo,//桶号 |
| | | Crtype = "1",//叫桶 |
| | | WareHouseNo = detail.WareHouseNo//车间编码 |
| | | }; |
| | | string taskNo = ""; |
| | | //给下车下发任务 |
| | | logTaskEntry.SendDate = DateTime.Now;//发送时间 |
| | | string agvMsg = string.Empty; |
| | | CreateTaskForAgv(task, url, out agvMsg); |
| | | var agvResult = CreateTaskForAgv(task, url, out agvMsg); |
| | | if (agvResult)//成功 |
| | | { |
| | | //请求成功修改任务表相应字段状态 |
| | | logTaskEntry.IsSuccess = 1; |
| | | logTaskEntry.IsSend = 0; |
| | | //logTaskEntry.IsCancel = 0; |
| | | logTaskEntry.BackDate = DateTime.Now; |
| | | logTaskEntry.Status = "1";//正在执行 |
| | | Db.Insertable(logTaskEntry).ExecuteCommand(); |
| | | |
| | | startLoction.Status = "3";//出库中 |
| | | Db.Updateable(startLoction).ExecuteCommand(); |
| | | |
| | | endLoction.Status = "2";//入库中 |
| | | Db.Updateable(endLoction).ExecuteCommand(); |
| | | } |
| | | else//失败 |
| | | { |
| | | logTaskEntry.IsSuccess = 0; |
| | | logTaskEntry.Information = agvMsg; |
| | | Db.Insertable(logTaskEntry).ExecuteCommand(); |
| | | |
| | | } |
| | | //提交事务 |
| | | Db.CommitTran(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | agvTask.taskTyp = "Z5"; |
| | | } |
| | | |
| | | // 正式运行程序放开 |
| | | |
| | | if (string.IsNullOrEmpty(url))//测试系统 |
| | | { |
| | | result = true; |
| | | agvMsg = ""; |
| | | } |
| | | else//正式系统 |
| | | { |
| | | var jsonData = JsonConvert.SerializeObject(agvTask); |
| | | string response = HttpHelper.DoPost(url, jsonData, "下发给AGV转运命令", "AGV"); |
| | | //解析返回数据 |
| | |
| | | |
| | | agvMsg = agvModel.Message; |
| | | } |
| | | } |
| | | |
| | | return result; |
| | | #endregion |
| | | } |