/// <summary> /// 更新案場數值歷史資料與網頁 /// </summary> /// <param name="receiveData"></param> private void Value_Log_Insert(ReceiveData receiveData) { using (var connection = new MySqlConnection(ConnStr)) { try { string search_ReceiveSetting = $"SELECT * FROM {DataDB}.ReceiveSetting WHERE CaseNo = @CaseNo AND ReceiveNo = @ReceiveNo"; var RecevieSetting = connection.QuerySingleOrDefault <RecevieSetting>(search_ReceiveSetting, new { CaseNo = receiveData.CaseNo, ReceiveNo = receiveData.RecNo }); if (RecevieSetting != null) { string search_Aiconfig = $"SELECT * FROM {DataDB}.AiConfig WHERE DeviceTypeEnum = @DeviceTypeEnum"; var Aiconfig = connection.Query <AiConfig>(search_Aiconfig, new { DeviceTypeEnum = RecevieSetting.DeviceTypeEnum }).ToList(); if (Aiconfig.Count > 0) { List <decimal> Value = new List <decimal>(); for (int i = 0; i < Aiconfig.Count; i++) { AnalysisTypeEnum analysisTypeEnum = (AnalysisTypeEnum)Aiconfig[i].AnalysisMothed; switch (analysisTypeEnum) { case AnalysisTypeEnum.None: { var ai = Convert.ToDecimal(receiveData.Ai[Aiconfig[i].CharAddress]) * Convert.ToDecimal(Aiconfig[i].Ratio); Value.Add(ai); } break; case AnalysisTypeEnum.LH: { var ai = Convert.ToDecimal(receiveData.Ai[Aiconfig[i].CharAddress]) * 1 + Convert.ToDecimal(receiveData.Ai[Aiconfig[i].CharAddress + 1]) * 65536; Value.Add(ai); DeviceTypeEnum deviceTypeEnum = (DeviceTypeEnum)RecevieSetting.DeviceTypeEnum; switch (deviceTypeEnum) { case DeviceTypeEnum.RT80: { //if (Aiconfig[i].CharAddress == 34)//KWH //{ // string AIDailyStr = $"CALL {DataLog}.AiDailyProcedure(@ttime,@CaseNo,@ReceiveNo,@AINo,@nowAi)"; // connection.Execute(AIDailyStr, new { ttime = receiveData.ttime, CaseNo = receiveData.CaseNo, ReceiveNo = receiveData.RecNo, AINo = Aiconfig[i].AINo, nowAi = ai }); //} //else if (Aiconfig[i].CharAddress == 90)//總時數 //{ // string AIDailyStr = $"CALL {DataLog}.AiDailyProcedure(@ttime,@CaseNo,@ReceiveNo,@AINo,@nowAi)"; // connection.Execute(AIDailyStr, new { ttime = receiveData.ttime, CaseNo = receiveData.CaseNo, ReceiveNo = receiveData.RecNo, AINo = Aiconfig[i].AINo, nowAi = ai }); //} //else if(Aiconfig[i].CharAddress == 92)//1機運轉時數 //{ // string AIDailyStr = $"CALL {DataLog}.AiDailyProcedure(@ttime,@CaseNo,@ReceiveNo,@AINo,@nowAi)"; // connection.Execute(AIDailyStr, new { ttime = receiveData.ttime, CaseNo = receiveData.CaseNo, ReceiveNo = receiveData.RecNo, AINo = Aiconfig[i].AINo, nowAi = ai }); //} //else if (Aiconfig[i].CharAddress == 96)//2機運轉時數 //{ // string AIDailyStr = $"CALL {DataLog}.AiDailyProcedure(@ttime,@CaseNo,@ReceiveNo,@AINo,@nowAi)"; // connection.Execute(AIDailyStr, new { ttime = receiveData.ttime, CaseNo = receiveData.CaseNo, ReceiveNo = receiveData.RecNo, AINo = Aiconfig[i].AINo, nowAi = ai }); //} if (Aiconfig[i].ChartTypeEnum == 1) { string AIDailyStr = $"CALL {DataLog}.AiDailyProcedure(@ttime,@CaseNo,@ReceiveNo,@AINo,@nowAi)"; connection.Execute(AIDailyStr, new { ttime = receiveData.ttime, CaseNo = receiveData.CaseNo, ReceiveNo = receiveData.RecNo, AINo = Aiconfig[i].AINo, nowAi = ai }); } } break; case DeviceTypeEnum.RT40_50_60: { //if (Aiconfig[i].CharAddress == 34)//KWH //{ // string AIDailyStr = $"CALL {DataLog}.AiDailyProcedure(@ttime,@CaseNo,@ReceiveNo,@AINo,@nowAi)"; // connection.Execute(AIDailyStr, new { ttime = receiveData.ttime, CaseNo = receiveData.CaseNo, ReceiveNo = receiveData.RecNo, AINo = Aiconfig[i].AINo, nowAi = ai }); //} //else if (Aiconfig[i].CharAddress == 38)//總時數 //{ // string AIDailyStr = $"CALL {DataLog}.AiDailyProcedure(@ttime,@CaseNo,@ReceiveNo,@AINo,@nowAi)"; // connection.Execute(AIDailyStr, new { ttime = receiveData.ttime, CaseNo = receiveData.CaseNo, ReceiveNo = receiveData.RecNo, AINo = Aiconfig[i].AINo, nowAi = ai }); //} //else if (Aiconfig[i].CharAddress == 55)//1機運轉時數 //{ // string AIDailyStr = $"CALL {DataLog}.AiDailyProcedure(@ttime,@CaseNo,@ReceiveNo,@AINo,@nowAi)"; // connection.Execute(AIDailyStr, new { ttime = receiveData.ttime, CaseNo = receiveData.CaseNo, ReceiveNo = receiveData.RecNo, AINo = Aiconfig[i].AINo, nowAi = ai }); //} //else if (Aiconfig[i].CharAddress == 75)//2機運轉時數 //{ // string AIDailyStr = $"CALL {DataLog}.AiDailyProcedure(@ttime,@CaseNo,@ReceiveNo,@AINo,@nowAi)"; // connection.Execute(AIDailyStr, new { ttime = receiveData.ttime, CaseNo = receiveData.CaseNo, ReceiveNo = receiveData.RecNo, AINo = Aiconfig[i].AINo, nowAi = ai }); //} //else if (Aiconfig[i].CharAddress == 94)//3機運轉時數 //{ // string AIDailyStr = $"CALL {DataLog}.AiDailyProcedure(@ttime,@CaseNo,@ReceiveNo,@AINo,@nowAi)"; // connection.Execute(AIDailyStr, new { ttime = receiveData.ttime, CaseNo = receiveData.CaseNo, ReceiveNo = receiveData.RecNo, AINo = Aiconfig[i].AINo, nowAi = ai }); //} //else if (Aiconfig[i].CharAddress == 114)//4機運轉時數 //{ // string AIDailyStr = $"CALL {DataLog}.AiDailyProcedure(@ttime,@CaseNo,@ReceiveNo,@AINo,@nowAi)"; // connection.Execute(AIDailyStr, new { ttime = receiveData.ttime, CaseNo = receiveData.CaseNo, ReceiveNo = receiveData.RecNo, AINo = Aiconfig[i].AINo, nowAi = ai }); //} if (Aiconfig[i].ChartTypeEnum == 1) { string AIDailyStr = $"CALL {DataLog}.AiDailyProcedure(@ttime,@CaseNo,@ReceiveNo,@AINo,@nowAi)"; connection.Execute(AIDailyStr, new { ttime = receiveData.ttime, CaseNo = receiveData.CaseNo, ReceiveNo = receiveData.RecNo, AINo = Aiconfig[i].AINo, nowAi = ai }); } } break; } } break; default: break; } } if (Value.Count < 64) { for (int i = Value.Count; i < 64; i++) { Value.Add(0); } } AI64 aI64 = new AI64() { CaseNo = receiveData.CaseNo, ttime = receiveData.ttime, ReceiveNo = receiveData.RecNo, }; int index = 0; aI64.Ai1 = Value[index]; index++; aI64.Ai2 = Value[index]; index++; aI64.Ai3 = Value[index]; index++; aI64.Ai4 = Value[index]; index++; aI64.Ai5 = Value[index]; index++; aI64.Ai6 = Value[index]; index++; aI64.Ai7 = Value[index]; index++; aI64.Ai8 = Value[index]; index++; aI64.Ai9 = Value[index]; index++; aI64.Ai10 = Value[index]; index++; aI64.Ai12 = Value[index]; index++; aI64.Ai13 = Value[index]; index++; aI64.Ai14 = Value[index]; index++; aI64.Ai15 = Value[index]; index++; aI64.Ai16 = Value[index]; index++; aI64.Ai17 = Value[index]; index++; aI64.Ai18 = Value[index]; index++; aI64.Ai19 = Value[index]; index++; aI64.Ai20 = Value[index]; index++; aI64.Ai22 = Value[index]; index++; aI64.Ai23 = Value[index]; index++; aI64.Ai24 = Value[index]; index++; aI64.Ai25 = Value[index]; index++; aI64.Ai26 = Value[index]; index++; aI64.Ai27 = Value[index]; index++; aI64.Ai28 = Value[index]; index++; aI64.Ai29 = Value[index]; index++; aI64.Ai30 = Value[index]; index++; aI64.Ai32 = Value[index]; index++; aI64.Ai33 = Value[index]; index++; aI64.Ai34 = Value[index]; index++; aI64.Ai35 = Value[index]; index++; aI64.Ai36 = Value[index]; index++; aI64.Ai37 = Value[index]; index++; aI64.Ai38 = Value[index]; index++; aI64.Ai39 = Value[index]; index++; aI64.Ai40 = Value[index]; index++; aI64.Ai42 = Value[index]; index++; aI64.Ai43 = Value[index]; index++; aI64.Ai44 = Value[index]; index++; aI64.Ai45 = Value[index]; index++; aI64.Ai46 = Value[index]; index++; aI64.Ai47 = Value[index]; index++; aI64.Ai48 = Value[index]; index++; aI64.Ai49 = Value[index]; index++; aI64.Ai50 = Value[index]; index++; aI64.Ai52 = Value[index]; index++; aI64.Ai53 = Value[index]; index++; aI64.Ai54 = Value[index]; index++; aI64.Ai55 = Value[index]; index++; aI64.Ai56 = Value[index]; index++; aI64.Ai57 = Value[index]; index++; aI64.Ai58 = Value[index]; index++; aI64.Ai59 = Value[index]; index++; aI64.Ai60 = Value[index]; index++; aI64.Ai62 = Value[index]; index++; aI64.Ai63 = Value[index]; index++; aI64.Ai64 = Value[index]; string InsertLogsql = $"CALL {DataLog}.Ai64LogProcedure(@CaseNo,@ttime,@ReceiveNo,@Ai1,@Ai2,@Ai3,@Ai4,@Ai5,@Ai6,@Ai7,@Ai8,@Ai9,@Ai10," + $"@Ai11,@Ai12,@Ai13,@Ai14,@Ai15,@Ai16,@Ai17,@Ai18,@Ai19,@Ai20," + $"@Ai21,@Ai22,@Ai23,@Ai24,@Ai25,@Ai26,@Ai27,@Ai28,@Ai29,@Ai30," + $"@Ai31,@Ai32,@Ai33,@Ai34,@Ai35,@Ai36,@Ai37,@Ai38,@Ai39,@Ai40," + $"@Ai41,@Ai42,@Ai43,@Ai44,@Ai45,@Ai46,@Ai47,@Ai48,@Ai49,@Ai50," + $"@Ai51,@Ai52,@Ai53,@Ai54,@Ai55,@Ai56,@Ai57,@Ai58,@Ai59,@Ai60," + $"@Ai61,@Ai62,@Ai63,@Ai64)"; string InsertWebsql = $"CALL {DataWeb}.Ai64WebProcedure(@CaseNo,@ttime,@ReceiveNo,@Ai1,@Ai2,@Ai3,@Ai4,@Ai5,@Ai6,@Ai7,@Ai8,@Ai9,@Ai10," + $"@Ai11,@Ai12,@Ai13,@Ai14,@Ai15,@Ai16,@Ai17,@Ai18,@Ai19,@Ai20," + $"@Ai21,@Ai22,@Ai23,@Ai24,@Ai25,@Ai26,@Ai27,@Ai28,@Ai29,@Ai30," + $"@Ai31,@Ai32,@Ai33,@Ai34,@Ai35,@Ai36,@Ai37,@Ai38,@Ai39,@Ai40," + $"@Ai41,@Ai42,@Ai43,@Ai44,@Ai45,@Ai46,@Ai47,@Ai48,@Ai49,@Ai50," + $"@Ai51,@Ai52,@Ai53,@Ai54,@Ai55,@Ai56,@Ai57,@Ai58,@Ai59,@Ai60," + $"@Ai61,@Ai62,@Ai63,@Ai64)"; int LogCounter = connection.Execute(InsertLogsql, aI64); int WebCounter = connection.Execute(InsertWebsql, aI64); if ((LogCounter / 3) > 0) { Value_Log_Insert_ErrorStr = (" Value_Log異動筆數共" + (LogCounter / 3).ToString() + "筆" + " Value_Web異動筆數共" + (WebCounter / 3).ToString() + "筆"); } } } } catch (Exception ex) { Value_Log_Insert_ErrorStr = (ex.Message + "\r\n" + ex.ToString()); // 400 Bad Request } } }
/// <summary> /// 上下限比較紀錄 /// </summary> /// <param name="config">AI點為設定資訊</param> public decimal Alarm_Procedure(AiConfig config, AI64 aI64) { try { decimal[] value = new decimal[64]; using (var conn = new MySqlConnection(Logscsb.ConnectionString)) { string Procedure = "AiAlarmProcedure"; int i = 0; value[i] = aI64.Ai1; i++; value[i] = aI64.Ai2; i++; value[i] = aI64.Ai3; i++; value[i] = aI64.Ai4; i++; value[i] = aI64.Ai5; i++; value[i] = aI64.Ai6; i++; value[i] = aI64.Ai7; i++; value[i] = aI64.Ai8; i++; value[i] = aI64.Ai9; i++; value[i] = aI64.Ai10; i++; value[i] = aI64.Ai11; i++; value[i] = aI64.Ai12; i++; value[i] = aI64.Ai13; i++; value[i] = aI64.Ai14; i++; value[i] = aI64.Ai15; i++; value[i] = aI64.Ai16; i++; value[i] = aI64.Ai17; i++; value[i] = aI64.Ai18; i++; value[i] = aI64.Ai19; i++; value[i] = aI64.Ai20; i++; value[i] = aI64.Ai21; i++; value[i] = aI64.Ai22; i++; value[i] = aI64.Ai23; i++; value[i] = aI64.Ai24; i++; value[i] = aI64.Ai25; i++; value[i] = aI64.Ai26; i++; value[i] = aI64.Ai27; i++; value[i] = aI64.Ai28; i++; value[i] = aI64.Ai29; i++; value[i] = aI64.Ai30; i++; value[i] = aI64.Ai31; i++; value[i] = aI64.Ai32; i++; value[i] = aI64.Ai33; i++; value[i] = aI64.Ai34; i++; value[i] = aI64.Ai35; i++; value[i] = aI64.Ai36; i++; value[i] = aI64.Ai37; i++; value[i] = aI64.Ai38; i++; value[i] = aI64.Ai39; i++; value[i] = aI64.Ai40; i++; value[i] = aI64.Ai41; i++; value[i] = aI64.Ai42; i++; value[i] = aI64.Ai43; i++; value[i] = aI64.Ai44; i++; value[i] = aI64.Ai45; i++; value[i] = aI64.Ai46; i++; value[i] = aI64.Ai47; i++; value[i] = aI64.Ai48; i++; value[i] = aI64.Ai49; i++; value[i] = aI64.Ai50; i++; value[i] = aI64.Ai51; i++; value[i] = aI64.Ai52; i++; value[i] = aI64.Ai53; i++; value[i] = aI64.Ai54; i++; value[i] = aI64.Ai55; i++; value[i] = aI64.Ai56; i++; value[i] = aI64.Ai57; i++; value[i] = aI64.Ai58; i++; value[i] = aI64.Ai59; i++; value[i] = aI64.Ai60; i++; value[i] = aI64.Ai61; i++; value[i] = aI64.Ai62; i++; value[i] = aI64.Ai63; i++; value[i] = aI64.Ai64; conn.Execute(Procedure, new { nowTime = aI64.ttime, CaseNo1 = config.CaseNo, AiNo1 = config.AiNo, Ai1 = config.Ai, NowData = value[Convert.ToInt32(System.Text.RegularExpressions.Regex.Replace(config.Ai, @"[^0-9]+", "")) - 1] }, commandType: System.Data.CommandType.StoredProcedure); } return(value[Convert.ToInt32(System.Text.RegularExpressions.Regex.Replace(config.Ai, @"[^0-9]+", "")) - 1]); } catch (Exception ex) { Log.Error(ex, "上下限比較紀錄" + "錯誤(Ewatch)"); return(0); } }