parent
0c671f638f
commit
001f64c6a0
|
@ -6,23 +6,41 @@
|
|||
package shkd.sys.sys.plugin.report;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.entity.LocaleString;
|
||||
import kd.bos.entity.report.FilterInfo;
|
||||
import kd.bos.entity.report.ReportQueryParam;
|
||||
import kd.bos.form.control.events.FilterContainerInitEvent;
|
||||
import kd.bos.form.events.FilterContainerSearchClickArgs;
|
||||
import kd.bos.form.field.BasedataEdit;
|
||||
import kd.bos.form.field.events.BeforeFilterF7SelectEvent;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.report.ReportShowParameter;
|
||||
import kd.bos.report.events.ColHeadFilterClickEvent;
|
||||
import kd.bos.report.events.CreateFilterInfoEvent;
|
||||
import kd.bos.report.events.SortAndFilterEvent;
|
||||
import kd.bos.report.filter.ReportFilter;
|
||||
import kd.bos.report.plugin.AbstractReportFormPlugin;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.tmc.fbp.common.helper.TmcOrgDataHelper;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class transbilldetailreportnewFormPlugin extends AbstractReportFormPlugin {
|
||||
|
||||
@Override
|
||||
public void beforeCreateFilterInfo(CreateFilterInfoEvent event) {
|
||||
super.beforeCreateFilterInfo(event);
|
||||
}
|
||||
|
||||
|
||||
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");
|
||||
|
@ -61,6 +79,11 @@ public class transbilldetailreportnewFormPlugin extends AbstractReportFormPlugin
|
|||
this.getModel().setValue("filter_currency", accountGroupIds.toArray());
|
||||
}
|
||||
|
||||
if (customParams.get("filter_accountbank") != null) {
|
||||
accountGroupIds = (JSONArray)customParams.get("filter_accountbank");
|
||||
this.getModel().setValue("filter_accountbank", accountGroupIds.toArray());
|
||||
}
|
||||
|
||||
if (customParams.get("filter_accountgroup") != null) {
|
||||
accountGroupIds = (JSONArray)customParams.get("filter_accountgroup");
|
||||
this.getModel().setValue("filter_accountgroup", accountGroupIds.toArray());
|
||||
|
@ -76,6 +99,7 @@ public class transbilldetailreportnewFormPlugin extends AbstractReportFormPlugin
|
|||
this.getModel().setValue("filter_statcurrency", customParams.get("filter_statcurrency"));
|
||||
this.getModel().setValue("filter_currencyunit", customParams.get("filter_currencyunit"));
|
||||
ReportFilter rptFilter = (ReportFilter)this.getControl("reportfilterap");
|
||||
this.getModel().setValue("accountbank", "666");
|
||||
rptFilter.search();
|
||||
}
|
||||
}
|
||||
|
@ -121,4 +145,38 @@ public class transbilldetailreportnewFormPlugin extends AbstractReportFormPlugin
|
|||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSortAndFilter(List<SortAndFilterEvent> list) {
|
||||
super.setSortAndFilter(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void filterContainerInit(FilterContainerInitEvent contInitEvent, ReportQueryParam queryParam) {
|
||||
super.filterContainerInit(contInitEvent, queryParam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadOtherEntryFilter(DynamicObject scheme) {
|
||||
super.loadOtherEntryFilter(scheme);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void colHeadFilterClick(ColHeadFilterClickEvent event) {
|
||||
super.colHeadFilterClick(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void filterContainerBeforeF7Select(BeforeFilterF7SelectEvent args) {
|
||||
super.filterContainerBeforeF7Select(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void filterContainerSearchClick(FilterContainerSearchClickArgs args) {
|
||||
super.filterContainerSearchClick(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOtherEntryFilter(FilterInfo filterInfo) {
|
||||
super.setOtherEntryFilter(filterInfo);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,157 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package shkd.sys.sys.plugin.report;
|
||||
|
||||
import kd.bos.algo.DataSet;
|
||||
import kd.bos.dataentity.entity.DataEntityBase;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.entity.report.ReportQueryParam;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.tmc.fbp.common.util.DateUtils;
|
||||
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 transbilldetailreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
|
||||
private static final String UP_SELECT = "bank.name as bank, company.name as parentorg, entrys.subacct_company.name as sonorg, entrys.inneracctbank.number as inneraccount, entrys.subacct.number as accountbank, entrys.paydate as paydate, currency, 'fca_transupbill' as biztype, entrys.transamt as upamount, null as downamount, billno, id";
|
||||
private static final String DOWN_SELECT = "bank.name as bank, company.name as parentorg, entrys.subacct_company.name as sonorg, entrys.inneracctbank.number as inneraccount, entrys.subacct.number as accountbank, entrys.paydate as paydate, currency, 'fca_transdownbill' as biztype, null as upamount, entrys.transamt as downamount, billno, id";
|
||||
private static final String ORDER_SELECT = "bank , company, entrys.paydate, id";
|
||||
|
||||
public transbilldetailreportnewPlugin() {
|
||||
}
|
||||
|
||||
public DataSet queryDataSet(ReportQueryParam reportQueryParam) {
|
||||
Map<String, Object> paramMap = this.transQueryParam(reportQueryParam);
|
||||
String bizType = String.valueOf(paramMap.get("filter_biztype"));
|
||||
QFilter filter = this.initFilter(paramMap);
|
||||
DataSet dataSet = null;
|
||||
if (bizType.contains("fca_transupbill")) {
|
||||
dataSet = QueryServiceHelper.queryDataSet("fca_transupbill", "fca_transupbill", "bank.name as bank, company.name as parentorg, entrys.subacct_company.name as sonorg, entrys.inneracctbank.number as inneraccount, entrys.subacct.number as accountbank, entrys.paydate as paydate, currency, 'fca_transupbill' as biztype, entrys.transamt as upamount, null as downamount, billno, id", filter.toArray(), "bank , company, entrys.paydate, id");
|
||||
}
|
||||
|
||||
if (bizType.contains("fca_transdownbill")) {
|
||||
DataSet downDataSet = QueryServiceHelper.queryDataSet("fca_transdownbill", "fca_transdownbill", "bank.name as bank, company.name as parentorg, entrys.subacct_company.name as sonorg, entrys.inneracctbank.number as inneraccount, entrys.subacct.number as accountbank, entrys.paydate as paydate, currency, 'fca_transdownbill' as biztype, null as upamount, entrys.transamt as downamount, billno, id", filter.toArray(), "bank , company, entrys.paydate, id");
|
||||
if (dataSet != null) {
|
||||
dataSet = dataSet.union(downDataSet);
|
||||
} else {
|
||||
dataSet = downDataSet;
|
||||
}
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
public List<String> groupFields() {
|
||||
List<String> groupFieldList = new ArrayList(2);
|
||||
groupFieldList.add("bank");
|
||||
groupFieldList.add("parentorg");
|
||||
return groupFieldList;
|
||||
}
|
||||
|
||||
public List<String> sumAmountFields() {
|
||||
List<String> sumFieldList = new ArrayList(2);
|
||||
sumFieldList.add("upamount_report");
|
||||
sumFieldList.add("downamount_report");
|
||||
return sumFieldList;
|
||||
}
|
||||
|
||||
public String sumNameField() {
|
||||
return "sonorg";
|
||||
}
|
||||
|
||||
public List<String> orinalAmountField() {
|
||||
List<String> sumFieldList = new ArrayList(2);
|
||||
sumFieldList.add("upamount");
|
||||
sumFieldList.add("downamount");
|
||||
return sumFieldList;
|
||||
}
|
||||
|
||||
private QFilter initFilter(Map<String, Object> paramMap) {
|
||||
QFilter filter = new QFilter("entrys.state", "=", FcaTransDetailStatusEnum.NORMAL.getValue());
|
||||
filter.and(new QFilter("entrys.paystatus", "=", FcaTransPayStatusEnum.PAYSUCCESS.getValue()));
|
||||
DynamicObjectCollection currencies;
|
||||
List currencyIdList;
|
||||
if (paramMap.get("filter_bank") != null) {
|
||||
currencies = (DynamicObjectCollection)paramMap.get("filter_bank");
|
||||
currencyIdList = (List)currencies.stream().map(DataEntityBase::getPkValue).collect(Collectors.toList());
|
||||
filter.and("bank", "in", currencyIdList);
|
||||
}
|
||||
|
||||
if (paramMap.get("filter_org") != null) {
|
||||
filter.and("company", "in", paramMap.get("filter_org"));
|
||||
}
|
||||
|
||||
if (paramMap.get("filter_sonorg") != null) {
|
||||
filter.and("entrys.subacct_company", "in", paramMap.get("filter_sonorg"));
|
||||
}
|
||||
|
||||
//添加银行账号过滤
|
||||
if (paramMap.get("filter_accountbank") != null) {
|
||||
if (!paramMap.get("filter_accountbank").toString().trim().isEmpty()){
|
||||
filter.and("entrys.subacct.number", "in", paramMap.get("filter_accountbank"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (paramMap.get("filter_accountgroup") != null) {
|
||||
filter.and("acctgrpid", "in", paramMap.get("filter_accountgroup"));
|
||||
}
|
||||
|
||||
if (paramMap.get("filter_currency") != null) {
|
||||
currencies = (DynamicObjectCollection)paramMap.get("filter_currency");
|
||||
currencyIdList = (List)currencies.stream().map(DataEntityBase::getPkValue).collect(Collectors.toList());
|
||||
filter.and("currency", "in", currencyIdList);
|
||||
}
|
||||
|
||||
String filterPeriod = (String)paramMap.get("filter_period");
|
||||
Date currDate = DateUtils.getCurrentDate();
|
||||
Date endDate;
|
||||
Date startDate;
|
||||
if (StringUtils.equals(StatisCycleEnum.THISMONTH.getCode(), filterPeriod)) {
|
||||
startDate = DateUtils.getFirstDayOfCurMonth();
|
||||
endDate = DateUtils.getFirstDayOfMonth(DateUtils.getNextMonth(currDate, 1));
|
||||
} else if (StringUtils.equals(StatisCycleEnum.LASTYEAR.getCode(), filterPeriod)) {
|
||||
startDate = DateUtils.getFirstYearDate(DateUtils.getLastYear(currDate, 1));
|
||||
endDate = DateUtils.getFirstDayOfCurYear();
|
||||
} else if (StringUtils.equals(StatisCycleEnum.THISYEAR.getCode(), filterPeriod)) {
|
||||
startDate = DateUtils.getFirstDayOfCurYear();
|
||||
endDate = DateUtils.getFirstYearDate(DateUtils.getNextYear(currDate, 1));
|
||||
} else if (StringUtils.equals(StatisCycleEnum.LASTMONTH.getCode(), filterPeriod)) {
|
||||
startDate = DateUtils.getFirstDayOfMonth(DateUtils.getLastMonth(currDate, 1));
|
||||
endDate = DateUtils.getFirstDayOfCurMonth();
|
||||
} else if (StringUtils.equals(StatisCycleEnum.TODAY.getCode(), filterPeriod)) {
|
||||
startDate = currDate;
|
||||
endDate = DateUtils.getNextDay(currDate, 1);
|
||||
} else if (StringUtils.equals(StatisCycleEnum.CONSTOM.getCode(), filterPeriod)) {
|
||||
startDate = (Date)paramMap.get("filter_startdate");
|
||||
endDate = (Date)paramMap.get("filter_enddate");
|
||||
endDate = DateUtils.getNextDay(endDate, 1);
|
||||
} else {
|
||||
startDate = DateUtils.getFirstDayOfCurMonth();
|
||||
endDate = DateUtils.getFirstDayOfMonth(DateUtils.getNextMonth(currDate, 1));
|
||||
}
|
||||
|
||||
filter.and("entrys.paydate", ">=", startDate);
|
||||
filter.and("entrys.paydate", "<", endDate);
|
||||
String queryAuth = (String)paramMap.get("filter_queryauth");
|
||||
if ("parentorg".equals(queryAuth)) {
|
||||
filter.and("company", "in", paramMap.get("orgIdList"));
|
||||
} else {
|
||||
filter.and("entrys.subacct_company", "in", paramMap.get("orgIdList"));
|
||||
}
|
||||
|
||||
return filter;
|
||||
}
|
||||
}
|
|
@ -2,17 +2,14 @@
|
|||
|
||||
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.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.resource.ResManager;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.entity.EntityMetadataCache;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.entity.report.AbstractReportColumn;
|
||||
|
@ -32,13 +29,14 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.tmc.fbp.common.helper.SnapDataHelper;
|
||||
import kd.tmc.fbp.common.helper.TmcOrgDataHelper;
|
||||
import kd.tmc.fbp.common.util.DateUtils;
|
||||
import kd.tmc.fbp.common.util.EmptyUtil;
|
||||
import kd.tmc.fca.common.enums.StatisCycleEnum;
|
||||
|
||||
public class transbillreportnewFormPlugin extends AbstractReportFormPlugin implements HyperLinkClickListener {
|
||||
|
||||
private static final String[] BANK_DIMENSION = new String[]{"sumlevel", "parentorg", "parentorgid", "bank", "bankid", "sonorg", "sonorgid", "shkd_subacct", "shkd_subacctnumber","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"};
|
||||
private static final String[] BANK_DIMENSION = new String[]{"sumlevel", "parentorg", "parentorgid", "bank", "bankid", "sonorg", "sonorgid", "shkd_subacct", "shkd_subacctnumber","statcurrency", "shkd_nckyye","shkd_bnupamount","shkd_bndownamount","shkd_bndifferenceamount","shkd_qckyye", "upamount", "downamount", "differenceamount","shkd_qmkyye"};
|
||||
private static final String[] SON_ORG_DIMENSION = new String[]{"sumlevel", "parentorg", "parentorgid", "sonorg", "sonorgid", "bank", "bankid", "shkd_subacct", "shkd_subacctnumber","statcurrency", "shkd_nckyye","shkd_bnupamount","shkd_bndownamount","shkd_bndifferenceamount","shkd_qckyye", "upamount", "downamount", "differenceamount","shkd_qmkyye"};
|
||||
@Override
|
||||
public void hyperLinkClick(HyperLinkClickEvent evt) {
|
||||
String field = evt.getFieldName();
|
||||
|
@ -87,6 +85,11 @@ public class transbillreportnewFormPlugin extends AbstractReportFormPlugin imple
|
|||
}
|
||||
}
|
||||
|
||||
if (EmptyUtil.isNoEmpty(rowData.get("shkd_subacct"))) {
|
||||
param.getCustomParams().put("filter_accountbank", new Object[]{rowData.getDynamicObject("shkd_subacct").getString("number")});
|
||||
}
|
||||
|
||||
|
||||
currency = (DynamicObjectCollection)this.getModel().getValue("filter_currency");
|
||||
if (currency != null && !currency.isEmpty()) {
|
||||
currencyIds = currency.stream().map((v) -> {
|
||||
|
@ -118,6 +121,165 @@ public class transbillreportnewFormPlugin extends AbstractReportFormPlugin imple
|
|||
param.getOpenStyle().setShowType(ShowType.MainNewTabPage);
|
||||
this.getView().showForm(param);
|
||||
}
|
||||
if ("shkd_bnupamount".equals(field) || "shkd_bndownamount".equals(field) || "shkd_bndifferenceamount".equals(field)) {
|
||||
int rowIndex = evt.getRowIndex();
|
||||
ReportList reportList = (ReportList)evt.getSource();
|
||||
IReportListModel reportModel = reportList.getReportModel();
|
||||
DynamicObject rowData = reportModel.getRowData(rowIndex);
|
||||
ReportShowParameter param = new ReportShowParameter();
|
||||
|
||||
DynamicObjectCollection currency;
|
||||
Object[] currencyIds;
|
||||
if (EmptyUtil.isNoEmpty(rowData.get("parentorgid"))) {
|
||||
param.getCustomParams().put("filter_org", new Object[]{rowData.get("parentorgid")});
|
||||
} else {
|
||||
currency = (DynamicObjectCollection)this.getModel().getValue("filter_org");
|
||||
if (currency != null && !currency.isEmpty()) {
|
||||
currencyIds = currency.stream().map((v) -> {
|
||||
return v.getDynamicObject("fbasedataid").getPkValue();
|
||||
}).toArray();
|
||||
param.getCustomParams().put("filter_org", currencyIds);
|
||||
}
|
||||
}
|
||||
|
||||
if (EmptyUtil.isNoEmpty(rowData.get("bankid"))) {
|
||||
param.getCustomParams().put("filter_bank", new Object[]{rowData.get("bankid")});
|
||||
} else {
|
||||
currency = (DynamicObjectCollection)this.getModel().getValue("filter_bank");
|
||||
if (currency != null && !currency.isEmpty()) {
|
||||
currencyIds = currency.stream().map((v) -> {
|
||||
return v.getDynamicObject("fbasedataid").getPkValue();
|
||||
}).toArray();
|
||||
param.getCustomParams().put("filter_bank", currencyIds);
|
||||
}
|
||||
}
|
||||
|
||||
if (EmptyUtil.isNoEmpty(rowData.get("sonorgid"))) {
|
||||
param.getCustomParams().put("filter_sonorg", new Object[]{rowData.get("sonorgid")});
|
||||
} else {
|
||||
currency = (DynamicObjectCollection)this.getModel().getValue("filter_sonorg");
|
||||
if (currency != null && !currency.isEmpty()) {
|
||||
currencyIds = currency.stream().map((v) -> {
|
||||
return v.getDynamicObject("fbasedataid").getPkValue();
|
||||
}).toArray();
|
||||
param.getCustomParams().put("filter_sonorg", currencyIds);
|
||||
}
|
||||
}
|
||||
|
||||
if (EmptyUtil.isNoEmpty(rowData.get("shkd_subacct"))) {
|
||||
param.getCustomParams().put("filter_accountbank", new Object[]{rowData.getDynamicObject("shkd_subacct").getString("number")});
|
||||
}
|
||||
|
||||
|
||||
currency = (DynamicObjectCollection)this.getModel().getValue("filter_currency");
|
||||
if (currency != null && !currency.isEmpty()) {
|
||||
currencyIds = currency.stream().map((v) -> {
|
||||
return v.getDynamicObject("fbasedataid").getPkValue();
|
||||
}).toArray();
|
||||
param.getCustomParams().put("filter_currency", currencyIds);
|
||||
}
|
||||
|
||||
DynamicObjectCollection accountGroup = (DynamicObjectCollection)this.getModel().getValue("filter_accountgroup");
|
||||
if (accountGroup != null && !accountGroup.isEmpty()) {
|
||||
Object[] accountGroupIds = accountGroup.stream().map((v) -> {
|
||||
return v.getDynamicObject("fbasedataid").getPkValue();
|
||||
}).toArray();
|
||||
param.getCustomParams().put("filter_accountgroup", accountGroupIds);
|
||||
}
|
||||
|
||||
if ("shkd_bnupamount".equals(field)) {
|
||||
param.getCustomParams().put("filter_biztype", "fca_transupbill");
|
||||
} else if ("shkd_bndownamount".equals(field)) {
|
||||
param.getCustomParams().put("filter_biztype", "fca_transdownbill");
|
||||
}
|
||||
|
||||
// param.getCustomParams().put("filter_period", this.getModel().getValue("filter_period"));
|
||||
param.getCustomParams().put("filter_period", "99");
|
||||
String filter_period = (String) this.getModel().getValue("filter_period");
|
||||
Date currDate = DateUtils.getCurrentDate();
|
||||
Date startDate;
|
||||
Date endDate;
|
||||
Date startOfYear;
|
||||
if (StringUtils.equals(StatisCycleEnum.THISMONTH.getCode(), filter_period)) {
|
||||
startDate = DateUtils.getFirstDayOfCurMonth();
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(startDate);
|
||||
// 设置为年份的第一天
|
||||
calendar.set(Calendar.MONTH, Calendar.JANUARY);
|
||||
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
||||
// 获取年初日期
|
||||
startOfYear = calendar.getTime();
|
||||
endDate = currDate;
|
||||
} else if (StringUtils.equals(StatisCycleEnum.LASTYEAR.getCode(), filter_period)) {
|
||||
startDate = DateUtils.getFirstYearDate(DateUtils.getLastYear(currDate, 1));
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(startDate);
|
||||
// 设置为年份的第一天
|
||||
calendar.set(Calendar.MONTH, Calendar.JANUARY);
|
||||
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
||||
// 获取年初日期
|
||||
startOfYear = calendar.getTime();
|
||||
endDate = currDate;
|
||||
} else if (StringUtils.equals(StatisCycleEnum.THISYEAR.getCode(), filter_period)) {
|
||||
startDate = DateUtils.getFirstDayOfCurYear();
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(startDate);
|
||||
// 设置为年份的第一天
|
||||
calendar.set(Calendar.MONTH, Calendar.JANUARY);
|
||||
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
||||
// 获取年初日期
|
||||
startOfYear = calendar.getTime();
|
||||
endDate = currDate;
|
||||
} else if (StringUtils.equals(StatisCycleEnum.LASTMONTH.getCode(), filter_period)) {
|
||||
startDate = DateUtils.getFirstDayOfMonth(DateUtils.getLastMonth(currDate, 1));
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(startDate);
|
||||
// 设置为年份的第一天
|
||||
calendar.set(Calendar.MONTH, Calendar.JANUARY);
|
||||
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
||||
// 获取年初日期
|
||||
startOfYear = calendar.getTime();
|
||||
endDate = currDate;
|
||||
} else if (StringUtils.equals(StatisCycleEnum.TODAY.getCode(), filter_period)) {
|
||||
startDate = currDate;
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(startDate);
|
||||
// 设置为年份的第一天
|
||||
calendar.set(Calendar.MONTH, Calendar.JANUARY);
|
||||
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
||||
// 获取年初日期
|
||||
startOfYear = calendar.getTime();
|
||||
endDate = currDate;
|
||||
} else if (StringUtils.equals(StatisCycleEnum.CONSTOM.getCode(), filter_period)) {
|
||||
startDate = (Date) this.getModel().getValue("filter_startdate");
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(startDate);
|
||||
// 设置为年份的第一天
|
||||
calendar.set(Calendar.MONTH, Calendar.JANUARY);
|
||||
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
||||
// 获取年初日期
|
||||
startOfYear = calendar.getTime();
|
||||
endDate = (Date) this.getModel().getValue("filter_enddate");
|
||||
} else {
|
||||
startDate = DateUtils.getFirstDayOfCurMonth();
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(startDate);
|
||||
// 设置为年份的第一天
|
||||
calendar.set(Calendar.MONTH, Calendar.JANUARY);
|
||||
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
||||
// 获取年初日期
|
||||
startOfYear = calendar.getTime();
|
||||
endDate = currDate;
|
||||
}
|
||||
// param.getCustomParams().put("filter_startdate", this.getModel().getValue("filter_startdate"));
|
||||
param.getCustomParams().put("filter_startdate", startOfYear);
|
||||
param.getCustomParams().put("filter_enddate", endDate);
|
||||
param.getCustomParams().put("filter_statcurrency", ((DynamicObject)rowData.get("statcurrency")).getPkValue());
|
||||
param.getCustomParams().put("filter_currencyunit", this.getModel().getValue("filter_currencyunit"));
|
||||
param.setFormId("transbill_detail_report");
|
||||
param.getOpenStyle().setShowType(ShowType.MainNewTabPage);
|
||||
this.getView().showForm(param);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
package shkd.sys.sys.plugin.report;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
@ -58,7 +59,7 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
|
|||
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","sonorg","sonorgid","shkd_subacct"};
|
||||
private static final String[] SON_ORG_GROUP_SELECT = new String[]{"parentorg", "parentorgid", "sonorg", "sonorgid"};
|
||||
private static final String[] SON_ORG_GROUP_SELECT = new String[]{"parentorg", "parentorgid", "sonorg","sonorgid","bank", "bankid","shkd_subacct"};
|
||||
private List<String> sumAmountFieldList;
|
||||
private String sumNameField;
|
||||
private boolean isCompute = true;
|
||||
|
@ -84,15 +85,15 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
|
|||
groupSelect = BANK_GROUP_SELECT;
|
||||
this.setSumNameField("bank");
|
||||
} 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";
|
||||
upSelect = "company.name as parentorg, company.id as parentorgid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, bank.name as bank, bank.id as bankid, currency, entrys.transamt as upamount, 0 as downamount,entrys.subacct as shkd_subacct";
|
||||
downSelect = "company.name as parentorg, company.id as parentorgid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, bank.name as bank, bank.id as bankid, currency, 0 as upamount, entrys.transamt as downamount,entrys.subacct as shkd_subacct";
|
||||
select = "parentorg, parentorgid,sonorg, sonorgid, bank, bankid, upamount_report as upamount, downamount_report as downamount,shkd_subacct";
|
||||
groupSelect = SON_ORG_GROUP_SELECT;
|
||||
this.setSumNameField("sonorg");
|
||||
}
|
||||
|
||||
DataSet upDataSet = QueryServiceHelper.queryDataSet("fca_transupbill", "fca_transupbill", upSelect, filter.toArray(), "company");
|
||||
DataSet downDataSet = QueryServiceHelper.queryDataSet("fca_transdownbill", "fca_transdownbill", downSelect, filter.toArray(), "company");
|
||||
DataSet upDataSet = QueryServiceHelper.queryDataSet("fca_transupbill", "fca_transupbill", upSelect, filter.toArray(), "company,entrys.e_useorg");
|
||||
DataSet downDataSet = QueryServiceHelper.queryDataSet("fca_transdownbill", "fca_transdownbill", downSelect, filter.toArray(), "company,entrys.e_useorg");
|
||||
DataSet dataSet = upDataSet.union(downDataSet);
|
||||
dataSet = this.addExchangeRateAndCurrencyUnit(dataSet, paramMap);
|
||||
// DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(dataSet.copy());
|
||||
|
@ -101,67 +102,33 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
|
|||
GroupbyDataSet group = dataSet.groupBy(groupSelect);
|
||||
dataSet = group.sum("upamount").sum("downamount").finish();
|
||||
//链接期初期初余额表
|
||||
DataSet getqc = getqc(filter, paramMap);
|
||||
DataSet getqc = null;
|
||||
try {
|
||||
getqc = getqc(filter, paramMap);
|
||||
} catch (ParseException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
List<String> sumAmountFieldList = new ArrayList(2);
|
||||
|
||||
sumAmountFieldList.add("upamount");
|
||||
sumAmountFieldList.add("downamount");
|
||||
sumAmountFieldList.add("differenceamount");
|
||||
sumAmountFieldList.add("shkd_bnupamount");
|
||||
sumAmountFieldList.add("shkd_bndownamount");
|
||||
sumAmountFieldList.add("shkd_bndifferenceamount");
|
||||
|
||||
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(6);
|
||||
sumAmountFieldList1.add("shkd_qcye");
|
||||
sumAmountFieldList1.add("shkd_qckyye");
|
||||
sumAmountFieldList1.add("upamount");
|
||||
sumAmountFieldList1.add("downamount");
|
||||
sumAmountFieldList1.add("shkd_qmye");
|
||||
sumAmountFieldList1.add("shkd_qmkyye");
|
||||
sumAmountFieldList1.add("differenceamount");
|
||||
this.setSumAmountFieldList(sumAmountFieldList1);
|
||||
//期末余额
|
||||
dataSet = dataSet.addField("shkd_qcye+upamount- downamount", "shkd_qmye");
|
||||
dataSet = dataSet.addField("shkd_qckyye+upamount- downamount", "shkd_qmkyye");
|
||||
.select(new String[]{"parentorg", "parentorgid", "bank", "bankid", "sonorg", "sonorgid","shkd_nckyye","shkd_qckyye","shkd_bnupamount","shkd_bndownamount", "upamount", "downamount","shkd_subacct","differenceamount","shkd_qmkyye"}).finish();
|
||||
dataSet = dataSet.addField("shkd_bnupamount - shkd_bndownamount", "shkd_bndifferenceamount");
|
||||
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);
|
||||
|
@ -271,49 +238,112 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
|
|||
return this.isCompute;
|
||||
}
|
||||
|
||||
public DataSet getqc(QFilter filter,Map<String, Object> paramMap){
|
||||
public DataSet getqc(QFilter filter,Map<String, Object> paramMap) throws ParseException {
|
||||
//组装期初的过滤条件
|
||||
List<QFilter.QFilterNest> nests = filter.getNests(true);//过滤条件
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
QFilter qFilter=null;
|
||||
QFilter endqFilter=null;
|
||||
String endQCP="";
|
||||
String startdate="";
|
||||
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(">")){//开始日期
|
||||
qFilter=new QFilter("entrys.paydate", "<", filter1.getValue());
|
||||
// qFilter=new QFilter("entrys.paydate", "<", filter1.getValue());
|
||||
startdate=sdf.format(filter1.getValue());
|
||||
}
|
||||
if (cp.contains("<")){//结束日期
|
||||
endQCP= filter1.getCP();
|
||||
endqFilter=new QFilter("entrys.paydate", filter1.getCP(), filter1.getValue());
|
||||
enddate=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();
|
||||
}
|
||||
|
||||
//获取开始就日期年初
|
||||
Date date = sdf.parse(startdate);
|
||||
// 创建日历对象并设置为给定日期
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(date);
|
||||
// 设置为年份的第一天
|
||||
calendar.set(Calendar.MONTH, Calendar.JANUARY);
|
||||
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
||||
// 获取年初日期
|
||||
Date startOfYear = calendar.getTime();
|
||||
// 将年初日期格式化为字符串
|
||||
|
||||
//业务单元数据集
|
||||
DataSet balanceDataSet = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"bd_accountbanks","id,number as shkd_orgnumber,name as shkd_org", null, null);
|
||||
|
||||
String startOfYearStr = sdf.format(startOfYear);
|
||||
StringBuilder sqlBuilder1 = new StringBuilder("/*dialect*/ ");
|
||||
sqlBuilder1.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" +
|
||||
"FROM t_bei_bankbalance\n" +
|
||||
"WHERE (faccountbankid, fcreatetime) IN (\n" +
|
||||
" SELECT faccountbankid, MAX(fcreatetime)\n" +
|
||||
" FROM t_bei_bankbalance\n" +
|
||||
" WHERE fcreatetime < '"+startOfYearStr+"'\n" +
|
||||
" GROUP BY faccountbankid\n" +
|
||||
")");
|
||||
//年初余额
|
||||
DataSet ncres = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder1.toString());//财务云
|
||||
ncres = addExchangeRateAndCurrencyUnit1(ncres, paramMap);
|
||||
ncres = ncres.select(new String[]{"shkd_subacct","upamount_report as shkd_nckyye"});
|
||||
|
||||
//设置本年上划下拨条件
|
||||
QFilter qFilterbn=new QFilter("entrys.paydate", ">=", startOfYear);//年初
|
||||
qFilterbn.and(endqFilter);//截止日期
|
||||
for (QFilter.QFilterNest nest : nests) {
|
||||
String op = nest.getOp();
|
||||
QFilter filter1 = nest.getFilter();
|
||||
if (!"entrys.paydate".equals(filter1.getProperty())){
|
||||
if ("AND".equals(op)){
|
||||
qFilterbn.and(filter1);
|
||||
}else {
|
||||
qFilterbn.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,0 as downamount,entrys.subacct as shkd_subacct",
|
||||
qFilterbn.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, 0 as upamount,entrys.transamt as downamount,entrys.subacct as shkd_subacct",
|
||||
qFilterbn.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_bnupamount","downamount_report as shkd_bndownamount","shkd_subacct","currency"});
|
||||
|
||||
GroupbyDataSet group = dataSet.groupBy(new String[]{"parentorg", "parentorgid", "bank", "bankid", "sonorg", "sonorgid","shkd_subacct","currency"});
|
||||
dataSet = group.sum("shkd_bnupamount").sum("shkd_bndownamount").finish();
|
||||
JoinDataSet join = dataSet.join(ncres, JoinType.FULL);//连接
|
||||
dataSet = join.on("shkd_subacct","shkd_subacct")
|
||||
.select(new String[]{"parentorg", "parentorgid", "bank", "bankid", "sonorg", "sonorgid", "shkd_bnupamount", "shkd_bndownamount","shkd_subacct","currency","shkd_nckyye"}).finish();
|
||||
|
||||
//期末余额
|
||||
StringBuilder sqlBuilder2 = new StringBuilder("/*dialect*/ ");
|
||||
sqlBuilder2.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" +
|
||||
"FROM t_bei_bankbalance\n" +
|
||||
"WHERE (faccountbankid, fcreatetime) IN (\n" +
|
||||
" SELECT faccountbankid, MAX(fcreatetime)\n" +
|
||||
" FROM t_bei_bankbalance\n" +
|
||||
" WHERE fcreatetime "+endQCP+" '"+enddate+"'\n" +
|
||||
" GROUP BY faccountbankid\n" +
|
||||
")");
|
||||
DataSet qmres = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder2.toString());//财务云
|
||||
qmres = addExchangeRateAndCurrencyUnit1(qmres, paramMap);
|
||||
qmres = qmres.select(new String[]{"shkd_subacct","upamount_report as shkd_qmkyye"});
|
||||
JoinDataSet join1 = dataSet.join(qmres, JoinType.FULL);//连接
|
||||
dataSet = join1.on("shkd_subacct","shkd_subacct")
|
||||
.select(new String[]{"parentorg", "parentorgid", "bank", "bankid", "sonorg", "sonorgid", "shkd_bnupamount", "shkd_bndownamount","shkd_subacct","currency","shkd_nckyye","shkd_qmkyye"}).finish();
|
||||
|
||||
//期初可用余额
|
||||
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ ");
|
||||
sqlBuilder.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" +
|
||||
"FROM t_bei_bankbalance\n" +
|
||||
|
@ -325,8 +355,12 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
|
|||
")");
|
||||
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_report as shkd_qcye","upamount_report as shkd_qckyye"});
|
||||
return select;
|
||||
DataSet select = res.select(new String[]{"shkd_subacct","upamount_report as shkd_qckyye"});
|
||||
|
||||
JoinDataSet join2 = dataSet.join(select, JoinType.FULL);//连接
|
||||
dataSet = join2.on("shkd_subacct","shkd_subacct")
|
||||
.select(new String[]{"parentorg", "parentorgid", "bank", "bankid", "sonorg", "sonorgid", "shkd_bnupamount", "shkd_bndownamount","shkd_subacct","currency","shkd_nckyye","shkd_qmkyye","shkd_qckyye"}).finish();
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
protected DataSet addExchangeRateAndCurrencyUnit1(DataSet bizDataSet, Map<String, Object> paramMap) {
|
||||
|
@ -401,6 +435,41 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
|
|||
return (String[])fieldList.toArray(new String[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected DataSet addSubRowDataSet(DataSet bizDs, Map<String, Object> paramMap) {
|
||||
Boolean isShowSubTotal = (Boolean)paramMap.get("filter_isshowsubtotal");
|
||||
if (isShowSubTotal) {
|
||||
String subNameField = this.subNameField();
|
||||
List<String> groupFields = this.groupFields();
|
||||
List<String> groupFields1;
|
||||
if ("bank".equals(paramMap.get("filter_dimension"))) {
|
||||
groupFields1 =Arrays.asList("parentorg","parentorgid","bank","bankid");
|
||||
}else {
|
||||
groupFields1 =Arrays.asList("parentorg","parentorgid","sonorg","sonorgid");
|
||||
}
|
||||
|
||||
bizDs=bizDs.addField("0L","shkd_px");//用于再加一层排序
|
||||
//母组织小计
|
||||
DataSet subDs = this.addSubTotalDataSet2(bizDs.copy().filter("pid = '0'"), groupFields, this.subAmountFields(), subNameField, this.subDisplayName()).updateFields(new String[]{"rowid", "pid"}, new String[]{"cast(rowid as String)", "cast(pid as String)"}).updateFields(new String[]{"rowid", "pid", "isgroupnode"}, new String[]{this.uniqueRow, "'0'", "'0'"});
|
||||
//母组织下的开户行或者子公司小计
|
||||
DataSet subDs1 = this.addSubTotalDataSet1(bizDs.copy().filter("pid = '0'"), groupFields1, this.subAmountFields(), subNameField, this.subDisplayName()).updateFields(new String[]{"rowid", "pid"}, new String[]{"cast(rowid as String)", "cast(pid as String)"}).updateFields(new String[]{"rowid", "pid", "isgroupnode"}, new String[]{this.uniqueRow, "'0'", "'0'"});
|
||||
bizDs = bizDs.union(subDs).orderBy((String[])this.orderByFields().toArray(new String[0]));
|
||||
List<String> orderByFields1 ;
|
||||
if ("bank".equals(paramMap.get("filter_dimension"))) {
|
||||
orderByFields1 =Arrays.asList("parentorg","parentorgid","shkd_px","bank","bankid","sumlevel");
|
||||
}else {
|
||||
orderByFields1 =Arrays.asList("parentorg","parentorgid","shkd_px","sonorg","sonorgid","sumlevel");
|
||||
}
|
||||
bizDs = bizDs.union(subDs1).orderBy((String[])orderByFields1.toArray(new String[0]));
|
||||
|
||||
if (groupFields.contains(subNameField)) {
|
||||
bizDs = bizDs.updateField(subNameField, "case when sumlevel = 1 then '" + this.subDisplayName() + "' else " + subNameField + " end");
|
||||
}
|
||||
}
|
||||
|
||||
return bizDs;
|
||||
}
|
||||
|
||||
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();
|
||||
|
@ -427,6 +496,80 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
|
|||
DataType[] dataTypes = new DataType[]{DataType.LongType, DataType.BigDecimalType};
|
||||
return createEmptyDataSet(fieldNames, dataTypes);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected DataSet addSubTotalDataSet1(DataSet rowSet, List<String> gruopFields, List<String> sumFields, String sumNameField, String totalDesc) {
|
||||
DataSet dsTemp = rowSet.copy();
|
||||
GroupbyDataSet gdsTemp = dsTemp.groupBy((String[])gruopFields.toArray(new String[0]));
|
||||
Iterator var8 = sumFields.iterator();
|
||||
|
||||
while(var8.hasNext()) {
|
||||
String sumField = (String)var8.next();
|
||||
gdsTemp.sum(sumField);
|
||||
}
|
||||
|
||||
DataSet ds = gdsTemp.finish();
|
||||
List<String> selectField = new LinkedList();
|
||||
Field[] fields = rowSet.getRowMeta().getFields();
|
||||
Field[] var11 = fields;
|
||||
int var12 = fields.length;
|
||||
|
||||
for(int var13 = 0; var13 < var12; ++var13) {
|
||||
Field field = var11[var13];
|
||||
if (!gruopFields.contains(field.getName()) && !sumFields.contains(field.getName())) {
|
||||
if (field.getName().equals(sumNameField)) {
|
||||
selectField.add("'" + totalDesc + "' as " + field.getName());
|
||||
} else if (field.getName().equals(this.sumField)) {
|
||||
selectField.add("0.5 as " + this.sumField);
|
||||
} else if (field.getName().equals("shkd_px")) {
|
||||
selectField.add("0 as shkd_px");
|
||||
}else {
|
||||
selectField.add("NULL as " + field.getName());
|
||||
}
|
||||
} else {
|
||||
selectField.add(field.getName());
|
||||
}
|
||||
}
|
||||
|
||||
return ds.select(String.join(",", selectField));
|
||||
}
|
||||
|
||||
|
||||
protected DataSet addSubTotalDataSet2(DataSet rowSet, List<String> gruopFields, List<String> sumFields, String sumNameField, String totalDesc) {
|
||||
DataSet dsTemp = rowSet.copy();
|
||||
GroupbyDataSet gdsTemp = dsTemp.groupBy((String[])gruopFields.toArray(new String[0]));
|
||||
Iterator var8 = sumFields.iterator();
|
||||
|
||||
while(var8.hasNext()) {
|
||||
String sumField = (String)var8.next();
|
||||
gdsTemp.sum(sumField);
|
||||
}
|
||||
|
||||
DataSet ds = gdsTemp.finish();
|
||||
List<String> selectField = new LinkedList();
|
||||
Field[] fields = rowSet.getRowMeta().getFields();
|
||||
Field[] var11 = fields;
|
||||
int var12 = fields.length;
|
||||
|
||||
for(int var13 = 0; var13 < var12; ++var13) {
|
||||
Field field = var11[var13];
|
||||
if (!gruopFields.contains(field.getName()) && !sumFields.contains(field.getName())) {
|
||||
if (field.getName().equals(sumNameField)) {
|
||||
selectField.add("'" + totalDesc + "' as " + field.getName());
|
||||
} else if (field.getName().equals(this.sumField)) {
|
||||
selectField.add("1 as " + this.sumField);
|
||||
} else if (field.getName().equals("shkd_px")) {
|
||||
selectField.add("1 as shkd_px");
|
||||
}else {
|
||||
selectField.add("NULL as " + field.getName());
|
||||
}
|
||||
} else {
|
||||
selectField.add(field.getName());
|
||||
}
|
||||
}
|
||||
return ds.select(String.join(",", selectField));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue