Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/DataIndex.java =================================================================== diff -u -r25269 -r25285 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/DataIndex.java (.../DataIndex.java) (revision 25269) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/DataIndex.java (.../DataIndex.java) (revision 25285) @@ -154,7 +154,7 @@ } /** - * 查询材料清洗数量的sql,统计itemType是材料的类型 + * 查询器械清洗数量的sql,统计itemType是材料的类型,并且ClassifyItem的包定义不为空,即器械有所属的包,属于拆包清洗的器械 * @return */ public static String getWashMaterialAmountSqlFromItemTypeIsMaterial(){ @@ -165,6 +165,19 @@ } /** + * 查询器械清洗数量的sql,统计itemType是材料的类型,并且ClassifyItem的包定义为空,即单独添加进清洗篮筐的器械, + * 例如在包装补充器械时,将器械放入了清洗篮筐,然后登记清洗记录 + * @return + */ + public static String getWashMaterialAmountSqlFromItemTypeIsMaterialWithoutTousseDefinition(){ + String sql = "from WashAndDisinfectRecord wr,ClassifyBasket_WashRecord cw,ClassifyBasket cb,ClassifiedItem ci " + + "where cw.WashAndDisinfectRecord_ID = wr.id and cb.id = cw.ClassifyBasket_ID and ci.classifybasket_id = cb.id and ci.tousseDefinitionID is null " + + "and ci.itemType = '材料'"; + return sql; + } + + + /** * 查询材料清洗数量的sql,统计itemType为不是材料的类型 * @return */ @@ -180,7 +193,7 @@ * @return */ public static String getWashMaterialAmountSqlFromTousseTypeIsMaterial(){ - String sql = "from WashAndDisinfectRecord wr, WashRecord_WashMaterial wm,WashAndDisinfectRecordMaterial wrm,MaterialDefinition md " + String sql = "from WashAndDisinfectRecord wr, WashRecord_WashMaterial wm,WashAndDisinfectRecordMaterial wrm, MaterialDefinition md " + "where wm.WashAndDisinfectRecord_ID = wr.id and wrm.id = wm.WashAndDisinfectMaterial_ID and wrm.materialDefinition_id = md.id "; return sql; } @@ -266,6 +279,18 @@ obj.taskGroupSqlWithAliasOfTousseDefinitionIsTd, obj.tousseGroupSqlWithAliasOfTousseDefinitionIsTd, obj.tousseTypeAndPackageSizeSql); + + + // 统计清洗项的itemType为材料的物品,器械是单独添加进清洗篮筐,没有关联的包定义 + amountSql += " union all "; + amountSql += String + .format("select " + obj.monthlyStr + " monthstr,sum(ci.amount) materialCount " + + getWashMaterialAmountSqlFromItemTypeIsMaterialWithoutTousseDefinition() + + " and wr.endDate %s %s and wr.washMaterialAmount <> 0 " + + "group by " + + obj.monthlyStr, + obj.betweenSql, + SqlUtils.get_InSql_Extra("wr.orgUnitCoding", obj.querySupplyRoom)); // 统计清洗项的itemType不为材料的物品,包括整包清洗的器械包 amountSql += " union all "; @@ -282,7 +307,7 @@ obj.tousseGroupSqlWithAliasOfTousseDefinitionIsTd, obj.tousseTypeAndPackageSizeSql); - // 判断是否需要统计单独清洗的材料的数量 + // 判断是否需要统计单独清洗的器械的数量,该器械没有装入清洗篮筐 if ("全部".equals(obj.tousseTypes) || StringUtils.isBlank(obj.tousseTypes) || obj.tousseTypes.indexOf("材料") >= 0) { @@ -311,6 +336,20 @@ obj.taskGroupSqlWithAliasOfTousseDefinitionIsTd, obj.tousseGroupSqlWithAliasOfTousseDefinitionIsTd, obj.tousseTypeAndPackageSizeSql); + + amountSql += " union all "; + // 统计清洗项的itemType为材料的物品,器械是单独添加进清洗篮筐,没有关联的包定义 + amountSql += String + .format("select case when (cb.personInCharge is null or cb.personInCharge = '') then wr.operator else cb.personInCharge end userName,ci.amount amount,ci.tousseNameForMaterial tousseName,'材料' tousseType " + + getWashMaterialAmountSqlFromItemTypeIsMaterialWithoutTousseDefinition() + + " and wr.endDate %s %s and wr.washMaterialAmount <> 0 %s %s %s %s ", + obj.betweenSql, + SqlUtils.get_InSql_Extra("wr.orgUnitCoding", + obj.querySupplyRoom), + obj.isDisableIDCardSqlWithAliasOfTousseDefinitionIsTd, + obj.taskGroupSqlWithAliasOfTousseDefinitionIsTd, + obj.tousseGroupSqlWithAliasOfTousseDefinitionIsTd, + obj.tousseTypeAndPackageSizeSql); // 统计清洗项的itemType不为材料的物品,包括整包清洗的器械包 amountSql += " union all "; @@ -1064,7 +1103,30 @@ return sql; } + /** + * 获取质量监测查询的sql,根据责任环节的名称,查询出现的有问题的物品的数量 + * @param responsibilityPart 责任环节 + * @param likeSql like查询语句,可能包含多个like条件 + * @param obj 查询条件 + * @return + */ + public static String getUnQualifiedMonitorAmountSql(String responsibilityPart, String likeSql, ReportQueryParams obj) { + + String sql = String + .format(" from QualityMonitoringInstance qi ,FormInstance fi,FormDefinition fd, " + + "QualityMonitoringDefinition qd,QualityMonitoringGoods qmd " + + "where qi.id = fi.id and fi.formDefinition_id = fd.id and fd.id = qd.id " + + "and qi.id=qmd.qualityMonitoringInstance_id %s " + + "and qd.responsibilitypart = '%s' and fd.formType = '质量监测' " + + "and qi.datetime %s %s ", likeSql, responsibilityPart, + obj.betweenSql, SqlUtils.get_InSql_Extra( + "fi.orgUnitCoding", obj.querySupplyRoom)); + + return sql; + } + + /** * 获取各个环节的操作人的过滤sql语句(注意:测方法只是用于报表类的getTousseWorkLoadData方法用) * @param field 操作人属性名称