Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ForeignTousseReportHelper.java =================================================================== diff -u -r35895 -r35896 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ForeignTousseReportHelper.java (.../ForeignTousseReportHelper.java) (revision 35895) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ForeignTousseReportHelper.java (.../ForeignTousseReportHelper.java) (revision 35896) @@ -1,10 +1,13 @@ package com.forgon.disinfectsystem.jasperreports.util; import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -21,11 +24,13 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.reportforms.CustomTimePeriod; +import com.forgon.disinfectsystem.jasperreports.javabeansource.ForeignTousseAfterUseDeliveryVO; import com.forgon.disinfectsystem.jasperreports.javabeansource.ForeignTousseSizeReportBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.ForeignTousseSupplierStatisticsReportVO; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.db.InitDbConnection; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.string.StringTools; import com.forgon.tools.util.SqlUtils; import edu.emory.mathcs.backport.java.util.Arrays; @@ -310,4 +315,96 @@ } return supplierToContactNameMap; } + public List getforeignTousseAfterUseDeliveryVOList( + String startTime, String endTime, String departCoding) { + String betweenSql = dateQueryAdapter.dateAreaSql("rr.recyclingTime", startTime, endTime, true); + + String sql = + "select ci.invoicePlanID invoicePlanID," + + "rr.recyclingTime recyclingTime," + + "fta.tousseName tousseName," + + "fta.supplierName supplierName," + + "case when "+DatabaseUtil.getSqlLengthFunctionName(dbConnection)+"(cb.personInCharge)>0 then cb.personInCharge else wr.operator end personInCharge," + + "cw.WashAndDisinfectRecord_ID washAndDisinfectRecordId " + + + "from RecyclingRecord rr " + + "inner join ClassifyBasket_RecyclingRecord cr on cr.RecyclingRecord_ID=rr.id " + + "inner join ClassifyBasket cb on cb.id=cr.ClassifyBasket_ID " + + "inner join ClassifiedItem ci on ci.classifybasket_id=cb.id " + + "inner join ForeignTousseApplication fta on fta.id=ci.invoicePlanID " + + "left join ClassifyBasket_WashRecord cw on cw.ClassifyBasket_ID=cb.id " + + "left join WashAndDisinfectRecord wr on wr.id=cw.WashAndDisinfectRecord_ID " + + + "where ci.isSencondWashForForeignTousse=1 " + + SqlUtils.get_InSql_Extra("rr.orgUnitCoding", departCoding) + + "and " + betweenSql + + "order by rr.id desc" + ; + ResultSet result = objectDao.executeSql(sql); + Map voMap = new LinkedHashMap(); + try { + while(result.next()){ + String invoicePlanID = StringTools.defaultString(result.getString("invoicePlanID")); + ForeignTousseAfterUseDeliveryVO vo = voMap.get(invoicePlanID); + String personInCharge = StringTools.defaultString(result.getString("personInCharge")); + String washAndDisinfectRecordId = StringTools.defaultString(result.getString("washAndDisinfectRecordId")); + personInCharge = (washAndDisinfectRecordId.equals("") ? "" : personInCharge); //怕用户录入了清洗记录,然后又把那个清洗篮筐删除了,但是只删除关系表,而我这里又是做外连接,所以这种情况下还是把清洗者显示为空 + + if (vo == null) { + vo = new ForeignTousseAfterUseDeliveryVO(); + String recyclingTime = StringTools.defaultString(result.getString("recyclingTime")); + String tousseName = StringTools.defaultString(result.getString("tousseName")); + String supplierName = StringTools.defaultString(result.getString("supplierName")); + + if (recyclingTime.length() > 16) { + recyclingTime = recyclingTime.substring(0, 10); + } + + vo.setTwoRecovery(recyclingTime); + vo.setTousseName(tousseName); + vo.setSupplier(supplierName); + vo.setWashAndDisinfectUser(personInCharge); + voMap.put(invoicePlanID, vo); + } else { + String personInChargeTemp = vo.getWashAndDisinfectUser(); + vo.setWashAndDisinfectUser(personInChargeTemp + "," + personInCharge); //解决拆包清洗的器械包 + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result); + } + + + List voList = new ArrayList(); + StringBuffer sbf = new StringBuffer(); + for (Entry entry : voMap.entrySet()){ + ForeignTousseAfterUseDeliveryVO vo = entry.getValue(); + + String[] washAndDisinfectUserArray = vo.getWashAndDisinfectUser().split(","); + if (washAndDisinfectUserArray.length == 0) { + vo.setWashAndDisinfectUser(""); + } else { + Map map = new HashMap(); + for (String washAndDisinfectUser : washAndDisinfectUserArray) { + if (StringTools.isNotBlank(washAndDisinfectUser)) { + map.put(washAndDisinfectUser, washAndDisinfectUser); + } + } + sbf.setLength(0); + for (String washAndDisinfectUser : map.keySet()) { + sbf.append(washAndDisinfectUser); + sbf.append(","); + } + if (sbf.length() > 0) { + vo.setWashAndDisinfectUser(sbf.substring(0,sbf.length() - 1)); + }else{ + vo.setWashAndDisinfectUser(""); + } + } + voList.add(vo); + } + return voList; + } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r35895 -r35896 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35895) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35896) @@ -3817,96 +3817,7 @@ @Override public List getforeignTousseAfterUseDeliveryVOList( String startTime, String endTime, String departCoding) { - String betweenSql = dateQueryAdapter.dateAreaSql("rr.recyclingTime", startTime, endTime, true); - - String sql = - "select ci.invoicePlanID invoicePlanID," - + "rr.recyclingTime recyclingTime," - + "fta.tousseName tousseName," - + "fta.supplierName supplierName," - + "case when "+DatabaseUtil.getSqlLengthFunctionName(dbConnection)+"(cb.personInCharge)>0 then cb.personInCharge else wr.operator end personInCharge," - + "cw.WashAndDisinfectRecord_ID washAndDisinfectRecordId " - - + "from RecyclingRecord rr " - + "inner join ClassifyBasket_RecyclingRecord cr on cr.RecyclingRecord_ID=rr.id " - + "inner join ClassifyBasket cb on cb.id=cr.ClassifyBasket_ID " - + "inner join ClassifiedItem ci on ci.classifybasket_id=cb.id " - + "inner join ForeignTousseApplication fta on fta.id=ci.invoicePlanID " - + "left join ClassifyBasket_WashRecord cw on cw.ClassifyBasket_ID=cb.id " - + "left join WashAndDisinfectRecord wr on wr.id=cw.WashAndDisinfectRecord_ID " - - + "where ci.isSencondWashForForeignTousse=1 " - + SqlUtils.get_InSql_Extra("rr.orgUnitCoding", departCoding) - + "and " + betweenSql - + "order by rr.id desc" - ; - ResultSet result = objectDao.executeSql(sql); - Map voMap = new LinkedHashMap(); - try { - while(result.next()){ - String invoicePlanID = StringTools.defaultString(result.getString("invoicePlanID")); - ForeignTousseAfterUseDeliveryVO vo = voMap.get(invoicePlanID); - String personInCharge = StringTools.defaultString(result.getString("personInCharge")); - String washAndDisinfectRecordId = StringTools.defaultString(result.getString("washAndDisinfectRecordId")); - personInCharge = (washAndDisinfectRecordId.equals("") ? "" : personInCharge); //怕用户录入了清洗记录,然后又把那个清洗篮筐删除了,但是只删除关系表,而我这里又是做外连接,所以这种情况下还是把清洗者显示为空 - - if (vo == null) { - vo = new ForeignTousseAfterUseDeliveryVO(); - String recyclingTime = StringTools.defaultString(result.getString("recyclingTime")); - String tousseName = StringTools.defaultString(result.getString("tousseName")); - String supplierName = StringTools.defaultString(result.getString("supplierName")); - - if (recyclingTime.length() > 16) { - recyclingTime = recyclingTime.substring(0, 10); - } - - vo.setTwoRecovery(recyclingTime); - vo.setTousseName(tousseName); - vo.setSupplier(supplierName); - vo.setWashAndDisinfectUser(personInCharge); - voMap.put(invoicePlanID, vo); - } else { - String personInChargeTemp = vo.getWashAndDisinfectUser(); - vo.setWashAndDisinfectUser(personInChargeTemp + "," + personInCharge); //解决拆包清洗的器械包 - } - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(result); - } - - - List voList = new ArrayList(); - StringBuffer sbf = new StringBuffer(); - for (Entry entry : voMap.entrySet()){ - String invoicePlanID = entry.getKey(); - ForeignTousseAfterUseDeliveryVO vo = entry.getValue(); - - String[] washAndDisinfectUserArray = vo.getWashAndDisinfectUser().split(","); - if (washAndDisinfectUserArray.length == 0) { - vo.setWashAndDisinfectUser(""); - } else { - Map map = new HashMap(); - for (String washAndDisinfectUser : washAndDisinfectUserArray) { - if (StringTools.isNotBlank(washAndDisinfectUser)) { - map.put(washAndDisinfectUser, washAndDisinfectUser); - } - } - sbf.setLength(0); - for (String washAndDisinfectUser : map.keySet()) { - sbf.append(washAndDisinfectUser); - sbf.append(","); - } - if (sbf.length() > 0) { - vo.setWashAndDisinfectUser(sbf.substring(0,sbf.length() - 1)); - }else{ - vo.setWashAndDisinfectUser(""); - } - } - voList.add(vo); - } - return voList; + return foreignTousseReportHelper.getforeignTousseAfterUseDeliveryVOList(startTime, endTime, departCoding); } @Override