From eb3342d7da6337bbeec53b0e86c7abc51f2cbb4e Mon Sep 17 00:00:00 2001 From: zhaoxinyu <89237069@qq.com> Date: Fri, 10 May 2024 11:58:00 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=8B=E4=BD=93=E5=BA=93=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/TestAppService.cs | 94 +++- .../CoatingIssueJobs/CoatingIssueJobDTO.cs | 108 +++++ .../CoatingIssueJobAppService.cs | 154 ++++++- .../proxy/CoatingIssueJobToRestoClient.cs | 413 ++++++++++++++++++ .../StoreApplicationModule.cs | 5 + .../Jobs/SfsJobManagerBase.cs | 29 ++ .../Options/RestoOptions.cs | 21 + 7 files changed, 799 insertions(+), 25 deletions(-) create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/CoatingIssueJobToRestoClient.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Options/RestoOptions.cs diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs index 264c88719..d22d04418 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs @@ -36,36 +36,92 @@ public class TestService:ApplicationService _options = options; } - /// - /// 生命周期操作 - /// - [HttpPost("GetMacStatic")] - public async Task GetMacStatic() + ///// + ///// 生命周期操作 + ///// + //[HttpPost("GetMacStatic")] + //public async Task GetMacStatic() + //{ + // return 1; + //} + + + + //[HttpPost("GetCargoStatic")] + ///// + ///// 异步开始生命周期操作不能堵塞 + ///// + //public async Task> GetCargoStatic(string p_AreaID) + //{ + + // List result = new List(); + + // result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB1", PartCode = "TMDLYA0A071AB", Flag = 0 }); + // result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB2", PartCode = "TMDLYA0A061AB", Flag = 0 }); + // result.Add(new ResponCargoItem() { AreaID = "2", CargoID = "ZSXB2", PartCode = "TMDLYD0ABM5A", Flag = 0 }); + + // result = result.Where(p => p.AreaID == p_AreaID).ToList(); + + + // return result; + + //} + [HttpPost("SyncCoatingJobStereo")] + + public virtual async Task SyncCoatingJobStereoAsync(CoatingIssueJobToRestoDTO input) { - return 1; + + ReusltObject reuslt=new ReusltObject(); + reuslt.Code = "0"; + reuslt.Message = "操作成功"; + reuslt.OperateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + + return reuslt; + + + + } - [HttpPost("GetCargoStatic")] - /// - /// 异步开始生命周期操作不能堵塞 - /// - public async Task> GetCargoStatic(string p_AreaID) - { - List result = new List(); - result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB1", PartCode = "TMDLYA0A071AB", Flag = 0 }); - result.Add(new ResponCargoItem() { AreaID = "1", CargoID = "PTXB2", PartCode = "TMDLYA0A061AB", Flag = 0 }); - result.Add(new ResponCargoItem() { AreaID = "2", CargoID = "ZSXB2", PartCode = "TMDLYD0ABM5A", Flag = 0 }); - result = result.Where(p => p.AreaID == p_AreaID).ToList(); - - return result; + + + } +/// +/// 发给立体库主表 +/// +public class CoatingIssueJobToRestoDetailDTO +{ + public string WorkNo { set; get; } + public string TaskNo { set; get; } + public string NeedSite { set; get; } + public string ProductNo { set; get; } + public decimal Count { set; get; } +} +/// +/// 发给立体库子表 +/// +public class CoatingIssueJobToRestoDTO +{ + public Guid UUID { set; get; } + public string OperatorName { set; get; } + public List Details { set; get; } +} +/// +/// 返回结果 +/// +public class ReusltObject +{ + public string Code { set; get; } + public string Message { set; get; } + public string OperateTime { set; get; } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDTO.cs index 83ef675d4..563285a34 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDTO.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDTO.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Wms.Store.Application.Contracts; @@ -38,3 +39,110 @@ public class CoatingIssueJobDTO : SfsJobDTOBase public bool UseOnTheWayLocation { get; set; } } +/// +/// 喷涂主表 +/// +public class CoatingIssueRequestFromRestoDTO +{ + public string RequestNumber { set; get; } + public List Jobs { set; get; } +} +/// +/// 立体库发给WMS明细 +/// +public class CoatingIssueJobFromRestoDetailDTO +{ + [Display(Name = "零件编号")] + public string ItemCode { set; get; } + [Display(Name = "目标库位")] + public string ToLocationCode { set; get; } + [Display(Name = "来源库位")] + public string FromLocationCode { set; get; } + [Display(Name = "数量")] + public decimal Qty { set; get; } +} +/// +/// 立体库发给立体库任务单号 +/// +public class CoatingIssueJobFromRestoDTO +{ + [Display(Name = "任务单号")] + public string JobNumber { set; get; } + [Display(Name = "明细")] + public List Details { set; get; } +} +/// +/// 发给立体库主表 +/// +/// +/// 发给立体库子表 +/// +[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] +public partial class CoatingIssueJobToRestoDTO +{ + + [System.Text.Json.Serialization.JsonPropertyName("uuid")] + public System.Guid Uuid { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("operatorName")] + public string OperatorName { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("details")] + public System.Collections.Generic.ICollection Details { get; set; } + +} + +/// +/// 发给立体库主表 +/// +[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] +public partial class CoatingIssueJobToRestoDetailDTO +{ + + [System.Text.Json.Serialization.JsonPropertyName("workNo")] + public string WorkNo { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("taskNo")] + public string TaskNo { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("needSite")] + public string NeedSite { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("productNo")] + public string ProductNo { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("count")] + public decimal Count { get; set; } + +} + +/// +/// 返回结果 +/// +[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] +public partial class ReusltObject +{ + + [System.Text.Json.Serialization.JsonPropertyName("code")] + public string Code { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("message")] + public string Message { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("operateTime")] + public string OperateTime { get; set; } + +} + + + + + + + + + + + + + diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs index a07a74d69..3222c1ddd 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs @@ -3,13 +3,20 @@ using System.Collections.Generic; using System.Data; using System.Linq; using System.Linq.Expressions; +using System.Net.Http; using System.Threading; using System.Threading.Tasks; using Castle.Components.DictionaryAdapter; +using DocumentFormat.OpenXml.Spreadsheet; using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Components.Forms; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; +using MyNamespace; +using Omu.ValueInjecter; using Volo.Abp; using Volo.Abp.Application.Dtos; +using Volo.Abp.ObjectMapping; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Domain.Shared; using Win_in.Sfs.Shared.Domain; @@ -19,6 +26,7 @@ using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain.Shared; using Win_in.Sfs.Wms.Store.Jobs.IssueJobs; using Win_in.Sfs.Wms.Store.Notes; +using Win_in.Sfs.Wms.Store.Options; namespace Win_in.Sfs.Wms.Store.Application; @@ -32,14 +40,20 @@ public class CoatingIssueJobAppService private readonly ICoatingIssueJobManager _coatingIssueJobManager; private readonly ILocationAppService _locationAppService; private readonly ITransferLibJobAppService _transferLibJobAppService; - + private readonly IHttpClientFactory _httpClientFactory; + private readonly IOptions _options; public CoatingIssueJobAppService( ICoatingIssueJobRepository repository, ICoatingIssueJobManager coatingIssueJobManager, - ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService) : base(repository, coatingIssueJobManager) + ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService + , IHttpClientFactory httpClientFactory + , IOptions options + ) : base(repository, coatingIssueJobManager) { _coatingIssueJobManager = coatingIssueJobManager; _locationAppService = locationAppService; _transferLibJobAppService = transferLibJobAppService; + _httpClientFactory = httpClientFactory; + _options=options; } [HttpPost("add-many")] @@ -185,10 +199,138 @@ public class CoatingIssueJobAppService return; } - [HttpPost("test")] - public virtual async Task Test() + + [HttpPost("sync-coating-stereo")] + public virtual async Task SyncCoatingJobStereoAsync(List input) { - Console.WriteLine("FuAZCZXVZXVXZVZ"); - await Task.CompletedTask; + + foreach (var itm in input) + { + + } + + + + + ReusltObject ret=new ReusltObject(); + ret.Code = "1"; + ret.Message = "操作成功"; + ret.OperateTime = DateTime.Now.ToString("yyyy-MM-dd"); + + List coatingIssueJobToRestoDetailDTOs = new List(); + CoatingIssueJobToRestoDTO main=new CoatingIssueJobToRestoDTO(); + main.OperatorName=CurrentUser.UserName; + foreach (var job in input) + { + foreach (var jobitem in job.Details) + { + coatingIssueJobToRestoDetailDTOs.Add(new CoatingIssueJobToRestoDetailDTO() + { + Count=jobitem.HandledToQty, + ProductNo=jobitem.ItemCode, + NeedSite=jobitem.HandledToLocationCode, + WorkNo=job.Number, + TaskNo=job.Number + }); + } + } + main.Details=coatingIssueJobToRestoDetailDTOs; + + #region + CoatingIssueJobToRestoClient client = new CoatingIssueJobToRestoClient(_options.Value.Address, _httpClientFactory.CreateClient()); + ret = await client.SyncCoatingJobStereoAsync(main).ConfigureAwait(false); + #endregion + return ret; + + + } + + + + + [HttpPost("receive-coating-job-stereo")] + public virtual async Task SyncReciveCoatingJobStereoAsync(CoatingIssueRequestFromRestoDTO input) + { + List errors = new List(); + var ret=new ReusltObject() + { + Code = "1", + OperateTime = DateTime.Now.ToString("yyyy-MM-dd"), + Message = "操作成功" + }; + try + { + + if (input.Jobs.Count > 0) + { + var inputs = input.Jobs; + var numbers = inputs.Select(p => p.JobNumber); + var query = _repository.WithDetails() + .Where(p => numbers.Contains(p.Number)); + var entities = query.ToList(); + + if (input.Jobs.Count == entities.Count) { + errors.Add("出库任务和WMS出库任务不符,请核对! \n"); + } + var dtos = ObjectMapper.Map, List>(entities); + foreach (var itm in dtos) + { + var first = inputs.FirstOrDefault(p => p.JobNumber == itm.Number); + List details = new List(); + foreach (var detail in first.Details) + { + CoatingIssueJobDetailDTO dto = new CoatingIssueJobDetailDTO(); + dto.HandledFromLocationCode = detail.FromLocationCode; + dto.HandledToLocationCode = detail.ToLocationCode; + dto.ItemCode = detail.ItemCode; + dto.RecommendFromQty = detail.Qty; + dto.RecommendToQty = detail.Qty; + dto.HandledFromQty = detail.Qty; + dto.HandledToQty = detail.Qty; + details.Add(dto); + } + itm.Details = details; + } + } + else + { + errors.Add("立体库确认单据里无数据! \n"); + } + } + catch (Exception ex) + { + ret=new ReusltObject() + { + Code = "2", + OperateTime = DateTime.Now.ToString("yyyy-MM-dd"), + Message = ex.Message + }; + return ret; + } + + if (errors.Count > 0) + { + + ret= new ReusltObject() + { + Code = "2", + OperateTime = DateTime.Now.ToString("yyyy-MM-dd"), + Message = string.Join(",",errors.ToArray()) + }; + } + + + + return ret; + } + + + + + + + + + } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/CoatingIssueJobToRestoClient.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/CoatingIssueJobToRestoClient.cs new file mode 100644 index 000000000..c86d91f04 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/CoatingIssueJobToRestoClient.cs @@ -0,0 +1,413 @@ +//---------------------- +// +// Generated using the NSwag toolchain v14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) +// +//---------------------- + +#pragma warning disable 108 // Disable "CS0108 '{derivedDto}.ToJson()' hides inherited member '{dtoBase}.ToJson()'. Use the new keyword if hiding was intended." +#pragma warning disable 114 // Disable "CS0114 '{derivedDto}.RaisePropertyChanged(String)' hides inherited member 'dtoBase.RaisePropertyChanged(String)'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword." +#pragma warning disable 472 // Disable "CS0472 The result of the expression is always 'false' since a value of type 'Int32' is never equal to 'null' of type 'Int32?' +#pragma warning disable 612 // Disable "CS0612 '...' is obsolete" +#pragma warning disable 1573 // Disable "CS1573 Parameter '...' has no matching param tag in the XML comment for ... +#pragma warning disable 1591 // Disable "CS1591 Missing XML comment for publicly visible type or member ..." +#pragma warning disable 8073 // Disable "CS8073 The result of the expression is always 'false' since a value of type 'T' is never equal to 'null' of type 'T?'" +#pragma warning disable 3016 // Disable "CS3016 Arrays as attribute arguments is not CLS-compliant" +#pragma warning disable 8603 // Disable "CS8603 Possible null reference return" +#pragma warning disable 8604 // Disable "CS8604 Possible null reference argument for parameter" +#pragma warning disable 8625 // Disable "CS8625 Cannot convert null literal to non-nullable reference type" +#pragma warning disable CS8765 // Nullability of type of parameter doesn't match overridden member (possibly because of nullability attributes). + +namespace MyNamespace +{ + using Win_in.Sfs.Wms.Store.Jobs.IssueJobs; + using System = global::System; + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CoatingIssueJobToRestoClient + { +#pragma warning disable 8618 + private string _baseUrl; +#pragma warning restore 8618 + + private System.Net.Http.HttpClient _httpClient; + private static System.Lazy _settings = new System.Lazy(CreateSerializerSettings, true); + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public CoatingIssueJobToRestoClient(string baseUrl, System.Net.Http.HttpClient httpClient) +#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + { + BaseUrl = baseUrl; + _httpClient = httpClient; + } + + private static System.Text.Json.JsonSerializerOptions CreateSerializerSettings() + { + var settings = new System.Text.Json.JsonSerializerOptions(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + public string BaseUrl + { + get { return _baseUrl; } + set + { + _baseUrl = value; + if (!string.IsNullOrEmpty(_baseUrl) && !_baseUrl.EndsWith("/")) + _baseUrl += '/'; + } + } + + protected System.Text.Json.JsonSerializerOptions JsonSerializerSettings { get { return _settings.Value; } } + + static partial void UpdateJsonSerializerSettings(System.Text.Json.JsonSerializerOptions settings); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// Success + /// A server side error occurred. + public virtual System.Threading.Tasks.Task SyncCoatingJobStereoAsync(CoatingIssueJobToRestoDTO body) + { + return SyncCoatingJobStereoAsync(body, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// Success + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task SyncCoatingJobStereoAsync(CoatingIssueJobToRestoDTO body, System.Threading.CancellationToken cancellationToken) + { + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var json_ = System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(body, _settings.Value); + var content_ = new System.Net.Http.ByteArrayContent(json_); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("text/plain")); + + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "CargoState/SyncCoatingJobStereo" + urlBuilder_.Append("CargoState/SyncCoatingJobStereo"); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 403) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 401) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("Bad Request", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 404) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 501) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("Server Error", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 500) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("Server Error", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T), string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = System.Text.Json.JsonSerializer.Deserialize(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody, responseText); + } + catch (System.Text.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + { + var typedBody = await System.Text.Json.JsonSerializer.DeserializeAsync(responseStream, JsonSerializerSettings, cancellationToken).ConfigureAwait(false); + return new ObjectResponseResult(typedBody, string.Empty); + } + } + catch (System.Text.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[])value); + } + else if (value is string[]) + { + return string.Join(",", (string[])value); + } + else if (value.GetType().IsArray) + { + var valueArray = (System.Array)value; + var valueTextArray = new string[valueArray.Length]; + for (var i = 0; i < valueArray.Length; i++) + { + valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo); + } + return string.Join(",", valueTextArray); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class RemoteServiceErrorInfo + { + + [System.Text.Json.Serialization.JsonPropertyName("code")] + public string Code { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("message")] + public string Message { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("details")] + public string Details { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("data")] + public System.Collections.Generic.IDictionary Data { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("validationErrors")] + public System.Collections.Generic.ICollection ValidationErrors { get; set; } + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class RemoteServiceErrorResponse + { + + [System.Text.Json.Serialization.JsonPropertyName("error")] + public RemoteServiceErrorInfo Error { get; set; } + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class RemoteServiceValidationErrorInfo + { + + [System.Text.Json.Serialization.JsonPropertyName("message")] + public string Message { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("members")] + public System.Collections.Generic.ICollection Members { get; set; } + + } + + + + + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ApiException : System.Exception + { + public int StatusCode { get; private set; } + + public string Response { get; private set; } + + public System.Collections.Generic.IReadOnlyDictionary> Headers { get; private set; } + + public ApiException(string message, int statusCode, string response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Exception innerException) + : base(message + "\n\nStatus: " + statusCode + "\nResponse: \n" + ((response == null) ? "(null)" : response.Substring(0, response.Length >= 512 ? 512 : response.Length)), innerException) + { + StatusCode = statusCode; + Response = response; + Headers = headers; + } + + public override string ToString() + { + return string.Format("HTTP Response: \n\n{0}\n\n{1}", Response, base.ToString()); + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ApiException : ApiException + { + public TResult Result { get; private set; } + + public ApiException(string message, int statusCode, string response, System.Collections.Generic.IReadOnlyDictionary> headers, TResult result, System.Exception innerException) + : base(message, statusCode, response, headers, innerException) + { + Result = result; + } + } + +} + +#pragma warning restore 108 +#pragma warning restore 114 +#pragma warning restore 472 +#pragma warning restore 612 +#pragma warning restore 1573 +#pragma warning restore 1591 +#pragma warning restore 8073 +#pragma warning restore 3016 +#pragma warning restore 8603 +#pragma warning restore 8604 +#pragma warning restore 8625 diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationModule.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationModule.cs index e37b33f3d..a2edd768b 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationModule.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationModule.cs @@ -6,6 +6,7 @@ using Volo.Abp.Modularity; using Volo.Abp.Settings; using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Domain; +using Win_in.Sfs.Wms.Store.Options; namespace Win_in.Sfs.Wms.Store.Application; @@ -19,12 +20,16 @@ public class StoreApplicationModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { + var configuration = context.Services.GetConfiguration(); context.Services.AddAutoMapperObjectMapper(); Configure(options => { options.AddMaps(); }); + + Configure(configuration.GetSection("RestoOptions")); + context.Services.Replace(ServiceDescriptor.Transient()); context.Services.Replace(ServiceDescriptor.Transient()); context.Services.Replace(ServiceDescriptor.Transient()); diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/SfsJobManagerBase.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/SfsJobManagerBase.cs index 8c0958daa..5d16fbc0c 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/SfsJobManagerBase.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/SfsJobManagerBase.cs @@ -96,6 +96,35 @@ public abstract class SfsJobManagerBase return entities; } + /// + /// + /// + /// + /// + public virtual async Task> AddManyNoPublishAsync(List entities) + { + foreach (var job in entities) + { + job.SetIdAndNumberWithDetails(GuidGenerator, await GetNumber().ConfigureAwait(false)); + await SendNotifyMessageAsync(job).ConfigureAwait(false); + } + + //await PublishCreatedAsync(entities).ConfigureAwait(false); + + await Repository.InsertManyAsync(entities).ConfigureAwait(false); + + return entities; + } + + + + + + + + + + public virtual async Task OpenAsync(TEntity entity) { diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Options/RestoOptions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Options/RestoOptions.cs new file mode 100644 index 000000000..e6cf97d3c --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Options/RestoOptions.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Win_in.Sfs.Wms.Store.Options; +public class RestoOptions +{ + // IP 地址 + public string Address { set; get; } + // 用户名 + public string UserName { set; get; } + // 密码 + public string Password { set; get; } + // 令牌 + public string Token { set; get; } + + + +}