Exemple #1
0
        // 添加新列
        public void AddNewRow(CEntityWater water)
        {
            // 记录超过1000条,或者时间超过1分钟,就将当前的数据写入数据库
            m_mutexDataTable.WaitOne(); //等待互斥量
            DataRow row = m_tableDataAdded.NewRow();

            row[CN_StationId]    = water.StationID;
            row[CN_DataTime]     = water.TimeCollect.ToString(CDBParams.GetInstance().DBDateTimeFormat);
            row[CN_WaterStage]   = water.WaterStage;
            row[CN_WaterFlow]    = water.WaterFlow;
            row[CN_MsgType]      = CEnumHelper.MessageTypeToDBStr(water.MessageType);
            row[CN_TransType]    = CEnumHelper.ChannelTypeToDBStr(water.ChannelType);
            row[CN_RecvDataTime] = water.TimeRecieved.ToString(CDBParams.GetInstance().DBDateTimeFormat);
            row[CN_State]        = water.state;
            m_tableDataAdded.Rows.Add(row);
            m_mutexDataTable.ReleaseMutex();

            // 判断是否需要创建新分区
            //CSQLPartitionMgr.Instance.MaintainWater(water.TimeCollect);
            if (m_tableDataAdded.Rows.Count >= CDBParams.GetInstance().AddBufferMax)
            {
                // 如果超过最大值,写入数据库
                //Task task = new Task(() => { AddDataToDB(); });
                //task.Start();
                NewTask(() => { AddDataToDB(); });
            }
            else
            {
                // 没有超过缓存最大值,开启定时器进行检测,多次调用Start()会导致重新计数
                m_addTimer.Start();
            }
        }
Exemple #2
0
        /// <summary>
        /// 2018-11-24 gm
        /// 根据开始时间和结束时间查询水位信息
        /// </summary>
        /// <param name="station"></param>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        public List <CEntityWater> QueryByTime(string station, DateTime start, DateTime end)
        {
            List <CEntityWater> results  = new List <CEntityWater>();
            String         sql           = "select * from " + CT_TableName + " where StationID=" + station + " and Datatime between '" + start + "'and '" + end + "';";
            SqlDataAdapter adapter       = new SqlDataAdapter(sql, CDBManager.GetInstacne().GetConnection());
            DataTable      dataTableTemp = new DataTable();

            adapter.Fill(dataTableTemp);
            int flag = dataTableTemp.Rows.Count;

            if (flag == 0)
            {
            }
            else
            {
                for (int rowid = 0; rowid < dataTableTemp.Rows.Count; ++rowid)
                {
                    CEntityWater water = new CEntityWater();
                    water.StationID   = dataTableTemp.Rows[rowid][CN_StationId].ToString();
                    water.WaterStage  = decimal.Parse(dataTableTemp.Rows[rowid][CN_WaterStage].ToString());
                    water.TimeCollect = DateTime.Parse(dataTableTemp.Rows[rowid][CN_DataTime].ToString());
                    results.Add(water);
                }
            }
            return(results);
        }
Exemple #3
0
        //1009gm
        public List <CEntityWater> QueryA(string station, DateTime time)
        {
            List <CEntityWater> results   = new List <CEntityWater>();
            DateTime            startTime = time;
            DateTime            endTime   = startTime.AddHours(23).AddMinutes(59).AddSeconds(59);

            CTF_TableName = "water" + time.Year.ToString() + time.Month.ToString() + "A";
            CTT_TableName = "water" + time.Year.ToString() + time.Month.ToString() + "B";
            String         sql           = "select * from " + CF_TableName + " where StationID=" + station + " and Datatime between '" + startTime + "'and '" + endTime + "';";
            SqlDataAdapter adapter       = new SqlDataAdapter(sql, CDBManager.GetInstacne().GetConnection());
            DataTable      dataTableTemp = new DataTable();

            adapter.Fill(dataTableTemp);
            int flag = dataTableTemp.Rows.Count;

            if (flag == 0)
            {
            }
            else
            {
                for (int rowid = 0; rowid < dataTableTemp.Rows.Count; ++rowid)
                {
                    CEntityWater water = new CEntityWater();
                    water.StationID   = dataTableTemp.Rows[rowid][CN_StationId].ToString();
                    water.TimeCollect = DateTime.Parse(dataTableTemp.Rows[rowid][CN_DataTime].ToString());
                    water.WaterStage  = decimal.Parse(dataTableTemp.Rows[rowid][CN_WaterStage].ToString());
                    results.Add(water);
                }
            }
            return(results);
        }
        // 生成更新过的数据列表
        private void GetUpdatedData()
        {
            // 如果标记为删除的就不需要再更新了
            List <int> listUpdatedRows = new List <int>();

            for (int i = 0; i < m_listEditedRows.Count; ++i)
            {
                if (!m_listMaskedDeletedRows.Contains(m_listEditedRows[i]))
                {
                    // 如果不在删除列中,则需要更新
                    listUpdatedRows.Add(m_listEditedRows[i]);
                }
            }
            // 获取更新过的数据
            for (int i = 0; i < listUpdatedRows.Count; ++i)
            {
                CEntityWater water = new CEntityWater();
                //  water.WaterID = long.Parse(base.Rows[listUpdatedRows[i]].Cells[CS_WaterID].Value.ToString());
                water.StationID    = m_strStaionId;
                water.TimeCollect  = DateTime.Parse(base.Rows[listUpdatedRows[i]].Cells[CS_TimeCollected].Value.ToString());
                water.TimeRecieved = DateTime.Parse(base.Rows[listUpdatedRows[i]].Cells[CS_TimeReceived].Value.ToString());
                water.WaterStage   = Decimal.Parse(base.Rows[listUpdatedRows[i]].Cells[CS_WaterStage].Value.ToString());
                if (!base.Rows[listUpdatedRows[i]].Cells[CS_WaterFlow].Value.ToString().Equals(""))
                {
                    water.WaterFlow = Decimal.Parse(base.Rows[listUpdatedRows[i]].Cells[CS_WaterFlow].Value.ToString());
                }
                else
                {
                    water.WaterFlow = null;
                }
                // 数据状态
                string tmpDataState = base.Rows[listUpdatedRows[i]].Cells[CS_DataState].Value.ToString();
                if (tmpDataState.Equals(CS_DataState_Normal))
                {
                    water.state = 1;
                }
                else if (tmpDataState.Equals(CS_DataState_AbNormal))
                {
                    water.state = 0;
                }
                water.MessageType = CEnumHelper.UIStrToMesssageType(base.Rows[listUpdatedRows[i]].Cells[CS_MsgType].Value.ToString());
                water.ChannelType = CEnumHelper.UIStrToChannelType(base.Rows[listUpdatedRows[i]].Cells
                                                                   [CS_ChannelType].Value.ToString());
                m_listUpdated.Add(water);
            }
            // 获取删除过的数据
            for (int i = 0; i < base.m_listMaskedDeletedRows.Count; ++i)
            {
                // m_listDeleteWaters.Add(long.Parse(base.Rows[m_listMaskedDeletedRows[i]].Cells[CS_WaterID].Value.ToString()));

                m_listDeleteWaters_StationId.Add(base.Rows[m_listMaskedDeletedRows[i]].Cells[CS_StationID].Value.ToString());
                m_listDeleteWaters_StationDate.Add(base.Rows[m_listMaskedDeletedRows[i]].Cells[CS_TimeCollected].Value.ToString());
            }
            m_listEditedRows.Clear();        //清空此次记录
            m_listMaskedDeletedRows.Clear(); //清空标记为删除的记录
        }
Exemple #5
0
        // 将Map中由key指定的DataTable,从startRow开始返回界面最大行数的集合
        private List <CEntityWater> CopyDataToList(int key, int startRow)
        {
            List <CEntityWater> result = new List <CEntityWater>();
            // 取最小值 ,保证不越界
            int       endRow = Math.Min(m_mapDataTable[key].Rows.Count, startRow + CDBParams.GetInstance().UIPageRowCount);
            DataTable table  = m_mapDataTable[key];

            for (; startRow < endRow; ++startRow)
            {
                CEntityWater water = new CEntityWater();
                // water.WaterID = long.Parse(table.Rows[startRow][CN_WaterID].ToString());
                water.StationID   = table.Rows[startRow][CN_StationId].ToString();
                water.TimeCollect = DateTime.Parse(table.Rows[startRow][CN_DataTime].ToString());
                //水位
                if (!table.Rows[startRow][CN_WaterStage].ToString().Equals(""))
                {
                    water.WaterStage = Decimal.Parse(table.Rows[startRow][CN_WaterStage].ToString());
                }
                else
                {
                    //11.12
                    water.WaterStage = -9999;
                }
                //流量
                string tmp = table.Rows[startRow][CN_WaterFlow].ToString();
                if (!tmp.Equals(""))
                {
                    water.WaterFlow = Decimal.Parse(table.Rows[startRow][CN_WaterFlow].ToString());
                }
                else
                {
                    //11.12
                    water.WaterFlow = -9999;
                }
                if (table.Rows[startRow][CN_State].ToString() != "")
                {
                    try
                    {
                        water.state = int.Parse(table.Rows[startRow][CN_State].ToString());
                    }
#pragma warning disable CS0168 // 声明了变量“ex”,但从未使用过
                    catch (Exception ex) { }
#pragma warning restore CS0168 // 声明了变量“ex”,但从未使用过
                }
                else
                {
                    water.state = 1;
                }
                water.TimeRecieved = DateTime.Parse(table.Rows[startRow][CN_RecvDataTime].ToString());
                water.ChannelType  = CEnumHelper.DBStrToChannelType(table.Rows[startRow][CN_TransType].ToString());
                water.MessageType  = CEnumHelper.DBStrToMessageType(table.Rows[startRow][CN_MsgType].ToString());
                result.Add(water);
            }
            return(result);
        }
Exemple #6
0
        public CStationDataAddForm()
        {
            InitializeComponent();
            InitUI();

            m_currentStation = null;
            m_entityRain     = null;
            m_entityVoltage  = null;
            m_entityWater    = null;

            FormHelper.InitUserModeEvent(this);
        }
Exemple #7
0
        //public void InitRainData()
        //{
        //    Random random = new Random();
        //    DateTime currentDate = DateTime.Now.Date;
        //    List<CEntityRain> lists = new List<CEntityRain>();
        //    for (int i = 0; i < 24 * 10; ++i)
        //    {
        //        CEntityRain rain = new CEntityRain();
        //        rain.TimeCollect = currentDate;
        //        rain.PeriodRain = (decimal)random.NextDouble();
        //        currentDate = currentDate.AddHours(1).AddMinutes(5).AddSeconds(1);
        //        lists.Add(rain);
        //    }
        //    m_chartRain.AddRains(lists);
        //}

        public void InitWaterStage()
        {
            Random              random      = new Random();
            DateTime            currentDate = DateTime.Now.Date;
            List <CEntityWater> lists       = new List <CEntityWater>();

            for (int i = 0; i < 24 * 10; ++i)
            {
                CEntityWater water = new CEntityWater();
                water.TimeCollect = currentDate;
                water.WaterStage  = (decimal)random.NextDouble() + 100;
                water.WaterFlow   = (decimal)random.NextDouble() * 10;
                currentDate       = currentDate.AddHours(1).AddMinutes(5).AddSeconds(1);
                lists.Add(water);
            }
            m_chartWaterFlow.AddWaters(lists);
        }
Exemple #8
0
 /// <summary>
 /// 根据界面的数据,生成添加的实体类
 /// </summary>
 private void GenerateAdddedDate()
 {
     if (chk_Rain.CheckState == CheckState.Checked)
     {
         // 新建雨量记录
         m_entityRain              = new CEntityRain();
         m_entityRain.StationID    = m_currentStation.StationID;
         m_entityRain.TimeCollect  = dtp_CollectTime.Value;
         m_entityRain.TimeRecieved = dtp_TimeReceived.Value;
         m_entityRain.MessageType  = CEnumHelper.UIStrToMesssageType(cmb_DataType.Text);
         m_entityRain.ChannelType  = CEnumHelper.UIStrToChannelType(cmb_ChannelType.Text);
         //m_entityRain.PeriodRain = number_PeriodRain.Value;
         //m_entityRain.DayRain = number_DayRain.Value;
         m_entityRain.TotalRain = number_TotalRain.Value;
         m_entityRain.BState    = 1;//默认是正常的
     }
     if (chk_Water.CheckState == CheckState.Checked)
     {
         // 新建水位记录
         m_entityWater              = new CEntityWater();
         m_entityWater.StationID    = m_currentStation.StationID;
         m_entityWater.TimeCollect  = dtp_CollectTime.Value;
         m_entityWater.TimeRecieved = dtp_TimeReceived.Value;
         m_entityWater.MessageType  = CEnumHelper.UIStrToMesssageType(cmb_DataType.Text);
         m_entityWater.ChannelType  = CEnumHelper.UIStrToChannelType(cmb_ChannelType.Text);
         m_entityWater.WaterStage   = number_WaterStage.Value;
         m_entityWater.WaterFlow    = number_WaterFlow.Value;
         m_entityWater.state        = 1;
     }
     if (chk_Voltage.CheckState == CheckState.Checked)
     {
         // 新建电压记录
         m_entityVoltage              = new CEntityVoltage();
         m_entityVoltage.StationID    = m_currentStation.StationID;
         m_entityVoltage.TimeCollect  = dtp_CollectTime.Value;
         m_entityVoltage.TimeRecieved = dtp_TimeReceived.Value;
         m_entityVoltage.MessageType  = CEnumHelper.UIStrToMesssageType(cmb_DataType.Text);
         m_entityVoltage.ChannelType  = CEnumHelper.UIStrToChannelType(cmb_ChannelType.Text);
         m_entityVoltage.Voltage      = number_Voltage.Value;
         m_entityVoltage.state        = 1;
     }
 }
 // 添加电压记录
 public void AddWater(CEntityWater entity)
 {
     m_listAddedWater.Add(entity);
 }
Exemple #10
0
        private void AssertWaterData(CEntityWater water, ref ERTDDataState rtdState, bool bNotityWarning = true)
        {
            // 判断水量信息是否合法,写入系统信息或者告警信息
            CEntityStation station = CDBDataMgr.GetInstance().GetStationById(water.StationID);
            StringBuilder  errinfo = new StringBuilder();

            // 判断是否超过最大值
            rtdState = ERTDDataState.ENormal;
            if (station.DWaterMax.HasValue)
            {
                if (water.WaterStage > station.DWaterMax)
                {
                    errinfo.AppendFormat("水位 {0} 超过最大值 {1} 站点编号:{2}", water.WaterStage.ToString("0.00"), station.DWaterMax.Value.ToString("0.00"), water.StationID);
                    rtdState = ERTDDataState.EError;
                }
            }
            // 判断是否低于最小值
            if (station.DWaterMin.HasValue)
            {
                if (water.WaterStage < station.DWaterMin)
                {
                    errinfo.AppendFormat("水位 {0} 低于最小值 {1} 站点编号:{2}", water.WaterStage.ToString("0.00"), station.DWaterMin.Value.ToString("0.00"), water.StationID);
                    rtdState = ERTDDataState.EError;
                }
            }

            // 判断是否超过允许变化值,暂时还未考虑好
            if (station.DWaterChange.HasValue && station.LastWaterStage.HasValue)
            {
                Decimal change = water.WaterStage - station.LastWaterStage.Value;
                if (change > station.DWaterChange)
                {
                    errinfo.AppendFormat("水位变化 {0} 超过允许值{1} 站点编号:{2}", change.ToString("0.00"), station.DWaterChange.Value.ToString("0.00"), water.StationID);
                    rtdState = ERTDDataState.EError;
                }
            }

            // 更新水位值,便于计算水位变化
            station.LastWaterStage = water.WaterStage;

            // 通知其它页面
            if (!errinfo.ToString().Equals(""))
            {
                if (bNotityWarning)
                {
                    CSystemInfoMgr.Instance.AddInfo(errinfo.ToString(), water.TimeCollect, ETextMsgState.EError);
                    CWarningInfoMgr.Instance.AddInfo(errinfo.ToString(), water.TimeCollect, EWarningInfoCodeType.EWater, station.StationID);
                    if (flag == 0)
                    {
                        flag = 1;
                        ////MessageBoxForm mbForm = new MessageBoxForm();
                        ////mbForm.StartPosition = FormStartPosition.CenterParent;
                        ////mbForm.Text = "水位报警";
                        ////mbForm.label3.Text = water.TimeCollect.ToString();
                        ////mbForm.label1.Text = errinfo.ToString();
                        ////mbForm.label2.Text = "是否关闭报警声音?";
                        ////mbForm.TopMost = true;
                        ////mbForm.ShowDialog();
                        string info = water.TimeCollect.ToString() + "\r\n" + "\r\n" + errinfo.ToString() + "\r\n" + "\r\n" + "是否关闭报警声音?" + "\r\n";
                        Thread t    = new Thread(new ParameterizedThreadStart(MessageShow));
                        t.Start(info);
                    }
                }
            }
        }
Exemple #11
0
        public void Import(CBatchStruct batch, DateTime DStartTime, DateTime DEndTime, bool isUpdate = false)
        {
            DateTime?     lastTime             = null;
            ERTDDataState tmpRTDWaterDataState = ERTDDataState.ENormal;
            ////gm  1024 $60091K02031610220800084505230800084505
            //string rawString = rawData;
            //string startTime = rawString.Substring(11, 10);
            //string endTime = rawString.Substring(27, 6);
            //string strYear = 20 + startTime.Substring(0, 2);
            //string strMonth = startTime.Substring(2, 2);
            //string strStartDay = startTime.Substring(4, 2);
            //string strStartHour = startTime.Substring(6, 2);
            //string strStartMinute = startTime.Substring(8, 2);
            //string strEndDay = endTime.Substring(0, 2);
            //string strEndHour = endTime.Substring(2, 2);
            //string strEndMinute = endTime.Substring(4, 2);

            ////DateTime DStartTime = new DateTime(int.Parse(strYear), int.Parse(strMonth), int.Parse(strStartDay), int.Parse(strStartHour), int.Parse(strStartMinute), 0);
            ////DateTime DEndTime = new DateTime(int.Parse(strYear), int.Parse(strMonth), int.Parse(strEndDay), int.Parse(strEndHour), int.Parse(strEndMinute), 0);

            List <CTimeAndData> datas = batch.Datas;
            string         stationid  = batch.StationID;
            EStationType   type       = batch.StationType;
            CEntityStation station    = m_proxyStation.QueryById(stationid);

            //  if (type == EStationType.ERainFall)
            if (type == EStationType.ERiverWater)
            // if (true)
            {
                for (int i = 0; i < datas.Count; i++)
                {
                    if (lastTime == datas[i].Time)
                    {
                        lastTime = datas[i].Time;
                        continue;
                    }
                    lastTime = datas[i].Time;
                    int                status          = 1;
                    DateTime           dt              = datas[i].Time;
                    string             data            = datas[i].Data.ToString();
                    int                RawtotalRain    = int.Parse(data.Substring(0, 4));
                    Nullable <Decimal> RawrainAccuracy = decimal.Parse((data.Substring(4, 2)));
                    Nullable <Decimal> rainAccuracy    = RawrainAccuracy / 10;
                    Nullable <Decimal> totalRain       = RawtotalRain * rainAccuracy;
                    CEntityRain        LastSharpMes    = new CEntityRain();
                    CEntityRain        LastDayMes      = new CEntityRain();
                    //如果是第一条数据,则通过数据库获取上一条数据
                    if (i == 0)
                    {
                        Nullable <Decimal>      lastTotalRain = null, lastDayTotalRain = null, lastSharpClockTotalRain = null;
                        Nullable <DateTime>     lastDayTime        = null;
                        Nullable <DateTime>     lastClockSharpTime = null;
                        Nullable <DateTime>     lastDataTime       = null;
                        Nullable <Decimal>      lastPeriodRain     = null;
                        Nullable <EChannelType> lastChannelType    = null;
                        Nullable <EMessageType> lastMessageType    = null;

                        LastSharpMes = m_proxyRain.GetLastSharpRain(stationid, dt);
                        LastDayMes   = m_proxyRain.GetLastDayRain(stationid, dt);

                        lastTotalRain           = m_proxyRain.GetLastRain(stationid, dt).TotalRain;
                        lastSharpClockTotalRain = LastSharpMes.TotalRain;
                        lastDayTotalRain        = LastDayMes.TotalRain;

                        lastClockSharpTime = LastSharpMes.TimeCollect;
                        lastDayTime        = LastDayMes.TimeCollect;

                        //改动

                        // 查询成功

                        station.LastTotalRain    = lastTotalRain;
                        station.LastDayTotalRain = lastDayTotalRain;
                        station.LastPeriodRain   = lastPeriodRain;
                        if (lastDataTime != null && lastDataTime.HasValue)
                        {
                            station.LastDataTime = lastDataTime;
                        }
                        if (lastClockSharpTime != null && lastClockSharpTime.HasValue)
                        {
                            station.LastClockSharpTime = lastClockSharpTime;
                        }
                        if (lastDayTime != null && lastDayTime.HasValue)
                        {
                            station.LastDayTime = lastDayTime;
                        }
                        if (lastChannelType != null && lastChannelType.HasValue)
                        {
                            station.LastChannelType = lastChannelType;
                        }
                        if (lastMessageType != null && lastMessageType.HasValue)
                        {
                            station.LastMessageType = lastMessageType;
                        }

                        //int year = dt.Year;
                        //int month = dt.Month;
                        //int day = dt.Day;
                        //DateTime tmp1 = new DateTime(year, month, day, 8, 0, 0);
                        //DateTime tmp2 = tmp1.Subtract(new TimeSpan(24, 0, 0));
                        //station.LastDayTime = tmp2;
                        //lastSharpClockTotalRain = m_proxyRain.GetLastClockSharpTotalRain(stationid, dt);
                        //lastDayTotalRain = m_proxyRain.GetLastDayTotalRain(stationid, tmp2);
                        station.LastTotalRain = lastTotalRain;

                        station.LastClockSharpTotalRain = lastSharpClockTotalRain;
                        station.LastClockSharpTime      = lastClockSharpTime;

                        station.LastDayTotalRain = lastDayTotalRain;
                        station.LastDayTime      = lastDayTime;
                    }
                    CEntityRain rain = new CEntityRain();
                    rain.StationID   = stationid;
                    rain.TimeCollect = dt;
                    rain.TotalRain   = totalRain;
                    // rain.DifferneceRain = CalDifferenceRain(rainAccuracy, RawtotalRain, station.LastTotalRain, station.DRainChange, ref status);

                    if ((dt.Minute + dt.Second) == 0)
                    {
                        //rain.PeriodRain = CalPeriodRain(rainAccuracy, RawtotalRain, dt, station.LastClockSharpTotalRain);
                        rain.PeriodRain = CalPeriodRain_2(rainAccuracy, RawtotalRain, dt, station.LastClockSharpTotalRain, station.LastClockSharpTime, station.LastTotalRain);
                        station.LastClockSharpTotalRain = totalRain;
                        station.LastClockSharpTime      = dt;
                    }
                    if (dt.Hour == 8)
                    {
                        //rain.DayRain = CalDayRain(rainAccuracy, RawtotalRain, dt, station.LastDayTime, station.LastDayTotalRain);
                        rain.DayRain             = CalDayRain_2(rainAccuracy, RawtotalRain, dt, station.LastDayTotalRain, station.LastDayTime);
                        station.LastDayTotalRain = totalRain;
                        station.LastDayTime      = dt;
                    }
                    rain.DifferneceRain   = CalDifferenceRain_1(rainAccuracy, RawtotalRain, station.LastTotalRain, station.DRainChange, ref status);
                    station.LastTotalRain = totalRain;
                    // 待检测
                    rain.ChannelType = EChannelType.GPRS;
                    rain.MessageType = EMessageType.Batch;

                    rain.TimeRecieved = DateTime.Now;
                    if (status == 1)
                    {
                        rain.BState = 1;
                    }
                    else
                    {
                        rain.BState = 0;
                    }

                    rainResults.Add(rain);
                }
                List <CEntityRain> listInsert   = new List <CEntityRain>();
                List <CEntityRain> listUpdate   = new List <CEntityRain>();
                List <DateTime>    listDateTime = m_proxyRain.getExistsTime(stationid, DStartTime, DEndTime);
                for (int i = 0; i < rainResults.Count; i++)
                {
                    if (listDateTime.Contains(rainResults[i].TimeCollect))
                    {
                        listUpdate.Add(rainResults[i]);
                    }
                    else
                    {
                        listInsert.Add(rainResults[i]);
                    }
                }
                m_proxyRain.AddNewRows(listInsert); //写入数据库
                m_proxyRain.UpdateRows(listUpdate); //更新

                //m_proxyRain.AddOrUpdate(rainResults);
            }
            //操作water表
            //   if (type == EStationType.ERiverWater)
            if (type == EStationType.ERainFall)
            {
                for (int i = 0; i < datas.Count; i++)
                {
                    decimal  data = 0;
                    DateTime dt   = datas[i].Time;
                    try
                    {
                        string strData = datas[i].Data.Trim();
                        //decimal data = int.Parse(datas[i].Data) / 100;
                        data = decimal.Parse(strData) / 100;
                    }
#pragma warning disable CS0168 // 声明了变量“e”,但从未使用过
                    catch (Exception e)
#pragma warning restore CS0168 // 声明了变量“e”,但从未使用过
                    {
                        break;
                    }
                    //操作water表
                    CEntityWater water = new CEntityWater();
                    water.StationID    = station.StationID;
                    water.TimeCollect  = dt;
                    water.TimeRecieved = DateTime.Now;
                    if (station.DWaterBase.HasValue)
                    {
                        // 减去水位基值
                        water.WaterStage = data + station.DWaterBase.Value;
                    }
                    else
                    {
                        water.WaterStage = data;
                    }
                    water.WaterFlow = CDBDataMgr.GetInstance().GetWaterFlowByWaterStageAndStation(stationid, data);
                    //此处 waterflow需要计算的
                    water.ChannelType = EChannelType.GPRS;
                    water.MessageType = EMessageType.Batch;
                    AssertWaterData(water, ref tmpRTDWaterDataState);
                    //if (tmpRTDWaterDataState == ERTDDataState.ENormal)
                    //{
                    //    water.state = 1;
                    //}
                    //if (tmpRTDWaterDataState == ERTDDataState.EError)
                    //{
                    //    water.state = 0;
                    //}
                    //if (tmpRTDWaterDataState == ERTDDataState.EWarning)
                    //{
                    //    water.state = 2;
                    //}

                    waterResults.Add(water);
                }
                List <CEntityWater> listInsert   = new List <CEntityWater>();
                List <CEntityWater> listUpdate   = new List <CEntityWater>();
                List <DateTime>     listDateTime = m_proxyWater.getExistsTime(stationid, DStartTime, DEndTime);
                for (int i = 0; i < waterResults.Count; i++)
                {
                    if (listDateTime.Contains(waterResults[i].TimeCollect))
                    {
                        listUpdate.Add(waterResults[i]);
                    }
                    else
                    {
                        listInsert.Add(waterResults[i]);
                    }
                }
                //
                m_proxyWater.AddNewRows(listInsert); //写入数据库
                m_proxyWater.UpdateRows(listUpdate); //更新数据库

                //m_proxyWater.AddOrUpdate(waterResults);
            }
        }