diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index f9103f2e..b1f8d0a8 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -550,54 +550,19 @@ 表单所在的子系统内码,字符串类型(非必录) - + - erp:其他入库单 + erp 提交和审核 - + - id + 业务对象表单Id(必录) - + - 单据编号 - - - - - 库存组织 - - - - - 物料ID - - - - - 收货仓库ID - - - - - 收货仓库-code - - - - - 实收数量 - - - - - 创建时间 - - - - - 备注 + 单据Id @@ -640,21 +605,6 @@ 单据体 - - - erp 提交和审核 - - - - - 业务对象表单Id(必录) - - - - - 单据Id - - 对应金蝶,物料信息 @@ -735,6 +685,11 @@ 收货客户 + + + 对应金蝶单据明细id(销售出库同步金蝶下推使用) + + 物料Id diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 48ac777c..9134f80e 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -281,6 +281,11 @@ 定时任务最新一次时间管理 + + + 主键 订单编号 + + 同步类型 @@ -947,6 +952,11 @@ 单据头Id + + + 对应金蝶单据明细id(销售出库同步金蝶下推使用) + + 销售订单号 @@ -2763,7 +2773,7 @@ - + 同步数据(保存提交审核) @@ -2771,6 +2781,38 @@ + + + 提交 + + + + + + + + 审核 + + + + + + + + 反审核 + + + + + + + + 删除 + + + + + 下推 diff --git a/src/WMS.Web.Core/Dto/Erp/ErpSubmitDto.cs b/src/WMS.Web.Core/Dto/Erp/ErpOperateDto.cs similarity index 86% rename from src/WMS.Web.Core/Dto/Erp/ErpSubmitDto.cs rename to src/WMS.Web.Core/Dto/Erp/ErpOperateDto.cs index 5c2c0653..746866fe 100644 --- a/src/WMS.Web.Core/Dto/Erp/ErpSubmitDto.cs +++ b/src/WMS.Web.Core/Dto/Erp/ErpOperateDto.cs @@ -8,9 +8,9 @@ namespace WMS.Web.Core.Dto.Erp /// /// erp 提交和审核 /// - public class ErpSubmitDto + public class ErpOperateDto { - public ErpSubmitDto(string formId, string id) + public ErpOperateDto(string formId, string id) { this.FormId = formId; this.Ids = id; diff --git a/src/WMS.Web.Core/Dto/Erp/OutStock/ErpDeliveryNoticeOutStockResultDto.cs b/src/WMS.Web.Core/Dto/Erp/OutStock/ErpDeliveryNoticeOutStockResultDto.cs index bbdcecd1..9ea3dfe9 100644 --- a/src/WMS.Web.Core/Dto/Erp/OutStock/ErpDeliveryNoticeOutStockResultDto.cs +++ b/src/WMS.Web.Core/Dto/Erp/OutStock/ErpDeliveryNoticeOutStockResultDto.cs @@ -26,6 +26,10 @@ namespace WMS.Web.Core.Dto.Erp.OutStock /// public int ReceiptCustomerId { get; set; } /// + /// 对应金蝶单据明细id(销售出库同步金蝶下推使用) + /// + public int Erp_DetailId { get; set; } = 0; + /// /// 物料Id /// public int MaterialId { get; set; } diff --git a/src/WMS.Web.Domain/Entitys/ErpOpsSyncDate.cs b/src/WMS.Web.Domain/Entitys/ErpOpsSyncDate.cs index c7030575..ea11618a 100644 --- a/src/WMS.Web.Domain/Entitys/ErpOpsSyncDate.cs +++ b/src/WMS.Web.Domain/Entitys/ErpOpsSyncDate.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Text; +using WMS.Web.Core; using WMS.Web.Domain.Values; namespace WMS.Web.Domain.Entitys @@ -13,8 +14,13 @@ namespace WMS.Web.Domain.Entitys /// [Serializable] [Table("t_wms_sync_date")] - public class ErpOpsSyncDate + public class ErpOpsSyncDate : EntityBase { + /// + /// 主键 订单编号 + /// + [Column("Id")] + public override int Id { get; set; } /// /// 同步类型 /// diff --git a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs index e7009944..6dca3b95 100644 --- a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs +++ b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs @@ -27,6 +27,11 @@ namespace WMS.Web.Domain.Entitys [Column("Fid")] public int Fid { get; set; } /// + /// 对应金蝶单据明细id(销售出库同步金蝶下推使用) + /// + [Column("Erp_DetailId")] + public int Erp_DetailId { get; set; } + /// /// 销售订单号 /// [Column("SaleBillNo")] diff --git a/src/WMS.Web.Domain/IService/Public/IErpService.cs b/src/WMS.Web.Domain/IService/Public/IErpService.cs index aefc21d3..654303c3 100644 --- a/src/WMS.Web.Domain/IService/Public/IErpService.cs +++ b/src/WMS.Web.Domain/IService/Public/IErpService.cs @@ -97,9 +97,16 @@ namespace WMS.Web.Domain.IService.Public /// Task> BillQueryForSubStock(string code=null); //同步数据(保存提交审核) - Task Sync(T dto, string formId); + Task Save(T dto, string formId); + //提交 + Task Submit(ErpOperateDto dto, string formId); + //审核 + Task Audit(ErpOperateDto dto, string formId); + //反审核 + Task NoAudit(ErpOperateDto dto, string formId); + //删除 + Task Delete(ErpOperateDto dto, string formId); //下推 Task Push(ErpPushDto dto); - } } diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index 4d3ec62a..8a4601fb 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -5,6 +5,7 @@ using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; @@ -758,13 +759,15 @@ namespace WMS.Web.Domain.Services.Public return ResultList.ReFailure("错误", 10002); } } + + #region 金蝶操作交互 /// /// 同步数据(保存提交审核) /// /// /// /// - public async Task Sync(T dto, string formId) + public async Task Save(T dto, string formId) { try { @@ -776,15 +779,143 @@ namespace WMS.Web.Domain.Services.Public query.Data = JsonConvert.SerializeObject(param); //保存 var result_json = await _client.SaveAsync(JsonConvert.SerializeObject(query)); + + JObject jobject = (JObject)JsonConvert.DeserializeObject(result_json); + var isSuccess = jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower(); + + if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true") + return Result.ReSuccess(); + + var msg = jobject["Result"]["ResponseStatus"]["Errors"]["Message"].ToString(); + return Result.ReFailure(msg, 10002); + } + catch (Exception) + { + return Result.ReFailure("错误", 10002); + } + } + /// + /// 提交 + /// + /// + /// + /// + public async Task Submit(ErpOperateDto dto, string formId) + { + try + { + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return token_result; + var query = new ErpBillQueryDto(token_result.Data); + //提交 - var sparam = new ErpSubmitDto(formId, ""); - query.Data = JsonConvert.SerializeObject(sparam); - result_json = await _client.SubmitAsync(JsonConvert.SerializeObject(query)); - //审核 - result_json = await _client.AuditAsync(JsonConvert.SerializeObject(query)); + query.Data = JsonConvert.SerializeObject(dto); + var result_json = await _client.SubmitAsync(JsonConvert.SerializeObject(query)); + JObject jobject = (JObject)JsonConvert.DeserializeObject(result_json); + var isSuccess = jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower(); - return Result.ReSuccess(); + if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true") + return Result.ReSuccess(); + var msg = jobject["Result"]["ResponseStatus"]["Errors"]["Message"].ToString(); + return Result.ReFailure(msg, 10002); + } + catch (Exception) + { + return Result.ReFailure("错误", 10002); + } + } + /// + /// 审核 + /// + /// + /// + /// + public async Task Audit(ErpOperateDto dto, string formId) + { + try + { + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return token_result; + var query = new ErpBillQueryDto(token_result.Data); + + //提交 + query.Data = JsonConvert.SerializeObject(dto); + var result_json = await _client.AuditAsync(JsonConvert.SerializeObject(query)); + JObject jobject = (JObject)JsonConvert.DeserializeObject(result_json); + var isSuccess = jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower(); + + if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true") + return Result.ReSuccess(); + + var msg = jobject["Result"]["ResponseStatus"]["Errors"]["Message"].ToString(); + return Result.ReFailure(msg, 10002); + } + catch (Exception) + { + return Result.ReFailure("错误", 10002); + } + } + /// + /// 反审核 + /// + /// + /// + /// + public async Task NoAudit(ErpOperateDto dto, string formId) + { + try + { + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return token_result; + var query = new ErpBillQueryDto(token_result.Data); + + //提交 + query.Data = JsonConvert.SerializeObject(dto); + var result_json = await _client.UnAuditAsync(JsonConvert.SerializeObject(query)); + JObject jobject = (JObject)JsonConvert.DeserializeObject(result_json); + var isSuccess = jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower(); + + if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true") + return Result.ReSuccess(); + + var msg = jobject["Result"]["ResponseStatus"]["Errors"]["Message"].ToString(); + return Result.ReFailure(msg, 10002); + } + catch (Exception) + { + return Result.ReFailure("错误", 10002); + } + } + /// + /// 删除 + /// + /// + /// + /// + public async Task Delete(ErpOperateDto dto, string formId) + { + try + { + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return token_result; + var query = new ErpBillQueryDto(token_result.Data); + + //提交 + query.Data = JsonConvert.SerializeObject(dto); + var result_json = await _client.DeleteAsync(JsonConvert.SerializeObject(query)); + JObject jobject = (JObject)JsonConvert.DeserializeObject(result_json); + var isSuccess = jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower(); + + if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true") + return Result.ReSuccess(); + + var msg = jobject["Result"]["ResponseStatus"]["Errors"]["Message"].ToString(); + return Result.ReFailure(msg, 10002); } catch (Exception) { @@ -808,6 +939,7 @@ namespace WMS.Web.Domain.Services.Public return Result.ReSuccess(); } + #endregion #region 出库 public async Task> BillQueryForDeliveryNoticeOutStock(List sourceBillNos = null, DateTime? beginTime = null) @@ -833,7 +965,7 @@ namespace WMS.Web.Domain.Services.Public //3.获取金蝶采购订单:拼接参数和条件 var query = new ErpBillQueryDto(token_result.Data); var param = new ErpBillQueryParamDto(FormIdParam.SAL_DELIVERYNOTICE.ToString()); - param.FieldKeys = "FBillNo,FOrderNo,FDeliveryOrgID,FCustomerID,FMaterialID,FStockID,FStockLocID,FQty,FNoteEntry,FCreateDate"; + param.FieldKeys = "FBillNo,FOrderNo,FDeliveryOrgID,FCustomerID,FMaterialID,FStockID,FStockLocID,FQty,FNoteEntry,FCreateDate,FEntryID"; param.Limit = 10; //查询条件:备注其中的条件值以金蝶的值为准!!! //1.创建时间在两天前和当天时间之间 @@ -874,6 +1006,7 @@ namespace WMS.Web.Domain.Services.Public lis.Remark = item[8]; lis.CreateTime = Convert.ToDateTime(item[9]); lis.Type = (int)OutStockType.Sal; + lis.Erp_DetailId = Convert.ToInt32(item[10]); erp_list.Add(lis); } return ResultList.ReSuccess(erp_list); @@ -1269,8 +1402,6 @@ namespace WMS.Web.Domain.Services.Public } } - - #endregion } } diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs index 0665b3bc..8a082608 100644 --- a/src/WMS.Web.Domain/Services/TakeStockService.cs +++ b/src/WMS.Web.Domain/Services/TakeStockService.cs @@ -133,7 +133,7 @@ namespace WMS.Web.Domain.Services }; #endregion - var resSync = await _erpService.Sync(dto, FormIdParam.STK_StockCountGain.ToString()); + var resSync = await _erpService.Save(dto, FormIdParam.STK_StockCountGain.ToString()); entity.Sync(resSync.IsSuccess, resSync.Message); await _takeStockRepositories.Edit(entity, true); return res; @@ -180,7 +180,7 @@ namespace WMS.Web.Domain.Services #endregion //判断盘盈盘亏 string formId = entity.ResultType == TakeStockType.Loss ? FormIdParam.STK_StockCountLoss.ToString() : FormIdParam.STK_StockCountGain.ToString(); - var resSync = await _erpService.Sync(dto, formId); + var resSync = await _erpService.Save(dto, formId); entity.Sync(resSync.IsSuccess, resSync.Message); await _takeStockRepositories.Edit(entity, true); return res; diff --git a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs index 1a7ff910..248e7e4b 100644 --- a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs +++ b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs @@ -60,6 +60,7 @@ namespace WMS.Web.Repositories.Configuration builder.Entity(ent => { ent.ToTable("t_wms_sync_date"); + ent.HasKey(x => x.Id); });