提交人:陈绍鑫

日期:2025/4/17 16:30
内容:上划下拨(new)插件
This commit is contained in:
陈绍鑫 2025-04-21 15:43:12 +08:00
parent 2f41312927
commit 4c6bc2dcea
2 changed files with 391 additions and 154 deletions

View File

@ -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<Object> 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<Long> 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<String, Object> 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<Object> 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<Long> getAuthParentOrgList(List<Long> 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<Object> orgIdList = (List)parentOrg.stream().map((v) -> {
return v.getDynamicObject("fbasedataid").getPkValue();
}).collect(Collectors.toList());
evt.getCustomQFilters().add(new QFilter("company", "in", orgIdList));
}
});
}
private List<Long> getAuthSonOrgList(List<Long> 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<Long> 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<Long> 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<Long> getBankIdList(List<Long> 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<String, Object> 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<Long> getAccountGroupIdList(List<Long> 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<Object> 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<Long> getAuthParentOrgList(List<Long> 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<Long> getAuthSonOrgList(List<Long> 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<Long> 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<Long> getBankIdList(List<Long> 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<Long> getAccountGroupIdList(List<Long> 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();

View File

@ -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<String> sumAmountFieldList;
private String sumNameField;
private boolean isCompute = true;
public transbillreportnewPlugin() {
}
public DataSet queryDataSet(ReportQueryParam reportQueryParam) {
Map<String, Object> 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<String> 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<String> 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<String, Object> paramMap) {
//获取截止日期
List<QFilter.QFilterNest> nests = filter.getNests(true);//过滤条件
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String enddate="";
for (int i = 0; i <nests.size() ; i++) {
QFilter filter1 = nests.get(i).getFilter();
if ("entrys.paydate".equals(filter1.getProperty())){
String cp = filter1.getCP();
if (cp.contains("<")){//结束日期
enddate=sdf.format(filter.getValue());
}
}
}
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ ");
sqlBuilder.append("SELECT faccountbankid, fmodifytime, 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 <= '"+enddate+"'\n" +
" GROUP BY faccountbankid\n" +
")");
DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云
return res;
}
public List<String> groupFields() {
List<String> 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<String, Object> paramMap){
//组装期初的过滤条件
List<QFilter.QFilterNest> nests = filter.getNests(true);//过滤条件
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
QFilter qFilter=null;
String startdate="";
for (int i = 0; i <nests.size() ; i++) {
QFilter filter1 = nests.get(i).getFilter();
if ("entrys.paydate".equals(filter1.getProperty())){
String cp = filter1.getCP();
if (cp.contains(">")){//开始日期
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<String, Object> 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<String> amountFields = Collections.singletonList("upamount");
List<String> amountFields = Arrays.asList("upamount", "downamount");
// List<String> amountUnitFields = Collections.singletonList("upamount");
List<String> amountUnitFields = Arrays.asList("upamount", "downamount");
String[] oralfields = bizDataSet.getRowMeta().getFieldNames();
List<String> 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<String, Object> paramMap) {
Long tarCurrencyId = (Long)((DynamicObject)paramMap.get("filter_statcurrency")).getPkValue();
DataSet currencySet = dataSet.copy().groupBy(new String[]{"currency"}).finish();
List<Long> 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);
}
}
}