Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r33741 -r33743 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33741) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33743) @@ -8667,10 +8667,10 @@ String sqlLengthFunctionName = DatabaseUtil.getSqlLengthFunctionName(dbConnection); params.sqlLengthFunctionName = sqlLengthFunctionName; //1.计算申请科室分组为【内部代理灭菌】的【代理灭菌】处理【包数】 2.计算申请科室分组为【临床外部代理灭菌】的【外部代理灭菌】处理【包数】 取数为两者总和 - params.extraQuery = " and (ti.proxyDisinfection_id is not null " - + getInOrgUnitGroupSql("ti.departCoding", "内部代理灭菌") + params.extraQuery = " and ( " + + getProxydisinfectionOrgUnitGroupSql("内部代理灭菌") + " or ti.foreignProxyItem_id is not null " - + getInOrgUnitGroupSql("ti.departCoding", "临床外部代理灭菌") + + getForeignproxyOrgUnitGroupSql("临床外部代理灭菌") + ") "; //灭菌记录 sql += String.format(" union all select 3 orderNumber, '临床各类包' firstColumnName ,'⑥消毒班' secondColumnName,sum(tl.amount) amount from (" @@ -8789,7 +8789,7 @@ + "' "; //统计处理科室为【大院供应室】装配任务组为【布类班】科室分组为【内部代理灭菌】器械包种类为【手术布类包】的【装配】的【包数】X1 params.extraQuery = getInstrumentSetTypeSql("手术布类包","in") - + getInOrgUnitGroupSql("ti.departCoding", "内部代理灭菌"); + + getProxydisinfectionOrgUnitGroupSql("内部代理灭菌"); params.taskGroupSqlWithAliasOfTousseDefinitionIsTd = " and tdc.taskGroup='布类班' "; sql += String.format(" union all select 8 orderNumber,'手术布类包' firstColumnName ,'④布类班' secondColumnName,sum(tl.amount) amount from (" +dataIndex.getWorkAmountByPackageSQL("配包数量", params) @@ -8966,11 +8966,44 @@ + "join instrumentSetType ist on ist.id=istt.instrumentSetTypeId where ist.name='"+ instrumentSetType +"')"; } /** - * 获取过滤科室分组的sql + * 获取代理灭菌包过滤科室分组的sql * @param field 过滤的字段 * @param orgUnitGroups 科室分组名称 * @return */ + private String getProxydisinfectionOrgUnitGroupSql(String orgUnitGroups){ + String sql = " and ti.proxydisinfection_id in( select ip.id from OrgUnit ou " + + " join Org_OrgGroup oo on oo.orgUnitId=ou.id " + + " join OrgUnitGroup oug on oug.id=oo.orgGroupId " + + " join invoicePlan ip on ip.departCoding=ou.orgUnitCoding " + + " where ip.type='"+ InvoicePlan.TYPE_PROXYDISINFECTION +"' " + + SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("oug.name", orgUnitGroups, ",") + + ")"; + return sql; + } + /** + * 获取外部代理灭菌包过滤科室分组的sql + * @param field 过滤的字段 + * @param orgUnitGroups 科室分组名称 + * @return + */ + private String getForeignproxyOrgUnitGroupSql(String orgUnitGroups){ + String sql = " and ti.foreignproxyitem_id in( select fpi.id from OrgUnit ou " + + " join Org_OrgGroup oo on oo.orgUnitId=ou.id " + + " join OrgUnitGroup oug on oug.id=oo.orgGroupId " + + " join invoicePlan ip on ip.departCoding=ou.orgUnitCoding " + + " join ForeignProxyItem fpi on fpi.invoicePlanID=ip.id " + + " where 1=1 " + + SqlUtils.getWhereSqlByfilterFieldAndStringValueAndSeparator("oug.name", orgUnitGroups, ",") + + ")"; + return sql; + } + /** + * 获取代理灭菌单申请科室的过滤 + * @param field + * @param orgUnitGroups + * @return + */ private String getInOrgUnitGroupSql(String field,String orgUnitGroups){ String sql = " and "+ field + " in( select ou.orgUnitCoding from OrgUnit ou " + " join Org_OrgGroup oo on oo.orgUnitId=ou.id "