|
|
|
|
@@ -149,7 +149,7 @@ namespace WMS.Web.Domain.Services
|
|
|
|
|
{
|
|
|
|
|
OperateRequest oRequest = new OperateRequest();
|
|
|
|
|
oRequest.Ids.Add(entity.Id);
|
|
|
|
|
await Sync(oRequest, loginInfo,false);
|
|
|
|
|
await Sync(oRequest, loginInfo, false);
|
|
|
|
|
}
|
|
|
|
|
return Result.ReSuccess();
|
|
|
|
|
}
|
|
|
|
|
@@ -162,7 +162,7 @@ namespace WMS.Web.Domain.Services
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public async Task<Result> ShelfNoPurchase(NoPurchaseShelfRequest dto, LoginInDto loginInDto)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogInformation($"非采购入库:{JsonConvert.SerializeObject(dto)} 操作人:{loginInDto.UserInfo.StaffId+loginInDto.UserInfo.Nickname}");
|
|
|
|
|
_logger.LogInformation($"非采购入库:{JsonConvert.SerializeObject(dto)} 操作人:{loginInDto.UserInfo.StaffId + loginInDto.UserInfo.Nickname}");
|
|
|
|
|
IDbContextTransaction _transaction = _basicsRepositories.GetTransaction();
|
|
|
|
|
bool isRollback = false;
|
|
|
|
|
bool isTransaction = false;
|
|
|
|
|
@@ -272,7 +272,7 @@ namespace WMS.Web.Domain.Services
|
|
|
|
|
var taskIds = dto.Details.GroupBy(x => x.TaskId).Select(x => x.Key).ToList();
|
|
|
|
|
var tasks = await _inStockTaskRepositories.GetList(taskIds);
|
|
|
|
|
|
|
|
|
|
if (tasks == null || tasks.Count==0)
|
|
|
|
|
if (tasks == null || tasks.Count == 0)
|
|
|
|
|
return Result<InStock>.ReFailure(ResultCodes.SourceBillNoDateError);
|
|
|
|
|
|
|
|
|
|
// 组织集合
|
|
|
|
|
@@ -361,7 +361,7 @@ namespace WMS.Web.Domain.Services
|
|
|
|
|
//保存成功后:序列号跟踪流程添加
|
|
|
|
|
var serialNumber_result = await _serialNumberService.InStock(entity, loginInfo, isTransaction);
|
|
|
|
|
if (!serialNumber_result.IsSuccess)
|
|
|
|
|
return Result<InStock >.ReFailure(serialNumber_result);
|
|
|
|
|
return Result<InStock>.ReFailure(serialNumber_result);
|
|
|
|
|
|
|
|
|
|
//箱库存变动
|
|
|
|
|
var boxInventoryResult = await _boxInventoryService.GenerateInStockBox(entity, isTransaction);
|
|
|
|
|
@@ -384,7 +384,7 @@ namespace WMS.Web.Domain.Services
|
|
|
|
|
_logger.LogInformation($"非采购上架-保存:{JsonConvert.SerializeObject(dto)} 操作人:{loginInfo.UserInfo.StaffId}");
|
|
|
|
|
|
|
|
|
|
//非采购入库的时候:不能扫同样的箱,按箱入库时候
|
|
|
|
|
if (dto.Boxs != null && dto.Boxs.Count != 0 && dto.ShelfMethod==(int)ShelfMethod.Box)
|
|
|
|
|
if (dto.Boxs != null && dto.Boxs.Count != 0 && dto.ShelfMethod == (int)ShelfMethod.Box)
|
|
|
|
|
{
|
|
|
|
|
if (dto.Boxs.Select(x => x.BoxId).Distinct().Count() != dto.Boxs.Select(x => x.BoxId).Count())
|
|
|
|
|
return Result<InStock>.ReFailure(ResultCodes.BoxOutStockTaskBoxError);
|
|
|
|
|
@@ -402,7 +402,7 @@ namespace WMS.Web.Domain.Services
|
|
|
|
|
|
|
|
|
|
//1.1.2判断上架数量不能超过应入库数量
|
|
|
|
|
var dtoDetails = dto.Boxs.SelectMany(x => x.Details).ToList();
|
|
|
|
|
var dtoTotalDetails = dtoDetails.GroupBy(x => new { x.ErpDetailId,x.MaterialNumber }).Select(x => new { ErpDetailId = x.Key.ErpDetailId, MaterialNumber = x.Key.MaterialNumber, Qty = x.Sum(t => t.Qty) }).ToList();
|
|
|
|
|
var dtoTotalDetails = dtoDetails.GroupBy(x => new { x.ErpDetailId, x.MaterialNumber }).Select(x => new { ErpDetailId = x.Key.ErpDetailId, MaterialNumber = x.Key.MaterialNumber, Qty = x.Sum(t => t.Qty) }).ToList();
|
|
|
|
|
foreach (var item in task.Details)
|
|
|
|
|
{
|
|
|
|
|
var current_det = dtoTotalDetails.Where(x => x.ErpDetailId == item.ErpDetailId && x.MaterialNumber == item.MaterialNumber).FirstOrDefault();
|
|
|
|
|
@@ -617,7 +617,7 @@ namespace WMS.Web.Domain.Services
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//1.1筛选出对应仓库的明细
|
|
|
|
|
var task_details = task.Details.Where(x => x.StockCode == dto.StockCode && x.AccruedQty>0).ToList();
|
|
|
|
|
var task_details = task.Details.Where(x => x.StockCode == dto.StockCode && x.AccruedQty > 0).ToList();
|
|
|
|
|
|
|
|
|
|
//2.找到箱对应的物料信息:多个箱
|
|
|
|
|
var boxs = await _boxRepositories.GetEntityListByNos(dto.BoxBillNos);
|
|
|
|
|
@@ -627,7 +627,7 @@ namespace WMS.Web.Domain.Services
|
|
|
|
|
//3.判断箱里面对应的物料是否存在;不存在就报错
|
|
|
|
|
foreach (var item in boxs)
|
|
|
|
|
{
|
|
|
|
|
if(item.Details==null || item.Details.Count==0)
|
|
|
|
|
if (item.Details == null || item.Details.Count == 0)
|
|
|
|
|
return Result<ContrastMaterialsResponse>.ReFailure(ResultCodes.BoxMateriaNoData);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -707,19 +707,17 @@ namespace WMS.Web.Domain.Services
|
|
|
|
|
var sc_erpService = scope.ServiceProvider.GetRequiredService<IErpService>();
|
|
|
|
|
|
|
|
|
|
//找到金蝶最新的采购订单数据
|
|
|
|
|
var erp_purchase_result =await sc_erpService.BillQueryForPurchaseInStock(entity.ErpDetails.GroupBy(x=>x.SourceBillNo).Select(x=>x.Key).ToList());
|
|
|
|
|
var erp_purchase_result = await sc_erpService.BillQueryForPurchaseInStock(entity.ErpDetails.GroupBy(x => x.SourceBillNo).Select(x => x.Key).ToList());
|
|
|
|
|
if (!erp_purchase_result.IsSuccess)
|
|
|
|
|
return erp_purchase_result;
|
|
|
|
|
//然后刷选出对应金蝶明细和物料和wms的任务单的明细和物料是一致的就同步下推
|
|
|
|
|
foreach (var item in erpDetails_tags)
|
|
|
|
|
{
|
|
|
|
|
var isHave= erp_purchase_result.Data.Where(x => x.ErpDetailId == item.ErpDetailId && x.MaterialNumber == item.MaterialNumber).Any();
|
|
|
|
|
var isHave = erp_purchase_result.Data.Where(x => x.ErpDetailId == item.ErpDetailId && x.MaterialNumber == item.MaterialNumber).Any();
|
|
|
|
|
if (isHave)
|
|
|
|
|
erpDetails.Add(item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
foreach (var s in erpDetails)
|
|
|
|
|
{
|
|
|
|
|
var erp_details = entity.ErpDetails
|
|
|
|
|
@@ -744,14 +742,6 @@ namespace WMS.Web.Domain.Services
|
|
|
|
|
if (entity == null) return Result.ReFailure(ResultCodes.DateWriteError);
|
|
|
|
|
return Result.ReSuccess();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogInformation($"采购下推-同步:错误:{JsonConvert.SerializeObject(entity)} 操作人:{loginInfo.UserInfo.StaffId}");
|
|
|
|
|
return Result.ReFailure(ResultCodes.ErpSynsError);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 下推
|
|
|
|
|
@@ -762,7 +752,8 @@ namespace WMS.Web.Domain.Services
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private async Task<(Result result, SyncStatus syncStatus, string erpBillNo)> Push(ErpPushDto dto, InStockErpDetails erpDetail, string billNo, IErpService sc_erpService)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//下推动作
|
|
|
|
|
var res = await sc_erpService.Push(dto);
|
|
|
|
|
if (!res.IsSuccess)
|
|
|
|
|
@@ -802,6 +793,14 @@ namespace WMS.Web.Domain.Services
|
|
|
|
|
_logger.LogInformation($"入库单->同步金蝶成功->单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
|
|
|
|
|
return (Result.ReSuccess(), SyncStatus.Success, o_dto.Numbers.First());
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogInformation($"入库单-同步:错误:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{ex.Message}");
|
|
|
|
|
var result = Result.ReFailure(ex.Message, 50001);
|
|
|
|
|
return (result, SyncStatus.Fail, "");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|