Пример #1
0
        /// <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
                }
            }
        }
Пример #2
0
 /// <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);
     }
 }