105040 修改端子检查逻辑,增加地线检查与料号匹配

This commit is contained in:
lihanbo 2024-10-26 14:40:12 +08:00
parent 2978aab2ff
commit f194ff589c
2 changed files with 81 additions and 20 deletions

View File

@ -0,0 +1,8 @@
namespace Sinvo.EplanHpD.Plugin.WPFUI.Models
{
public class TerminalModel
{
public string TerminalSpec { get; set; }
public string TerminalMaterialCode { get; set; }
}
}

View File

@ -1,4 +1,5 @@
using Sinvo.EplanHpD.Plugin.WPFUI.Models; using EPLAN.Harness.Common.Extensions;
using Sinvo.EplanHpD.Plugin.WPFUI.Models;
using Sinvo.EplanHpD.Plugin.WPFUI.Utils; using Sinvo.EplanHpD.Plugin.WPFUI.Utils;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -129,9 +130,9 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel
/// 检查引用的端子 /// 检查引用的端子
/// </summary> /// </summary>
/// <param name="item"></param> /// <param name="item"></param>
private void CheckTerminals(StuffedDataModel item) public void CheckTerminals(StuffedDataModel item)
{ {
var canUsedTerminals = new List<string>(); var canUsedTerminals = new List<TerminalModel>();
//if(item.) //if(item.)
if (item.Imprint.StartsWith("D-PE")) if (item.Imprint.StartsWith("D-PE"))
{ {
@ -145,14 +146,26 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel
} }
if (canUsedTerminals != null && canUsedTerminals.Any()) if (canUsedTerminals != null && canUsedTerminals.Any())
{ {
if (canUsedTerminals.All(it => it != item.FrontTerminalModel)) var terminals = canUsedTerminals.Where(it => !string.IsNullOrEmpty(it.TerminalSpec) && !string.IsNullOrEmpty(it.TerminalMaterialCode));
if (terminals.All(it => it.TerminalSpec != item.FrontTerminalModel))
{ {
SetItemError(item, "前端子不在可选列表中!\r\n"); SetItemError(item, "前端子不在可选列表中!\r\n");
} }
if (canUsedTerminals.All(it => it != item.RearTerminalModel)) if (terminals.All(it => it.TerminalMaterialCode != item.FrontTerminalMaterialCode))
{
SetItemError(item, "前端子料号不正确,不在可选列表中!\r\n");
}
if (terminals.All(it => it.TerminalSpec != item.RearTerminalModel))
{ {
SetItemError(item, "后端子不在可选列表中!\r\n"); SetItemError(item, "后端子不在可选列表中!\r\n");
} }
if (terminals.All(it => it.TerminalMaterialCode != item.RearTerminalMaterialCode))
{
SetItemError(item, "后端子料号不正确,不在可选列表中!\r\n");
}
} }
else if (!string.IsNullOrEmpty(item.FrontTerminalModel) || !string.IsNullOrEmpty(item.RearTerminalModel)) else if (!string.IsNullOrEmpty(item.FrontTerminalModel) || !string.IsNullOrEmpty(item.RearTerminalModel))
{ {
@ -162,7 +175,7 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel
private void CheckDuplicateModel(StuffedDataModel item) private void CheckDuplicateModel(StuffedDataModel item)
{ {
if (StuffedData.Count(it => it != null && it.Model == item.Model) > 1) if (StuffedData?.Count(it => it != null && it.Model == item.Model) > 1)
{ {
if (string.IsNullOrEmpty(item.WireLength)) if (string.IsNullOrEmpty(item.WireLength))
{ {
@ -192,24 +205,44 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel
item.CheckedMsg += errorMsg; item.CheckedMsg += errorMsg;
} }
private List<string> GetCanUsedTerminal(string wireModel) private List<TerminalModel> GetCanUsedTerminal(string wireModel)
{ {
var result = ExcelHelper.GetWireTerminalMappingTable(wireModel); var result = ExcelHelper.GetWireTerminalMappingTable(wireModel);
var terminals = new List<string>(); var terminals = new List<TerminalModel>();
var excelModels = result as ExcelModel[] ?? result.ToArray(); var excelModels = result as ExcelModel[] ?? result.ToArray();
if (!excelModels.Any()) return terminals; if (!excelModels.Any()) return terminals;
foreach (var item in excelModels) foreach (var item in excelModels)
{ {
if (!string.IsNullOrEmpty(item.ForkTerminal)) if (!string.IsNullOrEmpty(item.ForkTerminal))
terminals.Add(item.ForkTerminal); terminals.Add(new TerminalModel
{
TerminalMaterialCode = item.ForkTerminalMaterialCode,
TerminalSpec = item.ForkTerminal
});
if (!string.IsNullOrEmpty(item.FlatTerminal)) if (!string.IsNullOrEmpty(item.FlatTerminal))
terminals.Add(item.FlatTerminal); terminals.Add(new TerminalModel
{
TerminalMaterialCode = item.FlatTerminalMaterialCode,
TerminalSpec = item.FlatTerminal
});
if (!string.IsNullOrEmpty(item.PinTerminal)) if (!string.IsNullOrEmpty(item.PinTerminal))
terminals.Add(item.PinTerminal); terminals.Add(new TerminalModel
{
TerminalMaterialCode = item.PinTerminalMaterialCode,
TerminalSpec = item.PinTerminal
});
if (!string.IsNullOrEmpty(item.OTypeTerminal)) if (!string.IsNullOrEmpty(item.OTypeTerminal))
terminals.Add(item.OTypeTerminal); terminals.Add(new TerminalModel
{
TerminalMaterialCode = item.OTypeTerminalMaterialCode,
TerminalSpec = item.OTypeTerminal
});
if (!string.IsNullOrEmpty(item.YTypeTerminal)) if (!string.IsNullOrEmpty(item.YTypeTerminal))
terminals.Add(item.YTypeTerminal); terminals.Add(new TerminalModel
{
TerminalMaterialCode = item.YTypeTerminalMaterialCode,
TerminalSpec = item.YTypeTerminal
});
} }
return terminals; return terminals;
} }
@ -218,13 +251,13 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel
/// </summary> /// </summary>
/// <param name="wireModel"></param> /// <param name="wireModel"></param>
/// <returns></returns> /// <returns></returns>
private List<string> GetD_PECanUsedTerminal(string wireModel) private List<TerminalModel> GetD_PECanUsedTerminal(string wireModel)
{ {
// 获取D-PE前缀的可用端子 // 获取D-PE前缀的可用端子
var resultWithPrefix = ExcelHelper.GetWireTerminalMappingTable(wireModel, "D-PE"); var resultWithPrefix = ExcelHelper.GetWireTerminalMappingTable(wireModel, "D-PE");
// 获取不包含前缀的端子 // 获取不包含前缀的端子
var resultWithoutPrefix = ExcelHelper.GetWireTerminalMappingTable(wireModel); var resultWithoutPrefix = ExcelHelper.GetWireTerminalMappingTable(wireModel);
var terminals = new List<string>(); var terminals = new List<TerminalModel>();
// 转换 // 转换
var withPrefixExcelModels = resultWithPrefix as List<ExcelModel> ?? resultWithPrefix.ToList(); var withPrefixExcelModels = resultWithPrefix as List<ExcelModel> ?? resultWithPrefix.ToList();
var withoutPrefixExcelModels = resultWithoutPrefix as List<ExcelModel> ?? resultWithoutPrefix.ToList(); var withoutPrefixExcelModels = resultWithoutPrefix as List<ExcelModel> ?? resultWithoutPrefix.ToList();
@ -234,15 +267,35 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel
foreach (var item in excelModels) foreach (var item in excelModels)
{ {
if (!string.IsNullOrEmpty(item.ForkTerminal)) if (!string.IsNullOrEmpty(item.ForkTerminal))
terminals.Add(item.ForkTerminal); terminals.Add(new TerminalModel
{
TerminalMaterialCode = item.ForkTerminalMaterialCode,
TerminalSpec = item.ForkTerminal
});
if (!string.IsNullOrEmpty(item.FlatTerminal)) if (!string.IsNullOrEmpty(item.FlatTerminal))
terminals.Add(item.FlatTerminal); terminals.Add(new TerminalModel
{
TerminalMaterialCode = item.FlatTerminalMaterialCode,
TerminalSpec = item.FlatTerminal
});
if (!string.IsNullOrEmpty(item.PinTerminal)) if (!string.IsNullOrEmpty(item.PinTerminal))
terminals.Add(item.PinTerminal); terminals.Add(new TerminalModel
{
TerminalMaterialCode = item.PinTerminalMaterialCode,
TerminalSpec = item.PinTerminal
});
if (!string.IsNullOrEmpty(item.OTypeTerminal)) if (!string.IsNullOrEmpty(item.OTypeTerminal))
terminals.Add(item.OTypeTerminal); terminals.Add(new TerminalModel
{
TerminalMaterialCode = item.OTypeTerminalMaterialCode,
TerminalSpec = item.OTypeTerminal
});
if (!string.IsNullOrEmpty(item.YTypeTerminal)) if (!string.IsNullOrEmpty(item.YTypeTerminal))
terminals.Add(item.YTypeTerminal); terminals.Add(new TerminalModel
{
TerminalMaterialCode = item.YTypeTerminalMaterialCode,
TerminalSpec = item.YTypeTerminal
});
} }
return terminals; return terminals;
} }