diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 4c142281..02c8e2c4 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -1304,12 +1304,22 @@ - 操作人(出库人) + 操作人 - 操作时间(出库时间) + 操作时间 + + + + + 出库人 + + + + + 出库时间 @@ -1322,7 +1332,7 @@ 明细 - + 出库 反写 任务单(返回 这个物料下面的来源单号出了多少数量) diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index 378cfa74..116a56db 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -151,13 +151,13 @@ namespace WMS.Web.Domain.Services materials = materials_result.Data.ToList(); //1.先判断:箱号已经绑定了入库任务单中;备注:业务说法就是箱是否收货了 - var tast_box= await _inStockTaskBoxRepositories.GetBy(dto.BoxBillNo); + var tast_box = await _inStockTaskBoxRepositories.GetBy(dto.BoxBillNo); if (tast_box == null) return Result.ReFailure(ResultCodes.Box_NoBind_Task_Data); //1.2找到任务单 var tast = await _inStockTaskRepositories.Get(tast_box.TaskId); - if(tast == null) + if (tast == null) return Result.ReFailure(ResultCodes.InStockTaskNoData); //1.2.1判断箱子绑定的物料明细数据的仓库,是不是用户所选的仓库;不是则提示:箱号仓库不对 @@ -251,7 +251,7 @@ namespace WMS.Web.Domain.Services { task.Details.ForEach(x => { - var current_entityDets= dto.Details.Where(t => t.ErpDetailId == x.ErpDetailId).ToList(); + var current_entityDets = dto.Details.Where(t => t.ErpDetailId == x.ErpDetailId).ToList(); if (current_entityDets != null && current_entityDets.Count != 0 && x.ErpDetailId == current_entityDets.FirstOrDefault().ErpDetailId) { var current_entityDet_matQty = current_entityDets.Sum(x => x.Qty); @@ -291,7 +291,7 @@ namespace WMS.Web.Domain.Services private async Task ShelfNoPurchaseSave(NoPurchaseShelfRequest dto, LoginInDto loginInfo, bool isTransaction = true) { //1.1过滤的明细:0数量入库的明细要过滤掉 - dto.Boxs.ForEach(x => + dto.Boxs.ForEach(x => { x.Details.RemoveAll(t => t.Qty == 0); }); @@ -455,26 +455,26 @@ namespace WMS.Web.Domain.Services }); //2.修改箱和任务单的绑定关系,先判断箱没有被收货过 - var taskBoxList= await _inStockTaskBoxRepositories.GetListBy(entity.Id); - var dto_boxIds= dto.Boxs.GroupBy(x => x.BoxId).Select(x => x.Key).ToList(); - var isHaveBox= taskBoxList.Where(x => dto_boxIds.Contains(x.BoxId)).Any(); + var taskBoxList = await _inStockTaskBoxRepositories.GetListBy(entity.Id); + var dto_boxIds = dto.Boxs.GroupBy(x => x.BoxId).Select(x => x.Key).ToList(); + var isHaveBox = taskBoxList.Where(x => dto_boxIds.Contains(x.BoxId)).Any(); if (isHaveBox) return Result.ReFailure(ResultCodes.InStockTaskBoxIsHaveData); //3.组装绑定关系表,要添加的集合 - var boxEntitys= await _boxRepositories.GetEntityList(dto_boxIds); - var taskBoxAdd = new List(); + var boxEntitys = await _boxRepositories.GetEntityList(dto_boxIds); + var taskBoxAdd = new List(); foreach (var item in dto.Boxs) { var taskBox = _mapper.Map(item); taskBox.TaskId = entity.Id; - var current_dto_box_dets= boxEntitys.Where(x => x.Id == item.BoxId).SelectMany(x=>x.Details).ToList(); + var current_dto_box_dets = boxEntitys.Where(x => x.Id == item.BoxId).SelectMany(x => x.Details).ToList(); taskBox.Details = _mapper.Map>(current_dto_box_dets); taskBox.Details.ForEach(x => { x.ErpDetailId = item.ErpDetailId; }); taskBoxAdd.Add(taskBox); } - var isSuccess= await _inStockTaskBoxRepositories.AddRange(taskBoxAdd,isTransaction); - if(!isSuccess) + var isSuccess = await _inStockTaskBoxRepositories.AddRange(taskBoxAdd, isTransaction); + if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); @@ -536,40 +536,41 @@ namespace WMS.Web.Domain.Services //判断箱是否存在库存:有的话就提示“箱号已上架入库” var boxInventory = await _boxInventoryRepositories.GetList(boxs.Select(x => x.Id).ToList()); - if(boxInventory!=null && boxInventory.Count!=0) + if (boxInventory != null && boxInventory.Count != 0) return Result.ReFailure(ResultCodes.BoxInventoryHaveInventoryError); //合并多个箱明细的数据:相同物料数量合并 var boxDetails = boxs.SelectMany(x => x.Details).GroupBy(x => x.MaterialId).Select(x => new { MaterialId = x.Key, Qty = x.Sum(t => t.Qty) }).ToList(); - //3.比对:false为比对失败; - bool isRight = boxDetails.All(x => task_details.Any(t => t.MaterialId == x.MaterialId && t.AccruedQty >= x.Qty)) && boxDetails.Count <= task_details.Count; - if (!isRight) + //采购单:要对比数量 + if (task.Type == InstockType.Purchase) { - var qtyIsError = boxDetails.All(x => task_details.Any(t => t.MaterialId == x.MaterialId && t.AccruedQty < x.Qty)); - - if (boxDetails.Count > task_details.Count && qtyIsError) + //3.比对:false为比对失败; + bool isRight = boxDetails.All(x => task_details.Any(t => t.MaterialId == x.MaterialId && t.AccruedQty >= x.Qty)) && boxDetails.Count <= task_details.Count; + if (!isRight) { - if (task.Type == InstockType.Purchase) + var qtyIsError = boxDetails.All(x => task_details.Any(t => t.MaterialId == x.MaterialId && t.AccruedQty < x.Qty)); + if (boxDetails.Count > task_details.Count && qtyIsError) return Result.ReFailure(ResultCodes.Contrast_Purchase_Error); + else if (qtyIsError) + return Result.ReFailure(ResultCodes.Contrast_Qty_Error); else - return Result.ReFailure(ResultCodes.ContrastError); - } - else if (qtyIsError) - return Result.ReFailure(ResultCodes.Contrast_Qty_Error); - else - { - if (task.Type == InstockType.Purchase) return Result.ReFailure(ResultCodes.Contrast_Purchase_Count_Error); - else - return Result.ReFailure(ResultCodes.Contrast_Count_Error); - } + } + } + //非采购单:不要对比数量,只对比物料 + else + { + //3.比对:false为比对失败; + bool isRight = boxDetails.All(x => task_details.Any(t => t.MaterialId == x.MaterialId)) && boxDetails.Count <= task_details.Count; + if (!isRight) + return Result.ReFailure(ResultCodes.Contrast_Count_Error); } //4.是否任务单存在绑定箱号判断:存在的话,就不能收货或者非采购上架 - var taskBoxList= await _inStockTaskBoxRepositories.GetListBy(task.Id); + var taskBoxList = await _inStockTaskBoxRepositories.GetListBy(task.Id); bool isHave = taskBoxList.Where(x => dto.BoxBillNos.Contains(x.BoxBillNo)).Any(); if (isHave) return Result.ReFailure(ResultCodes.BoxHaveError); @@ -588,5 +589,7 @@ namespace WMS.Web.Domain.Services } return Result.ReSuccess(response); } + + } } diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index 448cc108..e06cb916 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -46,7 +46,7 @@ namespace WMS.Web.Domain.Values public static ValueTuple Box_NoBind_Task_Data = (80001, "该箱号不在收货信息中,请核对再试!"); public static ValueTuple OrderNoData = (80002, "单据信息不存在,请核对后再试!"); public static ValueTuple ContrastError = (80003, "箱内产品和数量与来源单不一致"); - public static ValueTuple Contrast_Purchase_Error = (80003, "箱内产品和数量与来源单不一致"); + public static ValueTuple Contrast_Purchase_Error = (80003, "箱内产品和数量与采购单不一致"); public static ValueTuple Contrast_Purchase_Count_Error = (80003, "箱内产品和采购单不一致"); public static ValueTuple Contrast_Count_Error = (80003, "箱内产品和来源单不一致"); public static ValueTuple Contrast_Qty_Error = (80003, "箱内产品数量超过可入库数量");