parent
7a5e390d20
commit
389ea41304
|
@ -15,6 +15,7 @@ import kd.bos.servicehelper.QueryServiceHelper;
|
|||
import kd.bos.servicehelper.permission.PermissionServiceHelper;
|
||||
import shkd.sys.sys.plugin.report.util.ReportUtils;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -36,17 +37,21 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
QFilter qFilter1 = new QFilter("source", QCP.not_equals, "cdm");
|
||||
QFilter qFilter2 = new QFilter("company", QCP.in, hasPermOrgS);
|
||||
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
|
||||
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," +
|
||||
" issuedate as shkd_cprq, draftbillexpiredate as shkd_pjdqr,draftbilltype.name as shkd_pjlx,description as shkd_bz";
|
||||
|
||||
Object type = null;
|
||||
Object date1 = null;
|
||||
Object date2 = null;
|
||||
Object date0 = null;
|
||||
Object sdate11 = null;
|
||||
Object edate11 = null;
|
||||
Object sdate22 = null;
|
||||
Object edate22 = null;
|
||||
Object sdate00 = null;
|
||||
Object edate00 = null;
|
||||
|
||||
//获取所有过滤控件的值
|
||||
List<QFilter> listQFilter = ReportUtils.getListQFilter(reportQueryParam);
|
||||
|
@ -63,19 +68,34 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
type = qFilter.getValue();
|
||||
}
|
||||
break;
|
||||
case "shkd_date1":
|
||||
case "sdate11":
|
||||
if (Objects.nonNull(qFilter.getValue())) {
|
||||
date1 = qFilter.getValue();
|
||||
sdate11 = qFilter.getValue();
|
||||
}
|
||||
break;
|
||||
case "shkd_date2":
|
||||
case "edate11":
|
||||
if (Objects.nonNull(qFilter.getValue())) {
|
||||
date2 = qFilter.getValue();
|
||||
edate11 = qFilter.getValue();
|
||||
}
|
||||
break;
|
||||
case "shkd_date0":
|
||||
case "sdate22":
|
||||
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;
|
||||
default:
|
||||
|
@ -83,8 +103,8 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
}
|
||||
}
|
||||
// 主表按收票月份过滤
|
||||
if (date1 != null) {
|
||||
qFilter0 = qFilter0.and(createDateRangeFilter(date1));
|
||||
if (sdate11 != null) {
|
||||
qFilter0 = qFilter0.and(createDateRangeFilter(sdate11, edate11));
|
||||
}
|
||||
// 主表所有满足基本过滤条件的数据
|
||||
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());
|
||||
|
||||
// 业务处理月
|
||||
String date2String = getYearMonth(date2);
|
||||
String sdate22s = convertDateString(sdate22, false);
|
||||
String edate22s = convertDateString(edate22, true);
|
||||
//主表数据的基础上查询其子表数据
|
||||
DataSet disCountData = getDisCountData(date2String, null);
|
||||
DataSet pledgeData = getPledgeData(date2String, null);
|
||||
DataSet rePledgeData = getRePledgeData(date2String, null);
|
||||
DataSet endorseData = getEndorseData(date2String, null);
|
||||
DataSet collectData = getCollectData(date2String, null);
|
||||
DataSet disCountData = getDisCountData(null, null, null, null);
|
||||
|
||||
DataSet pledgeData = getPledgeData(null, null, null, null);
|
||||
DataSet rePledgeData = getRePledgeData(null, null, null, null);
|
||||
DataSet endorseData = getEndorseData(null, null, null, null);
|
||||
DataSet collectData = getCollectData(null, null, null, null);
|
||||
|
||||
//当前质押金额
|
||||
DataSet pledgeCyData = getPledgeCyData();
|
||||
String[] newFieldNames0 = ReportUtils.ExpansionArray(fieldNames, Collections.singletonList("shkd_zyje"));
|
||||
//拼接1
|
||||
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();
|
||||
|
||||
//拼接贴现、质押、质押解除、背书、托收相关字段
|
||||
|
@ -129,39 +151,36 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
.join(rePledgeData, JoinType.LEFT)
|
||||
.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、业务发生月——业务处理月
|
||||
DataSet disCountData1 = getDisCountData(date2String, date0String);
|
||||
DataSet disCountData1 = getDisCountData(sdate22s, edate22s, sdate00s, edate00s);
|
||||
List<String> pjid3 = ORM.create().toPlainDynamicObjectCollection(disCountData1.copy()).stream()
|
||||
.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()
|
||||
.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()
|
||||
.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()
|
||||
.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()
|
||||
.map(obj -> obj.getString("pjid1")).collect(Collectors.toList());
|
||||
pjid4.addAll(pjid6);
|
||||
|
||||
// 实现date0、date1、date2的独立和组合过滤
|
||||
idLists = new ArrayList<>();
|
||||
//所有满足条件的票据id集合
|
||||
List<String> idLists = new ArrayList<>();
|
||||
|
||||
// 判断是否有日期过滤条件
|
||||
boolean hasDateFilter = (date0 != null || date1 != null || date2 != null);
|
||||
boolean hasDateFilter = (sdate00 != null || sdate11 != null || sdate22 != null);
|
||||
|
||||
if (hasDateFilter) {
|
||||
Set<String> finalIds = new HashSet<>();
|
||||
boolean needIntersection = (date0 != null && date2 != null);
|
||||
boolean needIntersection = (sdate00 != null && sdate22 != null);
|
||||
|
||||
// 处理业务处理月 (date2) - 子表业务数据
|
||||
if (needIntersection) {
|
||||
|
@ -172,7 +191,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
processIds.addAll(pjid2); // 背书
|
||||
processIds.addAll(pjid4); // 质押和质押解除
|
||||
finalIds.addAll(processIds);
|
||||
} else if(date0 != null || date2 != null){
|
||||
} else if (sdate00 != null || sdate22 != null) {
|
||||
// 不需要交集时,直接添加
|
||||
idLists.addAll(pjid3); // 贴现
|
||||
idLists.addAll(pjid1); // 托收
|
||||
|
@ -181,9 +200,9 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
}
|
||||
|
||||
// 处理业务发生月 (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(),
|
||||
"cdm_receivablebill", selectFields, new QFilter[]{tempFilter}, null);
|
||||
List<String> pjid0Biz = ORM.create().toPlainDynamicObjectCollection(draftBillDataFilter.copy()).stream()
|
||||
|
@ -207,18 +226,18 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
idLists = new ArrayList<>(finalIds);
|
||||
}
|
||||
// 去重并应用过滤
|
||||
if (!idLists.isEmpty()) {
|
||||
List<String> uniqueIds = idLists.stream().distinct().collect(Collectors.toList());
|
||||
String ids = String.join(",", uniqueIds);
|
||||
List<String> uniqueIds = idLists.stream().distinct().collect(Collectors.toList());
|
||||
String ids = toSqlInClause(uniqueIds);
|
||||
if (!ids.isEmpty()) {
|
||||
result = result.where("id in(" + ids + ")");
|
||||
}
|
||||
|
||||
} else {
|
||||
// 没有任何日期过滤条件时,显示所有主表数据
|
||||
idLists.addAll(pjid0);
|
||||
if (!idLists.isEmpty()) {
|
||||
List<String> uniqueIds = idLists.stream().distinct().collect(Collectors.toList());
|
||||
String ids = String.join(",", uniqueIds);
|
||||
List<String> uniqueIds = idLists.stream().distinct().collect(Collectors.toList());
|
||||
String ids = toSqlInClause(uniqueIds);
|
||||
if (!ids.isEmpty()) {
|
||||
result = result.where("id in(" + ids + ")");
|
||||
}
|
||||
}
|
||||
|
@ -229,7 +248,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
String[] typeArray = typeStr.replaceFirst("^,", "").replaceFirst(",$", "").split(",");
|
||||
// 处理type值,将其转换为列表形式
|
||||
List<String> typeList = Arrays.asList(typeArray);
|
||||
if (!typeList.isEmpty()){
|
||||
if (!typeList.isEmpty()) {
|
||||
//根据type值往typeList中添加的票据id实现type过滤
|
||||
idLists = new ArrayList<>();
|
||||
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("4")) idLists.addAll(pjid4);
|
||||
//最终筛选,type不为空时,根据type进行筛选,type为空时,根据所有票据id进行筛选
|
||||
if (!idLists.isEmpty()) {
|
||||
List<String> collect = idLists.stream().distinct().collect(Collectors.toList());
|
||||
String ids = String.join(",", collect);
|
||||
List<String> uniqueIds = idLists.stream().distinct().collect(Collectors.toList());
|
||||
String ids = toSqlInClause(uniqueIds);
|
||||
if (!ids.isEmpty()) {
|
||||
result = result.where("id in(" + ids + ")");
|
||||
}
|
||||
}
|
||||
|
@ -248,6 +267,22 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
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 日期对象,用于确定年月范围
|
||||
* @return QFilter 日期范围过滤器,包含指定月份的开始和结束日期条件
|
||||
* @param sdate 起始日期,不能为空
|
||||
* @param edate 结束日期,不能为空,该日期会转换为下一天进行比较
|
||||
* @return 返回组合后的日期范围过滤器
|
||||
*/
|
||||
private QFilter createDateRangeFilter(Object date) {
|
||||
String yearMonth = getYearMonth(date);
|
||||
String startDate = yearMonth + "-01"; // 月份第一天
|
||||
private QFilter createDateRangeFilter(Object sdate, Object edate) {
|
||||
// 转换起始日期和结束日期
|
||||
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"; // 月份第一天
|
||||
}
|
||||
String endDate = getMonthEndDateString(yearMonth); // 月份最后一天
|
||||
// 处理起始日期
|
||||
QFilter filter1 = new QFilter("bizdate", QCP.large_equals, formattedSdate);
|
||||
QFilter filter2 = new QFilter("bizdate", QCP.less_equals, formattedEdate);
|
||||
|
||||
// 构造日期范围条件:大于上月的最后一天(即大于等于本月第一天)
|
||||
QFilter dateFilter1 = new QFilter("bizdate", QCP.large_equals, startDate);
|
||||
// 构造日期范围条件:小于下月的第一天(即小于等于本月最后一天的下一天)
|
||||
QFilter dateFilter2 = new QFilter("bizdate", QCP.less_than, getNextDay(endDate));
|
||||
// 构造日期范围条件:大于上月的最后一天(即大于等于本月第一天)
|
||||
return dateFilter1.and(dateFilter2);
|
||||
return filter1.and(filter2);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将 "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();
|
||||
sql.append("/*dialect*/ SELECT ")
|
||||
.append(" pjid3,\n")
|
||||
|
@ -430,7 +492,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
.append(" SUM(discamt) AS shkd_txhk\n")
|
||||
.append(" FROM (\n")
|
||||
.append(" SELECT\n")
|
||||
.append(" t1.fid AS pjid3,\n")
|
||||
.append(" t1.fdraftbillno AS pjid3,\n")
|
||||
.append(" t2.fid AS discountid,\n")
|
||||
.append(" t2.ftradetype AS discounttradetype,\n")
|
||||
.append(" t2.frecbodyname AS disfrecbodyname,\n")
|
||||
|
@ -441,10 +503,9 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
.append(" FROM t_cdm_draftbill t1\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(" WHERE t1.fsource <> 'cdm'\n")
|
||||
.append(" AND t2.ftradetype = 'discount' AND t2.fbillstatus = 'C'\n");
|
||||
.append(" WHERE t2.ftradetype = 'discount' AND t2.fbillstatus = 'C'\n");
|
||||
|
||||
addDateFilter(date, date0String, sql);
|
||||
addDateFilter(sDate, eDate, sMonthDate, eMonthDate, sql);
|
||||
|
||||
sql.append(" ) src\n")
|
||||
.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();
|
||||
sql.append("/*dialect*/ SELECT\n")
|
||||
.append(" pjid2,\n")
|
||||
|
@ -470,7 +531,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
.append(" SUM(endorseamt) AS shkd_bsje\n")
|
||||
.append(" FROM (\n")
|
||||
.append(" SELECT\n")
|
||||
.append(" t1.fid AS pjid2,\n")
|
||||
.append(" t1.fdraftbillno AS pjid2,\n")
|
||||
.append(" t2.fid AS discountid,\n")
|
||||
.append(" t2.ftradetype AS discounttradetype,\n")
|
||||
.append(" t2.fbeendorsortext AS endorsename,\n")
|
||||
|
@ -479,10 +540,9 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
.append(" FROM t_cdm_draftbill t1\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(" WHERE t1.fsource <> 'cdm'\n")
|
||||
.append(" AND t2.ftradetype = 'endorse' AND t2.fbillstatus = 'C'\n");
|
||||
.append(" WHERE t2.ftradetype = 'endorse' AND t2.fbillstatus = 'C'\n");
|
||||
|
||||
addDateFilter(date, date0String, sql);
|
||||
addDateFilter(sDate, eDate, sMonthDate, eMonthDate, sql);
|
||||
|
||||
sql.append(" ) src\n")
|
||||
.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();
|
||||
sql.append("/*dialect*/ SELECT ")
|
||||
.append(" t1.fid AS pjid1,")
|
||||
.append(" t1.fdraftbillno AS pjid1,")
|
||||
.append(" t2.fid AS discountid,")
|
||||
.append(" t2.ftradetype AS discounttradetype,")
|
||||
.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_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid")
|
||||
.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());
|
||||
}
|
||||
|
||||
//质押
|
||||
private DataSet getPledgeData(Object date, Object date0String) {
|
||||
private DataSet getPledgeData(Object sDate, Object eDate, Object sMonthDate, Object eMonthDate) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("/*dialect*/ SELECT\n")
|
||||
.append(" pjid4,\n")
|
||||
|
@ -530,7 +590,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
.append(" SUM(pledgeamt) AS shkd_yzyje\n")
|
||||
.append(" FROM (\n")
|
||||
.append(" SELECT\n")
|
||||
.append(" t1.fid AS pjid4,\n")
|
||||
.append(" t1.fdraftbillno AS pjid4,\n")
|
||||
.append(" t2.fid AS t2id4,\n")
|
||||
.append(" t2.ftradetype AS tradetype4,\n")
|
||||
.append(" t2.fpledgeetext AS pledgename,\n")
|
||||
|
@ -539,10 +599,9 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
.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_drafttradebill t2 ON t2.fid = t3.fid\n")
|
||||
.append(" WHERE t1.fsource <> 'cdm'\n")
|
||||
.append(" AND t2.ftradetype = 'pledge' AND t2.fbillstatus = 'C'\n");
|
||||
.append(" WHERE t2.ftradetype = 'pledge' AND t2.fbillstatus = 'C'\n");
|
||||
|
||||
addDateFilter(date, date0String, sql);
|
||||
addDateFilter(sDate, eDate, sMonthDate, eMonthDate, sql);
|
||||
|
||||
sql.append(" ) src\n")
|
||||
.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();
|
||||
sql.append("/*dialect*/ SELECT \n")
|
||||
.append(" pjid6,\n")
|
||||
|
@ -568,7 +627,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
.append(" ) WITHIN GROUP (ORDER BY bizdate) AS shkd_zyjcje\n")
|
||||
.append(" FROM (\n")
|
||||
.append(" SELECT \n")
|
||||
.append(" t1.fid AS pjid6,\n")
|
||||
.append(" t1.fdraftbillno AS pjid6,\n")
|
||||
.append(" t2.fid AS t2id6,\n")
|
||||
.append(" t2.ftradetype AS tradetype4,\n")
|
||||
.append(" t2.fpledgeetext AS pledgename,\n")
|
||||
|
@ -577,9 +636,9 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
.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_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")
|
||||
.append(" GROUP BY pjid6;");
|
||||
|
@ -600,7 +659,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
" AS shkd_zyje\n" +
|
||||
" FROM (\n" +
|
||||
" SELECT \n" +
|
||||
" t1.fid AS pjid5,\n" +
|
||||
" t1.fdraftbillno AS pjid5,\n" +
|
||||
" t1.fbillno AS billno,\n" +
|
||||
" t2.fbizdate,\n" +
|
||||
" t3.fs_billamount,\n" +
|
||||
|
@ -610,9 +669,7 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
" ON t1.fid = t3.fdraftbillid\n" +
|
||||
" LEFT JOIN t_cdm_drafttradebill t2 \n" +
|
||||
" ON t2.fid = t3.fid\n" +
|
||||
" WHERE \n" +
|
||||
" t1.fsource <> 'cdm' \n" +
|
||||
" AND t2.ftradetype IN ('pledge', 'rlspledge') AND t2.fbillstatus = 'C'\n" +
|
||||
" WHERE t2.ftradetype IN ('pledge', 'rlspledge') AND t2.fbillstatus = 'C'\n" +
|
||||
" ) src\n" +
|
||||
" GROUP BY pjid5;";
|
||||
|
||||
|
@ -622,18 +679,24 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl
|
|||
/**
|
||||
* 添加日期过滤条件到SQL语句中
|
||||
*
|
||||
* @param date 业务处理月份
|
||||
* @param date0String 业务发生月
|
||||
* @param sql SQL语句构建器,用于拼接过滤条件
|
||||
* @param sDate 业务处理开始日期
|
||||
* @param eDate 业务处理结束日期
|
||||
* @param sMonthDate 业务发生开始日期
|
||||
* @param eMonthDate 业务发生结束日期
|
||||
* @param sql SQL语句构建器,用于拼接过滤条件
|
||||
*/
|
||||
private void addDateFilter(Object date, Object date0String, StringBuilder sql) {
|
||||
if (date0String != null && date == null) {
|
||||
sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM') = '").append(date0String).append("'\n");
|
||||
} else if (date != null && date0String == null) {
|
||||
sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM') = '").append(date).append("'\n");
|
||||
} else if (date != null) {
|
||||
sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM') = '").append(date).append("'\n");
|
||||
sql.append(" AND TO_CHAR(t2.FBIZDATE, 'YYYY-MM') = '").append(date0String).append("'\n");
|
||||
private void addDateFilter(Object sDate, Object eDate, Object sMonthDate, Object eMonthDate, StringBuilder sql) {
|
||||
if (sMonthDate != null && sDate == null) {
|
||||
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");
|
||||
} else if (sDate != null && sMonthDate == 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");
|
||||
} 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");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue