分档
This commit is contained in:
@@ -256,6 +256,23 @@ namespace JinYuan.ControlCenters
|
|||||||
}
|
}
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
private int JudgmentWGJResult(int A, int[,] B, int C)
|
||||||
|
{
|
||||||
|
int Result = 1;
|
||||||
|
OK_NG = "OK";
|
||||||
|
for (int i = 0; i < 28; i++)
|
||||||
|
{
|
||||||
|
if (B[C,i] ==1)
|
||||||
|
{
|
||||||
|
//1OK,2扫码NG,3MES反馈NG,4其他NG
|
||||||
|
Result = 4;
|
||||||
|
OK_NG = "NG";
|
||||||
|
NG_Type += $"外观检测NG{i + 1}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Result;
|
||||||
|
}
|
||||||
#region 上料工位(数据处理)
|
#region 上料工位(数据处理)
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 上料工位
|
/// 上料工位
|
||||||
@@ -1801,38 +1818,39 @@ namespace JinYuan.ControlCenters
|
|||||||
|
|
||||||
//不良代码判定
|
//不良代码判定
|
||||||
List<string> NGcodeList = new List<string>();
|
List<string> NGcodeList = new List<string>();
|
||||||
NGcodeList = NGcode(m.list_Data1[i, 10], m.list_Data1[i, 11], m.list_Data1[i, 12], m.list_Data1[i, 15], m.list_Data1[i, 26], m.list_Data1[i, 16]
|
//NGcodeList = NGcode(m.list_Data1[i, 10], m.list_Data1[i, 11], m.list_Data1[i, 12], m.list_Data1[i, 15], m.list_Data1[i, 26], m.list_Data1[i, 16]
|
||||||
, m.list_Data1[i, 17], m.list_Data1[i, 18], m.list_Data1[i, 19], m.list_Data1[i, 23], m.list_Data1[i, 24], m.list_Data1[i, 25], m.list_Data1[i, 27]);
|
// , m.list_Data1[i, 17], m.list_Data1[i, 18], m.list_Data1[i, 19], m.list_Data1[i, 23], m.list_Data1[i, 24], m.list_Data1[i, 25], m.list_Data1[i, 27]);
|
||||||
|
NGcodeList = NGWGJcode(m.list_Data1,i);
|
||||||
|
|
||||||
//电芯CCD判定结果
|
//电芯CCD判定结果
|
||||||
#region //电芯CCD判定结果
|
#region //电芯CCD判定结果 1 0K 0NG 2缺图
|
||||||
m.CCDResult1 = m.CCD_Data[i, 0] == 0 ? "OK" : (m.CCD_Data[i, 0] == 1 ? "NG" : "缺图");
|
m.CCDResult1 = m.CCD_Data[i, 0] == 1 ? "OK" : (m.CCD_Data[i, 0] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult2 = m.CCD_Data[i, 1] == 0 ? "OK" : (m.CCD_Data[i, 1] == 1 ? "NG" : "缺图");
|
m.CCDResult2 = m.CCD_Data[i, 1] == 1 ? "OK" : (m.CCD_Data[i, 1] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult3 = m.CCD_Data[i, 2] == 0 ? "OK" : (m.CCD_Data[i, 2] == 1 ? "NG" : "缺图");
|
m.CCDResult3 = m.CCD_Data[i, 2] == 1 ? "OK" : (m.CCD_Data[i, 2] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult4 = m.CCD_Data[i, 3] == 0 ? "OK" : (m.CCD_Data[i, 3] == 1 ? "NG" : "缺图");
|
m.CCDResult4 = m.CCD_Data[i, 3] == 1 ? "OK" : (m.CCD_Data[i, 3] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult5 = m.CCD_Data[i, 4] == 0 ? "OK" : (m.CCD_Data[i, 4] == 1 ? "NG" : "缺图");
|
m.CCDResult5 = m.CCD_Data[i, 4] == 1 ? "OK" : (m.CCD_Data[i, 4] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult6 = m.CCD_Data[i, 5] == 0 ? "OK" : (m.CCD_Data[i, 5] == 1 ? "NG" : "缺图");
|
m.CCDResult6 = m.CCD_Data[i, 5] == 1 ? "OK" : (m.CCD_Data[i, 5] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult7 = m.CCD_Data[i, 6] == 0 ? "OK" : (m.CCD_Data[i, 6] == 1 ? "NG" : "缺图");
|
m.CCDResult7 = m.CCD_Data[i, 6] == 1 ? "OK" : (m.CCD_Data[i, 6] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult8 = m.CCD_Data[i, 7] == 0 ? "OK" : (m.CCD_Data[i, 7] == 1 ? "NG" : "缺图");
|
m.CCDResult8 = m.CCD_Data[i, 7] == 1 ? "OK" : (m.CCD_Data[i, 7] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult9 = m.CCD_Data[i, 8] == 0 ? "OK" : (m.CCD_Data[i, 8] == 1 ? "NG" : "缺图");
|
m.CCDResult9 = m.CCD_Data[i, 8] == 1 ? "OK" : (m.CCD_Data[i, 8] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult10 = m.CCD_Data[i, 9] == 0 ? "OK" : (m.CCD_Data[i, 9] == 1 ? "NG" : "缺图");
|
m.CCDResult10 = m.CCD_Data[i, 9] == 1 ? "OK" : (m.CCD_Data[i, 9] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult11 = m.CCD_Data[i, 10] == 0 ? "OK" : (m.CCD_Data[i, 10] == 1 ? "NG" : "缺图");
|
m.CCDResult11 = m.CCD_Data[i, 10] == 1 ? "OK" : (m.CCD_Data[i, 10] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult12 = m.CCD_Data[i, 11] == 0 ? "OK" : (m.CCD_Data[i, 11] == 1 ? "NG" : "缺图");
|
m.CCDResult12 = m.CCD_Data[i, 11] == 1 ? "OK" : (m.CCD_Data[i, 11] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult13 = m.CCD_Data[i, 12] == 0 ? "OK" : (m.CCD_Data[i, 12] == 1 ? "NG" : "缺图");
|
m.CCDResult13 = m.CCD_Data[i, 12] == 1 ? "OK" : (m.CCD_Data[i, 12] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult14 = m.CCD_Data[i, 13] == 0 ? "OK" : (m.CCD_Data[i, 13] == 1 ? "NG" : "缺图");
|
m.CCDResult14 = m.CCD_Data[i, 13] == 1 ? "OK" : (m.CCD_Data[i, 13] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult15 = m.CCD_Data[i, 14] == 0 ? "OK" : (m.CCD_Data[i, 14] == 1 ? "NG" : "缺图");
|
m.CCDResult15 = m.CCD_Data[i, 14] == 1 ? "OK" : (m.CCD_Data[i, 14] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult16 = m.CCD_Data[i, 15] == 0 ? "OK" : (m.CCD_Data[i, 15] == 1 ? "NG" : "缺图");
|
m.CCDResult16 = m.CCD_Data[i, 15] == 1 ? "OK" : (m.CCD_Data[i, 15] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult17 = m.CCD_Data[i, 16] == 0 ? "OK" : (m.CCD_Data[i, 16] == 1 ? "NG" : "缺图");
|
m.CCDResult17 = m.CCD_Data[i, 16] == 1 ? "OK" : (m.CCD_Data[i, 16] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult18 = m.CCD_Data[i, 17] == 0 ? "OK" : (m.CCD_Data[i, 17] == 1 ? "NG" : "缺图");
|
m.CCDResult18 = m.CCD_Data[i, 17] == 1 ? "OK" : (m.CCD_Data[i, 17] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult19 = m.CCD_Data[i, 18] == 0 ? "OK" : (m.CCD_Data[i, 18] == 1 ? "NG" : "缺图");
|
m.CCDResult19 = m.CCD_Data[i, 18] == 1 ? "OK" : (m.CCD_Data[i, 18] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult20 = m.CCD_Data[i, 19] == 0 ? "OK" : (m.CCD_Data[i, 19] == 1 ? "NG" : "缺图");
|
m.CCDResult20 = m.CCD_Data[i, 19] == 1 ? "OK" : (m.CCD_Data[i, 19] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult21 = m.CCD_Data[i, 20] == 0 ? "OK" : (m.CCD_Data[i, 20] == 1 ? "NG" : "缺图");
|
m.CCDResult21 = m.CCD_Data[i, 20] == 1 ? "OK" : (m.CCD_Data[i, 20] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult22 = m.CCD_Data[i, 21] == 0 ? "OK" : (m.CCD_Data[i, 21] == 1 ? "NG" : "缺图");
|
m.CCDResult22 = m.CCD_Data[i, 21] == 1 ? "OK" : (m.CCD_Data[i, 21] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult23 = m.CCD_Data[i, 22] == 0 ? "OK" : (m.CCD_Data[i, 22] == 1 ? "NG" : "缺图");
|
m.CCDResult23 = m.CCD_Data[i, 22] == 1 ? "OK" : (m.CCD_Data[i, 22] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult24 = m.CCD_Data[i, 23] == 0 ? "OK" : (m.CCD_Data[i, 23] == 1 ? "NG" : "缺图");
|
m.CCDResult24 = m.CCD_Data[i, 23] == 1 ? "OK" : (m.CCD_Data[i, 23] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult25 = m.CCD_Data[i, 24] == 0 ? "OK" : (m.CCD_Data[i, 24] == 1 ? "NG" : "缺图");
|
m.CCDResult25 = m.CCD_Data[i, 24] == 1 ? "OK" : (m.CCD_Data[i, 24] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult26 = m.CCD_Data[i, 25] == 0 ? "OK" : (m.CCD_Data[i, 25] == 1 ? "NG" : "缺图");
|
m.CCDResult26 = m.CCD_Data[i, 25] == 1 ? "OK" : (m.CCD_Data[i, 25] == 0 ? "NG" : "缺图");
|
||||||
m.CCDResult27 = m.CCD_Data[i, 26] == 0 ? "OK" : (m.CCD_Data[i, 26] == 1 ? "NG" : "缺图");
|
m.CCDResult27 = m.CCD_Data[i, 26] == 1 ? "OK" : (m.CCD_Data[i, 26] == 0 ? "NG" : "缺图");
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
m.CSBYHASCANNINGTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
m.CSBYHASCANNINGTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||||
@@ -1851,9 +1869,10 @@ namespace JinYuan.ControlCenters
|
|||||||
{
|
{
|
||||||
for (int ii = 0; ii < 27; ii++)
|
for (int ii = 0; ii < 27; ii++)
|
||||||
{
|
{
|
||||||
if (m.CCD_Data[i, ii] != 0)
|
if (m.CCD_Data[i, ii] != 1)
|
||||||
{
|
{
|
||||||
MyRes[i] = m.CCD_Data[i, ii];
|
//1OK,2扫码NG,3MES反馈NG,4其他NG
|
||||||
|
MyRes[i] = 4;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1861,7 +1880,7 @@ namespace JinYuan.ControlCenters
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
MyRes[i] = 1;
|
MyRes[i] = 1;
|
||||||
//MyRes[i] = JudgmentResult(Code_NG, m.CCD_Data);
|
MyRes[i] = JudgmentWGJResult(Code_NG, m.CCD_Data,i);
|
||||||
|
|
||||||
m.Result = MyRes[i];
|
m.Result = MyRes[i];
|
||||||
|
|
||||||
@@ -2008,11 +2027,12 @@ namespace JinYuan.ControlCenters
|
|||||||
#endregion
|
#endregion
|
||||||
JYResult result1 = null;
|
JYResult result1 = null;
|
||||||
JYResult result2 = null;
|
JYResult result2 = null;
|
||||||
|
JYResult result3 = null;
|
||||||
if (pf.IsFeedbackPlc)
|
if (pf.IsFeedbackPlc)
|
||||||
{
|
{
|
||||||
//result1 = CommonMethods.PlcLink.WriteValue(pf.VarList[2].VarAddress, MyRes[0], Data_Type.Short);//判断结果写入PLC
|
//result1 = CommonMethods.PlcLink.WriteValue(pf.VarList[2].VarAddress, MyRes[0], Data_Type.Short);//判断结果写入PLC
|
||||||
//result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
|
//result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
|
||||||
//if (CommonMethods.sysConfig.OKSwitching)
|
// if (CommonMethods.sysConfig.OKSwitching)
|
||||||
{
|
{
|
||||||
//调试发OK
|
//调试发OK
|
||||||
//MyRes[0] = 1;
|
//MyRes[0] = 1;
|
||||||
@@ -2020,7 +2040,7 @@ namespace JinYuan.ControlCenters
|
|||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
result1 = CommonMethods.PlcLink.WriteValue(pf.VarList[2].VarAddress, MyRes[0], Data_Type.Short);//判断结果写入PLC
|
result1 = CommonMethods.PlcLink.WriteValue(pf.VarList[2].VarAddress, MyRes[0], Data_Type.Short);//判断结果写入PLC
|
||||||
result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
|
result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
|
||||||
result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[4].VarAddress, MyRes[2], Data_Type.Short);//判断结果写入PLC
|
result3 = CommonMethods.PlcLink.WriteValue(pf.VarList[4].VarAddress, MyRes[2], Data_Type.Short);//判断结果写入PLC
|
||||||
}
|
}
|
||||||
//else
|
//else
|
||||||
//{
|
//{
|
||||||
@@ -2030,7 +2050,7 @@ namespace JinYuan.ControlCenters
|
|||||||
// result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
|
// result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
JYResult result3 = CommonMethods.PlcLink.WriteValue(pf.VarList[0].VarAddress, 0);//置位0
|
JYResult result4 = CommonMethods.PlcLink.WriteValue(pf.VarList[0].VarAddress, 0);//置位0
|
||||||
CommonMethods.AddDataMonitorLog(0, $"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]},{MyRes[2]}");
|
CommonMethods.AddDataMonitorLog(0, $"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]},{MyRes[2]}");
|
||||||
LoggerHelp.WriteLog($"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]},{MyRes[2]}");
|
LoggerHelp.WriteLog($"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]},{MyRes[2]}");
|
||||||
|
|
||||||
@@ -2212,6 +2232,20 @@ namespace JinYuan.ControlCenters
|
|||||||
|
|
||||||
return NGcodelist;
|
return NGcodelist;
|
||||||
}
|
}
|
||||||
|
//下料不良代码 外观检
|
||||||
|
public List<string> NGWGJcode(short[ ,] lstResult,int index)
|
||||||
|
{
|
||||||
|
List<string> NGcodelist = new List<string>();
|
||||||
|
for (int i = 0; i < 28; i++)
|
||||||
|
{
|
||||||
|
if(lstResult[index,i] == 2)
|
||||||
|
{
|
||||||
|
NGcodelist.Add("WGJA00"+(i+1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NGcodelist;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region NG下料不良代码
|
#region NG下料不良代码
|
||||||
|
|||||||
@@ -783,14 +783,14 @@ namespace JinYuan.MES
|
|||||||
long outTime = sw.ElapsedMilliseconds;
|
long outTime = sw.ElapsedMilliseconds;
|
||||||
if (outTime > 1000)
|
if (outTime > 1000)
|
||||||
{
|
{
|
||||||
LoggerHelp.WriteLog($"预焊出站PC<=>MES上传耗时:{outTime}ms,电芯码:{listBar.CSBYHCODEA}", "MESTime");
|
LoggerHelp.WriteLog($"外观检出站PC<=>MES上传耗时:{outTime}ms,电芯码:{listBar.CSBYHCODEA}", "MESTime");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(result))
|
if (string.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
string resData = result == "" ? "" : result;
|
string resData = result == "" ? "" : result;
|
||||||
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
|
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(包装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
|
||||||
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
|
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(包装)\{nowDate.ToString("HH")}.txt", resJson);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -799,22 +799,22 @@ namespace JinYuan.MES
|
|||||||
{
|
{
|
||||||
res = true;
|
res = true;
|
||||||
GetOutMesResType(res1, listBar.CSBYHCODEA, ref MesMessage, ref mesResType);
|
GetOutMesResType(res1, listBar.CSBYHCODEA, ref MesMessage, ref mesResType);
|
||||||
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
|
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(包装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
|
||||||
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
|
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(包装)\{nowDate.ToString("HH")}.txt", resJson);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GetOutMesResType(res1, listBar.CSBYHCODEA, ref MesMessage, ref mesResType);
|
GetOutMesResType(res1, listBar.CSBYHCODEA, ref MesMessage, ref mesResType);
|
||||||
var resData = res1 == null ? "" : result;
|
var resData = res1 == null ? "" : result;
|
||||||
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
|
resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(包装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
|
||||||
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
|
TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(包装)\{nowDate.ToString("HH")}.txt", resJson);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
resJson = $"产品出站信息(组装)接口发生异常:{ex.Message}";
|
resJson = $"产品出站信息(包装)接口发生异常:{ex.Message}";
|
||||||
LoggerHelp.WriteEX("产品出站信息(组装)接口", ex);
|
LoggerHelp.WriteEX("产品出站信息(包装)接口", ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace JinYuan.Models
|
||||||
|
{
|
||||||
|
public class FDConfig
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 编号
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
public int FdNum { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// OK拉带类型1
|
||||||
|
/// </summary>
|
||||||
|
public string OKLD1Type { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// OK拉带类型2
|
||||||
|
/// </summary>
|
||||||
|
public string OKLD2Type { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// OK拉带类型3
|
||||||
|
/// </summary>
|
||||||
|
public string OKLD3Type { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// OK拉带类型4
|
||||||
|
/// </summary>
|
||||||
|
public string OKLD4Type { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// NG拉带类型5
|
||||||
|
/// </summary>
|
||||||
|
public string NGLD5Type { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// NG拉带类型6
|
||||||
|
/// </summary>
|
||||||
|
public string NGLD6Type { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// NG拉带类型7
|
||||||
|
/// </summary>
|
||||||
|
public string NGLD7Type { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 是否开启分档
|
||||||
|
/// </summary>
|
||||||
|
public bool IsFDActive { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
///是否激活NG电池不分类排出
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
public bool IsNGActive { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -84,6 +84,7 @@
|
|||||||
<Compile Include="AlarmForm.cs" />
|
<Compile Include="AlarmForm.cs" />
|
||||||
<Compile Include="Alarm\AlarmStatus.cs" />
|
<Compile Include="Alarm\AlarmStatus.cs" />
|
||||||
<Compile Include="Alarm\AlarmData.cs" />
|
<Compile Include="Alarm\AlarmData.cs" />
|
||||||
|
<Compile Include="FDConfig.cs" />
|
||||||
<Compile Include="Chart12HourData.cs" />
|
<Compile Include="Chart12HourData.cs" />
|
||||||
<Compile Include="ChartDataType.cs" />
|
<Compile Include="ChartDataType.cs" />
|
||||||
<Compile Include="AGearEntity.cs" />
|
<Compile Include="AGearEntity.cs" />
|
||||||
|
|||||||
@@ -184,6 +184,10 @@ namespace JinYuan.VirtualDataLibrary
|
|||||||
/// 设备风速接口
|
/// 设备风速接口
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string CollectData = "http://10.1.3.66:3000/mock/15/eve_api/ems/iot/upload_device_collect_data";
|
public string CollectData = "http://10.1.3.66:3000/mock/15/eve_api/ems/iot/upload_device_collect_data";
|
||||||
|
/// <summary>
|
||||||
|
/// 设备风速接口
|
||||||
|
/// </summary>
|
||||||
|
public string OkNgParamMesUrl = "http://10.17.128.206/core/api/public/eve/pm/eqm/new/grading";
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
</startup>
|
</startup>
|
||||||
<connectionStrings>
|
<connectionStrings>
|
||||||
<add name="connDbType" connectionString="SqlServer" />
|
<add name="connDbType" connectionString="SqlServer" />
|
||||||
<add name="connString" connectionString="Server=XIAOJUNPC\BARTENDER;DataBase=LargeSquareOne;Uid=xj;Pwd=123" />
|
<add name="connString" connectionString="Server=LAPTOP-2CQQ8RR5\MSSQLSERVER01;DataBase=LargeSquareOne;Uid=sa;Pwd=123" />
|
||||||
<!--<add name="connString" connectionString="Server=ZCDEEPSEAI;DataBase=LargeSquareOne;Uid=sa;Pwd=123" />-->
|
<!--<add name="connString" connectionString="Server=ZCDEEPSEAI;DataBase=LargeSquareOne;Uid=sa;Pwd=123" />-->
|
||||||
<add name="connString2" connectionString="Server=192.168.2.108;DataBase=HBG_CupDataTurnover;Uid=jyzdh;Pwd=eve123456" />
|
<add name="connString2" connectionString="Server=192.168.2.108;DataBase=HBG_CupDataTurnover;Uid=jyzdh;Pwd=eve123456" />
|
||||||
<add name="connString3" connectionString="Server=localhost;DataBase=ProConfigDB;User Id=jypz;Password=eve123456;Persist Security Info=true;Allow Zero Datetime=true;Character Set=utf8;" />
|
<add name="connString3" connectionString="Server=localhost;DataBase=ProConfigDB;User Id=jypz;Password=eve123456;Persist Security Info=true;Allow Zero Datetime=true;Character Set=utf8;" />
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ MES
|
|||||||
设备状态=http://10.22.160.141/core/api/public/eve/pm/eqm/run/status/operation
|
设备状态=http://10.22.160.141/core/api/public/eve/pm/eqm/run/status/operation
|
||||||
能耗=http://10.22.160.141/core/api/public/eve/pm/energy/consumption/collection/submit
|
能耗=http://10.22.160.141/core/api/public/eve/pm/energy/consumption/collection/submit
|
||||||
风速仪=https://iot.eveportal.com:9470/eve_api/ems/iot/upload_device_collect_data
|
风速仪=https://iot.eveportal.com:9470/eve_api/ems/iot/upload_device_collect_data
|
||||||
|
风速仪=https://iot.eveportal.com:9470/eve_api/ems/iot/upload_device_collect_data
|
||||||
|
分档参数=http://10.22.160.141/core/api/public/eve/pm/eqm/new/grading
|
||||||
guid=a270c7d2-9cbd-4739-9a0b-0709b5813332
|
guid=a270c7d2-9cbd-4739-9a0b-0709b5813332
|
||||||
DeviceState=1
|
DeviceState=1
|
||||||
run_AlarmMark=0
|
run_AlarmMark=0
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -198,6 +198,7 @@ namespace LargeSquareOne
|
|||||||
CommonMethods.mesConfig.InPutStationMesUrl = IniConfigHelper.ReadIniData("MES配置", "产品进站", "0");
|
CommonMethods.mesConfig.InPutStationMesUrl = IniConfigHelper.ReadIniData("MES配置", "产品进站", "0");
|
||||||
CommonMethods.mesConfig.EquProcessProcessParamMesUrl = IniConfigHelper.ReadIniData("MES配置", "产品过程加工参数", "0");
|
CommonMethods.mesConfig.EquProcessProcessParamMesUrl = IniConfigHelper.ReadIniData("MES配置", "产品过程加工参数", "0");
|
||||||
CommonMethods.mesConfig.ResultProcessParamMesUrl = IniConfigHelper.ReadIniData("MES配置", "产品结果加工参数", "0");
|
CommonMethods.mesConfig.ResultProcessParamMesUrl = IniConfigHelper.ReadIniData("MES配置", "产品结果加工参数", "0");
|
||||||
|
CommonMethods.mesConfig.OkNgParamMesUrl = IniConfigHelper.ReadIniData("MES配置", "分档参数", "0");
|
||||||
CommonMethods.mesConfig.OutStationMesUrl = IniConfigHelper.ReadIniData("MES配置", "产品出站", "0");
|
CommonMethods.mesConfig.OutStationMesUrl = IniConfigHelper.ReadIniData("MES配置", "产品出站", "0");
|
||||||
CommonMethods.mesConfig.AlarmCurrencyMesUrl = IniConfigHelper.ReadIniData("MES配置", "设备报警", "0");
|
CommonMethods.mesConfig.AlarmCurrencyMesUrl = IniConfigHelper.ReadIniData("MES配置", "设备报警", "0");
|
||||||
CommonMethods.mesConfig.StatusMesUrl = IniConfigHelper.ReadIniData("MES配置", "设备状态", "0");
|
CommonMethods.mesConfig.StatusMesUrl = IniConfigHelper.ReadIniData("MES配置", "设备状态", "0");
|
||||||
|
|||||||
Generated
+70
@@ -29,6 +29,9 @@
|
|||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmSystemSet));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmSystemSet));
|
||||||
|
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||||
|
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||||
|
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||||
this.up_QieHuanPeriod = new JinYuan.ControlLib.UpDownLabel();
|
this.up_QieHuanPeriod = new JinYuan.ControlLib.UpDownLabel();
|
||||||
this.tog_AutoQieHuanM = new JinYuan.ControlLib.Toggle();
|
this.tog_AutoQieHuanM = new JinYuan.ControlLib.Toggle();
|
||||||
this.label16 = new System.Windows.Forms.Label();
|
this.label16 = new System.Windows.Forms.Label();
|
||||||
@@ -73,6 +76,9 @@
|
|||||||
this.title1 = new JinYuan.ControlLib.Title();
|
this.title1 = new JinYuan.ControlLib.Title();
|
||||||
this.label18 = new System.Windows.Forms.Label();
|
this.label18 = new System.Windows.Forms.Label();
|
||||||
this.tog_OKSwitching = new JinYuan.ControlLib.Toggle();
|
this.tog_OKSwitching = new JinYuan.ControlLib.Toggle();
|
||||||
|
this.title5 = new JinYuan.ControlLib.Title();
|
||||||
|
this.dgvFdConfigs = new System.Windows.Forms.DataGridView();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.dgvFdConfigs)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// up_QieHuanPeriod
|
// up_QieHuanPeriod
|
||||||
@@ -647,12 +653,73 @@
|
|||||||
this.tog_OKSwitching.TrueText = "";
|
this.tog_OKSwitching.TrueText = "";
|
||||||
this.tog_OKSwitching.CheckedChanged += new System.EventHandler(this.tog_OKSwitching_CheckedChanged);
|
this.tog_OKSwitching.CheckedChanged += new System.EventHandler(this.tog_OKSwitching_CheckedChanged);
|
||||||
//
|
//
|
||||||
|
// title5
|
||||||
|
//
|
||||||
|
this.title5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(28)))), ((int)(((byte)(68)))));
|
||||||
|
this.title5.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("title5.BackgroundImage")));
|
||||||
|
this.title5.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||||
|
this.title5.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Bold);
|
||||||
|
this.title5.Location = new System.Drawing.Point(22, 424);
|
||||||
|
this.title5.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
|
||||||
|
this.title5.Name = "title5";
|
||||||
|
this.title5.Size = new System.Drawing.Size(117, 37);
|
||||||
|
this.title5.TabIndex = 49;
|
||||||
|
this.title5.TitleName = "分档设置";
|
||||||
|
//
|
||||||
|
// dgvFdConfigs
|
||||||
|
//
|
||||||
|
this.dgvFdConfigs.AllowUserToAddRows = false;
|
||||||
|
this.dgvFdConfigs.AllowUserToDeleteRows = false;
|
||||||
|
this.dgvFdConfigs.AllowUserToResizeRows = false;
|
||||||
|
this.dgvFdConfigs.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(14)))), ((int)(((byte)(23)))), ((int)(((byte)(38)))));
|
||||||
|
this.dgvFdConfigs.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||||
|
this.dgvFdConfigs.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
|
||||||
|
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||||
|
dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(14)))), ((int)(((byte)(23)))), ((int)(((byte)(38)))));
|
||||||
|
dataGridViewCellStyle1.Font = new System.Drawing.Font("微软雅黑", 10.5F);
|
||||||
|
dataGridViewCellStyle1.ForeColor = System.Drawing.Color.White;
|
||||||
|
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(14)))), ((int)(((byte)(23)))), ((int)(((byte)(38)))));
|
||||||
|
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||||
|
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||||
|
this.dgvFdConfigs.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
|
||||||
|
this.dgvFdConfigs.ColumnHeadersHeight = 40;
|
||||||
|
this.dgvFdConfigs.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
|
||||||
|
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||||
|
dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(6)))), ((int)(((byte)(40)))), ((int)(((byte)(86)))));
|
||||||
|
dataGridViewCellStyle2.Font = new System.Drawing.Font("微软雅黑", 10.5F);
|
||||||
|
dataGridViewCellStyle2.ForeColor = System.Drawing.Color.White;
|
||||||
|
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||||
|
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||||
|
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
|
||||||
|
this.dgvFdConfigs.DefaultCellStyle = dataGridViewCellStyle2;
|
||||||
|
this.dgvFdConfigs.EnableHeadersVisualStyles = false;
|
||||||
|
this.dgvFdConfigs.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(21)))), ((int)(((byte)(77)))), ((int)(((byte)(147)))));
|
||||||
|
this.dgvFdConfigs.Location = new System.Drawing.Point(44, 486);
|
||||||
|
this.dgvFdConfigs.Name = "dgvFdConfigs";
|
||||||
|
this.dgvFdConfigs.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
|
||||||
|
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||||
|
dataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(6)))), ((int)(((byte)(40)))), ((int)(((byte)(86)))));
|
||||||
|
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 10.5F);
|
||||||
|
dataGridViewCellStyle3.ForeColor = System.Drawing.Color.White;
|
||||||
|
dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||||
|
dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||||
|
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||||
|
this.dgvFdConfigs.RowHeadersDefaultCellStyle = dataGridViewCellStyle3;
|
||||||
|
this.dgvFdConfigs.RowHeadersWidth = 55;
|
||||||
|
this.dgvFdConfigs.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing;
|
||||||
|
this.dgvFdConfigs.RowTemplate.Height = 40;
|
||||||
|
this.dgvFdConfigs.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False;
|
||||||
|
this.dgvFdConfigs.Size = new System.Drawing.Size(1757, 69);
|
||||||
|
this.dgvFdConfigs.TabIndex = 78;
|
||||||
|
//
|
||||||
// FrmSystemSet
|
// FrmSystemSet
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(14)))), ((int)(((byte)(23)))), ((int)(((byte)(38)))));
|
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(14)))), ((int)(((byte)(23)))), ((int)(((byte)(38)))));
|
||||||
this.ClientSize = new System.Drawing.Size(1370, 651);
|
this.ClientSize = new System.Drawing.Size(1370, 651);
|
||||||
|
this.Controls.Add(this.dgvFdConfigs);
|
||||||
|
this.Controls.Add(this.title5);
|
||||||
this.Controls.Add(this.tog_OKSwitching);
|
this.Controls.Add(this.tog_OKSwitching);
|
||||||
this.Controls.Add(this.label18);
|
this.Controls.Add(this.label18);
|
||||||
this.Controls.Add(this.up_QieHuanPeriod);
|
this.Controls.Add(this.up_QieHuanPeriod);
|
||||||
@@ -702,6 +769,7 @@
|
|||||||
this.Margin = new System.Windows.Forms.Padding(5);
|
this.Margin = new System.Windows.Forms.Padding(5);
|
||||||
this.Name = "FrmSystemSet";
|
this.Name = "FrmSystemSet";
|
||||||
this.Text = "系统设置";
|
this.Text = "系统设置";
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.dgvFdConfigs)).EndInit();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
|
|
||||||
@@ -752,5 +820,7 @@
|
|||||||
private System.Windows.Forms.Label label17;
|
private System.Windows.Forms.Label label17;
|
||||||
private System.Windows.Forms.Label label18;
|
private System.Windows.Forms.Label label18;
|
||||||
private JinYuan.ControlLib.Toggle tog_OKSwitching;
|
private JinYuan.ControlLib.Toggle tog_OKSwitching;
|
||||||
|
private JinYuan.ControlLib.Title title5;
|
||||||
|
private System.Windows.Forms.DataGridView dgvFdConfigs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,15 +1,32 @@
|
|||||||
using JinYuan.ControlLib;
|
using JinYuan.CommunicationLib.Enum;
|
||||||
|
using JinYuan.ControlLib;
|
||||||
using JinYuan.Helper;
|
using JinYuan.Helper;
|
||||||
|
using JinYuan.Models;
|
||||||
using JinYuan.VirtualDataLibrary;
|
using JinYuan.VirtualDataLibrary;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
|
using MiniExcelLibs;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using System.Linq;
|
||||||
|
using static Org.BouncyCastle.Math.EC.ECCurve;
|
||||||
|
using System.Drawing;
|
||||||
|
|
||||||
namespace LargeSquareOne
|
namespace LargeSquareOne
|
||||||
{
|
{
|
||||||
public partial class FrmSystemSet : Form
|
public partial class FrmSystemSet : Form
|
||||||
{
|
{
|
||||||
|
private string FdConfigFilePath = "fd_config.xlsx";
|
||||||
|
private List<FDConfig> fdConfigs;
|
||||||
|
private List<string> PLCTypes = new List<string>();
|
||||||
|
private List<string> NGLDTypes1 = new List<string>();//NG拉带类型
|
||||||
|
private List<string> NGLDTypes2 = new List<string>();//NG拉带类型
|
||||||
|
private List<string> NGLDTypes3 = new List<string>();//NG拉带类型
|
||||||
|
private bool isFDEditing = false;
|
||||||
|
private int editingFDRowIndex = -1;
|
||||||
|
private readonly string configFolderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config");
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 打印日志方法
|
/// 打印日志方法
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -49,6 +66,14 @@ namespace LargeSquareOne
|
|||||||
this.cmb_PLCType.Items.Add("Mitsubishi");
|
this.cmb_PLCType.Items.Add("Mitsubishi");
|
||||||
this.cmb_PLCType.Items.Add("Inovance");
|
this.cmb_PLCType.Items.Add("Inovance");
|
||||||
|
|
||||||
|
FdConfigFilePath = Path.Combine(configFolderPath, "FdConfig.xlsx");
|
||||||
|
PLCTypes.AddRange(new string[] { "OmronFinsTCP", "OmronCipNet" });
|
||||||
|
NGLDTypes1.AddRange(new string[] { "面1", "面2", "面3" });
|
||||||
|
NGLDTypes2.AddRange(new string[] { "面1", "面2", "面3" });
|
||||||
|
NGLDTypes3.AddRange(new string[] { "面1", "面2", "面3" });
|
||||||
|
SetupFDDataGridView();
|
||||||
|
LoadFDConfig();
|
||||||
|
|
||||||
this.tog_AutoStart.IsChecked = CommonMethods.sysConfig.AutoStart;
|
this.tog_AutoStart.IsChecked = CommonMethods.sysConfig.AutoStart;
|
||||||
this.tog_AutoLogin.IsChecked = CommonMethods.sysConfig.AutoLogin;
|
this.tog_AutoLogin.IsChecked = CommonMethods.sysConfig.AutoLogin;
|
||||||
this.tog_AutoLock.IsChecked = CommonMethods.sysConfig.AutoLock;
|
this.tog_AutoLock.IsChecked = CommonMethods.sysConfig.AutoLock;
|
||||||
@@ -73,7 +98,7 @@ namespace LargeSquareOne
|
|||||||
this.up_ShowSeriesCount.ValueChanged += new System.EventHandler(this.up_ShowSeriesCount_ValueChanged);
|
this.up_ShowSeriesCount.ValueChanged += new System.EventHandler(this.up_ShowSeriesCount_ValueChanged);
|
||||||
|
|
||||||
this.devPath = devPath;
|
this.devPath = devPath;
|
||||||
|
|
||||||
InitParam();
|
InitParam();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -417,5 +442,424 @@ namespace LargeSquareOne
|
|||||||
LogMessage(OKMessage, "强制结果OK日志");
|
LogMessage(OKMessage, "强制结果OK日志");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region 分档设置
|
||||||
|
private void LoadFDConfig()
|
||||||
|
{
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (File.Exists(FdConfigFilePath))
|
||||||
|
{
|
||||||
|
using (var stream = File.OpenRead(FdConfigFilePath))
|
||||||
|
{
|
||||||
|
var devices = MiniExcel.Query<FDConfig>(stream).ToList();
|
||||||
|
fdConfigs = devices.Select(device => new FDConfig
|
||||||
|
{
|
||||||
|
FdNum = device.FdNum,
|
||||||
|
OKLD1Type = device.OKLD1Type,
|
||||||
|
OKLD2Type = device.OKLD2Type,
|
||||||
|
OKLD3Type = device.OKLD3Type,
|
||||||
|
OKLD4Type = device.OKLD4Type,
|
||||||
|
NGLD5Type = device.NGLD5Type,
|
||||||
|
NGLD6Type = device.NGLD6Type,
|
||||||
|
NGLD7Type = device.NGLD7Type,
|
||||||
|
IsFDActive = device.IsFDActive,
|
||||||
|
IsNGActive = device.IsNGActive
|
||||||
|
}).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fdConfigs = new List<FDConfig>();
|
||||||
|
}
|
||||||
|
|
||||||
|
RefreshFDDataGridView();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"加载配置文件失败:{ex.Message}", "错误",
|
||||||
|
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
fdConfigs = new List<FDConfig>();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
private void SetColumnsFDReadOnly(bool readOnly)
|
||||||
|
{
|
||||||
|
foreach (DataGridViewColumn col in dgvFdConfigs.Columns)
|
||||||
|
{
|
||||||
|
// PlcNum 列始终保持只读
|
||||||
|
if (col.Name == "FdNum")
|
||||||
|
{
|
||||||
|
col.ReadOnly = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按钮列不需要设置 ReadOnly 属性
|
||||||
|
if (col is DataGridViewButtonColumn)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// 其他列根据参数设置
|
||||||
|
col.ReadOnly = readOnly;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 初始化分档DataGrid
|
||||||
|
/// </summary>
|
||||||
|
private void SetupFDDataGridView()
|
||||||
|
{
|
||||||
|
// 设置基本属性
|
||||||
|
dgvFdConfigs.AutoGenerateColumns = false;
|
||||||
|
dgvFdConfigs.MultiSelect = false;
|
||||||
|
|
||||||
|
// 添加数据列
|
||||||
|
dgvFdConfigs.Columns.AddRange(new DataGridViewColumn[]
|
||||||
|
{
|
||||||
|
new DataGridViewTextBoxColumn
|
||||||
|
{
|
||||||
|
Name = "FdNum",
|
||||||
|
HeaderText = "分档编号",
|
||||||
|
DataPropertyName = "FdNum",
|
||||||
|
ReadOnly = true,
|
||||||
|
Width = 80,
|
||||||
|
ValueType = typeof(int)
|
||||||
|
},
|
||||||
|
#region 分档类型
|
||||||
|
new DataGridViewTextBoxColumn
|
||||||
|
{
|
||||||
|
Name = "OKLD1Type",
|
||||||
|
HeaderText = "OK拉带类型1",
|
||||||
|
DataPropertyName = "OKLD1Type",
|
||||||
|
Width = 120,
|
||||||
|
ValueType = typeof(string)
|
||||||
|
},
|
||||||
|
new DataGridViewTextBoxColumn
|
||||||
|
{
|
||||||
|
Name = "OKLD2Type",
|
||||||
|
HeaderText = "OK拉带类型2",
|
||||||
|
DataPropertyName = "OKLD2Type",
|
||||||
|
Width = 120,
|
||||||
|
ValueType = typeof(string)
|
||||||
|
},
|
||||||
|
new DataGridViewTextBoxColumn
|
||||||
|
{
|
||||||
|
Name = "OKLD3Type",
|
||||||
|
HeaderText = "OK拉带类型3",
|
||||||
|
DataPropertyName = "OKLD3Type",
|
||||||
|
Width = 120,
|
||||||
|
ValueType = typeof(string)
|
||||||
|
},
|
||||||
|
new DataGridViewTextBoxColumn
|
||||||
|
{
|
||||||
|
Name = "OKLD4Type",
|
||||||
|
HeaderText = "OK拉带类型4",
|
||||||
|
DataPropertyName = "OKLD4Type",
|
||||||
|
Width = 120,
|
||||||
|
ValueType = typeof(string)
|
||||||
|
},
|
||||||
|
#endregion
|
||||||
|
#region NG拉带类型
|
||||||
|
new DataGridViewComboBoxColumn
|
||||||
|
{
|
||||||
|
Name = "NGLD5Type",
|
||||||
|
HeaderText = "NG拉带类型5",
|
||||||
|
DataPropertyName = "NGLD5Type",//NG拉带
|
||||||
|
DataSource = new List<string>(NGLDTypes1), // 使用新列表避免引用问题
|
||||||
|
Width = 160,
|
||||||
|
ValueType = typeof(string),
|
||||||
|
FlatStyle = FlatStyle.Flat,
|
||||||
|
DefaultCellStyle = new DataGridViewCellStyle
|
||||||
|
{
|
||||||
|
BackColor = Color.FromArgb(14, 23, 38), // 深色背景
|
||||||
|
ForeColor = Color.White, // 白色文字
|
||||||
|
SelectionBackColor = Color.FromArgb(0, 122, 204), // 选中时的背景色
|
||||||
|
SelectionForeColor = Color.White, // 选中时的文字颜色
|
||||||
|
Font = new Font("微软雅黑", 9F) // 字体设置
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new DataGridViewComboBoxColumn
|
||||||
|
{
|
||||||
|
Name = "NGLD6Type",
|
||||||
|
HeaderText = "NG拉带类型6",
|
||||||
|
DataPropertyName = "NGLD6Type",//NG拉带
|
||||||
|
DataSource = new List<string>(NGLDTypes2), // 使用新列表避免引用问题
|
||||||
|
Width = 160,
|
||||||
|
ValueType = typeof(string),
|
||||||
|
FlatStyle = FlatStyle.Flat,
|
||||||
|
DefaultCellStyle = new DataGridViewCellStyle
|
||||||
|
{
|
||||||
|
BackColor = Color.FromArgb(14, 23, 38), // 深色背景
|
||||||
|
ForeColor = Color.White, // 白色文字
|
||||||
|
SelectionBackColor = Color.FromArgb(0, 122, 204), // 选中时的背景色
|
||||||
|
SelectionForeColor = Color.White, // 选中时的文字颜色
|
||||||
|
Font = new Font("微软雅黑", 9F) // 字体设置
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new DataGridViewComboBoxColumn
|
||||||
|
{
|
||||||
|
Name = "NGLD7Type",
|
||||||
|
HeaderText = "NG拉带类型7",
|
||||||
|
DataPropertyName = "NGLD7Type",//NG拉带
|
||||||
|
DataSource = new List<string>(NGLDTypes3), // 使用新列表避免引用问题
|
||||||
|
Width = 160,
|
||||||
|
ValueType = typeof(string),
|
||||||
|
FlatStyle = FlatStyle.Flat,
|
||||||
|
DefaultCellStyle = new DataGridViewCellStyle
|
||||||
|
{
|
||||||
|
BackColor = Color.FromArgb(14, 23, 38), // 深色背景
|
||||||
|
ForeColor = Color.White, // 白色文字
|
||||||
|
SelectionBackColor = Color.FromArgb(0, 122, 204), // 选中时的背景色
|
||||||
|
SelectionForeColor = Color.White, // 选中时的文字颜色
|
||||||
|
Font = new Font("微软雅黑", 9F) // 字体设置
|
||||||
|
}
|
||||||
|
},
|
||||||
|
#endregion
|
||||||
|
#region 开启分档
|
||||||
|
new DataGridViewCheckBoxColumn
|
||||||
|
{
|
||||||
|
Name = "IsFDActive",
|
||||||
|
HeaderText = "开启分档",
|
||||||
|
DataPropertyName = "IsFDActive",
|
||||||
|
Width = 80,
|
||||||
|
ValueType = typeof(bool),
|
||||||
|
TrueValue = true,
|
||||||
|
FalseValue = false
|
||||||
|
},
|
||||||
|
new DataGridViewCheckBoxColumn
|
||||||
|
{
|
||||||
|
Name = "IsNGActive",
|
||||||
|
HeaderText = "NG电池不分类排出",
|
||||||
|
DataPropertyName = "IsNGActive",
|
||||||
|
Width = 80,
|
||||||
|
ValueType = typeof(bool),
|
||||||
|
TrueValue = true,
|
||||||
|
FalseValue = false
|
||||||
|
},
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
new DataGridViewButtonColumn
|
||||||
|
{
|
||||||
|
Name = "Edit",
|
||||||
|
HeaderText = "操作",
|
||||||
|
Text = "修改",
|
||||||
|
UseColumnTextForButtonValue = true,
|
||||||
|
Width = 80
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// 设置列为只读
|
||||||
|
SetColumnsFDReadOnly(false);
|
||||||
|
|
||||||
|
// 绑定事件
|
||||||
|
dgvFdConfigs.CellClick += DgvFdConfigs_CellClick;
|
||||||
|
dgvFdConfigs.CellValidating += DgvFdConfigs_CellValidating;
|
||||||
|
dgvFdConfigs.CellValueChanged += DgvFdConfigs_CellValueChanged;
|
||||||
|
dgvFdConfigs.DataError += DgvFdConfigs_DataError;
|
||||||
|
|
||||||
|
// 设置自动调整行高
|
||||||
|
dgvFdConfigs.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
|
||||||
|
dgvFdConfigs.RowHeadersVisible = false;
|
||||||
|
}
|
||||||
|
private void DgvFdConfigs_CellClick(object sender, DataGridViewCellEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.RowIndex < 0) return;
|
||||||
|
|
||||||
|
var columnName = dgvFdConfigs.Columns[e.ColumnIndex].Name;
|
||||||
|
|
||||||
|
// 如果正在编辑其他行,阻止操作
|
||||||
|
if (isFDEditing && editingFDRowIndex != e.RowIndex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("请先完成当前编辑操作", "提示",
|
||||||
|
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var fdConfig = fdConfigs[e.RowIndex];
|
||||||
|
|
||||||
|
switch (columnName)
|
||||||
|
{
|
||||||
|
case "Edit":
|
||||||
|
HandleFDEdit(e.RowIndex);
|
||||||
|
break;
|
||||||
|
case "CommConfig":
|
||||||
|
HandleCommFdConfig(fdConfig);
|
||||||
|
break;
|
||||||
|
case "VariableConfig":
|
||||||
|
HandleVariableFdConfig(fdConfig);
|
||||||
|
break;
|
||||||
|
case "Delete":
|
||||||
|
HandleFdDelete(e.RowIndex, fdConfig);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void HandleFDEdit(int rowIndex)
|
||||||
|
{
|
||||||
|
if (!isFDEditing)
|
||||||
|
{
|
||||||
|
// 开始编辑
|
||||||
|
isFDEditing = true;
|
||||||
|
editingFDRowIndex = rowIndex;
|
||||||
|
SetColumnsFDReadOnly(false); // 设置其他列为可编辑
|
||||||
|
|
||||||
|
// 更改编辑按钮文本为"保存"
|
||||||
|
dgvFdConfigs.Rows[rowIndex].Cells["Edit"].Value = "保存";
|
||||||
|
|
||||||
|
// 禁用其他行的按钮
|
||||||
|
foreach (DataGridViewRow row in dgvFdConfigs.Rows)
|
||||||
|
{
|
||||||
|
if (row.Index != rowIndex)
|
||||||
|
{
|
||||||
|
if (row.Cells["Edit"] is DataGridViewButtonCell editCell)
|
||||||
|
editCell.Value = "";
|
||||||
|
if (row.Cells["CommConfig"] is DataGridViewButtonCell configCell)
|
||||||
|
configCell.Value = "";
|
||||||
|
if (row.Cells["Delete"] is DataGridViewButtonCell deleteCell)
|
||||||
|
deleteCell.Value = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 禁用添加按钮
|
||||||
|
//btAddPLC.Enabled = false;
|
||||||
|
}
|
||||||
|
else if (rowIndex == editingFDRowIndex)
|
||||||
|
{
|
||||||
|
// 保存更改
|
||||||
|
//if (ValidateRow(rowIndex))
|
||||||
|
{
|
||||||
|
SaveFDChanges(rowIndex);
|
||||||
|
EndFDEditing();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void EndFDEditing()
|
||||||
|
{
|
||||||
|
isFDEditing = false;
|
||||||
|
editingFDRowIndex = -1;
|
||||||
|
SetColumnsFDReadOnly(true);
|
||||||
|
|
||||||
|
// 恢复所有按钮文本和状态
|
||||||
|
foreach (DataGridViewRow row in dgvFdConfigs.Rows)
|
||||||
|
{
|
||||||
|
row.Cells["Edit"].Value = "编辑";
|
||||||
|
// row.Cells["CommConfig"].Value = "通信组";
|
||||||
|
// row.Cells["Delete"].Value = "删除";
|
||||||
|
}
|
||||||
|
|
||||||
|
// 启用添加按钮
|
||||||
|
//btAddPLC.Enabled = true;
|
||||||
|
}
|
||||||
|
private void HandleCommFdConfig(FDConfig fdconfig)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
private void HandleVariableFdConfig(FDConfig fdconfig)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
private void HandleFdDelete(int rowIndex, FDConfig fdconfig)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show($"确定要删除 分档 {fdconfig.FdNum} 吗?", "确认删除",
|
||||||
|
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
fdConfigs.RemoveAt(rowIndex);
|
||||||
|
SaveFDConfig();
|
||||||
|
RefreshFDDataGridView();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void SaveFDChanges(int rowIndex)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var row = dgvFdConfigs.Rows[rowIndex];
|
||||||
|
var config = fdConfigs[rowIndex];
|
||||||
|
|
||||||
|
// 更新配置对象
|
||||||
|
config.OKLD1Type = row.Cells["OKLD1Type"].Value?.ToString() ?? "";
|
||||||
|
config.OKLD2Type = row.Cells["OKLD2Type"].Value?.ToString() ?? "";
|
||||||
|
config.OKLD3Type = row.Cells["OKLD3Type"].Value?.ToString() ?? "";
|
||||||
|
config.OKLD4Type = row.Cells["OKLD4Type"].Value?.ToString() ?? "";
|
||||||
|
config.NGLD5Type = row.Cells["NGLD5Type"].Value?.ToString() ?? "";
|
||||||
|
config.NGLD6Type = row.Cells["NGLD6Type"].Value?.ToString() ?? "";
|
||||||
|
config.NGLD7Type = row.Cells["NGLD7Type"].Value?.ToString() ?? "";
|
||||||
|
|
||||||
|
config.IsFDActive = row.Cells["IsFDActive"].Value != null &&
|
||||||
|
Convert.ToBoolean(row.Cells["IsFDActive"].Value);
|
||||||
|
config.IsNGActive = row.Cells["IsNGActive"].Value != null &&
|
||||||
|
Convert.ToBoolean(row.Cells["IsNGActive"].Value);
|
||||||
|
|
||||||
|
// 保存更改
|
||||||
|
SaveFDConfig();
|
||||||
|
MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// 这里只显示错误信息,不再抛出异常
|
||||||
|
MessageBox.Show($"保存失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void DgvFdConfigs_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.RowIndex < 0 || !isFDEditing || e.RowIndex != editingFDRowIndex) return;
|
||||||
|
|
||||||
|
string newValue = e.FormattedValue.ToString();
|
||||||
|
var column = dgvFdConfigs.Columns[e.ColumnIndex];
|
||||||
|
|
||||||
|
}
|
||||||
|
private void DgvFdConfigs_CellValueChanged(object sender, DataGridViewCellEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.RowIndex < 0) return;
|
||||||
|
dgvFdConfigs.Rows[e.RowIndex].ErrorText = string.Empty;
|
||||||
|
}
|
||||||
|
private void DgvFdConfigs_DataError(object sender, DataGridViewDataErrorEventArgs e)
|
||||||
|
{
|
||||||
|
e.ThrowException = false;
|
||||||
|
string columnName = dgvFdConfigs.Columns[e.ColumnIndex].HeaderText;
|
||||||
|
MessageBox.Show($"'{columnName}'列的输入数据格式不正确", "数据错误",
|
||||||
|
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||||
|
}
|
||||||
|
private void SaveFDConfig()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 创建备份
|
||||||
|
if (File.Exists(FdConfigFilePath))
|
||||||
|
{
|
||||||
|
string backupFile = $"{FdConfigFilePath}.bak";
|
||||||
|
File.Copy(FdConfigFilePath, backupFile, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 直接保存到目标文件
|
||||||
|
MiniExcel.SaveAs(FdConfigFilePath, fdConfigs, overwriteFile: true);
|
||||||
|
}
|
||||||
|
catch (IOException ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"保存文件时发生IO错误:{ex.Message}\n请确保文件未被其他程序占用。",
|
||||||
|
"保存错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
catch (UnauthorizedAccessException ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"没有足够的权限保存文件:{ex.Message}\n请确保有写入权限。",
|
||||||
|
"权限错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"保存配置时发生错误:{ex.Message}",
|
||||||
|
"保存错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void RefreshFDDataGridView()
|
||||||
|
{
|
||||||
|
dgvFdConfigs.DataSource = null;
|
||||||
|
dgvFdConfigs.DataSource = new BindingList<FDConfig>(fdConfigs);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -220,6 +220,32 @@
|
|||||||
D/IFrNx4XAIJeg4uhvxzLF+6XoRizMQMyNK5LBrK/1nTIc/hTYMc0VMt+SZd7jjliSP5JkTkIGS5PkdC
|
D/IFrNx4XAIJeg4uhvxzLF+6XoRizMQMyNK5LBrK/1nTIc/hTYMc0VMt+SZd7jjliSP5JkTkIGS5PkdC
|
||||||
Wk9ezgnHkQ+8EVvwKl6CPOUjT/s8B1m0ewpPogzr8SjkMa0HsAb34V7IzcdduAO3YwVuxnLI3aAEL6FL
|
Wk9ezgnHkQ+8EVvwKl6CPOUjT/s8B1m0ewpPogzr8SjkMa0HsAb34V7IzcdduAO3YwVuxnLI3aAEL6FL
|
||||||
4FdBQpaAJVgJVQKVMCVICdEPT0LzA5OgXJ8jIVdhJget/gHCnYJyKYtzSwAAAABJRU5ErkJggg==
|
4FdBQpaAJVgJVQKVMCVICdEPT0LzA5OgXJ8jIVdhJget/gHCnYJyKYtzSwAAAABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="title5.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAGgAAAAbCAYAAACQqsrOAAAABGdBTUEAALGPC/xhBQAABNpJREFUaEPt
|
||||||
|
2ltsVEUcx/HZUktF2iKVIHjDijYooFy8khhiNMRogg+gYoxGHopKjDFqgzTGSyRpUkLRtCa2iVpFq32g
|
||||||
|
GAHvb0Uu0RSN3ShVoSFIbEJLbVpp6Z7x+5+ds55uZ3VLtpfd7MMnc2a6Zzv7//VcunOUOqNHo8AxlvaW
|
||||||
|
bTo8aTknnMB8vIcLTH9IV6ApJqKbcnuHPisK95wuPnSqZ2nFD7/zC37LOmf7UegKwuVCNOBW0x/UG9SA
|
||||||
|
1rTatP42Qv2eLn2zXfPmWefOwyokdQTl4nU8ZPr9eqXq9wbU3wTSLzzbRuWdHHiaNy7JGrXl6IIEVImk
|
||||||
|
T3GbUIGQ6tUl6IRWf0FafzuqOrBf2vCLMYFC2AUJZx9yYX7mnHDAg6jDVNXlFahu70fVTRCiiyOnS1qr
|
||||||
|
W3+BKYF904ZfjAkkZx0JR46gK+yY4ZywJdebXZilOjl6OvUn0AkcUZ1eUWDftBIsyARYhgHIdWe1HYtx
|
||||||
|
ThhX4nNcZ/on9BZ1giPGIJBYa5xWf3jX2P3SUnxRxlEhfoUcPW/YsWFcEy5EM+4x/WN6nTrmedBGB6GY
|
||||||
|
bdMO0V9l90tbrsKMk0ZION8jz44NEz9ZuYa8hWdMv927UbXrPlodRSjSHvH7XvR1ac5VmHFQBgmnB/Pt
|
||||||
|
2Ajxk30BtchRbd5cFfaOqzZCaSOMMKQ124yF9duB/dKaqzBjbBH6IAGts2NOwYnej08xXbXqfHXYOwBt
|
||||||
|
tAZEx/axnRfYN625CjOGpiEMCafOjiXkT/Im7Mflpn/Iex86iqPFYPugGTuOWXa/jOAqzBh6BxLOT5Cw
|
||||||
|
XK+JkQleigO4zUy4xStXLQTSQhgj9eEG87oM4irMGHkYEo6c3hbYsf8kE3wMcmqbor7xcnEUOoG9/ofK
|
||||||
|
JK7CjIFS9EICWm/H/pdMUO7cduAJM+E93gqchVZ7sScSbf+1wbwug7gKk2L5aIWEs8OOJcWf5Gx8i6Wm
|
||||||
|
38xprpkwxE5BSKY1+pFRpzlXYVKsFhLOLyiwY0kJTnQlvkKRavRCqjGym1YbH9m2kaAM72dkzOKdqzAp
|
||||||
|
tAYSzhkssWNJi59sObaZ7QavWL0b6YA2GvyWoKLbHwb2S2uuwqTIPHRDAtpox0YlfrLnoRFrTb+e61G9
|
||||||
|
N6jqCKSOYES9tH4/khHXI1dhUkC+ujkICWenHRs114Qvw9e42vRrIuWqlkBqCETaYbge1UbS/nrkKkwK
|
||||||
|
VEHCOYoZdmzUnBPG3fgY+Wp7JITd0Go7IUlbLdtROdVnOxZWhB/hzdZmxTwLWT4YxC1wFj8ZrnB8L2Kz
|
||||||
|
2d4aKVZVXI+qCEVsta0187VT8peSNdLzcBY+Wa5gfOfjA9xp+pWRhSgLClUOPT77lT+/nPPyye8Wb26T
|
||||||
|
JdumrJhtkKVsZ+GT5QomSB61krWhuYGxjOMqzGThnHCc1ajBElyPxVgEWW29FgtQCllVlRsLCbUEsio7
|
||||||
|
D/IFrNx4XAIJeg4uhvxzLF+6XoRizMQMyNK5LBrK/1nTIc/hTYMc0VMt+SZd7jjliSP5JkTkIGS5PkdC
|
||||||
|
Wk9ezgnHkQ+8EVvwKl6CPOUjT/s8B1m0ewpPogzr8SjkMa0HsAb34V7IzcdduAO3YwVuxnLI3aAEL6FL
|
||||||
|
4FdBQpaAJVgJVQKVMCVICdEPT0LzA5OgXJ8jIVdhJget/gHCnYJyKYtzSwAAAABJRU5ErkJggg==
|
||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
Reference in New Issue
Block a user