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