コード例 #1
0
 protected abstract void buildReport(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData data);
コード例 #2
0
        protected override void buildReport(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData data)
        {
            IDictionary f = null;
            IDataReader r = data.DataProvider.GetDataReader("dsMain", data.CustomData);

            if (r.Read())
            {
                f = _GetDataFromDataRow(r);
            }

            if (null == f)
            {
                // Сотрудник не найден
                writeEmptyBody(data.RepGen, "Сотрудник не найден");
                return;
            }
            data.RepGen.WriteLayoutMaster();
            data.RepGen.StartPageSequence();
            data.RepGen.StartPageBody();
            StringBuilder sb = new StringBuilder("");

            sb.AppendFormat("<fo:block font-weight='bold' font-size='18px'> {0}</fo:block>", f["EmpName"]);
            sb.Append("<fo:block/>");
            sb.Append("<fo:table color='#FFFFFF' text-align='left' font-size='12px' font-family='MS Sans-serif'>");
            sb.Append("<fo:table-column/>");
            sb.Append("<fo:table-column/>");
            sb.Append("<fo:table-column/>");
            sb.Append("<fo:table-body>");

            sb.Append("<fo:table-row>");
            sb.AppendFormat("<fo:table-cell width='25%'><fo:block><fo:external-graphic src=\"x-get-image.aspx?OT=Employee&amp;PN=Picture&amp;ID={0}\" height=\"240\" width=\"240\" /> </fo:block></fo:table-cell>", xmlEncode(f["ObjectID"]));
            sb.Append("<fo:table-cell width='35%'>");
            sb.AppendFormat("<fo:block> {0} </fo:block>", xmlEncode(f["DepName"]));
            sb.AppendFormat("<fo:block padding-top='10px'> Дата выхода на работу: {0} </fo:block>", r.GetDateTime(2).ToShortDateString());
            sb.Append("</fo:table-cell>");
            sb.Append("</fo:table-row>");
            sb.Append("<fo:table-row>");
            //sb.AppendFormat("<fo:table-cell width='35%'><fo:block> Дата выхода на работу: {0} </fo:block></fo:table-cell>",xmlEncode(f["WorkBeginDate"]));
            sb.Append("<fo:table-cell><fo:block> </fo:block></fo:table-cell>");
            sb.Append("</fo:table-row>");

            sb.Append("</fo:table-body>");
            sb.Append("</fo:table>");
            sb.Append("<fo:table color='#FFFFFF' text-align='left' font-size='12px' font-family='MS Sans-serif'>");
            sb.Append("<fo:table-column/>");
            sb.Append("<fo:table-column/>");
            sb.Append("<fo:table-body>");
            sb.Append("<fo:table-row>");
            sb.Append("<fo:table-cell width='50%'>");
            sb.Append("<fo:block font-weight='bold' text-align='left' padding-top='10px'> Место работы: </fo:block>");
            sb.AppendFormat("<fo:block padding-left='15px' padding-top='10px'> Адрес: {0} </fo:block>", xmlEncode(f["Address"]));
            sb.AppendFormat("<fo:block padding-left='15px' padding-top='10px'> Тел.: {0} </fo:block>", xmlEncode(f["APhone"]));
            sb.AppendFormat("</fo:table-cell>");
            sb.Append("<fo:table-cell width='50%'>");
            sb.Append("<fo:block font-weight='bold' text-align='left' padding-top='10px'> Номера телефонов: </fo:block>");
            sb.AppendFormat("<fo:block padding-left='15px' padding-top='10px'> Рабочие: {0} </fo:block>", xmlEncode(f["PhoneExt"]));
            sb.AppendFormat("<fo:block padding-left='15px' padding-top='10px'> Мобильный: {0} </fo:block>", xmlEncode(f["MobilePhone"]));
            sb.AppendFormat("</fo:table-cell>");
            sb.Append("</fo:table-row>");
            sb.Append("<fo:table-row>");
            sb.Append("<fo:table-cell width='50%'>");
            sb.Append("<fo:block font-weight='bold' text-align='left' padding-top='10px'> E-Mail: </fo:block>");
            sb.AppendFormat("<fo:block padding-left='15px' padding-top='10px'> {0} </fo:block>", xmlEncode(f["Email"]));
            sb.AppendFormat("</fo:table-cell>");
            sb.Append("<fo:table-cell width='50%'>");
            sb.Append("<fo:block font-weight='bold' text-align='left' padding-top='10px'>Мгновенные сообщения </fo:block>");
            sb.AppendFormat("<fo:block padding-left='15px' padding-top='10px'>CROC Messenger: {0} </fo:block>", xmlEncode(f["Email"]));
            sb.AppendFormat("<fo:block padding-left='15px' padding-top='10px'>SMS: {0} </fo:block>", xmlEncode(f["MobilePhone"]));
            sb.AppendFormat("</fo:table-cell>");
            sb.Append("</fo:table-row>");
            sb.Append("</fo:table-body>");
            sb.Append("</fo:table>");
            sb.AppendFormat("<fo:block font-weight='bold' font-size='14px' padding-top='15px'>Участие в проектах </fo:block>");
            // Проекты сотрудника
            if (r.NextResult())
            {
                sb.Append("<fo:table color='#FFFFFF' text-align='left' font-size='12px' font-family='MS Sans-serif'>");
                sb.Append("<fo:table-column/>");
                sb.Append("<fo:table-column/>");
                sb.Append("<fo:table-body>");
                while (r.Read())
                {
                    f = _GetDataFromDataRow(r);
                    sb.Append("<fo:table-row>");
                    sb.Append("<fo:table-cell width='50%'>");
                    sb.Append("<fo:block font-weight='bold' text-align='left' padding-top='10px'>Проект: </fo:block>");
                    sb.AppendFormat("<fo:block padding-left='15px' padding-top='10px'> {0} </fo:block>", xmlEncode(f["Project"]));
                    sb.AppendFormat("</fo:table-cell>");
                    sb.Append("<fo:table-cell width='50%'>");
                    sb.Append("<fo:block font-weight='bold' text-align='left' padding-top='10px'>Роль в Проекте: </fo:block>");
                    sb.AppendFormat("<fo:block padding-left='15px' padding-top='10px'> {0} </fo:block>", xmlEncode(f["ProjectRole"]));
                    sb.AppendFormat("</fo:table-cell>");
                    sb.Append("</fo:table-row>");
                }
                sb.Append("</fo:table-body>");
                sb.Append("</fo:table>");
            }

            data.RepGen.Header(sb.ToString());
            data.RepGen.EndPageBody();
            data.RepGen.EndPageSequence();
        }
コード例 #3
0
 protected override void WriteReport(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData data)
 {
     buildReport(data);
 }
コード例 #4
0
ファイル: r_Incident.cs プロジェクト: SanSay157/IT8
        private void insertAdditionalProperties(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData data, IDictionary inc)
        {
            //Полный путь виртуального каталога приложения треккера - пока получаем через System.Web.
            //Он нужен для корректного экспорта отчета инцидента с картинкой в excel.
            //В проекте XFW 2.0 есть заявка на соотвествующую доработку - чтобы в ReportService также можно было использовать виртуальные относительные пути.
            //Когда это будет сделано,через System.Web полный путь получать уже не нужно будет.
            string virtualPath = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath;

            using (IDataReader r = data.DataProvider.GetDataReader("dsAdditional", inc["ObjectID"]))
            {
                Guid          prev = Guid.Empty;
                StringBuilder str  = new StringBuilder();
                while (r.Read())
                {
                    Guid cur = r.GetGuid(0);
                    if (cur != prev)
                    {
                        prev = cur;
                        if (str.Length != 0)
                        {
                            data.RepGen.TRAddCell(str.ToString(), null, 5, 1);
                            data.RepGen.TREnd();
                            str.Length = 0;
                        }
                        data.RepGen.TRStart();
                        data.RepGen.TRAddCell(xmlEncode(r.GetString(1)) + ":", null, 1, 1, "BOLD");
                    }
                    // Соберём строчку
                    switch ((IPROP_TYPE)r.GetInt32(2))
                    {
                    case IPROP_TYPE.IPROP_TYPE_BOOLEAN:
                        str.AppendFormat("<fo:block>{0}</fo:block>", (0 == r.GetDecimal(3))?"Ложь":"Истина");
                        break;

                    case IPROP_TYPE.IPROP_TYPE_DATE:
                        str.AppendFormat("<fo:block>{0}</fo:block>", xmlEncode(r.GetDateTime(4).ToLongDateString()));
                        break;

                    case IPROP_TYPE.IPROP_TYPE_DATEANDTIME:
                        str.AppendFormat("<fo:block>{0}</fo:block>", xmlEncode(r.GetDateTime(4)));
                        break;

                    case IPROP_TYPE.IPROP_TYPE_DOUBLE:
                        str.AppendFormat("<fo:block>{0}</fo:block>", xmlEncode(r.GetDecimal(3)));
                        break;

                    case IPROP_TYPE.IPROP_TYPE_LONG:
                        str.AppendFormat("<fo:block>{0}</fo:block>", xmlEncode(Convert.ToInt32(r.GetDecimal(3))));
                        break;

                    case IPROP_TYPE.IPROP_TYPE_TIME:
                        str.AppendFormat("<fo:block>{0}</fo:block>", xmlEncode(r.GetDateTime(4).ToLongTimeString()));
                        break;

                    case IPROP_TYPE.IPROP_TYPE_STRING:
                        str.Append(_LongText(r.GetString(5)));
                        break;

                    case IPROP_TYPE.IPROP_TYPE_TEXT:
                        str.Append(_LongText(r.GetString(6)));
                        break;

                    case IPROP_TYPE.IPROP_TYPE_PICTURE:
                        str.AppendFormat("<fo:block><fo:external-graphic src=\"" + virtualPath + "/x-get-image.aspx?OT=IncidentPropValue&amp;PN=FileData&amp;ID={0}\"/></fo:block>", r.GetGuid(8));
                        break;

                    case IPROP_TYPE.IPROP_TYPE_FILE:
                        int sizeInBytes = r.GetInt32(7);
                        str.AppendFormat("<fo:block><fo:basic-link external-destination=\"x-get-image.aspx?OT=IncidentPropValue&amp;PN=FileData&amp;ID={0}\">{1}</fo:basic-link></fo:block>", r.GetGuid(8), xmlEncode((r.IsDBNull(5)?"Безымянный":r.GetString(5)) + " (" + sizeInBytes + " " + Utils.GetNumericEnding(sizeInBytes, "байт", "байтa", "байт") + ")"));
                        break;
                    }
                }
                if (str.Length != 0)
                {
                    data.RepGen.TRAddCell(str.ToString(), null, 5, 1);
                    data.RepGen.TREnd();
                    str.Length = 0;
                }
            }
        }
コード例 #5
0
ファイル: r_Incident.cs プロジェクト: SanSay157/IT8
        private void insertTasks(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData data, IDictionary inc)
        {
            OneTask[] tasks = OneTask.LoadIncidentTasks((Guid)inc["ObjectID"], data);
            if (0 == tasks.Length)
            {
                return;
            }
            int nTasksWithTimeS = 0;

            foreach (OneTask t in tasks)
            {
                if (t.Spents.Count != 0)
                {
                    ++nTasksWithTimeS;
                }
            }
            //' выводим описания задач
            data.RepGen.TRStart();
            //'Формула 2*nTasks + nTasksWithTimeS показывает, на сколько подстрок будет разбита строка "Задание"
            //'Для каждого задания требуется две строки (названия колонок+информация по заданию) =>  2*nTasks
            //'+nTasksWithTimeS - добавляется столько подстрок, сколько существует списаний времени
            data.RepGen.TRAddCell("Задания:", null, 1, 2 * tasks.Length + nTasksWithTimeS, "BOLD");
            bool notFirst = false;

            foreach (OneTask t in tasks)
            {
                if (notFirst)
                {
                    data.RepGen.TRStart();
                }
                else
                {
                    notFirst = true;
                }
                //' юзер, связанный с задачей
                //'2 + nHasTimeS - показывает, сколько строк объединяет ячейка "Ответственный за задание"
                //'Для вывода информации по заданию необходимо всегда две строки - наименование колонок+сама информация
                //'+nHasTimeS - также нужно прибавить строки для вывода списаний по задаче
                data.RepGen.TRAddCell(_GetUserMailAnchor(t.WorkerString, t.WorkerMail, t.WorkerID, (Guid)inc["ObjectID"], (Guid)inc["Folder"]), null, 1, 2 + (t.Spents.Count == 0?0:1));
                data.RepGen.TRAddCell("Роль", null, 1, 1, "BOLD");
                data.RepGen.TRAddCell("Запланировано", null, 1, 1, "BOLD");
                data.RepGen.TRAddCell("Затрачено", null, 1, 1, "BOLD");
                data.RepGen.TRAddCell("Осталось", null, 1, 1, "BOLD");
                data.RepGen.TREnd();
                //' выводим информацию о запланированном и рельно потраченном времени
                data.RepGen.TRStart();
                data.RepGen.TRAddCell(xmlEncode(t.Role), null);
                //' при превышении времени используем красный цвет
                int nSpentTime = t.GetTotalSpent();
                if (t.PlannedTime < nSpentTime)
                {
                    data.RepGen.TRAddCell(_FormatTimeStringAtServer(t.PlannedTime, t.Duration), null, 1, 1, "BOLD-RED");
                    data.RepGen.TRAddCell(_FormatTimeStringAtServer(nSpentTime, t.Duration), null, 1, 1, "BOLD-RED");
                }
                else
                {
                    data.RepGen.TRAddCell(_FormatTimeStringAtServer(t.PlannedTime, t.Duration), null);
                    data.RepGen.TRAddCell(_FormatTimeStringAtServer(nSpentTime, t.Duration), null);
                }

                //' оставшееся время
                data.RepGen.TRAddCell(_FormatTimeStringAtServer(t.LeftTime, t.Duration), null);
                data.RepGen.TREnd();

                //' если есть списания, то выводим их
                if (t.Spents.Count != 0)
                {
                    data.RepGen.TRStart();
                    data.RepGen.TRAddCell(getTaskSpents(t, t.Duration), null, 4, 1);
                    data.RepGen.TREnd();
                }
            }
        }
コード例 #6
0
ファイル: r_Incident.cs プロジェクト: SanSay157/IT8
        // Процедура вставляет в отчет основные свойства инцидента:
        // какому проекту принадлежит, кто и когда его зарегистрировал, класс, состояние,
        // крайний срок, описание, приоритет, задания по инциденту и кто виновный
        private void insertMainProperties(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData data, IDictionary inc)
        {
            //'-----------------------------------------------------
            //' добавляем в таблицу необходимое количество колонок
            data.RepGen.TAddColumn();
            data.RepGen.TAddColumn();
            data.RepGen.TAddColumn();
            data.RepGen.TAddColumn();
            data.RepGen.TAddColumn();
            data.RepGen.TAddColumn();

            //' информация о проекте
            data.RepGen.TRStart();
            data.RepGen.TRAddCell("Проект:", null, 1, 1, "BOLD");
            data.RepGen.TRAddCell(_GetFolderAnchor(inc["FolderPath"], ((Guid)inc["Folder"]), true), null, 5, 1);
            data.RepGen.TREnd();

            //' информация о сотруднике, зарегистрировавшем инцидент
            data.RepGen.TRStart();
            data.RepGen.TRAddCell("Зарегистрировал:", null, 1, 1, "BOLD");
            data.RepGen.TRAddCell(_GetUserMailAnchor(inc["InitiatorString"], inc["InitiatorMail"], (Guid)inc["InitiatorID"], (Guid)inc["ObjectID"], (Guid)inc["Folder"]), null, 5, 1);
            data.RepGen.TREnd();

            //' дата регистрации
            data.RepGen.TRStart();
            data.RepGen.TRAddCell("Дата:", null, 1, 1, "BOLD");
            data.RepGen.TRAddCell(xmlEncode(((DateTime)inc["InputDate"]).ToLongDateString()), null, 5, 1);
            data.RepGen.TREnd();

            //	' класс инцидента
            data.RepGen.TRStart();
            data.RepGen.TRAddCell("Тип:", null, 1, 1, "BOLD");
            data.RepGen.TRAddCell(xmlEncode(inc["IncidentType"]), null, 5, 1);
            data.RepGen.TREnd();

            //	' состояние инцидента
            data.RepGen.TRStart();
            data.RepGen.TRAddCell("Состояние:", null, 1, 1, "BOLD");
            data.RepGen.TRAddCell(xmlEncode(inc["IncidentState"]), null, 5, 1);
            data.RepGen.TREnd();

            //	' крайний срок инцидента
            if (inc["Deadline"] != null)
            {
                data.RepGen.TRStart();
                data.RepGen.TRAddCell("Крайний срок:", null, 1, 1, "BOLD");
                data.RepGen.TRAddCell(xmlEncode(((DateTime)inc["Deadline"]).ToLongDateString()), null, 5, 1);
                data.RepGen.TREnd();
            }

            //' описание инцидента
            if (inc["Descr"] != null)
            {
                data.RepGen.TRStart();
                data.RepGen.TRAddCell("Описание:", null, 1, 1, "BOLD");
                data.RepGen.TRAddCell(_LongText((string)inc["Descr"]), null, 5, 1);
                data.RepGen.TREnd();
            }
            data.RepGen.TRStart();
            data.RepGen.TRAddCell("Приоритет:", null, 1, 1, "BOLD");
            data.RepGen.TRAddCell((string)inc["IncidentPriority"], null, 5, 1);
            data.RepGen.TREnd();



            insertTasks(data, inc);

            if (inc["Solution"] != null)
            {
                data.RepGen.TRStart();
                data.RepGen.TRAddCell("Решение:", null, 1, 1, "BOLD");
                data.RepGen.TRAddCell(_LongText((string)inc["Solution"]), null, 5, 1);
                data.RepGen.TREnd();
            }

            if (inc["IncidentCategory"] != null)
            {
                data.RepGen.TRStart();
                data.RepGen.TRAddCell("Категория:", null, 1, 1, "BOLD");
                data.RepGen.TRAddCell(xmlEncode((string)inc["IncidentCategory"]), null, 5, 1);
                data.RepGen.TREnd();
            }
            insertHistory(data, inc);
            insertIncidentLinks(data, inc);
        }
コード例 #7
0
 /// <summary>
 /// Инициализирует финансовые данные по проекту из БД
 /// </summary>
 /// <param name="data">Параметры отчета</param>
 protected abstract void InitializeFinanceData(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData data);
コード例 #8
0
            public ArrayList ProjectsSumFinData   = null;                       //Таблица суммарных показателей проектов группы

            public ThisReportData(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData reportData)
            {
                //Данные по интервалам и проектам
                using (IDataReader reader = reportData.DataProvider.GetDataReader("IntervalSaldoDS", reportData.CustomData))
                {
                    if (reader.Read())
                    {
                        MainDateRatio = _GetDataFromDataRow(reader);
                    }
                    if (reader.NextResult())
                    {
                        DateRatio = _GetDataAsArrayList(reader);
                    }
                }
                using (IDataReader reader = reportData.DataProvider.GetDataReader("PrjGroupDS", reportData.CustomData))
                {
                    if (reader.Read())
                    {
                        MainPrjGroup = _GetDataFromDataRow(reader);
                    }
                    if (reader.NextResult())
                    {
                        PrjGroup = _GetDataAsArrayList(reader);
                    }
                }

                //Общие расходы, расходы по АО и займам
                using (IDataReader reader = reportData.DataProvider.GetDataReader("GenSumOutDS", reportData.CustomData))
                {
                    GenOutSum = _GetDataAsArrayList(reader);
                    if (reader.NextResult())
                    {
                        AOSum = _GetDataAsArrayList(reader);
                    }
                    if (reader.NextResult())
                    {
                        LoansSumFinData = _GetDataAsArrayList(reader);
                    }
                }

                //Финансовые показатели по проектам
                using (IDataReader reader = reportData.DataProvider.GetDataReader("PrjGroupPreFinDataDS", reportData.CustomData))
                {
                    GroupPreFinData = _GetDataAsArrayList(reader);
                }
                using (IDataReader reader = reportData.DataProvider.GetDataReader("PrjGroupAfterFinDataDS", reportData.CustomData))
                {
                    GroupAfterFinData = _GetDataAsArrayList(reader);
                }
                using (IDataReader reader = reportData.DataProvider.GetDataReader("PrjGroupAllFinDataDS", reportData.CustomData))
                {
                    GroupAllFinData = _GetDataAsArrayList(reader);
                }
                using (IDataReader reader = reportData.DataProvider.GetDataReader("PrjGroupFinDataDS", reportData.CustomData))
                {
                    GroupFinData = _GetDataAsArrayList(reader);
                }
                using (IDataReader reader = reportData.DataProvider.GetDataReader("ProjectsPreFinDataDS", reportData.CustomData))
                {
                    ProjectsPreFinData = _GetDataAsArrayList(reader);
                }
                using (IDataReader reader = reportData.DataProvider.GetDataReader("ProjectsAfterFinDataDS", reportData.CustomData))
                {
                    ProjectsAfterFinData = _GetDataAsArrayList(reader);
                }
                using (IDataReader reader = reportData.DataProvider.GetDataReader("ProjectsAllFinDataDS", reportData.CustomData))
                {
                    ProjectsAllFinData = _GetDataAsArrayList(reader);
                }
                using (IDataReader reader = reportData.DataProvider.GetDataReader("ProjectsFinDataDS", reportData.CustomData))
                {
                    ProjectsFinData = _GetDataAsArrayList(reader);
                }
                using (IDataReader reader = reportData.DataProvider.GetDataReader("PrjGroupSumFinDataDS", reportData.CustomData))
                {
                    GroupSumFinData = _GetDataAsArrayList(reader);
                }
                using (IDataReader reader = reportData.DataProvider.GetDataReader("ProjectsSumFinDataDS", reportData.CustomData))
                {
                    ProjectsSumFinData = _GetDataAsArrayList(reader);
                }
            }