Exemple #1
0
        /// <summary>
        /// Пишем информацию о смене счетчика
        /// </summary>
        /// <param name="integralActTi"></param>
        /// <param name="row"></param>
        /// <param name="comment"></param>
        /// <param name="tiNum"></param>
        /// <param name="channelName"></param>
        /// <param name="firstVal"></param>
        /// <param name="lastVal"></param>
        /// <returns></returns>
        public bool WriteChangePuInfo(List <TMetersTO_Information> metersInformations, string name, double voltage,
                                      StringBuilder comment, int tiNum, string channelName,
                                      TINTEGRALVALUES_DB firstVal, TINTEGRALVALUES_DB lastVal
                                      )
        {
            if (metersInformations == null || metersInformations.Count == 0)
            {
                return(false);
            }

            var to = metersInformations.First();

            //Первая запись
            if (string.IsNullOrEmpty(to.MeterSerialNumberBefo))
            {
                //Это начало действия нового стчетчика
                comment.AppendFormat("Установка ПУ №{0}\n"
                                     + "дата установки {1:dd.MM.yyyy HH:mm}\n"
                                     + "первое значение после установки{2:" +
                                     IntegralFormat + "}\n",
                                     to.MeterSerialNumberAfter, to.ExchangeDateTime,
                                     to.DataAfter / (double)_paramIntegralAct.UnitDigit);
            }
            else
            {
                comment.AppendFormat("Замена ПУ №{0} на №{1}\n"
                                     + "дата замены {2:dd.MM.yyyy HH:mm}\n"
                                     + "последнее значение перед заменой {3:0.#######}\n"
                                     + "первое значение после замены {4:0.#######}\n",
                                     to.MeterSerialNumberBefo, to.MeterSerialNumberAfter, to.ExchangeDateTime, to.DataBefo / (double)_paramIntegralAct.UnitDigit, to.DataAfter / (double)_paramIntegralAct.UnitDigit);

                SetRowHeight(Row, 2 * 250);

                //Информация до смены
                SetCellValue(Row, StartCol + 3, to.MeterSerialNumberBefo + " ", CenterFormatThin);                  //старый номер ПУ
                SetCellValue(Row, StartCol + 5, to.DataBefo / (double)_paramIntegralAct.UnitDigit, IntegralFormat); // показания старого ПУ на начало периода

                if (firstVal != null)
                {
                    SetCellValue(Row, StartCol + 6, (firstVal.F_VALUE) / (double)_paramIntegralAct.UnitDigit, IntegralFormat); // последние данные старого ПУ

                    if ((firstVal.F_FLAG & VALUES_FLAG_DB.AllAlarmStatuses) != VALUES_FLAG_DB.None ||
                        (firstVal.EventDateTime - _paramIntegralAct.DTStart).TotalDays > 1)
                    {
                        SetCellBkColor(Row, StartCol + 6, _noDrumsColor);
                        SetComment(Row, StartCol + 6,
                                   firstVal.EventDateTime.ToString("dd.MM.yyyy HH:mm") +
                                   " :\n" + firstVal.F_FLAG.FlagToString("\n"));
                        SetCommentProperties(Row, StartCol + 6, _commentProps);
                    }
                }

                SetCellFloatValue(Row, StartCol + 7, to.IntDataBefor / (double)_paramIntegralAct.UnitDigit, true, need0: false); // Разница
                SetCellFloatValue(Row, StartCol + 8, to.CoeffTransformationBefo, true, need0: false);                            // Коэффициент ПУ до смены

                SetCellValue(Row, StartCol + 9, to.HhDataBefor / (double)_paramIntegralAct.UnitDigit, IntegralFormat);           // Получасовки до смены
                                                                                                                                 //if (isInterval) SetCellValue(Row, StartCol + 10, to.HhDataBefor, IntegralFormat); // Получасовки до смены
                Row++;
            }

            //промежуточные записи
            foreach (var po in metersInformations.Skip(1).Take(metersInformations.Count - 1))
            {
                comment.AppendFormat("Замена ПУ №{0} на №{1}\n"
                                     + "дата замены {2:dd.MM.yyyy HH:mm}\n"
                                     + "последнее значение перед заменой {3:0.#######}\n"
                                     + "первое значение после замены {4:0.#######}\n",
                                     po.MeterSerialNumberBefo, po.MeterSerialNumberAfter, po.ExchangeDateTime, po.DataBefo / (double)_paramIntegralAct.UnitDigit, po.DataAfter / (double)_paramIntegralAct.UnitDigit);

                SetRowHeight(Row, 2 * 250);

                //Информация до смены
                SetCellValue(Row, StartCol + 1, name + " после замены ", LeftFormatThin);
                SetCellValue(Row, StartCol + 2, voltage, CenterFormatThin);
                SetCellValue(Row, StartCol + 3, po.MeterSerialNumberBefo + " ", CenterFormatThin);                                                   //старый номер ПУ
                SetCellValue(Row, StartCol + 4, channelName, CenterFormatThin);
                SetCellValue(Row, StartCol + 5, po.DataBefo / (double)_paramIntegralAct.UnitDigit, IntegralFormat);                                  // показания старого ПУ на начало периода
                SetCellValue(Row, StartCol + 6, to.DataAfter / (double)_paramIntegralAct.UnitDigit, IntegralFormat);                                 // последние данные старого ПУ
                SetCellFloatValue(Row, StartCol + 7, po.IntDataBefor / (double)_paramIntegralAct.UnitDigit, true, need0: false);                     // Разница
                SetCellFloatValue(Row, StartCol + 8, po.CoeffTransformationBefo, true, need0: false);                                                // Коэффициент ПУ до смены

                SetCellValue(Row, StartCol + 9, po.IntDataBefor / (double)_paramIntegralAct.UnitDigit * po.CoeffTransformationBefo, IntegralFormat); // Получасовки до смены
                to = po;                                                                                                                             //Сохраняем предыдущее
                Row++;
            }

            //Последняя запись
            to = metersInformations.Last();

            SetRowHeight(Row, 2 * 250);

            //Последняя строка со значениями после смены
            //SetCellValue(Row, _startCol, tiNum, 0);
            SetCellValue(Row, StartCol + 1, name + " после замены ", LeftFormatThin);
            SetCellValue(Row, StartCol + 2, voltage, CenterFormatThin);
            //SetCellAlignH(xls, Row, startCol + 2, THFlxAlignment.center);
            SetCellValue(Row, StartCol + 4, channelName, CenterFormatThin);
            SetCellValue(Row, StartCol + 3, to.MeterSerialNumberAfter + " ", CenterFormatThin);                  //новый номер ПУ
            SetCellValue(Row, StartCol + 6, to.DataAfter / (double)_paramIntegralAct.UnitDigit, IntegralFormat); // показания нового ПУ на конец периода

            if (lastVal != null)
            {
                SetCellValue(Row, StartCol + 5, (lastVal.F_VALUE) / (double)_paramIntegralAct.UnitDigit, IntegralFormat); // Первые данные после смены
                if ((lastVal.F_FLAG & VALUES_FLAG_DB.AllAlarmStatuses) != VALUES_FLAG_DB.None ||
                    (_paramIntegralAct.DTEnd - lastVal.EventDateTime).TotalDays > 1)
                {
                    SetCellBkColor(Row, StartCol + 5, _noDrumsColor);
                    SetComment(Row, StartCol + 5, lastVal.EventDateTime.ToString("dd.MM.yyyy HH:mm") +
                               " :\n" + lastVal.F_FLAG.FlagToString("\n"));
                    SetCommentProperties(Row, StartCol + 5, _commentProps);
                }
            }

            SetCellFloatValue(Row, StartCol + 7, to.HhDataAfter / (double)_paramIntegralAct.UnitDigit / to.CoeffTransformationAfter,
                              true, need0: Need0);                                                                 // Разница показаний

            SetCellFloatValue(Row, StartCol + 8, to.CoeffTransformationAfter, true, need0: false);                 // Коэффициент ПУ после смены
            SetCellValue(Row, StartCol + 9, to.HhDataAfter / (double)_paramIntegralAct.UnitDigit, IntegralFormat); // Получасовки после смены

            return(true);
        }
Exemple #2
0
        /// <summary>
        /// Пишем интегралы
        /// </summary>
        /// <param name="firstVal"></param>
        /// <param name="lastVal"></param>
        /// <param name="metersDelta"></param>
        /// <param name="deltaValWithCoeff"></param>
        /// <param name="dtStart"></param>
        /// <param name="dtEnd"></param>
        /// <param name="commentProps"></param>
        public void WriteIntegralInfo(TINTEGRALVALUES_DB firstVal, TINTEGRALVALUES_DB lastVal,
                                      double metersDelta, double deltaValWithCoeff, StringBuilder comment)
        {
            var coeffUnit             = ((double)_paramIntegralAct.UnitDigit);
            var isIntegralThroughZero = false;

            if (lastVal != null)
            {
                SetCellFloatValue(Row, StartCol + 5, ((lastVal.F_VALUE) / coeffUnit), true, need0: Need0); // на конеч
                if ((lastVal.F_FLAG & VALUES_FLAG_DB.AllAlarmStatuses) != VALUES_FLAG_DB.None || (_paramIntegralAct.DTEnd - lastVal.EventDateTime).TotalDays > 1)
                {
                    SetCellBkColor(Row, StartCol + 5, _noDrumsColor);
                    SetComment(Row, StartCol + 5, lastVal.EventDateTime.ToString("dd.MM.yyyy HH:mm") + " :\n" + lastVal.F_FLAG.FlagToString("\n"));
                    SetCommentProperties(Row, StartCol + 5, _commentProps);
                }

                if (lastVal.F_FLAG.HasFlag(VALUES_FLAG_DB.IsIntegralThroughZero)) //Обработка перехода через 0
                {
                    isIntegralThroughZero = true;
                    SetCellBkColor(Row, StartCol + 5, _noDrumsColor);
                    SetComment(Row, StartCol + 5, lastVal.F_FLAG.FlagToString("\n"));
                    SetCommentProperties(Row, StartCol + 5, _commentProps);
                }
            }
            else
            {
                SetComment(Row, StartCol + 5, "Показание не найдено, или отсутствует");
                SetCellFormat(Row, StartCol + 5, IntegralFormat);
                SetCellBkColor(Row, StartCol + 5, _noDrumsColor);
            }

            if (firstVal != null)
            {
                SetCellFloatValue(Row, StartCol + 6, ((firstVal.F_VALUE) / coeffUnit), true, need0: Need0); // на начало
                if ((firstVal.F_FLAG & VALUES_FLAG_DB.AllAlarmStatuses) != VALUES_FLAG_DB.None || (firstVal.EventDateTime - _paramIntegralAct.DTStart).TotalDays > 1)
                {
                    SetCellBkColor(Row, StartCol + 6, _noDrumsColor);
                    SetComment(Row, StartCol + 6, firstVal.EventDateTime.ToString("dd.MM.yyyy HH:mm") + " :\n" + firstVal.F_FLAG.FlagToString("\n"));
                    SetCommentProperties(Row, StartCol + 6, _commentProps);
                }

                if (firstVal.F_FLAG.HasFlag(VALUES_FLAG_DB.IsIntegralThroughZero)) //Обработка перехода через 0
                {
                    isIntegralThroughZero = true;
                    SetCellBkColor(Row, StartCol + 6, _noDrumsColor);
                    SetComment(Row, StartCol + 6, firstVal.F_FLAG.FlagToString("\n"));
                    SetCommentProperties(Row, StartCol + 6, _commentProps);
                }
            }
            else
            {
                SetComment(Row, StartCol + 6, "Показание не найдено, или отсутствует");
                SetCellFormat(Row, StartCol + 6, IntegralFormat);
                SetCellBkColor(Row, StartCol + 6, _noDrumsColor);
            }

            SetCellFloatValue(Row, StartCol + 7, metersDelta / coeffUnit, true, need0: Need0);       // разность

            SetCellFloatValue(Row, StartCol + 9, deltaValWithCoeff / coeffUnit, true, need0: Need0); //Количество энергии учтеной ПУ

            //Считаем сумму барабанов
            //drumVal += iVal.DiffWithCoeff / 1000;

            //Достоверность для ПУ
            if (firstVal == null || firstVal.F_FLAG.HasFlag(VALUES_FLAG_DB.DataNotFull) ||
                lastVal == null || lastVal.F_FLAG.HasFlag(VALUES_FLAG_DB.DataNotFull))
            {
                SetCellBkColor(Row, StartCol + 9, _noDrumsColor);
            }
            else if (firstVal.F_FLAG.HasFlag(VALUES_FLAG_DB.UpToTimeZone) ||
                     lastVal.F_FLAG.HasFlag(VALUES_FLAG_DB.UpToTimeZone))
            {
                SetCellBkColor(Row, StartCol + 9, _offsetFromMoscowEnbledForDrumsColor);
                SetComment(Row, StartCol + 9, (firstVal.F_FLAG | lastVal.F_FLAG).FlagToString("\n"));
                SetCommentProperties(Row, StartCol + 9, _commentProps);
            }

            if (isIntegralThroughZero)
            {
                comment.Append("Переход через 0\n");
            }
        }