出站数据处理
This commit is contained in:
@@ -0,0 +1,196 @@
|
||||
import re
|
||||
|
||||
file_path = r'd:\CodeProject\1440\JY.Inspection\HomeForm.cs'
|
||||
|
||||
with open(file_path, 'r', encoding='utf-8-sig') as f:
|
||||
content = f.read()
|
||||
|
||||
# Define the old method block (from doc comment to closing brace)
|
||||
old_pattern = r''' /// <summary>
|
||||
/// 结果判断
|
||||
/// </summary>
|
||||
/// <param name="list"></param>
|
||||
/// <param name="NGType"></param>
|
||||
/// <param name="strBoiData"></param>
|
||||
private short GetResult\(BlankingData m, ref string strErr,ref List<short> lstError\)
|
||||
\{
|
||||
short res = 0;
|
||||
|
||||
strErr = "";
|
||||
#region 判断各项参数
|
||||
//入站条码判断
|
||||
bool IsBarInOK = !m\.ArrivalBarCode\.Contains\("ERROR"\);
|
||||
//出站条码判断
|
||||
bool IsBarOK = !m\.DepartureBarCode\.Contains\("ERROR"\);
|
||||
//判断条码是否一致
|
||||
bool bBar = true;
|
||||
if \(m\.ArrivalBarCode\.Trim\(\) != m\.DepartureBarCode\.Trim\(\)\)
|
||||
bBar = false;
|
||||
m\.TMDB = bBar \? "OK" : "NG";
|
||||
|
||||
// CCD判断
|
||||
bool isAllCCD = true;
|
||||
foreach \(var propName in ConstValue\.CCD_SDict\.Keys\)
|
||||
\{
|
||||
if \(BlankingDataProps\.TryGetValue\(propName, out var prop\)\)
|
||||
\{
|
||||
string result = prop\.GetValue\(m\)\.ToString\(\);
|
||||
|
||||
if \(result != "OK"\)
|
||||
\{
|
||||
isAllCCD = false;
|
||||
\}
|
||||
\}
|
||||
\}
|
||||
|
||||
bool\[\] b0 = new bool\[16\] \{ true, true, true, true, true, true, true, true, true, true, true, true, true, true,true,true \};
|
||||
b0\[0\] = m\.CCD1 == "OK" \? true : false;
|
||||
b0\[1\] = m\.CCD2 == "OK" \? true : false;
|
||||
b0\[2\] = m\.CCD3 == "OK" \? true : false;
|
||||
b0\[3\] = m\.CCD4 == "OK" \? true : false;
|
||||
b0\[4\] = m\.CCD5 == "OK" \? true : false;
|
||||
b0\[5\] = m\.CCD6 == "OK" \? true : false;
|
||||
b0\[6\] = m\.CCD7 == "OK" \? true : false;
|
||||
b0\[7\] = m\.CCD8 == "OK" \? true : false;
|
||||
b0\[8\] = m\.CCD9 == "OK" \? true : false;
|
||||
b0\[9\] = m\.CCD10 == "OK" \? true : false;
|
||||
b0\[10\] = m\.CCD11 == "OK" \? true : false;
|
||||
b0\[11\] = m\.CCD12 == "OK" \? true : false;
|
||||
b0\[12\] = m\.CCD13 == "OK" \? true : false;
|
||||
b0\[13\] = m\.CCD14 == "OK" \? true : false;
|
||||
b0\[14\] = m\.CCD15 == "OK" \? true : false;
|
||||
b0\[15\] = m\.CCD16 == "OK" \? true : false;
|
||||
#endregion
|
||||
|
||||
|
||||
#region
|
||||
if \( IsBarOK && bBar && b0\[0\] && b0\[1\] && b0\[2\] && b0\[3\] && b0\[4\] && b0\[5\] && b0\[6\] && b0\[7\] && b0\[8\] && b0\[9\] && b0\[10\] && b0\[11\] && b0\[12\] && b0\[13\] && b0\[14\] && b0\[15\]\)
|
||||
\{
|
||||
strErr = "良品";
|
||||
res = 1;
|
||||
lstError\.Add\(res\);
|
||||
return 1;
|
||||
\}.*?return 0;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
\}'''
|
||||
|
||||
new_method = ''' /// <summary>
|
||||
/// 检验结果错误类型
|
||||
/// </summary>
|
||||
private enum InspectionErrorType
|
||||
{
|
||||
ScanError,
|
||||
BarcodeMismatch,
|
||||
CcdError
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检验错误项
|
||||
/// </summary>
|
||||
private class InspectionError
|
||||
{
|
||||
public InspectionErrorType Type { get; set; }
|
||||
public string Description { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// CCD检测项名称(索引0-15对应CCD1-CCD16)
|
||||
/// </summary>
|
||||
private static readonly string[] CcdDefectNames = {
|
||||
"正面(2D/3D)不良", "反面(2D/3D)不良", "左侧面(2D/3D)不良", "右侧面(2D/3D)不良",
|
||||
"顶面(2D/3D)不良", "底面(2D/3D)不良", "底WE1不良", "底WE2不良",
|
||||
"底WE3不良", "底WE4不良", "中ME1不良", "中ME2不良",
|
||||
"中ME3不良", "中ME4不良", "极柱(POS/NEG)不良", "防爆阀(PRO)不良"
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// 结果判断:检查条码和CCD结果,返回错误列表(空列表=良品)
|
||||
/// </summary>
|
||||
/// <param name="m">出站数据实体</param>
|
||||
/// <returns>错误列表,空列表表示良品</returns>
|
||||
private List<InspectionError> GetResult(BlankingData m, ref string strErr)
|
||||
{
|
||||
var errors = new List<InspectionError>();
|
||||
strErr = "";
|
||||
|
||||
// 1. 条码检查
|
||||
bool isBarOK = !m.DepartureBarCode.Contains("ERROR");
|
||||
bool isBarcodeMatch = m.ArrivalBarCode.Trim() == m.DepartureBarCode.Trim();
|
||||
m.TMDB = isBarcodeMatch ? "OK" : "NG";
|
||||
|
||||
// 2. CCD结果检查
|
||||
var ccdValues = new[] {
|
||||
m.CCD1, m.CCD2, m.CCD3, m.CCD4, m.CCD5, m.CCD6, m.CCD7, m.CCD8,
|
||||
m.CCD9, m.CCD10, m.CCD11, m.CCD12, m.CCD13, m.CCD14, m.CCD15, m.CCD16
|
||||
};
|
||||
bool allCcdOk = Array.TrueForAll(ccdValues, v => v == "OK");
|
||||
|
||||
// 3. 全部通过 = 良品
|
||||
if (isBarOK && isBarcodeMatch && allCcdOk)
|
||||
{
|
||||
strErr = "良品";
|
||||
return errors;
|
||||
}
|
||||
|
||||
// 4. 分类收集错误
|
||||
if (!isBarOK)
|
||||
{
|
||||
errors.Add(new InspectionError
|
||||
{
|
||||
Type = InspectionErrorType.ScanError,
|
||||
Description = $"出站扫码不良,出站条码:{m.DepartureBarCode}"
|
||||
});
|
||||
}
|
||||
|
||||
if (!isBarcodeMatch)
|
||||
{
|
||||
errors.Add(new InspectionError
|
||||
{
|
||||
Type = InspectionErrorType.BarcodeMismatch,
|
||||
Description = "入站与出站条码不一致"
|
||||
});
|
||||
}
|
||||
|
||||
for (int i = 0; i < ccdValues.Length; i++)
|
||||
{
|
||||
if (ccdValues[i] != "OK")
|
||||
{
|
||||
errors.Add(new InspectionError
|
||||
{
|
||||
Type = InspectionErrorType.CcdError,
|
||||
Description = CcdDefectNames[i]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
strErr = string.Join(";", errors.Select(e => e.Description));
|
||||
return errors;
|
||||
}'''
|
||||
|
||||
# Use DOTALL to match across lines
|
||||
new_content = re.sub(old_pattern, new_method, content, flags=re.DOTALL)
|
||||
|
||||
if new_content == content:
|
||||
print("ERROR: Pattern not found!")
|
||||
# Try to find partial matches
|
||||
if '结果判断' in content:
|
||||
print("Found '结果判断' in content")
|
||||
if 'private short GetResult' in content:
|
||||
print("Found 'private short GetResult' in content")
|
||||
if '防爆阀(PRO)不良' in content:
|
||||
print("Found '防爆阀(PRO)不良' in content")
|
||||
# Check for the exact method signature
|
||||
idx = content.find('private short GetResult')
|
||||
if idx >= 0:
|
||||
print(f"Found at index {idx}")
|
||||
print(f"Context: {repr(content[idx:idx+100])}")
|
||||
else:
|
||||
with open(file_path, 'w', encoding='utf-8-sig') as f:
|
||||
f.write(new_content)
|
||||
print("SUCCESS: Method replaced!")
|
||||
print(f"Old content length: {len(content)}")
|
||||
print(f"New content length: {len(new_content)}")
|
||||
Reference in New Issue
Block a user