package kd.cosmic.jkjt.tmc.am.report; import kd.bos.orm.query.QFilter; import kd.tmc.am.report.bankacct.data.usage.ConcreteStrategyJournal; import kd.tmc.fbp.common.util.EmptyUtil; import java.math.BigDecimal; import java.math.BigInteger; import java.util.List; import java.util.Map; public class ConcreteStrategyJournalEx extends ConcreteStrategyJournal { public ConcreteStrategyJournalEx(List qFilterList, Map paramMap, String dimension) { super(qFilterList, paramMap, dimension); } public BigDecimal getBigDecimal(Object objValue) { BigDecimal ret = null; if(objValue == null || objValue.equals("")){ return BigDecimal.ZERO; } if(objValue instanceof BigDecimal) { ret = (BigDecimal) objValue; } else if( objValue instanceof String ) { ret = new BigDecimal( (String) objValue ); } else if( objValue instanceof BigInteger) { ret = new BigDecimal( (BigInteger) objValue ); } else if( objValue instanceof Number ) { ret = new BigDecimal( ((Number)objValue).doubleValue() ); } else { throw new ClassCastException("Not possible to coerce ["+ objValue + "] from class "+ objValue.getClass()+" into a BigDecimal."); } return ret; } @Override public void setFilter() { super.setFilter(); if (!EmptyUtil.isEmpty(paramMap.get("nckd_amountitem"))) { setAmountFilter(); } } private void setAmountFilter(){ String flow = ""; if (!EmptyUtil.isEmpty(this.paramMap.get("filter_flow"))) { flow = String.valueOf(this.paramMap.get("filter_flow")); } String amountField = "debitamount"; switch ((String)paramMap.get("nckd_amountitem")) { case "0"://等于 if (paramMap.get("nckd_amount") != null) { setAmountFilterSingle(flow, "="); } break; case "1"://大于 if (paramMap.get("nckd_amount") != null) { setAmountFilterSingle(flow, ">"); } break; case "2"://小于 if (paramMap.get("nckd_amount") != null) { setAmountFilterSingle(flow, "<"); } break; case "3"://介于 if (paramMap.get("nckd_stramount") != null) { super.getFilterList().add(new QFilter(amountField, ">=", getBigDecimal(paramMap.get("nckd_stramount")))); } if (paramMap.get("nckd_endamount") != null) { super.getFilterList().add(new QFilter(amountField, "<=", getBigDecimal(paramMap.get("nckd_endamount")))); } break; case "4"://不介于 QFilter qFilter = null; if (paramMap.get("nckd_stramount") != null) { qFilter = new QFilter(amountField, "<", getBigDecimal(paramMap.get("nckd_stramount"))); } if (paramMap.get("nckd_endamount") != null) { if(qFilter == null){ qFilter = new QFilter(amountField, ">", getBigDecimal(paramMap.get("nckd_endamount"))); } else { qFilter.or(new QFilter(amountField, ">", getBigDecimal(paramMap.get("nckd_endamount")))); } } super.getFilterList().add(qFilter); break; } } private void setAmountFilterSingle(String flow, String operator){ BigDecimal amount = getBigDecimal(paramMap.get("nckd_amount")); if ("in".equals(flow)) { super.getFilterList().add(new QFilter("creditamount", operator, amount)); } else if ("out".equals(flow)) { super.getFilterList().add(new QFilter("debitamount", operator, amount)); } else { QFilter qFilter = new QFilter("creditamount", operator, amount).and(new QFilter("creditamount", ">", 0)); qFilter.or(new QFilter("debitamount", operator, amount).and(new QFilter("debitamount", ">", 0))); super.getFilterList().add(qFilter); } } private void setAmountFilterBetween(String flow){ BigDecimal amount = getBigDecimal(paramMap.get("nckd_amount")); if ("in".equals(flow)) { if (paramMap.get("nckd_stramount") != null) { super.getFilterList().add(new QFilter("creditamount", ">=", getBigDecimal(paramMap.get("nckd_stramount"))).and(new QFilter("creditamount", ">", 0))); } if (paramMap.get("nckd_endamount") != null) { super.getFilterList().add(new QFilter("creditamount", "<=", getBigDecimal(paramMap.get("nckd_endamount"))).and(new QFilter("creditamount", ">", 0))); } } else if ("out".equals(flow)) { if (paramMap.get("nckd_stramount") != null) { super.getFilterList().add(new QFilter("debitamount", ">=", getBigDecimal(paramMap.get("nckd_stramount"))).and(new QFilter("debitamount", ">", 0))); } if (paramMap.get("nckd_endamount") != null) { super.getFilterList().add(new QFilter("debitamount", "<=", getBigDecimal(paramMap.get("nckd_endamount"))).and(new QFilter("debitamount", ">", 0))); } } else { if (paramMap.get("nckd_stramount") != null) { QFilter qFilter = new QFilter("creditamount", ">=", getBigDecimal(paramMap.get("nckd_stramount"))).and(new QFilter("creditamount", ">", 0)); qFilter.or(new QFilter("debitamount", ">=", getBigDecimal(paramMap.get("nckd_stramount"))).and(new QFilter("debitamount", ">", 0))); super.getFilterList().add(qFilter); } if (paramMap.get("nckd_endamount") != null) { QFilter qFilter = new QFilter("creditamount", "<=", getBigDecimal(paramMap.get("nckd_endamount"))).and(new QFilter("creditamount", ">", 0)); qFilter.or(new QFilter("debitamount", "<=", getBigDecimal(paramMap.get("nckd_endamount"))).and(new QFilter("debitamount", ">", 0))); super.getFilterList().add(qFilter); } } } private void setAmountFilterNotBetween(String flow){ QFilter qFilter = null; if ("in".equals(flow)) { if (paramMap.get("nckd_stramount") != null) { qFilter = new QFilter("creditamount", "<", getBigDecimal(paramMap.get("nckd_stramount"))).and(new QFilter("creditamount", ">", 0)); } if (paramMap.get("nckd_endamount") != null) { if(qFilter == null){ qFilter = new QFilter("creditamount", ">", getBigDecimal(paramMap.get("nckd_endamount"))).and(new QFilter("creditamount", ">", 0)); } else { qFilter.or(new QFilter("creditamount", ">", getBigDecimal(paramMap.get("nckd_endamount"))).and(new QFilter("creditamount", ">", 0))); } } if(qFilter != null) { super.getFilterList().add(qFilter); } } else if ("out".equals(flow)) { if (paramMap.get("nckd_stramount") != null) { qFilter = new QFilter("debitamount", "<", getBigDecimal(paramMap.get("nckd_stramount"))).and(new QFilter("debitamount", ">", 0)); } if (paramMap.get("nckd_endamount") != null) { if(qFilter == null){ qFilter = new QFilter("debitamount", ">", getBigDecimal(paramMap.get("nckd_endamount"))).and(new QFilter("debitamount", ">", 0)); } else { qFilter.or(new QFilter("debitamount", ">", getBigDecimal(paramMap.get("nckd_endamount"))).and(new QFilter("debitamount", ">", 0))); } } if(qFilter != null) { super.getFilterList().add(qFilter); } } else { if (paramMap.get("nckd_stramount") != null) { qFilter = new QFilter("creditamount", "<", getBigDecimal(paramMap.get("nckd_stramount"))).and(new QFilter("creditamount", ">", 0)); qFilter.or(new QFilter("debitamount", "<", getBigDecimal(paramMap.get("nckd_stramount"))).and(new QFilter("debitamount", ">", 0))); } if (paramMap.get("nckd_endamount") != null) { if(qFilter == null){ qFilter = new QFilter("creditamount", ">", getBigDecimal(paramMap.get("nckd_endamount"))).and(new QFilter("creditamount", ">", 0)); } else { qFilter.or(new QFilter("creditamount", ">", getBigDecimal(paramMap.get("nckd_endamount"))).and(new QFilter("creditamount", ">", 0))); } qFilter.or(new QFilter("debitamount", ">", getBigDecimal(paramMap.get("nckd_endamount"))).and(new QFilter("debitamount", ">", 0))); } if(qFilter != null) { super.getFilterList().add(qFilter); } } } }