This commit is contained in:
18942506660
2024-11-07 09:46:58 +08:00
56 changed files with 3239 additions and 74 deletions

View File

@@ -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];
//查询库存单位数量FQTYFMaterialid.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
}