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; }
+
+
+
+}