应收票据台账报表2
This commit is contained in:
wenlukang1 2025-08-25 17:29:18 +08:00
parent 7a5e390d20
commit 389ea41304
1 changed files with 163 additions and 100 deletions

View File

@ -15,6 +15,7 @@ import kd.bos.servicehelper.QueryServiceHelper;
import kd.bos.servicehelper.permission.PermissionServiceHelper; import kd.bos.servicehelper.permission.PermissionServiceHelper;
import shkd.sys.sys.plugin.report.util.ReportUtils; import shkd.sys.sys.plugin.report.util.ReportUtils;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -36,17 +37,21 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
QFilter qFilter1 = new QFilter("source", QCP.not_equals, "cdm"); QFilter qFilter1 = new QFilter("source", QCP.not_equals, "cdm");
QFilter qFilter2 = new QFilter("company", QCP.in, hasPermOrgS); QFilter qFilter2 = new QFilter("company", QCP.in, hasPermOrgS);
QFilter qFilter3 = new QFilter("billstatus", QCP.equals, "C"); QFilter qFilter3 = new QFilter("billstatus", QCP.equals, "C");
QFilter qFilter0 = qFilter1.and(qFilter2).and(qFilter3); QFilter qFilter4 = new QFilter("rptype", QCP.equals, "receivebill");
QFilter qFilter0 = qFilter1.and(qFilter2).and(qFilter3).and(qFilter4);
//票面基本信息1 //票面基本信息1
String selectFields = "id,company as shkd_skdw,bizdate as shkd_spyf,bizdate as shkd_sprq,draftbillno as shkd_pjhm," + String selectFields = "draftbillno as id,company as shkd_skdw,bizdate as shkd_spyf,bizdate as shkd_sprq,draftbillno as shkd_pjhm," +
"supperbillamount as shkd_hpje,availableamount as shkd_kyje,drawername as shkd_cprqc,delivername as shkd_jprqcqs,acceptername as shkd_cdrqc," + "supperbillamount as shkd_hpje,availableamount as shkd_kyje,drawername as shkd_cprqc,delivername as shkd_jprqcqs,acceptername as shkd_cdrqc," +
" issuedate as shkd_cprq, draftbillexpiredate as shkd_pjdqr,draftbilltype.name as shkd_pjlx,description as shkd_bz"; " issuedate as shkd_cprq, draftbillexpiredate as shkd_pjdqr,draftbilltype.name as shkd_pjlx,description as shkd_bz";
Object type = null; Object type = null;
Object date1 = null; Object sdate11 = null;
Object date2 = null; Object edate11 = null;
Object date0 = null; Object sdate22 = null;
Object edate22 = null;
Object sdate00 = null;
Object edate00 = null;
//获取所有过滤控件的值 //获取所有过滤控件的值
List<QFilter> listQFilter = ReportUtils.getListQFilter(reportQueryParam); List<QFilter> listQFilter = ReportUtils.getListQFilter(reportQueryParam);
@ -63,19 +68,34 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
type = qFilter.getValue(); type = qFilter.getValue();
} }
break; break;
case "shkd_date1": case "sdate11":
if (Objects.nonNull(qFilter.getValue())) { if (Objects.nonNull(qFilter.getValue())) {
date1 = qFilter.getValue(); sdate11 = qFilter.getValue();
} }
break; break;
case "shkd_date2": case "edate11":
if (Objects.nonNull(qFilter.getValue())) { if (Objects.nonNull(qFilter.getValue())) {
date2 = qFilter.getValue(); edate11 = qFilter.getValue();
} }
break; break;
case "shkd_date0": case "sdate22":
if (Objects.nonNull(qFilter.getValue())) { if (Objects.nonNull(qFilter.getValue())) {
date0 = qFilter.getValue(); sdate22 = qFilter.getValue();
}
break;
case "edate22":
if (Objects.nonNull(qFilter.getValue())) {
edate22 = qFilter.getValue();
}
break;
case "sdate00":
if (Objects.nonNull(qFilter.getValue())) {
sdate00 = qFilter.getValue();
}
break;
case "edate00":
if (Objects.nonNull(qFilter.getValue())) {
edate00 = qFilter.getValue();
} }
break; break;
default: default:
@ -83,8 +103,8 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
} }
} }
// 主表按收票月份过滤 // 主表按收票月份过滤
if (date1 != null) { if (sdate11 != null) {
qFilter0 = qFilter0.and(createDateRangeFilter(date1)); qFilter0 = qFilter0.and(createDateRangeFilter(sdate11, edate11));
} }
// 主表所有满足基本过滤条件的数据 // 主表所有满足基本过滤条件的数据
DataSet draftBillData1 = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(), "cdm_receivablebill", DataSet draftBillData1 = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(), "cdm_receivablebill",
@ -94,20 +114,22 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
.map(obj -> obj.getString("id")).collect(Collectors.toList()); .map(obj -> obj.getString("id")).collect(Collectors.toList());
// 业务处理月 // 业务处理月
String date2String = getYearMonth(date2); String sdate22s = convertDateString(sdate22, false);
String edate22s = convertDateString(edate22, true);
//主表数据的基础上查询其子表数据 //主表数据的基础上查询其子表数据
DataSet disCountData = getDisCountData(date2String, null); DataSet disCountData = getDisCountData(null, null, null, null);
DataSet pledgeData = getPledgeData(date2String, null);
DataSet rePledgeData = getRePledgeData(date2String, null); DataSet pledgeData = getPledgeData(null, null, null, null);
DataSet endorseData = getEndorseData(date2String, null); DataSet rePledgeData = getRePledgeData(null, null, null, null);
DataSet collectData = getCollectData(date2String, null); DataSet endorseData = getEndorseData(null, null, null, null);
DataSet collectData = getCollectData(null, null, null, null);
//当前质押金额 //当前质押金额
DataSet pledgeCyData = getPledgeCyData(); DataSet pledgeCyData = getPledgeCyData();
String[] newFieldNames0 = ReportUtils.ExpansionArray(fieldNames, Collections.singletonList("shkd_zyje")); String[] newFieldNames0 = ReportUtils.ExpansionArray(fieldNames, Collections.singletonList("shkd_zyje"));
//拼接1 //拼接1
DataSet finish1 = draftBillData1.join(pledgeCyData, JoinType.LEFT) DataSet finish1 = draftBillData1.join(pledgeCyData, JoinType.LEFT)
.on("id", "pjid5").select(newFieldNames0).finish(); .on("shkd_pjhm", "pjid5").select(newFieldNames0).finish();
String[] fieldNames1 = finish1.getRowMeta().getFieldNames(); String[] fieldNames1 = finish1.getRowMeta().getFieldNames();
//拼接贴现质押质押解除背书托收相关字段 //拼接贴现质押质押解除背书托收相关字段
@ -129,39 +151,36 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
.join(rePledgeData, JoinType.LEFT) .join(rePledgeData, JoinType.LEFT)
.on("id", "pjid6").select(newFieldNames5).finish(); .on("id", "pjid6").select(newFieldNames5).finish();
//所有满足条件的票据id集合
List<String> idLists = new ArrayList<>();
// 业务发生月取收票月份+业务处理月份的数据 // 业务发生月取收票月份+业务处理月份的数据
String date0String = getYearMonth(date0); String sdate00s = convertDateString(sdate00, false);
String edate00s = convertDateString(edate00, true);
//1业务发生月业务处理月 //1业务发生月业务处理月
DataSet disCountData1 = getDisCountData(date2String, date0String); DataSet disCountData1 = getDisCountData(sdate22s, edate22s, sdate00s, edate00s);
List<String> pjid3 = ORM.create().toPlainDynamicObjectCollection(disCountData1.copy()).stream() List<String> pjid3 = ORM.create().toPlainDynamicObjectCollection(disCountData1.copy()).stream()
.map(obj -> obj.getString("pjid3")).collect(Collectors.toList()); .map(obj -> obj.getString("pjid3")).collect(Collectors.toList());
DataSet pledgeData1 = getPledgeData(date2String, date0String); DataSet pledgeData1 = getPledgeData(sdate22s, edate22s, sdate00s, edate00s);
List<String> pjid4 = ORM.create().toPlainDynamicObjectCollection(pledgeData1.copy()).stream() List<String> pjid4 = ORM.create().toPlainDynamicObjectCollection(pledgeData1.copy()).stream()
.map(obj -> obj.getString("pjid4")).collect(Collectors.toList()); .map(obj -> obj.getString("pjid4")).collect(Collectors.toList());
DataSet rePledgeData1 = getRePledgeData(date2String, date0String); DataSet rePledgeData1 = getRePledgeData(sdate22s, edate22s, sdate00s, edate00s);
List<String> pjid6 = ORM.create().toPlainDynamicObjectCollection(rePledgeData1.copy()).stream() List<String> pjid6 = ORM.create().toPlainDynamicObjectCollection(rePledgeData1.copy()).stream()
.map(obj -> obj.getString("pjid6")).collect(Collectors.toList()); .map(obj -> obj.getString("pjid6")).collect(Collectors.toList());
DataSet endorseData1 = getEndorseData(date2String, date0String); DataSet endorseData1 = getEndorseData(sdate22s, edate22s, sdate00s, edate00s);
List<String> pjid2 = ORM.create().toPlainDynamicObjectCollection(endorseData1.copy()).stream() List<String> pjid2 = ORM.create().toPlainDynamicObjectCollection(endorseData1.copy()).stream()
.map(obj -> obj.getString("pjid2")).collect(Collectors.toList()); .map(obj -> obj.getString("pjid2")).collect(Collectors.toList());
DataSet collectData1 = getCollectData(date2String, date0String); DataSet collectData1 = getCollectData(sdate22s, edate22s, sdate00s, edate00s);
List<String> pjid1 = ORM.create().toPlainDynamicObjectCollection(collectData1.copy()).stream() List<String> pjid1 = ORM.create().toPlainDynamicObjectCollection(collectData1.copy()).stream()
.map(obj -> obj.getString("pjid1")).collect(Collectors.toList()); .map(obj -> obj.getString("pjid1")).collect(Collectors.toList());
pjid4.addAll(pjid6); pjid4.addAll(pjid6);
// 实现date0date1date2的独立和组合过滤 //所有满足条件的票据id集合
idLists = new ArrayList<>(); List<String> idLists = new ArrayList<>();
// 判断是否有日期过滤条件 // 判断是否有日期过滤条件
boolean hasDateFilter = (date0 != null || date1 != null || date2 != null); boolean hasDateFilter = (sdate00 != null || sdate11 != null || sdate22 != null);
if (hasDateFilter) { if (hasDateFilter) {
Set<String> finalIds = new HashSet<>(); Set<String> finalIds = new HashSet<>();
boolean needIntersection = (date0 != null && date2 != null); boolean needIntersection = (sdate00 != null && sdate22 != null);
// 处理业务处理月 (date2) - 子表业务数据 // 处理业务处理月 (date2) - 子表业务数据
if (needIntersection) { if (needIntersection) {
@ -172,7 +191,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
processIds.addAll(pjid2); // 背书 processIds.addAll(pjid2); // 背书
processIds.addAll(pjid4); // 质押和质押解除 processIds.addAll(pjid4); // 质押和质押解除
finalIds.addAll(processIds); finalIds.addAll(processIds);
} else if(date0 != null || date2 != null){ } else if (sdate00 != null || sdate22 != null) {
// 不需要交集时直接添加 // 不需要交集时直接添加
idLists.addAll(pjid3); // 贴现 idLists.addAll(pjid3); // 贴现
idLists.addAll(pjid1); // 托收 idLists.addAll(pjid1); // 托收
@ -181,9 +200,9 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
} }
// 处理业务发生月 (date0) - 主表数据 // 处理业务发生月 (date0) - 主表数据
if (date0 != null) { if (sdate00 != null) {
// 查询满足业务发生月条件的票据 // 查询满足业务发生月条件的票据
QFilter tempFilter = qFilter0.and(createDateRangeFilter(date0)); QFilter tempFilter = qFilter0.and(createDateRangeFilter(sdate00s,edate00s));
DataSet draftBillDataFilter = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(), DataSet draftBillDataFilter = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),
"cdm_receivablebill", selectFields, new QFilter[]{tempFilter}, null); "cdm_receivablebill", selectFields, new QFilter[]{tempFilter}, null);
List<String> pjid0Biz = ORM.create().toPlainDynamicObjectCollection(draftBillDataFilter.copy()).stream() List<String> pjid0Biz = ORM.create().toPlainDynamicObjectCollection(draftBillDataFilter.copy()).stream()
@ -207,18 +226,18 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
idLists = new ArrayList<>(finalIds); idLists = new ArrayList<>(finalIds);
} }
// 去重并应用过滤 // 去重并应用过滤
if (!idLists.isEmpty()) { List<String> uniqueIds = idLists.stream().distinct().collect(Collectors.toList());
List<String> uniqueIds = idLists.stream().distinct().collect(Collectors.toList()); String ids = toSqlInClause(uniqueIds);
String ids = String.join(",", uniqueIds); if (!ids.isEmpty()) {
result = result.where("id in(" + ids + ")"); result = result.where("id in(" + ids + ")");
} }
} else { } else {
// 没有任何日期过滤条件时显示所有主表数据 // 没有任何日期过滤条件时显示所有主表数据
idLists.addAll(pjid0); idLists.addAll(pjid0);
if (!idLists.isEmpty()) { List<String> uniqueIds = idLists.stream().distinct().collect(Collectors.toList());
List<String> uniqueIds = idLists.stream().distinct().collect(Collectors.toList()); String ids = toSqlInClause(uniqueIds);
String ids = String.join(",", uniqueIds); if (!ids.isEmpty()) {
result = result.where("id in(" + ids + ")"); result = result.where("id in(" + ids + ")");
} }
} }
@ -229,7 +248,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
String[] typeArray = typeStr.replaceFirst("^,", "").replaceFirst(",$", "").split(","); String[] typeArray = typeStr.replaceFirst("^,", "").replaceFirst(",$", "").split(",");
// 处理type值将其转换为列表形式 // 处理type值将其转换为列表形式
List<String> typeList = Arrays.asList(typeArray); List<String> typeList = Arrays.asList(typeArray);
if (!typeList.isEmpty()){ if (!typeList.isEmpty()) {
//根据type值往typeList中添加的票据id实现type过滤 //根据type值往typeList中添加的票据id实现type过滤
idLists = new ArrayList<>(); idLists = new ArrayList<>();
if (typeList.contains("1")) idLists.addAll(pjid3); if (typeList.contains("1")) idLists.addAll(pjid3);
@ -237,9 +256,9 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
if (typeList.contains("3")) idLists.addAll(pjid2); if (typeList.contains("3")) idLists.addAll(pjid2);
if (typeList.contains("4")) idLists.addAll(pjid4); if (typeList.contains("4")) idLists.addAll(pjid4);
//最终筛选type不为空时根据type进行筛选type为空时根据所有票据id进行筛选 //最终筛选type不为空时根据type进行筛选type为空时根据所有票据id进行筛选
if (!idLists.isEmpty()) { List<String> uniqueIds = idLists.stream().distinct().collect(Collectors.toList());
List<String> collect = idLists.stream().distinct().collect(Collectors.toList()); String ids = toSqlInClause(uniqueIds);
String ids = String.join(",", collect); if (!ids.isEmpty()) {
result = result.where("id in(" + ids + ")"); result = result.where("id in(" + ids + ")");
} }
} }
@ -248,6 +267,22 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
return result; return result;
} }
/**
* 将字符串列表转换为SQL IN语句中使用的格式每个元素都加上单引号
* @param values 字符串列表
* @return SQL格式的字符串'value1','value2','value3'
*/
private String toSqlInClause(List<String> values) {
if (values == null || values.isEmpty()) {
return "";
}
return values.stream()
.filter(Objects::nonNull) // 过滤掉null值
.map(value -> "'" + value + "'") // 为每个值添加单引号
.collect(Collectors.joining(","));
}
/** /**
* 获取指定日期的年月字符串 * 获取指定日期的年月字符串
* *
@ -271,26 +306,53 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
/** /**
* 创建日期范围过滤器 * 创建日期范围过滤器
* *
* @param date 日期对象用于确定年月范围 * @param sdate 起始日期不能为空
* @return QFilter 日期范围过滤器包含指定月份的开始和结束日期条件 * @param edate 结束日期不能为空该日期会转换为下一天进行比较
* @return 返回组合后的日期范围过滤器
*/ */
private QFilter createDateRangeFilter(Object date) { private QFilter createDateRangeFilter(Object sdate, Object edate) {
String yearMonth = getYearMonth(date); // 转换起始日期和结束日期
String startDate = yearMonth + "-01"; // 月份第一天 String formattedSdate = convertDateString(sdate, false); // 起始日期时间部分为 00:00:00
String formattedEdate = convertDateString(edate, true); // 结束日期时间部分为 23:59:59
if (String.valueOf(date).contains(":")) { // 处理起始日期
startDate = yearMonth + "-01 00:00:00.000"; // 月份第一天 QFilter filter1 = new QFilter("bizdate", QCP.large_equals, formattedSdate);
} QFilter filter2 = new QFilter("bizdate", QCP.less_equals, formattedEdate);
String endDate = getMonthEndDateString(yearMonth); // 月份最后一天
// 构造日期范围条件大于上月的最后一天即大于等于本月第一天 return filter1.and(filter2);
QFilter dateFilter1 = new QFilter("bizdate", QCP.large_equals, startDate);
// 构造日期范围条件小于下月的第一天即小于等于本月最后一天的下一天
QFilter dateFilter2 = new QFilter("bizdate", QCP.less_than, getNextDay(endDate));
// 构造日期范围条件大于上月的最后一天即大于等于本月第一天
return dateFilter1.and(dateFilter2);
} }
/**
* "EEE MMM dd HH:mm:ss zzz yyyy" 格式的日期字符串转换为 "yyyy-MM-dd HH:mm:ss" 格式
* @param dateObj 日期对象
* @param isEndDate 是否为结束日期用于确定时间部分是 23:59:59 还是 00:00:00
* @return 转换后的日期字符串
*/
private String convertDateString(Object dateObj, boolean isEndDate) {
if (dateObj == null) {
return null;
}
try {
SimpleDateFormat inputFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = inputFormat.parse(String.valueOf(dateObj));
String datePart = outputFormat.format(date);
// 根据是否为结束日期添加相应的时间部分
if (isEndDate) {
return datePart + " 23:59:59";
} else {
return datePart + " 00:00:00";
}
} catch (Exception e) {
// 如果解析失败尝试直接使用原始值
return String.valueOf(dateObj);
}
}
/** /**
* 获取指定日期的前一天 * 获取指定日期的前一天
@ -413,7 +475,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
//贴现 //贴现
private DataSet getDisCountData(Object date, Object date0String) { private DataSet getDisCountData(Object sDate, Object eDate, Object sMonthDate, Object eMonthDate) {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("/*dialect*/ SELECT ") sql.append("/*dialect*/ SELECT ")
.append(" pjid3,\n") .append(" pjid3,\n")
@ -430,7 +492,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
.append(" SUM(discamt) AS shkd_txhk\n") .append(" SUM(discamt) AS shkd_txhk\n")
.append(" FROM (\n") .append(" FROM (\n")
.append(" SELECT\n") .append(" SELECT\n")
.append(" t1.fid AS pjid3,\n") .append(" t1.fdraftbillno AS pjid3,\n")
.append(" t2.fid AS discountid,\n") .append(" t2.fid AS discountid,\n")
.append(" t2.ftradetype AS discounttradetype,\n") .append(" t2.ftradetype AS discounttradetype,\n")
.append(" t2.frecbodyname AS disfrecbodyname,\n") .append(" t2.frecbodyname AS disfrecbodyname,\n")
@ -441,10 +503,9 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
.append(" FROM t_cdm_draftbill t1\n") .append(" FROM t_cdm_draftbill t1\n")
.append(" JOIN t_cdm_discountentry t3 ON t1.fid = t3.fdis_selectbillid\n") .append(" JOIN t_cdm_discountentry t3 ON t1.fid = t3.fdis_selectbillid\n")
.append(" JOIN t_cdm_drafttradebill t2 ON t2.fid = t3.fid\n") .append(" JOIN t_cdm_drafttradebill t2 ON t2.fid = t3.fid\n")
.append(" WHERE t1.fsource <> 'cdm'\n") .append(" WHERE t2.ftradetype = 'discount' AND t2.fbillstatus = 'C'\n");
.append(" AND t2.ftradetype = 'discount' AND t2.fbillstatus = 'C'\n");
addDateFilter(date, date0String, sql); addDateFilter(sDate, eDate, sMonthDate, eMonthDate, sql);
sql.append(" ) src\n") sql.append(" ) src\n")
.append(" GROUP BY pjid3;"); .append(" GROUP BY pjid3;");
@ -453,7 +514,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
} }
//背书 //背书
private DataSet getEndorseData(Object date, Object date0String) { private DataSet getEndorseData(Object sDate, Object eDate, Object sMonthDate, Object eMonthDate) {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("/*dialect*/ SELECT\n") sql.append("/*dialect*/ SELECT\n")
.append(" pjid2,\n") .append(" pjid2,\n")
@ -470,7 +531,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
.append(" SUM(endorseamt) AS shkd_bsje\n") .append(" SUM(endorseamt) AS shkd_bsje\n")
.append(" FROM (\n") .append(" FROM (\n")
.append(" SELECT\n") .append(" SELECT\n")
.append(" t1.fid AS pjid2,\n") .append(" t1.fdraftbillno AS pjid2,\n")
.append(" t2.fid AS discountid,\n") .append(" t2.fid AS discountid,\n")
.append(" t2.ftradetype AS discounttradetype,\n") .append(" t2.ftradetype AS discounttradetype,\n")
.append(" t2.fbeendorsortext AS endorsename,\n") .append(" t2.fbeendorsortext AS endorsename,\n")
@ -479,10 +540,9 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
.append(" FROM t_cdm_draftbill t1\n") .append(" FROM t_cdm_draftbill t1\n")
.append(" JOIN t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid\n") .append(" JOIN t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid\n")
.append(" JOIN t_cdm_drafttradebill t2 ON t2.fid = t3.fid\n") .append(" JOIN t_cdm_drafttradebill t2 ON t2.fid = t3.fid\n")
.append(" WHERE t1.fsource <> 'cdm'\n") .append(" WHERE t2.ftradetype = 'endorse' AND t2.fbillstatus = 'C'\n");
.append(" AND t2.ftradetype = 'endorse' AND t2.fbillstatus = 'C'\n");
addDateFilter(date, date0String, sql); addDateFilter(sDate, eDate, sMonthDate, eMonthDate, sql);
sql.append(" ) src\n") sql.append(" ) src\n")
.append(" GROUP BY pjid2;"); .append(" GROUP BY pjid2;");
@ -491,10 +551,10 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
} }
//托收 //托收
private DataSet getCollectData(Object date, Object date0String) { private DataSet getCollectData(Object sDate, Object eDate, Object sMonthDate, Object eMonthDate) {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("/*dialect*/ SELECT ") sql.append("/*dialect*/ SELECT ")
.append(" t1.fid AS pjid1,") .append(" t1.fdraftbillno AS pjid1,")
.append(" t2.fid AS discountid,") .append(" t2.fid AS discountid,")
.append(" t2.ftradetype AS discounttradetype,") .append(" t2.ftradetype AS discounttradetype,")
.append(" t2.frecbodyname AS shkd_tsyh,") .append(" t2.frecbodyname AS shkd_tsyh,")
@ -504,15 +564,15 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
.append(" LEFT JOIN t_cdm_draftbill_e t4 ON t4.fid = t1.fid") .append(" LEFT JOIN t_cdm_draftbill_e t4 ON t4.fid = t1.fid")
.append(" LEFT JOIN t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid") .append(" LEFT JOIN t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid")
.append(" LEFT JOIN t_cdm_drafttradebill t2 ON t2.fid = t3.fid") .append(" LEFT JOIN t_cdm_drafttradebill t2 ON t2.fid = t3.fid")
.append(" WHERE t1.fsource <> 'cdm' AND t2.ftradetype = 'collect' AND t2.fbillstatus = 'C'"); .append(" WHERE t2.ftradetype = 'collect' AND t2.fbillstatus = 'C'");
addDateFilter(date, date0String, sql); addDateFilter(sDate, eDate, sMonthDate, eMonthDate, sql);
return DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sql.toString()); return DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sql.toString());
} }
//质押 //质押
private DataSet getPledgeData(Object date, Object date0String) { private DataSet getPledgeData(Object sDate, Object eDate, Object sMonthDate, Object eMonthDate) {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("/*dialect*/ SELECT\n") sql.append("/*dialect*/ SELECT\n")
.append(" pjid4,\n") .append(" pjid4,\n")
@ -530,7 +590,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
.append(" SUM(pledgeamt) AS shkd_yzyje\n") .append(" SUM(pledgeamt) AS shkd_yzyje\n")
.append(" FROM (\n") .append(" FROM (\n")
.append(" SELECT\n") .append(" SELECT\n")
.append(" t1.fid AS pjid4,\n") .append(" t1.fdraftbillno AS pjid4,\n")
.append(" t2.fid AS t2id4,\n") .append(" t2.fid AS t2id4,\n")
.append(" t2.ftradetype AS tradetype4,\n") .append(" t2.ftradetype AS tradetype4,\n")
.append(" t2.fpledgeetext AS pledgename,\n") .append(" t2.fpledgeetext AS pledgename,\n")
@ -539,10 +599,9 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
.append(" FROM t_cdm_draftbill t1\n") .append(" FROM t_cdm_draftbill t1\n")
.append(" LEFT JOIN t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid\n") .append(" LEFT JOIN t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid\n")
.append(" LEFT JOIN t_cdm_drafttradebill t2 ON t2.fid = t3.fid\n") .append(" LEFT JOIN t_cdm_drafttradebill t2 ON t2.fid = t3.fid\n")
.append(" WHERE t1.fsource <> 'cdm'\n") .append(" WHERE t2.ftradetype = 'pledge' AND t2.fbillstatus = 'C'\n");
.append(" AND t2.ftradetype = 'pledge' AND t2.fbillstatus = 'C'\n");
addDateFilter(date, date0String, sql); addDateFilter(sDate, eDate, sMonthDate, eMonthDate, sql);
sql.append(" ) src\n") sql.append(" ) src\n")
.append(" GROUP BY pjid4;"); .append(" GROUP BY pjid4;");
@ -551,7 +610,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
} }
//质押解除 //质押解除
private DataSet getRePledgeData(Object date, Object date0String) { private DataSet getRePledgeData(Object sDate, Object eDate, Object sMonthDate, Object eMonthDate) {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("/*dialect*/ SELECT \n") sql.append("/*dialect*/ SELECT \n")
.append(" pjid6,\n") .append(" pjid6,\n")
@ -568,7 +627,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
.append(" ) WITHIN GROUP (ORDER BY bizdate) AS shkd_zyjcje\n") .append(" ) WITHIN GROUP (ORDER BY bizdate) AS shkd_zyjcje\n")
.append(" FROM (\n") .append(" FROM (\n")
.append(" SELECT \n") .append(" SELECT \n")
.append(" t1.fid AS pjid6,\n") .append(" t1.fdraftbillno AS pjid6,\n")
.append(" t2.fid AS t2id6,\n") .append(" t2.fid AS t2id6,\n")
.append(" t2.ftradetype AS tradetype4,\n") .append(" t2.ftradetype AS tradetype4,\n")
.append(" t2.fpledgeetext AS pledgename,\n") .append(" t2.fpledgeetext AS pledgename,\n")
@ -577,9 +636,9 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
.append(" FROM t_cdm_draftbill t1\n") .append(" FROM t_cdm_draftbill t1\n")
.append(" LEFT JOIN t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid\n") .append(" LEFT JOIN t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid\n")
.append(" LEFT JOIN t_cdm_drafttradebill t2 ON t2.fid = t3.fid\n") .append(" LEFT JOIN t_cdm_drafttradebill t2 ON t2.fid = t3.fid\n")
.append(" WHERE t1.fsource <> 'cdm' AND t2.ftradetype = 'rlspledge' AND t2.fbillstatus = 'C'\n"); .append(" WHERE t2.ftradetype = 'rlspledge' AND t2.fbillstatus = 'C'\n");
addDateFilter(date, date0String, sql); addDateFilter(sDate, eDate, sMonthDate, eMonthDate, sql);
sql.append(" ) src\n") sql.append(" ) src\n")
.append(" GROUP BY pjid6;"); .append(" GROUP BY pjid6;");
@ -600,7 +659,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
" AS shkd_zyje\n" + " AS shkd_zyje\n" +
" FROM (\n" + " FROM (\n" +
" SELECT \n" + " SELECT \n" +
" t1.fid AS pjid5,\n" + " t1.fdraftbillno AS pjid5,\n" +
" t1.fbillno AS billno,\n" + " t1.fbillno AS billno,\n" +
" t2.fbizdate,\n" + " t2.fbizdate,\n" +
" t3.fs_billamount,\n" + " t3.fs_billamount,\n" +
@ -610,9 +669,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
" ON t1.fid = t3.fdraftbillid\n" + " ON t1.fid = t3.fdraftbillid\n" +
" LEFT JOIN t_cdm_drafttradebill t2 \n" + " LEFT JOIN t_cdm_drafttradebill t2 \n" +
" ON t2.fid = t3.fid\n" + " ON t2.fid = t3.fid\n" +
" WHERE \n" + " WHERE t2.ftradetype IN ('pledge', 'rlspledge') AND t2.fbillstatus = 'C'\n" +
" t1.fsource <> 'cdm' \n" +
" AND t2.ftradetype IN ('pledge', 'rlspledge') AND t2.fbillstatus = 'C'\n" +
" ) src\n" + " ) src\n" +
" GROUP BY pjid5;"; " GROUP BY pjid5;";
@ -622,18 +679,24 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
/** /**
* 添加日期过滤条件到SQL语句中 * 添加日期过滤条件到SQL语句中
* *
* @param date 业务处理月份 * @param sDate 业务处理开始日期
* @param date0String 业务发生月 * @param eDate 业务处理结束日期
* @param sql SQL语句构建器用于拼接过滤条件 * @param sMonthDate 业务发生开始日期
* @param eMonthDate 业务发生结束日期
* @param sql SQL语句构建器用于拼接过滤条件
*/ */
private void addDateFilter(Object date, Object date0String, StringBuilder sql) { private void addDateFilter(Object sDate, Object eDate, Object sMonthDate, Object eMonthDate, StringBuilder sql) {
if (date0String != null && date == null) { if (sMonthDate != null && sDate == null) {
sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM') = '").append(date0String).append("'\n"); sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM-DD hh:mm:ss') >= '").append(sMonthDate).append("'\n");
} else if (date != null && date0String == null) { sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM-DD hh:mm:ss') < '").append(eMonthDate).append("'\n");
sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM') = '").append(date).append("'\n"); } else if (sDate != null && sMonthDate == null) {
} else if (date != null) { sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM-DD hh:mm:ss') >= '").append(sDate).append("'\n");
sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM') = '").append(date).append("'\n"); sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM-DD hh:mm:ss') < '").append(eDate).append("'\n");
sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM') = '").append(date0String).append("'\n"); } else if (sDate != null) {
sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM-DD hh:mm:ss') >= '").append(sDate).append("'\n");
sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM-DD hh:mm:ss') < '").append(eDate).append("'\n");
sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM-DD hh:mm:ss') >= '").append(sMonthDate).append("'\n");
sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM-DD hh:mm:ss') < '").append(eMonthDate).append("'\n");
} }
} }