| | |
| | | var Locats = Db.Queryable<SysStorageLocat>() |
| | | .Where(m => m.LocatNo == pallet.LocatNo && m.WareHouseNo == pallet.WareHouseNo |
| | | && m.IsDel == "0").ToList().FirstOrDefault(); |
| | | |
| | | if (Locats.Depth == "02") |
| | | var Locats2 = Db.Queryable<SysStorageLocat>().Where(m => m.LocatNo == model.Code && m.IsDel == "0").ToList().FirstOrDefault(); |
| | | if (Locats2 == null) |
| | | { |
| | | // 获取外侧储位地址 |
| | | string locatNo = Locats.LocatNo.Substring(0, 6) + "01"; |
| | | var Locatwc = Db.Queryable<SysStorageLocat>() |
| | | .Where(m => m.LocatNo == locatNo && m.WareHouseNo == pallet.WareHouseNo |
| | | && m.IsDel == "0").ToList().FirstOrDefault(); |
| | | |
| | | if (Locatwc.Status == "1") |
| | | { |
| | | // 外侧有货物 |
| | | var Locatwcsku = Db.Queryable<DataStockDetail>() |
| | | .Where(m => m.LocatNo == locatNo |
| | | && m.IsDel == "0" |
| | | && m.WareHouseNo== Locatwc.WareHouseNo).ToList().FirstOrDefault(); |
| | | |
| | | // 获取移库地址 |
| | | var newSlot = com.MoveAddress(locatNo, Locatwc.RoadwayNo, Locatwcsku.SkuNo); |
| | | |
| | | var taskNo1 = new Common().GetMaxNo("TK"); |
| | | var exTask1 = new LogTask(); //出库任务 |
| | | exTask1.TaskNo = taskNo1; |
| | | exTask1.Sender = "WMS"; |
| | | exTask1.Receiver = "WCS"; |
| | | exTask1.IsSuccess = 0; //是否下发成功 0失败 1成功 |
| | | exTask1.StartLocat = locatNo; //起始位置 |
| | | exTask1.PalletNo = Locatwcsku.PalletNo; //托盘码 |
| | | exTask1.IsSend = 1;//是否可再次下发 |
| | | exTask1.IsCancel = 1;//是否可取消 |
| | | exTask1.IsFinish = 1;//是否可完成 |
| | | exTask1.Status = "0";//任务状态0:等待执行1正在执行2执行完成 |
| | | exTask1.OrderType = "4"; //0 入库单 1 出库单 2 盘点单 3 移库单 4 取样出库单 |
| | | |
| | | |
| | | OutCommandDto taskModel = new OutCommandDto(); |
| | | taskModel.TaskNo = com.GetMaxNo("TK"); // 任务号 |
| | | taskModel.StartRoadway = Locatwc.RoadwayNo; |
| | | taskModel.PalletNo = Locatwcsku.PalletNo; // 托盘号 |
| | | taskModel.StartLocate = locatNo; // 起始位置 |
| | | taskModel.Order = 1; |
| | | if (newSlot == "") |
| | | { |
| | | exTask1.EndLocat = model.Code; //目标位置 |
| | | exTask1.Type = "1"; //任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | exTask1.Msg = Locats.LocatNo +"托盘出库创建的"+locatNo + "托盘的出库任务"; |
| | | |
| | | // 没有多余的空储位 |
| | | taskModel.EndLocate = model.Code; // 出库口 |
| | | taskModel.EndRoadway = ""; // 目标巷道 |
| | | taskModel.TaskType = "1";// 任务类型 (出库) |
| | | taskModel.OutMode = model.Code; //目标地址 |
| | | |
| | | // 更新储位地址 |
| | | Locatwc.Status = "3"; |
| | | Db.Updateable(Locatwc).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | // 获取移库巷道号 |
| | | var Locatyk = Db.Queryable<SysStorageLocat>() |
| | | .Where(m => m.LocatNo == newSlot && m.WareHouseNo == pallet.WareHouseNo |
| | | && m.IsDel == "0").ToList().FirstOrDefault(); |
| | | |
| | | exTask1.EndLocat = newSlot; //目标位置 |
| | | exTask1.Type = "2"; //任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | exTask1.Msg = Locats.LocatNo + "托盘出库创建的" + locatNo + "托盘的移库任务"; |
| | | |
| | | taskModel.EndLocate = newSlot; // 目标地址 |
| | | taskModel.EndRoadway = Locatyk.RoadwayNo; // 目标巷道 |
| | | taskModel.TaskType = "2"; // 任务类型 (移库) |
| | | taskModel.OutMode = newSlot; |
| | | |
| | | // 更新储位地址 |
| | | Locatwc.Status = "5"; // 移出中 |
| | | Locatyk.Status = "4"; // 移入中 |
| | | Db.Updateable(Locatyk).ExecuteCommand(); |
| | | } |
| | | Db.Updateable(Locatwc).ExecuteCommand(); |
| | | |
| | | // 插入任务日志 |
| | | Db.Insertable(exTask1).ExecuteCommand(); |
| | | outWhs.Add(taskModel); |
| | | } |
| | | if (Locatwc.Status == "2" || Locatwc.Status == "4") |
| | | { |
| | | numberQty = numberQty + pallet.Qty; |
| | | continue; |
| | | } |
| | | throw new Exception("目标储位错误"); |
| | | } |
| | | |
| | | |
| | | if (Locats2.Status != "0") |
| | | { |
| | | throw new Exception("目标储位状态不是空储位,请核实"); |
| | | } |
| | | var taskNo2 = new Common().GetMaxNo("TK"); |
| | | var exTask2 = new LogTask(); //出库任务 |
| | | exTask2.TaskNo = taskNo2; |
| | |
| | | exTask2.Status = "0";//任务状态0:等待执行1正在执行2执行完成 |
| | | exTask2.OrderType = "4"; //0 入库单 1 出库单 2 盘点单 3 移库单 4 取样出库单 |
| | | exTask2.EndLocat = model.Code; //目标位置 |
| | | exTask2.Type = "1"; //任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | exTask2.Type = "2"; //任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | exTask2.Msg = pallet.LocatNo + "托盘出库任务"; |
| | | // 插入任务日志 |
| | | Db.Insertable(exTask2).ExecuteCommand(); |
| | |
| | | taskModel1.Order = 1; |
| | | taskModel1.EndLocate = model.Code; // 目标地址 |
| | | taskModel1.EndRoadway = ""; // 目标巷道 |
| | | taskModel1.TaskNo = com.GetMaxNo("TK"); // 任务号 |
| | | taskModel1.TaskType = "1";// 任务类型 (出库) |
| | | taskModel1.OutMode = model.Code; |
| | | taskModel1.TaskNo = taskNo2; // 任务号 |
| | | taskModel1.TaskType = "2";// 任务类型 (出库) |
| | | taskModel1.Type = PLCTypeEnum.AGV; |
| | | |
| | | // 更新储位状态 |
| | | Locats.Status = "3"; |
| | | Locats.Status = "5"; |
| | | Db.Updateable(Locats).ExecuteCommand(); |
| | | Locats2.Status = "4"; |
| | | Db.Updateable(Locats2).ExecuteCommand(); |
| | | |
| | | outWhs.Add(taskModel1); |
| | | |
| | | // 向WCS下发出库任务 |
| | | if (outWhs.Count > 0) |
| | | { |
| | | // 正式运行程序放开 |
| | | var list2 = outWhs.Select(m => m.TaskNo).ToList(); |
| | | var jsonData = JsonConvert.SerializeObject(outWhs); |
| | | //string response = ""; |
| | | |
| | | try |
| | | { |
| | | //var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | //response = HttpHelper.DoPost(url, jsonData, "下发给WCS出库命令", "WCS"); |
| | | //var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | |
| | | ////解析返回数据 |
| | | //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); |
| | | //if (wcsModel.StatusCode == 0) |
| | | //{ |
| | | // //更改任务的发送返回时间// |
| | | //new TaskServer().EditTaskIssueOk(list2, time1, time2); |
| | | //} |
| | | //if (wcsModel.StatusCode == -1) |
| | | //{ |
| | | // new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg); |
| | | // throw new Exception(wcsModel.Msg); |
| | | //} |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | // 向WCS下发出库任务 |
| | | if (outWhs.Count > 0) |
| | | { |
| | | // 正式运行程序放开 |
| | | var list2 = outWhs.Select(m => m.TaskNo).ToList(); |
| | | var jsonData = JsonConvert.SerializeObject(outWhs); |
| | | string response = ""; |
| | | |
| | | try |
| | | { |
| | | var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | response = HttpHelper.DoPost(url, jsonData, "下发给WCS出库命令", "WCS"); |
| | | var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | |
| | | //解析返回数据 |
| | | var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response); |
| | | if (wcsModel.code == 200) |
| | | { |
| | | //更改任务的发送返回时间// |
| | | new TaskServer().EditTaskIssueOk(list2, time1, time2); |
| | | } |
| | | else |
| | | { |
| | | new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message); |
| | | throw new Exception(wcsModel.message); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | } |
| | | |
| | | } |
| | | //添加操作日志记录 |
| | | var k = new OperationCrServer() |
| | | .AddLogOperationCr("质量管理", "质检请验", data.QcNo, "出库", $"点击了出库操作;请验单:{data.QcNo}!", userId); |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 向Limes发送请验信息 |
| | | /// </summary> |
| | | /// <param name="model">model.Id:请验单主键;model.Code:出库口 </param> |
| | | /// <param name="userId">操作用户</param> |
| | | /// <param name="url">Wcs地址</param> |
| | | /// <returns></returns> |
| | | public bool SendInspectionRequest(IdVm model, int userId, string url, string userName) |
| | | { |
| | | try |
| | | { |
| | | // 判断请验单状态 |
| | | var data = Db.Queryable<BllQualityInspectionRequest>() |
| | | .Where(m => m.QcNo == model.Code && m.IsDel == "0" && m.Status == "0").ToList().FirstOrDefault(); |
| | | if (data == null) |
| | | { |
| | | throw new Exception("操作失败!请验单状态变更."); |
| | | } |
| | | |
| | | // 记录任务日志 |
| | | var taskNo = new Common().GetMaxNo("TK"); |
| | | var exTask = new LogTask() |
| | | { |
| | | TaskNo = taskNo, |
| | | Sender = "WMS", |
| | | Receiver = "Limes", |
| | | IsSuccess = 0, //是否下发成功 0失败 1成功 |
| | | StartLocat = "", //起始位置 |
| | | PalletNo = "", //托盘码 |
| | | IsSend = 1, //是否可再次下发 |
| | | IsCancel = 1, //是否可取消 |
| | | IsFinish = 1, //是否可完成 |
| | | Status = "0", //任务状态0:等待执行1正在执行2执行完成 |
| | | OrderType = "5", //0 入库单 1 出库单 2 盘点单 3 移库单 4 取样出库单 5 其他 |
| | | EndLocat = "", //目标位置 |
| | | Type = "3", //任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | Msg = "请验任务" |
| | | }; |
| | | |
| | | // 插入任务日志 |
| | | Db.Insertable(exTask).ExecuteCommand(); |
| | | |
| | | |
| | | // 调用Limes接口发起请验 |
| | | var sendModel = new SendLimesModel() |
| | | { |
| | | QcNo = data.QcNo, |
| | | SkuNo = data.SkuNo, |
| | | Qty = data.Qty.ToString(), |
| | | LotNo = data.LotNo, |
| | | SupplierLot = data.SupplierLot, |
| | | RequestUser = userName, // 请验人 |
| | | }; |
| | | var jsonData = JsonConvert.SerializeObject(sendModel); |
| | | string response = ""; |
| | | |
| | | try |
| | | { |
| | | var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | //response = HttpHelper.DoPost(url, jsonData, "上传Limes系统发起请验", "Limes"); |
| | | var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | |
| | | ////解析返回数据 |
| | | //var limesModel = JsonConvert.DeserializeObject<LimesModel>(response); |
| | | List<string> list1 = new List<string>(); |
| | | list1.Add(taskNo); |
| | | //if (limesModel.Success == 0) |
| | | //{ |
| | | //更改任务的发送返回时间// |
| | | new TaskServer().EditTaskIssueOk(list1, time1, time2); |
| | | |
| | | // 更新请验单信息 |
| | | data.Status = "1"; |
| | | data.SamplingQty = 10;//decimal.Parse(limesModel.SamplingQty); |
| | | data.RequestUser = userId; |
| | | data.RequestTime = DateTime.Now; |
| | | data.UpdateTime = DateTime.Now; |
| | | data.UpdateUser = userId; |
| | | |
| | | Db.Updateable(data).ExecuteCommand(); |
| | | //} |
| | | //if (limesModel.Success == -1) |
| | | //{ |
| | | // new TaskServer().EditTaskIssueNo(list1, time1, time2,limesModel.Message); |
| | | // throw new Exception(limesModel.Message); |
| | | //} |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | } |
| | | |
| | | //添加操作日志记录 |
| | | var k = new OperationCrServer() |
| | | .AddLogOperationCr("质量管理", "质检请验", model.Code, "请验", $"向质量部分发起请验!", userId); |
| | | |
| | | return true; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | } |