| | |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.LocatNo), it => it.LocatNo.Contains(model.LocatNo.Trim())) |
| | | .AndIF(!string.IsNullOrEmpty(model.RoadwayNo), a => a.RoadwayNo == model.RoadwayNo) |
| | | .AndIF(!string.IsNullOrEmpty(model.WareHouseNo), a => a.WareHouseNo == model.WareHouseNo) |
| | | .AndIF(strList.Count>0, it => strList.Contains((int)it.ASNDetailNo)) |
| | | .AndIF(strList.Count > 0, it => strList.Contains((int)it.ASNDetailNo)) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => it.LotNo.Contains(model.LotNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.LotText), it => it.LotText.Contains(model.LotText.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.StartTime), it => it.CreateTime >= Convert.ToDateTime(model.StartTime)) |
| | |
| | | }) |
| | | .OrderBy(a => a.Status).OrderByDescending(a => a.CreateTime) |
| | | .ToOffsetPage(model.Page, model.Limit, ref total); |
| | | |
| | | |
| | | count = data.Count; |
| | | return data; |
| | | |
| | |
| | | try |
| | | { |
| | | var total = 0; |
| | | var data = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel =="0" && m.BindNo == model.BindNo) |
| | | var data = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BindNo == model.BindNo) |
| | | .LeftJoin<BllPalletBind>((a, b) => a.BindNo == b.Id) |
| | | .GroupBy((a, b) => new |
| | | { |
| | |
| | | { |
| | | try |
| | | { |
| | | |
| | | //获取托盘绑定信息 |
| | | var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.Id == id); |
| | | if (bind == null) |
| | | { |
| | |
| | | { |
| | | throw new Exception("该托盘绑定信息的状态不是等待入库,不能删除"); |
| | | } |
| | | //获取除删除绑定信息外是否存在该托盘且同单据其它绑定信息 |
| | | var bindid = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.PalletNo == bind.PalletNo && m.Id != id && m.ASNNo == bind.ASNNo).ToList(); |
| | | //获取托盘信息 |
| | | var pallet = Db.Queryable<SysPallets>().First(a => a.IsDel == "0" && a.PalletNo == bind.PalletNo && a.Status == "1"); |
| | | if (pallet == null) |
| | |
| | | b.UpdateTime = time; |
| | | b.UpdateUser = userId; |
| | | var i = Db.Updateable(b).ExecuteCommand(); |
| | | if (i!=1) |
| | | if (i != 1) |
| | | { |
| | | throw new Exception($"{b.BoxNo}箱码、{b.BoxNo3}支码删除失败"); |
| | | } |
| | |
| | | { |
| | | noticeDetail.Status = "0"; |
| | | //获取状态不是等待执行的明细信息 |
| | | var count = Db.Queryable<BllArrivalNoticeDetail>().Count(m => m.IsDel == "0" && m.Id != noticeDetail.Id && m.ASNNo == bind.ASNNo && m.Status !="0"); |
| | | if (count==0) |
| | | var count = Db.Queryable<BllArrivalNoticeDetail>().Count(m => m.IsDel == "0" && m.Id != noticeDetail.Id && m.ASNNo == bind.ASNNo && m.Status != "0"); |
| | | if (count == 0) |
| | | { |
| | | //修改入库单信息 |
| | | var notice = Db.Queryable<BllArrivalNotice>().First(m => m.IsDel == "0" && m.ASNNo == bind.ASNNo); |
| | |
| | | Db.Updateable(noticeDetail).ExecuteCommand(); |
| | | } |
| | | |
| | | pallet.Status = "0"; |
| | | pallet.UpdateUser = userId; |
| | | pallet.UpdateTime = DateTime.Now; |
| | | Db.Updateable(pallet).ExecuteCommand(); |
| | | if (bindid.Count == 0) |
| | | { |
| | | pallet.Status = "0"; |
| | | pallet.UpdateUser = userId; |
| | | pallet.UpdateTime = DateTime.Now; |
| | | Db.Updateable(pallet).ExecuteCommand(); |
| | | } |
| | | |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "托盘绑定", bind.PalletNo, "删除", $"删除了入库单:{bind.ASNNo}、托盘码:{bind.PalletNo}的信息", userId); |
| | | Db.CommitTran(); |
| | |
| | | { |
| | | item.ASNNo = ""; |
| | | item.ASNDetailNo = null; |
| | | } |
| | | } |
| | | item.BindNo = null; |
| | | item.PalletNo = ""; |
| | | item.Status = "0"; |
| | |
| | | //修改托盘绑定信息 |
| | | bind.Qty -= qty; |
| | | |
| | | if (bind.Qty ==0) |
| | | if (bind.Qty == 0) |
| | | { |
| | | //判断是否有指定储位 |
| | | if (!string.IsNullOrWhiteSpace(bind.LocatNo)) |
| | |
| | | } |
| | | |
| | | var info = boxInfo.First(m => m.BindNo == bind.Id); |
| | | //入库单明细 |
| | | var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == bind.ASNDetailNo); |
| | | if (noticeDetail == null && info.SkuNo != "100099") |
| | | { |
| | | throw new Exception("未查询到托盘绑定的入库单明细信息"); |
| | | } |
| | | var log = new BllAuditLog() |
| | | { |
| | | OrderNo = notice.ASNNo, |
| | | PalletNo = bind.PalletNo, |
| | | Msg = $"物料:{info.SkuNo}、批次:{info.LotNo};", |
| | | Msg = info == null ? $"物料:{noticeDetail.SkuNo}、批次:{noticeDetail.LotNo};": $"物料:{info.SkuNo}、批次:{info.LotNo};", |
| | | Reason = reason, |
| | | Status = "0", |
| | | Opinion = "", |
| | |
| | | .AndIF(!string.IsNullOrWhiteSpace(column), m => m.Column == int.Parse(column)) |
| | | .AndIF(!string.IsNullOrWhiteSpace(layer), m => m.Layer == int.Parse(layer)) |
| | | .AndIF(!string.IsNullOrWhiteSpace(locateNo), m => m.LocatNo.Contains(locateNo)) |
| | | .And(m => m.IsDel == "0" && m.Status=="0" && m.Flag == "0" && m.WareHouseNo == houseNo) |
| | | .And(m => m.IsDel == "0" && m.Status == "0" && m.Flag == "0" && m.WareHouseNo == houseNo) |
| | | .ToExpression();//注意 这一句 不能少 |
| | | var total = 0; |
| | | var list = Db.Queryable<SysStorageLocat>().Where(item) |
| | |
| | | //获取同托盘的托盘绑定信息 |
| | | var bindList = Db.Queryable<BllPalletBind>() |
| | | .Where(m => m.IsDel == "0" && m.PalletNo == bind.PalletNo && m.Status == "0").ToList(); |
| | | if (bindList.Count>0) |
| | | if (bindList.Count > 0) |
| | | { |
| | | foreach (var b in bindList) |
| | | { |
| | |
| | | { |
| | | throw new Exception("托盘条码不受WMS管理,不可入库!"); |
| | | } |
| | | |
| | | |
| | | #region |
| | | |
| | | //查询托盘绑定信息(状态为等待入库的) |
| | |
| | | throw new Exception($"{palletNo}托盘条码不具有箱码信息,不可入库!"); |
| | | } |
| | | skuNo = stockDetail.First().SkuNo; |
| | | |
| | | |
| | | //获取对应回库规则 |
| | | var function = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetName == "托盘回库验证" && a.IsEnable == "NO"); |
| | | #region 托盘回库规则 |
| | |
| | | var allotLocate = new AllotLocation(); |
| | | |
| | | SysStorageLocat locate; |
| | | |
| | | |
| | | var sku = skuList.FirstOrDefault(m => m.SkuNo == skuNo); |
| | | if (sku == null) |
| | | { |
| | |
| | | |
| | | var locateCount = Db.Queryable<SysStorageLocat>() |
| | | .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo)).Count(); |
| | | if (locateCount- bindNum>0) |
| | | if (locateCount - bindNum > 0) |
| | | { |
| | | roadNo = l; |
| | | } |
| | |
| | | } |
| | | } |
| | | //如果跳巷道并且未找到合适空储位,则跳到最后一次使用的巷道查询 |
| | | |
| | | |
| | | if (roadNo == null) |
| | | { |
| | | if (useLog != null) |
| | | { |
| | | roadNo = useLog.RoadwayNo; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else//按照巷道优先级分配 |
| | | { |
| | |
| | | { |
| | | throw new Exception("未查询到空储位巷道"); |
| | | } |
| | | |
| | | |
| | | Db.BeginTran(); |
| | | try |
| | | { |
| | |
| | | //添加巷道使用记录 |
| | | var log = new SysRoadwayUseLog |
| | | { |
| | | RoadwayNo = roadNo , |
| | | RoadwayNo = roadNo, |
| | | WareHouseNo = houseNo, |
| | | Row = 0, |
| | | Column = 0, |
| | |
| | | //查询托盘绑定信息(状态为等待入库的) |
| | | var palletBindList = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "2").ToList(); |
| | | var haveLocate = palletBindList.FirstOrDefault(m => !string.IsNullOrWhiteSpace(m.LocatNo)); |
| | | |
| | | |
| | | var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList(); |
| | | //物料类别信息 |
| | | var skuCategoryList = Db.Queryable<SysMaterialCategory>().Where(m => m.IsDel == "0").ToList(); |
| | | |
| | | |
| | | var skuNo = ""; //入库物料 |
| | | |
| | | if (palletBindList.Count >= 1) //正常入库 |
| | |
| | | } |
| | | |
| | | skuNo = noticeDetail.SkuNo; |
| | | |
| | | |
| | | } |
| | | else if(palletBindList.First().Type == "1")//空托盘 |
| | | else if (palletBindList.First().Type == "1")//空托盘 |
| | | { |
| | | skuNo = "100099"; |
| | | skuNo = "100099"; |
| | | } |
| | | } |
| | | else //回流入库 |
| | | { |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo).ToList(); |
| | | if (stockDetail.Count==0) |
| | | if (stockDetail.Count == 0) |
| | | { |
| | | throw new Exception($"{palletNo}托盘条码不具有箱码信息,不可入库!"); |
| | | } |
| | |
| | | |
| | | |
| | | //获取对应回库规则 |
| | | 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.FunSetName == "托盘回库验证" && a.IsEnable == "NO"); |
| | | #region 托盘回库规则 |
| | | |
| | | if (function != null) |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | #endregion |
| | | } |
| | |
| | | } |
| | | |
| | | locate = allotLocate.GetSuiTableLocate(houseNo, areaList, roadwayNo); |
| | | } |
| | | } |
| | | Db.BeginTran(); |
| | | try |
| | | { |
| | |
| | | IsSuccess = 1, //是否下发成功 0失败 1成功 |
| | | SendDate = DateTime.Now, //发送时间 |
| | | BackDate = DateTime.Now, //返回时间 |
| | | StartRoadway="", // 起始巷道 |
| | | StartRoadway = "", // 起始巷道 |
| | | StartLocat = "",//起始位置 |
| | | EndLocat = locate.LocatNo,//目标位置 |
| | | EndRoadway = locate.RoadwayNo, // 目标巷道 |
| | |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList(); |
| | | //当前任务中的储位信息 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat); |
| | | if (locate==null) |
| | | if (locate == null) |
| | | { |
| | | throw new Exception($"未查询到任务中的储位信息"); |
| | | } |
| | |
| | | return; |
| | | } |
| | | //正常入库 |
| | | var bindList = Db.Queryable<BllPalletBind>().Where(m => m.IsDel =="0" && m.TaskNo == taskNo && m.Status =="1").ToList(); |
| | | var bindList = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.TaskNo == taskNo && m.Status == "1").ToList(); |
| | | if (bindList.Count == 0) |
| | | { |
| | | throw new Exception($"{taskNo}该任务没有对应的流水信息"); |
| | |
| | | skuNo = stockDetail.First().SkuNo; |
| | | } |
| | | |
| | | var sku = Db.Queryable<SysMaterials>().First(m =>m.IsDel =="0" && m.SkuNo == skuNo); |
| | | var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == skuNo); |
| | | if (sku == null) |
| | | { |
| | | throw new Exception("物料信息中未查询到入库单明细包含的物料信息,不可入库"); |
| | |
| | | throw new Exception($"物料:{sku.SkuNo}未查询到类别信息"); |
| | | } |
| | | |
| | | var skuCategory = Db.Queryable<SysMaterialCategory>().First(m =>m.IsDel=="0" && m.CategoryNo == sku.CategoryNo); |
| | | var skuCategory = Db.Queryable<SysMaterialCategory>().First(m => m.IsDel == "0" && m.CategoryNo == sku.CategoryNo); |
| | | if (skuCategory == null) |
| | | { |
| | | throw new Exception($"未在类别信息中查询到物料:{sku.SkuNo}包含的类别"); |
| | |
| | | //} |
| | | //catch (Exception ex) |
| | | //{ |
| | | // 整个仓库都没有找到托盘 |
| | | if (asnNo != "回流托盘") |
| | | { |
| | | palletBindModel.Status = "0"; // 等待执行 |
| | | palletBindModel.LocatNo = ""; // 储位地址 |
| | | Db.Updateable(palletBindModel).ExecuteCommand(); |
| | | Db.CommitTran(); |
| | | } |
| | | // 整个仓库都没有找到托盘 |
| | | if (asnNo != "回流托盘") |
| | | { |
| | | palletBindModel.Status = "0"; // 等待执行 |
| | | palletBindModel.LocatNo = ""; // 储位地址 |
| | | Db.Updateable(palletBindModel).ExecuteCommand(); |
| | | Db.CommitTran(); |
| | | } |
| | | |
| | | return null; |
| | | //throw ex; |
| | | //} |
| | | return null; |
| | | //throw ex; |
| | | //} |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | // 生成入库任务 |
| | | var taskNo = new Common().GetMaxNo("TK"); // 获取任务编号 |
| | |
| | | Type = "0", //任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | Status = "1", //任务状态0:等待执行1正在执行2执行完成 |
| | | OrderType = "0", //0 入库单 1 出库单 2 盘点单 3 移库单 |
| | | Msg = taskModel.EndLocat+">>>>" + locate.LocatNo + "的入库任务", //关键信息 |
| | | Msg = taskModel.EndLocat + ">>>>" + locate.LocatNo + "的入库任务", //关键信息 |
| | | }; |
| | | Db.Insertable(exTask).ExecuteCommand(); |
| | | locate.Status = "2"; |
| | |
| | | |
| | | //托盘绑定信息 |
| | | var bind = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.TaskNo == taskNo).ToList(); |
| | | if (bind.Count >0) |
| | | if (bind.Count > 0) |
| | | { |
| | | foreach (var item in bind) |
| | | { |