Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/TousseSterilizationInspectSituationHelper.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/TousseSterilizationInspectSituationHelper.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/TousseSterilizationInspectSituationHelper.java (revision 35921) @@ -0,0 +1,356 @@ +package com.forgon.disinfectsystem.jasperreports.util; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.disinfectsystem.basedatamanager.sterilizer.service.SterilizerManager; +import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; +import com.forgon.disinfectsystem.jasperreports.javabeansource.TousseSterilizationInspectSituationBean; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.ForgonDateUtils; +import com.forgon.tools.util.SqlUtils; +/** + * 器械消毒灭菌检查情况报表 + */ +@Component +public class TousseSterilizationInspectSituationHelper { + @Autowired + private SterilizerManager sterilizerManager; + @Autowired + private DateQueryAdapter dateQueryAdapter; + @Autowired + private ObjectDao objectDao; + /** + * 获取器械消毒灭菌检查情况报表的数据 + * @param monthSearch 查询年月 如: 2017-01 + * @param sterilizationType 灭菌程序 + * @param sterilizationPurpose 灭菌目的 + * @param departCodings 科室编码(多个用逗号分隔) + * @param sterilizerNames 灭菌炉名称(多个用逗号分隔) + * @return + */ + public List getTousseSterilizationInspectSituationBeans( + String monthSearch, String sterilizationType, String sterilizationPurpose, String departCodings, String sterilizerNames) { + List list = new ArrayList(); + Collection departCodingList = StringTools.toCollectionIgnoreNullAndBlank(departCodings); + Collection sterilizerNameList = StringTools.toCollectionIgnoreNullAndBlank(sterilizerNames); + if (StringTools.isNotBlank(monthSearch) + && StringTools.isNotBlank(departCodings)) { + //List sterilizerNameList= sterilizerManager.getAllSterilizerName(); //灭菌炉 + String total = "合计"; + String proportion = "比率(%)"; + if(CollectionUtils.isEmpty(sterilizerNameList)){ + sterilizerNameList = sterilizerManager.getSterilizerNameListByDepartCodings(departCodings); + } + sterilizerNameList.add(total); + sterilizerNameList.add(proportion); + + List tagList = new LinkedList(); + String chemistryResultTag = "化学监测(次)"; + String physicsResultTag = "物理监测(次)"; + String biologyResultTag = "生物监测(次)"; + tagList.add(chemistryResultTag); + tagList.add(physicsResultTag); + tagList.add(biologyResultTag); + if (StringTools.isNotBlank(sterilizationType)) { //用户指定要查询的灭菌程序 + String[] sterilizationTypeArr = sterilizationType.split(","); + for (String temp : sterilizationTypeArr) { + tagList.add(temp.trim()); + } + } + if (StringTools.isNotBlank(sterilizationPurpose)) { //用户指定要查询的灭菌目的 + String[] sterilizationPurposeArr = sterilizationPurpose.split(","); + for (String temp : sterilizationPurposeArr) { + tagList.add(temp.trim()); + } + } + String tousseAmountTypeTag = "出炉灭菌包(件)"; + tagList.add(tousseAmountTypeTag); + + Integer rowGroupSequence = 0; + Map tempMap = new HashMap(); + for (String name : sterilizerNameList) { + ++ rowGroupSequence; + Integer columnGroup2Sequence = 0; + for (String tag : tagList) { + tag = tag.trim(); + ++ columnGroup2Sequence; + + //合格 + TousseSterilizationInspectSituationBean bean1 = new TousseSterilizationInspectSituationBean(); + bean1.setRowGroup(name); + bean1.setRowGroupSequence(rowGroupSequence); + bean1.setColumnGroup2(tag); + bean1.setColumnGroup2Sequence(columnGroup2Sequence); + bean1.setColumnGroup3(SterilizationRecord.MONITOR_RESULT_QUALIFIED); + tempMap.put(name + tag + SterilizationRecord.MONITOR_RESULT_QUALIFIED, bean1); + + //不合格 + TousseSterilizationInspectSituationBean bean2 = new TousseSterilizationInspectSituationBean(); + bean2.setRowGroup(name); + bean2.setRowGroupSequence(rowGroupSequence); + bean2.setColumnGroup2(tag); + bean2.setColumnGroup2Sequence(columnGroup2Sequence); + bean2.setColumnGroup3(SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + tempMap.put(name + tag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED, bean2); + } + } + Calendar c = Calendar.getInstance(); + c.setTime(ForgonDateUtils.safelyParseDate(monthSearch)); + int lastDay = c.getActualMaximum(Calendar.DATE); + + String betweenSql = dateQueryAdapter.dateAreaSql("sr.endDate", monthSearch + "-01", monthSearch + "-" +lastDay, true); + //供应室编码sql过滤条件 + String orgUnitCodingConditionSql = " and " + SqlUtils.getStringFieldInLargeCollectionsPredicate("sr.orgUnitCoding", departCodingList); + //灭菌炉名称sql过滤条件 + String sterilizerNameConditionSql = ""; + if(CollectionUtils.isNotEmpty(sterilizerNameList)){ + sterilizerNameConditionSql = " and " + SqlUtils.getStringFieldInLargeCollectionsPredicate("s.name", sterilizerNameList); + } + + String sql = + "select s.name,sr.chemistryResult,sr.physicsResult,sr.biologyResult,sr.sterilizationType,sr.sterilizationPurpose " + + "from SterilizationRecord sr join Sterilizer s on s.id=sr.sterilizer_id " + + "where " + betweenSql + orgUnitCodingConditionSql; + sql += sterilizerNameConditionSql; + ResultSet result1 = objectDao.executeSql(sql); + try { + while(result1.next()){ + String name = StringTools.defaultString(result1.getString("name")); + String chemistryResult = StringTools.defaultString(result1.getString("chemistryResult")); + String physicsResult = StringTools.defaultString(result1.getString("physicsResult")); + String biologyResult = StringTools.defaultString(result1.getString("biologyResult")); + String sterilizationType2 = StringTools.defaultString(result1.getString("sterilizationType")); + String sterilizationPurpose2 = StringTools.defaultString(result1.getString("sterilizationPurpose")); + + //化学监测 + TousseSterilizationInspectSituationBean bean1 = null; + TousseSterilizationInspectSituationBean bean11 = null; //合计的行 + if (StringTools.equals(chemistryResult, SterilizationRecord.MONITOR_RESULT_UNQUALIFIED)) { + bean1 = tempMap.get(name + chemistryResultTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + if (bean1 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean1.setAmount(bean1.getAmount() + 1); + } + bean11 = tempMap.get(total + chemistryResultTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + if (bean11 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean11.setAmount(bean11.getAmount() + 1); + } + } else if (StringTools.equals(chemistryResult, SterilizationRecord.MONITOR_RESULT_QUALIFIED)) { + bean1 = tempMap.get(name + chemistryResultTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); + if (bean1 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean1.setAmount(bean1.getAmount() + 1); + } + bean11 = tempMap.get(total + chemistryResultTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); + if (bean11 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean11.setAmount(bean11.getAmount() + 1); + } + } + + //物理监测 + TousseSterilizationInspectSituationBean bean2 = null; + TousseSterilizationInspectSituationBean bean22 = null; + if (StringTools.equals(physicsResult, SterilizationRecord.MONITOR_RESULT_UNQUALIFIED)) { + bean2 = tempMap.get(name + physicsResultTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + if (bean2 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean2.setAmount(bean2.getAmount() + 1); + } + bean22 = tempMap.get(total + physicsResultTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + if (bean22 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean22.setAmount(bean22.getAmount() + 1); + } + } else if (StringTools.equals(physicsResult, SterilizationRecord.MONITOR_RESULT_QUALIFIED)) { + bean2 = tempMap.get(name + physicsResultTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); + if (bean2 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean2.setAmount(bean2.getAmount() + 1); + } + bean22 = tempMap.get(total + physicsResultTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); + if (bean22 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean22.setAmount(bean22.getAmount() + 1); + } + } + + //生物监测 + TousseSterilizationInspectSituationBean bean3 = null; + TousseSterilizationInspectSituationBean bean33 = null; + if (StringTools.equals(biologyResult, SterilizationRecord.MONITOR_RESULT_UNQUALIFIED)) { + bean3 = tempMap.get(name + biologyResultTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + if (bean3 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean3.setAmount(bean3.getAmount() + 1); + } + bean33 = tempMap.get(total + biologyResultTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + if (bean33 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean33.setAmount(bean33.getAmount() + 1); + } + } else if (StringTools.equals(biologyResult, SterilizationRecord.MONITOR_RESULT_QUALIFIED)) { + bean3 = tempMap.get(name + biologyResultTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); + if (bean3 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean3.setAmount(bean3.getAmount() + 1); + } + bean33 = tempMap.get(total + biologyResultTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); + if (bean33 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean33.setAmount(bean33.getAmount() + 1); + } + } + + //灭菌程序、灭菌目的(三个监测只要有一个结果失败,则为失败) + TousseSterilizationInspectSituationBean bean4 = null; + TousseSterilizationInspectSituationBean bean44 = null; + TousseSterilizationInspectSituationBean bean5 = null; + TousseSterilizationInspectSituationBean bean55 = null; + if (StringTools.equals(chemistryResult, SterilizationRecord.MONITOR_RESULT_UNQUALIFIED) + || StringTools.equals(physicsResult, SterilizationRecord.MONITOR_RESULT_UNQUALIFIED) + || StringTools.equals(biologyResult, SterilizationRecord.MONITOR_RESULT_UNQUALIFIED)) { + bean4 = tempMap.get(name + sterilizationType2 + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + if (bean4 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean4.setAmount(bean4.getAmount() + 1); + } + bean44 = tempMap.get(total + sterilizationType2 + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + if (bean44 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean44.setAmount(bean44.getAmount() + 1); + } + + bean5 = tempMap.get(name + sterilizationPurpose2 + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + if (bean5 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean5.setAmount(bean5.getAmount() + 1); + } + bean55 = tempMap.get(total + sterilizationPurpose2 + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + if (bean55 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean55.setAmount(bean55.getAmount() + 1); + } + } else if (StringTools.equals(chemistryResult, SterilizationRecord.MONITOR_RESULT_QUALIFIED) + || StringTools.equals(physicsResult, SterilizationRecord.MONITOR_RESULT_QUALIFIED) + || StringTools.equals(biologyResult, SterilizationRecord.MONITOR_RESULT_QUALIFIED)) { + bean4 = tempMap.get(name + sterilizationType2 + SterilizationRecord.MONITOR_RESULT_QUALIFIED); + if (bean4 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean4.setAmount(bean4.getAmount() + 1); + } + bean44 = tempMap.get(total + sterilizationType2 + SterilizationRecord.MONITOR_RESULT_QUALIFIED); + if (bean44 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean44.setAmount(bean44.getAmount() + 1); + } + + bean5 = tempMap.get(name + sterilizationPurpose2 + SterilizationRecord.MONITOR_RESULT_QUALIFIED); + if (bean5 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean5.setAmount(bean5.getAmount() + 1); + } + bean55 = tempMap.get(total + sterilizationPurpose2 + SterilizationRecord.MONITOR_RESULT_QUALIFIED); + if (bean55 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean55.setAmount(bean55.getAmount() + 1); + } + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result1); + } + + + sql = + "select 'success' type,s.name name,count(*) amount " + + "from TousseInstance ti " + + "join SterilizationRecord sr on sr.id=ti.sterilizationRecord_id join Sterilizer s on s.id=sr.sterilizer_id " + + "where " + betweenSql + orgUnitCodingConditionSql + sterilizerNameConditionSql + " group by s.name " + + "union all " + + "select 'failure' type,t1.name name,count(*) amount " + + "from(" + + "select s.name " + + "from SterilizationRecord sr join Sterilizer s on s.id=sr.sterilizer_id " + + "join sterilization_reviewed sre on sre.sterilizationRecord_id=sr.id " + + "join ReviewedBasket rb on rb.id=sre.reviewedBasket_id " + + "join TousseInstance ti on ti.reviewBasket_id=rb.id " + + "where sr.status='" + SterilizationRecord.STERILIZATION_STATUS_FAILURE + "' and ti.sterilizationRecord_id is null " + + "and " + betweenSql + orgUnitCodingConditionSql + sterilizerNameConditionSql + + "union all " + + "select s.name " + + "from SterilizationRecord sr join Sterilizer s on s.id=sr.sterilizer_id " + + "join sterilization_tousseInstance st on st.sterilizationRecord_id=sr.id " + + "join TousseInstance ti on ti.id=st.tousseInstance_id " + + "where sr.status='" + SterilizationRecord.STERILIZATION_STATUS_FAILURE + "' and ti.sterilizationRecord_id is null " + + "and " + betweenSql + orgUnitCodingConditionSql + sterilizerNameConditionSql + + ") t1 group by t1.name " + ; + + ResultSet result2 = objectDao.executeSql(sql); + try { + while(result2.next()){ + String type = StringTools.defaultString(result2.getString("type")); + String name = StringTools.defaultString(result2.getString("name")); + int amount = result2.getInt("amount"); + //出炉灭菌包 + TousseSterilizationInspectSituationBean bean6 = null; + TousseSterilizationInspectSituationBean bean66 = null; + if (StringTools.equals(type, "success")) { + bean6 = tempMap.get(name + tousseAmountTypeTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); + if (bean6 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean6.setAmount(bean6.getAmount() + amount); + } + bean66 = tempMap.get(total + tousseAmountTypeTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); + if (bean66 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean66.setAmount(bean66.getAmount() + amount); + } + } else { + bean6 = tempMap.get(name + tousseAmountTypeTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + if (bean6 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean6.setAmount(bean6.getAmount() + amount); + } + bean66 = tempMap.get(total + tousseAmountTypeTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + if (bean66 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 + bean66.setAmount(bean66.getAmount() + amount); + } + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result2); + } + + //计算比率 + for (String tag : tagList) { + TousseSterilizationInspectSituationBean qualifiedBean = tempMap.get(total + tag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); //正常情况这里不会出现空指针的,所以下面没有处理空指针 + TousseSterilizationInspectSituationBean unqualifiedBean = tempMap.get(total + tag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + Integer qualifiedTotal = qualifiedBean.getAmount(); //合格总数 + Integer unqualifiedTotal = unqualifiedBean.getAmount(); //不合格总数 + + TousseSterilizationInspectSituationBean proportionBean1= tempMap.get(proportion + tag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); + TousseSterilizationInspectSituationBean proportionBean2= tempMap.get(proportion + tag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); + + int qualifiedProportion = 0; + Integer temp = qualifiedTotal + unqualifiedTotal; + if (temp != null && temp.intValue() > 0) { + qualifiedProportion = new BigDecimal(qualifiedTotal) + .divide(new BigDecimal(temp),13,RoundingMode.HALF_UP) + .multiply(new BigDecimal(100)).intValue(); + proportionBean1.setAmount(qualifiedProportion); + proportionBean2.setAmount(100 - qualifiedProportion); + } else { + proportionBean1.setAmount(0); + proportionBean2.setAmount(0); + } + } + + for (Entry entry : tempMap.entrySet()) { + list.add(entry.getValue()); + } + } + return list; + } +} Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r35920 -r35921 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35920) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35921) @@ -47,7 +47,6 @@ import com.forgon.directory.model.Org_OrgGroup; import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.basedatamanager.reportoption.GoodsOptionManager; -import com.forgon.disinfectsystem.basedatamanager.sterilizer.service.SterilizerManager; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.diposablegoods.service.GodownEntryItemManager; import com.forgon.disinfectsystem.diposablegoods.util.DisposableGoodsUtils; @@ -191,6 +190,7 @@ import com.forgon.disinfectsystem.jasperreports.util.SterilizingStoveUseCountReportHelper; import com.forgon.disinfectsystem.jasperreports.util.SupplyRoomQualityQuotaHelper; import com.forgon.disinfectsystem.jasperreports.util.TousseMorrowSendReportHelper; +import com.forgon.disinfectsystem.jasperreports.util.TousseSterilizationInspectSituationHelper; import com.forgon.disinfectsystem.jasperreports.util.TousseWorkLoadDataForDLZXYYHelper; import com.forgon.disinfectsystem.jasperreports.util.TousseWorkLoadHelper; import com.forgon.disinfectsystem.jasperreports.util.UrgentNeedGoodsProcessingCycleHelper; @@ -262,8 +262,6 @@ @Autowired private MaterialCheckManager materialCheckManager; @Autowired - private SterilizerManager sterilizerManager; - @Autowired private DataIndex dataIndex; @Autowired private InstrumentRepairReportHelper instrumentRepairReportHelper; @@ -367,6 +365,8 @@ private ReturnGoodReportHelper returnGoodReportHelper; @Autowired private WashReportHelper washReportHelper; + @Autowired + private TousseSterilizationInspectSituationHelper tousseSterilizationInspectSituationHelper; /** * 利用sql语句做数据源创建JasperPrint对象 * @param realPath 报表的jasper文件在服务器本地机子的全路径 @@ -3426,310 +3426,7 @@ @Override public List getTousseSterilizationInspectSituationBeans( String monthSearch, String sterilizationType, String sterilizationPurpose, String departCodings, String sterilizerNames) { - List list = new ArrayList(); - Collection departCodingList = StringTools.toCollectionIgnoreNullAndBlank(departCodings); - Collection sterilizerNameList = StringTools.toCollectionIgnoreNullAndBlank(sterilizerNames); - if (StringTools.isNotBlank(monthSearch) - && StringTools.isNotBlank(departCodings)) { - //List sterilizerNameList= sterilizerManager.getAllSterilizerName(); //灭菌炉 - String total = "合计"; - String proportion = "比率(%)"; - if(CollectionUtils.isEmpty(sterilizerNameList)){ - sterilizerNameList = sterilizerManager.getSterilizerNameListByDepartCodings(departCodings); - } - sterilizerNameList.add(total); - sterilizerNameList.add(proportion); - - List tagList = new LinkedList(); - String chemistryResultTag = "化学监测(次)"; - String physicsResultTag = "物理监测(次)"; - String biologyResultTag = "生物监测(次)"; - tagList.add(chemistryResultTag); - tagList.add(physicsResultTag); - tagList.add(biologyResultTag); - if (StringTools.isNotBlank(sterilizationType)) { //用户指定要查询的灭菌程序 - String[] sterilizationTypeArr = sterilizationType.split(","); - for (String temp : sterilizationTypeArr) { - tagList.add(temp.trim()); - } - } - if (StringTools.isNotBlank(sterilizationPurpose)) { //用户指定要查询的灭菌目的 - String[] sterilizationPurposeArr = sterilizationPurpose.split(","); - for (String temp : sterilizationPurposeArr) { - tagList.add(temp.trim()); - } - } - String tousseAmountTypeTag = "出炉灭菌包(件)"; - tagList.add(tousseAmountTypeTag); - - Integer rowGroupSequence = 0; - Map tempMap = new HashMap(); - for (String name : sterilizerNameList) { - ++ rowGroupSequence; - Integer columnGroup2Sequence = 0; - for (String tag : tagList) { - tag = tag.trim(); - ++ columnGroup2Sequence; - - //合格 - TousseSterilizationInspectSituationBean bean1 = new TousseSterilizationInspectSituationBean(); - bean1.setRowGroup(name); - bean1.setRowGroupSequence(rowGroupSequence); - bean1.setColumnGroup2(tag); - bean1.setColumnGroup2Sequence(columnGroup2Sequence); - bean1.setColumnGroup3(SterilizationRecord.MONITOR_RESULT_QUALIFIED); - tempMap.put(name + tag + SterilizationRecord.MONITOR_RESULT_QUALIFIED, bean1); - - //不合格 - TousseSterilizationInspectSituationBean bean2 = new TousseSterilizationInspectSituationBean(); - bean2.setRowGroup(name); - bean2.setRowGroupSequence(rowGroupSequence); - bean2.setColumnGroup2(tag); - bean2.setColumnGroup2Sequence(columnGroup2Sequence); - bean2.setColumnGroup3(SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - tempMap.put(name + tag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED, bean2); - } - } - Calendar c = Calendar.getInstance(); - c.setTime(ForgonDateUtils.safelyParseDate(monthSearch)); - int lastDay = c.getActualMaximum(Calendar.DATE); - - String betweenSql = dateQueryAdapter.dateAreaSql("sr.endDate", monthSearch + "-01", monthSearch + "-" +lastDay, true); - //供应室编码sql过滤条件 - String orgUnitCodingConditionSql = " and " + SqlUtils.getStringFieldInLargeCollectionsPredicate("sr.orgUnitCoding", departCodingList); - //灭菌炉名称sql过滤条件 - String sterilizerNameConditionSql = ""; - if(CollectionUtils.isNotEmpty(sterilizerNameList)){ - sterilizerNameConditionSql = " and " + SqlUtils.getStringFieldInLargeCollectionsPredicate("s.name", sterilizerNameList); - } - - String sql = - "select s.name,sr.chemistryResult,sr.physicsResult,sr.biologyResult,sr.sterilizationType,sr.sterilizationPurpose " - + "from SterilizationRecord sr join Sterilizer s on s.id=sr.sterilizer_id " - + "where " + betweenSql + orgUnitCodingConditionSql; - sql += sterilizerNameConditionSql; - ResultSet result1 = objectDao.executeSql(sql); - try { - while(result1.next()){ - String name = StringTools.defaultString(result1.getString("name")); - String chemistryResult = StringTools.defaultString(result1.getString("chemistryResult")); - String physicsResult = StringTools.defaultString(result1.getString("physicsResult")); - String biologyResult = StringTools.defaultString(result1.getString("biologyResult")); - String sterilizationType2 = StringTools.defaultString(result1.getString("sterilizationType")); - String sterilizationPurpose2 = StringTools.defaultString(result1.getString("sterilizationPurpose")); - - //化学监测 - TousseSterilizationInspectSituationBean bean1 = null; - TousseSterilizationInspectSituationBean bean11 = null; //合计的行 - if (StringTools.equals(chemistryResult, SterilizationRecord.MONITOR_RESULT_UNQUALIFIED)) { - bean1 = tempMap.get(name + chemistryResultTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - if (bean1 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean1.setAmount(bean1.getAmount() + 1); - } - bean11 = tempMap.get(total + chemistryResultTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - if (bean11 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean11.setAmount(bean11.getAmount() + 1); - } - } else if (StringTools.equals(chemistryResult, SterilizationRecord.MONITOR_RESULT_QUALIFIED)) { - bean1 = tempMap.get(name + chemistryResultTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); - if (bean1 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean1.setAmount(bean1.getAmount() + 1); - } - bean11 = tempMap.get(total + chemistryResultTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); - if (bean11 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean11.setAmount(bean11.getAmount() + 1); - } - } - - //物理监测 - TousseSterilizationInspectSituationBean bean2 = null; - TousseSterilizationInspectSituationBean bean22 = null; - if (StringTools.equals(physicsResult, SterilizationRecord.MONITOR_RESULT_UNQUALIFIED)) { - bean2 = tempMap.get(name + physicsResultTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - if (bean2 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean2.setAmount(bean2.getAmount() + 1); - } - bean22 = tempMap.get(total + physicsResultTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - if (bean22 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean22.setAmount(bean22.getAmount() + 1); - } - } else if (StringTools.equals(physicsResult, SterilizationRecord.MONITOR_RESULT_QUALIFIED)) { - bean2 = tempMap.get(name + physicsResultTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); - if (bean2 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean2.setAmount(bean2.getAmount() + 1); - } - bean22 = tempMap.get(total + physicsResultTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); - if (bean22 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean22.setAmount(bean22.getAmount() + 1); - } - } - - //生物监测 - TousseSterilizationInspectSituationBean bean3 = null; - TousseSterilizationInspectSituationBean bean33 = null; - if (StringTools.equals(biologyResult, SterilizationRecord.MONITOR_RESULT_UNQUALIFIED)) { - bean3 = tempMap.get(name + biologyResultTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - if (bean3 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean3.setAmount(bean3.getAmount() + 1); - } - bean33 = tempMap.get(total + biologyResultTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - if (bean33 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean33.setAmount(bean33.getAmount() + 1); - } - } else if (StringTools.equals(biologyResult, SterilizationRecord.MONITOR_RESULT_QUALIFIED)) { - bean3 = tempMap.get(name + biologyResultTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); - if (bean3 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean3.setAmount(bean3.getAmount() + 1); - } - bean33 = tempMap.get(total + biologyResultTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); - if (bean33 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean33.setAmount(bean33.getAmount() + 1); - } - } - - //灭菌程序、灭菌目的(三个监测只要有一个结果失败,则为失败) - TousseSterilizationInspectSituationBean bean4 = null; - TousseSterilizationInspectSituationBean bean44 = null; - TousseSterilizationInspectSituationBean bean5 = null; - TousseSterilizationInspectSituationBean bean55 = null; - if (StringTools.equals(chemistryResult, SterilizationRecord.MONITOR_RESULT_UNQUALIFIED) - || StringTools.equals(physicsResult, SterilizationRecord.MONITOR_RESULT_UNQUALIFIED) - || StringTools.equals(biologyResult, SterilizationRecord.MONITOR_RESULT_UNQUALIFIED)) { - bean4 = tempMap.get(name + sterilizationType2 + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - if (bean4 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean4.setAmount(bean4.getAmount() + 1); - } - bean44 = tempMap.get(total + sterilizationType2 + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - if (bean44 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean44.setAmount(bean44.getAmount() + 1); - } - - bean5 = tempMap.get(name + sterilizationPurpose2 + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - if (bean5 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean5.setAmount(bean5.getAmount() + 1); - } - bean55 = tempMap.get(total + sterilizationPurpose2 + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - if (bean55 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean55.setAmount(bean55.getAmount() + 1); - } - } else if (StringTools.equals(chemistryResult, SterilizationRecord.MONITOR_RESULT_QUALIFIED) - || StringTools.equals(physicsResult, SterilizationRecord.MONITOR_RESULT_QUALIFIED) - || StringTools.equals(biologyResult, SterilizationRecord.MONITOR_RESULT_QUALIFIED)) { - bean4 = tempMap.get(name + sterilizationType2 + SterilizationRecord.MONITOR_RESULT_QUALIFIED); - if (bean4 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean4.setAmount(bean4.getAmount() + 1); - } - bean44 = tempMap.get(total + sterilizationType2 + SterilizationRecord.MONITOR_RESULT_QUALIFIED); - if (bean44 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean44.setAmount(bean44.getAmount() + 1); - } - - bean5 = tempMap.get(name + sterilizationPurpose2 + SterilizationRecord.MONITOR_RESULT_QUALIFIED); - if (bean5 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean5.setAmount(bean5.getAmount() + 1); - } - bean55 = tempMap.get(total + sterilizationPurpose2 + SterilizationRecord.MONITOR_RESULT_QUALIFIED); - if (bean55 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean55.setAmount(bean55.getAmount() + 1); - } - } - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(result1); - } - - - sql = - "select 'success' type,s.name name,count(*) amount " - + "from TousseInstance ti " - + "join SterilizationRecord sr on sr.id=ti.sterilizationRecord_id join Sterilizer s on s.id=sr.sterilizer_id " - + "where " + betweenSql + orgUnitCodingConditionSql + sterilizerNameConditionSql + " group by s.name " - + "union all " - + "select 'failure' type,t1.name name,count(*) amount " - + "from(" - + "select s.name " - + "from SterilizationRecord sr join Sterilizer s on s.id=sr.sterilizer_id " - + "join sterilization_reviewed sre on sre.sterilizationRecord_id=sr.id " - + "join ReviewedBasket rb on rb.id=sre.reviewedBasket_id " - + "join TousseInstance ti on ti.reviewBasket_id=rb.id " - + "where sr.status='" + SterilizationRecord.STERILIZATION_STATUS_FAILURE + "' and ti.sterilizationRecord_id is null " - + "and " + betweenSql + orgUnitCodingConditionSql + sterilizerNameConditionSql - + "union all " - + "select s.name " - + "from SterilizationRecord sr join Sterilizer s on s.id=sr.sterilizer_id " - + "join sterilization_tousseInstance st on st.sterilizationRecord_id=sr.id " - + "join TousseInstance ti on ti.id=st.tousseInstance_id " - + "where sr.status='" + SterilizationRecord.STERILIZATION_STATUS_FAILURE + "' and ti.sterilizationRecord_id is null " - + "and " + betweenSql + orgUnitCodingConditionSql + sterilizerNameConditionSql - + ") t1 group by t1.name " - ; - - ResultSet result2 = objectDao.executeSql(sql); - try { - while(result2.next()){ - String type = StringTools.defaultString(result2.getString("type")); - String name = StringTools.defaultString(result2.getString("name")); - int amount = result2.getInt("amount"); - //出炉灭菌包 - TousseSterilizationInspectSituationBean bean6 = null; - TousseSterilizationInspectSituationBean bean66 = null; - if (StringTools.equals(type, "success")) { - bean6 = tempMap.get(name + tousseAmountTypeTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); - if (bean6 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean6.setAmount(bean6.getAmount() + amount); - } - bean66 = tempMap.get(total + tousseAmountTypeTag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); - if (bean66 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean66.setAmount(bean66.getAmount() + amount); - } - } else { - bean6 = tempMap.get(name + tousseAmountTypeTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - if (bean6 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean6.setAmount(bean6.getAmount() + amount); - } - bean66 = tempMap.get(total + tousseAmountTypeTag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - if (bean66 != null) { //正常情况下不会出现null的,为了保险还是处理一下空指针,为空不处理 - bean66.setAmount(bean66.getAmount() + amount); - } - } - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(result2); - } - - //计算比率 - for (String tag : tagList) { - TousseSterilizationInspectSituationBean qualifiedBean = tempMap.get(total + tag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); //正常情况这里不会出现空指针的,所以下面没有处理空指针 - TousseSterilizationInspectSituationBean unqualifiedBean = tempMap.get(total + tag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - Integer qualifiedTotal = qualifiedBean.getAmount(); //合格总数 - Integer unqualifiedTotal = unqualifiedBean.getAmount(); //不合格总数 - - TousseSterilizationInspectSituationBean proportionBean1= tempMap.get(proportion + tag + SterilizationRecord.MONITOR_RESULT_QUALIFIED); - TousseSterilizationInspectSituationBean proportionBean2= tempMap.get(proportion + tag + SterilizationRecord.MONITOR_RESULT_UNQUALIFIED); - - int qualifiedProportion = 0; - Integer temp = qualifiedTotal + unqualifiedTotal; - if (temp != null && temp.intValue() > 0) { - qualifiedProportion = new BigDecimal(qualifiedTotal) - .divide(new BigDecimal(temp),13,RoundingMode.HALF_UP) - .multiply(new BigDecimal(100)).intValue(); - proportionBean1.setAmount(qualifiedProportion); - proportionBean2.setAmount(100 - qualifiedProportion); - } else { - proportionBean1.setAmount(0); - proportionBean2.setAmount(0); - } - } - - for (Entry entry : tempMap.entrySet()) { - list.add(entry.getValue()); - } - } - return list; + return tousseSterilizationInspectSituationHelper.getTousseSterilizationInspectSituationBeans(monthSearch, sterilizationType, sterilizationPurpose, departCodings, sterilizerNames); } @Override