合并
This commit is contained in:
@@ -160,7 +160,7 @@ namespace WMS.Web.Domain.Services.Public
|
||||
/// <param name="billNo">模糊搜索</param>
|
||||
/// <param name="sourceBillNos">单据编号集合精确查找</param>
|
||||
/// <returns></returns>
|
||||
public async Task<ResultList<ErpInStockResultDto>> BillQueryForPurchaseInStock(List<string> sourceBillNos = null, DateTime? beginTime = null,bool isCheck=true)
|
||||
public async Task<ResultList<ErpInStockResultDto>> BillQueryForPurchaseInStock(List<string> sourceBillNos = null, DateTime? beginTime = null, bool isCheck = true)
|
||||
{
|
||||
string result_json = "";
|
||||
try
|
||||
@@ -194,7 +194,7 @@ namespace WMS.Web.Domain.Services.Public
|
||||
//5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步
|
||||
//param.FilterString = " FDocumentStatus='C' and (FBillTypeID='83d822ca3e374b4ab01e5dd46a0062bd' or FBillTypeID='6d01d059713d42a28bb976c90a121142') and FMRPCloseStatus='A'";
|
||||
param.FilterString = " FMRPCloseStatus='A'";
|
||||
if(isCheck) param.FilterString += " and FDocumentStatus='C'";
|
||||
if (isCheck) param.FilterString += " and FDocumentStatus='C'";
|
||||
for (int i = 0; i < stocks.Count(); i++)
|
||||
{
|
||||
if (i == 0)
|
||||
@@ -2637,7 +2637,7 @@ namespace WMS.Web.Domain.Services.Public
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<ResultList<ErpInventoryDto>> BillQueryForInventory(List<(string materialNumber, string orgCode, string stockCode, int subStockId)> request)
|
||||
public async Task<ResultList<ErpInventoryDto>> BillQueryForInventory(List<(string orgCode, string stockCode)> request)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -2650,51 +2650,76 @@ namespace WMS.Web.Domain.Services.Public
|
||||
//3.获取金蝶采购订单:拼接参数和条件
|
||||
var query = new ErpBillQueryDto(token_result.Data);
|
||||
var param = new ErpBillQueryParamDto(FormIdParam.STK_Inventory.ToString());
|
||||
param.FieldKeys = "FBASEQTY,FMATERIALID.FNumber,FSTOCKORGID.FNumber,FSTOCKID.FNumber,FSTOCKLOCID";
|
||||
param.Limit = 100;
|
||||
//param.FilterString = $"FSTOCKORGID.FNumber='{request[0].orgCode}' and FSTOCKID.FNumber='{request[0].stockCode}'";
|
||||
//param.FilterString = $"";
|
||||
// ORICO_AD,FF100004 ORICO_GD,FF100005 ORICO_HD,FF100007 ORICO_JD,FF100008
|
||||
param.FieldKeys = "FMATERIALID.FNumber,FSTOCKORGID.FNumber,FSTOCKID.FNumber,FLot.FNumber,FBASEQTY,FSTOREURNOM,FSTOREURNUM,FSTOCKLOCID.FF100004.FName,FSTOCKLOCID.FF100005.FName,FSTOCKLOCID.FF100007.FName,FSTOCKLOCID.FF100008.FName";
|
||||
param.Limit = 10000;
|
||||
//param.FilterString = $" FMATERIALID.FNumber='G01-11-572474' and FSTOCKID.FNumber='AD' and FBASEQTY>0";
|
||||
//param.FilterString = $" FBASEQTY>0";
|
||||
for (int i = 0; i < request.Count(); i++)
|
||||
{
|
||||
if (i == 0)
|
||||
{
|
||||
param.FilterString = $"(FMATERIALID.FNumber='{request[0].materialNumber}' and FSTOCKORGID.FNumber='{request[0].orgCode}' and FSTOCKID.FNumber='{request[0].stockCode}' and FSTOCKLOCID={request[0].subStockId})";
|
||||
param.FilterString += $" and ((FSTOCKORGID.FNumber='{request[0].orgCode}' and FSTOCKID.FNumber='{request[0].stockCode}' )";
|
||||
if (request.Count() == 1) param.FilterString += ")";
|
||||
}
|
||||
else
|
||||
{
|
||||
param.FilterString += $" or (FMATERIALID.FNumber='{request[i].materialNumber}' and FSTOCKORGID.FNumber='{request[i].orgCode}' and FSTOCKID.FNumber='{request[i].stockCode}' and FSTOCKLOCID={request[i].subStockId})";
|
||||
param.FilterString += $" or (FSTOCKORGID.FNumber='{request[i].orgCode}' and FSTOCKID.FNumber='{request[i].stockCode}' ))";
|
||||
}
|
||||
}
|
||||
query.Data = JsonConvert.SerializeObject(param);
|
||||
var json = JsonConvert.SerializeObject(query);
|
||||
|
||||
//4.请求查询接口
|
||||
var result_json = await _client.ExecuteBillQueryAsync(json);
|
||||
var result = JsonConvert.DeserializeObject<List<List<string>>>(result_json);
|
||||
|
||||
bool isHave = true;
|
||||
var erp_list = new List<ErpInventoryDto>();
|
||||
foreach (var item in result)
|
||||
int skip = 0;
|
||||
|
||||
|
||||
while (isHave)
|
||||
{
|
||||
//4.1.页码:页码按照金蝶的要求从0开始
|
||||
param.StartRow = (Convert.ToInt32(skip) * param.Limit);
|
||||
|
||||
var lis = erp_list.FirstOrDefault(f => f.MaterialNumber.Equals(item[1])
|
||||
&& f.OrgCode.Equals(item[2])
|
||||
&& f.StockCode.Equals(item[3]));
|
||||
query.Data = JsonConvert.SerializeObject(param);
|
||||
var json = JsonConvert.SerializeObject(query);
|
||||
|
||||
if (lis == null)
|
||||
//4.请求查询接口
|
||||
var result_json = await _client.ExecuteBillQueryAsync(json);
|
||||
var result = JsonConvert.DeserializeObject<List<List<string>>>(result_json);
|
||||
//4.4.判断数据是否全部拉取完成:并停止循环的条件
|
||||
if (result == null || result.Count == 0)
|
||||
isHave = false;
|
||||
|
||||
foreach (var item in result)
|
||||
{
|
||||
lis = new ErpInventoryDto();
|
||||
lis.Qty = Convert.ToDecimal(item[0]);
|
||||
lis.MaterialNumber = item[1];
|
||||
lis.OrgCode = item[2];
|
||||
lis.StockCode = item[3];
|
||||
lis.Erp_SubStockId = Convert.ToInt32(item[4]);
|
||||
erp_list.Add(lis);
|
||||
}
|
||||
else
|
||||
lis.Qty = lis.Qty + Convert.ToDecimal(item[0]);
|
||||
}
|
||||
string name = GetName(item[7], item[8], item[9], item[10]);
|
||||
var lis = erp_list.FirstOrDefault(f => f.MaterialNumber.Equals(item[0])
|
||||
&& f.OrgCode.Equals(item[1])
|
||||
&& f.StockCode.Equals(item[2]) && f.Erp_SubStockName.Equals(name));
|
||||
|
||||
return ResultList<ErpInventoryDto>.ReSuccess(erp_list);
|
||||
if (lis == null)
|
||||
{
|
||||
lis = new ErpInventoryDto();
|
||||
lis.MaterialNumber = item[0];
|
||||
lis.OrgCode = item[1];
|
||||
lis.StockCode = item[2];
|
||||
lis.Batch = item[3];
|
||||
//查询库存单位数量FQTY:FMaterialid.FSTOREURNOM,FMaterialid.FSTOREURNUM,
|
||||
//查出结果后用(FBASEQTY*FSTOREURNOM/FSTOREURNUM)计算得到库存单位数量。
|
||||
lis.BeforeQty = Convert.ToDecimal(item[4]) * Convert.ToDecimal(item[5]) / Convert.ToDecimal(item[6]);
|
||||
//lis.Qty= Convert.ToDecimal(item[10]) * Convert.ToDecimal(item[5]) / Convert.ToDecimal(item[6]);
|
||||
lis.Erp_SubStockName = name;
|
||||
erp_list.Add(lis);
|
||||
}
|
||||
else
|
||||
{
|
||||
lis.BeforeQty = lis.BeforeQty + (Convert.ToDecimal(item[4]) * Convert.ToDecimal(item[5]) / Convert.ToDecimal(item[6]));
|
||||
//lis.Qty = lis.Qty + Convert.ToDecimal(item[5]);
|
||||
}
|
||||
}
|
||||
//4.6页面的叠加
|
||||
skip++;
|
||||
}
|
||||
var list = erp_list.Where(w => w.BeforeQty > 0 || w.Qty > 0).ToList();
|
||||
return ResultList<ErpInventoryDto>.ReSuccess(list);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -2702,9 +2727,16 @@ namespace WMS.Web.Domain.Services.Public
|
||||
return ResultList<ErpInventoryDto>.ReFailure(ResultCodes.Erp_Inventory_Error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public string GetName(string name1,string name2,string name3,string name4)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(name1)) return name1;
|
||||
if (!string.IsNullOrEmpty(name2)) return name2;
|
||||
if (!string.IsNullOrEmpty(name3)) return name3;
|
||||
if (!string.IsNullOrEmpty(name4)) return name4;
|
||||
return "";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user