|
@@ -60,20 +60,25 @@ namespace Terminal
|
|
|
string province = header.Substring(0, 2);
|
|
|
string provinceIndex = header.Substring(2);
|
|
|
string provinceQuerySql = "select NumberPlateHeader from numberplatemapping where mappedString = " + province + ";";
|
|
|
- MySqlDataReader reader = Monitor.Monitor.localDBOper.Query(provinceQuerySql);
|
|
|
- try
|
|
|
+ lock (Monitor.Monitor.localDBOper)
|
|
|
{
|
|
|
- if (reader != null && reader.Read() && reader.HasRows)
|
|
|
+ object[] result = Monitor.Monitor.localDBOper.Query(provinceQuerySql);
|
|
|
+ //MySqlDataReader reader = Monitor.Monitor.localDBOper.Query(provinceQuerySql);
|
|
|
+ try
|
|
|
{
|
|
|
- province = reader.GetString("NumberPlateHeader");
|
|
|
- //Console.WriteLine(province);
|
|
|
+ //if (reader != null && reader.Read() && reader.HasRows)
|
|
|
+ //{
|
|
|
+ // province = reader.GetString("NumberPlateHeader");
|
|
|
+ // //Console.WriteLine(province);
|
|
|
+ //}
|
|
|
+ if (result!=null && result.Length > 0) { province = (string)result[0]; }
|
|
|
}
|
|
|
- }
|
|
|
- catch { }
|
|
|
- if (reader != null)
|
|
|
- {
|
|
|
- reader.Close();
|
|
|
- reader.Dispose();
|
|
|
+ catch { }
|
|
|
+ //if (reader != null)
|
|
|
+ //{
|
|
|
+ // reader.Close();
|
|
|
+ // reader.Dispose();
|
|
|
+ //}
|
|
|
}
|
|
|
return province + provinceIndex + identityA + identityB;
|
|
|
}
|
|
@@ -83,27 +88,38 @@ namespace Terminal
|
|
|
private static void UpdateAllParkingSpace()
|
|
|
{
|
|
|
string findParkingSpace = "select parkingSpaceID from parkingspace;";
|
|
|
- MySqlDataReader reader = Monitor.Monitor.localDBOper.Query(findParkingSpace);
|
|
|
HashSet<int> recordsIDSet = new HashSet<int>();
|
|
|
- if (reader != null)
|
|
|
+ lock (Monitor.Monitor.localDBOper)
|
|
|
{
|
|
|
- while (reader.Read())
|
|
|
+ object[] result = Monitor.Monitor.localDBOper.Query(findParkingSpace);
|
|
|
+ if(result!=null && result.Length > 0)
|
|
|
{
|
|
|
- if (reader.HasRows)
|
|
|
+ for (int i = 0; i < result.Length; i++)
|
|
|
{
|
|
|
- recordsIDSet.Add(reader.GetInt32("parkingSpaceID"));
|
|
|
+ recordsIDSet.Add((int)result[i]);
|
|
|
}
|
|
|
}
|
|
|
+ //MySqlDataReader reader = Monitor.Monitor.localDBOper.Query(findParkingSpace);
|
|
|
+ //if (reader != null)
|
|
|
+ //{
|
|
|
+ // while (reader.Read())
|
|
|
+ // {
|
|
|
+ // if (reader.HasRows)
|
|
|
+ // {
|
|
|
+ // recordsIDSet.Add(reader.GetInt32("parkingSpaceID"));
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ //try
|
|
|
+ //{
|
|
|
+ // if (reader != null)
|
|
|
+ // {
|
|
|
+ // reader.Close();
|
|
|
+ // reader.Dispose();
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ //catch { }
|
|
|
}
|
|
|
- try
|
|
|
- {
|
|
|
- if (reader != null)
|
|
|
- {
|
|
|
- reader.Close();
|
|
|
- reader.Dispose();
|
|
|
- }
|
|
|
- }
|
|
|
- catch { }
|
|
|
List<string> updateSpaceList = new List<string>();
|
|
|
List<string> insertSpaceList = new List<string>();
|
|
|
string updateParkingSpace = "";
|
|
@@ -125,8 +141,11 @@ namespace Terminal
|
|
|
}
|
|
|
try
|
|
|
{
|
|
|
- Monitor.Monitor.localDBOper.UpdateTransaction(updateSpaceList);
|
|
|
- Monitor.Monitor.localDBOper.Insert(insertSpaceList);
|
|
|
+ lock (Monitor.Monitor.localDBOper)
|
|
|
+ {
|
|
|
+ Monitor.Monitor.localDBOper.UpdateTransaction(updateSpaceList);
|
|
|
+ Monitor.Monitor.localDBOper.Insert(insertSpaceList);
|
|
|
+ }
|
|
|
}
|
|
|
catch (Exception e) { Log.WriteLog(LogType.process, LogFile.ERROR, "更新本地所有车位异常"); Console.WriteLine("更新本地所有车位异常" + e.Message); }
|
|
|
}
|
|
@@ -135,7 +154,7 @@ namespace Terminal
|
|
|
/// </summary>
|
|
|
/// <param name="lic"></param>
|
|
|
/// <param name="state"></param>
|
|
|
- private static void UpdateVehicle(string lic, int state, int parkingRecordsID, bool park, bool remote)
|
|
|
+ private static void UpdateVehicle(string lic, int state, int parkingRecordsID, bool park, bool remote, int parkingSpaceID)
|
|
|
{
|
|
|
if (lic != "")
|
|
|
{
|
|
@@ -152,18 +171,40 @@ namespace Terminal
|
|
|
}
|
|
|
if (reader != null && reader.Read() && reader.HasRows)
|
|
|
{
|
|
|
+ try
|
|
|
+ {
|
|
|
+ reader.Close();
|
|
|
+ reader.Dispose();
|
|
|
+ }
|
|
|
+ catch { }
|
|
|
//更新车辆状态
|
|
|
string updateVehicleState = "";
|
|
|
+ string updateRemoteVehicleState = "";
|
|
|
if (park)
|
|
|
{
|
|
|
if (parkingRecordsID > 0)
|
|
|
- updateVehicleState = "update vehicle set vehiclepParkState = " + state + " ,parkingRecordsID = " + parkingRecordsID + " where numberPlate = '" + lic + "';";
|
|
|
+ {
|
|
|
+ if (parkingSpaceID == 0)
|
|
|
+ {
|
|
|
+ updateVehicleState = "update vehicle set vehiclepParkState = " + state + " ,parkingRecordsID = " + parkingRecordsID + " where numberPlate = '" + lic + "';";
|
|
|
+ updateRemoteVehicleState = "update vehicle set vehiclepParkState = " + state + " ,parkingRecordsID = " + parkingRecordsID + ",garageID = " + Monitor.Monitor.garageID + "where numberPlate = '" + lic + "';";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ updateVehicleState = "update vehicle set vehiclepParkState = " + state + " ,parkingRecordsID = " + parkingRecordsID + ",parkingSpaceID = " + parkingSpaceID + " where numberPlate = '" + lic + "';";
|
|
|
+ updateRemoteVehicleState = "update vehicle set vehiclepParkState = " + state + " ,parkingRecordsID = " + parkingRecordsID + ",parkingSpaceID = " + parkingSpaceID + ",garageID = " + Monitor.Monitor.garageID + "where numberPlate = '" + lic + "';";
|
|
|
+ }
|
|
|
+ }
|
|
|
else
|
|
|
+ {
|
|
|
updateVehicleState = "update vehicle set vehiclepParkState = " + state + " where numberPlate = '" + lic + "';";
|
|
|
+ updateRemoteVehicleState = updateVehicleState;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
updateVehicleState = "update vehicle set vehiclepParkState = " + state + " where numberPlate = '" + lic + "';";
|
|
|
+ updateRemoteVehicleState = updateVehicleState;
|
|
|
}
|
|
|
List<string> list = new List<string>();
|
|
|
list.Add(updateVehicleState);
|
|
@@ -175,6 +216,7 @@ namespace Terminal
|
|
|
{
|
|
|
Monitor.Monitor.remoteDBOper.UpdateTransaction(list);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -207,12 +249,7 @@ namespace Terminal
|
|
|
Monitor.Monitor.remoteDBOper.Insert(list);
|
|
|
}
|
|
|
}
|
|
|
- try
|
|
|
- {
|
|
|
- reader.Close();
|
|
|
- reader.Dispose();
|
|
|
- }
|
|
|
- catch { }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
@@ -302,8 +339,15 @@ namespace Terminal
|
|
|
string userLicense = GetLicenseFromTerm(term);
|
|
|
//与云端数据比对
|
|
|
string checkNetSql = "select * from user where userID = 1;";
|
|
|
- if (Monitor.Monitor.remoteDBOper.Query(checkNetSql) != null)
|
|
|
+ MySqlDataReader readerTest = Monitor.Monitor.remoteDBOper.Query(checkNetSql);
|
|
|
+ if ( readerTest!= null && readerTest.Read() && readerTest.HasRows)
|
|
|
{
|
|
|
+ try
|
|
|
+ {
|
|
|
+ readerTest.Close();
|
|
|
+ readerTest.Dispose();
|
|
|
+ }
|
|
|
+ catch { }
|
|
|
string userInfoCheckSql = "select * from usercarrelation where userID = '" + userID + "'and numberPlate = '" + userLicense + "';";
|
|
|
MySqlDataReader reader = Monitor.Monitor.remoteDBOper.Query(userInfoCheckSql);
|
|
|
if (reader != null && reader.Read() && reader.HasRows && userID != 0 && userLicense != "")
|
|
@@ -312,12 +356,6 @@ namespace Terminal
|
|
|
Monitor.Monitor.PLC.WriteToPLC(ts, PLCDataType.central);
|
|
|
numReceivedStatus = 1;
|
|
|
Log.WriteLog(LogType.process, LogFile.INFO, "号牌验证成功");
|
|
|
- try
|
|
|
- {
|
|
|
- reader.Close();
|
|
|
- reader.Dispose();
|
|
|
- }
|
|
|
- catch { }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -326,6 +364,12 @@ namespace Terminal
|
|
|
numReceivedStatus = 2;
|
|
|
Log.WriteLog(LogType.process, LogFile.WARNING, "号牌验证失败");
|
|
|
}
|
|
|
+ try
|
|
|
+ {
|
|
|
+ reader.Close();
|
|
|
+ reader.Dispose();
|
|
|
+ }
|
|
|
+ catch { }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -390,8 +434,8 @@ namespace Terminal
|
|
|
}
|
|
|
//无车位信息则跳出当前循环
|
|
|
if (parkingSpaceID == 0) break;
|
|
|
- UpdateVehicle(license, 0, 0, true, false);
|
|
|
- UpdateVehicle(license, 0, 0, true, true);
|
|
|
+ UpdateVehicle(license, 0, 0, true, false,0);
|
|
|
+ UpdateVehicle(license, 0, 0, true, true,0);
|
|
|
//插入停车记录
|
|
|
string parkingRecordsSql = "";
|
|
|
if (term.licenseCodeA != 0)
|
|
@@ -453,11 +497,11 @@ namespace Terminal
|
|
|
//更新本地车辆表
|
|
|
if (parkingRecordsID != 0)
|
|
|
{
|
|
|
- UpdateVehicle(license, 1, parkingRecordsID, true, false);
|
|
|
+ UpdateVehicle(license, 1, parkingRecordsID, true, false, parkingSpaceID);
|
|
|
}
|
|
|
if (remoteParkingRecordsID != 0)
|
|
|
{
|
|
|
- UpdateVehicle(license, 1, remoteParkingRecordsID, true, true);
|
|
|
+ UpdateVehicle(license, 1, remoteParkingRecordsID, true, true, parkingSpaceID);
|
|
|
}
|
|
|
Log.WriteLog(LogType.process, LogFile.INFO, "停车记录表已更新");
|
|
|
//更新本地车位
|
|
@@ -740,26 +784,27 @@ namespace Terminal
|
|
|
{
|
|
|
fee = FeeCalc(PaymentScheme.ins, parkTime, orderTimeLength);
|
|
|
}
|
|
|
-
|
|
|
- if (Monitor.Monitor.PLC != null)
|
|
|
+ try
|
|
|
{
|
|
|
- TerminalStru FeeMsg = new TerminalStru
|
|
|
+ if (Monitor.Monitor.PLC != null)
|
|
|
{
|
|
|
- terminalID = (short)termIndex,
|
|
|
- paymentStatus = (short)-1,
|
|
|
- licVerification = (short)-1,
|
|
|
- parkingFee = (short)fee,
|
|
|
- userType = (short)(monthCardType + 1)
|
|
|
- };
|
|
|
- Console.WriteLine(FeeMsg);
|
|
|
- Monitor.Monitor.PLC.WriteToPLC(FeeMsg, PLCDataType.central);
|
|
|
- Log.WriteLog(LogType.process, LogFile.INFO, "停车费用已发送至PLC");
|
|
|
+ TerminalStru FeeMsg = new TerminalStru();
|
|
|
+ FeeMsg.terminalID = (short)termIndex;
|
|
|
+ FeeMsg.paymentStatus = (short)-1;
|
|
|
+ FeeMsg.licVerification = (short)-1;
|
|
|
+ FeeMsg.parkingFee = (short)fee;
|
|
|
+ FeeMsg.userType = (short)(monthCardType + 1);
|
|
|
+ Console.WriteLine(FeeMsg);
|
|
|
+ Monitor.Monitor.PLC.WriteToPLC(FeeMsg, PLCDataType.central);
|
|
|
+ Log.WriteLog(LogType.process, LogFile.INFO, "停车费用已发送至PLC");
|
|
|
+ }
|
|
|
}
|
|
|
+ catch { Console.WriteLine("error"); }
|
|
|
}
|
|
|
//4.等待终端获得收费完成信号且将凭证号清除后,清除收费完成信号并将信息写入数据库
|
|
|
while (!isClosing && termIndex != -1)
|
|
|
{
|
|
|
- if (terminalInfo[termIndex-1].receiptNum == 0)
|
|
|
+ if (terminalInfo[termIndex - 1].receiptNum == 0)
|
|
|
{
|
|
|
Log.WriteLog(LogType.process, LogFile.INFO, "检测到凭证号已被清除");
|
|
|
TerminalStru fetchReset = new TerminalStru
|
|
@@ -771,16 +816,22 @@ namespace Terminal
|
|
|
userType = (short)0
|
|
|
};
|
|
|
Monitor.Monitor.PLC.WriteToPLC(fetchReset, PLCDataType.central);
|
|
|
- //更新停车记录
|
|
|
- string updateParkingRecordsSql = "update parkingrecords set parkingRecordsState = 6,realGetTime = '"
|
|
|
- + currentTime.ToString("yyyy-MM-dd HH:mm:ss") + "',parkingPrice = " + fee + " where receiptNum = '" + receiptNum + "';";
|
|
|
+ //更新停车记录与车辆状态
|
|
|
+ string updateParkingRecordsSql = "update parkingrecords set parkingRecordsState = 6,realGetTime = '" + currentTime.ToString("yyyy-MM-dd HH:mm:ss") +
|
|
|
+ "',parkingPrice = " + fee + " where receiptNum = '" + receiptNum + "';";
|
|
|
List<string> list = new List<string>();
|
|
|
list.Add(updateParkingRecordsSql);
|
|
|
- Monitor.Monitor.localDBOper.UpdateTransaction(list);
|
|
|
- Monitor.Monitor.remoteDBOper.UpdateTransaction(list);
|
|
|
- //更新车辆状态
|
|
|
- UpdateVehicle(numberPlate, 0, parkingRecordsID, false, false);
|
|
|
- UpdateVehicle(numberPlate, 0, remoteParkingRecordsID, false, true);
|
|
|
+
|
|
|
+ lock (Monitor.Monitor.localDBOper)
|
|
|
+ {
|
|
|
+ Monitor.Monitor.localDBOper.UpdateTransaction(list);
|
|
|
+ UpdateVehicle(numberPlate, 0, parkingRecordsID, false, false, 0);
|
|
|
+ }
|
|
|
+ lock (Monitor.Monitor.remoteDBOper)
|
|
|
+ {
|
|
|
+ Monitor.Monitor.remoteDBOper.UpdateTransaction(list);
|
|
|
+ UpdateVehicle(numberPlate, 0, remoteParkingRecordsID, false, true, 0);
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
Thread.Sleep(1000);
|