增加盘点 erp同步

This commit is contained in:
18942506660
2023-11-02 11:42:47 +08:00
parent 53da585693
commit 69cc15d9e4
9 changed files with 197 additions and 16 deletions

View File

@@ -595,6 +595,31 @@
创建时间
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.Erp.ErpStockDto">
<summary>
仓库信息
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.ErpStockDto.Id">
<summary>
id
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.ErpStockDto.Code">
<summary>
编码
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.ErpStockDto.Name">
<summary>
名字
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.ErpStockDto.OrgCode">
<summary>
业务组织(使用组织)编码
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.Purchase.ErpPurchaseInStockResultDto.FCHUCHANGPRICE">
<summary>
出厂价格
@@ -627,7 +652,7 @@
</member>
<member name="P:WMS.Web.Core.Dto.Erp.TakeStock.ErpTakeStockSaveDto.Type">
<summary>
单据类型(标准盘亏单; 标准盘盈单)
单据类型(标准盘亏单; 标准盘盈单 PY01_SYS) 盘亏 PK01_SYS
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.TakeStock.ErpTakeStockSaveDto.StockOrgId">
@@ -637,7 +662,7 @@
</member>
<member name="P:WMS.Web.Core.Dto.Erp.TakeStock.ErpTakeStockSaveDto.FOwnerTypeIdHead">
<summary>
货主类型: 默认为业务组织
货主类型: 默认为业务组织 BD_OwnerOrg
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.TakeStock.ErpTakeStockSaveDto.BillNo">
@@ -657,17 +682,17 @@
</member>
<member name="P:WMS.Web.Core.Dto.Erp.TakeStock.ErpTakeStockDetailsSaveDto.FStockStatusId">
<summary>
库存状态
库存状态 KCZT001
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.TakeStock.ErpTakeStockDetailsSaveDto.FOwnerTypeId">
<summary>
货主类型: 默认为业务组织
货主类型: 默认为业务组织 BD_OwnerOrg
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.TakeStock.ErpTakeStockDetailsSaveDto.FOwnerid">
<summary>
取仓库对应的货主信息
取仓库对应的货主信息 货主: 等于库存组织
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.TakeStock.ErpTakeStockDetailsSaveDto.FKeeperTypeId">
@@ -677,7 +702,7 @@
</member>
<member name="P:WMS.Web.Core.Dto.Erp.TakeStock.ErpTakeStockDetailsSaveDto.FKeeperId">
<summary>
保管者
保管者 仓库”库存组织”
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.TakeStock.ErpTakeStockDetailsSaveDto.MaterialId">

View File

@@ -1393,6 +1393,12 @@
</summary>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.IService.Public.IErpService.BillQueryForStock">
<summary>
获取仓库信息
</summary>
<returns></returns>
</member>
<member name="T:WMS.Web.Domain.IService.Public.ILoginService">
<summary>
登录服务接口
@@ -2013,6 +2019,12 @@
</summary>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Services.Public.ErpService.BillQueryForStock">
<summary>
获取使用组织
</summary>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Services.Public.HttpClientService.GetAsync``1(System.String,System.Int32)">
<summary>
Get方法
@@ -2436,6 +2448,11 @@
供应商
</summary>
</member>
<member name="F:WMS.Web.Domain.Values.Erp.FormIdParam.BD_STOCK">
<summary>
仓库
</summary>
</member>
<member name="T:WMS.Web.Domain.Values.InstockStatus">
<summary>
入库状态

View File

@@ -10,11 +10,16 @@ namespace WMS.Web.Core.Dto.Erp
/// </summary>
public class ErpSave<T>
{
public ErpSave(string formId,T model)
{
this.FormId = formId;
this.Model = model;
}
/// <summary>
/// 校验Json数据包是否重复传入一旦重复传入接口调用失败默认false必录)
/// 业务对象表单Id必录)
/// </summary>
[JsonProperty("ValidateRepeatJson")]
public bool ValidateRepeatJson { get; set; } = false;
[JsonProperty("FormId")]
public string FormId { get; set; }
/// <summary>
/// 单据体
/// </summary>

View File

@@ -0,0 +1,28 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.Erp
{
/// <summary>
/// erp 提交和审核
/// </summary>
public class ErpSubmitDto
{
public ErpSubmitDto(string formId, string id)
{
this.FormId = formId;
this.Ids = id;
}
/// <summary>
/// 业务对象表单Id必录
/// </summary>
[JsonProperty("FormId")]
public string FormId { get; set; }
/// <summary>
/// 单据Id
/// </summary>
public string Ids { get; set; }
}
}

View File

@@ -22,8 +22,8 @@ namespace WMS.Web.Core.Dto.Erp
/// </summary>
public string Name { get; set; }
/// <summary>
/// 业务组织(使用组织)编码
/// 业务组织(使用组织)
/// </summary>
public string OrgCode { get; set; }
public int OrgId { get; set; }
}
}

View File

@@ -6,6 +6,7 @@ using WMS.Web.Core.Dto.Erp;
using WMS.Web.Core.Dto.Erp.Org;
using WMS.Web.Core.Dto.Erp.Purchase;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys;
namespace WMS.Web.Domain.IService.Public
{
@@ -28,5 +29,9 @@ namespace WMS.Web.Domain.IService.Public
/// </summary>
/// <returns></returns>
Task<ResultList<ErpStockDto>> BillQueryForStock();
//盘盈
Task<Result> TakeStock_Profit(TakeStock entity);
//盘亏
Task<Result> TakeStock_Loss(TakeStock entity);
}
}

View File

@@ -14,6 +14,7 @@ using System.Threading.Tasks;
using WMS.Web.Core.Dto.Erp;
using WMS.Web.Core.Dto.Erp.Org;
using WMS.Web.Core.Dto.Erp.Purchase;
using WMS.Web.Core.Dto.Erp.TakeStock;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys;
using WMS.Web.Domain.Infrastructure;
@@ -21,6 +22,7 @@ using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Options;
using WMS.Web.Domain.Values;
using WMS.Web.Domain.Values.Erp;
using WMS.Web.Domain.Values.Single;
namespace WMS.Web.Domain.Services.Public
{
@@ -35,14 +37,18 @@ namespace WMS.Web.Domain.Services.Public
private ERPGWSoapClient _client;
private readonly IMemoryCache _memoryCache;
private readonly IInStockTaskRepositories _inStockTaskRepositories;
private readonly ISingleDataService _singleDataService;
public readonly ITransactionRepositories _transactionRepositories;
private readonly ILoginRepositories _loginRepositories;
public ErpService(
IMapper mapper,
IOptions<ErpOptions> erpOptions,
ILogger<ErpService> logger,
IMemoryCache memoryCache,
IInStockTaskRepositories inStockTaskRepositories,
ITransactionRepositories transactionRepositories)
ITransactionRepositories transactionRepositories,
ISingleDataService singleDataService,
ILoginRepositories loginRepositories)
{
this._erpOptions = erpOptions?.Value;
this._mapper = mapper;
@@ -50,6 +56,8 @@ namespace WMS.Web.Domain.Services.Public
this._memoryCache = memoryCache;
this._inStockTaskRepositories = inStockTaskRepositories;
this._transactionRepositories = transactionRepositories;
this._singleDataService = singleDataService;
this._loginRepositories = loginRepositories;
}
/// <summary>
@@ -124,6 +132,12 @@ namespace WMS.Web.Domain.Services.Public
lis.FQty = Convert.ToDecimal(item[7]);
lis.FEntryNote = item[8];
lis.FCreateDate = Convert.ToDateTime(item[9]);
lis.FDocumentStatus = item[10];
lis.FBillTypeID = item[11];
lis.FMRPCloseStatus = item[12];
lis.FBillTypeFName = item[13];
//list.FCHUCHANGPRICE=FCHUCHANGPRICE[?];//这个是出厂价,但是金蝶测试没有这个字段,正式有的
lis.FCreateDate =Convert.ToDateTime(item[9]);
lis.FCHUCHANGPRICE = Convert.ToDecimal(item[10]);
lis.StockFNumber = item[11];
lis.FDocumentStatus = item[12];
@@ -207,7 +221,7 @@ namespace WMS.Web.Domain.Services.Public
lis.Id = int.Parse(item[0]);
lis.Name = item[1];
lis.Code = item[2];
lis.OrgCode = item[3];
lis.OrgId = Convert.ToInt32(item[3]);
list.Add(lis);
}
@@ -219,5 +233,82 @@ namespace WMS.Web.Domain.Services.Public
return ResultList<ErpStockDto>.ReFailure("错误", 10002);
}
}
/// <summary>
/// 盘盈
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public async Task<Result> TakeStock_Profit(TakeStock entity)
{
try
{
//获取金蝶仓库仓位编码
var stockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, entity.StockId);
var subStockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, entity.SubStockId);
var res = await this.BillQueryForStock();
var stock = res.Data.FirstOrDefault(f => f.Code == stockCode);//需要根据单点code搜索
var subStock = res.Data.FirstOrDefault(f => f.Code == subStockCode);//需要根据单点code搜索
if (stock == null || subStock == null) return Result.ReFailure(ResultCodes.ErpStockNoData);
//组装dto
#region dto
List<ErpTakeStockDetailsSaveDto> detils = new List<ErpTakeStockDetailsSaveDto>();
detils.Add(new ErpTakeStockDetailsSaveDto()
{
FOwnerid = stock.OrgId.ToString(),
FKeeperId = stock.OrgId.ToString(),
MaterialId = entity.MaterialId.ToString(),
UnitId = entity.UnitId.ToString(),
StockId = stock.Id.ToString(),
SubStockId = subStock.Id.ToString(),
BeforeQty = entity.BeforeQty,
AfterQty = entity.AfterQty,
FinalQty = entity.FinalQty,
Fnote = ""
});
ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto()
{
BillNo = entity.BillNo,
StockOrgId = stock.OrgId.ToString(),
Type = "PY01_SYS",
Date = entity.Date,
Details = detils
};
#endregion
var token_result = await this.Init();
if (!token_result.IsSuccess)
return token_result;
var query = new ErpBillQueryDto(token_result.Data);
var param = new ErpSave<ErpTakeStockSaveDto>(FormIdParam.STK_StockCountGain.ToString(), dto);
query.Data = JsonConvert.SerializeObject(param);
var result_json = await _client.SaveAsync(JsonConvert.SerializeObject(query));
//提交
var sparam = new ErpSubmitDto(FormIdParam.STK_StockCountGain.ToString(), "");
query.Data = JsonConvert.SerializeObject(sparam);
result_json = await _client.SubmitAsync(JsonConvert.SerializeObject(query));
//审核
result_json = await _client.AuditAsync(JsonConvert.SerializeObject(query));
return Result.ReSuccess();
}
catch (Exception)
{
return Result.ReFailure("错误", 10002);
}
}
/// <summary>
/// 盘亏
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public async Task<Result> TakeStock_Loss(TakeStock entity)
{
return Result.ReSuccess();
}
}
}

View File

@@ -44,6 +44,14 @@ namespace WMS.Web.Domain.Values.Erp
/// <summary>
/// 仓库
/// </summary>
BD_STOCK=9
BD_STOCK=9,
/// <summary>
/// 盘盈单
/// </summary>
STK_StockCountGain,
/// <summary>
/// 盘亏单
/// </summary>
STK_StockCountLoss,
}
}

View File

@@ -27,5 +27,7 @@ namespace WMS.Web.Domain.Values
public static ValueTuple<int, string> BoxNoData = (80000, "箱信息不存在");
public static ValueTuple<int, string> BoxMateriaNoData = (800010, "箱对应物料信息不存在");
public static ValueTuple<int, string> ErpStockNoData = (900000, "Erp仓库信息不完整");
}
}