forum.bitel.ru http://forum.bitel.ru/ |
|
Отчеты "Пользовательские" [6.2] http://forum.bitel.ru/viewtopic.php?f=12&t=10628 |
Страница 1 из 1 |
Автор: | borin [ 18 июн 2015, 16:31 ] |
Заголовок сообщения: | Отчеты "Пользовательские" [6.2] |
В отчетах появилась категория отчетов "Пользовательские", я так понимаю это для того чтоб свои отчеты не мешать с теми что идут в поставке с модулем. Но в документации не сказано, как добавлять свои отчеты в категорию "Пользовательские" Вложение: reports.png [ 8.06 КБ | Просмотров: 10477 ] |
Автор: | Phricker [ 18 июн 2015, 16:37 ] |
Заголовок сообщения: | Re: Отчеты "Пользовательские" [6.2] |
Как пример custom_agent_account.rep.xml |
Автор: | borin [ 18 июн 2015, 16:39 ] |
Заголовок сообщения: | Re: Отчеты "Пользовательские" [6.2] |
Phricker писал(а): Как пример custom_agent_account.rep.xml Спасибо! Шикарно то что надо |
Автор: | Lionela [ 28 июл 2015, 01:40 ] |
Заголовок сообщения: | Re: Отчеты "Пользовательские" [6.2] |
Ну а все-таки как добавить или создать свой? |
Автор: | skn [ 28 июл 2015, 02:01 ] |
Заголовок сообщения: | Re: Отчеты "Пользовательские" [6.2] |
Lionela писал(а): Ну а все-таки как добавить или создать свой? как? 1) посмотрите сущестствующие файлики *.rep.xml 2) создайте свой и разметите его рядом в каталоге с другими, в названии указав префикс custom_*.rep.xml |
Автор: | Phricker [ 28 июл 2015, 12:20 ] |
Заголовок сообщения: | Re: Отчеты "Пользовательские" [6.2] |
... 3) Посмотрите примеры на wiki |
Автор: | dimOn [ 28 июл 2015, 12:31 ] |
Заголовок сообщения: | Re: Отчеты "Пользовательские" [6.2] |
в 6.2 можно писать сразу в редакторе дин.кода и rep.xml и java-файлы |
Автор: | borisk [ 21 янв 2016, 14:24 ] |
Заголовок сообщения: | Re: Отчеты "Пользовательские" [6.2] |
Есть еще одна голубая мечта Для упрощения жизни всем известных силовых структур я написал свои отчеты для быстрого поиска нужной им информации. В меню зафильтровал все что возможно, остался вызов только модуля "отчеты". Но вот если бы еще внутри модуля "отчеты" можно было бы как-то фильтровать какие очеты показывать пользователю, а какие нет - ну просто песня |
Автор: | Phricker [ 21 янв 2016, 14:38 ] |
Заголовок сообщения: | Re: Отчеты "Пользовательские" [6.2] |
Думаю самым простым вариантом было бы создание еще одного экземпляра модуля, и просьба к разрабам вынести в конфиг модуля Reports параметр Код: File folder = new File("reports/"); И создать отдельную папку для органов, куда засовывать только необходимые отчеты. Ну или же вы можете запретить запуск отчетов, и вынести в разрешенные только те которые нужно дать органам. Я на вики в свое время даже выкладывал |
Автор: | dimOn [ 21 янв 2016, 18:59 ] |
Заголовок сообщения: | Re: Отчеты "Пользовательские" [6.2] |
от этой папки в планах так-то избавиться, половину уже в дин.код перенесли |
Автор: | Dmitry7634524 [ 15 фев 2017, 14:55 ] |
Заголовок сообщения: | Re: Отчеты "Пользовательские" [6.2] |
Приветствую! Появилась необходимость изменить получаемы данные на выходе из класса bitel.billing.server.reports.Report_AccountDetail который используется в стандартном отчете по детальной наработке в модуле отчеты, это файл kernel_contract_account_detail.rep.xml, его содержимое: Код: <?xml version="1.0" encoding="UTF-8"?> <report title="Детализированный отчет по наработке" params_class="bitel.billing.module.services.reports.ReportParams_AccountDetail" report_class="bitel.billing.server.reports.Report_AccountDetail" /> Собственно копирую содержимое bitel.billing.server.reports.Report_AccountDetail по адресу ru.provider.reports.Report_AccountDetail компилирую класс, создаю в директории reports: Код: reports]# cat custom_provider.rep.xml <?xml version="1.0" encoding="UTF-8"?> <report title="Детализированный отчет Provider" params_class="bitel.billing.module.services.reports.ReportParams_AccountDetail" report_class="ru.provider.reports.Report_AccountDetail" /> Файл kernel_contract_account_detail.jrxml копирую соответственно как custom_provider.jrxml. При генерации отчета получаю: Код: 02-15/11:25:05 ERROR [http-bio-0.0.0.0-8080-exec-9] ActionBase - error get report java.lang.NullPointerException Вопрос, можно ли так делать, увидит ли отчет динкласс? Если да, то что не так? К сожалению из тем на форуме я этого так и не понял. В конечном итоге в этом классе нужно поправить слегка sql запрос, в этом и загвоздка, как правильно сделать? |
Автор: | dimOn [ 16 фев 2017, 11:24 ] |
Заголовок сообщения: | Re: Отчеты "Пользовательские" [6.2] |
не, не увидит на данный момент, подобная фича в разработке, но чтобы просто заменить класс старого отчёта на дин.код - это не планировалось, хотя в принципе тоже несложно |
Автор: | Dmitry7634524 [ 25 фев 2017, 19:26 ] |
Заголовок сообщения: | Re: Отчеты "Пользовательские" [6.2] |
Сделал аналог стандартного отчета "Детальный отчет по наработке" на BGBS, авось кому пригодится. Вложение: Код: <?xml version="1.0" encoding="UTF-8"?> <report title="Отчет по наработке"> <month name="month_from" title="Месяц с"/> </report> Код: <?xml version="1.0" encoding="UTF-8" ?>
<!-- Created with iReport - A designer for JasperReports --> <!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"> <jasperReport name="contract_account_detail" columnCount="1" printOrder="Vertical" orientation="Landscape" pageWidth="841" pageHeight="593" columnWidth="481" columnSpacing="0" leftMargin="30" rightMargin="30" topMargin="20" bottomMargin="20" whenNoDataType="NoPages" isTitleNewPage="false" isSummaryNewPage="false"> <property name="ireport.scriptlethandling" value="0" /> <property name="ireport.encoding" value="UTF-8" /> <import value="java.util.*" /> <import value="net.sf.jasperreports.engine.*" /> <import value="net.sf.jasperreports.engine.data.*" /> <parameter name="accountSummMap" isForPrompting="false" class="java.util.Map"/> <parameter name="addInfo" isForPrompting="false" class="java.lang.String"> <defaultValueExpression ><![CDATA[""]]></defaultValueExpression> </parameter> <parameter name="total" isForPrompting="false" class="java.lang.String"/> <queryString language="bgbs"><![CDATA[ import java.sql.*; import java.text.DecimalFormat; import java.util.*; import java.util.regex.*; import java.math.*; import bitel.billing.common.*; import bitel.billing.server.util.*; import bitel.billing.server.contract.bean.*; import ru.bitel.bgbilling.server.util.*; import ru.bitel.common.*; interface RR { Map getAccountSummMap(); } public void fillReport( con, filter, result ) { RR rr = new RR() { public Map getAccountSummMap() { HashMap result = new HashMap(); result.put("total", 0); StringBuffer query = new StringBuffer(); DecimalFormat df = new DecimalFormat("###,###,###,###,##0.00"); query.append("SELECT contract.title, SUM(summa) "); query.append("FROM contract_account AS account "); query.append("LEFT JOIN contract ON account.cid=contract.id "); query.append("WHERE "); query.append(filterString); query.append(" GROUP BY account.cid"); PreparedStatement ps = this.con.prepareStatement(query.toString()); ResultSet rs = ps.executeQuery(); while(rs.next()) { result.put(rs.getString(1), df.format(rs.getDouble(2))); int n1 = rs.getDouble(2); int n2 = result.get("total"); result.put("total", n1+n2); } rs.close(); ps.close(); return result; } }; month_from = filter.getCalendarParam( "month_from" ); month = month_from.get(Calendar.MONTH); year = month_from.get(Calendar.YEAR); StringBuffer query = new StringBuffer(); query.append("SELECT contract.title, service.title, account.summa, contract.comment "); query.append("FROM contract_account AS account "); query.append("LEFT JOIN service ON account.sid=service.id "); query.append("LEFT JOIN contract ON account.cid=contract.id "); query.append("WHERE "); StringBuffer filterString = new StringBuffer(); // Get Filter Params filterString.append("account.yy="); filterString.append(year); filterString.append(" AND account.mm="); filterString.append(month+1); query.append(filterString); // Add filter to main query HashMap params = new HashMap(); params.put("addInfo", " год: " + year + " месяц: " + TimeUtils.monthNames[month]); PreparedStatement ps = this.con.prepareStatement(query.toString()); ResultSet rs = ps.executeQuery(); double sum = 0.0D; double val = 0.0D; DecimalFormat df = new DecimalFormat("###,###,###,###,##0.00"); List DataSource; for(DataSource = new ArrayList(); rs.next(); sum += val) { val = rs.getDouble(3); HashMap row = new HashMap(); row.put("contract", rs.getString(1)); row.put("service", rs.getString(2)); row.put("summ", df.format(val)); row.put("comment", rs.getString(4)); DataSource.add(row); } params.put("accountSummMap", rr.getAccountSummMap()); rs.close(); ps.close(); result.setParams( params ); result.setDataSource( DataSource); } ]]></queryString> <field name="contract" class="java.lang.String"/> <field name="service" class="java.lang.String"/> <field name="summ" class="java.lang.String"/> <field name="comment" class="java.lang.String"/> <field name="accountSummMap" class="java.lang.String"/> <group name="group" > <groupExpression><![CDATA[$F{contract}]]></groupExpression> <groupHeader> <band height="51" isSplitAllowed="true" > <rectangle radius="0" > <reportElement mode="Opaque" x="2" y="35" width="775" height="13" forecolor="#33FF00" backcolor="#33FF00" key="element-151" positionType="FixRelativeToBottom"/> <graphicElement stretchType="NoStretch" fill="Solid" /> </rectangle> <staticText> <reportElement mode="Transparent" x="7" y="35" width="472" height="13" forecolor="#000000" backcolor="#FFFFFF" key="element-94" positionType="FixRelativeToBottom"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Left" verticalAlignment="Middle" rotation="None" lineSpacing="Single"> <font fontName="SansSerif" size="10" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" /> </textElement> <text><![CDATA[Услуга]]></text> </staticText> <textField isStretchWithOverflow="true" pattern="" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement mode="Transparent" x="2" y="13" width="775" height="20" forecolor="#000000" backcolor="#FFFFFF" key="element-81" stretchType="RelativeToTallestObject"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Left" verticalAlignment="Middle" rotation="None" lineSpacing="Single"> <font fontName="SansSerif" size="12" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" /> </textElement> <!-- Произведем проверку --> <textFieldExpression class="java.lang.String"><![CDATA[" Договор: " + $F{contract} + " (" + $F{comment} + ")"]]></textFieldExpression> </textField> <textField isStretchWithOverflow="false" pattern="" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement mode="Transparent" x="479" y="35" width="298" height="13" forecolor="#000000" backcolor="#FFFFFF" key="element-81" positionType="FixRelativeToBottom"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Left" verticalAlignment="Middle" rotation="None" lineSpacing="Single"> <font fontName="SansSerif" size="10" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" /> </textElement> <textFieldExpression class="java.lang.String"><![CDATA["Наработки"]]></textFieldExpression> </textField> </band> </groupHeader> <groupFooter> <band height="18" isSplitAllowed="true" > <rectangle radius="0" > <reportElement mode="Opaque" x="3" y="5" width="775" height="13" forecolor="#33FF00" backcolor="#33FF00" key="element-151"/> <graphicElement stretchType="NoStretch" fill="Solid" /> </rectangle> <staticText> <reportElement mode="Transparent" x="7" y="5" width="91" height="13" forecolor="#000000" backcolor="#FFFFFF" key="element-94"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Left" verticalAlignment="Middle" rotation="None" lineSpacing="Single"> <font fontName="SansSerif" size="10" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" /> </textElement> <text><![CDATA[ Итого:]]></text> </staticText> <textField isStretchWithOverflow="false" pattern="" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement mode="Transparent" x="479" y="5" width="298" height="13" forecolor="#000000" backcolor="#FFFFFF" key="element-68"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Left" verticalAlignment="Middle" rotation="None" lineSpacing="Single"> <font fontName="SansSerif" size="10" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" /> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[" " + $P{accountSummMap}.get( $F{contract} )]]></textFieldExpression> </textField> </band> </groupFooter> </group> <background> <band height="0" isSplitAllowed="true" > </band> </background> <title> <band height="46" isSplitAllowed="true" > <staticText> <reportElement mode="Opaque" x="242" y="2" width="297" height="20" forecolor="#000000" backcolor="#FFFFFF" key="element-80"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Center" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="SansSerif" size="14" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" /> </textElement> <text><![CDATA[Отчет по наработке]]></text> </staticText> <textField isStretchWithOverflow="false" pattern="" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement mode="Opaque" x="242" y="24" width="297" height="13" forecolor="#000000" backcolor="#FFFFFF" key="element-74"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Center" verticalAlignment="Middle" rotation="None" lineSpacing="Single"> <font fontName="SansSerif" size="10" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" /> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$P{addInfo}]]></textFieldExpression> </textField> </band> </title> <pageHeader> <band height="0" isSplitAllowed="true" > </band> </pageHeader> <columnHeader> <band height="0" isSplitAllowed="true" > </band> </columnHeader> <detail> <band height="16" isSplitAllowed="true" > <textField isStretchWithOverflow="true" pattern="" isBlankWhenNull="true" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement mode="Opaque" x="7" y="0" width="472" height="14" forecolor="#000000" backcolor="#FFFFFF" key="element-81" stretchType="RelativeToTallestObject"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Left" verticalAlignment="Middle" rotation="None" lineSpacing="Single"> <font fontName="SansSerif" size="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" /> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[" " + $F{service}]]></textFieldExpression> </textField> <textField isStretchWithOverflow="true" pattern="" isBlankWhenNull="true" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement mode="Opaque" x="479" y="0" width="298" height="14" forecolor="#000000" backcolor="#FFFFFF" key="element-81" stretchType="RelativeToTallestObject"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Left" verticalAlignment="Middle" rotation="None" lineSpacing="Single"> <font fontName="SansSerif" size="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" /> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[" " + $F{summ}]]></textFieldExpression> </textField> <line direction="TopDown"> <reportElement mode="Opaque" x="2" y="15" width="775" height="1" forecolor="#000000" backcolor="#FFFFFF" key="element-93" positionType="FixRelativeToBottom"/> <graphicElement stretchType="NoStretch" fill="Solid" /> </line> </band> </detail> <columnFooter> <band height="0" isSplitAllowed="true" > </band> </columnFooter> <pageFooter> <band height="13" isSplitAllowed="true" > <staticText> <reportElement mode="Opaque" x="3" y="3" width="243" height="8" forecolor="#000000" backcolor="#FFFFFF" key="element-50"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Left" verticalAlignment="Middle" rotation="None" lineSpacing="Single"> <font fontName="Arial" size="6" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" /> </textElement> <text><![CDATA[Документ подготовлен системой "BGBilling" © ООО "Бител" http://www.bgbilling.ru ]]></text> </staticText> <textField isStretchWithOverflow="false" pattern="" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement mode="Opaque" x="728" y="3" width="49" height="7" forecolor="#000000" backcolor="#FFFFFF" key="element-55"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Right" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="Arial" size="6" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" /> </textElement> <textFieldExpression class="java.lang.String"><![CDATA["Страница: " + $V{PAGE_NUMBER}.toString()]]></textFieldExpression> </textField> </band> </pageFooter> <summary> <band height="30" isSplitAllowed="true" > <rectangle radius="0" > <reportElement mode="Opaque" x="3" y="16" width="775" height="13" forecolor="#33FF00" backcolor="#33FF00" key="element-151"/> <graphicElement stretchType="NoStretch" fill="Solid" /> </rectangle> <staticText> <reportElement mode="Transparent" x="7" y="16" width="135" height="13" forecolor="#000000" backcolor="#FFFFFF" key="element-94"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Left" verticalAlignment="Middle" rotation="None" lineSpacing="Single"> <font fontName="SansSerif" size="10" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" /> </textElement> <text><![CDATA[ Итого по договорам:]]></text> </staticText> <textField isStretchWithOverflow="false" pattern="" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement mode="Transparent" x="479" y="16" width="298" height="13" forecolor="#000000" backcolor="#FFFFFF" key="element-68"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Left" verticalAlignment="Middle" rotation="None" lineSpacing="Single"> <font fontName="SansSerif" size="10" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" /> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[" " + $P{accountSummMap}.get("total") + "р."]]></textFieldExpression> </textField> </band> </summary> </jasperReport> |
Автор: | Phricker [ 25 фев 2017, 19:45 ] |
Заголовок сообщения: | Re: Отчеты "Пользовательские" [6.2] |
Dmitry7634524 писал(а): Сделал аналог стандартного отчета "Детальный отчет по наработке" ИМХО неудобные эти стандартные отчеты. Табличные отчеты - наше все. И в excel выгрузить, и подсчитать и как угодно извратиться можно. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |