diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index 36d92fc1..ad9e5609 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -605,6 +605,71 @@
表单所在的子系统内码,字符串类型(非必录)
+
+
+ ERP:入库单-统一响应对象
+
+
+
+
+ 单据编号
+
+
+
+
+ 组织
+
+
+
+
+ 供应商
+
+
+
+
+ 物料ID
+
+
+
+
+ 仓库ID
+
+
+
+
+ 仓库code
+
+
+
+
+ 数量
+
+
+
+
+ 出厂价
+
+
+
+
+ 已交数量(对应金蝶的已交数量-对应物料),目前只有采购订单有
+
+
+
+
+ 明细备注
+
+
+
+
+ 创建时间
+
+
+
+
+ 单据类型
+
+
erp:其他入库单
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index dff909c0..47327616 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -477,11 +477,13 @@
明细
-
+
创建
+
+
@@ -1847,6 +1849,13 @@
+
+
+ 同步
+
+
+
+
出库服务
@@ -2604,13 +2613,6 @@
-
-
- 同步:入库单类型的数据(采购订单,其他入库单,)
-
-
-
-
执行方法
@@ -2802,6 +2804,29 @@
+
+
+ 同步
+
+
+
+
+
+
+ 同步:入库单类型的数据
+
+
+
+
+
+
+
+ ERP数据同步到WMS数据库
+
+
+
+
+
出库服务
diff --git a/src/WMS.Web.Core/Dto/Erp/ErpInStockResultDto.cs b/src/WMS.Web.Core/Dto/Erp/ErpInStockResultDto.cs
new file mode 100644
index 00000000..ad082a7d
--- /dev/null
+++ b/src/WMS.Web.Core/Dto/Erp/ErpInStockResultDto.cs
@@ -0,0 +1,71 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Web.Core.Dto.Erp
+{
+ ///
+ /// ERP:入库单-统一响应对象
+ ///
+ public class ErpInStockResultDto
+ {
+ ///
+ /// 单据编号
+ ///
+ public string BillNo { get; set; }
+ ///
+ /// 组织
+ ///
+ public int OrgId { get; set; }
+
+ ///
+ /// 供应商
+ ///
+ public int SupplierId { get; set; }
+
+ ///
+ /// 物料ID
+ ///
+ public int MaterialId { get; set; }
+
+ ///
+ /// 仓库ID
+ ///
+ public int StockId { get; set; }
+
+ ///
+ /// 仓库code
+ ///
+ public string StockCode { get; set; }
+
+ ///
+ /// 数量
+ ///
+ public decimal Qty { get; set; }
+
+ ///
+ /// 出厂价
+ ///
+ public decimal FactoryPrice { get; set; }
+
+ ///
+ /// 已交数量(对应金蝶的已交数量-对应物料),目前只有采购订单有
+ ///
+ public decimal DeliveredQty { get; set; }
+
+ ///
+ /// 明细备注
+ ///
+ public string Remark { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public DateTime CreateTime { get; set; }
+
+ ///
+ /// 单据类型
+ ///
+ public int Type { get; set; }
+ }
+}
diff --git a/src/WMS.Web.Domain/Entitys/InstockTask.cs b/src/WMS.Web.Domain/Entitys/InstockTask.cs
index c4c7bc1b..13d90d52 100644
--- a/src/WMS.Web.Domain/Entitys/InstockTask.cs
+++ b/src/WMS.Web.Domain/Entitys/InstockTask.cs
@@ -70,10 +70,14 @@ namespace WMS.Web.Domain.Entitys
/// 创建
///
///
- public void Create(InstockType type)
+ ///
+ ///
+ public void Create(InstockType type,string sourceBillNo, DateTime createTime)
{
this.Status = InstockStatus.Wait;
this.Type = type;
+ this.SourceBillNo = sourceBillNo;
+ this.CreateTime = createTime;
}
diff --git a/src/WMS.Web.Domain/IService/IInStockTaskService.cs b/src/WMS.Web.Domain/IService/IInStockTaskService.cs
index b1b63eff..f4f9f2cb 100644
--- a/src/WMS.Web.Domain/IService/IInStockTaskService.cs
+++ b/src/WMS.Web.Domain/IService/IInStockTaskService.cs
@@ -64,5 +64,12 @@ namespace WMS.Web.Domain.IService
///
///
Task SysnAssembledApp(List billNos = null, bool isTransaction = true);
+
+ ///
+ /// 同步
+ ///
+ ///
+ ///
+ Task Sysn(List billNos = null);
}
}
diff --git a/src/WMS.Web.Domain/IService/Public/IErpService.cs b/src/WMS.Web.Domain/IService/Public/IErpService.cs
index 86e7c5dd..e540470c 100644
--- a/src/WMS.Web.Domain/IService/Public/IErpService.cs
+++ b/src/WMS.Web.Domain/IService/Public/IErpService.cs
@@ -25,42 +25,42 @@ namespace WMS.Web.Domain.IService.Public
/// erp:单据查询-采购入库单
///
///
- Task> BillQueryForPurchaseInStock(List sourceBillNos = null);
+ Task> BillQueryForPurchaseInStock(List sourceBillNos = null);
///
/// erp:单据查询-其他入库单
///
///
///
- Task> BillQueryForMiscellaneous(List sourceBillNos = null);
+ Task> BillQueryForMiscellaneous(List sourceBillNos = null);
///
/// erp:单据查询-直接调拨入库单
///
///
///
- Task> BillQueryForTransferDirect(List sourceBillNos = null);
+ Task> BillQueryForTransferDirect(List sourceBillNos = null);
///
/// erp:单据查询-分步式调入单
///
///
///
- Task> BillQueryForTransferin(List sourceBillNos = null);
+ Task> BillQueryForTransferin(List sourceBillNos = null);
///
/// erp:单据查询-组装拆卸单-组装(成品入库)
///
///
///
- Task> BillQueryForAssembledApp_Assembly(List sourceBillNos = null);
+ Task> BillQueryForAssembledApp_Assembly(List sourceBillNos = null);
///
/// erp:单据查询-组装拆卸单-拆卸(子件入库)
///
///
///
- Task> BillQueryForAssembledApp_Disassembly(List sourceBillNos = null);
+ Task> BillQueryForAssembledApp_Disassembly(List sourceBillNos = null);
///
/// erp:单据查询-出库单
diff --git a/src/WMS.Web.Domain/Mappers/InStockMapper.cs b/src/WMS.Web.Domain/Mappers/InStockMapper.cs
index 10b4551a..674d00e5 100644
--- a/src/WMS.Web.Domain/Mappers/InStockMapper.cs
+++ b/src/WMS.Web.Domain/Mappers/InStockMapper.cs
@@ -39,6 +39,23 @@ namespace WMS.Web.Domain.Mappers
#region ERP-dto映射到wsm的任务表中
+ //ERP-同步结果对象统一映射
+ CreateMap()
+ .ForMember(x => x.SourceBillNo, ops => ops.MapFrom(x => x.BillNo))
+ .ForMember(x => x.CreateTime, ops => ops.MapFrom(x => x.CreateTime));
+
+ CreateMap()
+ .ForMember(x => x.SupplierId, ops => ops.MapFrom(x => x.SupplierId))
+ .ForMember(x => x.OrgId, ops => ops.MapFrom(x => x.OrgId))
+ .ForMember(x => x.MaterialId, ops => ops.MapFrom(x => x.MaterialId))
+ .ForMember(x => x.StockCode, ops => ops.MapFrom(x => x.StockCode))
+ .ForMember(x => x.DeliveredQty, ops => ops.MapFrom(x => x.DeliveredQty))
+ .ForMember(x => x.FactoryPrice, ops => ops.MapFrom(x => x.FactoryPrice))
+ .ForMember(x => x.AccruedQty, ops => ops.MapFrom(x => x.Qty))
+ .ForMember(x => x.Remark, ops => ops.MapFrom(x => x.Remark))
+ .ReverseMap();
+
+
//ERP采购订单
CreateMap()
.ForMember(x => x.SourceBillNo, ops => ops.MapFrom(x => x.FBillNo))
diff --git a/src/WMS.Web.Domain/QuartzJob/InStockOrderQuartzJob.cs b/src/WMS.Web.Domain/QuartzJob/InStockOrderQuartzJob.cs
index 53792bee..a29e4497 100644
--- a/src/WMS.Web.Domain/QuartzJob/InStockOrderQuartzJob.cs
+++ b/src/WMS.Web.Domain/QuartzJob/InStockOrderQuartzJob.cs
@@ -48,25 +48,18 @@ namespace WMS.Web.Domain.QuartzJob
{
try
{
- //1.事务
- IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
- bool isRollback = false;
- bool isTransaction = false;
- //2.记录:开始时间
+
+ //1.记录:开始时间
var begindatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
_logger.LogInformation($"同步金蝶入库单数据:执行开始时间->{begindatetime}");
- //3.同步数据
- var result = await this.InStock(isTransaction);
+ //2.同步数据
+ var result = await _inStockTaskService.Sysn();
if (!result.IsSuccess)
{
_logger.LogInformation($"同步金蝶入库单数据:执行失败->{result.Message}");
- isRollback = true;
- }
-
- //4.提交事务
- var isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction);
+ }
- //5.记录:结束时间
+ //3.记录:结束时间
var enddatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
_logger.LogInformation($"同步金蝶入库单数据:执行结束时间->{begindatetime}");
@@ -78,39 +71,6 @@ namespace WMS.Web.Domain.QuartzJob
}
- ///
- /// 同步:入库单类型的数据(采购订单,其他入库单,)
- ///
- ///
- ///
- public async Task InStock(bool isTransaction)
- {
- //1.同步数据:采购订单
- var purchase_result = await _inStockTaskService.SsynPurchaseInStock(null, isTransaction);
- if (!purchase_result.IsSuccess)
- return Result.ReFailure(purchase_result.Message,purchase_result.Status);
-
- //2.同步数据:其他入库单
- var miscellaneou_result = await _inStockTaskService.SysnMiscellaneous(null, isTransaction);
- if (!miscellaneou_result.IsSuccess)
- return Result.ReFailure(miscellaneou_result.Message, miscellaneou_result.Status);
-
- //3.同步数据:直接调拨入库单
- var TransferDirect_result = await _inStockTaskService.SysnTransferDirect(null, isTransaction);
- if (!TransferDirect_result.IsSuccess)
- return Result.ReFailure(TransferDirect_result.Message, TransferDirect_result.Status);
-
- //4.同步数据:分步式入库单
- var Transferin_result = await _inStockTaskService.SysnTransferin(null, isTransaction);
- if (!Transferin_result.IsSuccess)
- return Result.ReFailure(Transferin_result.Message, Transferin_result.Status);
-
- //5.同步数据:组装拆卸单
- var AssembledApp_result = await _inStockTaskService.SysnAssembledApp(null, isTransaction);
- if (!AssembledApp_result.IsSuccess)
- return Result.ReFailure(AssembledApp_result.Message, AssembledApp_result.Status);
-
- return Result.ReSuccess();
- }
+
}
}
diff --git a/src/WMS.Web.Domain/Services/InStockTaskService.cs b/src/WMS.Web.Domain/Services/InStockTaskService.cs
index 5dbb803b..fed0d694 100644
--- a/src/WMS.Web.Domain/Services/InStockTaskService.cs
+++ b/src/WMS.Web.Domain/Services/InStockTaskService.cs
@@ -143,67 +143,7 @@ namespace WMS.Web.Domain.Services
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.FBillNo).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.FBillNo == data.SourceBillNo && x.FMaterialId == item.MaterialId).FirstOrDefault();
- if (erp_data != null)
- {
- //2.1.2修改数量
- item.AccruedQty = erp_data.FQty;
- item.DeliveredQty = erp_data.FStockInQty;
- 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 => x.FBillNo).Select(x => x.Key).ToList();
- var current_billNos = erp_list.GroupBy(x => new { x.FBillNo, x.FCreateDate }).Select(x => new { x.Key.FBillNo, x.Key.FCreateDate }).ToList();
- foreach (var item in current_billNos)
- {
- var dto = new InStockTask();
- dto.SourceBillNo = item.FBillNo;
- dto.CreateTime = item.FCreateDate;
- dto.Create(InstockType.Purchase);
-
- //找到当前对应来源单据编号的集合数据
- var current_erp_details = erp_list.Where(x => x.FBillNo == item.FBillNo).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();
+ return await this.SysnData(erp_list.ToList(), isTransaction);
}
///
@@ -220,65 +160,7 @@ namespace WMS.Web.Domain.Services
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.Miscellaneous);
-
- //找到当前对应来源单据编号的集合数据
- 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();
+ return await this.SysnData(erp_list.ToList(), isTransaction);
}
///
@@ -295,65 +177,7 @@ namespace WMS.Web.Domain.Services
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();
+ return await this.SysnData(erp_list.ToList(), isTransaction);
}
///
@@ -370,65 +194,7 @@ namespace WMS.Web.Domain.Services
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.StktransferInst);
-
- //找到当前对应来源单据编号的集合数据
- 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();
+ return await this.SysnData(erp_list.ToList(), isTransaction);
}
///
@@ -439,7 +205,7 @@ namespace WMS.Web.Domain.Services
///
public async Task SysnAssembledApp(List billNos = null, bool isTransaction = true)
{
- var erp_list = new List();
+ var erp_list = new List();
//1.获取金蝶数据:组装成品入库订单数据
var erp_result_ass = await _erpService.BillQueryForAssembledApp_Assembly(billNos);
@@ -456,8 +222,79 @@ namespace WMS.Web.Domain.Services
erp_list.AddRange(erp_list_disass);
- //2.通过单据编号找到wms系统现有的任务单;并修改
- var erp_removeList = new List();
+ return await this.SysnData(erp_list, isTransaction);
+ }
+
+ ///
+ /// 同步
+ ///
+ ///
+ ///
+ public async Task Sysn(List billNos = null)
+ {
+ //1.事务
+ IDbContextTransaction _transaction = _basicsRepositories.GetTransaction();
+ bool isRollback = false;
+ bool isTransaction = false;
+
+ //3.同步数据
+ var result = await this.InStock(billNos, isTransaction);
+ if (!result.IsSuccess) isRollback = true;
+
+ //3.提交事务
+ var isSuccess = _basicsRepositories.CommitTransaction(isRollback, _transaction);
+ if (!isSuccess)
+ return Result.ReFailure(ResultCodes.DateWriteError);
+
+ return Result.ReSuccess();
+ }
+
+ ///
+ /// 同步:入库单类型的数据
+ ///
+ ///
+ ///
+ ///
+ public async Task InStock(List billNos,bool isTransaction)
+ {
+ //1.同步数据:采购订单
+ var purchase_result = await this.SsynPurchaseInStock(billNos, isTransaction);
+ if (!purchase_result.IsSuccess)
+ return Result.ReFailure(purchase_result.Message, purchase_result.Status);
+
+ //2.同步数据:其他入库单
+ var miscellaneou_result = await this.SysnMiscellaneous(billNos, isTransaction);
+ if (!miscellaneou_result.IsSuccess)
+ return Result.ReFailure(miscellaneou_result.Message, miscellaneou_result.Status);
+
+ //3.同步数据:直接调拨入库单
+ var TransferDirect_result = await this.SysnTransferDirect(billNos, isTransaction);
+ if (!TransferDirect_result.IsSuccess)
+ return Result.ReFailure(TransferDirect_result.Message, TransferDirect_result.Status);
+
+ //4.同步数据:分步式入库单
+ var Transferin_result = await this.SysnTransferin(billNos, isTransaction);
+ if (!Transferin_result.IsSuccess)
+ return Result.ReFailure(Transferin_result.Message, Transferin_result.Status);
+
+ //5.同步数据:组装拆卸单
+ var AssembledApp_result = await this.SysnAssembledApp(billNos, isTransaction);
+ if (!AssembledApp_result.IsSuccess)
+ return Result.ReFailure(AssembledApp_result.Message, AssembledApp_result.Status);
+
+ return Result.ReSuccess();
+ }
+
+ ///
+ /// ERP数据同步到WMS数据库
+ ///
+ ///
+ ///
+ ///
+ public async Task SysnData(List erp_list, bool isTransaction)
+ {
+ //1.通过单据编号找到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)
@@ -474,6 +311,7 @@ namespace WMS.Web.Domain.Services
{
//2.1.2修改数量
item.AccruedQty = erp_data.Qty;
+ item.DeliveredQty = erp_data.DeliveredQty;
erp_removeList.Add(erp_data);
}
}
@@ -494,16 +332,16 @@ namespace WMS.Web.Domain.Services
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();
+ var current_billNos = erp_list.GroupBy(x => x.BillNo).Select(x => x.Key).ToList();
+
foreach (var item in current_billNos)
{
+ var current_order= erp_list.Where(x => x.BillNo == item).FirstOrDefault();
var dto = new InStockTask();
- dto.SourceBillNo = item.BillNo;
- dto.CreateTime = item.CreateTime;
- dto.Create(InstockType.Assembled);
+ dto.Create((InstockType)current_order.Type, current_order.BillNo, current_order.CreateTime);
//找到当前对应来源单据编号的集合数据
- var current_erp_details = erp_list.Where(x => x.BillNo == item.BillNo).ToList();
+ var current_erp_details = erp_list.Where(x => x.BillNo == item).ToList();
//给到dto的实体明细中
dto.Details = _mapper.Map>(current_erp_details);
add_entitys.Add(dto);
diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs
index 9ac39bd0..d03309ab 100644
--- a/src/WMS.Web.Domain/Services/Public/ErpService.cs
+++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs
@@ -141,21 +141,21 @@ namespace WMS.Web.Domain.Services.Public
/// 模糊搜索
/// 单据编号集合精确查找
///
- public async Task> BillQueryForPurchaseInStock(List sourceBillNos = null)
+ public async Task> BillQueryForPurchaseInStock(List sourceBillNos = null)
{
try
{
var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId);
if (stocks.Count == 0)
- return ResultList.ReFailure(ResultCodes.ErpStockNoData);
+ return ResultList.ReFailure(ResultCodes.ErpStockNoData);
var stocks_codes = stocks.Select(x => x.Code).ToList();
//1.先登录金蝶-拿到token
var token_result = await this.Init();
if (!token_result.IsSuccess)
- return ResultList.ReFailure(token_result);
+ return ResultList.ReFailure(token_result);
//2.时间条件:可能还有其它条件
var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00");
@@ -163,7 +163,7 @@ namespace WMS.Web.Domain.Services.Public
//3.获取金蝶采购订单:拼接参数和条件
var query = new ErpBillQueryDto(token_result.Data);
var param = new ErpBillQueryParamDto(FormIdParam.PUR_PurchaseOrder.ToString());
- param.FieldKeys = "FBillNo,FSupplierId,FPurchaseOrgId,FModel,FMaterialName,FMaterialId,FSOSTOCKID,FQty,FEntryNote,FCreateDate,FCHUCHANGPRICE,FSOSTOCKID.FNumber,FStockInQty,FDocumentStatus,FBillTypeID,FMRPCloseStatus,FBillTypeID.FName";
+ param.FieldKeys = "FBillNo,FSupplierId,FPurchaseOrgId,FMaterialId,FSOSTOCKID,FQty,FEntryNote,FCreateDate,FCHUCHANGPRICE,FSOSTOCKID.FNumber,FStockInQty";
param.Limit = 10000;
//查询条件:备注其中的条件值以金蝶的值为准!!!
//1.创建时间在两天前和当天时间之间
@@ -217,34 +217,29 @@ namespace WMS.Web.Domain.Services.Public
var result = JsonConvert.DeserializeObject>>(result_json);
//5.返回数据的组装
- var erp_list = new List();
+ var erp_list = new List();
foreach (var item in result)
{
- var lis = new ErpPurchaseInStockResultDto();
- lis.FBillNo = item[0];
- lis.FSupplierId = Convert.ToInt32(item[1]);
- lis.FPurchaseOrgId = Convert.ToInt32(item[2]);
- lis.FModel = item[3];
- lis.FMaterialName = item[4];
- lis.FMaterialId = Convert.ToInt32(item[5]);
- lis.FSOSTOCKID = Convert.ToInt32(item[6]);
- lis.FQty = Convert.ToDecimal(item[7]);
- lis.FEntryNote = item[8];
- lis.FCreateDate = Convert.ToDateTime(item[9]);
- lis.FCHUCHANGPRICE = Convert.ToDecimal(item[10]);
- lis.StockFNumber = item[11];
- lis.FStockInQty = Convert.ToDecimal(item[12]);
- lis.FDocumentStatus = item[13];
- lis.FBillTypeID = item[14];
- lis.FMRPCloseStatus = item[15];
- lis.FBillTypeFName = item[16];
+ var lis = new ErpInStockResultDto();
+ lis.BillNo = item[0];
+ lis.SupplierId = Convert.ToInt32(item[1]);
+ lis.OrgId = Convert.ToInt32(item[2]);
+ lis.MaterialId = Convert.ToInt32(item[3]);
+ lis.StockId = Convert.ToInt32(item[4]);
+ lis.Qty = Convert.ToDecimal(item[5]);
+ lis.Remark = item[6];
+ lis.CreateTime = Convert.ToDateTime(item[7]);
+ lis.FactoryPrice = Convert.ToDecimal(item[8]);
+ lis.StockCode = item[9];
+ lis.DeliveredQty = Convert.ToDecimal(item[10]);
+ lis.Type = (int)InstockType.Purchase;
erp_list.Add(lis);
}
- return ResultList.ReSuccess(erp_list);
+ return ResultList.ReSuccess(erp_list);
}
catch (Exception ex)
{
- return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error);
+ return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error);
}
}
@@ -253,21 +248,21 @@ namespace WMS.Web.Domain.Services.Public
///
///
///
- public async Task> BillQueryForMiscellaneous(List sourceBillNos = null)
+ public async Task> BillQueryForMiscellaneous(List sourceBillNos = null)
{
try
{
var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId);
if (stocks.Count == 0)
- return ResultList.ReFailure(ResultCodes.ErpStockNoData);
+ return ResultList.ReFailure(ResultCodes.ErpStockNoData);
var stocks_codes = stocks.Select(x => x.Code).ToList();
//1.先登录金蝶-拿到token
var token_result = await this.Init();
if (!token_result.IsSuccess)
- return ResultList.ReFailure(token_result);
+ return ResultList.ReFailure(token_result);
//2.时间条件:可能还有其它条件
var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00");
@@ -328,25 +323,26 @@ namespace WMS.Web.Domain.Services.Public
var result = JsonConvert.DeserializeObject>>(result_json);
//5.返回数据的组装
- var erp_list = new List();
+ var erp_list = new List();
foreach (var item in result)
{
- var lis = new ErpMiscellaneousDto();
- lis.BillNo =item[0];
- lis.StockOrgId = Convert.ToInt32(item[1]);
+ var lis = new ErpInStockResultDto();
+ lis.BillNo = item[0];
+ lis.OrgId = Convert.ToInt32(item[1]);
lis.MaterialId = Convert.ToInt32(item[2]);
lis.StockId = Convert.ToInt32(item[3]);
lis.StockCode = item[4];
lis.Qty = Convert.ToDecimal(item[5]);
lis.CreateTime = Convert.ToDateTime(item[6]);
lis.Remark = item[7];
+ lis.Type = (int)InstockType.Miscellaneous;
erp_list.Add(lis);
}
- return ResultList.ReSuccess(erp_list);
+ return ResultList.ReSuccess(erp_list);
}
catch (Exception ex)
{
- return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error);
+ return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error);
}
}
@@ -355,21 +351,21 @@ namespace WMS.Web.Domain.Services.Public
///
///
///
- public async Task> BillQueryForTransferDirect(List sourceBillNos = null)
+ public async Task> BillQueryForTransferDirect(List sourceBillNos = null)
{
try
{
var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId);
if (stocks.Count == 0)
- return ResultList.ReFailure(ResultCodes.ErpStockNoData);
+ return ResultList.ReFailure(ResultCodes.ErpStockNoData);
var stocks_codes = stocks.Select(x => x.Code).ToList();
//1.先登录金蝶-拿到token
var token_result = await this.Init();
if (!token_result.IsSuccess)
- return ResultList.ReFailure(token_result);
+ return ResultList.ReFailure(token_result);
//2.时间条件:可能还有其它条件
var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00");
@@ -430,25 +426,26 @@ namespace WMS.Web.Domain.Services.Public
var result = JsonConvert.DeserializeObject>>(result_json);
//5.返回数据的组装
- var erp_list = new List();
+ var erp_list = new List();
foreach (var item in result)
{
- var lis = new ErpTransferDirectDto();
+ var lis = new ErpInStockResultDto();
lis.BillNo = item[0];
- lis.StockOrgId = Convert.ToInt32(item[1]);
+ lis.OrgId = Convert.ToInt32(item[1]);
lis.MaterialId = Convert.ToInt32(item[2]);
- lis.DestStockId = Convert.ToInt32(item[3]);
- lis.DestStockCode = item[4];
+ lis.StockId = Convert.ToInt32(item[3]);
+ lis.StockCode = item[4];
lis.Qty = Convert.ToDecimal(item[5]);
lis.CreateTime = Convert.ToDateTime(item[6]);
lis.Remark = item[7];
+ lis.Type = (int)InstockType.Stkdirecttransfers;
erp_list.Add(lis);
}
- return ResultList.ReSuccess(erp_list);
+ return ResultList.ReSuccess(erp_list);
}
catch (Exception ex)
{
- return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error);
+ return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error);
}
}
@@ -457,21 +454,21 @@ namespace WMS.Web.Domain.Services.Public
///
///
///
- public async Task> BillQueryForTransferin(List sourceBillNos = null)
+ public async Task> BillQueryForTransferin(List sourceBillNos = null)
{
try
{
var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId);
if (stocks.Count == 0)
- return ResultList.ReFailure(ResultCodes.ErpStockNoData);
+ return ResultList.ReFailure(ResultCodes.ErpStockNoData);
var stocks_codes = stocks.Select(x => x.Code).ToList();
//1.先登录金蝶-拿到token
var token_result = await this.Init();
if (!token_result.IsSuccess)
- return ResultList.ReFailure(token_result);
+ return ResultList.ReFailure(token_result);
//2.时间条件:可能还有其它条件
var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00");
@@ -532,25 +529,26 @@ namespace WMS.Web.Domain.Services.Public
var result = JsonConvert.DeserializeObject>>(result_json);
//5.返回数据的组装
- var erp_list = new List();
+ var erp_list = new List();
foreach (var item in result)
{
- var lis = new ErpTransferinDto();
+ var lis = new ErpInStockResultDto();
lis.BillNo = item[0];
- lis.StockOrgId = Convert.ToInt32(item[1]);
+ lis.OrgId = Convert.ToInt32(item[1]);
lis.MaterialId = Convert.ToInt32(item[2]);
- lis.DestStockId = Convert.ToInt32(item[3]);
- lis.DestStockCode = item[4];
+ lis.StockId = Convert.ToInt32(item[3]);
+ lis.StockCode = item[4];
lis.Qty = Convert.ToDecimal(item[5]);
lis.CreateTime = Convert.ToDateTime(item[6]);
lis.Remark = item[7];
+ lis.Type = (int)InstockType.StktransferInst;
erp_list.Add(lis);
}
- return ResultList.ReSuccess(erp_list);
+ return ResultList.ReSuccess(erp_list);
}
catch (Exception ex)
{
- return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error);
+ return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error);
}
}
@@ -559,21 +557,21 @@ namespace WMS.Web.Domain.Services.Public
///
///
///
- public async Task> BillQueryForAssembledApp_Assembly(List sourceBillNos = null)
+ public async Task> BillQueryForAssembledApp_Assembly(List sourceBillNos = null)
{
try
{
var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId);
if (stocks.Count == 0)
- return ResultList.ReFailure(ResultCodes.ErpStockNoData);
+ return ResultList.ReFailure(ResultCodes.ErpStockNoData);
var stocks_codes = stocks.Select(x => x.Code).ToList();
//1.先登录金蝶-拿到token
var token_result = await this.Init();
if (!token_result.IsSuccess)
- return ResultList.ReFailure(token_result);
+ return ResultList.ReFailure(token_result);
//2.时间条件:可能还有其它条件
var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00");
@@ -635,10 +633,10 @@ namespace WMS.Web.Domain.Services.Public
var result = JsonConvert.DeserializeObject>>(result_json);
//5.返回数据的组装
- var erp_list = new List();
+ var erp_list = new List();
foreach (var item in result)
{
- var lis = new ErpAssembledAppDto();
+ var lis = new ErpInStockResultDto();
lis.BillNo = item[0];
lis.OrgId = Convert.ToInt32(item[1]);
lis.MaterialId = Convert.ToInt32(item[2]);
@@ -647,13 +645,14 @@ namespace WMS.Web.Domain.Services.Public
lis.Qty = Convert.ToDecimal(item[5]);
lis.CreateTime = Convert.ToDateTime(item[6]);
lis.Remark = item[7];
+ lis.Type = (int)InstockType.Assembled;
erp_list.Add(lis);
}
- return ResultList.ReSuccess(erp_list);
+ return ResultList.ReSuccess(erp_list);
}
catch (Exception ex)
{
- return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error);
+ return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error);
}
}
@@ -662,21 +661,21 @@ namespace WMS.Web.Domain.Services.Public
///
///
///
- public async Task> BillQueryForAssembledApp_Disassembly(List sourceBillNos = null)
+ public async Task> BillQueryForAssembledApp_Disassembly(List sourceBillNos = null)
{
try
{
var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId);
if (stocks.Count == 0)
- return ResultList.ReFailure(ResultCodes.ErpStockNoData);
+ return ResultList.ReFailure(ResultCodes.ErpStockNoData);
var stocks_codes = stocks.Select(x => x.Code).ToList();
//1.先登录金蝶-拿到token
var token_result = await this.Init();
if (!token_result.IsSuccess)
- return ResultList.ReFailure(token_result);
+ return ResultList.ReFailure(token_result);
//2.时间条件:可能还有其它条件
var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00");
@@ -738,10 +737,10 @@ namespace WMS.Web.Domain.Services.Public
var result = JsonConvert.DeserializeObject>>(result_json);
//5.返回数据的组装
- var erp_list = new List();
+ var erp_list = new List();
foreach (var item in result)
{
- var lis = new ErpAssembledAppDto();
+ var lis = new ErpInStockResultDto();
lis.BillNo = item[0];
lis.OrgId = Convert.ToInt32(item[1]);
lis.MaterialId = Convert.ToInt32(item[2]);
@@ -750,13 +749,14 @@ namespace WMS.Web.Domain.Services.Public
lis.Qty = Convert.ToDecimal(item[5]);
lis.CreateTime = Convert.ToDateTime(item[6]);
lis.Remark = item[7];
+ lis.Type = (int)InstockType.Assembled;
erp_list.Add(lis);
}
- return ResultList.ReSuccess(erp_list);
+ return ResultList.ReSuccess(erp_list);
}
catch (Exception ex)
{
- return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error);
+ return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error);
}
}