2024-12-05 14:37:31 +08:00
|
|
|
|
using Sinvo.EplanHpD.Plugin.WPFUI.Enum;
|
|
|
|
|
using Sinvo.EplanHpD.Plugin.WPFUI.Models;
|
2024-10-24 18:01:26 +08:00
|
|
|
|
using Sinvo.EplanHpD.Plugin.WPFUI.Utils;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
2024-11-26 10:31:58 +08:00
|
|
|
|
using System.IO.Packaging;
|
2024-10-24 18:01:26 +08:00
|
|
|
|
using System.Linq;
|
|
|
|
|
|
|
|
|
|
namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel
|
|
|
|
|
{
|
|
|
|
|
public partial class MainViewModel
|
|
|
|
|
{
|
2024-10-26 13:59:13 +08:00
|
|
|
|
public void CheckAll(IEnumerable<StuffedDataModel> datas)
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
2024-10-26 13:59:13 +08:00
|
|
|
|
datas.AsParallel().WithDegreeOfParallelism(4).ForAll(item =>
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
|
|
|
|
if (item == null) return;
|
|
|
|
|
item.IsError = false;
|
|
|
|
|
item.ErrorCount = 0;
|
|
|
|
|
item.CheckedMsg = "";
|
2024-11-08 17:14:38 +08:00
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ValidateItem(item);
|
2024-10-24 18:01:26 +08:00
|
|
|
|
|
2024-11-08 17:14:38 +08:00
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, ex.Message);
|
|
|
|
|
}
|
2024-10-24 18:01:26 +08:00
|
|
|
|
|
|
|
|
|
item.IsChecked = true;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
OnPropertyChanged(nameof(StuffedData));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ValidateItem(StuffedDataModel item)
|
|
|
|
|
{
|
2024-11-07 12:14:44 +08:00
|
|
|
|
CheckWireErpNr(item);
|
2024-10-24 18:01:26 +08:00
|
|
|
|
CheckRequiredFields(item);
|
2024-11-26 10:31:58 +08:00
|
|
|
|
//if (IsUseDiscoloration)
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
|
|
|
|
CheckImprint(item);
|
|
|
|
|
}
|
|
|
|
|
if (IsRequireCe)
|
|
|
|
|
{
|
|
|
|
|
CheckCeCompliance(item);
|
|
|
|
|
}
|
2024-10-26 10:27:03 +08:00
|
|
|
|
CheckNumberTube(item);
|
2024-10-24 18:01:26 +08:00
|
|
|
|
CheckInsulation(item);
|
|
|
|
|
CheckTerminals(item);
|
2024-11-08 08:34:20 +08:00
|
|
|
|
CheckDPETerminals(item);
|
2024-10-24 18:01:26 +08:00
|
|
|
|
CheckDuplicateModel(item);
|
2025-04-10 10:20:05 +08:00
|
|
|
|
|
|
|
|
|
CheckImprintStartsWith(item);
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查印记内容前缀
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="item"></param>
|
|
|
|
|
public void CheckImprintStartsWith(StuffedDataModel item)
|
|
|
|
|
{
|
|
|
|
|
if (item.Imprint.StartsWith("w_0"))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "印记内容不符合规范!\r\n");
|
|
|
|
|
}
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
2024-11-08 09:19:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查地排端子
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="item"></param>
|
2024-11-08 08:34:20 +08:00
|
|
|
|
public void CheckDPETerminals(StuffedDataModel item)
|
|
|
|
|
{
|
|
|
|
|
// 地排只检查4.0线径以下的
|
|
|
|
|
if (double.TryParse(item.CrossSection, out double crossSection))
|
|
|
|
|
if (item.Imprint.StartsWith("D-PE") && crossSection <= 4.0)
|
|
|
|
|
{
|
|
|
|
|
var D_PECanUsedTerminals = GetD_PECanUsedTerminal(item.WireModel);
|
|
|
|
|
if (D_PECanUsedTerminals.All(terminal =>
|
|
|
|
|
terminal.TerminalSpec != item.FrontTerminalModel
|
|
|
|
|
&& terminal.TerminalSpec != item.RearTerminalModel)
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "D-PE线未匹配到正确的端子!\r\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-08 09:19:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查线材料号
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="item"></param>
|
2024-11-07 12:14:44 +08:00
|
|
|
|
public void CheckWireErpNr(StuffedDataModel item)
|
|
|
|
|
{
|
2024-11-08 17:14:38 +08:00
|
|
|
|
try
|
2024-11-07 12:14:44 +08:00
|
|
|
|
{
|
2024-11-08 17:14:38 +08:00
|
|
|
|
var wireInfos = ExcelHelper.GetWireInfo(item.WireModel);
|
|
|
|
|
if (wireInfos != null && wireInfos.Count() == 1)
|
2024-11-07 12:14:44 +08:00
|
|
|
|
{
|
2024-11-08 17:14:38 +08:00
|
|
|
|
var wireInfo = wireInfos.First();
|
|
|
|
|
if (wireInfo != null)
|
2024-11-07 12:14:44 +08:00
|
|
|
|
{
|
2024-11-08 17:14:38 +08:00
|
|
|
|
if (wireInfo.WireMaterialCode != item.WireCode)
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "线材料号错误!\r\n");
|
2024-11-07 12:14:44 +08:00
|
|
|
|
|
2024-11-08 17:14:38 +08:00
|
|
|
|
}
|
2024-11-07 12:14:44 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-08 17:14:38 +08:00
|
|
|
|
else if (wireInfos.Count() > 1)
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "该型号线材存在重复编码!\r\n");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "该型号线材不存在配对表中!\r\n");
|
|
|
|
|
|
|
|
|
|
}
|
2024-11-07 12:14:44 +08:00
|
|
|
|
}
|
2024-11-08 17:14:38 +08:00
|
|
|
|
catch (Exception ex)
|
2024-11-07 12:14:44 +08:00
|
|
|
|
{
|
2024-11-08 17:14:38 +08:00
|
|
|
|
SetItemError(item, ex.Message);
|
2024-11-07 12:14:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
2024-11-08 09:19:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查号码管
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="item"></param>
|
2024-10-26 10:27:03 +08:00
|
|
|
|
private void CheckNumberTube(StuffedDataModel item)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(item.NumberTubeSpec))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "未匹配到正确的号码管!\r\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-08 09:19:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查必填项
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="item"></param>
|
2024-10-24 18:01:26 +08:00
|
|
|
|
private void CheckRequiredFields(StuffedDataModel item)
|
|
|
|
|
{
|
2024-11-08 17:14:38 +08:00
|
|
|
|
try
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
2024-11-08 17:14:38 +08:00
|
|
|
|
if (string.IsNullOrEmpty(item.RearTerminalMaterialCode))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "后端子物料编码为空\r\n");
|
|
|
|
|
}
|
|
|
|
|
if (string.IsNullOrEmpty(item.FrontTerminalMaterialCode))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "前端子物料编码为空\r\n");
|
|
|
|
|
}
|
|
|
|
|
if (string.IsNullOrEmpty(item.WireColor))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "线色不符合规范\r\n");
|
|
|
|
|
}
|
|
|
|
|
if (string.IsNullOrEmpty(item.WireCode))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "线材编码为空\r\n");
|
|
|
|
|
}
|
|
|
|
|
if (string.IsNullOrEmpty(item.Imprint))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "印记(线号)内容为空\r\n");
|
|
|
|
|
}
|
2025-03-10 17:28:18 +08:00
|
|
|
|
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
2024-11-08 17:14:38 +08:00
|
|
|
|
catch (Exception ex)
|
2024-11-07 12:14:44 +08:00
|
|
|
|
{
|
2024-11-08 17:14:38 +08:00
|
|
|
|
SetItemError(item, ex.Message);
|
2024-11-07 12:14:44 +08:00
|
|
|
|
}
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
2024-11-08 09:19:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查是否全部使用CE认证物料
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="item"></param>
|
2024-10-24 18:01:26 +08:00
|
|
|
|
private void CheckCeCompliance(StuffedDataModel item)
|
|
|
|
|
{
|
|
|
|
|
if (item.WireModel.IndexOf("-CE", StringComparison.OrdinalIgnoreCase) < 0)
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "未使用CE认证物料!\r\n");
|
|
|
|
|
}
|
|
|
|
|
if (item.FrontTerminalModel.IndexOf("-CE", StringComparison.OrdinalIgnoreCase) < 0)
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "前端子未使用CE认证端子!\r\n");
|
|
|
|
|
}
|
|
|
|
|
if (item.RearTerminalModel.IndexOf("-CE", StringComparison.OrdinalIgnoreCase) < 0)
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "后端子未使用CE认证端子!\r\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-08 09:19:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查变色套(绝缘软套)大小与是否使用了变色管
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="item"></param>
|
2024-10-28 14:29:56 +08:00
|
|
|
|
public void CheckInsulation(StuffedDataModel item)
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
|
|
|
|
if (item.Insulation != null && item.Insulation.Specification != null)
|
|
|
|
|
{
|
|
|
|
|
var match = Consts.regex.Match(item.WireModel);
|
2024-10-28 17:56:13 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(match?.Value) && match != null)
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
|
|
|
|
var itemWireDiameter = double.Parse(match.Value.Replace("RV", ""));
|
|
|
|
|
var insMatch = Consts.dRegex.Match(item.Insulation.Specification);
|
|
|
|
|
if (!string.IsNullOrEmpty(insMatch.Value))
|
|
|
|
|
{
|
|
|
|
|
if (itemWireDiameter < 1.5d)
|
|
|
|
|
{
|
2024-10-28 17:56:13 +08:00
|
|
|
|
if (insMatch.Value != "V-1.5")
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
2024-10-26 10:27:03 +08:00
|
|
|
|
SetItemError(item, "变色套(绝缘软套)大小与线径不匹配!");
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var insDiameter = double.Parse(insMatch.Value.Replace("V-", ""));
|
|
|
|
|
if (Math.Abs(insDiameter - itemWireDiameter) > 0)
|
|
|
|
|
{
|
2024-10-26 10:27:03 +08:00
|
|
|
|
SetItemError(item, "变色套(绝缘软套)大小与线径不匹配!");
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2024-10-26 10:27:03 +08:00
|
|
|
|
SetItemError(item, "变色套(绝缘软套)未匹配到大小!");
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2024-10-26 10:27:03 +08:00
|
|
|
|
SetItemError(item, "未匹配到线材大小!");
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-08 09:19:10 +08:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (CheckUseDiscoloration(item.Imprint))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "未匹配到变色套(绝缘软套)!");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
2024-10-26 13:59:13 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查引用的端子
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="item"></param>
|
2024-10-26 14:40:12 +08:00
|
|
|
|
public void CheckTerminals(StuffedDataModel item)
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
2024-11-08 08:34:20 +08:00
|
|
|
|
var canUsedTerminals = GetCanUsedTerminal(item.WireModel);
|
2024-10-24 18:01:26 +08:00
|
|
|
|
if (canUsedTerminals != null && canUsedTerminals.Any())
|
|
|
|
|
{
|
2024-10-26 14:40:12 +08:00
|
|
|
|
var terminals = canUsedTerminals.Where(it => !string.IsNullOrEmpty(it.TerminalSpec) && !string.IsNullOrEmpty(it.TerminalMaterialCode));
|
|
|
|
|
|
|
|
|
|
if (terminals.All(it => it.TerminalSpec != item.FrontTerminalModel))
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "前端子不在可选列表中!\r\n");
|
2025-03-10 17:28:18 +08:00
|
|
|
|
if (item.FrontTerminalModel.Contains("/"))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "后端子存在错误的斜杠(/)!\r\n");
|
|
|
|
|
}
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
2024-10-26 14:40:12 +08:00
|
|
|
|
if (terminals.All(it => it.TerminalMaterialCode != item.FrontTerminalMaterialCode))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "前端子料号不正确,不在可选列表中!\r\n");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if (terminals.All(it => it.TerminalSpec != item.RearTerminalModel))
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "后端子不在可选列表中!\r\n");
|
2025-03-10 17:28:18 +08:00
|
|
|
|
if (item.RearTerminalModel.Contains("/"))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "后端子存在错误的斜杠(/)!\r\n");
|
|
|
|
|
}
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
2024-10-26 14:40:12 +08:00
|
|
|
|
if (terminals.All(it => it.TerminalMaterialCode != item.RearTerminalMaterialCode))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "后端子料号不正确,不在可选列表中!\r\n");
|
|
|
|
|
}
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
|
|
|
|
else if (!string.IsNullOrEmpty(item.FrontTerminalModel) || !string.IsNullOrEmpty(item.RearTerminalModel))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "该型号无可用端子!\r\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-08 09:19:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查重复
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="item"></param>
|
2024-10-24 18:01:26 +08:00
|
|
|
|
private void CheckDuplicateModel(StuffedDataModel item)
|
|
|
|
|
{
|
2024-10-26 14:40:12 +08:00
|
|
|
|
if (StuffedData?.Count(it => it != null && it.Model == item.Model) > 1)
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
2024-10-26 10:27:03 +08:00
|
|
|
|
if (string.IsNullOrEmpty(item.WireLength))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, $"线长度获取异常!\r\n");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2024-11-15 15:04:08 +08:00
|
|
|
|
#if DEBUG
|
2024-11-08 17:13:24 +08:00
|
|
|
|
//var newModel = $"RV-{item.WireColor}-1x{item.CrossSection}-{item.WireLength + 5}-16×N2-{item.WireNumber}";
|
|
|
|
|
var newModel = GenWireModel(item.WireColor, item.CrossSection, $"{double.Parse(item.WireLength) + 5}_add_5", item.WireNumber);
|
2024-11-15 15:04:08 +08:00
|
|
|
|
#else
|
|
|
|
|
var newModel = GenWireModel(item.WireColor, item.CrossSection, $"{double.Parse(item.WireLength) + 5}", item.WireNumber);
|
|
|
|
|
#endif
|
2024-10-26 10:27:03 +08:00
|
|
|
|
if (StuffedData.Any(it => it.Model == newModel))
|
|
|
|
|
{
|
2024-11-08 17:13:24 +08:00
|
|
|
|
//var newModel2 = $"RV-{item.WireColor}-1x{item.CrossSection}-{item.WireLength + 10}-16×N2-{item.WireNumber}";
|
2024-11-15 15:04:08 +08:00
|
|
|
|
#if DEBUG
|
2024-11-08 17:13:24 +08:00
|
|
|
|
var newModel2 = GenWireModel(item.WireColor, item.CrossSection, $"{double.Parse(item.WireLength) + 10}_add_10", item.WireNumber);
|
2024-11-15 15:04:08 +08:00
|
|
|
|
#else
|
|
|
|
|
var newModel2 = GenWireModel(item.WireColor, item.CrossSection, $"{double.Parse(item.WireLength) + 10}", item.WireNumber);
|
|
|
|
|
#endif
|
2024-10-28 14:29:56 +08:00
|
|
|
|
if (StuffedData.Any(it => it.Model == newModel2))
|
|
|
|
|
SetItemError(item, $"{item.Model} 该型号存在重复!\r\n");
|
|
|
|
|
else
|
|
|
|
|
{
|
2024-11-15 15:04:08 +08:00
|
|
|
|
item.WireLength = $"{double.Parse(item.WireLength) + 10}";
|
2024-10-28 14:29:56 +08:00
|
|
|
|
item.Model = newModel2;
|
|
|
|
|
}
|
2024-10-26 10:27:03 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2024-11-15 15:04:08 +08:00
|
|
|
|
item.WireLength = $"{double.Parse(item.WireLength) + 5}";
|
2024-10-26 10:27:03 +08:00
|
|
|
|
item.Model = newModel;
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-08 09:19:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 将一项设置为异常
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="item"></param>
|
|
|
|
|
/// <param name="errorMsg"></param>
|
2024-10-24 18:01:26 +08:00
|
|
|
|
private void SetItemError(StuffedDataModel item, string errorMsg)
|
|
|
|
|
{
|
2024-11-08 09:19:27 +08:00
|
|
|
|
if (!errorMsg.EndsWith("\r\n"))
|
|
|
|
|
errorMsg += "\r\n";
|
|
|
|
|
|
2024-10-24 18:01:26 +08:00
|
|
|
|
item.IsError = true;
|
|
|
|
|
item.ErrorCount += 1;
|
|
|
|
|
item.CheckedMsg += errorMsg;
|
|
|
|
|
}
|
2024-11-08 09:19:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取可使用的端子
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="wireModel"></param>
|
|
|
|
|
/// <returns></returns>
|
2024-10-26 14:40:12 +08:00
|
|
|
|
private List<TerminalModel> GetCanUsedTerminal(string wireModel)
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
|
|
|
|
var result = ExcelHelper.GetWireTerminalMappingTable(wireModel);
|
2024-10-26 14:40:12 +08:00
|
|
|
|
var terminals = new List<TerminalModel>();
|
2024-10-24 18:01:26 +08:00
|
|
|
|
var excelModels = result as ExcelModel[] ?? result.ToArray();
|
|
|
|
|
if (!excelModels.Any()) return terminals;
|
|
|
|
|
foreach (var item in excelModels)
|
|
|
|
|
{
|
2024-10-25 08:37:28 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(item.ForkTerminal))
|
2024-10-26 14:40:12 +08:00
|
|
|
|
terminals.Add(new TerminalModel
|
|
|
|
|
{
|
|
|
|
|
TerminalMaterialCode = item.ForkTerminalMaterialCode,
|
|
|
|
|
TerminalSpec = item.ForkTerminal
|
|
|
|
|
});
|
2024-10-24 18:01:26 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(item.FlatTerminal))
|
2024-10-26 14:40:12 +08:00
|
|
|
|
terminals.Add(new TerminalModel
|
|
|
|
|
{
|
|
|
|
|
TerminalMaterialCode = item.FlatTerminalMaterialCode,
|
|
|
|
|
TerminalSpec = item.FlatTerminal
|
|
|
|
|
});
|
2024-10-24 18:01:26 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(item.PinTerminal))
|
2024-10-26 14:40:12 +08:00
|
|
|
|
terminals.Add(new TerminalModel
|
|
|
|
|
{
|
|
|
|
|
TerminalMaterialCode = item.PinTerminalMaterialCode,
|
|
|
|
|
TerminalSpec = item.PinTerminal
|
|
|
|
|
});
|
2024-10-24 18:01:26 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(item.OTypeTerminal))
|
2024-10-26 14:40:12 +08:00
|
|
|
|
terminals.Add(new TerminalModel
|
|
|
|
|
{
|
|
|
|
|
TerminalMaterialCode = item.OTypeTerminalMaterialCode,
|
|
|
|
|
TerminalSpec = item.OTypeTerminal
|
|
|
|
|
});
|
2024-10-26 13:59:13 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(item.YTypeTerminal))
|
2024-10-26 14:40:12 +08:00
|
|
|
|
terminals.Add(new TerminalModel
|
|
|
|
|
{
|
|
|
|
|
TerminalMaterialCode = item.YTypeTerminalMaterialCode,
|
|
|
|
|
TerminalSpec = item.YTypeTerminal
|
|
|
|
|
});
|
2024-10-26 13:59:13 +08:00
|
|
|
|
}
|
|
|
|
|
return terminals;
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查地线可以用的端子
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="wireModel"></param>
|
|
|
|
|
/// <returns></returns>
|
2024-10-26 14:40:12 +08:00
|
|
|
|
private List<TerminalModel> GetD_PECanUsedTerminal(string wireModel)
|
2024-10-26 13:59:13 +08:00
|
|
|
|
{
|
|
|
|
|
// 获取D-PE前缀的可用端子
|
|
|
|
|
var resultWithPrefix = ExcelHelper.GetWireTerminalMappingTable(wireModel, "D-PE");
|
|
|
|
|
// 获取不包含前缀的端子
|
2024-11-08 08:34:20 +08:00
|
|
|
|
//var resultWithoutPrefix = ExcelHelper.GetWireTerminalMappingTable(wireModel);
|
2024-10-26 14:40:12 +08:00
|
|
|
|
var terminals = new List<TerminalModel>();
|
2024-10-26 13:59:13 +08:00
|
|
|
|
// 转换
|
|
|
|
|
var withPrefixExcelModels = resultWithPrefix as List<ExcelModel> ?? resultWithPrefix.ToList();
|
2024-11-08 08:34:20 +08:00
|
|
|
|
List<ExcelModel> withoutPrefixExcelModels = [];//resultWithoutPrefix as List<ExcelModel> ?? resultWithoutPrefix.ToList();
|
2024-10-26 13:59:13 +08:00
|
|
|
|
// 合并
|
|
|
|
|
var excelModels = withPrefixExcelModels.Concat(withoutPrefixExcelModels);
|
|
|
|
|
if (!excelModels.Any()) return terminals;
|
|
|
|
|
foreach (var item in excelModels)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(item.ForkTerminal))
|
2024-10-26 14:40:12 +08:00
|
|
|
|
terminals.Add(new TerminalModel
|
|
|
|
|
{
|
|
|
|
|
TerminalMaterialCode = item.ForkTerminalMaterialCode,
|
|
|
|
|
TerminalSpec = item.ForkTerminal
|
|
|
|
|
});
|
2024-10-26 13:59:13 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(item.FlatTerminal))
|
2024-10-26 14:40:12 +08:00
|
|
|
|
terminals.Add(new TerminalModel
|
|
|
|
|
{
|
|
|
|
|
TerminalMaterialCode = item.FlatTerminalMaterialCode,
|
|
|
|
|
TerminalSpec = item.FlatTerminal
|
|
|
|
|
});
|
2024-10-26 13:59:13 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(item.PinTerminal))
|
2024-10-26 14:40:12 +08:00
|
|
|
|
terminals.Add(new TerminalModel
|
|
|
|
|
{
|
|
|
|
|
TerminalMaterialCode = item.PinTerminalMaterialCode,
|
|
|
|
|
TerminalSpec = item.PinTerminal
|
|
|
|
|
});
|
2024-10-26 13:59:13 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(item.OTypeTerminal))
|
2024-10-26 14:40:12 +08:00
|
|
|
|
terminals.Add(new TerminalModel
|
|
|
|
|
{
|
|
|
|
|
TerminalMaterialCode = item.OTypeTerminalMaterialCode,
|
|
|
|
|
TerminalSpec = item.OTypeTerminal
|
|
|
|
|
});
|
2024-10-24 18:01:26 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(item.YTypeTerminal))
|
2024-10-26 14:40:12 +08:00
|
|
|
|
terminals.Add(new TerminalModel
|
|
|
|
|
{
|
|
|
|
|
TerminalMaterialCode = item.YTypeTerminalMaterialCode,
|
|
|
|
|
TerminalSpec = item.YTypeTerminal
|
|
|
|
|
});
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
|
|
|
|
return terminals;
|
|
|
|
|
}
|
2024-11-08 09:19:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查变色套是否使用正确的颜色
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="item"></param>
|
2024-10-24 18:01:26 +08:00
|
|
|
|
private void CheckImprint(StuffedDataModel item)
|
|
|
|
|
{
|
|
|
|
|
var imprintConditions = new List<(string Prefix, WireFlagType? FlagType, string Color)>
|
|
|
|
|
{
|
|
|
|
|
("L1", WireFlagType.Dual, "褐色"),
|
|
|
|
|
("R", WireFlagType.Single, "褐色"),
|
|
|
|
|
("L1", WireFlagType.Mix, "褐色"),
|
|
|
|
|
("R", WireFlagType.Mix, "褐色"),
|
2024-10-25 08:37:28 +08:00
|
|
|
|
|
2024-10-24 18:01:26 +08:00
|
|
|
|
("L2", WireFlagType.Dual, "黑色"),
|
|
|
|
|
("S", WireFlagType.Single, "黑色"),
|
|
|
|
|
("L2", WireFlagType.Mix, "黑色"),
|
|
|
|
|
("S", WireFlagType.Mix, "黑色"),
|
2024-10-25 08:37:28 +08:00
|
|
|
|
|
2024-10-24 18:01:26 +08:00
|
|
|
|
("L3", WireFlagType.Dual, "灰色"),
|
|
|
|
|
("T", WireFlagType.Single, "灰色"),
|
|
|
|
|
("L3", WireFlagType.Mix, "灰色"),
|
|
|
|
|
("T", WireFlagType.Mix, "灰色"),
|
2024-10-25 08:37:28 +08:00
|
|
|
|
|
2024-11-26 10:31:58 +08:00
|
|
|
|
("PE", null, "绿色"),
|
|
|
|
|
("D-PE", null, "绿色")
|
2024-10-24 18:01:26 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
foreach (var condition in imprintConditions)
|
|
|
|
|
{
|
|
|
|
|
CheckImprintCondition(item, condition.Prefix, condition.FlagType, condition.Color);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void CheckImprintCondition(StuffedDataModel item, string imprintPrefix, WireFlagType? flagType, string expectedColor)
|
|
|
|
|
{
|
|
|
|
|
if (item.Imprint.StartsWith(imprintPrefix) && (flagType == null || FlagType == flagType))
|
|
|
|
|
{
|
2024-11-26 10:31:58 +08:00
|
|
|
|
if (string.IsNullOrEmpty(item.DiscolorationDesc) || item.Insulation == null || string.IsNullOrEmpty(item.Insulation.MaterialCode))
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
2024-11-26 10:31:58 +08:00
|
|
|
|
SetItemError(item, "变色管信息为空!\r\n");
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
2024-11-26 10:31:58 +08:00
|
|
|
|
else
|
2024-10-24 18:01:26 +08:00
|
|
|
|
{
|
2025-03-08 13:35:41 +08:00
|
|
|
|
// 获取变色管颜色
|
2024-11-26 10:31:58 +08:00
|
|
|
|
var discolorationDesc = Consts.regexParenthesesContent.Match(item.DiscolorationDesc).Value;
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrEmpty(discolorationDesc))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, "变色管信息为空!\r\n");
|
|
|
|
|
}
|
|
|
|
|
else if (!discolorationDesc.Equals(expectedColor))
|
|
|
|
|
{
|
|
|
|
|
if (imprintPrefix == "D-PE")
|
|
|
|
|
{
|
|
|
|
|
if ((item.WireColor == "GNYE" && discolorationDesc != "绿色"))
|
|
|
|
|
{
|
|
|
|
|
SetItemError(item, $"变色管颜色有误,应该使用{expectedColor}!\r\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
SetItemError(item, $"变色管颜色有误,应该使用{expectedColor}!\r\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-08 09:19:10 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查是否使用变色套
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="imprint"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private bool CheckUseDiscoloration(string imprint)
|
|
|
|
|
{
|
|
|
|
|
var imprintConditions = new List<(string Prefix, WireFlagType? FlagType)>
|
|
|
|
|
{
|
|
|
|
|
("L1", WireFlagType.Dual),
|
|
|
|
|
("R", WireFlagType.Single ),
|
|
|
|
|
("L1", WireFlagType.Mix ),
|
|
|
|
|
("R", WireFlagType.Mix ),
|
|
|
|
|
|
|
|
|
|
("L2", WireFlagType.Dual ),
|
|
|
|
|
("S", WireFlagType.Single ),
|
|
|
|
|
("L2", WireFlagType.Mix ),
|
|
|
|
|
("S", WireFlagType.Mix ),
|
|
|
|
|
|
|
|
|
|
("L3", WireFlagType.Dual ),
|
|
|
|
|
("T", WireFlagType.Single ),
|
|
|
|
|
("L3", WireFlagType.Mix ),
|
|
|
|
|
("T", WireFlagType.Mix ),
|
|
|
|
|
|
|
|
|
|
("PE", null )
|
|
|
|
|
};
|
|
|
|
|
// 检查印记是否按照规范开头
|
|
|
|
|
foreach (var condition in imprintConditions)
|
|
|
|
|
{
|
|
|
|
|
if (imprint.StartsWith(condition.Prefix) && (condition.FlagType == null || FlagType == condition.FlagType))
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2024-10-24 18:01:26 +08:00
|
|
|
|
}
|
|
|
|
|
}
|