From 4c6bc2dcea54d14395de54dc899cc09c1ae6e8c7 Mon Sep 17 00:00:00 2001 From: chenshaoxin <1981897232@qq.com> Date: Mon, 21 Apr 2025 15:43:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9A=E9=99=88?= =?UTF-8?q?=E7=BB=8D=E9=91=AB=20=E6=97=A5=E6=9C=9F=EF=BC=9A2025/4/17=2016?= =?UTF-8?q?=EF=BC=9A30=20=E5=86=85=E5=AE=B9:=E4=B8=8A=E5=88=92=E4=B8=8B?= =?UTF-8?q?=E6=8B=A8=EF=BC=88new=EF=BC=89=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/transbillreportnewFormPlugin.java | 270 +++++++++-------- .../report/transbillreportnewPlugin.java | 275 ++++++++++++++++-- 2 files changed, 391 insertions(+), 154 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/transbillreportnewFormPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/transbillreportnewFormPlugin.java index a332a51..6b5b707 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/transbillreportnewFormPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/transbillreportnewFormPlugin.java @@ -1,10 +1,14 @@ -// -// Source code recreated from a .class file by IntelliJ IDEA -// (powered by FernFlower decompiler) -// + package shkd.sys.sys.plugin.report; +import java.util.ArrayList; +import java.util.EventObject; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; import kd.bos.context.RequestContext; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; @@ -31,109 +35,11 @@ import kd.tmc.fbp.common.helper.TmcOrgDataHelper; import kd.tmc.fbp.common.util.EmptyUtil; import kd.tmc.fca.common.enums.StatisCycleEnum; -import java.util.*; -import java.util.stream.Collectors; - public class transbillreportnewFormPlugin extends AbstractReportFormPlugin implements HyperLinkClickListener { - private static final String SYSTEM_TYPE = "tmc-fca-report"; - private static final String[] BANK_DIMENSION = new String[]{"sumlevel", "parentorg", "parentorgid", "bank", "bankid", "statcurrency", "upamount", "downamount", "differenceamount"}; - private static final String[] SON_ORG_DIMENSION = new String[]{"sumlevel", "parentorg", "parentorgid", "sonorg", "sonorgid", "statcurrency", "upamount", "downamount", "differenceamount"}; - - public transbillreportnewFormPlugin() { - } - - public void registerListener(EventObject e) { - super.registerListener(e); - ReportList reportlist = (ReportList)this.getView().getControl("reportlistap"); - reportlist.addHyperClickListener(this); - BasedataEdit accountGroup = (BasedataEdit)this.getControl("filter_accountgroup"); - accountGroup.addBeforeF7SelectListener((evt) -> { - DynamicObjectCollection parentOrg = (DynamicObjectCollection)this.getModel().getValue("filter_org"); - if (parentOrg != null && !parentOrg.isEmpty()) { - List orgIdList = (List)parentOrg.stream().map((v) -> { - return v.getDynamicObject("fbasedataid").getPkValue(); - }).collect(Collectors.toList()); - evt.getCustomQFilters().add(new QFilter("company", "in", orgIdList)); - } - - }); - } - - public void initDefaultQueryParam(ReportQueryParam queryParam) { - List authOrgList = TmcOrgDataHelper.getAuthorizedBankOrgId(RequestContext.get().getCurrUserId(), this.getView().getFormShowParameter().getAppId(), this.getModel().getDataEntityType().getName(), "47150e89000000ac"); - BasedataEdit org = (BasedataEdit)this.getControl("filter_org"); - org.setQFilter(new QFilter("id", "in", this.getAuthParentOrgList(authOrgList))); - BasedataEdit sonOrg = (BasedataEdit)this.getControl("filter_sonorg"); - sonOrg.setQFilter(new QFilter("id", "in", this.getAuthSonOrgList(authOrgList))); - BasedataEdit currency = (BasedataEdit)this.getControl("filter_currency"); - currency.setQFilter(new QFilter("id", "in", this.getCurrencyIdList())); - BasedataEdit bank = (BasedataEdit)this.getControl("filter_bank"); - bank.setQFilter(new QFilter("id", "in", this.getBankIdList(authOrgList))); - BasedataEdit accountGroup = (BasedataEdit)this.getControl("filter_accountgroup"); - accountGroup.setQFilter(new QFilter("id", "in", this.getAccountGroupIdList(authOrgList))); - this.setDefaultOrg(); - } - - public void propertyChanged(PropertyChangedArgs e) { - super.propertyChanged(e); - switch (e.getProperty().getName()) { - case "filter_dimension": - ReportFilter rptFilter = (ReportFilter)this.getControl("reportfilterap"); - rptFilter.search(); - default: - } - } - - public boolean verifyQuery(ReportQueryParam param) { - Map paramMap = SnapDataHelper.transQueryParam(param); - String filterPeriod = (String)paramMap.get("filter_period"); - if (EmptyUtil.isEmpty(filterPeriod)) { - this.getView().showTipNotification(ResManager.loadKDString("统计周期条件不能为空。", "TransBillReportFormListPlugin_0", "tmc-fca-report", new Object[0])); - return false; - } else if (!Objects.equals(StatisCycleEnum.CONSTOM.getCode(), filterPeriod) || paramMap.get("filter_startdate") != null && paramMap.get("filter_enddate") != null) { - if (EmptyUtil.isEmpty(this.getModel().getValue("filter_statcurrency"))) { - this.getView().showTipNotification(ResManager.loadKDString("统计币种不能为空。", "TransBillReportFormListPlugin_3", "tmc-fca-report", new Object[0])); - return false; - } else { - return true; - } - } else { - this.getView().showTipNotification(ResManager.loadKDString("起止日期条件不能为空。", "TransBillReportFormListPlugin_1", "tmc-fca-report", new Object[0])); - return false; - } - } - - public void beforeQuery(ReportQueryParam queryParam) { - super.beforeQuery(queryParam); - String dimension = (String)this.getModel().getValue("filter_dimension"); - queryParam.getFilter().addFilterItem("filter_dimension", dimension); - if ("bank".equals(dimension)) { - this.rebuildColumn(BANK_DIMENSION); - } else { - this.rebuildColumn(SON_ORG_DIMENSION); - } - - DynamicObjectCollection sonOrg = (DynamicObjectCollection)this.getModel().getValue("filter_sonorg"); - if (sonOrg != null && !sonOrg.isEmpty()) { - List orgIdList = (List)sonOrg.stream().map((v) -> { - return v.getDynamicObject("fbasedataid").getPkValue(); - }).collect(Collectors.toList()); - queryParam.getFilter().getFilterItem("filter_sonorg").setValue(orgIdList); - } - - DynamicObjectCollection accountGroup = (DynamicObjectCollection)this.getModel().getValue("filter_accountgroup"); - List authOrgList; - if (accountGroup != null && !accountGroup.isEmpty()) { - authOrgList = (List)accountGroup.stream().map((v) -> { - return v.getDynamicObject("fbasedataid").getPkValue(); - }).collect(Collectors.toList()); - queryParam.getFilter().getFilterItem("filter_accountgroup").setValue(authOrgList); - } - - authOrgList = TmcOrgDataHelper.getAuthorizedBankOrgId(RequestContext.get().getCurrUserId(), this.getView().getFormShowParameter().getAppId(), this.getModel().getDataEntityType().getName(), "47150e89000000ac"); - queryParam.getFilter().addFilterItem("orgIdList", this.getAuthParentOrgList(authOrgList)); - } + private static final String[] BANK_DIMENSION = new String[]{"sumlevel", "parentorg", "parentorgid", "bank", "bankid", "sonorg", "sonorgid", "shkd_subacct", "statcurrency", "shkd_qcye","shkd_qckyye", "upamount", "downamount", "differenceamount","shkd_qmye","shkd_qmkyye"}; + private static final String[] SON_ORG_DIMENSION = new String[]{"sumlevel", "parentorg", "parentorgid", "sonorg", "sonorgid", "statcurrency", "upamount", "downamount", "differenceamount","shkd_qcamount","shkd_qmamount"}; + @Override public void hyperLinkClick(HyperLinkClickEvent evt) { String field = evt.getFieldName(); if ("upamount".equals(field) || "downamount".equals(field) || "differenceamount".equals(field)) { @@ -142,6 +48,7 @@ public class transbillreportnewFormPlugin extends AbstractReportFormPlugin imple IReportListModel reportModel = reportList.getReportModel(); DynamicObject rowData = reportModel.getRowData(rowIndex); ReportShowParameter param = new ReportShowParameter(); + DynamicObjectCollection currency; Object[] currencyIds; if (EmptyUtil.isNoEmpty(rowData.get("parentorgid"))) { @@ -214,46 +121,103 @@ public class transbillreportnewFormPlugin extends AbstractReportFormPlugin imple } - private List getAuthParentOrgList(List authOrgList) { - QFilter companyIdFilter = new QFilter("company", "in", authOrgList); - DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "company", new QFilter[]{companyIdFilter}); - return (List)groupAccount.stream().map((g) -> { - return g.getLong("company"); - }).collect(Collectors.toList()); + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + ReportList reportlist = (ReportList)this.getView().getControl("reportlistap"); + reportlist.addHyperClickListener(this); + BasedataEdit accountGroup = (BasedataEdit)this.getControl("filter_accountgroup"); + accountGroup.addBeforeF7SelectListener((evt) -> { + DynamicObjectCollection parentOrg = (DynamicObjectCollection)this.getModel().getValue("filter_org"); + if (parentOrg != null && !parentOrg.isEmpty()) { + List orgIdList = (List)parentOrg.stream().map((v) -> { + return v.getDynamicObject("fbasedataid").getPkValue(); + }).collect(Collectors.toList()); + evt.getCustomQFilters().add(new QFilter("company", "in", orgIdList)); + } + + }); } - private List getAuthSonOrgList(List authOrgList) { - QFilter companyIdFilter = new QFilter("entrys.bankacct.company", "in", authOrgList); - DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "entrys.bankacct.company", new QFilter[]{companyIdFilter}); - return (List)groupAccount.stream().map((g) -> { - return g.getLong("entrys.bankacct.company"); - }).collect(Collectors.toList()); + public void initDefaultQueryParam(ReportQueryParam queryParam) { + List authOrgList = TmcOrgDataHelper.getAuthorizedBankOrgId(RequestContext.get().getCurrUserId(), this.getView().getFormShowParameter().getAppId(), this.getModel().getDataEntityType().getName(), "47150e89000000ac"); + BasedataEdit org = (BasedataEdit)this.getControl("filter_org"); + org.setQFilter(new QFilter("id", "in", this.getAuthParentOrgList(authOrgList))); + BasedataEdit sonOrg = (BasedataEdit)this.getControl("filter_sonorg"); + sonOrg.setQFilter(new QFilter("id", "in", this.getAuthSonOrgList(authOrgList))); + BasedataEdit currency = (BasedataEdit)this.getControl("filter_currency"); + currency.setQFilter(new QFilter("id", "in", this.getCurrencyIdList())); + BasedataEdit bank = (BasedataEdit)this.getControl("filter_bank"); + bank.setQFilter(new QFilter("id", "in", this.getBankIdList(authOrgList))); + BasedataEdit accountGroup = (BasedataEdit)this.getControl("filter_accountgroup"); + accountGroup.setQFilter(new QFilter("id", "in", this.getAccountGroupIdList(authOrgList))); + this.setDefaultOrg(); } - private List getCurrencyIdList() { - QFilter filter = new QFilter("1", "=", 1); - DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "currency", new QFilter[]{filter}); - return (List)groupAccount.stream().map((g) -> { - return g.getLong("currency"); - }).collect(Collectors.toList()); + @Override + public void propertyChanged(PropertyChangedArgs e) { + super.propertyChanged(e); + switch (e.getProperty().getName()) { + case "filter_dimension": + ReportFilter rptFilter = (ReportFilter)this.getControl("reportfilterap"); + rptFilter.search(); + default: + } } - private List getBankIdList(List authOrgList) { - QFilter companyIdFilter = new QFilter("company", "in", authOrgList); - DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "accountbank.bank.id", new QFilter[]{companyIdFilter}); - return (List)groupAccount.stream().map((g) -> { - return g.getLong("accountbank.bank.id"); - }).collect(Collectors.toList()); + @Override + public boolean verifyQuery(ReportQueryParam param) { + Map paramMap = SnapDataHelper.transQueryParam(param); + String filterPeriod = (String)paramMap.get("filter_period"); + if (EmptyUtil.isEmpty(filterPeriod)) { + this.getView().showTipNotification(ResManager.loadKDString("统计周期条件不能为空。", "TransBillReportFormListPlugin_0", "tmc-fca-report", new Object[0])); + return false; + } else if (!Objects.equals(StatisCycleEnum.CONSTOM.getCode(), filterPeriod) || paramMap.get("filter_startdate") != null && paramMap.get("filter_enddate") != null) { + if (EmptyUtil.isEmpty(this.getModel().getValue("filter_statcurrency"))) { + this.getView().showTipNotification(ResManager.loadKDString("统计币种不能为空。", "TransBillReportFormListPlugin_3", "tmc-fca-report", new Object[0])); + return false; + } else { + return true; + } + } else { + this.getView().showTipNotification(ResManager.loadKDString("起止日期条件不能为空。", "TransBillReportFormListPlugin_1", "tmc-fca-report", new Object[0])); + return false; + } } - private List getAccountGroupIdList(List authOrgList) { - QFilter companyIdFilter = new QFilter("company", "in", authOrgList); - DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "id", new QFilter[]{companyIdFilter}); - return (List)groupAccount.stream().map((g) -> { - return g.getLong("id"); - }).collect(Collectors.toList()); + @Override + public void beforeQuery(ReportQueryParam queryParam) { + super.beforeQuery(queryParam); + String dimension = (String)this.getModel().getValue("filter_dimension"); + queryParam.getFilter().addFilterItem("filter_dimension", dimension); + if ("bank".equals(dimension)) {//根据维度展示字段 + this.rebuildColumn(BANK_DIMENSION); + } else { + this.rebuildColumn(SON_ORG_DIMENSION); + } + + DynamicObjectCollection sonOrg = (DynamicObjectCollection)this.getModel().getValue("filter_sonorg"); + if (sonOrg != null && !sonOrg.isEmpty()) { + List orgIdList = (List)sonOrg.stream().map((v) -> { + return v.getDynamicObject("fbasedataid").getPkValue(); + }).collect(Collectors.toList()); + queryParam.getFilter().getFilterItem("filter_sonorg").setValue(orgIdList); + } + + DynamicObjectCollection accountGroup = (DynamicObjectCollection)this.getModel().getValue("filter_accountgroup"); + List authOrgList; + if (accountGroup != null && !accountGroup.isEmpty()) { + authOrgList = (List)accountGroup.stream().map((v) -> { + return v.getDynamicObject("fbasedataid").getPkValue(); + }).collect(Collectors.toList()); + queryParam.getFilter().getFilterItem("filter_accountgroup").setValue(authOrgList); + } + + authOrgList = TmcOrgDataHelper.getAuthorizedBankOrgId(RequestContext.get().getCurrUserId(), this.getView().getFormShowParameter().getAppId(), this.getModel().getDataEntityType().getName(), "47150e89000000ac"); + queryParam.getFilter().addFilterItem("orgIdList", this.getAuthParentOrgList(authOrgList)); } + private void rebuildColumn(String[] fields) { ReportList listTable = (ReportList)this.getView().getControl("reportlistap"); if (fields != null && fields.length >= 1) { @@ -284,7 +248,41 @@ public class transbillreportnewFormPlugin extends AbstractReportFormPlugin imple } } - + private List getAuthParentOrgList(List authOrgList) { + QFilter companyIdFilter = new QFilter("company", "in", authOrgList); + DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "company", new QFilter[]{companyIdFilter}); + return (List)groupAccount.stream().map((g) -> { + return g.getLong("company"); + }).collect(Collectors.toList()); + } + private List getAuthSonOrgList(List authOrgList) { + QFilter companyIdFilter = new QFilter("entrys.bankacct.company", "in", authOrgList); + DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "entrys.bankacct.company", new QFilter[]{companyIdFilter}); + return (List)groupAccount.stream().map((g) -> { + return g.getLong("entrys.bankacct.company"); + }).collect(Collectors.toList()); + } + private List getCurrencyIdList() { + QFilter filter = new QFilter("1", "=", 1); + DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "currency", new QFilter[]{filter}); + return (List)groupAccount.stream().map((g) -> { + return g.getLong("currency"); + }).collect(Collectors.toList()); + } + private List getBankIdList(List authOrgList) { + QFilter companyIdFilter = new QFilter("company", "in", authOrgList); + DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "accountbank.bank.id", new QFilter[]{companyIdFilter}); + return (List)groupAccount.stream().map((g) -> { + return g.getLong("accountbank.bank.id"); + }).collect(Collectors.toList()); + } + private List getAccountGroupIdList(List authOrgList) { + QFilter companyIdFilter = new QFilter("company", "in", authOrgList); + DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "id", new QFilter[]{companyIdFilter}); + return (List)groupAccount.stream().map((g) -> { + return g.getLong("id"); + }).collect(Collectors.toList()); + } private void setDefaultOrg() { Long org = RequestContext.get().getOrgId(); String appId = this.getView().getFormShowParameter().getAppId(); diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/transbillreportnewPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/transbillreportnewPlugin.java index 0b66eab..3d012f4 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/transbillreportnewPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/transbillreportnewPlugin.java @@ -5,27 +5,51 @@ package shkd.sys.sys.plugin.report; -import kd.bos.algo.DataSet; -import kd.bos.algo.GroupbyDataSet; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + +import com.alibaba.fastjson.JSONException; +import com.google.common.collect.Lists; +import kd.bos.algo.*; +import kd.bos.algo.datatype.DateType; +import kd.bos.algo.input.CollectionInput; +import kd.bos.context.RequestContext; import kd.bos.dataentity.entity.DataEntityBase; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.utils.StringUtils; +import kd.bos.db.DB; +import kd.bos.db.DBRoute; import kd.bos.entity.report.ReportQueryParam; +import kd.bos.orm.ORM; +import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; +import kd.bos.orm.query.QFilterHint; +import kd.bos.servicehelper.DispatchServiceHelper; import kd.bos.servicehelper.QueryServiceHelper; +import kd.ebg.aqap.common.core.utils.Sequence; +import kd.ebg.aqap.common.entity.biz.balance.BatchBalanceRequest; +import kd.ebg.aqap.common.entity.biz.balance.BatchBalanceRequestBody; +import kd.ebg.aqap.common.entity.biz.balance.BatchBalanceResponse; +import kd.ebg.aqap.formplugin.exception.EBBizException; +import kd.ebg.aqap.formplugin.util.StringUtil; +import kd.ebg.egf.common.entity.base.EBHeader; +import kd.ebg.egf.common.model.bank.BankAcnt; +import kd.ebg.egf.common.repository.acnt.BankAcntRepository; +import kd.tmc.fbp.common.enums.ReportOrgQueryWayEnum; +import kd.tmc.fbp.common.helper.TmcBusinessBaseHelper; +import kd.tmc.fbp.common.helper.TmcOrgDataHelper; import kd.tmc.fbp.common.util.DateUtils; +import kd.tmc.fbp.common.util.EmptyUtil; import kd.tmc.fbp.report.data.AbstractTmcTreeReportDataPlugin; import kd.tmc.fca.common.enums.FcaTransDetailStatusEnum; import kd.tmc.fca.common.enums.FcaTransPayStatusEnum; import kd.tmc.fca.common.enums.StatisCycleEnum; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin { private static final String UP_BANK_SELECT = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, currency, entrys.transamt as upamount, 0 as downamount"; private static final String UP_SON_ORG_SELECT = "company.name as parentorg, company.id as parentorgid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, entrys.transamt as upamount, 0 as downamount"; @@ -33,29 +57,33 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin { private static final String DOWN_SON_ORG_SELECT = "company.name as parentorg, company.id as parentorgid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, 0 as upamount, entrys.transamt as downamount"; private static final String BANK_SELECT = "parentorg, parentorgid, bank, bankid, upamount_report as upamount, downamount_report as downamount"; private static final String SON_ORG_SELECT = "parentorg, parentorgid, sonorg, sonorgid, upamount_report as upamount, downamount_report as downamount"; - private static final String[] BANK_GROUP_SELECT = new String[]{"parentorg", "parentorgid", "bank", "bankid"}; + private static final String[] BANK_GROUP_SELECT = new String[]{"parentorg", "parentorgid", "bank", "bankid","sonorg","sonorgid","shkd_subacct"}; private static final String[] SON_ORG_GROUP_SELECT = new String[]{"parentorg", "parentorgid", "sonorg", "sonorgid"}; private List sumAmountFieldList; private String sumNameField; private boolean isCompute = true; - public transbillreportnewPlugin() { - } - public DataSet queryDataSet(ReportQueryParam reportQueryParam) { Map paramMap = this.transQueryParam(reportQueryParam); - QFilter filter = this.initFilter(paramMap); + QFilter filter = this.initFilter(paramMap);//过滤条件 String upSelect; String downSelect; String[] groupSelect; + StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ "); String select; - if ("bank".equals(paramMap.get("filter_dimension"))) { - upSelect = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, currency, entrys.transamt as upamount, 0 as downamount"; - downSelect = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, currency, 0 as upamount, entrys.transamt as downamount"; - select = "parentorg, parentorgid, bank, bankid, upamount_report as upamount, downamount_report as downamount"; + if ("bank".equals(paramMap.get("filter_dimension"))) {//默认开户行 +// upSelect = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, currency, entrys.transamt as upamount, 0 as downamount"; +// downSelect = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, currency, 0 as upamount, entrys.transamt as downamount"; +// select = "parentorg, parentorgid, bank, bankid, upamount_report as upamount, downamount_report as downamount"; +// groupSelect = BANK_GROUP_SELECT; +// this.setSumNameField("bank"); + + upSelect = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, entrys.transamt as upamount, 0 as downamount,entrys.subacct as shkd_subacct"; + downSelect = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, 0 as upamount, entrys.transamt as downamount,entrys.subacct as shkd_subacct"; + select = "parentorg, parentorgid, bank, bankid, sonorg, sonorgid, upamount_report as upamount, downamount_report as downamount,shkd_subacct"; groupSelect = BANK_GROUP_SELECT; this.setSumNameField("bank"); - } else { + } else {//不走 upSelect = "company.name as parentorg, company.id as parentorgid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, entrys.transamt as upamount, 0 as downamount"; downSelect = "company.name as parentorg, company.id as parentorgid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, 0 as upamount, entrys.transamt as downamount"; select = "parentorg, parentorgid, sonorg, sonorgid, upamount_report as upamount, downamount_report as downamount"; @@ -67,21 +95,73 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin { DataSet downDataSet = QueryServiceHelper.queryDataSet("fca_transdownbill", "fca_transdownbill", downSelect, filter.toArray(), "company"); DataSet dataSet = upDataSet.union(downDataSet); dataSet = this.addExchangeRateAndCurrencyUnit(dataSet, paramMap); +// DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(dataSet.copy()); dataSet = dataSet.select(select); this.isCompute = false; GroupbyDataSet group = dataSet.groupBy(groupSelect); dataSet = group.sum("upamount").sum("downamount").finish(); + //链接期初期初余额表 + DataSet getqc = getqc(filter, paramMap); List sumAmountFieldList = new ArrayList(2); + sumAmountFieldList.add("upamount"); sumAmountFieldList.add("downamount"); sumAmountFieldList.add("differenceamount"); this.setSumAmountFieldList(sumAmountFieldList); dataSet = dataSet.addField("upamount - downamount", "differenceamount"); + JoinDataSet join = dataSet.join(getqc, JoinType.LEFT);//连接 + dataSet = join.on("shkd_subacct","shkd_subacct") + .select(new String[]{"parentorg", "parentorgid", "bank", "bankid", "sonorg", "sonorgid", "upamount", "downamount","shkd_subacct","differenceamount","shkd_qcye","shkd_qckyye"}).finish(); + + //组装查询银企sql +// DataSet getyq = getyqsql(filter, paramMap); + + + //期末 + List sumAmountFieldList1 = new ArrayList(5); + sumAmountFieldList1.add("shkd_qcye"); + sumAmountFieldList1.add("shkd_qckyye"); + sumAmountFieldList1.add("upamount"); + sumAmountFieldList1.add("downamount"); + sumAmountFieldList1.add("shkd_qmye"); + sumAmountFieldList1.add("shkd_qmkyye"); + this.setSumAmountFieldList(sumAmountFieldList1); + //期末余额 + dataSet = dataSet.addField("shkd_qcye+upamount- downamount", "shkd_qmye"); + dataSet = dataSet.addField("shkd_qckyye+upamount- downamount", "shkd_qmkyye"); Object statCurrency = ((DynamicObject)paramMap.get("filter_statcurrency")).getPkValue(); dataSet = dataSet.addField(String.valueOf(statCurrency), "currency"); return dataSet; } + private DataSet getyqsql(QFilter filter, Map paramMap) { + //获取截止日期 + List nests = filter.getNests(true);//过滤条件 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String enddate=""; + for (int i = 0; i groupFields() { List groupFieldList = new ArrayList(2); groupFieldList.add("parentorg"); @@ -189,4 +269,163 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin { protected boolean isNeedDimCurrency() { return this.isCompute; } + + public DataSet getqc(QFilter filter,Map paramMap){ + //组装期初的过滤条件 + List nests = filter.getNests(true);//过滤条件 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + QFilter qFilter=null; + String startdate=""; + for (int i = 0; i ")){//开始日期 + qFilter=new QFilter("entrys.paydate", "<", filter1.getValue()); + startdate=sdf.format(filter1.getValue()); + } + } + } +// for (QFilter.QFilterNest nest : nests) { +// String op = nest.getOp(); +// QFilter filter1 = nest.getFilter(); +// if (!"entrys.paydate".equals(filter1.getProperty())){ +// if ("AND".equals(op)){ +// qFilter.and(filter1); +// }else { +// qFilter.or(filter1); +// } +// +// } +// } +// +// +// //查询期初数据 +// DataSet upDataSet = QueryServiceHelper.queryDataSet("fca_transupbill", "fca_transupbill", +// "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, entrys.transamt as upamount,entrys.subacct as shkd_subacct", +// qFilter.toArray(), "company");//上划期初 +// DataSet downDataSet = QueryServiceHelper.queryDataSet("fca_transdownbill", "fca_transdownbill", +// "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, -1*entrys.transamt as upamount,entrys.subacct as shkd_subacct", +// qFilter.toArray(), "company");//下拨期初 +// DataSet dataSet = upDataSet.union(downDataSet); +// +// dataSet = addExchangeRateAndCurrencyUnit1(dataSet, paramMap); +// dataSet = dataSet.select(new String[]{"parentorg", "parentorgid", "bank", "bankid", "sonorg", "sonorgid", "upamount_report as shkd_qcamount","shkd_subacct","currency"}); +// GroupbyDataSet group = dataSet.groupBy(new String[]{"parentorg", "parentorgid", "bank", "bankid","sonorg","sonorgid","shkd_subacct"}); +// dataSet = group.sum("shkd_qcamount").finish(); + StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ "); + sqlBuilder.append("SELECT faccountbankid as shkd_subacct, fmodifytime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" + + "FROM t_bei_bankbalance\n" + + "WHERE (faccountbankid, fmodifytime) IN (\n" + + " SELECT faccountbankid, MAX(fmodifytime)\n" + + " FROM t_bei_bankbalance\n" + + " WHERE fmodifytime < '"+startdate+"'\n" + + " GROUP BY faccountbankid\n" + + ")"); + DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云 + res = addExchangeRateAndCurrencyUnit1(res, paramMap); + DataSet select = res.select(new String[]{"shkd_subacct","downamount as shkd_qcye","upamount as shkd_qckyye"}); + return select; + } + + protected DataSet addExchangeRateAndCurrencyUnit1(DataSet bizDataSet, Map paramMap) { + String unit = null; + boolean isNeedCurrencyUnit = true; + boolean isNeedDimCurrency = true; + String[] selectFields; + if (isNeedDimCurrency) { + DataSet exchangeRateSet = getExChangeRateDs1(bizDataSet, paramMap); + if (isNeedCurrencyUnit) { + unit = (String)paramMap.get("filter_currencyunit"); + } + + selectFields = initSelectFields1(bizDataSet, unit, isNeedCurrencyUnit, isNeedDimCurrency); + return bizDataSet.leftJoin(exchangeRateSet).on("currency", "tarcurrency").select(selectFields).finish(); + } else if (isNeedCurrencyUnit) { + unit = (String)paramMap.get("filter_currencyunit"); + selectFields = initSelectFields1(bizDataSet, unit, isNeedCurrencyUnit, isNeedDimCurrency); + return bizDataSet.select(selectFields); + } else { + return bizDataSet; + } + } + + private String[] initSelectFields1(DataSet bizDataSet, String unit, boolean isNeedCurrencyUnit, boolean isNeedDimCurrency) { +// List amountFields = Collections.singletonList("upamount"); + List amountFields = Arrays.asList("upamount", "downamount"); +// List amountUnitFields = Collections.singletonList("upamount"); + List amountUnitFields = Arrays.asList("upamount", "downamount"); + String[] oralfields = bizDataSet.getRowMeta().getFieldNames(); + List fieldList = new ArrayList(oralfields.length); + String[] var9 = oralfields; + int var10 = oralfields.length; + + for(int var11 = 0; var11 < var10; ++var11) { + String field = var9[var11]; + if (!fieldList.contains(field) && !amountFields.contains(field) && !amountUnitFields.contains(field)) { + fieldList.add(field); + } + } + + Iterator var13 = amountUnitFields.iterator(); + + String field; + while(var13.hasNext()) { + field = (String)var13.next(); + if (isNeedCurrencyUnit) { + fieldList.add(String.format(field + " / %s " + field, unit)); + } else { + fieldList.add(field); + } + } + + var13 = amountFields.iterator(); + + while(var13.hasNext()) { + field = (String)var13.next(); + if (isNeedDimCurrency) { + if (isNeedCurrencyUnit) { + fieldList.add(String.format("(" + field + " * rate) / %s " + field + "_report", unit)); + } else { + fieldList.add("(" + field + " * rate) " + field + "_report"); + } + } + } + + if (isNeedDimCurrency) { + fieldList.add("tarcurrency"); + fieldList.add("rate"); + } + + return (String[])fieldList.toArray(new String[0]); + } + + protected DataSet getExChangeRateDs1(DataSet dataSet, Map paramMap) { + Long tarCurrencyId = (Long)((DynamicObject)paramMap.get("filter_statcurrency")).getPkValue(); + DataSet currencySet = dataSet.copy().groupBy(new String[]{"currency"}).finish(); + List currencyIdList = new ArrayList(10); + currencySet.iterator().forEachRemaining((v) -> { + currencyIdList.add(v.getLong("currency")); + }); + long orgId = 0L; + String queryWay = (String)paramMap.get("filter_queryway"); + boolean orgQueryWay = ReportOrgQueryWayEnum.ORG.getValue().equals(queryWay); + if (orgQueryWay) { + orgId = RequestContext.get().getOrgId(); + } else { + DynamicObject orgView = (DynamicObject)paramMap.get("filter_orgview"); + if (EmptyUtil.isNoEmpty(orgView)) { + orgId = Long.parseLong(TmcOrgDataHelper.getOrgRootId(orgView.getLong("id"))); + } + } + + if (orgId != 0L) { + return TmcBusinessBaseHelper.getExChangeDataSet(currencyIdList, tarCurrencyId, orgId, new Date(), orgQueryWay); + } else { + String[] fieldNames = new String[]{"tarcurrency", "rate"}; + DataType[] dataTypes = new DataType[]{DataType.LongType, DataType.BigDecimalType}; + return createEmptyDataSet(fieldNames, dataTypes); + } + } + }