diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Client/WebApi.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Client/WebApi.cs
index 028ad78ac..5b264c20c 100644
--- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Client/WebApi.cs
+++ b/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
+ {
+
+ ///
+ /// 读取次数
+ ///
+ [Newtonsoft.Json.JsonProperty("number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
+ public string Number { get; set; }
+
+ ///
+ /// 区域ID
+ ///
+ [Newtonsoft.Json.JsonProperty("areaID", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
+ public string AreaID { get; set; }
+
+ ///
+ /// 货位号
+ ///
+ [Newtonsoft.Json.JsonProperty("cargoID", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
+ public string CargoID { get; set; }
+
+ ///
+ /// 零件号
+ ///
+ [Newtonsoft.Json.JsonProperty("partCode", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
+ public string PartCode { get; set; }
+
+ ///
+ /// 货位状态
+ ///
+ [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))")]
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs
index c45c85c27..47335b81c 100644
--- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Incoming/InjectionMoldingRequestReader.cs
+++ b/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 System.Threading;
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;
public class InjectionMoldingRequestReader : IReader
@@ -67,55 +70,89 @@ public class InjectionMoldingRequestReader : IReader
#if DEBUG
_options.Value.AutoRemote.TimeCycle = 1;
_options.Value.AutoRemote.Interval = 2;
-
#endif
// var sleepTime = (_options.Value.AutoRemote.TimeCycle*60/ _options.Value.AutoRemote.Interval)-10;
var invterval = _options.Value.AutoRemote.Interval;
-
var guid = DateTime.Now.ToString("yyyyMMddHHmmssfff");
-
-
-
Stopwatch sw = Stopwatch.StartNew();
-
Client client = new Client(_options.Value.AutoRemote.IpAddress, _httpClientFactory.CreateClient());//调用客户记录
-
var flag = await client.GetMacStaticAsync().ConfigureAwait(false);
+
+
if (flag != 1)
{
// 记录错误日志并返回空列表
_logger.LogInformation($"读取到摄像头信息为不可用{DateTime.Now},请检查摄像头");
+
return new List();
}
if (string.IsNullOrEmpty(_options.Value.AutoRemote.AreaIDs))
{
_logger.LogInformation($"没有设置指定区域AutoRemote->AreaIDs");
+
+
return new List();
}
var ids = _options.Value.AutoRemote.AreaIDs.Split(",");
List camralist = new List();
+ List camralist1 = new List();
for (int i = 1; i <= invterval; i++)
{
foreach (var itm in ids)//遍历区域查找所有货物
{
var idsList = await client.GetCargoStaticAsync(itm).ConfigureAwait(false);
+
+
+ Thread.Sleep(1000);//设备读取50ms延时,设置延时时间为1000ms保证读取更新到信息
//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));
}
+
_logger.LogInformation($"读取标识{guid}读取成功次数{i},耗时 {sw.ElapsedMilliseconds}毫秒");
}
+ _logger.LogInformation($"标识{guid}读取{invterval}次接口表:{System.Text.Json.JsonSerializer.Serialize(camralist1)}");
+
+
+ _logger.LogInformation(MakeGrid($"标识{guid}读取{invterval}次接口表",camralist1));
+
+
+
+
+
+
+
+
+
+
+
sw.Stop();
- Thread.Sleep(1000);
+
//按区域、货位号、零件、标志
var group= camralist.GroupBy(r => new { r.AreaID, r.CargoID, r.PartCode, r.Flag });
//获取和次数相等的空闲数据
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)
{
-
- sw = Stopwatch.StartNew();
+ sw = Stopwatch.StartNew();
_logger.LogInformation($"开始标识{guid}同步WMS开始");
List inputdetail = new List();
foreach (var item in list.Select(r=>r.Key).ToList())
@@ -137,11 +174,15 @@ public class InjectionMoldingRequestReader : IReader
select itm;
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)
{
List cameraList = new List();
-
InjectionIssueRequestEditInput input = new InjectionIssueRequestEditInput();
input.Worker = "Vision";
input.IssueRequestType = EnumIssueRequestType.Vision;
@@ -249,7 +290,7 @@ public class InjectionMoldingRequestReader : IReader
{
// 获取对应零件信息
var itm = await _itemService.GetByCodeAsync(request.ItemCode).ConfigureAwait(false);
- if (itm == null) { errors.Add($"编号:{request.ItemCode}零件表中没找到!"); }
+ if (itm == null) { errors.Add($"编号:{request.ItemCode}零件表中没找到,请维护零件表!"); }
else
{
// 更新请求中的零件描述和名称
@@ -260,7 +301,7 @@ public class InjectionMoldingRequestReader : IReader
}
// 获取对应库位信息
var loc = await _locService.GetByCodeAsync(request.ToLocationCode).ConfigureAwait(false);
- if (loc == null) { errors.Add($"编号:{request.ToLocationCode}库位表中没找到!"); }
+ if (loc == null) { errors.Add($"编号:{request.ToLocationCode}库位表中没找到,请维护库位表!"); }
else
{
@@ -357,14 +398,79 @@ public class InjectionMoldingRequestReader : IReader
public decimal Qty { get; set; }
}
+ private string MakeGrid(string header,List 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 contents = new List();
+ 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();
+
+ }
+
+
+
+
+
+
+
+
+
+
+ private string FormatCell(object value, int width)
+ {
+ return value.ToString().PadLeft(width);
+ }
}
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.csproj b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.csproj
index 58f34a399..8006c4dfa 100644
--- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.csproj
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent/Win_in.Sfs.Wms.DataExchange.Fawtyg.InjectionMoldingTaskAgent.csproj
@@ -12,6 +12,7 @@
+
diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/BaseDatas/SplitPackingRecController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/BaseDatas/SplitPackingRecController.cs
index d02f1f80f..ac4e65b16 100644
--- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/BaseDatas/SplitPackingRecController.cs
+++ b/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);
}
+
+ ///
+ /// 根据to箱码取所有具有相同箱码的拆箱记录
+ ///
+ ///
+ ///
+ [HttpGet("get-same-ponumber-list-by-topackingcode")]
+ public async Task> GetSamePoNumberListByToPackingCode(string toPackingCode)
+ {
+ return await _splitPackingRecApp.GetSamePoNumberListByToPackingCode(toPackingCode).ConfigureAwait(false);
+ }
+
}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs
index 2fe7efc27..6a283da3b 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs
@@ -29,4 +29,11 @@ public interface ISplitPackingRecAppService
Task GetTopPackingCode(string toPackingCode);
Task GetSplitPackingCode(string toPackingCode);
Task> GetFirstOrDefaultPackingCode(List toPackingCodeList);
+
+ ///
+ /// 根据to箱码取所有具有相同箱码的拆箱记录
+ ///
+ ///
+ ///
+ Task> GetSamePoNumberListByToPackingCode(string toPackingCode);
}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs
index 504aef6c8..b51e7924e 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs
+++ b/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);
if (entity == null)
{
- throw new UserFriendlyException($"【{locationCode}】库位不存在");
+ throw new UserFriendlyException($"生产线表中【{locationCode}】库位不存在");
}
return ObjectMapper.Map(entity);
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SplitPackings/SplitPackingRecAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SplitPackings/SplitPackingRecAppService.cs
index d6545a3e2..a9eb98bd0 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SplitPackings/SplitPackingRecAppService.cs
+++ b/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.Domain;
using Win_in.Sfs.Basedata.Domain.Shared;
+using System.Linq;
+using Volo.Abp;
namespace Win_in.Sfs.Basedata.Application;
@@ -101,5 +103,29 @@ public class SplitPackingRecAppService :
return ret;
}
+ ///
+ /// 根据to箱码取所有具有相同箱码的拆箱记录
+ ///
+ ///
+ ///
+ [HttpGet("get-same-ponumber-list-by-topackingcode")]
+ public async Task> GetSamePoNumberListByToPackingCode(string toPackingCode)
+ {
+ List ret = new List();
+ 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>(lst);
+ return ret;
+ }
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/AssembleIssueRequests/Inputs/AssembleIssueRequestImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/AssembleIssueRequests/Inputs/AssembleIssueRequestImportInput.cs
index 27fb71914..ae16fb995 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/AssembleIssueRequests/Inputs/AssembleIssueRequestImportInput.cs
+++ b/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 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.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-[Display(Name = "叫料申请导入")]
+[Display(Name = "装配叫料申请导入")]
public class AssembleIssueRequestImportInput : SfsStoreImportInputBase
{
- ///
- /// 叫料类型
- ///
- [Display(Name = "叫料类型")]
- public EnumIssueRequestType IssueRequestType { get; set; }
+ #region 目标库位信息
///
/// 物品代码
///
[Display(Name = "物品代码")]
- [Required]
public string ItemCode { get; set; }
///
- /// 目标库位
- ///
- [Display(Name = "目标库位")]
- [Required]
- public string ToLocationCode { get; set; }
-
- ///
- /// 来源库区
+ /// 需求数量
///
- [Display(Name = "调出库区")]
- [Required]
- public string FromLocationArea { get; set; }
-
- ///
- /// 数量
- ///
- [Display(Name = "数量")]
- [Required(ErrorMessage = "{0}是必填项")]
+ [Display(Name = "需求数量")]
public decimal Qty { get; set; }
///
- /// 备注
+ /// 目标库位
///
- [Display(Name = "备注")]
- public string Remark { get; set; }
+ [Display(Name = "目标库位")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string ToLocationCode { get; set; }
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestImportInput.cs
index e96fc3f72..bd527e15c 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestImportInput.cs
+++ b/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 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.Enums.Store;
@@ -8,43 +9,26 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
[Display(Name = "喷涂叫料申请导入")]
public class CoatingIssueRequestImportInput : SfsStoreImportInputBase
{
- ///
- /// 叫料类型
- ///
- [Display(Name = "叫料类型")]
- public EnumIssueRequestType IssueRequestType { get; set; }
+ #region 目标库位信息
///
/// 物品代码
///
[Display(Name = "物品代码")]
- [Required]
public string ItemCode { get; set; }
///
- /// 目标库位
- ///
- [Display(Name = "目标库位")]
- [Required]
- public string ToLocationCode { get; set; }
-
- ///
- /// 来源库区
+ /// 需求数量
///
- [Display(Name = "调出库区")]
- [Required]
- public string FromLocationArea { get; set; }
-
- ///
- /// 数量
- ///
- [Display(Name = "数量")]
- [Required(ErrorMessage = "{0}是必填项")]
+ [Display(Name = "需求数量")]
public decimal Qty { get; set; }
///
- /// 备注
+ /// 目标库位
///
- [Display(Name = "备注")]
- public string Remark { get; set; }
+ [Display(Name = "目标库位")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string ToLocationCode { get; set; }
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/Inputs/InjectionIssueRequestImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/Inputs/InjectionIssueRequestImportInput.cs
index f1258f55d..4a205e217 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/InjectionIssueRequests/Inputs/InjectionIssueRequestImportInput.cs
+++ b/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 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.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-[Display(Name = "叫料申请")]
+[Display(Name = "注塑叫料申请导入")]
public class InjectionIssueRequestImportInput : SfsStoreImportInputBase
{
- ///
- /// 叫料类型
- ///
- [Display(Name = "叫料类型")]
- public EnumIssueRequestType IssueRequestType { get; set; }
+ #region 目标库位信息
///
/// 物品代码
///
[Display(Name = "物品代码")]
- [Required]
public string ItemCode { get; set; }
///
- /// 目标库位
- ///
- [Display(Name = "目标库位")]
- [Required]
- public string ToLocationCode { get; set; }
-
- ///
- /// 来源库区
+ /// 需求数量
///
- [Display(Name = "调出库区")]
- [Required]
- public string FromLocationArea { get; set; }
-
- ///
- /// 数量
- ///
- [Display(Name = "数量")]
- [Required(ErrorMessage = "{0}是必填项")]
+ [Display(Name = "需求数量")]
public decimal Qty { get; set; }
///
- /// 备注
+ /// 目标库位
///
- [Display(Name = "备注")]
- public string Remark { get; set; }
+ [Display(Name = "目标库位")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string ToLocationCode { get; set; }
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/Inputs/KittingIssueRequestImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/Inputs/KittingIssueRequestImportInput.cs
index 18d0f0447..fac195b93 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/KittingIssueRequests/Inputs/KittingIssueRequestImportInput.cs
+++ b/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;
-[Display(Name = "Kitting叫料申请")]
+[Display(Name = "Kitting叫料申请导入")]
public class KittingIssueRequestImportInput : SfsStoreImportInputBase
{
- [Display(Name = "序号")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- [Key]
- public string Number { get; set; }
-
- #region 目标库位信息
-
///
- /// 目标库位
+ /// 物品代码
///
- [Display(Name = "目标库位")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string ToLocationCode { get; set; }
+ [Display(Name = "物品代码")]
+ public string ItemCode { get; set; }
///
/// 需求数量
@@ -31,10 +23,9 @@ public class KittingIssueRequestImportInput : SfsStoreImportInputBase
public decimal Qty { get; set; }
///
- /// 物品代码
+ /// 目标库位
///
- [Display(Name = "物品代码")]
- public string ItemCode { get; set; }
-
- #endregion
+ [Display(Name = "目标库位")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string ToLocationCode { get; set; }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/SparePartIssueRequests/Inputs/SparePartIssueRequestImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/SparePartIssueRequests/Inputs/SparePartIssueRequestImportInput.cs
index 032cd4ac7..cc98760a6 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/SparePartIssueRequests/Inputs/SparePartIssueRequestImportInput.cs
+++ b/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 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.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-[Display(Name = "叫料申请")]
+[Display(Name = "备料叫料申请导入")]
public class SparePartIssueRequestImportInput : SfsStoreImportInputBase
{
- ///
- /// 叫料类型
- ///
- [Display(Name = "叫料类型")]
- public EnumIssueRequestType IssueRequestType { get; set; }
-
///
/// 物品代码
///
[Display(Name = "物品代码")]
- [Required]
public string ItemCode { get; set; }
///
- /// 目标库位
+ /// 需求数量
///
- [Display(Name = "目标库位")]
- [Required]
- public string ToLocationCode { get; set; }
-
- ///
- /// 来源库区
- ///
- [Display(Name = "调出库区")]
- [Required]
- public string FromLocationArea { get; set; }
-
- ///
- /// 数量
- ///
- [Display(Name = "数量")]
- [Required(ErrorMessage = "{0}是必填项")]
+ [Display(Name = "需求数量")]
public decimal Qty { get; set; }
///
- /// 备注
+ /// 目标库位
///
- [Display(Name = "备注")]
- public string Remark { get; set; }
+ [Display(Name = "目标库位")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string ToLocationCode { get; set; }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs
index f146614c1..9a9df2444 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs
+++ b/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.Mvc;
using Volo.Abp;
+using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
@@ -69,13 +70,22 @@ public class PurchaseReceiptRequestAppService :
public virtual async Task GetDetailByItemAndPackingAsync(string itemCode,
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(detail);
+ var detail = entity.Details.FirstOrDefault(y => y.ItemCode == itemCode && y.PackingCode == packingCode);
- return dto;
+ var dto = ObjectMapper.Map(detail);
+
+ return dto;
+ }
+ else
+ {
+ throw new UserFriendlyException("未在到货通知中找到该箱码信息");
+ }
}
#endregion