105040 增加颜色匹配

This commit is contained in:
lihanbo 2024-11-02 11:56:50 +08:00
parent d5e61f5ac2
commit 09c4e983bd
7 changed files with 212 additions and 51 deletions

View File

@ -205,5 +205,8 @@ w_00196 BK 黑色RV1.5-CE定制 42012300001005 C45-1.5-CE定制 4202010000
Assert.IsFalse(!stuffedData.IsError); Assert.IsFalse(!stuffedData.IsError);
} }
} }
} }

View File

@ -51,6 +51,7 @@
<ItemGroup> <ItemGroup>
<Compile Include="CheckTest.cs" /> <Compile Include="CheckTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="StuffTest.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="packages.config" /> <None Include="packages.config" />

View File

@ -0,0 +1,102 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Sinvo.EplanHpD.Plugin.WPFUI.Models;
using Sinvo.EplanHpD.Plugin.WPFUI.ViewModel;
using System.Collections.Generic;
using System.Linq;
namespace Sinvo.EplanHpD.Plugin.Test
{
[TestClass]
public class StuffTest
{
[TestMethod("数据处理测试")]
public void StuffedTest()
{
var vm = new MainViewModel();
var result = vm.StuffData(new List<ReportModel>
{
/*
线 (mm) 线 线 线 线 线 线
1 2 _&G000111006-033_DQ RV10.0 EC5L1 593.9 mm 6.7 mm 10 mm2 42020100000222 线 C45-10 42020100000386 8 mm RNB8-8 42020100000148 8 mm
2 2 _&G000111006-033_DQ RV10.0 EC5L2 581.8 mm 6.7 mm 10 mm2 42020100000222 线 RNB8-8 42020100000148 8 mm C45-10 42020100000386 8 mm
3 2 _&G000111006-033_DQ RV10.0 EC5L3 584.1 mm 6.7 mm 10 mm2 42020100000222 线 C45-10 42020100000386 8 mm RNB8-8 42020100000148 8 mm
*/
new ReportModel
{
Project = "放卷2",
Document = "隔膜放卷_&G000111006-033_DQ",
CableName = "",
PartNumber = "黑色RV10.0/定制",
ManufacturerCompany = "",
Imprint = "EC5L1",
Length = "593.9 mm",
OutsideDiameter = "6.7 mm",
CoreDiameter = "10 mm2",
ERPNr = "42020100000222",
DisplayColor = "浅蓝色",
DisplayStripeColor = "",
WireName = "电线",
WireTwisted = "",
ConnectorFrom = "C45-10定制",
ConnectorFromERPNr = "42020100000386",
StripLengthFrom = "8 mm",
ConnectorTo = "RNB8-8定制",
ConnectorToERPNr = "42020100000148",
StripLengthTo = "8 mm"
},
new ReportModel
{
Project = "放卷2",
Document = "隔膜放卷_&G000111006-033_DQ",
CableName = "",
PartNumber = "黑色RV10.0/定制",
ManufacturerCompany = "",
Imprint = "EC5L2",
Length = "581.8 mm",
OutsideDiameter = "6.7 mm",
CoreDiameter = "10 mm2",
ERPNr = "42020100000222",
DisplayColor = "蓝色",
DisplayStripeColor = "白色",
WireName = "电线",
WireTwisted = "",
ConnectorFrom = "RNB8-8定制",
ConnectorFromERPNr = "42020100000148",
StripLengthFrom = "8 mm",
ConnectorTo = "C45-10定制",
ConnectorToERPNr = "42020100000386",
StripLengthTo = "8 mm"
},
new ReportModel
{
Project = "放卷2",
Document = "隔膜放卷_&G000111006-033_DQ",
CableName = "",
PartNumber = "黑色RV10.0/定制",
ManufacturerCompany = "",
Imprint = "EC5L3",
Length = "584.1 mm",
OutsideDiameter = "6.7 mm",
CoreDiameter = "10 mm2",
ERPNr = "42020100000222",
DisplayColor = "黑色",
DisplayStripeColor = "",
WireName = "电线",
WireTwisted = "",
ConnectorFrom = "C45-10定制",
ConnectorFromERPNr = "42020100000386",
StripLengthFrom = "8 mm",
ConnectorTo = "RNB8-8定制",
ConnectorToERPNr = "42020100000148",
StripLengthTo = "8 mm"
}
}).Result;
Assert.IsTrue(result.Count == 3);
Assert.IsTrue(result.Where(it => it.Imprint == "EC5L1").First().WireColor == "LBU");
Assert.IsTrue(result.Where(it => it.Imprint == "EC5L2").First().WireColor == "BUWH");
Assert.IsTrue(result.Where(it => it.Imprint == "EC5L3").First().WireColor == "BK");
}
}
}

View File

@ -446,6 +446,7 @@
<TextBlock VerticalAlignment="Center" Text="当线径为1.5或是1.5以下时变色套管绝缘软套应使用1.5平方,如未按此规则使用,将提示异常。" /> <TextBlock VerticalAlignment="Center" Text="当线径为1.5或是1.5以下时变色套管绝缘软套应使用1.5平方,如未按此规则使用,将提示异常。" />
<TextBlock VerticalAlignment="Center" Text="当勾选全部CE认证时未使用CE认证的线或是端子将提示异常。" /> <TextBlock VerticalAlignment="Center" Text="当勾选全部CE认证时未使用CE认证的线或是端子将提示异常。" />
<TextBlock VerticalAlignment="Center" Text="当型号出现重复时将会自动增加5mm长度如果依旧出现重复将会再增加一次第二次增加长度后依旧重复则根据原有长度提示异常。增加长度如果未出现异常则会以增加后的长度进行生成(不会修改已有的数据,只会影响检查时的显示与导出报表)。" /> <TextBlock VerticalAlignment="Center" Text="当型号出现重复时将会自动增加5mm长度如果依旧出现重复将会再增加一次第二次增加长度后依旧重复则根据原有长度提示异常。增加长度如果未出现异常则会以增加后的长度进行生成(不会修改已有的数据,只会影响检查时的显示与导出报表)。" />
<TextBlock VerticalAlignment="Center" Text="当型号中出现:(冒号)时会自动去除冒号以及冒号后面的内容。例如“A000-CE / 定制:1” 将会被识别成 “A000-CE / 定制”" />
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>
</GroupBox> </GroupBox>

View File

@ -387,7 +387,6 @@ public partial class MainWindow : Window
//flexDesigner. //flexDesigner.
flexDesigner.SelectSet.OnSelectionChanged(); flexDesigner.SelectSet.OnSelectionChanged();
} }
} }
} }
} }

View File

@ -66,10 +66,10 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.Utils
// .ToList(); // .ToList();
//} //}
public static dynamic GetNumberTube(string wireModel) public static dynamic GetNumberTube(string tubeModel)
{ {
CheckAndGetCache(); CheckAndGetCache();
return _terminalMappingCache.Where(item => item.WireModelSpecification == wireModel) return _terminalMappingCache.Where(item => item.TubeModel == tubeModel)
.Select(item => new .Select(item => new
{ {
item.TubeModel, item.TubeModel,

View File

@ -188,6 +188,11 @@ public partial class MainViewModel : INotifyPropertyChanged
); );
return Task.FromResult(reportDatas.ToList()); return Task.FromResult(reportDatas.ToList());
} }
/// <summary>
/// 清理数据
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public async Task<List<StuffedDataModel>> StuffData(List<ReportModel> data) public async Task<List<StuffedDataModel>> StuffData(List<ReportModel> data)
{ {
var datas = new ConcurrentBag<StuffedDataModel>(); var datas = new ConcurrentBag<StuffedDataModel>();
@ -205,13 +210,7 @@ public partial class MainViewModel : INotifyPropertyChanged
var data = new StuffedDataModel(); var data = new StuffedDataModel();
//if (!string.IsNullOrEmpty(item.PartNumber))
//{
// if (!item.PartNumber.Contains("-CE"))
// {
// isAllCe = false;
// }
//}
if (!string.IsNullOrEmpty(item.Imprint) && item.Imprint.Contains("&")) if (!string.IsNullOrEmpty(item.Imprint) && item.Imprint.Contains("&"))
{ {
var splitImprint = item.Imprint.Split('&'); var splitImprint = item.Imprint.Split('&');
@ -228,34 +227,21 @@ public partial class MainViewModel : INotifyPropertyChanged
} }
data.Imprint = item.Imprint; data.Imprint = item.Imprint;
data.WireColor = GetWireColorCode(item.DisplayColor, item.DisplayStripeColor); data.WireColor = GetWireColorCode(item.DisplayColor, item.DisplayStripeColor);
//if (string.IsNullOrEmpty(data.WireColor))
//{ data.WireModel = item.PartNumber.Contains(":") ? item.PartNumber.Split(':')[0] : item.PartNumber;
// data.IsError = true;
// data.CheckedMsg += "线色不符合规范\r\n";
//}
data.WireModel = item.PartNumber;
data.WireCode = item.ERPNr; data.WireCode = item.ERPNr;
data.WireName = item.WireName; data.WireName = item.WireName;
//if (string.IsNullOrEmpty(data.WireCode))
//{ data.FrontTerminalModel = item.ConnectorFrom.Contains(":") ? item.ConnectorFrom.Split(':')[0] : item.ConnectorFrom;
// data.IsError = true;
// data.CheckedMsg += "线材编码为空\r\n";
//}
data.FrontTerminalModel = item.ConnectorFrom;
data.FrontTerminalMaterialCode = item.ConnectorFromERPNr; data.FrontTerminalMaterialCode = item.ConnectorFromERPNr;
//if (string.IsNullOrEmpty(data.FrontTerminalMaterialCode))
//{
// data.IsError = true;
// data.CheckedMsg += "前端子物料编码为空\r\n";
//}
data.FrontStripLength = item.StripLengthFrom; data.FrontStripLength = item.StripLengthFrom;
data.RearTerminalModel = item.ConnectorTo;
data.RearTerminalModel = item.ConnectorTo.Contains(":") ? item.ConnectorTo.Split(':')[0] : item.ConnectorTo;
data.RearTerminalMaterialCode = item.ConnectorToERPNr; data.RearTerminalMaterialCode = item.ConnectorToERPNr;
//if (string.IsNullOrEmpty(data.RearTerminalMaterialCode))
//{
// data.IsError = true;
// data.CheckedMsg = "后端子物料编码为空\r\n";
//}
data.RearStripLength = item.StripLengthTo; data.RearStripLength = item.StripLengthTo;
//MID(输出报表!J2,1,FIND(" mm2",输出报表!J2)-1) //MID(输出报表!J2,1,FIND(" mm2",输出报表!J2)-1)
@ -286,7 +272,8 @@ public partial class MainViewModel : INotifyPropertyChanged
{ {
data.Insulation = new InsulationModel(); data.Insulation = new InsulationModel();
} }
var numberTube = ExcelHelper.GetNumberTube(data.WireModel); var numberTubeModel = GetNumberTubeSpecification(data.CrossSection, data.WireColor);
var numberTube = ExcelHelper.GetNumberTube(numberTubeModel);
if (numberTube != null) if (numberTube != null)
{ {
@ -294,18 +281,6 @@ public partial class MainViewModel : INotifyPropertyChanged
data.NumberTubeMaterialNo = numberTube.TubeMaterialCode; data.NumberTubeMaterialNo = numberTube.TubeMaterialCode;
} }
//if (datas.Any(it => it.Model == data.Model))
//{
// var existsItem = datas.First(it => it.Model == data.Model);
// if (existsItem != null)
// {
// existsItem.Quantity += 1;
// }
//}
//else
{ {
if (data != null) if (data != null)
datas.Add(data); datas.Add(data);
@ -326,20 +301,59 @@ public partial class MainViewModel : INotifyPropertyChanged
} }
/// <summary> /// <summary>
/// 获取颜色代号 /// 获取颜色代号
/// TODO : 改成从excel中读取基本资料
/// </summary> /// </summary>
/// <param name="displayColor"></param> /// <param name="displayColor">L3</param>
/// <param name="displayStripeColor"></param> /// <param name="displayStripeColor">M3</param>
/// <returns></returns> /// <returns></returns>
private static string GetWireColorCode(string displayColor, string displayStripeColor = null) private static string GetWireColorCode(string displayColor, string displayStripeColor = null)
{ {
/*
=IF(AND(!L3="黄色"
!M3="绿色")
"GNYE"
IF(AND(!L3="蓝色"
!M3="白色")
"BUWH"
IF(!L3="红色"
"RD"
IF(!L3="黄色"
"YE"
IF(!L3="蓝色"
"BU"
IF(!L3="绿色"
"GN"
IF(!L3="黑色"
"BK"
IF(!L3="灰色"
"GR"
IF(!L3="白色"
"WH"
IF(!L3="棕色"
"BN"
IF(!L3="橙色"
"OG"
IF(!L3="紫色"
"VT"
IF(!L3="绿/黄双色"
"GNYE"
IF(!L3="浅蓝色"
"LBU"
))))))))))))))
*/
string colorCode; string colorCode;
if (displayColor == "黄色" && displayStripeColor == "绿色") if (displayColor == "黄色" && displayStripeColor == "绿色")
{ {
return "GNYE"; return "GNYE";
} }
else if (displayColor == "蓝色" && displayStripeColor == "白色")
{
return "BUWH";
}
else if (displayColor == "浅蓝色")
{
return "LBU";
}
else else
{ {
colorCode = displayColor switch colorCode = displayColor switch
@ -361,6 +375,47 @@ public partial class MainViewModel : INotifyPropertyChanged
} }
return colorCode; return colorCode;
} }
/// <summary>
/// 获取号码管规格
/// </summary>
public string GetNumberTubeSpecification(string crossSection, string colorCode)
{
if (crossSection == "16")
{
if (colorCode == "YE") return "黄色热缩管φ12定制";
if (colorCode == "GN") return "绿色热缩管φ12定制";
if (colorCode == "RD") return "红色热缩管φ12定制";
if (colorCode == "BU") return "蓝色热缩管φ12定制";
if (colorCode == "GNYE") return "黄绿色热缩管φ12定制";
}
else if (crossSection == "0.3" || crossSection == "0.5" || crossSection == "0.75" || crossSection == "1")
{
return "白色号码管φ2.5/定制";
}
else if (crossSection == "1.5")
{
return "白色号码管φ3定制";
}
else if (crossSection == "2.5")
{
return "白色号码管φ4定制";
}
else if (crossSection == "4")
{
return "白色号码管φ5定制";
}
else if (crossSection == "6")
{
return "白色号码管φ6定制";
}
else if (crossSection == "10")
{
return "白色号码管φ8定制";
}
return string.Empty;
}
public event PropertyChangedEventHandler PropertyChanged; public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName) private void OnPropertyChanged(string propertyName)