|
@@ -177,6 +177,7 @@ namespace parkMonitor.server.CoreThread
|
|
|
if (MyTimer.restart && !mt.rolledBack)
|
|
|
{
|
|
|
mt.rolledBack = true;
|
|
|
+ Robot.robot1.occupied = false;
|
|
|
UILogServer.ins.error("启动机械手资源超时,已启动回滚");
|
|
|
Log.WriteLog(LogType.NOT_DATABASE, LogFile.ERROR, "启动机械手资源超时,已启动回滚");
|
|
|
return false;
|
|
@@ -201,8 +202,7 @@ namespace parkMonitor.server.CoreThread
|
|
|
//命令回退
|
|
|
queueCmd.returnedCount += 1;
|
|
|
queuingThread.SetMessage(queueCmd);
|
|
|
- //释放机械手
|
|
|
- Robot.robot1.occupied = false;
|
|
|
+ //线程计数调整
|
|
|
Robot.robot1.waitCount -= 1;
|
|
|
//释放激光
|
|
|
if (lm != null)
|
|
@@ -315,15 +315,6 @@ namespace parkMonitor.server.CoreThread
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- public void sqlRecord(string sql)
|
|
|
- {
|
|
|
-
|
|
|
- }
|
|
|
- public void sqlRecord(List<string> sqls)
|
|
|
- {
|
|
|
-
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -665,7 +656,7 @@ namespace parkMonitor.server.CoreThread
|
|
|
LaserMessage lmToBeReleased; //激光
|
|
|
int freeSpaceCount = 0; //剩余空闲车位
|
|
|
dataReal = WaitForLaserResource(queueCmd, disappeared, out lmToBeReleased);
|
|
|
- //判断激光资源有效性,无效则回滚
|
|
|
+ //判断激光资源有效性,无效代表超时且已点击回滚按钮
|
|
|
if (dataReal == null)
|
|
|
{
|
|
|
Rollback(queueCmd, 0, false, true, lmToBeReleased);
|
|
@@ -674,8 +665,8 @@ namespace parkMonitor.server.CoreThread
|
|
|
//车位分配锁
|
|
|
lock (Parking_Space.spaceLock)
|
|
|
{
|
|
|
- //获取缓冲位资源
|
|
|
bool displayed = false;
|
|
|
+ //等待获取缓冲位资源
|
|
|
while (pb == null && !MyTimer.restart)
|
|
|
{
|
|
|
pb = ParkingBufferManager.ins.MallocParkingBuffer(queueCmd.id);
|
|
@@ -683,10 +674,11 @@ namespace parkMonitor.server.CoreThread
|
|
|
{
|
|
|
Log.WriteLog(LogType.NOT_DATABASE, LogFile.INFO, queueCmd.LicenseNum + "分配缓冲位:" + pb.bufferID);
|
|
|
break;
|
|
|
- }else if (!displayed)
|
|
|
+ }
|
|
|
+ else if (!displayed)
|
|
|
{
|
|
|
UILogServer.ins.error(queueCmd.LicenseNum + "缓冲位已满");
|
|
|
- Log.WriteLog(LogType.NOT_DATABASE, LogFile.ERROR, queueCmd.LicenseNum + "缓冲位分配失败");
|
|
|
+ Log.WriteLog(LogType.NOT_DATABASE, LogFile.WARNING, queueCmd.LicenseNum + "缓冲位分配失败");
|
|
|
displayed = true;
|
|
|
}
|
|
|
Thread.Sleep(2000);
|
|
@@ -768,14 +760,22 @@ namespace parkMonitor.server.CoreThread
|
|
|
List<string> strs = new List<string>();
|
|
|
strs.Add(updateParkingSpaceSql);
|
|
|
strs.Add(updateFreeSpaceSql);
|
|
|
- while (!Operation.MyTransaction(conn, strs, out temp))
|
|
|
+ if (!Operation.MyTransaction(conn, strs, out temp))
|
|
|
{
|
|
|
- //此处为关键步骤,不记入日志
|
|
|
- Thread.Sleep(5000);
|
|
|
- if (MyTimer.restart)
|
|
|
+ //此处为关键步骤,不记入日志,设置全局状态异常
|
|
|
+ EntityForCore.ins.globalStatus = false;
|
|
|
+ int count = 0;
|
|
|
+ while (!MyTimer.restart)
|
|
|
{
|
|
|
- Rollback(queueCmd, ppp.parkingSpaceID,false,true, lmToBeReleased);
|
|
|
+ count++;
|
|
|
+ if (count == 1)
|
|
|
+ {
|
|
|
+ UILogServer.ins.error("数据库操作异常");
|
|
|
+ Log.WriteLog(LogType.NOT_DATABASE, LogFile.ERROR, "缓冲位分配失败,流程已回滚");
|
|
|
+ }
|
|
|
+ Thread.Sleep(5000);
|
|
|
}
|
|
|
+ Rollback(queueCmd, ppp.parkingSpaceID, false, true, lmToBeReleased);
|
|
|
////数据库操作失败写日志
|
|
|
//Log.WriteLog(LogType.DATABASE, "0",updateParkingSpaceSql);
|
|
|
//Log.WriteLog(LogType.DATABASE, "0",updateFreeSpaceSql);
|
|
@@ -923,7 +923,7 @@ namespace parkMonitor.server.CoreThread
|
|
|
if (!Operation.MyTransaction(conn, insertRecordSql, out parkingRecordsID))
|
|
|
{
|
|
|
//数据库操作失败写日志
|
|
|
- Log.WriteLog(LogType.DATABASE, "1",insertRecordSql);
|
|
|
+ Log.WriteLog(LogType.DATABASE, "1", insertRecordSql);
|
|
|
}
|
|
|
}
|
|
|
using (MySqlConnection conn = new MySqlConnection(DBConnection.remoteConf))
|
|
@@ -934,7 +934,7 @@ namespace parkMonitor.server.CoreThread
|
|
|
if (!Operation.MyTransaction(conn, updateVehicleSql, out temp))
|
|
|
{
|
|
|
//数据库操作失败写日志
|
|
|
- Log.WriteLog(LogType.DATABASE,"0", updateVehicleSql);
|
|
|
+ Log.WriteLog(LogType.DATABASE, "0", updateVehicleSql);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1062,6 +1062,19 @@ namespace parkMonitor.server.CoreThread
|
|
|
}
|
|
|
if (vehiclelist == null)
|
|
|
{
|
|
|
+ //无法获取车辆信息,流程中止
|
|
|
+ EntityForCore.ins.globalStatus = false;
|
|
|
+ int count = 0;
|
|
|
+ while (!MyTimer.restart)
|
|
|
+ {
|
|
|
+ count++;
|
|
|
+ if (count == 1)
|
|
|
+ {
|
|
|
+ UILogServer.ins.error("无法获取车辆信息");
|
|
|
+ Log.WriteLog(LogType.NOT_DATABASE, LogFile.ERROR, "无法从数据库获取车辆信息,流程中止");
|
|
|
+ }
|
|
|
+ Thread.Sleep(5000);
|
|
|
+ }
|
|
|
Rollback(queueCmd, 0, false, false, null);
|
|
|
return;
|
|
|
}
|
|
@@ -1069,7 +1082,7 @@ namespace parkMonitor.server.CoreThread
|
|
|
garageID = vehiclelist.garageID;
|
|
|
frontwheelbase = vehiclelist.frontwheelbase;
|
|
|
rearwheelbase = vehiclelist.rearwheelbase;
|
|
|
- queueCmd.parkingRecordsID = vehiclelist.parkingRecordsID;
|
|
|
+ queueCmd.parkingRecordsID = vehiclelist.parkingRecordsID;
|
|
|
//获取车位表中车辆具体的车位信息
|
|
|
//if (queueCmd.manual)
|
|
|
//{
|
|
@@ -1083,6 +1096,18 @@ namespace parkMonitor.server.CoreThread
|
|
|
//}
|
|
|
if (!ParkingSpaceManager.ins.parkingSpaceStatusMap.TryGetValue(parkingSpaceID, out ps) || ps == null)
|
|
|
{
|
|
|
+ EntityForCore.ins.globalStatus = false;
|
|
|
+ int count = 0;
|
|
|
+ while (!MyTimer.restart)
|
|
|
+ {
|
|
|
+ count++;
|
|
|
+ if (count == 1)
|
|
|
+ {
|
|
|
+ UILogServer.ins.error("车位分配出现异常!!!");
|
|
|
+ Log.WriteLog(LogType.NOT_DATABASE, LogFile.ERROR, "车位分配出现异常!!!");
|
|
|
+ }
|
|
|
+ Thread.Sleep(5000);
|
|
|
+ }
|
|
|
Rollback(queueCmd, parkingSpaceID, false, false, null);
|
|
|
return;
|
|
|
}
|
|
@@ -1186,8 +1211,8 @@ namespace parkMonitor.server.CoreThread
|
|
|
{
|
|
|
Log.WriteLog(LogType.NOT_DATABASE, "数据库操作出错,记录sql语句等待流程回滚");
|
|
|
//写日志记录sql,以待之后处理
|
|
|
- Log.WriteLog(LogType.DATABASE, "0",updateParkingSpaceStateSql);
|
|
|
- Log.WriteLog(LogType.DATABASE, "0",updateFreeSpaceSql);
|
|
|
+ Log.WriteLog(LogType.DATABASE, "0", updateParkingSpaceStateSql);
|
|
|
+ Log.WriteLog(LogType.DATABASE, "0", updateFreeSpaceSql);
|
|
|
Log.WriteLog(LogType.DATABASE, "0", updateVehicleStateSql);
|
|
|
Log.WriteLog(LogType.DATABASE, "0", updateParkingRecordsSql);
|
|
|
}
|
|
@@ -1213,6 +1238,7 @@ namespace parkMonitor.server.CoreThread
|
|
|
oper.UpdateParkingRecords(connectionStr, 0, 6, queueCmd.TimeRecord, queueCmd.parkingRecordsID);
|
|
|
}
|
|
|
}
|
|
|
+ Thread.Sleep(1000);
|
|
|
}
|
|
|
}
|
|
|
}
|