Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java =================================================================== diff -u -r33273 -r33398 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 33273) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 33398) @@ -419,7 +419,7 @@ * 2014-9-3 * @throws ParseException */ - public List getUseRecordItemDataSource(Map requestParameters) throws ParseException; + public List getUseRecordItemDataSource(Map requestParameters) throws ParseException; /** * @param sql Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r33383 -r33398 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 33383) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 33398) @@ -1474,6 +1474,15 @@ } } } + String enableExtendedFieldsUseRecordEntryDetailReports = CssdUtils.getSystemSetConfigByName("enableExtendedFieldsUseRecordEntryDetailReports"); + if(StringUtils.isNotBlank(enableExtendedFieldsUseRecordEntryDetailReports)){ + requestParameters.put("enableExtendedFieldsUseRecordEntryDetailReports", enableExtendedFieldsUseRecordEntryDetailReports); + JSONArray configArr = JSONArray.fromObject(enableExtendedFieldsUseRecordEntryDetailReports); + if(configArr != null){ + requestParameters.put("jasperreportName", + "extendedFieldsUseRecordEntryDetailReport.jasper"); + } + } return jasperReportManager.getUseRecordItemDataSource(requestParameters); }else if (reportName.equals("useRecordOperatorTotalView")) {//使用记录人员汇总报表 return getUserRecordOperatorTotalViewDataSource(); Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r33396 -r33398 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33396) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33398) @@ -11215,71 +11215,72 @@ * @param showOther 是否显示同单明细 * @return */ - private String getSqlByGoodsId(String goodsId, String goodsType, boolean showOther) { + private String getSqlByGoodsId(String expensiveGoodIds, String disposableGoodIds, String tousseInstanceIds , boolean showOther) { String tousseInstanceSql = - "select ur.id,ur.depart,ur.patientName,ur.hospitalNum,ur.treatmentNum,ur.operator,ur.enteringDate,ur.doctorName,ur.operation," + "select '器械包' selectType, ur.id,ur.depart,ur.patientName,ur.hospitalNum,ur.treatmentNum,ur.operator,ur.enteringDate,ur.doctorName,ur.operation," + "ti.tousseName name,'' specification,1 amount,bd.barcode barcode,ti.idCardInstanceBarcode idCardInstanceBarcode,ti.useAmount useAmount " - + "from useRecord ur " + + ",ur.ascriptionDepartment from useRecord ur " + "inner join tousseInstance ti on ti.useRecord_id=ur.id " + "inner join barcodeDevice bd on bd.id=ti.id " + "where 1=1 " ; String disposableGoodsSql = - "select ur.id,ur.depart,ur.patientName,ur.hospitalNum,ur.treatmentNum,ur.operator,ur.enteringDate,ur.doctorName,ur.operation," + "select '一次性物品' selectType,ur.id,ur.depart,ur.patientName,ur.hospitalNum,ur.treatmentNum,ur.operator,ur.enteringDate,ur.doctorName,ur.operation," + "udgi.name name,'' specification,udgi.amount amount,udgi.barcode barcode,'' idCardInstanceBarcode,0 useAmount " - + "from useRecord ur " + + ",ur.ascriptionDepartment from useRecord ur " + "inner join useDiposableGoodsItem udgi on udgi.userecord_id=ur.id " + "where 1=1 "; String expensiveGoodsSql = - "select ur.id,ur.depart,ur.patientName,ur.hospitalNum,ur.treatmentNum,ur.operator,ur.enteringDate,ur.doctorName,ur.operation," + "select '高值耗材' selectType,ur.id,ur.depart,ur.patientName,ur.hospitalNum,ur.treatmentNum,ur.operator,ur.enteringDate,ur.doctorName,ur.operation," + "eg.name name,eg.specification specification,1 amount,bd.barcode barcode,'' idCardInstanceBarcode,0 useAmount " - + "from useRecord ur " + + ",ur.ascriptionDepartment from useRecord ur " + "inner join ExpensiveGoodsInstance egi on egi.userecordId=ur.id " + "inner join ExpensiveGoods eg on eg.id=egi.expensiveGoods_id " + "inner join barcodeDevice bd on bd.id=egi.id " + "where 1=1 "; String tempSql = ""; //如果goodsId不为空则则按照goodsId查,否则查全部的一次性物品和全部的器械包,此时不显示同单明细,否则有交叉 - if (DatabaseUtil.isPoIdValid(goodsId)) { - //1、一次性物品 - if (StringTools.equals(DisposableGoods.TYPE_NAME, goodsType)) { - if(showOther){ //显示同单的其他物品,则需要查出所有使用记录的id,找出每一个使用记录的所有物品(一次性物品和器械包) - String useRecordIds = "select distinct userecord_id from useDiposableGoodsItem where disposableGoodsId=" + goodsId; - disposableGoodsSql += " and ur.id in(" + useRecordIds + ") "; - disposableGoodsSql += " union all " + tousseInstanceSql + " and ur.id in (" + useRecordIds + ") "; - disposableGoodsSql += " union all " + expensiveGoodsSql + " and ur.id in (" + useRecordIds + ") "; - }else{ - disposableGoodsSql += "and udgi.disposableGoodsId=" + goodsId; - } - tempSql = disposableGoodsSql; - //2、高值耗材 - } else if (StringTools.equals(ExpensiveGoods.TYPE_NAME, goodsType)) { - if(showOther){ //显示同单的其他物品,则需要查出所有使用记录的id,找出每一个使用记录的所有物品(一次性物品和器械包) - String useRecordIds = "select distinct egi.userecordId from ExpensiveGoodsInstance egi join ExpensiveGoods eg on eg.id=egi.expensiveGoods_id where eg.id=" + goodsId; - expensiveGoodsSql += " and ur.id in(" + useRecordIds + ") "; - expensiveGoodsSql += " union all " + tousseInstanceSql + " and ur.id in (" + useRecordIds + ") "; - expensiveGoodsSql += " union all " + disposableGoodsSql + " and ur.id in (" + useRecordIds + ") "; - }else{ - expensiveGoodsSql += " and eg.id=" + goodsId; - } - tempSql = expensiveGoodsSql; - //3、器械包 - } else { - //由于器械包的包定义的id,有可能是由其他包定义生成的(消毒物品\自定义器械包),而goodsId是祖先id,所以要先查出goodsId的后代id - String toussedefIds = "select id from tousseDefinition where ancestorID=" + goodsId; - if(showOther){ //显示同单的其他物品,则需要查出所有使用记录的id,找出每一个使用记录的所有物品(一次性物品和器械包) - String useRecordIds = "select distinct useRecord_id from tousseInstance where tousseDefinition_id in (" + toussedefIds + ") "; - tousseInstanceSql += " and ur.id in (" + useRecordIds + ") "; - tousseInstanceSql += " union all " + disposableGoodsSql + " and ur.id in (" + useRecordIds + ") "; - tousseInstanceSql += " union all " + expensiveGoodsSql + " and ur.id in (" + useRecordIds + ") "; - }else{ - tousseInstanceSql += " and ti.tousseDefinition_id in ( " + toussedefIds + " ) "; - } - tempSql = tousseInstanceSql; - } - } else { + //1、一次性物品 + if (StringUtils.isNotBlank(disposableGoodIds)) { + if(showOther){ //显示同单的其他物品,则需要查出所有使用记录的id,找出每一个使用记录的所有物品(一次性物品和器械包) + String useRecordIds = "select distinct userecord_id from useDiposableGoodsItem where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("disposableGoodsId", SqlUtils.splitStringToSet(disposableGoodIds, ";")); + disposableGoodsSql += " and ur.id in(" + useRecordIds + ") "; + disposableGoodsSql += " union all " + tousseInstanceSql + " and ur.id in (" + useRecordIds + ") "; + disposableGoodsSql += " union all " + expensiveGoodsSql + " and ur.id in (" + useRecordIds + ") "; + }else{ + disposableGoodsSql += "and " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("udgi.disposableGoodsId", SqlUtils.splitStringToSet(disposableGoodIds, ";")); + } + tempSql = disposableGoodsSql; + //2、高值耗材 + } + if (StringUtils.isNotBlank(expensiveGoodIds)) { + if(showOther){ //显示同单的其他物品,则需要查出所有使用记录的id,找出每一个使用记录的所有物品(一次性物品和器械包) + String useRecordIds = "select distinct egi.userecordId from ExpensiveGoodsInstance egi join ExpensiveGoods eg on eg.id=egi.expensiveGoods_id where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("eg.id", SqlUtils.splitStringToSet(disposableGoodIds, ";")); + expensiveGoodsSql += " and ur.id in(" + useRecordIds + ") "; + expensiveGoodsSql += " union all " + tousseInstanceSql + " and ur.id in (" + useRecordIds + ") "; + expensiveGoodsSql += " union all " + disposableGoodsSql + " and ur.id in (" + useRecordIds + ") "; + }else{ + expensiveGoodsSql += " and " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("eg.id", SqlUtils.splitStringToSet(disposableGoodIds, ";")); + } + tempSql = expensiveGoodsSql; + //3、器械包 + } + if (StringUtils.isNotBlank(tousseInstanceIds)) { + //由于器械包的包定义的id,有可能是由其他包定义生成的(消毒物品\自定义器械包),而goodsId是祖先id,所以要先查出goodsId的后代id + String toussedefIds = "select id from tousseDefinition where ancestorID=" + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("ancestorID", SqlUtils.splitStringToSet(disposableGoodIds, ";")); + if(showOther){ //显示同单的其他物品,则需要查出所有使用记录的id,找出每一个使用记录的所有物品(一次性物品和器械包) + String useRecordIds = "select distinct useRecord_id from tousseInstance where tousseDefinition_id in (" + toussedefIds + ") "; + tousseInstanceSql += " and ur.id in (" + useRecordIds + ") "; + tousseInstanceSql += " union all " + disposableGoodsSql + " and ur.id in (" + useRecordIds + ") "; + tousseInstanceSql += " union all " + expensiveGoodsSql + " and ur.id in (" + useRecordIds + ") "; + }else{ + tousseInstanceSql += " and ti.tousseDefinition_id in ( " + toussedefIds + " ) "; + } + tempSql = tousseInstanceSql; + } + if(StringUtils.isBlank(tempSql)){ tempSql = tousseInstanceSql + " union all " + disposableGoodsSql + " union all " + expensiveGoodsSql; } return tempSql; @@ -11293,24 +11294,24 @@ */ private String getSqlByBarcode(String barcode, boolean showOther) { String tousseInstanceSql = - "select ur.id,ur.depart,ur.patientName,ur.hospitalNum,ur.treatmentNum,ur.operator,ur.enteringDate,ur.doctorName,ur.operation," + "select '器械包' selectType,ur.id,ur.depart,ur.patientName,ur.hospitalNum,ur.treatmentNum,ur.operator,ur.enteringDate,ur.doctorName,ur.operation," + "ti.tousseName name, '' specification,1 amount,bd.barcode barcode,ti.idCardInstanceBarcode idCardInstanceBarcode,ti.useAmount useAmount " - + "from useRecord ur " + + ",ur.ascriptionDepartment from useRecord ur " + "inner join tousseInstance ti on ti.useRecord_id=ur.id " + "inner join barcodeDevice bd on bd.id=ti.id " + "where 1=1 " ; String disposableGoodsSql = - "select ur.id,ur.depart,ur.patientName,ur.hospitalNum,ur.treatmentNum,ur.operator,ur.enteringDate,ur.doctorName,ur.operation," + "select '一次性物品' selectType,ur.id,ur.depart,ur.patientName,ur.hospitalNum,ur.treatmentNum,ur.operator,ur.enteringDate,ur.doctorName,ur.operation," + "udgi.name name,'' specification,udgi.amount amount,udgi.barcode barcode,'' idCardInstanceBarcode,0 useAmount " - + "from useRecord ur " + + ",ur.ascriptionDepartment from useRecord ur " + "inner join useDiposableGoodsItem udgi on udgi.userecord_id=ur.id " + "where 1=1 "; String expensiveGoodsSql = - "select ur.id,ur.depart,ur.patientName,ur.hospitalNum,ur.treatmentNum,ur.operator,ur.enteringDate,ur.doctorName,ur.operation," + "select '高值耗材' selectType,ur.id,ur.depart,ur.patientName,ur.hospitalNum,ur.treatmentNum,ur.operator,ur.enteringDate,ur.doctorName,ur.operation," + "eg.name name,eg.specification specification,1 amount,bd.barcode barcode,'' idCardInstanceBarcode,0 useAmount " - + "from useRecord ur " + + ",ur.ascriptionDepartment from useRecord ur " + "inner join ExpensiveGoodsInstance egi on egi.userecordId=ur.id " + "inner join ExpensiveGoods eg on eg.id=egi.expensiveGoods_id " + "inner join barcodeDevice bd on bd.id=egi.id " @@ -11394,24 +11395,26 @@ * @throws ParseException */ @Override - public List getUseRecordItemDataSource(Map requestParameters) throws ParseException { + public List getUseRecordItemDataSource(Map requestParameters) throws ParseException { long ll = System.currentTimeMillis(); String startDay = requestParameters.get("startDay"); //开始时间 String endDay = requestParameters.get("endDay"); //结束时间 String depart = requestParameters.get("depart"); //使用科室的名称 String operatorSearch = requestParameters.get("operatorSearch"); //录入人名字 String hospitalNumSearch = requestParameters.get("hospitalNum"); //住院号/诊疗号 - String goodsId = requestParameters.get("goodsId"); //物品id boolean showOther = !StringTools.equals("否",requestParameters.get("showOther")); //是否需要显示同单明细 - String goodsType = requestParameters.get("goodsType"); //主要是区分一次性物品和器械包,然后根据这个类型,就知道goodsId是TousseDefinition的id还是DisposableGoods的id - String barcode = requestParameters.get("barcode"); //条码 + //物品改为多选后 传一个id和一个类型不能满足多选的情况了 改为传3组id expensiveGoodIds disposableGoodIds tousseInstanceIds + //String goodsId = requestParameters.get("goodsId"); //物品id + //String goodsType = requestParameters.get("goodsType"); //主要是区分一次性物品和器械包,然后根据这个类型,就知道goodsId是TousseDefinition的id还是DisposableGoods的id + String barcode = requestParameters.get("barcode"); //条码 + List firstColumnVos = null; if(StringUtils.isNotBlank(startDay) && StringUtils.isNotBlank(endDay)){ String sql = ""; if (StringUtils.isNotBlank(barcode)) { //扫条码查询(器械包条码或者标识牌条码) sql = getSqlByBarcode(barcode, showOther); } else { //如果不是扫条码,则按照物品id查询 - sql = getSqlByGoodsId(goodsId, goodsType, showOther); + sql = getSqlByGoodsId(requestParameters.get("expensiveGoodIds"), requestParameters.get("disposableGoodIds"), requestParameters.get("tousseInstanceIds") , showOther); } sql = "select * from ( " + sql + " ) m where 1=1 "; @@ -11429,58 +11432,122 @@ sql += " and " + dateQueryAdapter.dateAreaSql("m.enteringDate", startDay, endDay, false); //查询的时间段 sql += " order by m.enteringDate desc "; - - List enteringBeans = new ArrayList(); ResultSet rs = null; try { rs = objectDao.executeSql(sql); - while (rs.next()) { - Long userecordId = rs.getLong("id"); - UseRecordEnteringBean enteringBean = CollectionUtils.find(enteringBeans, new Predicate(){ - @Override - public boolean evaluate(UseRecordEnteringBean object) { - return MathTools.equals(userecordId, object.getUseRecordId()); + if(StringUtils.isNotBlank(requestParameters.get("enableExtendedFieldsUseRecordEntryDetailReports"))){ + firstColumnVos = new ArrayList(); + Map firstColumnVoMap = new HashMap(); + while (rs.next()) { + String firstColumnName = StringTools.defaultString(rs.getString("name")); + String selectType = rs.getString("selectType"); + if (StringTools.equals(ExpensiveGoods.TYPE_NAME, selectType)) { + String specification = StringTools.defaultString(rs.getString("specification")); + firstColumnName = CssdUtils.buildShowName(firstColumnName, specification); } - }); - if(enteringBean == null){ - enteringBean = new UseRecordEnteringBean(); + String secondColumnName = rs.getString("ascriptionDepartment"); + ForeignTousseAppSumVO vo = new ForeignTousseAppSumVO(); + if(StringUtils.isBlank(firstColumnName)){ + firstColumnName = null; + } + if(StringUtils.isBlank(secondColumnName)){ + secondColumnName = null; + } + FirstColumnVo firstColumnVo = null; + SecondColumnVo secondColumnVo = null; + List secondColumnVos = null; + List vos = null; + if(firstColumnVoMap.containsKey(firstColumnName)){ + firstColumnVo = firstColumnVoMap.get(firstColumnName); + secondColumnVos = firstColumnVo.getFirstColumnDetaileds(); + }else{ + //firstColumnVoMap.clear();//因为是按第一列的值排序的, 所以找不到就说明是新的列值,旧的数据可以清掉了 + firstColumnVo = new FirstColumnVo(); + firstColumnVo.setFirstColumnName(firstColumnName); + secondColumnVos = new ArrayList(); + firstColumnVo.setFirstColumnDetaileds(secondColumnVos); + firstColumnVoMap.put(firstColumnName, firstColumnVo); + firstColumnVos.add(firstColumnVo); + } + if(!CollectionUtils.isEmpty(secondColumnVos)){ + for (SecondColumnVo findSecondColumnVo : secondColumnVos) { + if(StringUtils.equals(findSecondColumnVo.getSecondColumnName(), secondColumnName)){ + secondColumnVo = findSecondColumnVo; + break; + } + } + } + if(secondColumnVo == null){ + secondColumnVo = new SecondColumnVo(); + secondColumnVo.setSecondColumnName(secondColumnName); + secondColumnVos.add(secondColumnVo); + vos = new ArrayList(); + secondColumnVo.setSecondColumnDetaileds(vos); + }else{ + vos = secondColumnVo.getSecondColumnDetaileds(); + } + ExtendedFieldsUseRecordEntryDetailReportVo reportVo = new ExtendedFieldsUseRecordEntryDetailReportVo(); + reportVo.setDepart(StringTools.defaultString(rs.getString("depart"))); + reportVo.setOperator(StringTools.defaultString(rs.getString("operator"))); + reportVo.setEnterTimeStr(ForgonDateUtils.safelyFormatDate(rs.getTimestamp("enteringDate"), ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS, "")); + reportVo.setPatient(StringTools.defaultString(rs.getString("patientName"))); + reportVo.setHospotalNum(StringTools.defaultString(StringTools.defaultIfEmpty(rs.getString("hospitalNum"),rs.getString("treatmentNum")))); + reportVo.setDoctorName(rs.getString("doctorName")); + reportVo.setOperation(StringTools.defaultString(rs.getString("operation"))); + reportVo.setBarcode(StringTools.defaultString(rs.getString("barcode"))); + reportVo.setIdCardInstanceBarcode(StringTools.defaultString(rs.getString("idCardInstanceBarcode"))); + reportVo.setUseAmount(rs.getInt("useAmount")); + vos.add(reportVo); + firstColumnVo.setFirstColumnTotalAmount(MathTools.add(1, firstColumnVo.getFirstColumnTotalAmount()).intValue()); + } + }else{ + firstColumnVos = new ArrayList(); + while (rs.next()) { + Long userecordId = rs.getLong("id"); + UseRecordEnteringBean enteringBean = CollectionUtils.find(firstColumnVos, new Predicate(){ + @Override + public boolean evaluate(UseRecordEnteringBean object) { + return MathTools.equals(userecordId, object.getUseRecordId()); + } + }); + if(enteringBean == null){ + enteringBean = new UseRecordEnteringBean(); + + enteringBean.setUseRecordId(userecordId); + enteringBean.setDepart(StringTools.defaultString(rs.getString("depart"))); + enteringBean.setPatient(StringTools.defaultString(rs.getString("patientName"))); + enteringBean.setHospotalNum(StringTools.defaultString(StringTools.defaultIfEmpty(rs.getString("hospitalNum"),rs.getString("treatmentNum")))); + enteringBean.setOperator(StringTools.defaultString(rs.getString("operator"))); + enteringBean.setEnterTime(ForgonDateUtils.safelyFormatDate(rs.getTimestamp("enteringDate"), ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS, "")); + enteringBean.setDoctorName(StringTools.defaultString(rs.getString("doctorName"))); + enteringBean.setOperation(StringTools.defaultString(rs.getString("operation"))); + firstColumnVos.add(enteringBean); + } - enteringBean.setUseRecordId(userecordId); - enteringBean.setDepart(StringTools.defaultString(rs.getString("depart"))); - enteringBean.setPatient(StringTools.defaultString(rs.getString("patientName"))); - enteringBean.setHospotalNum(StringTools.defaultString(StringTools.defaultIfEmpty(rs.getString("hospitalNum"),rs.getString("treatmentNum")))); - enteringBean.setOperator(StringTools.defaultString(rs.getString("operator"))); - enteringBean.setEnterTime(ForgonDateUtils.safelyFormatDate(rs.getTimestamp("enteringDate"), ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS, "")); - enteringBean.setDoctorName(StringTools.defaultString(rs.getString("doctorName"))); - enteringBean.setOperation(StringTools.defaultString(rs.getString("operation"))); - enteringBeans.add(enteringBean); + UseRecordEnteringTousse tousse = new UseRecordEnteringTousse(); + String name = StringTools.defaultString(rs.getString("name")); + String selectType = rs.getString("selectType"); + if (StringTools.equals(ExpensiveGoods.TYPE_NAME, selectType)) { + String specification = StringTools.defaultString(rs.getString("specification")); + name = CssdUtils.buildShowName(name, specification); + } + + tousse.setTousseName(name); + tousse.setAmount(rs.getInt("amount")); + tousse.setBarcode(StringTools.defaultString(rs.getString("barcode"))); + tousse.setIdCardInstanceBarcode(StringTools.defaultString(rs.getString("idCardInstanceBarcode"))); + tousse.setUseAmount(rs.getInt("useAmount")); + enteringBean.getEnteringTousses().add(tousse); } - - UseRecordEnteringTousse tousse = new UseRecordEnteringTousse(); - String name = StringTools.defaultString(rs.getString("name")); - - if (StringTools.equals(ExpensiveGoods.TYPE_NAME, goodsType)) { - String specification = StringTools.defaultString(rs.getString("specification")); - name = CssdUtils.buildShowName(name, specification); - } - - tousse.setTousseName(name); - tousse.setAmount(rs.getInt("amount")); - tousse.setBarcode(StringTools.defaultString(rs.getString("barcode"))); - tousse.setIdCardInstanceBarcode(StringTools.defaultString(rs.getString("idCardInstanceBarcode"))); - tousse.setUseAmount(rs.getInt("useAmount")); - enteringBean.getEnteringTousses().add(tousse); } } catch (Exception e) { e.printStackTrace(); }finally { DatabaseUtil.closeResultSetAndStatement(rs); } logger.debug("使用记录录入明细统计报表后台查询时间:" + (System.currentTimeMillis() - ll) + "毫秒"); - return enteringBeans; } - return new ArrayList(); - + return firstColumnVos; } // /** // * 使用记录录入明细主数据源