即时库存调整

This commit is contained in:
18942506660
2024-01-02 11:26:20 +08:00
parent 7a1d4bb52d
commit 40f5513d75
8 changed files with 118 additions and 23 deletions

View File

@@ -2133,25 +2133,28 @@ namespace WMS.Web.Domain.Services.Public
}
}
public async Task<Result<decimal>> BillQueryForInventory(string materialId,string orgCode,string stockId)
public async Task<ResultList<ErpInventoryDto>> BillQueryForInventory(List<(int materialId, string orgCode, string stockCode)> request)
{
try
{
//1.先登录金蝶-拿到token
var token_result = await this.Init();
if (!token_result.IsSuccess)
return Result<decimal>.ReFailure(token_result);
return ResultList<ErpInventoryDto>.ReFailure(token_result);
//3.获取金蝶采购订单:拼接参数和条件
var query = new ErpBillQueryDto(token_result.Data);
var param = new ErpBillQueryParamDto("STK_Inventory");
param.FieldKeys = "FQTY,FBASEAVBQTY,FMATERIALID.FNumber,FSTOCKORGID.FNumber,FSTOCKID.FNumber";
var param = new ErpBillQueryParamDto(FormIdParam.STK_Inventory.ToString());
param.FieldKeys = "FBASEQTY,FMATERIALID,FSTOCKORGID.FNumber,FSTOCKID.FNumber";
param.Limit = 100;
//param.FilterString = $"FMATERIALID.FNumber='{materialId}' and FSTOCKORGID.FNumber='{orgCode}'";
//param.FilterString = $"";
param.FilterString = $"FMATERIALID.FNumber='{materialId}' and FSTOCKORGID.FNumber='{orgCode}' and FSTOCKID.FNumber='{stockId}'";
for (int i = 0; i < request.Count(); i++)
{
if(i==0)
param.FilterString = $"(FMATERIALID={request[0].materialId} and FSTOCKORGID.FNumber='{request[0].orgCode}' and FSTOCKID.FNumber='{request[0].stockCode}')";
else
param.FilterString += $" or (FMATERIALID={request[i].materialId} and FSTOCKORGID.FNumber='{request[i].orgCode}' and FSTOCKID.FNumber='{request[i].stockCode}')";
}
query.Data = JsonConvert.SerializeObject(param);
var json = JsonConvert.SerializeObject(query);
@@ -2159,12 +2162,31 @@ namespace WMS.Web.Domain.Services.Public
var result_json = await _client.ExecuteBillQueryAsync(json);
var result = JsonConvert.DeserializeObject<List<List<string>>>(result_json);
return Result<decimal>.ReSuccess(0);
var erp_list = new List<ErpInventoryDto>();
foreach (var item in result)
{
var lis = erp_list.FirstOrDefault(f => f.MaterialId == Convert.ToInt32(item[1])
&& f.OrgCode.Equals(item[2])
&& f.StockCode.Equals(item[3]));
if (lis == null)
{
lis.Qty = Convert.ToInt32(item[0]);
lis.MaterialId = Convert.ToInt32(item[1]);
lis.OrgCode = item[2];
lis.StockCode = item[3];
erp_list.Add(lis);
}
else
lis.Qty = lis.Qty + Convert.ToInt32(item[0]);
}
return ResultList<ErpInventoryDto>.ReSuccess(erp_list);
}
catch (Exception ex)
{
return Result<decimal>.ReFailure(ResultCodes.Erp_BillQuery_Error);
return ResultList<ErpInventoryDto>.ReFailure(ResultCodes.Erp_BillQuery_Error);
}
}