This commit is contained in:
tongfei
2023-12-20 11:59:33 +08:00
6 changed files with 43 additions and 30 deletions

View File

@@ -142,7 +142,7 @@ namespace WMS.Web.Domain.IService.Public
/// 获取仓位信息信息 根据仓库编码
/// </summary>
/// <returns></returns>
Task<ResultList<ErpStockDto>> BillQueryForSubStock(string code=null, string orgCode = null);
Task<ResultList<ErpStockDto>> BillQueryForSubStock();
//同步数据(保存提交审核)
Task<Result<string>> Save<T>(T dto, string formId);
//提交

View File

@@ -1240,7 +1240,7 @@ namespace WMS.Web.Domain.Services.Public
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public async Task<ResultList<ErpStockDto>> BillQueryForSubStock(string code = null, string orgCode = null)
public async Task<ResultList<ErpStockDto>> BillQueryForSubStock()
{
try
{
@@ -1254,10 +1254,9 @@ namespace WMS.Web.Domain.Services.Public
return ResultList<ErpStockDto>.ReFailure(token_result);
var query = new ErpBillQueryDto(token_result.Data);
var param = new ErpBillQueryParamDto(FormIdParam.BD_STOCK.ToString());
param.FieldKeys = "FStockFlexDetail_FDetailID,FFlexEntryName,FFlexEntryId,'0'";
param.FieldKeys = "FStockFlexDetail_FDetailID,FFlexEntryName,FFlexEntryId,FUseOrgId.FNumber";
param.Limit = 100000;
if (!string.IsNullOrEmpty(code))
param.FilterString = $"FNumber='{code}' and FUseOrgId.FNumber='{orgCode}'";//FNumber='C'
param.FilterString = $"FNumber='HD' or FNumber='GD'";//FNumber='C'
query.Data = JsonConvert.SerializeObject(param);
var json = JsonConvert.SerializeObject(query);
@@ -1272,13 +1271,12 @@ namespace WMS.Web.Domain.Services.Public
lis.Id = int.Parse(item[0]);
lis.Name = item[1];
lis.Code = item[2];
lis.OrgId = Convert.ToInt32(item[3]);
lis.OrgCode = item[3];
list.Add(lis);
}
//5.供应商集合进行缓存 只有查询全部的时候才缓存
if (code == null)
_memoryCache.Set(cache_key, list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(12)));
_memoryCache.Set(cache_key, list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(12)));
_logger.LogInformation($"子仓库拉取-总条数:{list.Count}");
return ResultList<ErpStockDto>.ReSuccess(list);
}
@@ -2080,7 +2078,7 @@ namespace WMS.Web.Domain.Services.Public
{
var lis = new ErpSalOutStockDetailsSaveDto();
lis.DetailId = item[1];
lis.Qty =Convert.ToDecimal(item[2]);
lis.Qty = Convert.ToDecimal(item[2]);
lis.DeliveryNoticeDetailId = "";
erp_list.Details.Add(lis);
}

View File

@@ -68,7 +68,7 @@ namespace WMS.Web.Domain.Services
public async Task<Result> Save(List<SaveTakeStockRequest> dto, LoginInDto loginInfo)
{
_logger.LogInformation($"盘点保存:{JsonConvert.SerializeObject(dto)} 盘点人:{loginInfo.UserInfo.StaffId}");
if(dto.GroupBy(g=>g.BoxId).Count()>1)
if (dto.GroupBy(g => g.BoxId).Count() > 1)
return Result.ReFailure(ResultCodes.TakeStockBoxError);
List<TakeStock> list = new List<TakeStock>();
@@ -135,7 +135,10 @@ namespace WMS.Web.Domain.Services
//同步金蝶
foreach (var entity in list)
await Loss_Profit(entity);
{
var res = await Loss_Profit(entity);
if (!res.IsSuccess) return res;
}
return Result.ReSuccess();
}
@@ -150,7 +153,10 @@ namespace WMS.Web.Domain.Services
var list = await _takeStockRepositories.GetEntityList(dto.Ids);
list = list.Where(w => w.SuccessSync == SyncStatus.Fail).ToList();
foreach (var entity in list)
await Loss_Profit(entity);
{
var res = await Loss_Profit(entity);
if (!res.IsSuccess) return res;
}
return Result.ReSuccess();
}
@@ -161,33 +167,35 @@ namespace WMS.Web.Domain.Services
/// <returns></returns>
public async Task<Result> Loss_Profit(TakeStock entity)
{
_logger.LogInformation($"盘点同步金蝶: {JsonConvert.SerializeObject(entity)}");
try
{
if (entity.Details.Count() == 0) return Result.ReSuccess();
var materials_result = await _erpService.BillQueryForMaterial();
if (!materials_result.IsSuccess) return Result.ReFailure(ResultCodes.ErpMaterialError);
var materials = materials_result.Data.ToList();
var res = await _erpService.BillQueryForStock();
if (!res.IsSuccess) return Result.ReFailure(ResultCodes.ErpStockError);
var stock = res.Data.FirstOrDefault(f => f.Code == entity.Details[0].StockCode);//需要根据单点code搜索
if (stock == null) return Result.ReFailure(ResultCodes.ErpStockNoData);
//var res = await _erpService.BillQueryForStock();
//if (!res.IsSuccess) return Result.ReFailure(ResultCodes.ErpStockError);
//var stock = res.Data.FirstOrDefault(f => f.Code == entity.Details[0].StockCode && f.OrgCode == entity.Details[0].OrgCode);//需要根据单点code搜索
//if (stock == null) return Result.ReFailure(ResultCodes.ErpStockNoData);
//组装dto
#region dto
//子仓库 ORICO_JD1000008 GD1000005 HD1000007 AD1000004
List<ErpTakeStockDetailsSaveDto> detils = new List<ErpTakeStockDetailsSaveDto>();
foreach (var d in entity.Details)
{
var subStockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, d.SubStockId);
//var subStockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, d.SubStockId);
var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialId);
detils.Add(new ErpTakeStockDetailsSaveDto()
{
FOwnerid = new ErpNumberDto(stock.OrgCode.ToString()),
FKeeperId = new ErpNumberDto(stock.OrgCode.ToString()),
FOwnerid = new ErpNumberDto(d.OrgCode),
FKeeperId = new ErpNumberDto(d.OrgCode),
MaterialId = new ErpNumberDto(_erpBasicDataExtendService.GetMaterialNumber(materials, d.MaterialId)),
UnitId = new ErpNumberDto(unitNumber), //物料带出来
StockId = new ErpNumberDto(stock.Code),
SubStockId = new ErpSubStockDto(stock.Code, d.Erp_SubStockCode),
StockId = new ErpNumberDto(d.StockCode),
SubStockId = new ErpSubStockDto(d.StockCode, d.Erp_SubStockCode),
BeforeQty = d.BeforeQty,
AfterQty = d.AfterQty,
FinalQty = entity.ResultType == TakeStockType.Profit ? d.FinalQty : 0,
@@ -198,7 +206,7 @@ namespace WMS.Web.Domain.Services
ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto()
{
BillNo = entity.BillNo,
StockOrgId = new ErpNumberDto(stock.OrgCode),
StockOrgId = new ErpNumberDto(entity.Details[0].OrgCode),
Type = new ErpNumberDto(entity.ResultType == TakeStockType.Loss ? "PK01_SYS" : "PY01_SYS"),
Date = entity.Date,
Details = detils
@@ -210,7 +218,7 @@ namespace WMS.Web.Domain.Services
var resSync = await ErpOperate(dto, type);
entity.Sync(resSync.result.IsSuccess, resSync.result.Message, resSync.syncStatus, resSync.erpBillNo);
await _takeStockRepositories.Edit(entity, true);
return res;
return Result.ReSuccess();
}
catch (Exception ex)
{