From 764631f7772c89e3ea1cebdfdb6553547194ee22 Mon Sep 17 00:00:00 2001
From: zhaoxinyu <89237069@qq.com>
Date: Sat, 11 May 2024 09:40:40 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...Wms.DataExchange.Application.Contracts.xml | 40 +++++
.../DTOs/CoatingIssueJobDTO.cs | 16 +-
.../CoatingIssueJobAppService.cs | 35 ++---
.../KittingIssueJobAppService.cs | 141 +++++++++++++++++-
...estoClient.cs => IssueJobToRestoClient.cs} | 8 +-
.../Jobs/IssueJobs/proxy/ProxyIssueJobDto.cs | 103 +++++++++++++
6 files changed, 307 insertions(+), 36 deletions(-)
rename be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/{CoatingIssueJobToRestoClient.cs => IssueJobToRestoClient.cs} (98%)
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/ProxyIssueJobDto.cs
diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml
index c1943c344..7e651153f 100644
--- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml
+++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/Win_in.Sfs.Wms.DataExchange.Application.Contracts.xml
@@ -771,6 +771,46 @@
最后修改时间
+
+
+ 目标ERP库位
+
+
+
+
+ 来源ERP库位
+
+
+
+
+ 数量
+
+
+
+
+ 物品代码
+
+
+
+
+ 发料记录号
+
+
+
+
+ 生效日期
+
+
+
+
+ 操作员
+
+
+
+
+ 明细
+
+
目标ERP库位
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/DTOs/CoatingIssueJobDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/DTOs/CoatingIssueJobDTO.cs
index f8932caf1..897b00440 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/DTOs/CoatingIssueJobDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/DTOs/CoatingIssueJobDTO.cs
@@ -42,15 +42,15 @@ public class CoatingIssueJobDTO : SfsJobDTOBase
///
/// 喷涂主表
///
-public class CoatingIssueRequestFromRestoDTO
+public class IssueRequestFromRestoDTO
{
public string RequestNumber { set; get; }
- public List Jobs { set; get; }
+ public List Jobs { set; get; }
}
///
/// 立体库发给WMS明细
///
-public class CoatingIssueJobFromRestoDetailDTO
+public class IssueJobFromRestoDetailDTO
{
[Display(Name = "零件编号")]
public string ItemCode { set; get; }
@@ -64,12 +64,12 @@ public class CoatingIssueJobFromRestoDetailDTO
///
/// 立体库发给立体库任务单号
///
-public class CoatingIssueJobFromRestoDTO
+public class IssueJobFromRestoDTO
{
[Display(Name = "任务单号")]
public string JobNumber { set; get; }
[Display(Name = "明细")]
- public List Details { set; get; }
+ public List Details { set; get; }
}
///
/// 发给立体库主表
@@ -78,7 +78,7 @@ public class CoatingIssueJobFromRestoDTO
/// 发给立体库子表
///
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
-public partial class CoatingIssueJobToRestoDTO
+public partial class IssueJobToRestoDTO
{
[System.Text.Json.Serialization.JsonPropertyName("uuid")]
@@ -88,7 +88,7 @@ public partial class CoatingIssueJobToRestoDTO
public string OperatorName { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("details")]
- public System.Collections.Generic.ICollection Details { get; set; }
+ public System.Collections.Generic.ICollection Details { get; set; }
}
@@ -96,7 +96,7 @@ public partial class CoatingIssueJobToRestoDTO
/// 发给立体库主表
///
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
-public partial class CoatingIssueJobToRestoDetailDTO
+public partial class IssueJobToRestoDetailDTO
{
[System.Text.Json.Serialization.JsonPropertyName("workNo")]
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 50b06facf..08dfd7179 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
@@ -59,6 +59,9 @@ public class CoatingIssueJobAppService
[HttpPost("add-many")]
public override async Task> CreateManyAsync(List inputs)
{
+
+
+
foreach (var input in inputs)
{
await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
@@ -200,31 +203,23 @@ public class CoatingIssueJobAppService
}
- [HttpPost("sync-coating-stereo")]
+ [HttpPost("sync-issue-job-stereo")]
public virtual async Task SyncCoatingJobStereoAsync(List input)
{
- 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();
+ List IssueJobToRestoDetailDTOs = new List();
+ IssueJobToRestoDTO main=new IssueJobToRestoDTO();
main.OperatorName=CurrentUser.UserName;
foreach (var job in input)
{
foreach (var jobitem in job.Details)
{
- coatingIssueJobToRestoDetailDTOs.Add(new CoatingIssueJobToRestoDetailDTO()
+ IssueJobToRestoDetailDTOs.Add(new IssueJobToRestoDetailDTO()
{
Count=jobitem.HandledToQty,
ProductNo=jobitem.ItemCode,
@@ -234,23 +229,21 @@ public class CoatingIssueJobAppService
});
}
}
- main.Details=coatingIssueJobToRestoDetailDTOs;
+ main.Details=IssueJobToRestoDetailDTOs;
#region
- CoatingIssueJobToRestoClient client = new CoatingIssueJobToRestoClient(_options.Value.Address, _httpClientFactory.CreateClient());
+ IssueJobToRestoClient client = new IssueJobToRestoClient(_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)
+ [HttpPost("receive-issue-job-stereo")]
+ public virtual async Task SyncReciveCoatingJobStereoAsync(IssueRequestFromRestoDTO input)
{
List errors = new List();
var ret=new ReusltObject()
@@ -261,7 +254,6 @@ public class CoatingIssueJobAppService
};
try
{
-
if (input.Jobs.Count > 0)
{
var inputs = input.Jobs;
@@ -276,7 +268,7 @@ public class CoatingIssueJobAppService
var dtos = ObjectMapper.Map, List>(entities);
foreach (var itm in dtos)
{
- var first = inputs.FirstOrDefault(p => p.JobNumber == itm.Number);
+ var first = inputs.FirstOrDefault(p => p.JobNumber == itm.Number);
List details = new List();
foreach (var detail in first.Details)
{
@@ -319,9 +311,6 @@ public class CoatingIssueJobAppService
Message = string.Join(",",errors.ToArray())
};
}
-
-
-
return ret;
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs
index 3a40b641d..d04462a11 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs
@@ -1,10 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Options;
+using MyNamespace;
using Volo.Abp;
+using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
@@ -12,7 +16,10 @@ using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
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;
+using static IdentityModel.ClaimComparer;
namespace Win_in.Sfs.Wms.Store.Application;
@@ -28,6 +35,8 @@ public class KittingIssueJobAppService
private readonly ITransferLibJobAppService _transferLibJobAppService;
private readonly IKittingIssueNoteAppService _kittingIssueNoteAppService;
private readonly IExpectOutAppService _expectOutAppService;
+ private readonly IHttpClientFactory _httpClientFactory;
+ private readonly IOptions _options;
protected IKittingIssueRequestAppService KittingIssueRequestAppService =>
LazyServiceProvider.LazyGetRequiredService();
@@ -35,7 +44,13 @@ public class KittingIssueJobAppService
public KittingIssueJobAppService(
IKittingIssueJobRepository repository, IKittingIssueJobManager kittingIssueJobManager,
ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService,
- IKittingIssueNoteAppService kittingIssueNoteAppService, IExpectOutAppService expectOutAppService) : base(
+ IKittingIssueNoteAppService kittingIssueNoteAppService, IExpectOutAppService expectOutAppService
+ , IHttpClientFactory httpClientFactory
+ , IOptions options
+
+
+
+ ) : base(
repository, kittingIssueJobManager)
{
_kittingIssueJobManager = kittingIssueJobManager;
@@ -43,6 +58,8 @@ public class KittingIssueJobAppService
_transferLibJobAppService = transferLibJobAppService;
_kittingIssueNoteAppService = kittingIssueNoteAppService;
_expectOutAppService = expectOutAppService;
+ _httpClientFactory = httpClientFactory;
+ _options = options;
}
[HttpPost("add-many")]
@@ -288,5 +305,127 @@ public class KittingIssueJobAppService
await Task.CompletedTask.ConfigureAwait(false);
}
+
+
+
+
+
+ [HttpPost("sync-issue-job-stereo")]
+ public virtual async Task SyncCoatingJobStereoAsync(List input)
+ {
+
+ ReusltObject ret = new ReusltObject();
+ ret.Code = "1";
+ ret.Message = "操作成功";
+ ret.OperateTime = DateTime.Now.ToString("yyyy-MM-dd");
+
+ List IssueJobToRestoDetailDTOs = new List();
+ IssueJobToRestoDTO main = new IssueJobToRestoDTO();
+ main.OperatorName = CurrentUser.UserName;
+ foreach (var job in input)
+ {
+ foreach (var jobitem in job.Details)
+ {
+ IssueJobToRestoDetailDTOs.Add(new IssueJobToRestoDetailDTO()
+ {
+ Count = jobitem.HandledToQty,
+ ProductNo = jobitem.ItemCode,
+ NeedSite = jobitem.HandledToLocationCode,
+ WorkNo = job.Number,
+ TaskNo = job.Number
+ });
+ }
+ }
+ main.Details = IssueJobToRestoDetailDTOs;
+
+ #region
+ IssueJobToRestoClient client = new IssueJobToRestoClient(_options.Value.Address, _httpClientFactory.CreateClient());
+ ret = await client.SyncCoatingJobStereoAsync(main).ConfigureAwait(false);
+ #endregion
+ return ret;
+
+ }
+
+
+
+
+ [HttpPost("receive-issue-job-stereo")]
+ public virtual async Task SyncReciveCoatingJobStereoAsync(IssueRequestFromRestoDTO 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)
+ {
+ KittingIssueJobDetailDTO dto = new KittingIssueJobDetailDTO();
+ 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;
+ }
+
+
+
+
+
+
#endregion
}
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/IssueJobToRestoClient.cs
similarity index 98%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/CoatingIssueJobToRestoClient.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/IssueJobToRestoClient.cs
index c86d91f04..83c608632 100644
--- 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/IssueJobToRestoClient.cs
@@ -23,7 +23,7 @@ namespace MyNamespace
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
+ public partial class IssueJobToRestoClient
{
#pragma warning disable 8618
private string _baseUrl;
@@ -33,7 +33,7 @@ namespace MyNamespace
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)
+ public IssueJobToRestoClient(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;
@@ -68,7 +68,7 @@ namespace MyNamespace
/// Success
/// A server side error occurred.
- public virtual System.Threading.Tasks.Task SyncCoatingJobStereoAsync(CoatingIssueJobToRestoDTO body)
+ public virtual System.Threading.Tasks.Task SyncCoatingJobStereoAsync(IssueJobToRestoDTO body)
{
return SyncCoatingJobStereoAsync(body, System.Threading.CancellationToken.None);
}
@@ -76,7 +76,7 @@ namespace MyNamespace
/// 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)
+ public virtual async System.Threading.Tasks.Task SyncCoatingJobStereoAsync(IssueJobToRestoDTO body, System.Threading.CancellationToken cancellationToken)
{
var client_ = _httpClient;
var disposeClient_ = false;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/ProxyIssueJobDto.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/ProxyIssueJobDto.cs
new file mode 100644
index 000000000..e60ffe8ba
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/proxy/ProxyIssueJobDto.cs
@@ -0,0 +1,103 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs.proxy;
+///
+/// 喷涂主表
+///
+public class IssueRequestFromRestoDTO
+{
+ public string RequestNumber { set; get; }
+ public List Jobs { set; get; }
+}
+///
+/// 立体库发给WMS明细
+///
+public class IssueJobFromRestoDetailDTO
+{
+ [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 IssueJobFromRestoDTO
+{
+ [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 IssueJobToRestoDTO
+{
+
+ [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 IssueJobToRestoDetailDTO
+{
+
+ [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; }
+
+}
+