Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManager.java =================================================================== diff -u -r32408 -r41297 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManager.java (.../QualityMonitoringInstanceManager.java) (revision 32408) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManager.java (.../QualityMonitoringInstanceManager.java) (revision 41297) @@ -6,6 +6,7 @@ import net.sf.json.JSONArray; import net.sf.json.JSONObject; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoring.QualityMonitoringInstance; import com.forgon.tools.hibernate.BasePoManager; @@ -15,9 +16,24 @@ */ public interface QualityMonitoringInstanceManager extends BasePoManager { + public boolean checkIsUniqueWithBarcodeAndInspectItem(String id, String barcode, String formDefinitionId); + /** + * 构造质量监测列表查询的sql(hql)语句条件 + * @param firstSupplyRoom 科室供应室配置 的一级供应室 + * @param currentOrgUnitCode 当前登录用户的当前所在科室 + * @param orgUnitCoding 选择查询的供应室编码(用于pc端的供应室下拉选择框) + * @param type 类型。如质量监测或定期监测 + * @param samplingTime 起止时间(用于pda端) + * @param monitorName 监测项名称(用于pda端) + * @return + */ + public String buildQueryQualityMonitoringInstanceCondition(SupplyRoomConfig firstSupplyRoom, + String currentOrgUnitCode,String orgUnitCoding,String type,String samplingTime,String monitorName); + + /** * 保存质量测试记录. * @param qmInstance 监测实例对象 * @param requestParams 请求参数的map Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r41241 -r41297 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 41241) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 41297) @@ -133,6 +133,7 @@ import com.forgon.disinfectsystem.entity.packing.ReviewedBasket; import com.forgon.disinfectsystem.entity.printRecyclingApplicationConfig.PrintConfig; import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoring.QualityMonitoringInstance; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityMonitoringDefinition; import com.forgon.disinfectsystem.entity.recall.RecallRecord; import com.forgon.disinfectsystem.entity.recall.RecallRecordItem; import com.forgon.disinfectsystem.entity.receiverecord.ReceiveRecord; @@ -6347,22 +6348,20 @@ int count = params.optInt("count"); String samplingTime = params.optString("samplingTime"); String monitorName = params.optString("monitorName"); - String where = "orgUnitCoding=:orgUnitCoding and type=:type"; - Map map = new HashMap(); - map.put("orgUnitCoding", AcegiHelper.getCurrentOrgUnitCode()); - map.put("type", "质量监测"); - if(StringUtils.isNotBlank(monitorName) && !Constants.STR_ALL.equals(monitorName)){ - where += " and name=:name"; - map.put("name", monitorName); + + String currentOrgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); + SupplyRoomConfig firstSupplyRoom = supplyRoomConfigManager + .getFirstSupplyRoomConfig(); + //【质量监测记录】的操作区域中新增筛选项“选择供应室”,用来筛选“录入科室”、“处理科室”为指定科室的质量监测记录;ZSRY-63 + //字段“选择供应室”只显示在一级供应室的“质量监测记录列表”中,二级供应室、临床科室不显示; + String orgUnitCoding = null; + //pc端一级供应室的用户进入质量监测列表页面,默认下拉选择的供应室为当前用户所在科室,所以orgUnitCoding先默认赋值为当前用户所在科室 + if(firstSupplyRoom != null && StringUtils.equals(firstSupplyRoom.getOrgUnitCoding(), currentOrgUnitCode)){ + orgUnitCoding = currentOrgUnitCode; } - if(StringUtils.isNotBlank(samplingTime)){ - //samplingTime的格式:"2018-09-04 00:00:00;2018-09-04 23:59:59"; - String[] times = samplingTime.split(Constants.IDS_SEPARATOR); - if(times.length == 2){ - where = String.format("%s and %s", where,dateQueryAdapter.dateAreaSql("dateTime", times[0], times[1])); - } - } - List list = qualityMonitoringInstanceManager.getByHql(where, map, first, count, "dateTime desc"); + String whereSql = qualityMonitoringInstanceManager.buildQueryQualityMonitoringInstanceCondition(firstSupplyRoom, + currentOrgUnitCode,orgUnitCoding ,FormDefinition.FOMRTYPE_QUALITYMONITORING,samplingTime, monitorName); + List list = qualityMonitoringInstanceManager.getByHql(whereSql, first, count, "createDate desc"); JsonConfig jc = JSONUtil.buildJsonConfig("id","name","dateTime","createUserName"); jc.registerJsonValueProcessor(Date.class,_defaultDateJsonValueProcessor2); return JSONUtil.buildJsonObject(true, JSONArray.fromObject(list, jc)).toString(); @@ -6424,22 +6423,15 @@ int count = params.optInt("count"); String samplingTime = params.optString("samplingTime"); String monitorName = params.optString("monitorName"); - String where = "orgUnitCoding=:orgUnitCoding and type=:type"; - Map map = new HashMap(); - map.put("orgUnitCoding", AcegiHelper.getCurrentOrgUnitCode()); - map.put("type", "定期监测"); - if(StringUtils.isNotBlank(monitorName) && !Constants.STR_ALL.equals(monitorName)){ - where += " and name=:name"; - map.put("name", monitorName); - } - if(StringUtils.isNotBlank(samplingTime)){ - //samplingTime的格式:"2018-09-04 00:00:00;2018-09-04 23:59:59"; - String[] times = samplingTime.split(Constants.IDS_SEPARATOR); - if(times.length == 2){ - where = String.format("%s and %s", where,dateQueryAdapter.dateAreaSql("dateTime", times[0], times[1])); - } - } - List list = qualityMonitoringInstanceManager.getByHql(where, map, first, count, "dateTime desc"); + + String currentOrgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); + SupplyRoomConfig firstSupplyRoom = supplyRoomConfigManager + .getFirstSupplyRoomConfig(); + //【质量监测记录】的操作区域中新增筛选项“选择供应室”,用来筛选“录入科室”、“处理科室”为指定科室的质量监测记录;ZSRY-63 + //字段“选择供应室”只显示在一级供应室的“质量监测记录列表”中,二级供应室、临床科室不显示; + String whereSql = qualityMonitoringInstanceManager.buildQueryQualityMonitoringInstanceCondition(firstSupplyRoom, + currentOrgUnitCode,null ,FormDefinition.FOMRTYPE_PERIODICMONITORING,samplingTime, monitorName); + List list = qualityMonitoringInstanceManager.getByHql(whereSql, first, count, "createDate desc"); JsonConfig jc = JSONUtil.buildJsonConfig("id","name","dateTime","createUserName"); jc.registerJsonValueProcessor(Date.class,_defaultDateJsonValueProcessor2); return JSONUtil.buildJsonObject(true, JSONArray.fromObject(list, jc)).toString(); Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/dwr/table/QualityMonitoringInstanceTableManager.java =================================================================== diff -u -r37074 -r41297 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/dwr/table/QualityMonitoringInstanceTableManager.java (.../QualityMonitoringInstanceTableManager.java) (revision 37074) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/dwr/table/QualityMonitoringInstanceTableManager.java (.../QualityMonitoringInstanceTableManager.java) (revision 41297) @@ -6,13 +6,15 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import com.forgon.component.grid.GridManager; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoring.QualityMonitoringInstance; import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityMonitoringDefinition; +import com.forgon.disinfectsystem.qualitymonitoring.instance.service.QualityMonitoringInstanceManager; import com.forgon.tools.string.StringTools; import com.forgon.tools.util.SqlUtils; @@ -24,6 +26,9 @@ private GridManager gridManager; private SupplyRoomConfigManager supplyRoomConfigManager; + + @Autowired + private QualityMonitoringInstanceManager qualityMonitoringInstanceManager; public void setGridManager(GridManager gridManager) { this.gridManager = gridManager; @@ -37,37 +42,18 @@ public String findQualityMonitoringInstanceTableList( Map> parameterMap) { String currentOrgUnitCode = AcegiHelper.getLoginUser().getCurrentOrgUnitCode(); - String sql = " where 1=1 "; SupplyRoomConfig firstSupplyRoom = supplyRoomConfigManager .getFirstSupplyRoomConfig(); Map sqlWhereParamMap = gridManager .getParamFromView(parameterMap); - if (firstSupplyRoom != null && StringUtils.equals(firstSupplyRoom.getOrgUnitCoding(),currentOrgUnitCode)) { - //【质量监测记录】的操作区域中新增筛选项“选择供应室”,用来筛选“录入科室”、“处理科室”为指定科室的质量监测记录;ZSRY-63 - //字段“选择供应室”只显示在一级供应室的“质量监测记录列表”中,二级供应室、临床科室不显示; - String orgUnitCoding = sqlWhereParamMap.get("orgUnitCoding"); - if(StringUtils.isNotBlank(orgUnitCoding)){ - Collection orgUnitCodingColl = StringTools.toCollectionIgnoreNullAndBlank(orgUnitCoding, ","); - if(CollectionUtils.isNotEmpty(orgUnitCodingColl)){ - String orgUnitCodingInSql = SqlUtils.getStringFieldInLargeCollectionsPredicate("po.orgUnitCoding", orgUnitCodingColl); - String handleDepartCodingInSql = SqlUtils.getStringFieldInLargeCollectionsPredicate("qmd.handleDepartCoding", orgUnitCodingColl); - String orgUnitCodingSql = String.format(" and (%s or exists (select 1 from %s qmd where %s " - + " and qmd.id = po.formDefinition.id))", - orgUnitCodingInSql, - QualityMonitoringDefinition.class.getSimpleName(), - handleDepartCodingInSql); - sql += orgUnitCodingSql; - } - } - }else if(StringUtils.isNotBlank(currentOrgUnitCode)){ - sql = "where po.orgUnitCoding ='" + currentOrgUnitCode + "'"; - } - + //【质量监测记录】的操作区域中新增筛选项“选择供应室”,用来筛选“录入科室”、“处理科室”为指定科室的质量监测记录;ZSRY-63 + //字段“选择供应室”只显示在一级供应室的“质量监测记录列表”中,二级供应室、临床科室不显示; + String orgUnitCoding = sqlWhereParamMap.get("orgUnitCoding"); String type = sqlWhereParamMap.get("type"); - sql += " and po.type = '" + type + "'"; - + String whereSql = qualityMonitoringInstanceManager.buildQueryQualityMonitoringInstanceCondition(firstSupplyRoom, + currentOrgUnitCode,orgUnitCoding,type,null,null); return gridManager.renderGrid(parameterMap, - QualityMonitoringInstance.class.getSimpleName(), sql, new String[] { + QualityMonitoringInstance.class.getSimpleName(), " where " + whereSql, new String[] { "tousseInstance", "qualityMonitorings","images" }); } Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManagerImpl.java =================================================================== diff -u -r41241 -r41297 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManagerImpl.java (.../QualityMonitoringInstanceManagerImpl.java) (revision 41241) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManagerImpl.java (.../QualityMonitoringInstanceManagerImpl.java) (revision 41297) @@ -40,6 +40,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.imagefilemanager.ImageFile; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.becleanitem.ClassifiedItem; @@ -172,6 +173,40 @@ this.dateQueryAdapter = dateQueryAdapter; } + public String buildQueryQualityMonitoringInstanceCondition(SupplyRoomConfig firstSupplyRoom, + String currentOrgUnitCode,String orgUnitCoding,String type,String samplingTime,String monitorName){ + String where = " 1=1 "; + if (firstSupplyRoom != null && StringUtils.equals(firstSupplyRoom.getOrgUnitCoding(),currentOrgUnitCode)) { + if(StringUtils.isNotBlank(orgUnitCoding)){ + Collection orgUnitCodingColl = StringTools.toCollectionIgnoreNullAndBlank(orgUnitCoding, ","); + if(CollectionUtils.isNotEmpty(orgUnitCodingColl)){ + String orgUnitCodingInSql = SqlUtils.getStringFieldInLargeCollectionsPredicate("po.orgUnitCoding", orgUnitCodingColl); + String handleDepartCodingInSql = SqlUtils.getStringFieldInLargeCollectionsPredicate("qmd.handleDepartCoding", orgUnitCodingColl); + String orgUnitCodingSql = String.format(" and (%s or exists (select 1 from %s qmd where %s " + + " and qmd.id = po.formDefinition.id))", + orgUnitCodingInSql, + QualityMonitoringDefinition.class.getSimpleName(), + handleDepartCodingInSql); + where += orgUnitCodingSql; + } + } + }else if(StringUtils.isNotBlank(currentOrgUnitCode)){ + where = " po.orgUnitCoding ='" + currentOrgUnitCode + "'"; + } + where += " and po.type = '" + type + "'"; + if(StringUtils.isNotBlank(monitorName) && !Constants.STR_ALL.equals(monitorName)){ + where += " and name='" + monitorName + "'"; + } + if(StringUtils.isNotBlank(samplingTime)){ + //samplingTime的格式:"2018-09-04 00:00:00;2018-09-04 23:59:59"; + String[] times = samplingTime.split(Constants.IDS_SEPARATOR); + if(times.length == 2){ + where = String.format("%s and %s", where,dateQueryAdapter.dateAreaSql("dateTime", times[0], times[1])); + } + } + return where; + } + @Override public boolean checkIsUniqueWithBarcodeAndInspectItem(String id, String barcode, String formDefinitionId) {