| | |
| | | |
| | | #region 接口方法 |
| | | |
| | | //JC23绑定物料托盘即增加库存 |
| | | //JC26绑定物料托盘即增加库存 |
| | | public void BindPalletStock(BoxPalletBindVm model, int userId) |
| | | { |
| | | try |
| | |
| | | BllQualityInspect quality = new BllQualityInspect(); |
| | | if (model.Type == "0") |
| | | { |
| | | quality = Db.Queryable<BllQualityInspect>().Where(a => a.IsDel == "0" && a.SkuNo == detail.SkuNo && a.LotNo == detail.LotNo).OrderByDescending(a => a.CreateTime).First(); |
| | | quality = Db.Queryable<BllQualityInspect>() |
| | | .Where(a => a.IsDel == "0" && a.SkuNo == detail.SkuNo && a.LotNo == detail.LotNo) |
| | | .OrderByDescending(a => a.CreateTime).First(); |
| | | } |
| | | |
| | | DataStockDetail sd1 = null; |
| | |
| | | InspectQty = 0, |
| | | ASNNo = bind.ASNNo, |
| | | ASNDetailNo = bind.ASNDetailNo, |
| | | WareHouseNo = "",//所属仓库 |
| | | WareHouseNo = "W01",//所属仓库 |
| | | RoadwayNo = "",//所属巷道 |
| | | AreaNo = "",//所属区域 |
| | | LocatNo = "",//储位地址 |
| | |
| | | } |
| | | else if (model.Type == "0")//物料托 |
| | | { |
| | | if (model.Detail.Count(m => m.OrderCode != detail.OrderDetailCode) > 0) |
| | | { |
| | | throw new Exception($"托盘绑定明细中,含有箱码生产工单不一致"); |
| | | } |
| | | // 使用场景不明确 |
| | | //if (model.Detail.Count(m => m.OrderCode != detail.OrderDetailCode) > 0) |
| | | //{ |
| | | // throw new Exception($"托盘绑定明细中,含有箱码生产工单不一致"); |
| | | //} |
| | | if (model.Detail.Count(m => m.SkuNo != model.SkuNo || m.LotNo != model.LotNo) > 0) |
| | | { |
| | | throw new Exception($"托盘绑定明细中,含有箱码物料或批次不一致"); |
| | |
| | | Standard = box.Standard, |
| | | PackageStandard = box.PackageStandard, |
| | | StoreTime = box.StoreTime, |
| | | QtyCount = (int)box.QtyCount, |
| | | QtyOrd = (int)box.QtyOrd, |
| | | QtyCount = box.QtyCount, |
| | | QtyOrd = box.QtyOrd, |
| | | CreateUser = userId, |
| | | CreateTime = comTime, |
| | | }; |
| | |
| | | |
| | | #endregion |
| | | |
| | | #region 托盘绑定 |
| | | #region 组托收货 |
| | | public List<PalletBindDto> GetPalletBindList(PalletBindVm model, out int count) |
| | | { |
| | | try |
| | |
| | | |
| | | if (!string.IsNullOrWhiteSpace(model.SkuNo) || !string.IsNullOrWhiteSpace(model.SkuName)) |
| | | { |
| | | var detailList = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.SkuNo.Contains(model.SkuNo.Trim()) && m.SkuName.Contains(model.SkuName.Trim())).Select(m => m.Id).Distinct().ToList(); |
| | | var detailList = Db.Queryable<BllArrivalNoticeDetail>() |
| | | .Where(m => m.IsDel == "0" && m.SkuNo.Contains(model.SkuNo.Trim()) && m.SkuName.Contains(model.SkuName.Trim())) |
| | | .Select(m => m.Id).Distinct().ToList(); |
| | | strList = detailList; |
| | | if (strList.Count <= 0) |
| | | { |
| | | // 物料编码、名称检索失败直接返回null |
| | | count = 0; |
| | | return null; |
| | | } |
| | | |
| | | } |
| | | Expression<Func<BllPalletBind, bool>> item = Expressionable.Create<BllPalletBind>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.ASNNo), it => it.ASNNo.Contains(model.ASNNo.Trim())) |
| | |
| | | .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)) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.EndTime), it => it.CreateTime <= Convert.ToDateTime(model.EndTime)) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.EndTime), it => it.CreateTime <= Convert.ToDateTime(model.EndTime).AddDays(1)) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.Status), it => it.Status == model.Status) |
| | | .And(m => m.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | |
| | | .LeftJoin<BllArrivalNoticeDetail>((a, b) => a.ASNDetailNo == b.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c, d) => a.UpdateUser == d.Id) |
| | | //.LeftJoin<SysStorageLocat>((a, b, c, d, e) => a.LocatNo == e.LocatNo) |
| | | .LeftJoin<SysStorageLocat>((a, b, c, d, e) => a.LocatNo == e.LocatNo) |
| | | .LeftJoin<SysWareHouse>((a, b, c, d, e,f) => a.WareHouseNo == f.WareHouseNo) |
| | | //.LeftJoin<BllBoxInfo>((a, b, c, d, e, f) => a.Id == e.BindNo) |
| | | .Select((a, b, c, d) => new PalletBindDto() |
| | | .Select((a, b, c, d,e,f) => new PalletBindDto() |
| | | { |
| | | Id = a.Id, |
| | | ASNNo = a.ASNNo, |
| | |
| | | LocatNo = a.LocatNo, |
| | | RoadwayNo = a.RoadwayNo, |
| | | WareHouseNo = a.WareHouseNo, |
| | | WareHouseName = a.WareHouseNo+"-"+f.WareHouseName, |
| | | Qty = a.Qty, |
| | | FullQty = a.FullQty, |
| | | SamplingQty = a.SamplingQty, |
| | |
| | | .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.AreaNo == categoryAreaNo) |
| | | .And(m => categoryAreaNo.Contains(m.AreaNo)) |
| | | .ToExpression();//注意 这一句 不能少 |
| | | var total = 0; |
| | | var list = Db.Queryable<SysStorageLocat>().Where(item).OrderByDescending(a => a.Depth).OrderBy(a => a.Column) |
| | |
| | | var sku = skuList.FirstOrDefault(m => m.SkuNo == skuNo); |
| | | if (sku == null) |
| | | { |
| | | throw new Exception("物料信息中未查询到入库单明细包含的物料信息,不可入库"); |
| | | throw new Exception("物料编码不存在,不可入库"); |
| | | } |
| | | //判断物料是否含有类别信息 |
| | | if (string.IsNullOrWhiteSpace(sku.CategoryNo)) |
| | | { |
| | | throw new Exception($"物料:{sku.SkuNo}未查询到类别信息"); |
| | | throw new Exception($"物料:{sku.SkuNo}未设置类别,不可入库"); |
| | | } |
| | | |
| | | var skuCategory = skuCategoryList.FirstOrDefault(m => m.CategoryNo == sku.CategoryNo); |
| | | if (skuCategory == null) |
| | | { |
| | | throw new Exception($"未在类别信息中查询到物料:{sku.SkuNo}包含的类别"); |
| | | throw new Exception($"{sku.SkuNo}物料类别不存在,不可入库"); |
| | | } |
| | | |
| | | var areaStr = skuCategory.AreaNo.Split(","); |
| | |
| | | } |
| | | //如果跳巷道并且未找到合适空储位,则跳到最后一次使用的巷道查询 |
| | | |
| | | if (roadNo == "") |
| | | if (string.IsNullOrWhiteSpace(roadNo)) |
| | | { |
| | | if (useLog != null) |
| | | { |
| | |
| | | roadNo = item; |
| | | } |
| | | //当前巷有位置则退出 |
| | | if (roadNo != null) |
| | | if (!string.IsNullOrWhiteSpace(roadNo)) |
| | | { |
| | | break; |
| | | } |
| | |
| | | }; |
| | | Db.Insertable(exTask).ExecuteCommand(); |
| | | |
| | | var asnNo = ""; |
| | | // 添加托盘绑定表托盘入库任务号 liudl |
| | | if (palletBindList.Count < 1) |
| | | { |
| | |
| | | bindModel.WareHouseNo = houseNo; |
| | | bindModel.RoadwayNo = roadNo; |
| | | Db.Updateable(bindModel).ExecuteCommand(); |
| | | asnNo = stockModel.ASNNo; |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | foreach (DataStockDetail stockModel in stockDetail) |
| | | { |
| | | //添加托盘上架记录 |
| | | var upShelf = new BllPalletUpShelf() |
| | | { |
| | | TaskNo = exTask.TaskNo, |
| | | TraceNo = asnNo, |
| | | PalletNo = palletNo, |
| | | SkuNo = stockModel.SkuNo, |
| | | SkuName = stockModel.SkuName, |
| | | LotNo = stockModel.LotNo, |
| | | Status = "1", |
| | | |
| | | WareHouseNo = houseNo, |
| | | RoadwayNo = roadNo, |
| | | AreaNo = "", |
| | | LocatNo = "", |
| | | |
| | | CreateUser = 0, |
| | | }; |
| | | Db.Insertable(upShelf).ExecuteCommand(); |
| | | } |
| | | |
| | | |
| | | if (palletBindList.Count >= 1) |
| | | { |
| | |
| | | |
| | | }; |
| | | Db.Insertable(exTask).ExecuteCommand(); |
| | | |
| | | var asnNo = ""; |
| | | // 添加托盘绑定表托盘入库任务号 liudl |
| | | foreach (DataStockDetail stockModel in stockDetail) |
| | | { |
| | |
| | | bindModel.RoadwayNo = locate.RoadwayNo; |
| | | bindModel.LocatNo = locate.LocatNo; |
| | | Db.Updateable(bindModel).ExecuteCommand(); |
| | | asnNo = stockModel.ASNNo; |
| | | } |
| | | } |
| | | foreach (DataStockDetail stockModel in stockDetail) |
| | | { |
| | | //添加托盘上架记录 |
| | | var upShelf = new BllPalletUpShelf() |
| | | { |
| | | TaskNo = exTask.TaskNo, |
| | | TraceNo = asnNo, |
| | | PalletNo = palletNo, |
| | | SkuNo = stockModel.SkuNo, |
| | | SkuName = stockModel.SkuName, |
| | | LotNo = stockModel.LotNo, |
| | | Status = "1", |
| | | |
| | | WareHouseNo = houseNo, |
| | | RoadwayNo = locate.RoadwayNo, |
| | | AreaNo = locate.AreaNo, |
| | | LocatNo = locate.LocatNo, |
| | | |
| | | CreateUser = 0, |
| | | }; |
| | | Db.Insertable(upShelf).ExecuteCommand(); |
| | | } |
| | | |
| | | oldTaskNo = taskNo; |
| | | } |
| | | else |
| | |
| | | } |
| | | Db.Updateable(oldTask).ExecuteCommand(); |
| | | |
| | | var bindModel = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.Status == "2" |
| | | && m.PalletNo == oldTask.PalletNo && m.TaskNo == oldTaskNo); |
| | | if (bindModel != null && string.IsNullOrWhiteSpace(bindModel.LocatNo)) |
| | | |
| | | var bindModelList = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.Status == "2" |
| | | && m.PalletNo == oldTask.PalletNo && m.TaskNo == oldTaskNo).ToList(); |
| | | foreach (var bindModel in bindModelList) |
| | | { |
| | | bindModel.TaskNo = oldTask.TaskNo; |
| | | bindModel.WareHouseNo = locate.WareHouseNo; |
| | | bindModel.RoadwayNo = locate.RoadwayNo; |
| | | bindModel.LocatNo = locate.LocatNo; |
| | | Db.Updateable(bindModel).ExecuteCommand(); |
| | | if (string.IsNullOrWhiteSpace(bindModel.LocatNo)) |
| | | { |
| | | bindModel.TaskNo = oldTask.TaskNo; |
| | | bindModel.WareHouseNo = locate.WareHouseNo; |
| | | bindModel.RoadwayNo = locate.RoadwayNo; |
| | | bindModel.LocatNo = locate.LocatNo; |
| | | Db.Updateable(bindModel).ExecuteCommand(); |
| | | |
| | | } |
| | | } |
| | | //更改上架信息 |
| | | var upShelfList = Db.Queryable<BllPalletUpShelf>().Where(m => m.IsDel == "0" && m.TaskNo == oldTask.TaskNo && m.PalletNo == palletNo).ToList(); |
| | | foreach (var upShelf in upShelfList) |
| | | { |
| | | upShelf.WareHouseNo = locate.WareHouseNo; |
| | | upShelf.RoadwayNo = locate.RoadwayNo; |
| | | upShelf.LocatNo = locate.LocatNo; |
| | | upShelf.Status = "1"; |
| | | Db.Updateable(upShelf).ExecuteCommand(); |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | locate.Status = "2"; |
| | |
| | | //添加操作日志记录 |
| | | var k = new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", taskNo, "完成", $"点击完成按钮、完成任务号为:{taskNo}的任务", userId); |
| | | } |
| | | |
| | | //判断是否是回流入库完成 |
| | | if (stockDetail.Any()) |
| | | { |
| | |
| | | task.FinishDate = comTime;//完成时间 |
| | | //更新任务信息 |
| | | Db.Updateable(task).ExecuteCommand(); |
| | | |
| | | //更改托盘上架记录信息 |
| | | var upShelfList = Db.Queryable<BllPalletUpShelf>().Where(m => m.IsDel == "0" && m.TaskNo == taskNo && m.PalletNo == task.PalletNo).ToList(); |
| | | foreach (var upShelf in upShelfList) |
| | | { |
| | | upShelf.Status = "2"; |
| | | Db.Updateable(upShelf).ExecuteCommand(); |
| | | } |
| | | //判断是否是回流入库完成 |
| | | if (stockDetail.Any()) |
| | | { |
| | |
| | | Db.Updateable(dataBoxInfoList).ExecuteCommand(); |
| | | #endregion |
| | | |
| | | #region 采购计划 |
| | | //var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.ASNDetailNo); |
| | | //if (noticeDetail == null) |
| | | //{ |
| | | // throw new Exception("未查询到托盘绑定的入库单明细信息"); |
| | | //} |
| | | //var notice = Db.Queryable<BllArrivalNotice>().First(m => m.IsDel == "0" && m.ASNNo == noticeDetail.ASNNo); |
| | | //if (notice == null) |
| | | //{ |
| | | // throw new Exception("未查询到托盘绑定的入库单信息"); |
| | | //} |
| | | //if (notice.Type == "1" && !string.IsNullOrEmpty(noticeDetail.OrderDetailCode)) |
| | | //{ |
| | | // //采购单明细 |
| | | // var planDetail = Db.Queryable<BllProcurePlanNoticeDetail>().First(it => it.OrderDetailCode == noticeDetail.OrderDetailCode && it.IsDel == "0"); |
| | | // planDetail.CompleteQty += item.Qty; |
| | | // if (planDetail.CompleteQty >= planDetail.Qty) |
| | | // { |
| | | // planDetail.Status = "2"; |
| | | // planDetail.CompleteTime = comTime; |
| | | // } |
| | | // Db.Updateable(planDetail).ExecuteCommand(); |
| | | |
| | | // //采购单 |
| | | // var planOrd = Db.Queryable<BllProcurePlanNotice>().First(it => it.Id == planDetail.ParentId && it.IsDel == "0"); |
| | | // var planDetailNum = Db.Queryable<BllProcurePlanNoticeDetail>() |
| | | // .Count(m => m.IsDel == "0" && m.ParentId == planDetail.ParentId && m.Status != "2"); |
| | | // if (planDetailNum == 0) |
| | | // { |
| | | // planOrd.Status = "2"; |
| | | // planOrd.CompleteTime = comTime; |
| | | // Db.Updateable(planOrd).ExecuteCommand(); |
| | | // } |
| | | // else |
| | | // { |
| | | // if (planOrd.Status == "0") |
| | | // { |
| | | // planOrd.Status = "1"; |
| | | // Db.Updateable(planOrd).ExecuteCommand(); |
| | | // } |
| | | // } |
| | | //} |
| | | #endregion |
| | | item.Status = "3"; |
| | | item.CompleteTime = comTime; |
| | | } |
| | |
| | | } |
| | | Db.Updateable(bind).ExecuteCommand(); |
| | | } |
| | | //更改托盘上架记录信息 |
| | | var upShelfList = Db.Queryable<BllPalletUpShelf>().Where(m => m.IsDel == "0" && m.TaskNo == taskNo && m.PalletNo == task.PalletNo).ToList(); |
| | | foreach (var upShelf in upShelfList) |
| | | { |
| | | upShelf.IsDel = "1"; |
| | | Db.Updateable(upShelf).ExecuteCommand(); |
| | | } |
| | | |
| | | //储位信息 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat); |
| | | if (locate != null) |
| | | { |