@@ -249,6 +249,7 @@ namespace WMS.Web.Domain.Services
//1.修改-入库任务单的信息
var updateInStockTaskRequest = new UpdateInStockTaskRequest ( ) ;
updateInStockTaskRequest . Id = dto . TaskId ;
updateInStockTaskRequest . Boxs = dto . Boxs ;
updateInStockTaskRequest . Details = new List < UpdateInStockTaskDetailsRequest > ( ) ;
foreach ( var item in dto . Details )
{
@@ -259,14 +260,14 @@ namespace WMS.Web.Domain.Services
}
//1.1.先找到箱IDs: 获取箱基本信息
var boxIds = dto . Details . GroupBy ( x = > x . BoxId ) . Select ( x = > x . Key ) . ToList ( ) ;
var boxInfos= await _boxRepositories. GetEntityList( boxIds) ;
foreach ( var item in boxInfos )
{
var task_box = new UpdateInStockTaskBoxRequest( ) ;
task_box. BoxId = item . Id ;
task_box. BoxBillNo = item . BoxBillNo ;
updateInStockTaskRequest. Boxs . Add ( task_box) ;
}
//var boxInfos= await _boxRepositories. GetEntityList( boxIds) ;
// foreach (var item in boxInfos)
// {
// var task_box = new UpdateInStockTaskBoxRequest() ;
// task_box.BoxId = item.Id ;
// task_box. BoxBillNo = item. BoxBillNo;
// updateInStockTaskRequest.Boxs.Add( task_box) ;
// }
//1.2.修改入库任务单
var update_result = await this . Update ( updateInStockTaskRequest , loginInfo . UserInfo . StaffId , null , isTransaction , true ) ;
@@ -419,26 +420,40 @@ namespace WMS.Web.Domain.Services
var task = await _inStockTaskRepositories . Get ( dto . TaskId ) ;
if ( task = = null )
return Result < ContrastMaterialsResponse > . ReFailure ( ResultCodes . OrderNoData ) ;
//2.找到箱对应的物料信息
var box = await _boxRepositories. GetByNo( dto . BoxBillNo) ;
if ( box = = null )
// //2.找到箱对应的物料信息--弃用(这个是单个箱)
//var box = await _boxRepositories. GetByNo(dto. BoxBillNo) ;
//if (box == null)
// return Result<ContrastMaterialsResponse>.ReFailure(ResultCodes.BoxNoData);
//2.找到箱对应的物料信息:多个箱
var boxs = await _boxRepositories . GetEntityListByNos ( dto . BoxBillNos ) ;
if ( boxs = = null | | boxs . Count = = 0 )
return Result < ContrastMaterialsResponse > . ReFailure ( ResultCodes . BoxNoData ) ;
//合并多个箱明细的数据:相同物料数量合并
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 = box. Details . All ( x = > task . Details . Any ( t = > t . MaterialId = = x . MaterialId & & t . AccruedQty > = x . Qty ) ) & & box. Details . Count = = task . Details . Count ;
bool isRight = boxDetails . All ( x = > task . Details . Any ( t = > t . MaterialId = = x . MaterialId & & t . AccruedQty > = x . Qty ) ) & & boxDetails . Count = = task . Details . Count ;
if ( ! isRight )
return Result < ContrastMaterialsResponse > . ReFailure ( ResultCodes . ContrastError ) ;
//4.是否任务单存在绑定箱号判断:存在的话,就不能收货或者非采购上架
bool isHave = task . Boxs . Where ( x = > x . BoxBillNo = = bo x . BoxBillNo ) . Any ( ) ;
bool isHave = task . Boxs . Where ( x = > dto . BoxBillNos . Contains ( x . BoxBillNo ) ) .Any ( ) ;
if ( isHave )
return Result < ContrastMaterialsResponse > . ReFailure ( ResultCodes . BoxHaveError ) ;
//4.返回对比结果: true为比对成功, 并把箱ID和箱号返回
var response = new ContrastMaterialsResponse ( ) ;
response . BoxBillNo = box . BoxBillNo ;
response . BoxId = box . Id ;
response . TotalCount = box . Details . Sum ( x = > x . Qty ) ;
foreach ( var box in boxs )
{
var r_box = new ContrastBoxResponse ( ) ;
r_box . BoxBillNo = box . BoxBillNo ;
r_box . BoxId = box . Id ;
r_box . TotalCount = box . Details . Sum ( x = > x . Qty ) ;
r_box . Details = _mapper . Map < List < ContrastBoxDetailsResponse > > ( box . Details ) ;
}
return Result < ContrastMaterialsResponse > . ReSuccess ( response ) ;
}
}