| | |
| | | #region 判断 |
| | | if (string.IsNullOrEmpty(palletNo)) |
| | | { |
| | | throw new Exception("托盘号不能为空"); |
| | | throw new Exception("托盘号不能为空!"); |
| | | } |
| | | if (string.IsNullOrEmpty(houseNo)) |
| | | { |
| | |
| | | throw new Exception("起始位置不能为空"); |
| | | } |
| | | //获取储位信息 |
| | | var locateInfo = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.WareHouseNo == houseNo && m.LocatNo == Strlocate); |
| | | var locateInfo = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.WareHouseNo == "W04" && m.LocatNo == Strlocate); |
| | | if (locateInfo == null) |
| | | { |
| | | throw new Exception("未查询到空储位"); |
| | |
| | | PalletNo = palletNo, |
| | | Qty = palletNum, |
| | | FullQty = pNum, |
| | | Status = "3", //上架完成 |
| | | Status = "2", //上架完成 |
| | | Type = "1", //0 物料托 1 空托 |
| | | LotNo = "", |
| | | LotText = "", |
| | |
| | | InspectQty = 0, |
| | | ASNNo = modelpb.ASNNo, |
| | | ASNDetailNo = modelpb.ASNDetailNo, |
| | | WareHouseNo = locate.WareHouseNo, |
| | | RoadwayNo = locate.RoadwayNo, |
| | | AreaNo = locate.AreaNo, |
| | | LocatNo = locate.LocatNo, |
| | | //WareHouseNo = locate.WareHouseNo, |
| | | //RoadwayNo = locate.RoadwayNo, |
| | | //AreaNo = locate.AreaNo, |
| | | //LocatNo = locate.LocatNo, |
| | | PalletNo = modelpb.PalletNo, |
| | | PalletNo2 = modelpb.PalletNo2, |
| | | PalletNo3 = modelpb.PalletNo3, |
| | |
| | | BackDate = DateTime.Now, //返回时间 |
| | | StartRoadway = "", // 起始巷道 |
| | | StartLocat = Strlocate,//起始位置 |
| | | EndLocat = locateInfo.LocatNo,//目标位置 |
| | | EndRoadway = locateInfo.RoadwayNo, // 目标巷道 |
| | | EndLocat = locate.LocatNo,//目标位置 |
| | | EndRoadway = locate.RoadwayNo, // 目标巷道 |
| | | PalletNo = palletNo,//托盘码 |
| | | IsSend = 1,//是否可再次下发 |
| | | IsCancel = 1,//是否可取消 |
| | |
| | | |
| | | #endregion |
| | | |
| | | return null; |
| | | return comDto; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | //托盘库存信息 |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo).ToList(); |
| | | //验证物料是否有成品 |
| | | foreach (var item in stockDetail) |
| | | { |
| | | var skuItem = skuList.First(m => m.SkuNo == item.SkuNo); |
| | | if (skuItem.SkuNo == "100099") |
| | | { |
| | | continue; |
| | | } |
| | | if (skuItem.Type != "2") |
| | | { |
| | | throw new Exception("托盘上有不是成品的物料"); |
| | | } |
| | | } |
| | | //foreach (var item in stockDetail) |
| | | //{ |
| | | // var skuItem = skuList.First(m => m.SkuNo == item.SkuNo); |
| | | // if (skuItem.SkuNo == "100099") |
| | | // { |
| | | // continue; |
| | | // } |
| | | // if (skuItem.Type != "2") |
| | | // { |
| | | // throw new Exception("托盘上有不是成品的物料"); |
| | | // } |
| | | //} |
| | | var upShelfOld = Db.Queryable<BllPalletUpShelf>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1")); |
| | | |
| | | if (upShelfOld != null) //正常入库 |
| | |
| | | var oldTaskNo = ""; //旧任务号 |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo).ToList(); |
| | | //验证物料是否有成品 |
| | | foreach (var item in stockDetail) |
| | | { |
| | | var skuItem = skuList.First(m => m.SkuNo == item.SkuNo); |
| | | if (skuItem.SkuNo == "100099") |
| | | { |
| | | continue; |
| | | } |
| | | if (skuItem.Type != "2") |
| | | { |
| | | throw new Exception("托盘上有不是成品的物料"); |
| | | } |
| | | } |
| | | //foreach (var item in stockDetail) |
| | | //{ |
| | | // var skuItem = skuList.First(m => m.SkuNo == item.SkuNo); |
| | | // if (skuItem.SkuNo == "100099") |
| | | // { |
| | | // continue; |
| | | // } |
| | | // if (skuItem.Type != "2") |
| | | // { |
| | | // throw new Exception("托盘上有不是成品的物料"); |
| | | // } |
| | | //} |
| | | |
| | | var upShelfOld = Db.Queryable<BllPalletUpShelf>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1")); |
| | | |
| | |
| | | |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList(); |
| | | //判断是否是回流入库完成 |
| | | if (!stockDetail.Any()) |
| | | if (!stockDetail.Any() && task.EndLocat!= "B100101")//B100101是空托盘收集器,不用校验库存 |
| | | { |
| | | throw new Exception("没有查询到库存信息"); |
| | | } |
| | |
| | | { |
| | | throw new Exception("储位损坏不能出库"); |
| | | } |
| | | if (locate.WareHouseNo != "W02") |
| | | if (locate.WareHouseNo != "W02" && locate.WareHouseNo != "W04") |
| | | { |
| | | throw new Exception("托盘不在货架库上"); |
| | | throw new Exception("托盘不在货架库上也不在平库"); |
| | | } |
| | | var locateEnd = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == outModeLocate && m.IsDel == "0");//当前出库的目标储位信息 |
| | | if (locateEnd == null) |
| | |
| | | } |
| | | else if (locateEnd.Status != "0") |
| | | { |
| | | throw new Exception("目标储位状态不是空储位"); |
| | | var logEnd = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.EndLocat == locateEnd.LocatNo); |
| | | if (logEnd != null && logEnd.PalletNo != palletNo) |
| | | { |
| | | throw new Exception("目标储位状态不是空储位"); |
| | | } |
| | | var detailEnd = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == locateEnd.LocatNo); |
| | | if (detailEnd != null && detailEnd.PalletNo != palletNo) |
| | | { |
| | | throw new Exception("目标储位状态不是空储位"); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | if (locate.Status == "1") //有物品 |
| | | if (locate.WareHouseNo == "W02" && locate.Status == "1") //有物品 |
| | | { |
| | | #region 添加出库任务 |
| | | |
| | |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | |
| | | #endregion |
| | | |
| | | |
| | | } |
| | | else if (locate.Status == "3") //出库中 |
| | | else if (locate.Status == "3" || locate.WareHouseNo == "W04") //出库中或已在平库 |
| | | { |
| | | #region 改变数据 |
| | | //判断是否是已经出过库又回库(状态为待拣货的 1) |
| | |
| | | } |
| | | } |
| | | } |
| | | var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "1" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo); |
| | | if (taskNo == null) |
| | | if (locate.WareHouseNo == "W04") |
| | | { |
| | | taskNo = logTaskList.FirstOrDefault(m => m.PalletNo == item.PalletNo);//当前有同托盘不同物料出库 |
| | | item.TaskNo = ""; |
| | | item.Status = "2"; // 出库分配信息状态改为正在执行 |
| | | item.OutMode = item.OutMode;//出库口 |
| | | //item.UnstackingMode = unstackingMode2;//拆垛模式 |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | } |
| | | if (taskNo == null) |
| | | else |
| | | { |
| | | throw new Exception($"托盘号:{item.PalletNo},出库异常"); |
| | | } |
| | | item.TaskNo = taskNo.TaskNo; |
| | | item.Status = "1"; // 出库分配信息状态改为正在执行 |
| | | item.OutMode = item.OutMode;//出库口 |
| | | //item.UnstackingMode = unstackingMode2;//拆垛模式 |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | |
| | | var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "1" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo); |
| | | if (taskNo == null) |
| | | { |
| | | taskNo = logTaskList.FirstOrDefault(m => m.PalletNo == item.PalletNo);//当前有同托盘不同物料出库 |
| | | } |
| | | if (taskNo == null) |
| | | { |
| | | throw new Exception($"托盘号:{item.PalletNo},出库异常"); |
| | | } |
| | | item.TaskNo = taskNo.TaskNo; |
| | | item.Status = "1"; // 出库分配信息状态改为正在执行 |
| | | item.OutMode = item.OutMode;//出库口 |
| | | //item.UnstackingMode = unstackingMode2;//拆垛模式 |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | } |
| | | #endregion |
| | | } |
| | | else if (locate.Status == "5") //移出中 |
| | |
| | | //Db.Insertable(exTask).ExecuteCommand(); |
| | | |
| | | |
| | | // 调用Limes接口发起请验 |
| | | var sendModel = new SendLimesModel() |
| | | // 调用Sqp接口发起请验 |
| | | var sendModel = new SendSapQcDetailVm() |
| | | { |
| | | QcNo = data.QcNo, |
| | | SkuNo = data.SkuNo, |
| | | Qty = data.Qty.ToString(), |
| | | LotNo = data.LotNo, |
| | | SupplierLot = data.SupplierLot, |
| | | RequestUser = userName, // 请验人 |
| | | skuNo=data.SkuNo, |
| | | skuName = data.SkuNo, |
| | | lotNo = data.LotNo, |
| | | Qty = Convert.ToDecimal(data.Qty), |
| | | SupplierLot = data.SupplierLot |
| | | }; |
| | | 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"); |
| | | //response = HttpHelper.DoPost(url, jsonData, "上传Sap系统发起请验", "Sap"); |
| | | var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | |
| | | ////解析返回数据 |