From 389ea41304f5d5bbeac139ceaf516104719430e6 Mon Sep 17 00:00:00 2001 From: wenlukang1 Date: Mon, 25 Aug 2025 17:29:18 +0800 Subject: [PATCH] feat: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 应收票据台账报表2 --- .../BillReceivableReportListDataPlugin.java | 263 +++++++++++------- 1 file changed, 163 insertions(+), 100 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/BillReceivableReportListDataPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/BillReceivableReportListDataPlugin.java index 5808e3d..1530fcc 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/BillReceivableReportListDataPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/BillReceivableReportListDataPlugin.java @@ -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 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 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 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 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 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 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 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 idLists = new ArrayList<>(); // 判断是否有日期过滤条件 - boolean hasDateFilter = (date0 != null || date1 != null || date2 != null); + boolean hasDateFilter = (sdate00 != null || sdate11 != null || sdate22 != null); if (hasDateFilter) { Set 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 pjid0Biz = ORM.create().toPlainDynamicObjectCollection(draftBillDataFilter.copy()).stream() @@ -207,18 +226,18 @@ public class BillReceivableReportListDataPlugin extends AbstractReportListDataPl idLists = new ArrayList<>(finalIds); } // 去重并应用过滤 - if (!idLists.isEmpty()) { - List uniqueIds = idLists.stream().distinct().collect(Collectors.toList()); - String ids = String.join(",", uniqueIds); + List 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 uniqueIds = idLists.stream().distinct().collect(Collectors.toList()); - String ids = String.join(",", uniqueIds); + List 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 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 collect = idLists.stream().distinct().collect(Collectors.toList()); - String ids = String.join(",", collect); + List 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 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"); } }