增加盘点 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

@@ -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>
@@ -101,7 +109,7 @@ namespace WMS.Web.Domain.Services.Public
//3.单据类型:标准采购订单和标准委外订单
//4.明细关闭状态:正常
//5.仓库wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步
param.FilterString = "FCreateDate>='"+beginTime+"' and FCreateDate<='"+endTime+ "' and FDocumentStatus='C' and (FBillTypeID='83d822ca3e374b4ab01e5dd46a0062bd' or FBillTypeID='6d01d059713d42a28bb976c90a121142') and FMRPCloseStatus='A'";
param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C' and (FBillTypeID='83d822ca3e374b4ab01e5dd46a0062bd' or FBillTypeID='6d01d059713d42a28bb976c90a121142') and FMRPCloseStatus='A'";
query.Data = JsonConvert.SerializeObject(param);
var json = JsonConvert.SerializeObject(query);
@@ -123,6 +131,12 @@ namespace WMS.Web.Domain.Services.Public
lis.FSOSTOCKID = Convert.ToInt32(item[6]);
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];
@@ -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();
}
}
}