Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/reportoption/GoodsOption.java =================================================================== diff -u -r33894 -r34891 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/reportoption/GoodsOption.java (.../GoodsOption.java) (revision 33894) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/reportoption/GoodsOption.java (.../GoodsOption.java) (revision 34891) @@ -38,6 +38,7 @@ private String model; public static final String MODEL_TOUSSEWORKLOAD = "器械包工作量"; + public static final String MODEL_RECYCLEMATERIALDETAIL = "回收器械材料明细"; public static final String MODEL_APPARATUS = "各类型输液器"; public static final String MODEL_TOUSSEDELIVER = "器械包发货统计"; public static final String MODEL_TOUSSEDELIVERDETAIL = "器械包发货统计明细"; Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r34868 -r34891 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 34868) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 34891) @@ -19252,6 +19252,37 @@ sql += " and po5.specification = '" + sp + "' "; } } + String orgunitCode = ""; + LoginUserData user = AcegiHelper.getLoginUser(); + if(user != null){ + orgunitCode = user.getOrgUnitCodingFromSupplyRoomConfig(); + } + // 用户自定义需要查询的器械 + GoodsOption option = goodsOptionManager.getGoodsOption(GoodsOption.MODEL_RECYCLEMATERIALDETAIL, orgunitCode); + if (option != null && StringUtils.isNotBlank(option.getValue())) { + Set ids = SqlUtils.splitStringToSet(option.getValue(), ";", true); + //不能直接使用id来过滤 因为可能有同名 id却不同的数据 + List mds = objectDao.findByHql("select po from " + MaterialDefinition.class.getSimpleName() + " po where " + + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.id", ids)); + if(CollectionUtils.isNotEmpty(mds)){ + sql += " and ("; + for (int i = 0; i < mds.size(); i++) { + MaterialDefinition md = mds.get(i); + String goodsName = md.getName(); + String sp = md.getSpecification(); + sql += " po5.name = '" + goodsName + "'"; + if(StringUtils.isBlank(sp)){ + sql += " and (po5.specification is null or po5.specification = '')"; + }else{ + sql += " and po5.specification = '" + sp + "' "; + } + if(i < mds.size() - 1){ + sql += " or "; + } + } + sql += ") "; + } + } sql += " order by po1.id asc"; ResultSet rs = objectDao.executeSql(sql); try { Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r34790 -r34891 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 34790) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 34891) @@ -63,6 +63,7 @@ import com.forgon.disinfectsystem.entity.adverseeventrecord.AdverseEventRecord; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntry; +import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.reportoption.GoodsOption; import com.forgon.disinfectsystem.entity.basedatamanager.reportoption.WorkScoreConfig; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; @@ -4686,6 +4687,26 @@ jSONArray.add(jSONObject); } } + } else if(GoodsOption.MODEL_RECYCLEMATERIALDETAIL.equals(model)){ + Set ids = SqlUtils.splitStringToSet(value, ";", true); + List mds = objectDao.findByHql("select po from " + MaterialDefinition.class.getSimpleName() + " po where " + + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.id", ids)); + if(CollectionUtils.isNotEmpty(mds)){ + Map mdMap = new HashMap(); + for (MaterialDefinition md : mds) { + mdMap.put(md.getId() + "", md); + } + for (String idStr : nameArray) { + JSONObject jSONObject = new JSONObject(); + MaterialDefinition md = mdMap.get(idStr); + if(md == null){ + continue; + } + jSONObject.put("name", md.getName()); + jSONObject.put("id", md.getId()); + jSONArray.add(jSONObject); + } + } }else{ for (String name : nameArray) { JSONObject jSONObject = new JSONObject();