Browse Source

Merge branch 'dev_DY_CC' of http://dev.ccwin-in.com:3000/BoXu.Zheng/WZC2 into dev_DY_CC

dev_DY_CC
郑勃旭 10 months ago
parent
commit
4fc2d81c1b
  1. BIN
      .vs/WZC2/v17/.wsuo
  2. 4
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/CallMtl/CallMtl.cs
  3. 8
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/CallMtl/CallMtlManager.cs
  4. 3
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/CallMtl/CallMtlDbContextModelCreatingExtensions.cs
  5. 58
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Client/WebApi.cs
  6. 12
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs
  7. 2
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingTaskIncomingBackgroundWorker.cs
  8. 20
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/appsettings.json
  9. 4
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/CallMtlReader.cs
  10. 2
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutConverter.cs
  11. 4
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/IssueJobs/AssembleIssueJobsController.cs
  12. 4
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/IssueJobs/CoatingIssueJobsController.cs
  13. 4
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/IssueJobs/InjectionIssueJobsController.cs
  14. 4
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/IssueJobs/KittingIssueJobsController.cs
  15. 12
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/IssueJobs/SparePartIssueJobsController.cs
  16. 22
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/tests/Class1.cs
  17. 6
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLineItems/ProductionLineItemAppService.cs
  18. 32
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs
  19. 38
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Commons/CommonHelper.cs
  20. 3
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ItemGuideBooks/ItemGuideBook.cs
  21. 123
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/SplitPackingRecManager.cs
  22. 4
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumIssueRequestType.cs
  23. 36
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ScrapNoteEventHandler.cs

BIN
.vs/WZC2/v17/.wsuo

Binary file not shown.

4
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/CallMtl/CallMtl.cs

@ -8,7 +8,7 @@ public class CallMtl : Entity
/// 序号 /// 序号
/// </summary> /// </summary>
[Key] [Key]
public string mesout_callmtl_id { get; set; } public long ID { get; set; }
/// <summary> /// <summary>
/// 物料 /// 物料
/// </summary> /// </summary>
@ -33,7 +33,7 @@ public class CallMtl : Entity
public override object[] GetKeys() public override object[] GetKeys()
{ {
return new object[] { mesout_callmtl_id }; return new object[] { ID };
} }
} }

8
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Mes/CallMtl/CallMtlManager.cs

@ -20,8 +20,8 @@ public class CallMtlManager : DomainService, ICallMtlManager
} }
public virtual async Task UpdateProcesseErrordListAsync(List<CallMtl> entities) public virtual async Task UpdateProcesseErrordListAsync(List<CallMtl> entities)
{ {
var ids = entities.Select(p => p.mesout_callmtl_id); var ids = entities.Select(p => p.ID);
var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_callmtl_id)).ConfigureAwait(false); var plans = await _repository.GetListAsync(p => ids.Contains(p.ID)).ConfigureAwait(false);
plans.ForEach(p => plans.ForEach(p =>
{ {
p.Yl1 = 2; p.Yl1 = 2;
@ -31,8 +31,8 @@ public class CallMtlManager : DomainService, ICallMtlManager
} }
public virtual async Task UpdateProcessedListAsync(List<CallMtl> entities) public virtual async Task UpdateProcessedListAsync(List<CallMtl> entities)
{ {
var ids = entities.Select(p => p.mesout_callmtl_id); var ids = entities.Select(p => p.ID);
var plans = await _repository.GetListAsync(p => ids.Contains(p.mesout_callmtl_id)).ConfigureAwait(false); var plans = await _repository.GetListAsync(p => ids.Contains(p.ID)).ConfigureAwait(false);
plans.ForEach(p => plans.ForEach(p =>
{ {
p.Yl1 = 1; p.Yl1 = 1;

3
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.EntityFrameworkCore.Fawtyg.Mes/CallMtl/CallMtlDbContextModelCreatingExtensions.cs

@ -15,7 +15,8 @@ public static class CallMtlDbContextModelCreatingExtensions
b.ConfigureByConvention(); b.ConfigureByConvention();
//Properties //Properties
b.Property(q => q.mesout_callmtl_id).HasMaxLength(20); // b.Property(q => q.ID).HasMaxLength(20);
b.Property(q => q.ID);
b.Property(q => q.mesout_callmtl_erpno).HasMaxLength(20); b.Property(q => q.mesout_callmtl_erpno).HasMaxLength(20);
b.Property(q => q.mesout_callmtl_loc).HasMaxLength(10); b.Property(q => q.mesout_callmtl_loc).HasMaxLength(10);
b.Property(q => q.mesout_callmtl_num).HasPrecision(10, 2); b.Property(q => q.mesout_callmtl_num).HasPrecision(10, 2);

58
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Client/WebApi.cs

@ -1,5 +1,3 @@
//---------------------- //----------------------
// <auto-generated> // <auto-generated>
// Generated using the NSwag toolchain v14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) // Generated using the NSwag toolchain v14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)
@ -72,7 +70,7 @@ namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming
/// </summary> /// </summary>
/// <returns>Success</returns> /// <returns>Success</returns>
/// <exception cref="ApiException">A server side error occurred.</exception> /// <exception cref="ApiException">A server side error occurred.</exception>
public virtual System.Threading.Tasks.Task<int> GetMacStaticAsync() public virtual System.Threading.Tasks.Task<ResultJson> GetMacStaticAsync()
{ {
return GetMacStaticAsync(System.Threading.CancellationToken.None); return GetMacStaticAsync(System.Threading.CancellationToken.None);
} }
@ -83,7 +81,7 @@ namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming
/// </summary> /// </summary>
/// <returns>Success</returns> /// <returns>Success</returns>
/// <exception cref="ApiException">A server side error occurred.</exception> /// <exception cref="ApiException">A server side error occurred.</exception>
public virtual async System.Threading.Tasks.Task<int> GetMacStaticAsync(System.Threading.CancellationToken cancellationToken) public virtual async System.Threading.Tasks.Task<ResultJson> GetMacStaticAsync(System.Threading.CancellationToken cancellationToken)
{ {
var client_ = _httpClient; var client_ = _httpClient;
var disposeClient_ = false; var disposeClient_ = false;
@ -98,8 +96,8 @@ namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming
var urlBuilder_ = new System.Text.StringBuilder(); var urlBuilder_ = new System.Text.StringBuilder();
if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl);
// Operation Path: "CargoState/GetMacStatic" // Operation Path: "CargoState/GetMacStatic"
urlBuilder_.Append("CargoState/GetMacStatic"); urlBuilder_.Append("api/CargoState/GetMacStatic");
//urlBuilder_.Append("CargoState/GetMacStatic");
PrepareRequest(client_, request_, urlBuilder_); PrepareRequest(client_, request_, urlBuilder_);
var url_ = urlBuilder_.ToString(); var url_ = urlBuilder_.ToString();
@ -125,7 +123,7 @@ namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming
var status_ = (int)response_.StatusCode; var status_ = (int)response_.StatusCode;
if (status_ == 200) if (status_ == 200)
{ {
var objectResponse_ = await ReadObjectResponseAsync<int>(response_, headers_, cancellationToken).ConfigureAwait(false); var objectResponse_ = await ReadObjectResponseAsync<ResultJson>(response_, headers_, cancellationToken).ConfigureAwait(false);
if (objectResponse_.Object == null) if (objectResponse_.Object == null)
{ {
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
@ -214,7 +212,7 @@ namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming
/// <returns>Success</returns> /// <returns>Success</returns>
/// <exception cref="ApiException">A server side error occurred.</exception> /// <exception cref="ApiException">A server side error occurred.</exception>
public virtual System.Threading.Tasks.Task<System.Collections.Generic.ICollection<ResponCargoItem>> GetCargoStaticAsync(string areaID) public virtual System.Threading.Tasks.Task<ResponCargos> GetCargoStaticAsync(string areaID)
{ {
return GetCargoStaticAsync(areaID, System.Threading.CancellationToken.None); return GetCargoStaticAsync(areaID, System.Threading.CancellationToken.None);
} }
@ -222,7 +220,7 @@ namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
/// <returns>Success</returns> /// <returns>Success</returns>
/// <exception cref="ApiException">A server side error occurred.</exception> /// <exception cref="ApiException">A server side error occurred.</exception>
public virtual async System.Threading.Tasks.Task<System.Collections.Generic.ICollection<ResponCargoItem>> GetCargoStaticAsync(string areaID, System.Threading.CancellationToken cancellationToken) public virtual async System.Threading.Tasks.Task<ResponCargos> GetCargoStaticAsync(string areaID, System.Threading.CancellationToken cancellationToken)
{ {
var client_ = _httpClient; var client_ = _httpClient;
var disposeClient_ = false; var disposeClient_ = false;
@ -269,7 +267,7 @@ namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming
var status_ = (int)response_.StatusCode; var status_ = (int)response_.StatusCode;
if (status_ == 200) if (status_ == 200)
{ {
var objectResponse_ = await ReadObjectResponseAsync<System.Collections.Generic.ICollection<ResponCargoItem>>(response_, headers_, cancellationToken).ConfigureAwait(false); var objectResponse_ = await ReadObjectResponseAsync<ResponCargos>(response_, headers_, cancellationToken).ConfigureAwait(false);
if (objectResponse_.Object == null) if (objectResponse_.Object == null)
{ {
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
@ -536,6 +534,7 @@ namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming
} }
public partial class ResponCargoItem1 public partial class ResponCargoItem1
{ {
/// <summary> /// <summary>
@ -572,6 +571,45 @@ namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class ResponCargos
{
[Newtonsoft.Json.JsonProperty("code", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public int Code { get; set; }
[Newtonsoft.Json.JsonProperty("value", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public int Value { get; set; }
[Newtonsoft.Json.JsonProperty("msg", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public string Msg { get; set; }
[Newtonsoft.Json.JsonProperty("datalist", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public System.Collections.Generic.ICollection<ResponCargoItem> Datalist { 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 ResultJson
{
[Newtonsoft.Json.JsonProperty("code", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public int Code { get; set; }
[Newtonsoft.Json.JsonProperty("value", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public int Value { get; set; }
[Newtonsoft.Json.JsonProperty("result", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public string Result { get; set; }
[Newtonsoft.Json.JsonProperty("msg", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public string Msg { get; set; }
[Newtonsoft.Json.JsonProperty("valuestr", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public string Valuestr { get; set; }
}
[System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] [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 partial class ApiException : System.Exception
{ {

12
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs

@ -76,7 +76,7 @@ public class InjectionMoldingRequestReader : IReader
Stopwatch sw = Stopwatch.StartNew(); Stopwatch sw = Stopwatch.StartNew();
Client client = new Client(_options.Value.AutoRemote.IpAddress, _httpClientFactory.CreateClient());//调用客户记录 Client client = new Client(_options.Value.AutoRemote.IpAddress, _httpClientFactory.CreateClient());//调用客户记录
var flag = await client.GetMacStaticAsync().ConfigureAwait(false); var flag = await client.GetMacStaticAsync().ConfigureAwait(false);
if (flag != 1) if (flag.Code != 200)
{ {
// 记录错误日志并返回空列表 // 记录错误日志并返回空列表
_logger.LogInformation($"读取到摄像头信息为不可用{DateTime.Now},请检查摄像头"); _logger.LogInformation($"读取到摄像头信息为不可用{DateTime.Now},请检查摄像头");
@ -94,7 +94,15 @@ public class InjectionMoldingRequestReader : IReader
{ {
foreach (var itm in ids)//遍历区域查找所有货物 foreach (var itm in ids)//遍历区域查找所有货物
{ {
var idsList = await client.GetCargoStaticAsync(itm).ConfigureAwait(false);
var obj= await client.GetCargoStaticAsync(itm).ConfigureAwait(false);
var idsList = obj.Datalist;
if (idsList == null)
{
_logger.LogInformation($"没有设置指定区域无数据");
return new List<IncomingFromExternal>();
}

2
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingTaskIncomingBackgroundWorker.cs

@ -58,7 +58,7 @@ public class InjectionMoldingTaskIncomingBackgroundWorker : AsyncPeriodicBackgro
return; return;
} }
} }
Logger.LogInformation($"注塑任务");//缴库 Logger.LogInformation($"注塑任务");//缴库
var reader = workerContext.ServiceProvider.GetService<InjectionMoldingRequestReader>(); var reader = workerContext.ServiceProvider.GetService<InjectionMoldingRequestReader>();
await reader.ReadAsync().ConfigureAwait(false); await reader.ReadAsync().ConfigureAwait(false);

20
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/appsettings.json

@ -1,8 +1,8 @@
{ {
"ConnectionStrings": { "ConnectionStrings": {
"Default": "Server=10.164.113.32,1818\\SHDB;Database=Wms_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True;Encrypt=false", "Default": "Server=dev.ccwin-in.com,13319;Database=WMS_DongYang_Main_CC;uid=ccwin-in;pwd=Microsoft@2022;TrustServerCertificate=True;Encrypt=false",
"DataExchange": "Server=10.164.113.32,1818\\SHDB;Database=Wms_DataExchange_Main_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True;Encrypt=false", "DataExchange": "Server=dev.ccwin-in.com,13319;Database=WMS_DongYang_DataExchange_CC;uid=ccwin-in;pwd=Microsoft@2022;TrustServerCertificate=True;Encrypt=false",
"MES": "Server=10.164.113.32,1818\\SHDB;Database=MES_SH;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True;Encrypt=false" "MES": "Server=10.164.233.7;Database=MES_JY;uid=sa;pwd=Asdf1234$;TrustServerCertificate=True;Encrypt=false"
}, },
"AuthServer": { "AuthServer": {
@ -27,10 +27,10 @@
"Inventory": { "Inventory": {
"BaseUrl": "http://localhost:59095/" "BaseUrl": "http://dev.ccwin-in.com:60082/"
}, },
"Job": { "Job": {
"BaseUrl": "http://localhost:59095/" "BaseUrl": "http://dev.ccwin-in.com:60085/"
}, },
"Label": { "Label": {
"BaseUrl": "http://dev.ccwin-in.com:60082/" "BaseUrl": "http://dev.ccwin-in.com:60082/"
@ -39,10 +39,10 @@
"BaseUrl": "http://dev.ccwin-in.com:60082/" "BaseUrl": "http://dev.ccwin-in.com:60082/"
}, },
"Store": { "Store": {
"BaseUrl": "http://localhost:59095/" "BaseUrl": "http://dev.ccwin-in.com:60085/"
}, },
"BaseData": { "BaseData": {
"BaseUrl": "http://localhost:59094/" "BaseUrl": "http://dev.ccwin-in.com:60084/"
} }
@ -67,7 +67,7 @@
"InjectionMoldingTaskOptions": { "InjectionMoldingTaskOptions": {
"AutoRemote": { "AutoRemote": {
"IpAddress": "http://10.164.227.103:30000/", "IpAddress": "http://dev.ccwin-in.com:60084/",
"UserName": "", "UserName": "",
"Password": "", "Password": "",
"Token": "", "Token": "",
@ -78,14 +78,14 @@
"IncomingOptions": { "IncomingOptions": {
"Active": true, "Active": true,
"PeriodSeconds": 10, "PeriodSeconds": 5,
"BatchSize": 10, "BatchSize": 10,
"MaxCount": 100, "MaxCount": 100,
"RetryTimes": 3 "RetryTimes": 3
}, },
"OutgoingOptions": { "OutgoingOptions": {
"Active": true, "Active": true,
"PeriodSeconds": 10, "PeriodSeconds": 5,
"BatchSize": 10, "BatchSize": 10,
"MaxCount": 100, "MaxCount": 100,
"RetryTimes": 3 "RetryTimes": 3

4
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/CallMtlReader.cs

@ -86,8 +86,8 @@ public class CallMtlReader : IReader
DataType = EnumIncomingDataType.CallMtl.ToString(), DataType = EnumIncomingDataType.CallMtl.ToString(),
DataAction = EnumExchangeDataAction.Add, DataAction = EnumExchangeDataAction.Add,
SourceSystem = EnumSystemType.MES.ToString(), SourceSystem = EnumSystemType.MES.ToString(),
SourceDataId = CallMtl.mesout_callmtl_id.ToString(), SourceDataId = CallMtl.ID.ToString(),
SourceDataGroupCode = CallMtl.mesout_callmtl_id, SourceDataGroupCode = CallMtl.ID.ToString(),
SourceDataDetailCode = CallMtl.mesout_callmtl_erpno, SourceDataDetailCode = CallMtl.mesout_callmtl_erpno,
SourceDataContent = JsonSerializer.Serialize(CallMtl), SourceDataContent = JsonSerializer.Serialize(CallMtl),
WriteTime = DateTime.Now, WriteTime = DateTime.Now,

2
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutConverter.cs

@ -105,7 +105,7 @@ public class MesOutConverter : IIncomingConverter
//} //}
//else //else
//{ //{
wmsProductReceiptNoteDetail.Lot = ""; //排序批次 wmsProductReceiptNoteDetail.Lot = ""; //排序批次
wmsProductReceiptNoteDetail.PackingCode = "";//箱标签 wmsProductReceiptNoteDetail.PackingCode = "";//箱标签
wmsProductReceiptNoteDetail.Status = EnumInventoryStatus.OK; wmsProductReceiptNoteDetail.Status = EnumInventoryStatus.OK;
wmsProductReceiptNoteDetail.WarehouseCode = "T9"; wmsProductReceiptNoteDetail.WarehouseCode = "T9";

4
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/IssueJobs/AssembleIssueJobsController.cs

@ -175,9 +175,9 @@ public class AssembleIssueJobsController : AbpController
// return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}"); // return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}");
//} //}
if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.AcceptUserId != CurrentUser.Id) if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.ClaimsUserId != CurrentUser.Id.ToString())
{ {
return new NotFoundObjectResult($"任务正在被 {jobDto.AcceptUserName} 处理"); return new NotFoundObjectResult($"任务正在被 {jobDto.ClaimsUserName} 处理");
} }
return jobDto; return jobDto;

4
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/IssueJobs/CoatingIssueJobsController.cs

@ -175,9 +175,9 @@ public class CoatingIssueJobsController : AbpController
// return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}"); // return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}");
//} //}
if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.AcceptUserId != CurrentUser.Id) if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.ClaimsUserId != CurrentUser.Id.ToString())
{ {
return new NotFoundObjectResult($"任务正在被 {jobDto.AcceptUserName} 处理"); return new NotFoundObjectResult($"任务正在被 {jobDto.ClaimsUserName} 处理");
} }
return jobDto; return jobDto;

4
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/IssueJobs/InjectionIssueJobsController.cs

@ -175,9 +175,9 @@ public class InjectionIssueJobsController : AbpController
// return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}"); // return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}");
//} //}
if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.AcceptUserId != CurrentUser.Id) if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.ClaimsUserId != CurrentUser.Id.ToString())
{ {
return new NotFoundObjectResult($"任务正在被 {jobDto.AcceptUserName} 处理"); return new NotFoundObjectResult($"任务正在被 {jobDto.ClaimsUserName} 处理");
} }
return jobDto; return jobDto;

4
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/IssueJobs/KittingIssueJobsController.cs

@ -175,9 +175,9 @@ public class KittingIssueJobsController : AbpController
// return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}"); // return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}");
//} //}
if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.AcceptUserId != CurrentUser.Id) if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.ClaimsUserId != CurrentUser.Id.ToString())
{ {
return new NotFoundObjectResult($"任务正在被 {jobDto.AcceptUserName} 处理"); return new NotFoundObjectResult($"任务正在被 {jobDto.ClaimsUserName} 处理");
} }
return jobDto; return jobDto;

12
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/IssueJobs/SparePartIssueJobsController.cs

@ -52,10 +52,10 @@ public class SparePartIssueJobsController : AbpController
{ {
status.Add((int)EnumJobStatus.Open); status.Add((int)EnumJobStatus.Open);
} }
else if (jobStatus == "Wait") //else if (jobStatus == "Wait")
{ //{
status.Add((int)EnumJobStatus.Wait); // status.Add((int)EnumJobStatus.Wait);
} //}
else else
{ {
status.Add((int)EnumJobStatus.Done); status.Add((int)EnumJobStatus.Done);
@ -174,9 +174,9 @@ public class SparePartIssueJobsController : AbpController
return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}"); return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}");
} }
if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.AcceptUserId != CurrentUser.Id) if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.ClaimsUserId != CurrentUser.Id.ToString())
{ {
return new NotFoundObjectResult($"任务正在被 {jobDto.AcceptUserName} 处理"); return new NotFoundObjectResult($"任务正在被 {jobDto.ClaimsUserName} 处理");
} }
return jobDto; return jobDto;

22
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/tests/Class1.cs

@ -15,7 +15,7 @@ public class ResponseJson
// 错误码: // 错误码:
public int Code { set; get; } = 0; public int Code { set; get; } = 0;
// 返回值 其具体含义由调用接口确定 // 返回值 其具体含义由调用接口确定
public string Value { set; get; } = ""; public int Value { set; get; } =0;
// 错误消息 // 错误消息
public string Msg { set; get; } = ""; public string Msg { set; get; } = "";
} }
@ -35,3 +35,23 @@ public class ResponCargoItem
[Display(Name = "货位状态")] [Display(Name = "货位状态")]
public int Flag { set; get; } = 0; public int Flag { set; get; } = 0;
} }
public class ResponCargos : ResponseJson
{
//货位状态列表
public List<ResponCargoItem> Datalist { set; get; }
}
public class ResultJson
{
// 错误码:
public int Code { set; get; } = 0;
// 返回值 其具体含义由调用接口确定
public int Value { set; get; } = 0;
// 错误消息
public string Result { set; get; } = "";
public string Msg { set; get; } = "";
public string Valuestr { set; get; }
}

6
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLineItems/ProductionLineItemAppService.cs

@ -126,9 +126,9 @@ public class ProductionLineItemAppService :
public virtual async Task<ProductionLineItemDTO> GetByProductLineCodeAndItemCodeAsync(string productLineCode, public virtual async Task<ProductionLineItemDTO> GetByProductLineCodeAndItemCodeAsync(string productLineCode,
string itemCode) string itemCode)
{ {
var entityList = await _repository var entity = await _repository
.FindAsync(p => p.ProdLineCode == productLineCode && p.ItemCode == itemCode).ConfigureAwait(false); .FirstOrDefaultAsync(p => p.ProdLineCode == productLineCode && p.ItemCode == itemCode).ConfigureAwait(false);
return ObjectMapper.Map<ProductionLineItem, ProductionLineItemDTO>(entityList); return ObjectMapper.Map<ProductionLineItem, ProductionLineItemDTO>(entity);
} }
[HttpPost("get-by-productlinecode-and-itemcode-and-erplocationcode-async")] [HttpPost("get-by-productlinecode-and-itemcode-and-erplocationcode-async")]
public virtual async Task<List<string>> GetByProductLineCodeAndItemCodeAndErpLocationCodeAsync(List<EnumLocationType> locationType, string erpLocationCodes,string itemCode) public virtual async Task<List<string>> GetByProductLineCodeAndItemCodeAndErpLocationCodeAsync(List<EnumLocationType> locationType, string erpLocationCodes,string itemCode)

32
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/test/TestAppService.cs

@ -40,9 +40,12 @@ public class TestService:ApplicationService
/// 生命周期操作 /// 生命周期操作
/// </summary> /// </summary>
[HttpPost("GetMacStatic")] [HttpPost("GetMacStatic")]
public async Task<int> GetMacStatic() public async Task<ResultJson> GetMacStatic()
{ {
return 1;
return new ResultJson() { Code = 200, Msg = "SUCESS", Value = 1 , Valuestr = "", Result = ""};
} }
@ -51,7 +54,7 @@ public class TestService:ApplicationService
/// <summary> /// <summary>
/// 异步开始生命周期操作不能堵塞 /// 异步开始生命周期操作不能堵塞
/// </summary> /// </summary>
public async Task<List<ResponCargoItem>> GetCargoStatic(string AreaID) public async Task<ResponCargos> GetCargoStatic(string AreaID)
{ {
List<ResponCargoItem> result = new List<ResponCargoItem>(); List<ResponCargoItem> result = new List<ResponCargoItem>();
@ -63,7 +66,14 @@ public class TestService:ApplicationService
result = result.Where(p => p.AreaID == AreaID).ToList(); result = result.Where(p => p.AreaID == AreaID).ToList();
return result;
var t = new ResponCargos();
t.Code = 200;
t.Msg = "Success";
t.Datalist = result;
return t;
} }
//[HttpPost("SyncIssueJobStereo")] //[HttpPost("SyncIssueJobStereo")]
@ -82,8 +92,18 @@ public class TestService:ApplicationService
//} //}
[HttpPost("GetCargoStatic1")]
/// <summary>
/// 异步开始生命周期操作不能堵塞
/// </summary>
public async Task<ResponCargos> GetCargoStatic1(ResponCargos p_cas)
{
return p_cas;
}
@ -93,7 +113,9 @@ public class TestService:ApplicationService
}
}
/// <summary> /// <summary>
/// 发给立体库主表 /// 发给立体库主表
/// </summary> /// </summary>

38
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Commons/CommonHelper.cs

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Linq.Expressions;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Newtonsoft.Json; using Newtonsoft.Json;
@ -36,5 +37,42 @@ public sealed class CommonHelper
return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
} }
} }
}
/// <summary>
/// Expression动态拼接+泛型缓存
/// </summary>
/// <typeparam name="TIn"></typeparam>
/// <typeparam name="TOut"></typeparam>
public class ExpressionGenericMapper<TIn, TOut>//Mapper`2
{
private static Func<TIn, TOut> _FUNC = null;
static ExpressionGenericMapper()
{
ParameterExpression parameterExpression = Expression.Parameter(typeof(TIn), "p");
List<MemberBinding> memberBindingList = new List<MemberBinding>();
foreach (var item in typeof(TOut).GetProperties())
{
MemberExpression property = Expression.Property(parameterExpression, typeof(TIn).GetProperty(item.Name));
MemberBinding memberBinding = Expression.Bind(item, property);
memberBindingList.Add(memberBinding);
}
foreach (var item in typeof(TOut).GetFields())
{
MemberExpression property = Expression.Field(parameterExpression, typeof(TIn).GetField(item.Name));
MemberBinding memberBinding = Expression.Bind(item, property);
memberBindingList.Add(memberBinding);
}
MemberInitExpression memberInitExpression = Expression.MemberInit(Expression.New(typeof(TOut)), memberBindingList.ToArray());
Expression<Func<TIn, TOut>> lambda = Expression.Lambda<Func<TIn, TOut>>(memberInitExpression, new ParameterExpression[]
{
parameterExpression
});
_FUNC = lambda.Compile();//拼装是一次性的
}
public static TOut Trans(TIn t)
{
return _FUNC(t);
}
} }

3
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ItemGuideBooks/ItemGuideBook.cs

@ -13,19 +13,16 @@ public class ItemGuideBook : SfsBaseDataAggregateRootBase
/// <summary> /// <summary>
/// 物品名称 /// 物品名称
/// </summary> /// </summary>
[IgnoreUpdate]
public string Name { get; set; } public string Name { get; set; }
/// <summary> /// <summary>
/// 物品描述1 /// 物品描述1
/// </summary> /// </summary>
[IgnoreUpdate]
public string Desc1 { get; set; } public string Desc1 { get; set; }
/// <summary> /// <summary>
/// 物品描述2 /// 物品描述2
/// </summary> /// </summary>
[IgnoreUpdate]
public string Desc2 { get; set; } public string Desc2 { get; set; }
/// <summary> /// <summary>

123
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/SplitPackingRecManager.cs

@ -25,9 +25,9 @@ public class SplitPackingRecManager : DomainService, ISplitPackingRecManager
public async Task<bool> BatchInsertAsync(List<SplitPackingRec> input) public async Task<bool> BatchInsertAsync(List<SplitPackingRec> input)
{ {
#region 校验
foreach (SplitPackingRec item in input) foreach (SplitPackingRec item in input)
{ {
#region 校验
if (item.OprType == OprTypeEnum.SplitBox || item.OprType == OprTypeEnum.MergeBox) //拆箱或合箱 if (item.OprType == OprTypeEnum.SplitBox || item.OprType == OprTypeEnum.MergeBox) //拆箱或合箱
{ {
if (item.FromPackingCode == item.ToPackingCode) if (item.FromPackingCode == item.ToPackingCode)
@ -42,18 +42,26 @@ public class SplitPackingRecManager : DomainService, ISplitPackingRecManager
throw new UserFriendlyException("操作类型不是拆箱或合箱状态,源箱码和目标箱码必须相同!"); throw new UserFriendlyException("操作类型不是拆箱或合箱状态,源箱码和目标箱码必须相同!");
} }
} }
#endregion
} }
#endregion
//缓存数据
var query = await _repository.GetQueryableAsync().ConfigureAwait(false); var query = await _repository.GetQueryableAsync().ConfigureAwait(false);
var fromPackCodeLst = input.Select(itm => itm.FromPackingCode).ToList();
var toPackCodeLst = input.Select(itm => itm.ToPackingCode).ToList();
var historyLst = await query.Where(itm => fromPackCodeLst.Contains(itm.ToPackingCode) && (itm.OprType == OprTypeEnum.SplitBox || itm.OprType == OprTypeEnum.MergeBox)).ToListAsync().ConfigureAwait(false); //取顶级箱码时用到
var hisLst2 = await query.Where(itm => fromPackCodeLst.Contains(itm.FromPackingCode)).ToListAsync().ConfigureAwait(false);
Dictionary<string, SplitPackingRec> hisLst3 = await query.Where(itm => toPackCodeLst.Contains(itm.FromPackingCode) && itm.OprType == OprTypeEnum.Other).ToDictionaryAsync(itm => itm.FromPackingCode, it2 => it2).ConfigureAwait(false);
//遍历、批量插入
List<SplitPackingRec> operLst = new List<SplitPackingRec>();
foreach (SplitPackingRec item in input) foreach (SplitPackingRec item in input)
{ {
if (item.OprType == OprTypeEnum.SplitBox || item.OprType == OprTypeEnum.MergeBox) if (item.OprType == OprTypeEnum.SplitBox || item.OprType == OprTypeEnum.MergeBox)
{ {
//设置顶级箱码 //设置顶级箱码
item.FromTopPackingCode = CalcuTopPackingCode(query, item.FromPackingCode); item.FromTopPackingCode = CalcuTopPackingCode(input, historyLst, item);
item.ToTopPackingCode = CalcuTopPackingCode(query, item.FromPackingCode); //ToPackingCode item.ToTopPackingCode = CalcuTopPackingCode(input, historyLst, item);
if (item.FromTopPackingCode.IsNullOrEmpty()) if (item.FromTopPackingCode.IsNullOrEmpty())
{ {
item.FromTopPackingCode = item.FromPackingCode; item.FromTopPackingCode = item.FromPackingCode;
@ -63,14 +71,12 @@ public class SplitPackingRecManager : DomainService, ISplitPackingRecManager
item.ToTopPackingCode = item.FromTopPackingCode; item.ToTopPackingCode = item.FromTopPackingCode;
} }
//设置六个单据号 //设置六个单据号
SetBillNumber(query, item); SetBillNumber(hisLst2, item);
//拆箱时,如果目标箱不存在,插入目标箱(两个箱码相同) //拆箱时,如果目标箱不存在,插入目标箱(两个箱码相同)
string toPackCode = item.ToPackingCode; if (hisLst3.ContainsKey(item.ToPackingCode) == false)
var toHis = await query.Where(itm => itm.FromPackingCode == toPackCode && itm.ToPackingCode == toPackCode).OrderBy(itm => itm.CreationTime).FirstOrDefaultAsync().ConfigureAwait(false);
if (toHis == null)
{ {
//SplitPackingRec newObj = CommonHelper.CloneObj(item);
SplitPackingRec newObj = CommonHelper.CloneObj(item); SplitPackingRec newObj = ExpressionGenericMapper<SplitPackingRec, SplitPackingRec>.Trans(item);
newObj.SetId(GuidGenerator.Create()); newObj.SetId(GuidGenerator.Create());
newObj.OprType = OprTypeEnum.Other; newObj.OprType = OprTypeEnum.Other;
newObj.FromPackingCode = newObj.ToPackingCode; //克隆赋值 newObj.FromPackingCode = newObj.ToPackingCode; //克隆赋值
@ -79,11 +85,20 @@ public class SplitPackingRecManager : DomainService, ISplitPackingRecManager
newObj.FromUom = newObj.ToUom; newObj.FromUom = newObj.ToUom;
newObj.FromQty = newObj.ToQty; newObj.FromQty = newObj.ToQty;
newObj.FromLot = newObj.ToLot; newObj.FromLot = newObj.ToLot;
var res = await _repository.InsertAsync(newObj, false).ConfigureAwait(false); //var res = await _repository.InsertAsync(newObj, false).ConfigureAwait(false);
operLst.Add(newObj);
} }
SplitPackingRec newEntity = CommonHelper.CloneObj(item); //var toHis = await query.Where(itm => itm.FromPackingCode == toPackCode && itm.ToPackingCode == toPackCode).OrderBy(itm => itm.CreationTime).FirstOrDefaultAsync().ConfigureAwait(false);
//if (toHis == null)
//{
//}
//SplitPackingRec newEntity = CommonHelper.CloneObj(item);
SplitPackingRec newEntity = ExpressionGenericMapper<SplitPackingRec, SplitPackingRec>.Trans(item);
newEntity.SetId(GuidGenerator.Create()); newEntity.SetId(GuidGenerator.Create());
var ret = await _repository.InsertAsync(newEntity, false).ConfigureAwait(false); // var ret = await _repository.InsertAsync(newEntity, false).ConfigureAwait(false);
operLst.Add(newEntity);
} }
else else
{ {
@ -95,11 +110,14 @@ public class SplitPackingRecManager : DomainService, ISplitPackingRecManager
{ {
item.ToTopPackingCode = item.FromPackingCode;// ToPackingCode; item.ToTopPackingCode = item.FromPackingCode;// ToPackingCode;
} }
SplitPackingRec newEntity = CommonHelper.CloneObj(item); //SplitPackingRec newEntity = CommonHelper.CloneObj(item);
SplitPackingRec newEntity = ExpressionGenericMapper<SplitPackingRec, SplitPackingRec>.Trans(item);
newEntity.SetId(GuidGenerator.Create()); newEntity.SetId(GuidGenerator.Create());
var ret = await _repository.InsertAsync(newEntity, false).ConfigureAwait(false); //var ret = await _repository.InsertAsync(newEntity, false).ConfigureAwait(false);
operLst.Add(newEntity);
} }
} //foreach } //foreach
await _repository.InsertManyAsync(operLst).ConfigureAwait(false);
return true; return true;
} }
@ -203,48 +221,71 @@ public class SplitPackingRecManager : DomainService, ISplitPackingRecManager
} }
/// <summary> /// <summary>
/// 取顶级箱码 /// 取顶级箱码
/// </summary> /// </summary>
/// <param name="historyQuery">箱码历史</param> /// <param name="memoryInput">本次操作要插入的拆箱记录列表,位于内存中</param>
/// <param name="packingCode">箱码,from to时都传入from</param> /// <param name="historyLst">数据库中的历史数据:拆箱或合箱、to箱码=内存中的from箱码</param>
/// <param name="curRecord">内存中当前记录</param>
/// <returns></returns> /// <returns></returns>
private static string CalcuTopPackingCode(IQueryable<SplitPackingRec> historyQuery, string packingCode) private static string CalcuTopPackingCode(List<SplitPackingRec> memoryInput, List<SplitPackingRec> historyLst, SplitPackingRec curRecord)
{ {
var qry = historyQuery.Where(itm => itm.OprType == OprTypeEnum.SplitBox || itm.OprType == OprTypeEnum.MergeBox); //根据当前记录在内存列表中递归取得最上级拆箱记录:1-2 2-3 3-4 根据3-4能取到1-2
string ret = null; SplitPackingRec priorMemoryRecord = curRecord;
SplitPackingRec? firstObj = null;
string toCode = packingCode;
while (1 == 1) while (1 == 1)
{ {
firstObj = qry.FirstOrDefault(itm => itm.ToPackingCode == toCode); var obj = memoryInput.FirstOrDefault(itm => itm.ToPackingCode == priorMemoryRecord.FromPackingCode);
if (firstObj == null) if (obj != null)
{ {
ret = toCode; priorMemoryRecord = obj;
break;
} }
else else
{ {
toCode = firstObj.FromPackingCode; break;
} }
} }
return ret; /*
//var historyRec = historyQuery.Where(itm => itm.FromPackingCode == packingCode).OrderBy(itm => itm.CreationTime).FirstOrDefault(); from箱码在数据库中取上级拆箱记录
//if (historyRec != null)
//{ 1-1
// return historyRec.FromTopPackingCode; 2-2
//} 1-2 to箱码=1=from箱码
//else 3-3
2-3 to箱码=21-2
4-4
3-4 to箱码=32-3
5-5
3-5 to箱码=32-3
*/
var hisObj = historyLst.FirstOrDefault(itm => itm.ToPackingCode == priorMemoryRecord.FromPackingCode);
if (hisObj != null)
{
return hisObj.FromTopPackingCode;
}
else
{
return priorMemoryRecord.FromPackingCode;
}
//var qry = historyLst.Where(itm => itm.OprType == OprTypeEnum.SplitBox || itm.OprType == OprTypeEnum.MergeBox);
//string ret = null;
//SplitPackingRec? firstObj = null;
//string toCode = priorRecord.FromPackingCode;
//while (1 == 1)
//{ //{
// historyRec = historyQuery.Where(itm => itm.ToPackingCode == packingCode).OrderBy(itm => itm.CreationTime).FirstOrDefault(); // firstObj = qry.FirstOrDefault(itm => itm.ToPackingCode == toCode);
// if (historyRec != null) // if (firstObj == null)
// {
// ret = toCode;
// break;
// }
// else
// { // {
// return historyRec.ToTopPackingCode; // toCode = firstObj.FromPackingCode;
// } // }
//} //}
//return null; //return ret;
} }
private static void SetBillNumber(IQueryable<SplitPackingRec> historyQuery, SplitPackingRec obj) private static void SetBillNumber(List<SplitPackingRec> historyQuery, SplitPackingRec obj)
{ {
var historyRec = historyQuery.Where(itm => itm.FromPackingCode == obj.FromPackingCode).OrderBy(itm => itm.CreationTime).FirstOrDefault(); var historyRec = historyQuery.Where(itm => itm.FromPackingCode == obj.FromPackingCode).OrderBy(itm => itm.CreationTime).FirstOrDefault();
if (historyRec != null) if (historyRec != null)

4
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumIssueRequestType.cs

@ -41,8 +41,8 @@ public enum EnumIssueRequestType
ExcelImport=5, ExcelImport=5,
/// <summary> /// <summary>
/// 注塑计划 /// 涂装上线计划
/// </summary> /// </summary>
[Display(Name = "EXCEL导入")] [Display(Name = "涂装上线计划")]
InjectionPlan = 6, InjectionPlan = 6,
} }

36
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ScrapNoteEventHandler.cs

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using DocumentFormat.OpenXml.Vml.Spreadsheet;
using Volo.Abp.EventBus; using Volo.Abp.EventBus;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
@ -40,31 +41,32 @@ public class ScrapNoteEventHandler
private async Task AddTransactionsAsync(List<ScrapNote> scrapNotes) private async Task AddTransactionsAsync(List<ScrapNote> scrapNotes)
{ {
var isScrapLocation = await SettingManager.IsTrueAsync(StoreSettings.Common.EnableScrapLocation).ConfigureAwait(false); //如果WMS管理报废库,生成报废库存转移(从HOLD库先转移到线边)
var holdLocation = await LocationAclService.GetFirstByTypeAsync(EnumLocationType.HOLD).ConfigureAwait(false); //隔离库位 var holdLocation = await LocationAclService.GetFirstByTypeAsync(EnumLocationType.HOLD).ConfigureAwait(false); //隔离库位
var transferLogs = new List<TransferLogEditInput>(); var transferLogs = new List<TransferLogEditInput>();
var transactions = new List<TransactionEditInput>(); var transactions = new List<TransactionEditInput>();//更新库存的事务
//如果WMS管理报废库,生成报废库存转移(从HOLD库先转移到线边) var emptyTransactions = new List<TransactionEditInput>();//不更新库存的事务
if (await SettingManager.IsTrueAsync(StoreSettings.Common.EnableScrapLocation).ConfigureAwait(false)) foreach (var scrapNote in scrapNotes)
{ {
foreach (var scrapNote in scrapNotes) if (isScrapLocation && scrapNote.Worker == "MES")//管理隔离库并且是mes接口来的从隔离库直接报废(但是要先移到线边)
{
transferLogs.AddRange(BuildTransferLogs(scrapNote, holdLocation));
emptyTransactions.AddRange(BuildTransactions(scrapNote));
}
else
{ {
if (await SettingManager.IsTrueAsync(StoreSettings.Common.EnableScrapLocation).ConfigureAwait(false))
{
transferLogs.AddRange(BuildTransferLogs(scrapNote, holdLocation));
}
transactions.AddRange(BuildTransactions(scrapNote)); transactions.AddRange(BuildTransactions(scrapNote));
} }
}
if (transferLogs.Count > 0)
{
//报废是库存世界变动是隔离库数量-1,但是增加了一个移库日志从Hold到线边,库存事务是三个,Hold库-1(移库),线边+1(移库),线边-1(报废) //报废是库存世界变动是隔离库数量-1,但是增加了一个移库日志从Hold到线边,库存事务是三个,Hold库-1(移库),线边+1(移库),线边-1(报废)
await TransferLogAppService.AddManyWithTransferAsync(transferLogs, transactions).ConfigureAwait(false); await TransferLogAppService.AddManyWithTransferAsync(transferLogs, emptyTransactions).ConfigureAwait(false);
await TransactionAppService.AddManyEmptyAsync(transactions).ConfigureAwait(false); await TransactionAppService.AddManyEmptyAsync(emptyTransactions).ConfigureAwait(false);
} }
else if (transactions.Count > 0)
{ {
foreach (var scrapNote in scrapNotes)
{
transactions.AddRange(BuildTransactions(scrapNote));
}
await TransactionAppService.AddManyAsync(transactions).ConfigureAwait(false); await TransactionAppService.AddManyAsync(transactions).ConfigureAwait(false);
} }
} }
@ -72,7 +74,7 @@ public class ScrapNoteEventHandler
private List<TransferLogEditInput> BuildTransferLogs(ScrapNote scrapNote, LocationDTO holdLocation) private List<TransferLogEditInput> BuildTransferLogs(ScrapNote scrapNote, LocationDTO holdLocation)
{ {
var transferLogs = new List<TransferLogEditInput>(); var transferLogs = new List<TransferLogEditInput>();
foreach (var detail in scrapNote.Details.Where(detail => detail.Qty != 0)) foreach (var detail in scrapNote.Details.Where(detail => detail.Qty != 0))
{ {
var transferLog = ObjectMapper.Map<ScrapNoteDetail, TransferLogEditInput>(detail); var transferLog = ObjectMapper.Map<ScrapNoteDetail, TransferLogEditInput>(detail);

Loading…
Cancel
Save