| | |
| | | |
| | | #region 指定储位 |
| | | //指定储位数据源(正常的空储位) |
| | | public List<LocatDto> GetLocateList(string houseNo, string roadwayNo, string row, string column, string layer, string locateNo, string BindId, int page, int limit, out int count) |
| | | public List<LocatDto> GetLocateList(string houseNo, string roadwayNo, string row, string column, string layer, |
| | | string locateNo, string BindId, int page, int limit, out int count) |
| | | { |
| | | try |
| | | { |
| | | //获取托盘绑定 |
| | | var bindASNDetailNo = Db.Queryable<BllPalletBind>().Where(a => a.IsDel == "0" && a.Status == "0" && a.Id == int.Parse(BindId)).Select(a => a.ASNDetailNo).First(); |
| | | var bindASNDetailNo = Db.Queryable<BllPalletBind>().Where(a => a.IsDel == "0" && a.Status == "0" |
| | | && a.Id == int.Parse(BindId)).Select(a => a.ASNDetailNo).First(); |
| | | //获取单据明细 |
| | | var noticeDetailSkuNo = Db.Queryable<BllArrivalNoticeDetail>().Where(a => a.Id == bindASNDetailNo && a.IsDel == "0").Select(a => a.SkuNo).First(); |
| | | var noticeDetailSkuNo = Db.Queryable<BllArrivalNoticeDetail>().Where(a => a.Id == bindASNDetailNo |
| | | && a.IsDel == "0").Select(a => a.SkuNo).First(); |
| | | //获取物料 |
| | | var skuCategoryNo = Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.SkuNo == noticeDetailSkuNo).Select(a => a.CategoryNo).First(); |
| | | var skuCategoryNo = Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.SkuNo == noticeDetailSkuNo) |
| | | .Select(a => a.CategoryNo).First(); |
| | | //获取物料对应区域 |
| | | var categoryAreaNo = Db.Queryable<SysMaterialCategory>().Where(a => a.IsDel == "0" && a.CategoryNo == skuCategoryNo).Select(a => a.AreaNo).First(); |
| | | var categoryAreaNo = Db.Queryable<SysMaterialCategory>().Where(a => a.IsDel == "0" && a.CategoryNo == skuCategoryNo) |
| | | .Select(a => a.AreaNo).First(); |
| | | |
| | | Expression<Func<SysStorageLocat, bool>> item = Expressionable.Create<SysStorageLocat>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(roadwayNo), m => m.RoadwayNo == roadwayNo) |
| | |
| | | Row = a.Row, |
| | | Column = a.Column, |
| | | Layer = a.Layer, |
| | | Depth = a.Depth, |
| | | Status = a.Status |
| | | }).ToOffsetPage(page, limit, ref total); |
| | | count = total; |
| | |
| | | { |
| | | try |
| | | { |
| | | #region 验证托盘合法性 |
| | | //验证托盘条码是否为空 |
| | | if (string.IsNullOrEmpty(palletNo)) |
| | | { |
| | |
| | | throw new Exception("平库请使用PDA手持进行平库入库"); |
| | | } |
| | | |
| | | OutCommandDto comDto;//返回wcs的入库命令 |
| | | var isHaveLocateNo = false; //托盘绑定信息中是否已有指定储位 |
| | | |
| | | var stock = Db.Queryable<SysPallets>().First(a => a.PalletNo == palletNo);//托盘信息 |
| | | |
| | | //判断托盘条码是否有效 |
| | | if (stock == null) |
| | | { |
| | | throw new Exception("托盘条码不受WMS管理,不可入库!"); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | OutCommandDto comDto;//返回wcs的入库命令 |
| | | var isHaveLocateNo = false; // 是否已有指定储位 |
| | | #region |
| | | |
| | | //查询托盘绑定信息(状态为等待入库的) |
| | |
| | | isHaveLocateNo = true; //已有指定储位 |
| | | } |
| | | |
| | | |
| | | // 验证是否关联单据,获取托盘上存放的物料 |
| | | if (palletBindList.First().Type == "0") //物料托入库 |
| | | { |
| | | //判断是否绑定单据及单据状态是否正常 |
| | |
| | | { |
| | | throw new Exception("托盘存在物料未绑定入库单,不可入库!"); |
| | | } |
| | | if (notice.Status == "3") |
| | | if (notice.Status == "3" || notice.Status == "4") |
| | | { |
| | | throw new Exception($"入库单{item.ASNNo}已关闭,不可入库!"); |
| | | } |
| | |
| | | skuNo = stockDetail.First().SkuNo; |
| | | |
| | | //获取对应回库规则 |
| | | var function = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetName == "托盘回库验证" && a.IsEnable == "NO"); |
| | | var function = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetNo == "Fun041" && a.IsEnable == "NO"); |
| | | #region 托盘回库规则 |
| | | |
| | | if (function != null) |
| | | { |
| | | //拣货完成后允许托盘回库 |
| | | if (function.SetValue == "CompletePick") |
| | | { |
| | | var allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.LotNo == stockDetail[0].LotNo && a.PalletNo == palletNo && a.SkuNo == stockDetail[0].SkuNo); |
| | | |
| | | //验证拣货明细是否存在 |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | } |
| | | |
| | |
| | | |
| | | SysStorageLocat locate; |
| | | |
| | | #region 根据sku确认区域划分 |
| | | var sku = skuList.FirstOrDefault(m => m.SkuNo == skuNo); |
| | | if (sku == null) |
| | | { |
| | |
| | | .GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList(); |
| | | |
| | | SysRoadwayUseLog useLog = Db.Queryable<SysRoadwayUseLog>().Where(m => m.IsDel == "0" && roadList.Contains(m.RoadwayNo)).OrderByDescending(l => l.Id).First(); //巷道最后一次使用记录 |
| | | #endregion |
| | | |
| | | |
| | | #region 确定巷道排序 |
| | | |
| | | List<string> roadList2 = new List<string>(); |
| | | List<string> roadSmall = new List<string>(); |
| | | List<string> roadLarge = new List<string>(); |
| | |
| | | Db.BeginTran(); |
| | | try |
| | | { |
| | | if (roadNo != null) |
| | | { |
| | | //添加巷道使用记录 |
| | | var log = new SysRoadwayUseLog |
| | | { |
| | |
| | | Layer = 0, |
| | | }; |
| | | Db.Insertable(log).ExecuteCommand(); |
| | | } |
| | | |
| | | // 添加入库日志记录 |
| | | var taskNo = new Common().GetMaxNo("TK"); |
| | | var exTask = new LogTask //入库任务 |
| | | { |
| | | TaskNo = taskNo, |
| | | Sender = "WMS", |
| | | Receiver = "WCS", |
| | | IsSuccess = 1, //是否下发成功 0失败 1成功 |
| | | SendDate = DateTime.Now, //发送时间 |
| | | BackDate = DateTime.Now, //返回时间 |
| | | StartRoadway = "", // 起始巷道 |
| | | StartLocat = "",//起始位置 |
| | | EndLocat = "",//目标位置 |
| | | EndRoadway = roadNo, // 目标巷道 |
| | | PalletNo = palletNo,//托盘码 |
| | | IsSend = 1,//是否可再次下发 |
| | | IsCancel = 1,//是否可取消 |
| | | IsFinish = 1,//是否可完成 |
| | | Type = "0",//任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | Status = "1",//任务状态0:等待执行1正在执行2执行完成 |
| | | OrderType = "0",//0 入库单 1 出库单 2 盘点单 3 移库单 |
| | | Msg = "入库口到=>>" + roadNo + "巷道的入库任务", //关键信息 |
| | | |
| | | }; |
| | | Db.Insertable(exTask).ExecuteCommand(); |
| | | |
| | | |
| | | if (palletBindList.Count >= 1) |
| | | { |
| | |
| | | Db.Updateable(palletBindList).ExecuteCommand(); |
| | | } |
| | | Db.CommitTran(); |
| | | |
| | | comDto = new OutCommandDto() |
| | | { |
| | | PalletNo = palletNo,//托盘号 |
| | |
| | | StartLocate = "", // 起始位置 |
| | | EndLocate = "", // 目标位置 |
| | | EndRoadway = roadNo, // 目标巷道 |
| | | TaskNo = "", // 任务号 |
| | | TaskType = "0",// 任务类型 (出库) |
| | | TaskNo = taskNo, // 任务号 |
| | | TaskType = "0",// 任务类型:入库任务 |
| | | OutMode = "", //目标地址 |
| | | Order = 1 |
| | | }; |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |