优化接口
This commit is contained in:
Binary file not shown.
@@ -416,5 +416,13 @@ namespace WMS.Web.Api.Controllers
|
||||
Console.WriteLine("redis1:" + tt2);
|
||||
return Result<bool>.ReSuccess(tt2);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("lst3")]
|
||||
public async Task<bool> lst3()
|
||||
{
|
||||
var data=await _erpService.BillQueryForPurchaseInStockBy("1541693");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1076,6 +1076,41 @@
|
||||
批号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Erp.ErpPurchaseInStockDetailsDto.OrderId">
|
||||
<summary>
|
||||
入库订单ID
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Erp.ErpPurchaseInStockDetailsDto.DocumentStatus">
|
||||
<summary>
|
||||
状态
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Erp.ErpPurchaseInStockDetailsDto.OrderBillNo">
|
||||
<summary>
|
||||
入库单订单号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Erp.ErpPurchaseInStockDetailsDto.PurchaseBillNo">
|
||||
<summary>
|
||||
采购订单号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Erp.ErpPurchaseInStockDetailsDto.DetailId">
|
||||
<summary>
|
||||
入库单明细Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Erp.ErpPurchaseInStockDetailsDto.PurchaseDetailId">
|
||||
<summary>
|
||||
采购订单明细Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Erp.ErpPurchaseInStockDetailsDto.Qty">
|
||||
<summary>
|
||||
入库数量
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Core.Dto.Erp.ErpPushDto">
|
||||
<summary>
|
||||
下推
|
||||
|
||||
@@ -3917,6 +3917,13 @@
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.IService.Public.IErpService.BillQueryForPurchaseInStockBy(System.String)">
|
||||
<summary>
|
||||
|
||||
</summary>
|
||||
<param name="purchaseDetailId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.IService.Public.IErpService.BillQueryForPurchaseInStock(System.Collections.Generic.List{System.String})">
|
||||
<summary>
|
||||
erp:单据查询-采购入库单
|
||||
@@ -5156,6 +5163,17 @@
|
||||
<param name="billNo"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.Services.InStockService.QueryFirst(WMS.Web.Core.Dto.Erp.ErpPurchaseInStockDetailsDto,System.String,System.String,WMS.Web.Domain.Entitys.InStockErpDetails,WMS.Web.Domain.IService.Public.IErpService)">
|
||||
<summary>
|
||||
金蝶已有的入库单进行不同处理:保存、提交、审核
|
||||
</summary>
|
||||
<param name="currentDet"></param>
|
||||
<param name="formId"></param>
|
||||
<param name="billNo"></param>
|
||||
<param name="erpDetail"></param>
|
||||
<param name="sc_erpService"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Services.InStockTaskBoxService">
|
||||
<summary>
|
||||
任务单的箱收货记录服务
|
||||
@@ -6421,6 +6439,36 @@
|
||||
出库单
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Values.ErpOrderStatus">
|
||||
<summary>
|
||||
erp订单状态
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:WMS.Web.Domain.Values.ErpOrderStatus.A">
|
||||
<summary>
|
||||
创建
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:WMS.Web.Domain.Values.ErpOrderStatus.B">
|
||||
<summary>
|
||||
审核中
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:WMS.Web.Domain.Values.ErpOrderStatus.C">
|
||||
<summary>
|
||||
已审核
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:WMS.Web.Domain.Values.ErpOrderStatus.D">
|
||||
<summary>
|
||||
重新审核
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:WMS.Web.Domain.Values.ErpOrderStatus.Z">
|
||||
<summary>
|
||||
暂存
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Values.Erp.FormIdParam">
|
||||
<summary>
|
||||
业务对象表单Id:对应erp的单据表的名称
|
||||
|
||||
@@ -68,4 +68,40 @@ namespace WMS.Web.Core.Dto.Erp
|
||||
[JsonProperty("FNumber")]
|
||||
public string Number { get; set; }
|
||||
}
|
||||
|
||||
public class ErpPurchaseInStockDetailsDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 入库订单ID
|
||||
/// </summary>
|
||||
public string OrderId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
public string DocumentStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库单订单号
|
||||
/// </summary>
|
||||
public string OrderBillNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 采购订单号
|
||||
/// </summary>
|
||||
public string PurchaseBillNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库单明细Id
|
||||
/// </summary>
|
||||
public string DetailId { get; set; }
|
||||
/// <summary>
|
||||
/// 采购订单明细Id
|
||||
/// </summary>
|
||||
public string PurchaseDetailId { get; set; }
|
||||
/// <summary>
|
||||
/// 入库数量
|
||||
/// </summary>
|
||||
public decimal Qty { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,13 @@ namespace WMS.Web.Domain.IService.Public
|
||||
/// <returns></returns>
|
||||
Task<Result<ErpPurchaseInStockSaveDto>> BillQueryForPurchaseInStock(string id);
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="purchaseDetailId"></param>
|
||||
/// <returns></returns>
|
||||
Task<Result<List<ErpPurchaseInStockDetailsDto>>> BillQueryForPurchaseInStockBy(string purchaseDetailId);
|
||||
|
||||
/// <summary>
|
||||
/// erp:单据查询-采购入库单
|
||||
/// </summary>
|
||||
|
||||
@@ -856,30 +856,50 @@ namespace WMS.Web.Domain.Services
|
||||
|
||||
if (erpDetails.Count != 0)
|
||||
{
|
||||
foreach (var s in erpDetails)
|
||||
foreach (var det in erpDetails)
|
||||
{
|
||||
var erp_details = entity.ErpDetails
|
||||
.Where(w => w.SourceBillNo.Equals(s)).Select(s => s.ErpDetailId).ToList();
|
||||
.Where(w => w.SourceBillNo.Equals(det)).Select(t => t.ErpDetailId).ToList();
|
||||
var erpDto = new ErpPushDto()
|
||||
{
|
||||
RuleId = "PUR_PurchaseOrder-STK_InStock",//转换规则内码 采购订单下推采购入库单
|
||||
FormId = FormIdParam.PUR_PurchaseOrder.ToString(),
|
||||
TargetFormId = FormIdParam.STK_InStock.ToString(),
|
||||
DetailsId = s.ErpDetailId.ToString(),
|
||||
DetailsId = det.ErpDetailId.ToString(),
|
||||
IsDraftWhenSaveFail = true//是否需要暂存
|
||||
};
|
||||
//下推金蝶
|
||||
var res = await this.Push(erpDto, s, entity.BillNo, sc_erpService, sc_inStockRepositories);
|
||||
|
||||
List<ErpPurchaseInStockDetailsDto> details = new List<ErpPurchaseInStockDetailsDto>();
|
||||
var resPurchaseInStockDetails_result = await sc_erpService.BillQueryForPurchaseInStockBy(det.ErpDetailId.ToString());
|
||||
if (resPurchaseInStockDetails_result.IsSuccess)
|
||||
details = resPurchaseInStockDetails_result.Data;
|
||||
|
||||
//金蝶已有的单;进行金蝶不同操作处理:保存,提交,审核
|
||||
var currentDet = details.Where(x => x.Qty == det.Qty).FirstOrDefault();
|
||||
if (currentDet != null)
|
||||
{
|
||||
var res= await this.QueryFirst(currentDet, erpDto.FormId, entity.BillNo, det, sc_erpService);
|
||||
if (res.result.IsSuccess)
|
||||
entity.SyncSuccess(s.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
|
||||
entity.SyncSuccess(det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
|
||||
else
|
||||
entity.SyncFail(res.result.Message, s.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
|
||||
entity.SyncFail(res.result.Message, det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
|
||||
}
|
||||
else
|
||||
{
|
||||
//下推金蝶
|
||||
var res = await this.Push(erpDto, det, entity.BillNo, sc_erpService, sc_inStockRepositories);
|
||||
if (res.result.IsSuccess)
|
||||
entity.SyncSuccess(det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
|
||||
else
|
||||
entity.SyncFail(res.result.Message, det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
erpDetails_tags.ForEach(x => { x.SuccessSync = SyncStatus.Fail; });
|
||||
entity.SyncFailAll("同步金蝶失败,金蝶存在已审核的采购入库单", loginInfo?.UserInfo?.StaffId ?? 0);
|
||||
entity.SyncFailAll("同步金蝶失败,该采购单已存在采购入库单", loginInfo?.UserInfo?.StaffId ?? 0);
|
||||
}
|
||||
//最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱
|
||||
var isSuccess = await sc_InStockRepositories.Update(entity, true);
|
||||
@@ -975,6 +995,102 @@ namespace WMS.Web.Domain.Services
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 金蝶已有的入库单进行不同处理:保存、提交、审核
|
||||
/// </summary>
|
||||
/// <param name="currentDet"></param>
|
||||
/// <param name="formId"></param>
|
||||
/// <param name="billNo"></param>
|
||||
/// <param name="erpDetail"></param>
|
||||
/// <param name="sc_erpService"></param>
|
||||
/// <returns></returns>
|
||||
private async Task<(Result result, SyncStatus syncStatus, string erpBillNo)> QueryFirst(ErpPurchaseInStockDetailsDto currentDet, string formId, string billNo, InStockErpDetails erpDetail, IErpService sc_erpService)
|
||||
{
|
||||
try
|
||||
{
|
||||
var purchaseInstock = new ErpPurchaseInStockSaveDto(currentDet.OrderId);
|
||||
var det = new ErpPurchaseInStockDetailsSaveDto();
|
||||
det.DetailId = currentDet.DetailId;
|
||||
det.Qty = currentDet.Qty;
|
||||
purchaseInstock.Details.Add(det);
|
||||
ErpOperateDto o_dto = new ErpOperateDto(formId, currentDet.OrderBillNo);//res_s.Data
|
||||
if (currentDet.DocumentStatus == ErpOrderStatus.Z.ToString())
|
||||
{
|
||||
//保存
|
||||
_logger.LogInformation($"入库单->查询到已有暂存的入库单 开始保存 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 数据: {JsonConvert.SerializeObject(purchaseInstock)}");
|
||||
var res_s = await sc_erpService.Save<ErpPurchaseInStockSaveDto>(purchaseInstock, formId);
|
||||
if (!res_s.IsSuccess)
|
||||
{
|
||||
_logger.LogInformation($"入库单->保存失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{res_s.Message}");
|
||||
return (Result.ReFailure(res_s.Message, res_s.Status), SyncStatus.SubmitFail, currentDet.OrderId);
|
||||
}
|
||||
|
||||
//提交
|
||||
_logger.LogInformation($"入库单->保存成功 开始提交 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
|
||||
var resSubmit = await sc_erpService.Submit(o_dto, formId);
|
||||
if (!resSubmit.IsSuccess)
|
||||
{
|
||||
_logger.LogInformation($"入库单->提交失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{resSubmit.Message}");
|
||||
return (resSubmit, SyncStatus.SubmitFail, o_dto.Numbers.First());
|
||||
}
|
||||
|
||||
//审核
|
||||
_logger.LogInformation($"入库单->提交成功 开始审核 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
|
||||
resSubmit = await sc_erpService.Audit(o_dto, formId);
|
||||
if (!resSubmit.IsSuccess)
|
||||
{
|
||||
_logger.LogInformation($"入库单->审核失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{resSubmit.Message}");
|
||||
return (resSubmit, SyncStatus.CheckFail, o_dto.Numbers.First());
|
||||
}
|
||||
}
|
||||
else if (currentDet.DocumentStatus == ErpOrderStatus.A.ToString())
|
||||
{
|
||||
//提交
|
||||
_logger.LogInformation($"入库单->查询到已有保存的入库单 开始提交 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
|
||||
var resSubmit = await sc_erpService.Submit(o_dto, formId);
|
||||
if (!resSubmit.IsSuccess)
|
||||
{
|
||||
_logger.LogInformation($"入库单->提交失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{resSubmit.Message}");
|
||||
return (resSubmit, SyncStatus.SubmitFail, o_dto.Numbers.First());
|
||||
}
|
||||
|
||||
//审核
|
||||
_logger.LogInformation($"入库单->提交成功 开始审核 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
|
||||
resSubmit = await sc_erpService.Audit(o_dto, formId);
|
||||
if (!resSubmit.IsSuccess)
|
||||
{
|
||||
_logger.LogInformation($"入库单->审核失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{resSubmit.Message}");
|
||||
return (resSubmit, SyncStatus.CheckFail, o_dto.Numbers.First());
|
||||
}
|
||||
}
|
||||
else if (currentDet.DocumentStatus == ErpOrderStatus.B.ToString())
|
||||
{
|
||||
//审核
|
||||
_logger.LogInformation($"入库单->查询到已有提交的入库单 开始审核 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
|
||||
var resSubmit = await sc_erpService.Audit(o_dto, formId);
|
||||
if (!resSubmit.IsSuccess)
|
||||
{
|
||||
_logger.LogInformation($"入库单->审核失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{resSubmit.Message}");
|
||||
return (resSubmit, SyncStatus.CheckFail, o_dto.Numbers.First());
|
||||
}
|
||||
}
|
||||
else if (currentDet.DocumentStatus == ErpOrderStatus.C.ToString())
|
||||
{
|
||||
_logger.LogInformation($"入库单->存在已审核的ERP入库单 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:存在已审核的ERP入库单");
|
||||
return (Result.ReFailure("存在已审核的ERP入库单", 2001), SyncStatus.CheckFail, o_dto.Numbers.First());
|
||||
}
|
||||
_logger.LogInformation($"入库单->同步金蝶成功->单号:{billNo} erp明细Id:{erpDetail.ErpDetailId}");
|
||||
return (Result.ReSuccess(), SyncStatus.Success, o_dto.Numbers.First());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
_logger.LogInformation($"入库单-同步:错误:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{ex.Message}");
|
||||
var result = Result.ReFailure(ex.Message, 50001);
|
||||
return (result, SyncStatus.Fail, "");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2510,6 +2510,52 @@ namespace WMS.Web.Domain.Services.Public
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<Result<List<ErpPurchaseInStockDetailsDto>>> BillQueryForPurchaseInStockBy(string purchaseDetailId)
|
||||
{
|
||||
try
|
||||
{
|
||||
//1.先登录金蝶-拿到token
|
||||
var token_result = await this.Init();
|
||||
if (!token_result.IsSuccess)
|
||||
return Result<List<ErpPurchaseInStockDetailsDto>>.ReFailure(token_result);
|
||||
|
||||
|
||||
//3.获取金蝶采购订单:拼接参数和条件
|
||||
var query = new ErpBillQueryDto(token_result.Data);
|
||||
var param = new ErpBillQueryParamDto(FormIdParam.STK_InStock.ToString());
|
||||
param.FieldKeys = "FID,FInStockEntry_FEntryID,FRealQty,FPOOrderNo,FBillNo,FDocumentStatus";
|
||||
param.Limit = 10000;
|
||||
param.FilterString = $"FPOORDERENTRYID={purchaseDetailId}";
|
||||
|
||||
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);
|
||||
|
||||
//5.返回数据的组装
|
||||
var erp_list = new List<ErpPurchaseInStockDetailsDto>();
|
||||
foreach (var item in result)
|
||||
{
|
||||
var lis = new ErpPurchaseInStockDetailsDto();
|
||||
lis.OrderId =item[0];
|
||||
lis.DetailId = item[1];
|
||||
lis.Qty = Convert.ToDecimal(item[2]);
|
||||
lis.PurchaseBillNo = item[3];
|
||||
lis.OrderBillNo = item[4];
|
||||
lis.DocumentStatus = item[5];
|
||||
lis.PurchaseDetailId = purchaseDetailId;
|
||||
erp_list.Add(lis);
|
||||
}
|
||||
return Result<List<ErpPurchaseInStockDetailsDto>>.ReSuccess(erp_list);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return Result<List<ErpPurchaseInStockDetailsDto>>.ReFailure(ResultCodes.Erp_BillQuery_Error);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<ResultList<ErpInventoryDto>> BillQueryForInventory(List<(string materialNumber, string orgCode, string stockCode, int subStockId)> request)
|
||||
{
|
||||
try
|
||||
|
||||
33
src/WMS.Web.Domain/Values/ErpOrderStatus.cs
Normal file
33
src/WMS.Web.Domain/Values/ErpOrderStatus.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace WMS.Web.Domain.Values
|
||||
{
|
||||
/// <summary>
|
||||
/// erp订单状态
|
||||
/// </summary>
|
||||
public enum ErpOrderStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// 创建
|
||||
/// </summary>
|
||||
A,
|
||||
/// <summary>
|
||||
/// 审核中
|
||||
/// </summary>
|
||||
B,
|
||||
/// <summary>
|
||||
/// 已审核
|
||||
/// </summary>
|
||||
C,
|
||||
/// <summary>
|
||||
/// 重新审核
|
||||
/// </summary>
|
||||
D,
|
||||
/// <summary>
|
||||
/// 暂存
|
||||
/// </summary>
|
||||
Z
|
||||
}
|
||||
}
|
||||
@@ -139,21 +139,21 @@ namespace WMS.Web.Repositories
|
||||
|
||||
//1.获取物料集合和组织集合和供应商的集合
|
||||
var materials = new List<ErpMaterialDto>();
|
||||
var materials_result = await _erpService.BillQueryForMaterial();
|
||||
if (materials_result.IsSuccess)
|
||||
materials = materials_result.Data.ToList();
|
||||
//var materials_result = await _erpService.BillQueryForMaterial();
|
||||
//if (materials_result.IsSuccess)
|
||||
// materials = materials_result.Data.ToList();
|
||||
|
||||
//组织集合
|
||||
var orgs = new List<ErpOrgDto>();
|
||||
var orgs_result = await _erpService.BillQueryForOrg();
|
||||
if (orgs_result.IsSuccess)
|
||||
orgs = orgs_result.Data.ToList();
|
||||
//var orgs_result = await _erpService.BillQueryForOrg();
|
||||
//if (orgs_result.IsSuccess)
|
||||
// orgs = orgs_result.Data.ToList();
|
||||
|
||||
//供应商集合
|
||||
var suppliers = new List<ErpSupplierDto>();
|
||||
var suppliers_result = await _erpService.BillQueryForSupplier();
|
||||
if (suppliers_result.IsSuccess)
|
||||
suppliers = suppliers_result.Data.ToList();
|
||||
//var suppliers_result = await _erpService.BillQueryForSupplier();
|
||||
//if (suppliers_result.IsSuccess)
|
||||
// suppliers = suppliers_result.Data.ToList();
|
||||
|
||||
var entity = await _context.InStockTask.Include(x => x.Details).Where(x => x.Id == id).FirstOrDefaultAsync();
|
||||
|
||||
@@ -238,7 +238,7 @@ namespace WMS.Web.Repositories
|
||||
if (current_box != null)
|
||||
{
|
||||
var current_boxDet = current_box.Details.Where(d => d.MaterialNumber == x.MaterialNumber).FirstOrDefault();
|
||||
if (x.MethodForInt == (int)InventoryInOutMethod.Product && current_boxDet.Qty != 0)
|
||||
if (current_boxDet!=null && x.MethodForInt == (int)InventoryInOutMethod.Product && current_boxDet.Qty != 0)
|
||||
x.Qty = current_boxDet.Qty;
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user