Browse Source

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

dev_DY_CC
lvzb 11 months ago
parent
commit
c74b6d56d8
  1. 38
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Client/WebApi.cs
  2. 130
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs
  3. 1
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.csproj
  4. 12
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/BaseDatas/SplitPackingRecController.cs
  5. 7
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs
  6. 2
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs
  7. 26
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SplitPackings/SplitPackingRecAppService.cs
  8. 38
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/AssembleIssueRequests/Inputs/AssembleIssueRequestImportInput.cs
  9. 36
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestImportInput.cs
  10. 38
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/Inputs/InjectionIssueRequestImportInput.cs
  11. 25
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/Inputs/KittingIssueRequestImportInput.cs
  12. 36
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/SparePartIssueRequests/Inputs/SparePartIssueRequestImportInput.cs
  13. 18
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs

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

@ -535,6 +535,44 @@ 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 ResponCargoItem1
{
/// <summary>
/// 读取次数
/// </summary>
[Newtonsoft.Json.JsonProperty("number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public string Number { get; set; }
/// <summary>
/// 区域ID
/// </summary>
[Newtonsoft.Json.JsonProperty("areaID", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public string AreaID { get; set; }
/// <summary>
/// 货位号
/// </summary>
[Newtonsoft.Json.JsonProperty("cargoID", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public string CargoID { get; set; }
/// <summary>
/// 零件号
/// </summary>
[Newtonsoft.Json.JsonProperty("partCode", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public string PartCode { get; set; }
/// <summary>
/// 货位状态
/// </summary>
[Newtonsoft.Json.JsonProperty("flag", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public int Flag { 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))")]

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

@ -23,6 +23,9 @@ using System.Net.NetworkInformation;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using System.Threading; using System.Threading;
using System.Diagnostics; using System.Diagnostics;
using System.Reflection;
using Microsoft.Extensions.Primitives;
using Win_in.Sfs.Shared.Application;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming; namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.Incoming;
public class InjectionMoldingRequestReader : IReader public class InjectionMoldingRequestReader : IReader
@ -67,55 +70,89 @@ public class InjectionMoldingRequestReader : IReader
#if DEBUG #if DEBUG
_options.Value.AutoRemote.TimeCycle = 1; _options.Value.AutoRemote.TimeCycle = 1;
_options.Value.AutoRemote.Interval = 2; _options.Value.AutoRemote.Interval = 2;
#endif #endif
// var sleepTime = (_options.Value.AutoRemote.TimeCycle*60/ _options.Value.AutoRemote.Interval)-10; // var sleepTime = (_options.Value.AutoRemote.TimeCycle*60/ _options.Value.AutoRemote.Interval)-10;
var invterval = _options.Value.AutoRemote.Interval; var invterval = _options.Value.AutoRemote.Interval;
var guid = DateTime.Now.ToString("yyyyMMddHHmmssfff"); var guid = DateTime.Now.ToString("yyyyMMddHHmmssfff");
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 != 1)
{ {
// 记录错误日志并返回空列表 // 记录错误日志并返回空列表
_logger.LogInformation($"读取到摄像头信息为不可用{DateTime.Now},请检查摄像头"); _logger.LogInformation($"读取到摄像头信息为不可用{DateTime.Now},请检查摄像头");
return new List<IncomingFromExternal>(); return new List<IncomingFromExternal>();
} }
if (string.IsNullOrEmpty(_options.Value.AutoRemote.AreaIDs)) if (string.IsNullOrEmpty(_options.Value.AutoRemote.AreaIDs))
{ {
_logger.LogInformation($"没有设置指定区域AutoRemote->AreaIDs"); _logger.LogInformation($"没有设置指定区域AutoRemote->AreaIDs");
return new List<IncomingFromExternal>(); return new List<IncomingFromExternal>();
} }
var ids = _options.Value.AutoRemote.AreaIDs.Split(","); var ids = _options.Value.AutoRemote.AreaIDs.Split(",");
List<ResponCargoItem> camralist = new List<ResponCargoItem>(); List<ResponCargoItem> camralist = new List<ResponCargoItem>();
List<ResponCargoItem1> camralist1 = new List<ResponCargoItem1>();
for (int i = 1; i <= invterval; i++) for (int i = 1; i <= invterval; i++)
{ {
foreach (var itm in ids)//遍历区域查找所有货物 foreach (var itm in ids)//遍历区域查找所有货物
{ {
var idsList = await client.GetCargoStaticAsync(itm).ConfigureAwait(false); var idsList = await client.GetCargoStaticAsync(itm).ConfigureAwait(false);
Thread.Sleep(1000);//设备读取50ms延时,设置延时时间为1000ms保证读取更新到信息
//flag 1-有货 0-空闲 //flag 1-有货 0-空闲
foreach (var respon in idsList.Where(r => r.Flag == 0))
{
var response = new ResponCargoItem1();
response.FromObject(respon);
response.Number = $"第{i.ToString()}次读取";
camralist1.Add(response);
}
camralist.AddRange(idsList.Where(r => r.Flag == 0)); camralist.AddRange(idsList.Where(r => r.Flag == 0));
} }
_logger.LogInformation($"读取标识{guid}读取成功次数{i},耗时 {sw.ElapsedMilliseconds}毫秒"); _logger.LogInformation($"读取标识{guid}读取成功次数{i},耗时 {sw.ElapsedMilliseconds}毫秒");
} }
_logger.LogInformation($"标识{guid}读取{invterval}次接口表:{System.Text.Json.JsonSerializer.Serialize(camralist1)}");
_logger.LogInformation(MakeGrid($"标识{guid}读取{invterval}次接口表",camralist1));
sw.Stop(); sw.Stop();
Thread.Sleep(1000);
//按区域、货位号、零件、标志 //按区域、货位号、零件、标志
var group= camralist.GroupBy(r => new { r.AreaID, r.CargoID, r.PartCode, r.Flag }); var group= camralist.GroupBy(r => new { r.AreaID, r.CargoID, r.PartCode, r.Flag });
//获取和次数相等的空闲数据 //获取和次数相等的空闲数据
var list = group.Where(r => r.Count() == invterval).ToList(); var list = group.Where(r => r.Count() == invterval).ToList();
var errorlist= group.Where(r => r.Count() != invterval).ToList();
if (errorlist.Count > 0)
{
_logger.LogInformation($"标识{guid}不能同步内容JSON:{System.Text.Json.JsonSerializer.Serialize(errorlist.Select(r => r.Key).ToList())}");
_logger.LogInformation(MakeGrid($"标识{guid}不能同步内容", errorlist));
}
//如果有货位空闲 //如果有货位空闲
if (list.Count>0) if (list.Count>0)
{ {
sw = Stopwatch.StartNew(); sw = Stopwatch.StartNew();
_logger.LogInformation($"开始标识{guid}同步WMS开始"); _logger.LogInformation($"开始标识{guid}同步WMS开始");
List<UnCompletedRequestDto> inputdetail = new List<UnCompletedRequestDto>(); List<UnCompletedRequestDto> inputdetail = new List<UnCompletedRequestDto>();
foreach (var item in list.Select(r=>r.Key).ToList()) foreach (var item in list.Select(r=>r.Key).ToList())
@ -137,11 +174,15 @@ public class InjectionMoldingRequestReader : IReader
select itm; select itm;
var injectionList = query.ToList();//已经完成的记录 var injectionList = query.ToList();//已经完成的记录
_logger.LogInformation($"标识{guid}同步WMS内容:{System.Text.Json.JsonSerializer.Serialize(injectionList)}");
_logger.LogInformation(MakeGrid($"{guid}同步WMS内容", injectionList));
foreach (var inject in injectionList) foreach (var inject in injectionList)
{ {
List<InjectionRequest> cameraList = new List<InjectionRequest>(); List<InjectionRequest> cameraList = new List<InjectionRequest>();
InjectionIssueRequestEditInput input = new InjectionIssueRequestEditInput(); InjectionIssueRequestEditInput input = new InjectionIssueRequestEditInput();
input.Worker = "Vision"; input.Worker = "Vision";
input.IssueRequestType = EnumIssueRequestType.Vision; input.IssueRequestType = EnumIssueRequestType.Vision;
@ -249,7 +290,7 @@ public class InjectionMoldingRequestReader : IReader
{ {
// 获取对应零件信息 // 获取对应零件信息
var itm = await _itemService.GetByCodeAsync(request.ItemCode).ConfigureAwait(false); var itm = await _itemService.GetByCodeAsync(request.ItemCode).ConfigureAwait(false);
if (itm == null) { errors.Add($"编号:{request.ItemCode}零件表中没找到!"); } if (itm == null) { errors.Add($"编号:{request.ItemCode}零件表中没找到,请维护零件表!"); }
else else
{ {
// 更新请求中的零件描述和名称 // 更新请求中的零件描述和名称
@ -260,7 +301,7 @@ public class InjectionMoldingRequestReader : IReader
} }
// 获取对应库位信息 // 获取对应库位信息
var loc = await _locService.GetByCodeAsync(request.ToLocationCode).ConfigureAwait(false); var loc = await _locService.GetByCodeAsync(request.ToLocationCode).ConfigureAwait(false);
if (loc == null) { errors.Add($"编号:{request.ToLocationCode}库位表中没找到!"); } if (loc == null) { errors.Add($"编号:{request.ToLocationCode}库位表中没找到,请维护库位表!"); }
else else
{ {
@ -357,6 +398,65 @@ public class InjectionMoldingRequestReader : IReader
public decimal Qty { get; set; } public decimal Qty { get; set; }
} }
private string MakeGrid<T>(string header,List<T> p_list) where T : class
{
StringBuilder sb = new StringBuilder();
sb.AppendLine(header);
int rows = p_list.Count;
var first = p_list.First();
var properties = first.GetType().GetProperties();
int columns = properties.Length;
var columNames = first.GetType().GetProperties().ToList().Select(p => p.Name).ToList();
int cellWidth = 20; // 每个单元格的宽度
List<string> contents = new List<string>();
for (int i = 0; i < rows; i++)
{
var row = p_list[i];
foreach (PropertyInfo property in properties)
{
// 使用反射获取属性值
contents.Add(property.GetValue(row).ToString());
}
}
// 输出列头
for (int j = 0; j < columns; j++)
{
sb.Append("|");
sb.Append(FormatCell(columNames[j], cellWidth));
}
sb.Append("|");
sb.AppendLine();
// 输出列头分隔线
for (int k = 0; k < columns * (cellWidth + 1) + 1; k++)
{
sb.Append("-");
}
sb.AppendLine();
// 输出网格内容
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
sb.Append("|");
sb.Append(FormatCell(contents[i * columns + j], cellWidth));
}
sb.Append("|");
sb.AppendLine();
}
return sb.ToString();
}
@ -367,4 +467,10 @@ public class InjectionMoldingRequestReader : IReader
private string FormatCell(object value, int width)
{
return value.ToString().PadLeft(width);
}
} }

1
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.csproj

@ -12,6 +12,7 @@
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.*" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.*" />
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="6.0.12" /> <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="6.0.12" />
<PackageReference Include="Serilog.Sinks.MSSqlServer" Version="6.3.0" /> <PackageReference Include="Serilog.Sinks.MSSqlServer" Version="6.3.0" />
<PackageReference Include="Spectre.Console" Version="0.49.1" />
<PackageReference Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="5.3.5" /> <PackageReference Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="5.3.5" />
<PackageReference Include="Volo.Abp.BackgroundJobs" Version="5.3.5" /> <PackageReference Include="Volo.Abp.BackgroundJobs" Version="5.3.5" />
<PackageReference Include="Volo.Abp.BackgroundWorkers" Version="5.3.5" /> <PackageReference Include="Volo.Abp.BackgroundWorkers" Version="5.3.5" />

12
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/BaseDatas/SplitPackingRecController.cs

@ -51,4 +51,16 @@ public class SplitPackingRecController : AbpController
{ {
return await _splitPackingRecApp.GetSplitPackingCode(toPackingCode).ConfigureAwait(false); return await _splitPackingRecApp.GetSplitPackingCode(toPackingCode).ConfigureAwait(false);
} }
/// <summary>
/// 根据to箱码取所有具有相同箱码的拆箱记录
/// </summary>
/// <param name="toPackingCode"></param>
/// <returns></returns>
[HttpGet("get-same-ponumber-list-by-topackingcode")]
public async Task<List<SplitPackingRecDTO>> GetSamePoNumberListByToPackingCode(string toPackingCode)
{
return await _splitPackingRecApp.GetSamePoNumberListByToPackingCode(toPackingCode).ConfigureAwait(false);
}
} }

7
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs

@ -29,4 +29,11 @@ public interface ISplitPackingRecAppService
Task<SplitPackingRecDTO> GetTopPackingCode(string toPackingCode); Task<SplitPackingRecDTO> GetTopPackingCode(string toPackingCode);
Task<SplitPackingRecDTO> GetSplitPackingCode(string toPackingCode); Task<SplitPackingRecDTO> GetSplitPackingCode(string toPackingCode);
Task<List<SplitPackingRecDTO>> GetFirstOrDefaultPackingCode(List<string> toPackingCodeList); Task<List<SplitPackingRecDTO>> GetFirstOrDefaultPackingCode(List<string> toPackingCodeList);
/// <summary>
/// 根据to箱码取所有具有相同箱码的拆箱记录
/// </summary>
/// <param name="toPackingCode"></param>
/// <returns></returns>
Task<List<SplitPackingRecDTO>> GetSamePoNumberListByToPackingCode(string toPackingCode);
} }

2
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs

@ -64,7 +64,7 @@ public class ProductionLineAppService
var entity = await _repository.FirstOrDefaultAsync(p => p.LocationCode == locationCode).ConfigureAwait(false); var entity = await _repository.FirstOrDefaultAsync(p => p.LocationCode == locationCode).ConfigureAwait(false);
if (entity == null) if (entity == null)
{ {
throw new UserFriendlyException($"【{locationCode}】库位不存在"); throw new UserFriendlyException($"生产线表中【{locationCode}】库位不存在");
} }
return ObjectMapper.Map<ProductionLine, ProductionLineDTO>(entity); return ObjectMapper.Map<ProductionLine, ProductionLineDTO>(entity);

26
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SplitPackings/SplitPackingRecAppService.cs

@ -6,6 +6,8 @@ using Volo.Abp.Caching;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared; using Win_in.Sfs.Basedata.Domain.Shared;
using System.Linq;
using Volo.Abp;
namespace Win_in.Sfs.Basedata.Application; namespace Win_in.Sfs.Basedata.Application;
@ -101,5 +103,29 @@ public class SplitPackingRecAppService :
return ret; return ret;
} }
/// <summary>
/// 根据to箱码取所有具有相同箱码的拆箱记录
/// </summary>
/// <param name="toPackingCode"></param>
/// <returns></returns>
[HttpGet("get-same-ponumber-list-by-topackingcode")]
public async Task<List<SplitPackingRecDTO>> GetSamePoNumberListByToPackingCode(string toPackingCode)
{
List<SplitPackingRecDTO> ret = new List<SplitPackingRecDTO>();
var entity = await _splitPackingRecManager.GetTopPackingCode(toPackingCode).ConfigureAwait(false);
if (entity == null)
{
return ret;
}
if (entity.PurchaseInfo_PoNumber.IsNullOrEmpty2())
{
throw new UserFriendlyException($"PurchaseInfo_PoNumber不能为空,to箱码:{toPackingCode}");
}
var lst = await Repository.GetListAsync(itm => itm.PurchaseInfo_PoNumber == entity.PurchaseInfo_PoNumber).ConfigureAwait(false);
ret = ObjectMapper.Map<List<SplitPackingRec>, List<SplitPackingRecDTO>>(lst);
return ret;
}
} }

38
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/AssembleIssueRequests/Inputs/AssembleIssueRequestImportInput.cs

@ -1,50 +1,34 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
[Display(Name = "叫料申请导入")] [Display(Name = "装配叫料申请导入")]
public class AssembleIssueRequestImportInput : SfsStoreImportInputBase public class AssembleIssueRequestImportInput : SfsStoreImportInputBase
{ {
/// <summary> #region 目标库位信息
/// 叫料类型
/// </summary>
[Display(Name = "叫料类型")]
public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 物品代码 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "物品代码")] [Display(Name = "物品代码")]
[Required]
public string ItemCode { get; set; } public string ItemCode { get; set; }
/// <summary> /// <summary>
/// 目标库位 /// 需求数量
/// </summary>
[Display(Name = "目标库位")]
[Required]
public string ToLocationCode { get; set; }
/// <summary>
/// 来源库区
/// </summary> /// </summary>
[Display(Name = "调出库区")] [Display(Name = "需求数量")]
[Required]
public string FromLocationArea { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
[Required(ErrorMessage = "{0}是必填项")]
public decimal Qty { get; set; } public decimal Qty { get; set; }
/// <summary> /// <summary>
/// 备注 /// 目标库位
/// </summary> /// </summary>
[Display(Name = "备注")] [Display(Name = "目标库位")]
public string Remark { get; set; } [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLocationCode { get; set; }
#endregion
} }

36
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestImportInput.cs

@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
@ -8,43 +9,26 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
[Display(Name = "喷涂叫料申请导入")] [Display(Name = "喷涂叫料申请导入")]
public class CoatingIssueRequestImportInput : SfsStoreImportInputBase public class CoatingIssueRequestImportInput : SfsStoreImportInputBase
{ {
/// <summary> #region 目标库位信息
/// 叫料类型
/// </summary>
[Display(Name = "叫料类型")]
public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 物品代码 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "物品代码")] [Display(Name = "物品代码")]
[Required]
public string ItemCode { get; set; } public string ItemCode { get; set; }
/// <summary> /// <summary>
/// 目标库位 /// 需求数量
/// </summary>
[Display(Name = "目标库位")]
[Required]
public string ToLocationCode { get; set; }
/// <summary>
/// 来源库区
/// </summary> /// </summary>
[Display(Name = "调出库区")] [Display(Name = "需求数量")]
[Required]
public string FromLocationArea { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
[Required(ErrorMessage = "{0}是必填项")]
public decimal Qty { get; set; } public decimal Qty { get; set; }
/// <summary> /// <summary>
/// 备注 /// 目标库位
/// </summary> /// </summary>
[Display(Name = "备注")] [Display(Name = "目标库位")]
public string Remark { get; set; } [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLocationCode { get; set; }
#endregion
} }

38
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/Inputs/InjectionIssueRequestImportInput.cs

@ -1,50 +1,34 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
[Display(Name = "叫料申请")] [Display(Name = "注塑叫料申请导入")]
public class InjectionIssueRequestImportInput : SfsStoreImportInputBase public class InjectionIssueRequestImportInput : SfsStoreImportInputBase
{ {
/// <summary> #region 目标库位信息
/// 叫料类型
/// </summary>
[Display(Name = "叫料类型")]
public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 物品代码 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "物品代码")] [Display(Name = "物品代码")]
[Required]
public string ItemCode { get; set; } public string ItemCode { get; set; }
/// <summary> /// <summary>
/// 目标库位 /// 需求数量
/// </summary>
[Display(Name = "目标库位")]
[Required]
public string ToLocationCode { get; set; }
/// <summary>
/// 来源库区
/// </summary> /// </summary>
[Display(Name = "调出库区")] [Display(Name = "需求数量")]
[Required]
public string FromLocationArea { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
[Required(ErrorMessage = "{0}是必填项")]
public decimal Qty { get; set; } public decimal Qty { get; set; }
/// <summary> /// <summary>
/// 备注 /// 目标库位
/// </summary> /// </summary>
[Display(Name = "备注")] [Display(Name = "目标库位")]
public string Remark { get; set; } [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLocationCode { get; set; }
#endregion
} }

25
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/Inputs/KittingIssueRequestImportInput.cs

@ -7,22 +7,14 @@ using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
[Display(Name = "Kitting叫料申请")] [Display(Name = "Kitting叫料申请导入")]
public class KittingIssueRequestImportInput : SfsStoreImportInputBase public class KittingIssueRequestImportInput : SfsStoreImportInputBase
{ {
[Display(Name = "序号")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
[Key]
public string Number { get; set; }
#region 目标库位信息
/// <summary> /// <summary>
/// 目标库位 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "目标库位")] [Display(Name = "物品代码")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public string ItemCode { get; set; }
public string ToLocationCode { get; set; }
/// <summary> /// <summary>
/// 需求数量 /// 需求数量
@ -31,10 +23,9 @@ public class KittingIssueRequestImportInput : SfsStoreImportInputBase
public decimal Qty { get; set; } public decimal Qty { get; set; }
/// <summary> /// <summary>
/// 物品代码 /// 目标库位
/// </summary> /// </summary>
[Display(Name = "物品代码")] [Display(Name = "目标库位")]
public string ItemCode { get; set; } [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLocationCode { get; set; }
#endregion
} }

36
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/SparePartIssueRequests/Inputs/SparePartIssueRequestImportInput.cs

@ -1,50 +1,30 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
[Display(Name = "叫料申请")] [Display(Name = "备料叫料申请导入")]
public class SparePartIssueRequestImportInput : SfsStoreImportInputBase public class SparePartIssueRequestImportInput : SfsStoreImportInputBase
{ {
/// <summary>
/// 叫料类型
/// </summary>
[Display(Name = "叫料类型")]
public EnumIssueRequestType IssueRequestType { get; set; }
/// <summary> /// <summary>
/// 物品代码 /// 物品代码
/// </summary> /// </summary>
[Display(Name = "物品代码")] [Display(Name = "物品代码")]
[Required]
public string ItemCode { get; set; } public string ItemCode { get; set; }
/// <summary> /// <summary>
/// 目标库位 /// 需求数量
/// </summary> /// </summary>
[Display(Name = "目标库位")] [Display(Name = "需求数量")]
[Required]
public string ToLocationCode { get; set; }
/// <summary>
/// 来源库区
/// </summary>
[Display(Name = "调出库区")]
[Required]
public string FromLocationArea { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
[Required(ErrorMessage = "{0}是必填项")]
public decimal Qty { get; set; } public decimal Qty { get; set; }
/// <summary> /// <summary>
/// 备注 /// 目标库位
/// </summary> /// </summary>
[Display(Name = "备注")] [Display(Name = "目标库位")]
public string Remark { get; set; } [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLocationCode { get; set; }
} }

18
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs

@ -5,6 +5,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
@ -69,13 +70,22 @@ public class PurchaseReceiptRequestAppService :
public virtual async Task<PurchaseReceiptRequestDetailDTO> GetDetailByItemAndPackingAsync(string itemCode, public virtual async Task<PurchaseReceiptRequestDetailDTO> GetDetailByItemAndPackingAsync(string itemCode,
string packingCode) string packingCode)
{ {
var entity = (await _repository.GetListAsync(p => p.Details.Any(y => y.ItemCode == itemCode && y.PackingCode == packingCode), true).ConfigureAwait(false)).FirstOrDefault(); var entitysList = (await _repository.GetListAsync(p => p.Details.Any(y => y.ItemCode == itemCode && y.PackingCode == packingCode), true).ConfigureAwait(false));
var detail = entity.Details.FirstOrDefault(y => y.ItemCode == itemCode && y.PackingCode == packingCode); if (entitysList != null && entitysList.Any())
{
var entity = entitysList.FirstOrDefault();
var dto = ObjectMapper.Map<PurchaseReceiptRequestDetail, PurchaseReceiptRequestDetailDTO>(detail); var detail = entity.Details.FirstOrDefault(y => y.ItemCode == itemCode && y.PackingCode == packingCode);
return dto; var dto = ObjectMapper.Map<PurchaseReceiptRequestDetail, PurchaseReceiptRequestDetailDTO>(detail);
return dto;
}
else
{
throw new UserFriendlyException("未在到货通知中找到该箱码信息");
}
} }
#endregion #endregion

Loading…
Cancel
Save