using db; using MySql.Data.MySqlClient; using parkMonitor.LOG; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace parkspace_manager { class DBManager { /// /// 远程数据库操作句柄 /// public static DBOperation remoteDBOper; /// /// 本地数据库操作句柄 /// public static DBOperation localDBOper; public DBManager() { } ~DBManager() { } ///// ///// 返回停车记录信息 ///// ///// //public static List GetParkingRecords(string license = "", string startTime = "", string endTime = "") //{ // DateTime now = DateTime.Now; // List result = new List(); // string getParkingRecordsSql = ""; // if (startTime == "" || endTime == "") // { // DateTime yesterday = DateTime.Now - (new TimeSpan(1, 0, 0, 0)); // DateTime twoDaysAgo = DateTime.Now - (new TimeSpan(2, 0, 0, 0)); // getParkingRecordsSql = "select parkingRecordsID,userID,numberPlate,parkingSpaceID,realParkTime,realGetTime,receiptNum,parkingPrice,paymentStatus " + // "from parkingrecords where numberPlate " + (license == "" ? "like '%" : "= '" + license) + "' and (realParkTime like '" + now.ToString("yyyy-MM-dd") + "%' or realParkTime like '" + yesterday.ToString("yyyy-MM-dd") + "%' or realParkTime like '" + twoDaysAgo.ToString("yyyy-MM-dd") + "%');"; // } // else // { // getParkingRecordsSql = "select parkingRecordsID,userID,numberPlate,parkingSpaceID,realParkTime,realGetTime,receiptNum,parkingPrice,paymentStatus " + // "from parkingrecords where numberPlate " + (license == "" ? "like '%" : "= '" + license) + "' and realParkTime >= '" + startTime + "' and realParkTime <= '" + endTime + "';"; // } // if (localDBOper != null) // { // lock (localDBOper) // { // MySqlDataReader reader = localDBOper.Query(getParkingRecordsSql); // try // { // while (reader != null && reader.Read()) // { // if (reader.HasRows) // { // object[] temp = new object[reader.FieldCount]; // reader.GetValues(temp); // result.Add(temp); // } // } // } // catch (Exception e) { Console.WriteLine(e.Message); } // try // { // if (reader != null) // { // reader.Close(); // reader.Dispose(); // } // } // catch (Exception e) { Console.WriteLine(e.Message); } // } // } // result.Reverse(); // return result; //} ///// ///// 返回预约记录信息 ///// ///// //public static List GetOrderRecords(bool localDB, string license = "", string startTime = "", string endTime = "") //{ // DateTime now = DateTime.Now; // List result = new List(); // string getOrderRecordsSql = ""; // if (startTime == "" || endTime == "") // { // DateTime yesterday = DateTime.Now - (new TimeSpan(1, 0, 0, 0)); // DateTime twoDaysAgo = DateTime.Now - (new TimeSpan(2, 0, 0, 0)); // getOrderRecordsSql = "select orderRecordsID,userID,numberPlate,bookParkTime,cancelBookTime,bookFetchTime,bookHour,bookPrice,bookState " + // "from orderrecords where numberPlate " + (license == "" ? "like '%" : "= '" + license) + "' and (bookParkTime like '" + now.ToString("yyyy-MM-dd") + // "%' or bookParkTime like '" + yesterday.ToString("yyyy-MM-dd") + "%' or bookFetchTime like '" + now.ToString("yyyy-MM-dd") + "%' or bookFetchTime like '" + yesterday.ToString("yyyy-MM-dd") + "%');"; // } // else // { // getOrderRecordsSql = "select orderRecordsID,userID,numberPlate,bookParkTime,cancelBookTime,bookFetchTime,bookHour,bookPrice,bookState " + // "from orderrecords where numberPlate " + (license == "" ? "like '%" : "= '" + license) + "' and ((bookParkTime >= '" + startTime + "' and bookParkTime <= '" + endTime + "') or (bookFetchTime >= '" + startTime + "' and bookFetchTime <= '" + endTime + "'));"; // } // if (localDBOper != null) // { // lock (localDBOper) // { // MySqlDataReader reader; // if (localDB) // reader = localDBOper.Query(getOrderRecordsSql); // else // reader = remoteDBOper.Query(getOrderRecordsSql); // try // { // while (reader != null && reader.Read()) // { // if (reader.HasRows) // { // object[] temp = new object[reader.FieldCount]; // reader.GetValues(temp); // result.Add(temp); // } // } // } // catch (Exception e) { Console.WriteLine(e.Message); } // try // { // if (reader != null) // { // reader.Close(); // reader.Dispose(); // } // } // catch (Exception e) { Console.WriteLine(e.Message); } // } // } // result.Reverse(); // return result; //} ///// ///// 更新停车记录关于支付的信息 ///// ///// ///// ///// ///// ///// //public static bool UpdateParkingRecords(string license, string receiptNum, string parkingFee, string paymentStatus, bool local) //{ // bool result = false; // string updateRecordsSql = "update parkingrecords set parkingPrice = " + parkingFee + " ,paymentStatus = " + paymentStatus + " where numberPlate = '" + license + "' and receiptNum = " + receiptNum + ";"; // List updateList = new List(); // updateList.Add(updateRecordsSql); // if (local && localDBOper != null) // { // lock (localDBOper) // { // try // { // result = localDBOper.UpdateTransaction(updateList); // } // catch { Log.WriteLog(LogType.database, "更新本地停车记录中支付信息出现异常。\n" + updateRecordsSql); return false; } // } // } // else if (!local && remoteDBOper != null) // { // lock (remoteDBOper) // { // try // { // result = remoteDBOper.UpdateTransaction(updateList); // } // catch { Log.WriteLog(LogType.database, "更新云端记录中支付信息出现异常。\n" + updateRecordsSql); return false; } // } // } // return result; //} ///// ///// 更新所有车位信息 ///// //private static void UpdateAllParkingSpace(bool remote) //{ // string findParkingSpace = "select parkingSpaceID from parkingspace;"; // HashSet recordsIDSet = new HashSet(); // DBOperation dbHandle = null; // if (!remote) // { // dbHandle = localDBOper; // } // else // { // dbHandle = remoteDBOper; // } // lock (dbHandle) // { // MySqlDataReader reader = dbHandle.Query(findParkingSpace); // if (reader != null) // { // try // { // while (reader.Read()) // { // if (reader.HasRows) // { // recordsIDSet.Add(reader.GetInt32("parkingSpaceID")); // } // } // } // catch { Log.WriteLog(LogType.process, LogFile.INFO, "数据库车位查询异常"); } // try // { // reader.Close(); // reader.Dispose(); // } // catch { } // } // } // List updateSpaceList = new List(); // List insertSpaceList = new List(); // string updateParkingSpace = ""; // string insertParkingSpace = ""; // for (int i = 0; i < parkingSpaceInfo.Count; i++) // { // if (recordsIDSet.Contains(parkingSpaceInfo[i].parkingSpace)) // { // updateParkingSpace = "update parkingspace set parkingSpaceX = " + parkingSpaceInfo[i].coordX + // ",parkingSpaceY = " + parkingSpaceInfo[i].coordY + ",parkingSpaceZ = " + parkingSpaceInfo[i].floorNo + ",parkingSpaceState = " + parkingSpaceInfo[i].spaceStatus + " where (parkingSpaceID = " + parkingSpaceInfo[i].parkingSpace + ");"; // updateSpaceList.Add(updateParkingSpace); // } // else // { // if (!remote) // { // insertParkingSpace = "insert into parkingspace (parkingSpaceID,parkingSpaceX,parkingSpaceY,parkingSpaceZ,parkingSpaceState) values (" + parkingSpaceInfo[i].parkingSpace + "," + parkingSpaceInfo[i].coordX + // "," + parkingSpaceInfo[i].coordY + "," + parkingSpaceInfo[i].floorNo + "," + parkingSpaceInfo[i].spaceStatus + ");"; // insertSpaceList.Add(insertParkingSpace); // } // else // { // insertParkingSpace = "insert into parkingspace (parkingSpaceID,parkingSpaceX,parkingSpaceY,parkingSpaceZ,parkingSpaceState,garageID,parkingSpaceName) values (" + parkingSpaceInfo[i].parkingSpace + "," + parkingSpaceInfo[i].coordX + // "," + parkingSpaceInfo[i].coordY + "," + parkingSpaceInfo[i].floorNo + "," + parkingSpaceInfo[i].spaceStatus + "," + garageID + ",'默认');"; // insertSpaceList.Add(insertParkingSpace); // } // } // } // try // { // lock (dbHandle) // { // int id = 0; // dbHandle.UpdateTransaction(updateSpaceList); // dbHandle.Insert(insertSpaceList, out id); // } // } // catch (Exception e) { Log.WriteLog(LogType.process, LogFile.ERROR, "更新本地所有车位异常"); Console.WriteLine("更新本地所有车位异常" + e.Message); } //} ///// ///// 更新车辆状态 ///// ///// ///// //private static void UpdateVehicle(string lic, int state, int parkingRecordsID, bool park, bool remote, int parkingSpaceID) //{ // if (lic != "") // { // MySqlDataReader reader; // //查询车辆是否在车辆表中 // string checkVehicleState = "select * from vehicle where numberPlate = '" + lic + "';"; // if (!remote) // { // reader = localDBOper.Query(checkVehicleState); // } // else // { // //Log.WriteLog(LogType.database, "update, query: \n"); // reader = remoteDBOper.Query(checkVehicleState); // //Log.WriteLog(LogType.database, "update, query: \n" + checkVehicleState); // } // if (reader != null) // { // if (reader.Read() && reader.HasRows) // { // //更新车辆状态 // string updateVehicleState = ""; // string updateRemoteVehicleState = ""; // if (park) // { // if (parkingRecordsID > 0) // { // if (parkingSpaceID == 0) // { // updateVehicleState = "update vehicle set vehiclepParkState = " + state + " ,parkingRecordsID = " + parkingRecordsID + " where numberPlate = '" + lic + "';"; // updateRemoteVehicleState = "update vehicle set vehiclepParkState = " + state + " ,parkingRecordsID = " + parkingRecordsID + ",garageID = " + 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 = " + 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 list = new List(); // if (!remote) // { // list.Add(updateVehicleState); // localDBOper.UpdateTransaction(list); // } // else // { // //Log.WriteLog(LogType.database, "update, update: \n"); // list.Add(updateRemoteVehicleState); // remoteDBOper.UpdateTransaction(list); // //Log.WriteLog(LogType.database, "update, update: \n" + updateRemoteVehicleState); // } // } // else // { // //插入车辆 // string insertVehicleWithState = ""; // if (park) // { // if (parkingRecordsID > 0) // insertVehicleWithState = "insert into vehicle (numberPlate,vehicleTypeID,vehiclepParkState,parkingRecordsID) values " + // "('" + lic + "',NULL,'" + state + "'," + parkingRecordsID + ");"; // else // insertVehicleWithState = "insert into vehicle (numberPlate,vehicleTypeID,vehiclepParkState) values " + // "('" + lic + "',NULL,'" + state + "');"; // } // else // { // Log.WriteLog(LogType.process, LogFile.ERROR, "取车无法获得车辆信息"); // Console.WriteLine("明显异常,取车发现无车辆"); // try // { // reader.Close(); // reader.Dispose(); // } // catch { } // return; // } // List list = new List(); // list.Add(insertVehicleWithState); // int id = 0; // if (!remote) // { // localDBOper.Insert(list, out id); // } // else // { // remoteDBOper.Insert(list, out id); // } // } // try // { // reader.Close(); // reader.Dispose(); // } // catch { } // } // } //} ///// ///// 验证会员信息 ///// ///// ///// ///// ///// //private static void ValidateUserInfo(TerminalStru ts, int userID, string license, out int status) //{ // status = 0; // //与云端数据比对 // string checkNetSql = "select * from user where userID = 1;"; // MySqlDataReader readerTest = remoteDBOper.Query(checkNetSql); // if (readerTest != null) // { // if (readerTest.Read() && readerTest.HasRows) // { // try // { // readerTest.Close(); // readerTest.Dispose(); // } // catch { } // string userInfoCheckSql = "select * from usercarrelation where userID = '" + userID + "' and numberPlate = '" + license + "';"; // MySqlDataReader reader = remoteDBOper.Query(userInfoCheckSql); // if (reader != null && reader.Read() && reader.HasRows && userID != 0 && license != "") // { // //ts.licVerification = 1;//验证成功 // //PLC.WriteToPLC(ts, PLCDataType.central); // status = 1; // Log.WriteLog(LogType.process, LogFile.INFO, "号牌验证成功"); // SetNotification("注册用户,号牌验证成功", parkMonitor.model.TextColor.Info); // } // else // { // //ts.licVerification = 1;//验证失败 // //PLC.WriteToPLC(ts, PLCDataType.central); // status = 2; // Log.WriteLog(LogType.process, LogFile.WARNING, "号牌验证失败"); // SetNotification("注册用户,号牌验证失败", parkMonitor.model.TextColor.Error); // } // try // { // reader.Close(); // reader.Dispose(); // } // catch { } // } // else // { // try // { // readerTest.Close(); // readerTest.Dispose(); // } // catch { } // //ts.licVerification = 1;//网络异常,跳过验证 // //PLC.WriteToPLC(ts, PLCDataType.central); // status = 1; // Log.WriteLog(LogType.process, LogFile.ERROR, "网络异常,无法验证号牌"); // } // } //} ///// ///// 查询停车记录id ///// ///// ///// ///// //private static void QueryParkingRecordsID(string querySql, out int recordsID, bool remote) //{ // recordsID = 0; // MySqlDataReader reader = null; // if (!remote) // { // reader = localDBOper.Query(querySql); // } // else // { // reader = remoteDBOper.Query(querySql); // } // if (reader != null) // { // try // { // while (reader.Read()) // { // if (reader.HasRows) // recordsID = reader.GetInt32("parkingRecordsID"); // } // } // catch (Exception e) { Log.WriteLog(LogType.process, LogFile.ERROR, "查询停车记录id失败"); Console.WriteLine(e.Message); }; // try // { // reader.Close(); // reader.Dispose(); // } // catch { } // } //} } }