diff --git a/src/WMS.Web.Api/Controllers/InStockController.cs b/src/WMS.Web.Api/Controllers/InStockController.cs
index fe65dd1e..96239e96 100644
--- a/src/WMS.Web.Api/Controllers/InStockController.cs
+++ b/src/WMS.Web.Api/Controllers/InStockController.cs
@@ -160,7 +160,7 @@ namespace WMS.Web.Api.Controllers
if (loginInfo == null || loginInfo.UserInfo == null)
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
- return await _inStockService.Sync(dto);
+ return await _inStockService.Sync(dto,loginInfo);
}
}
}
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index bf002fee..b04d5435 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -775,6 +775,41 @@
单据编码
+
+
+ 修改采购入库单
+
+
+
+
+ 单据Id
+
+
+
+
+ 明细
+
+
+
+
+ 明细
+
+
+
+
+ 明细Id
+
+
+
+
+ 采购订单明细Id
+
+
+
+
+ 数量
+
+
下推
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index bca5cc5f..b9a13442 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -546,6 +546,11 @@
仓位ID
+
+
+ ERP明细
+
+
明细
@@ -570,6 +575,23 @@
生成单据号
+
+
+ 同步金蝶(成功)
+
+
+
+
+
+
+
+ 同步金蝶(失败)
+
+
+
+
+
+
wms入库单明细
@@ -625,6 +647,51 @@
序列号集
+
+
+ wms入库单ERP明细
+
+
+
+
+ ID
+
+
+
+
+ 单据头ID
+
+
+
+
+ 对应金蝶的明细ID
+
+
+
+
+ 来源单号
+
+
+
+
+ 物料ID
+
+
+
+
+ 数量
+
+
+
+
+ 同步成功或者失败 默认是失败状态
+
+
+
+
+ 同步到金蝶后金蝶的单据Id
+
+
erp入库任务表
@@ -2037,6 +2104,21 @@
+
+
+ 修改
+
+
+
+
+
+
+
+ 根据单据头id获取数据
+
+
+
+
箱与任务单绑定(收货)关系表-仓储接口
@@ -2466,11 +2548,12 @@
入库单服务接口
-
+
- 同步
+ 同步金蝶
+
@@ -2797,6 +2880,13 @@
+
+
+ erp:查询采购入库单信息
+
+
+
+
erp:单据查询-采购入库单
@@ -3736,11 +3826,12 @@
入库单服务
-
+
同步-金蝶
+
@@ -3819,6 +3910,23 @@
+
+
+ 采购:同步金蝶
+
+
+
+
+
+
+
+ 下推
+
+
+
+
+
+
入库任务单-服务
diff --git a/src/WMS.Web.Core/Dto/Erp/ErpPurchaseInStockSaveDto.cs b/src/WMS.Web.Core/Dto/Erp/ErpPurchaseInStockSaveDto.cs
new file mode 100644
index 00000000..1cbc5b21
--- /dev/null
+++ b/src/WMS.Web.Core/Dto/Erp/ErpPurchaseInStockSaveDto.cs
@@ -0,0 +1,53 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Web.Core.Dto.Erp
+{
+ ///
+ /// 修改采购入库单
+ ///
+ public class ErpPurchaseInStockSaveDto
+ {
+ public ErpPurchaseInStockSaveDto() { }
+ public ErpPurchaseInStockSaveDto(string id)
+ {
+ this.Id = id;
+ }
+
+ ///
+ /// 单据Id
+ ///
+ [JsonProperty("FID")]
+ public string Id { get; set; }
+
+ ///
+ /// 明细
+ ///
+ [JsonProperty("FEntity")]
+ public List Details { get; set; } = new List();
+ }
+
+ ///
+ /// 明细
+ ///
+ public class ErpPurchaseInStockDetailsSaveDto
+ {
+ ///
+ /// 明细Id
+ ///
+ [JsonProperty("FENTRYID")]
+ public string DetailId { get; set; }
+ ///
+ /// 采购订单明细Id
+ ///
+ [JsonIgnore]
+ public string PurchaseDetailId { get; set; }
+ ///
+ /// 数量
+ ///
+ [JsonProperty("FRealQty")]
+ public decimal Qty { get; set; }
+ }
+}
diff --git a/src/WMS.Web.Core/Dto/InStock/SaveInStockDetailsRequest.cs b/src/WMS.Web.Core/Dto/InStock/SaveInStockDetailsRequest.cs
index bf84e36c..d1eca5f2 100644
--- a/src/WMS.Web.Core/Dto/InStock/SaveInStockDetailsRequest.cs
+++ b/src/WMS.Web.Core/Dto/InStock/SaveInStockDetailsRequest.cs
@@ -33,28 +33,6 @@ namespace WMS.Web.Core.Dto.InStock
///
[Required(ErrorMessage = "供应商不能为空")]
public int SupplierId { get; set; }
- /////
- ///// 组织
- /////
- //[Required(ErrorMessage = "组织不能为空")]
- //public int OrgId { get; set; }
-
- /////
- ///// 组织编码:仓位-仓库-带出
- /////
- //[Required(ErrorMessage = "组织不能为空")]
- //public string OrgCode { get; set; }
-
- /////
- ///// 仓库编码
- /////
- //[Required(ErrorMessage = "仓库不能为空")]
- //public string StockCode { get; set; }
- /////
- ///// 仓位ID
- /////
- //[Required(ErrorMessage = " 仓位不能为空")]
- //public int SubStockId { get; set; }
///
/// 对应金蝶的明细ID
diff --git a/src/WMS.Web.Domain/Entitys/InStock.cs b/src/WMS.Web.Domain/Entitys/InStock.cs
index 2cb0889f..b80ae6c1 100644
--- a/src/WMS.Web.Domain/Entitys/InStock.cs
+++ b/src/WMS.Web.Domain/Entitys/InStock.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
using System.Text;
using WMS.Web.Domain.Values;
@@ -73,6 +74,12 @@ namespace WMS.Web.Domain.Entitys
/// 仓位ID
///
public int SubStockId { get; set; }
+
+ ///
+ /// ERP明细
+ ///
+ public List ErpDetails { get; set; } = new List();
+
///
/// 明细
///
@@ -125,5 +132,44 @@ namespace WMS.Web.Domain.Entitys
}
this.BillNo = "RK" + idStr;
}
+
+ ///
+ /// 同步金蝶(成功)
+ ///
+ ///
+ ///
+ ///
+ public void SyncSuccess(int erpDetailId, int operateId, string erpBillNo)
+ {
+ var erpd = this.ErpDetails.Where(s=>s.ErpDetailId==erpDetailId).FirstOrDefault();
+ erpd.SuccessSync = SyncStatus.Success;
+ erpd.ErpSyncBillNo = erpBillNo;
+
+ //所有erp明细同步成功才是整个单据成功
+ if (this.ErpDetails.Where(w => w.SuccessSync == SyncStatus.Success).Count() == this.Details.Count())
+ {
+ this.SuccessSync = SyncStatus.Success;
+ this.Remark = "";
+ }
+ this.OperateId = operateId;
+ this.SyncTime = DateTime.Now;
+ }
+
+ ///
+ /// 同步金蝶(失败)
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void SyncFail(string remark, int erpDetailId, int operateId, SyncStatus syncStatus)
+ {
+ var erpd = this.ErpDetails.FirstOrDefault(w => w.ErpDetailId == erpDetailId);
+ erpd.SuccessSync = syncStatus;
+ this.SuccessSync = SyncStatus.Fail;
+ this.Remark = remark;
+ this.OperateId = operateId;
+ this.SyncTime = DateTime.Now;
+ }
}
}
diff --git a/src/WMS.Web.Domain/Entitys/InStockDetails.cs b/src/WMS.Web.Domain/Entitys/InStockDetails.cs
index aff29acc..27ea0948 100644
--- a/src/WMS.Web.Domain/Entitys/InStockDetails.cs
+++ b/src/WMS.Web.Domain/Entitys/InStockDetails.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
+using WMS.Web.Core;
+using WMS.Web.Domain.Values;
namespace WMS.Web.Domain.Entitys
{
@@ -10,12 +12,12 @@ namespace WMS.Web.Domain.Entitys
///
[Serializable]
[Table("t_wms_instock_details")]
- public class InStockDetails
+ public class InStockDetails : EntityBase
{
///
/// ID
///
- public int Id { get; set; }
+ public override int Id { get; set; }
///
/// 单据头ID
///
@@ -43,30 +45,14 @@ namespace WMS.Web.Domain.Entitys
/// 供应商ID
///
public int SupplierId { get; set; }
- /////
- ///// 组织ID
- /////
- //public int OrgId { get; set; }
- /////
- ///// 组织编码
- /////
- //public string OrgCode { get; set; }
///
/// 物料ID
///
public int MaterialId { get; set; }
- /////
- ///// 仓库编码
- /////
- //public string StockCode { get; set; }
- /////
- ///// 仓位ID
- /////
- //public int SubStockId { get; set; }
///
/// 数量
///
- public decimal Qty { get; set; }
+ public decimal Qty { get; set; }
///
/// 序列号集
diff --git a/src/WMS.Web.Domain/Entitys/InStockErpDetails.cs b/src/WMS.Web.Domain/Entitys/InStockErpDetails.cs
new file mode 100644
index 00000000..2616a1b4
--- /dev/null
+++ b/src/WMS.Web.Domain/Entitys/InStockErpDetails.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text;
+using WMS.Web.Core;
+using WMS.Web.Domain.Values;
+
+namespace WMS.Web.Domain.Entitys
+{
+ ///
+ /// wms入库单ERP明细
+ ///
+ [Serializable]
+ [Table("t_wms_instock_erp_details")]
+ public class InStockErpDetails : EntityBase
+ {
+ ///
+ /// ID
+ ///
+ public override int Id { get; set; }
+
+ ///
+ /// 单据头ID
+ ///
+ public int Fid { get; set; }
+
+ ///
+ /// 对应金蝶的明细ID
+ ///
+ public int ErpDetailId { get; set; }
+
+ ///
+ /// 来源单号
+ ///
+ public string SourceBillNo { get; set; }
+
+ ///
+ /// 物料ID
+ ///
+ public int MaterialId { get; set; }
+ ///
+ /// 数量
+ ///
+ public decimal Qty { get; set; }
+
+ ///
+ /// 同步成功或者失败 默认是失败状态
+ ///
+ public SyncStatus SuccessSync { get; set; } = SyncStatus.Fail;
+
+ ///
+ /// 同步到金蝶后金蝶的单据Id
+ ///
+ public string ErpSyncBillNo { get; set; }
+
+ }
+}
diff --git a/src/WMS.Web.Domain/IService/IInStockService.cs b/src/WMS.Web.Domain/IService/IInStockService.cs
index 5c4d0985..d70229f8 100644
--- a/src/WMS.Web.Domain/IService/IInStockService.cs
+++ b/src/WMS.Web.Domain/IService/IInStockService.cs
@@ -19,11 +19,12 @@ namespace WMS.Web.Domain.IService
{
///
- /// 同步
+ /// 同步金蝶
///
///
+ ///
///
- Task Sync(OperateRequest dto);
+ Task Sync(OperateRequest dto, LoginInDto loginInfo);
///
/// 收货
diff --git a/src/WMS.Web.Domain/IService/Public/IErpService.cs b/src/WMS.Web.Domain/IService/Public/IErpService.cs
index 90857a0d..981a0b83 100644
--- a/src/WMS.Web.Domain/IService/Public/IErpService.cs
+++ b/src/WMS.Web.Domain/IService/Public/IErpService.cs
@@ -20,6 +20,13 @@ namespace WMS.Web.Domain.IService.Public
///
Task> BillQueryForBillType();
+ ///
+ /// erp:查询采购入库单信息
+ ///
+ ///
+ ///
+ Task> BillQueryForPurchaseInStock(string id);
+
///
/// erp:单据查询-采购入库单
///
diff --git a/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs
index 717308d3..de43c12e 100644
--- a/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs
+++ b/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs
@@ -50,5 +50,20 @@ namespace WMS.Web.Domain.Infrastructure
///
///
Task AddRangeTotalDetails(List entitys, bool isTransaction = true);
+
+ ///
+ /// 修改
+ ///
+ ///
+ ///
+ ///
+ Task Update(InStock entity, bool isTransaction = true);
+
+ ///
+ /// 根据单据头id获取数据
+ ///
+ ///
+ ///
+ Task> GetList(List ids);
}
}
diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs
index 1a87f36d..59e906d6 100644
--- a/src/WMS.Web.Domain/Services/InStockService.cs
+++ b/src/WMS.Web.Domain/Services/InStockService.cs
@@ -1,5 +1,7 @@
using AutoMapper;
using Microsoft.EntityFrameworkCore.Storage;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -21,6 +23,7 @@ using WMS.Web.Domain.IService;
using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Mappers;
using WMS.Web.Domain.Values;
+using WMS.Web.Domain.Values.Erp;
namespace WMS.Web.Domain.Services
{
@@ -43,10 +46,12 @@ namespace WMS.Web.Domain.Services
private readonly IInStockTaskRepositories _inStockTaskRepositories;
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
private readonly IBoxInventoryRepositories _boxInventoryRepositories;
+ private readonly ILogger _logger;
public InStockService(IMapper mapper, ISerialNumbersRepositories serialNumbersRepositories, IErpService erpService, IBoxInventoryService boxInventoryService, ISerialNumberService serialNumberService, ILoginService loginService, IBoxRepositories boxRepositories,
IBasicsRepositories basicsRepositories, IErpBasicDataExtendService erpBasicDataExtendService, IChangeMoveBoxService changeMoveBoxService, IInStockTaskBoxRepositories inStockTaskBoxRepositories,
- IInStockRepositories inStockRepositories, IInStockTaskRepositories inStockTaskRepositories, IBoxInventoryRepositories boxInventoryRepositories)
+ IInStockRepositories inStockRepositories, IInStockTaskRepositories inStockTaskRepositories, IBoxInventoryRepositories boxInventoryRepositories, ILogger logger)
{
+ _logger = logger;
_mapper = mapper;
_erpService = erpService;
_loginService = loginService;
@@ -67,9 +72,15 @@ namespace WMS.Web.Domain.Services
/// 同步-金蝶
///
///
+ ///
///
- public async Task Sync(OperateRequest dto)
+ public async Task Sync(OperateRequest dto, LoginInDto loginInfo)
{
+ var list = await _inStockRepositories.GetList(dto.Ids);
+ foreach (var entity in list)
+ {
+ await this.PurchaseInStock(entity, loginInfo);
+ }
return Result.ReSuccess();
}
@@ -235,6 +246,15 @@ namespace WMS.Web.Domain.Services
entity.Details = _mapper.Map>(dto.Details);
entity.Create(loginInfo.UserInfo.StaffId);
+ //组装:erp明细
+ entity.ErpDetails = dto.Details.GroupBy(x => new { x.ErpDetailId, x.MaterialId, x.SourceBillNo })
+ .Select(x => new InStockErpDetails
+ {
+ ErpDetailId = x.Key.ErpDetailId,
+ MaterialId = x.Key.MaterialId,
+ SourceBillNo = x.Key.SourceBillNo,
+ Qty = x.Sum(t => t.Qty)
+ }).ToList();
//序列号集:箱里面的
var serialNumbers = await _serialNumbersRepositories.GetEntityListByBoxIds(dto.Details.GroupBy(x => x.BoxId).Select(x => x.Key).ToList());
@@ -270,7 +290,7 @@ namespace WMS.Web.Domain.Services
var isSuccess = await _inStockRepositories.AddRangeTotalDetails(totalDetails, isTransaction);
if (!isSuccess)
return Result.ReFailure(ResultCodes.DateWriteError);
- //同步金蝶后,反写任务单的已交数量
+ //反写任务单的已交数量
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)
@@ -305,6 +325,10 @@ namespace WMS.Web.Domain.Services
if (!boxInventoryResult.IsSuccess)
return boxInventoryResult;
+ //同步金蝶
+ if (entity.Type == InstockType.Purchase)
+ await this.PurchaseInStock(entity, loginInfo);
+
return Result.ReSuccess();
@@ -685,6 +709,91 @@ namespace WMS.Web.Domain.Services
return Result.ReSuccess(response);
}
+ ///
+ /// 采购:同步金蝶
+ ///
+ ///
+ ///
+ ///
+ private async Task PurchaseInStock(InStock entity, LoginInDto loginInfo)
+ {
+ if (entity.Type != InstockType.Purchase) return Result.ReSuccess();
+ if (entity.SuccessSync == SyncStatus.Success) return Result.ReSuccess();
+ var erpDetails = entity.ErpDetails.Where(w => w.SuccessSync == SyncStatus.Fail).ToList();
+ foreach (var s in erpDetails)
+ {
+ var erp_details = entity.ErpDetails
+ .Where(w => w.SourceBillNo.Equals(s)).Select(s => s.ErpDetailId).ToList();
+ var erpDto = new ErpPushDto()
+ {
+ RuleId = "PUR_PurchaseOrder-STK_InStock",//转换规则内码 采购订单下推采购入库单
+ FormId = FormIdParam.PUR_PurchaseOrder.ToString(),
+ TargetFormId = FormIdParam.STK_InStock.ToString(),
+ DetailsId = s.ErpDetailId.ToString()
+ };
+ //下推金蝶
+ var res = await this.Push(erpDto, s, entity.BillNo);
+ if (res.result.IsSuccess)
+ entity.SyncSuccess(s.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
+ else
+ entity.SyncFail(res.result.Message, s.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
+ }
+ //最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱
+ var isSuccess = await _inStockRepositories.Update(entity, true);
+ if (entity == null) return Result.ReFailure(ResultCodes.DateWriteError);
+ return Result.ReSuccess();
+ }
+
+ ///
+ /// 下推
+ ///
+ ///
+ ///
+ ///
+ ///
+ private async Task<(Result result, SyncStatus syncStatus, string erpBillNo)> Push(ErpPushDto dto, InStockErpDetails erpDetail, string billNo)
+ {
+ var res = await _erpService.Push(dto);
+ if (!res.IsSuccess)
+ {
+ _logger.LogInformation($"入库单->下推失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{res.Message}");
+ return (Result.ReFailure(res.Message, res.Status), SyncStatus.Fail, "");
+ }
+ string id = res.Data;
+ var resPurchaseInStock = await _erpService.BillQueryForPurchaseInStock(id);
+ var purchaseInStock = resPurchaseInStock.Data;
+ purchaseInStock.Details[0].Qty = erpDetail.Qty;
+ //{"Id":12709885,"Number":"XSCKD10629570","DIndex":0}
+
+ string formId = dto.TargetFormId.ToString();
+ _logger.LogInformation($"入库单->开始同步金蝶 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 数据: {JsonConvert.SerializeObject(dto)}");
+ var res_s = await _erpService.Save(purchaseInStock, formId);
+ if (!res_s.IsSuccess)
+ {
+ _logger.LogInformation($"入库单->修改数量失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{res_s.Message}");
+ return (Result.ReFailure(res_s.Message, res_s.Status), SyncStatus.SubmitFail, id);
+ }
+ //提交
+ _logger.LogInformation($"入库单->保存成功 开始提交 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
+ ErpOperateDto o_dto = new ErpOperateDto(formId, res_s.Data);//res_s.Data
+ var resSubmit = await _erpService.Submit(o_dto, formId);
+ if (!resSubmit.IsSuccess)
+ {
+ _logger.LogInformation($"入库单->提交失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{resSubmit.Message}");
+ return (resSubmit, SyncStatus.SubmitFail, o_dto.Numbers.First());
+ }
+ //审核
+ _logger.LogInformation($"入库单->提交成功 开始审核 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
+ resSubmit = await _erpService.Audit(o_dto, formId);
+ if (!resSubmit.IsSuccess)
+ {
+ _logger.LogInformation($"入库单->审核失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{resSubmit.Message}");
+ return (resSubmit, SyncStatus.CheckFail, o_dto.Numbers.First());
+ }
+ _logger.LogInformation($"同步金蝶成功");
+ return (Result.ReSuccess(), SyncStatus.Success, o_dto.Numbers.First());
+ }
+
}
}
diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs
index ce4d56d1..1a899449 100644
--- a/src/WMS.Web.Domain/Services/Public/ErpService.cs
+++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs
@@ -2092,6 +2092,48 @@ namespace WMS.Web.Domain.Services.Public
}
}
+ public async Task> BillQueryForPurchaseInStock(string id)
+ {
+ try
+ {
+ //1.先登录金蝶-拿到token
+ var token_result = await this.Init();
+ if (!token_result.IsSuccess)
+ return Result.ReFailure(token_result);
+
+
+ //3.获取金蝶采购订单:拼接参数和条件
+ var query = new ErpBillQueryDto(token_result.Data);
+ var param = new ErpBillQueryParamDto(FormIdParam.STK_InStock.ToString());
+ param.FieldKeys = "FID,FInStockEntry_FEntryID,FRealQty";
+ param.Limit = 10000;
+ param.FilterString = $"FID={id}";
+
+ query.Data = JsonConvert.SerializeObject(param);
+ var json = JsonConvert.SerializeObject(query);
+
+ //4.请求查询接口
+ var result_json = await _client.ExecuteBillQueryAsync(json);
+ var result = JsonConvert.DeserializeObject>>(result_json);
+
+ //5.返回数据的组装
+ var erp_list = new ErpPurchaseInStockSaveDto(id);
+ foreach (var item in result)
+ {
+ var lis = new ErpPurchaseInStockDetailsSaveDto();
+ lis.DetailId = item[1];
+ lis.Qty = Convert.ToDecimal(item[2]);
+ lis.PurchaseDetailId = "";
+ erp_list.Details.Add(lis);
+ }
+ return Result.ReSuccess(erp_list);
+ }
+ catch (Exception ex)
+ {
+ return Result.ReFailure(ResultCodes.Erp_BillQuery_Error);
+ }
+ }
+
#endregion
}
}
diff --git a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs
index b43a62e3..bafa3c12 100644
--- a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs
+++ b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs
@@ -187,6 +187,11 @@ namespace WMS.Web.Repositories.Configuration
.WithOne()
.HasForeignKey(p => p.Fid)
.OnDelete(DeleteBehavior.Cascade);
+
+ ent.HasMany(p => p.ErpDetails)
+ .WithOne()
+ .HasForeignKey(p => p.Fid)
+ .OnDelete(DeleteBehavior.Cascade);
});
builder.Entity(ent =>
{
@@ -200,6 +205,11 @@ namespace WMS.Web.Repositories.Configuration
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
c => (List)c.ToList()));
});
+ builder.Entity(ent =>
+ {
+ ent.ToTable("t_wms_instock_erp_details");
+ ent.HasKey(x => x.Id);
+ });
builder.Entity(ent =>
{
ent.ToTable("t_wms_instock_total_details");
diff --git a/src/WMS.Web.Repositories/InStockRepositories.cs b/src/WMS.Web.Repositories/InStockRepositories.cs
index 1c2d89ad..98310324 100644
--- a/src/WMS.Web.Repositories/InStockRepositories.cs
+++ b/src/WMS.Web.Repositories/InStockRepositories.cs
@@ -14,6 +14,7 @@ using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys;
using WMS.Web.Domain.Infrastructure;
using WMS.Web.Domain.IService.Public;
+using WMS.Web.Domain.Mappers;
using WMS.Web.Domain.Values;
using WMS.Web.Domain.Values.Single;
using WMS.Web.Repositories.Configuration;
@@ -249,5 +250,55 @@ namespace WMS.Web.Repositories
return false;
}
}
+
+ ///
+ /// 修改
+ ///
+ ///
+ ///
+ public async Task Update(InStock entity, bool isTransaction = true)
+ {
+ IDbContextTransaction _transaction = null;
+ if (isTransaction)
+ _transaction = _context.Database.BeginTransaction();
+ try
+ {
+ var model = await _context.Instock
+ .AsNoTracking()
+ .Include(s => s.Details)
+ .FirstOrDefaultAsync(f => f.Id == entity.Id);
+ if (model == null)
+ return null;
+ _mapper.Map(entity, model);
+ //子集单独映射
+ _mapper.ToMapList(entity.Details, model.Details);
+ await _context.SaveChangesAsync();
+ if (_transaction != null)
+ _transaction.Commit();
+ return model;
+ }
+ catch (Exception ex)
+ {
+ if (_transaction != null)
+ _transaction.Rollback();
+ return null;
+ }
+ }
+
+ ///
+ /// 根据单据头id获取数据
+ ///
+ ///
+ ///
+ public async Task> GetList(List ids)
+ {
+ var res = await _context.Instock
+ .Include(s => s.Details)
+ .Include(s => s.ErpDetails)
+ .Where(f => ids.Contains(f.Id))
+ .ToListAsync();
+
+ return res;
+ }
}
}