diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs
index 49e5eb59..9e08f7aa 100644
--- a/src/WMS.Web.Api/Controllers/TestController.cs
+++ b/src/WMS.Web.Api/Controllers/TestController.cs
@@ -77,7 +77,7 @@ namespace WMS.Web.Api.Controllers
bool isTransaction = false;
//3.同步数据
- var result = await _inStockTaskService.SysnMiscellaneous(null,isTransaction);
+ var result = await _inStockTaskService.SysnTransferDirect(null,isTransaction);
if (!result.IsSuccess) isRollback = true;
//4.提交事务
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index e4ddb38e..51babef8 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -1764,6 +1764,14 @@
+
+
+ 同步:直接调拨入库单据
+
+
+
+
+
出库服务
@@ -2665,6 +2673,14 @@
+
+
+ 同步:直接调拨入库单
+
+
+
+
+
出库服务
diff --git a/src/WMS.Web.Domain/IService/IInStockTaskService.cs b/src/WMS.Web.Domain/IService/IInStockTaskService.cs
index 32f84260..28d12369 100644
--- a/src/WMS.Web.Domain/IService/IInStockTaskService.cs
+++ b/src/WMS.Web.Domain/IService/IInStockTaskService.cs
@@ -40,5 +40,13 @@ namespace WMS.Web.Domain.IService
///
///
Task SysnMiscellaneous(List billNos = null, bool isTransaction = true);
+
+ ///
+ /// 同步:直接调拨入库单据
+ ///
+ ///
+ ///
+ ///
+ Task SysnTransferDirect(List billNos = null, bool isTransaction = true);
}
}
diff --git a/src/WMS.Web.Domain/Mappers/InStockMapper.cs b/src/WMS.Web.Domain/Mappers/InStockMapper.cs
index b39b17ab..97c1f8e3 100644
--- a/src/WMS.Web.Domain/Mappers/InStockMapper.cs
+++ b/src/WMS.Web.Domain/Mappers/InStockMapper.cs
@@ -66,6 +66,18 @@ namespace WMS.Web.Domain.Mappers
CreateMap()
.ForMember(x => x.SourceBillNo, ops => ops.MapFrom(x => x.BillNo))
+ .ForMember(x => x.CreateTime, ops => ops.MapFrom(x => x.CreateTime));
+
+ //ERP直接调拨入库单
+ CreateMap()
+ .ForMember(x => x.OrgId, ops => ops.MapFrom(x => x.StockOrgId))
+ .ForMember(x => x.MaterialId, ops => ops.MapFrom(x => x.MaterialId))
+ .ForMember(x => x.StockCode, ops => ops.MapFrom(x => x.DestStockCode))
+ .ForMember(x => x.AccruedQty, ops => ops.MapFrom(x => x.Qty))
+ .ForMember(x => x.Remark, ops => ops.MapFrom(x => x.Remark));
+
+ CreateMap()
+ .ForMember(x => x.SourceBillNo, ops => ops.MapFrom(x => x.BillNo))
.ForMember(x => x.CreateTime, ops => ops.MapFrom(x => x.CreateTime));
#endregion
diff --git a/src/WMS.Web.Domain/QuartzJob/InStockOrderQuartzJob.cs b/src/WMS.Web.Domain/QuartzJob/InStockOrderQuartzJob.cs
index 9e0a858b..fe791a99 100644
--- a/src/WMS.Web.Domain/QuartzJob/InStockOrderQuartzJob.cs
+++ b/src/WMS.Web.Domain/QuartzJob/InStockOrderQuartzJob.cs
@@ -95,6 +95,11 @@ namespace WMS.Web.Domain.QuartzJob
if (!miscellaneou_result.IsSuccess)
return Result.ReFailure(miscellaneou_result.Message, miscellaneou_result.Status);
+ //2.同步数据:直接调拨入库单
+ var TransferDirect_result = await _inStockTaskService.SysnTransferDirect(null, isTransaction);
+ if (!TransferDirect_result.IsSuccess)
+ return Result.ReFailure(TransferDirect_result.Message, TransferDirect_result.Status);
+
return Result.ReSuccess();
}
}
diff --git a/src/WMS.Web.Domain/Services/InStockTaskService.cs b/src/WMS.Web.Domain/Services/InStockTaskService.cs
index d84d9baf..70516c28 100644
--- a/src/WMS.Web.Domain/Services/InStockTaskService.cs
+++ b/src/WMS.Web.Domain/Services/InStockTaskService.cs
@@ -280,5 +280,80 @@ namespace WMS.Web.Domain.Services
return Result.ReSuccess();
}
+
+ ///
+ /// 同步:直接调拨入库单
+ ///
+ ///
+ ///
+ ///
+ public async Task SysnTransferDirect(List billNos = null, bool isTransaction = true)
+ {
+ //1.获取金蝶数据:直接调拨入库订单数据
+ var erp_result = await _erpService.BillQueryForTransferDirect(billNos);
+ if (!erp_result.IsSuccess)
+ return Result.ReFailure(erp_result.Message, erp_result.Status);
+ var erp_list = erp_result.Data;
+
+ //2.通过单据编号找到wms系统现有的任务单;并修改
+ var erp_removeList = new List();
+ var SourceBillNo_list = erp_list.GroupBy(x => x.BillNo).Select(x => x.Key).ToList();
+ var data_list = await _inStockTaskRepositories.GetListBy(SourceBillNo_list);
+ if (data_list.Count != 0)
+ {
+ //2.1提取出wms任务单明细信息
+ var data_list_details = data_list.SelectMany(x => x.Details).ToList();
+ foreach (var item in data_list_details)
+ {
+ var data = data_list.Where(x => x.Id == item.Fid).FirstOrDefault();
+
+ //2.1.1对比erp的物料信息
+ var erp_data = erp_list.Where(x => x.BillNo == data.SourceBillNo && x.MaterialId == item.MaterialId).FirstOrDefault();
+ if (erp_data != null)
+ {
+ //2.1.2修改数量
+ item.AccruedQty = erp_data.Qty;
+ erp_removeList.Add(erp_data);
+ }
+ }
+
+ //2.2.提交修改
+ var isSuccess = await _inStockTaskRepositories.UpdateRange(data_list, isTransaction);
+ if (!isSuccess)
+ return Result.ReFailure(ResultCodes.DateWriteError);
+
+ //2.3剔除:已修改的单据
+ foreach (var item in erp_removeList)
+ {
+ erp_list.Remove(item);
+ }
+ }
+
+ //3.wms任务单的来源单据编号不存在于erp中,那么就新增
+ if (erp_list.Count != 0)
+ {
+ var add_entitys = new List();
+ var current_billNos = erp_list.GroupBy(x => new { x.BillNo, x.CreateTime }).Select(x => new { x.Key.BillNo, x.Key.CreateTime }).ToList();
+ foreach (var item in current_billNos)
+ {
+ var dto = new InStockTask();
+ dto.SourceBillNo = item.BillNo;
+ dto.CreateTime = item.CreateTime;
+ dto.Create(InstockType.Stkdirecttransfers);
+
+ //找到当前对应来源单据编号的集合数据
+ var current_erp_details = erp_list.Where(x => x.BillNo == item.BillNo).ToList();
+ //给到dto的实体明细中
+ dto.Details = _mapper.Map>(current_erp_details);
+ add_entitys.Add(dto);
+ }
+ //3.1提交新增
+ var isSuccess = await _inStockTaskRepositories.AddRange(add_entitys, isTransaction);
+ if (!isSuccess)
+ return Result.ReFailure(ResultCodes.DateWriteError);
+ }
+
+ return Result.ReSuccess();
+ }
}
}