Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r40302 -r40495 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 40302) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 40495) @@ -128,6 +128,7 @@ import com.forgon.disinfectsystem.entity.packing.IDCardInfoForPackingTask; import com.forgon.disinfectsystem.entity.packing.PackingTask; import com.forgon.disinfectsystem.entity.packing.ReviewedBasket; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityMonitoringDefinition; import com.forgon.disinfectsystem.entity.receiverecord.ReceiveRecord; import com.forgon.disinfectsystem.entity.receiverecord.ReceiveRecordDiposableGoodsItem; import com.forgon.disinfectsystem.entity.receiverecord.ReceiveRecordItem; @@ -15386,4 +15387,117 @@ } return obj; } + + @Override + public String getTousseInstanceResponsiblePersonByQualityMonitoringResponsibilityPart(TousseInstance tousseInstance, QualityMonitoringDefinition qualityMonitoringConfig) { + //责任人 + String responsiblePerson = ""; + if(tousseInstance == null || qualityMonitoringConfig == null){ + return responsiblePerson; + } + //启用添加多个责任人功能HZSRMYY-90 + boolean enableAddingMultipleResponsiblePersons = ConfigUtils.getSystemSetConfigByNameBool("enableAddingMultipleResponsiblePersons"); + String responsibilityPart = qualityMonitoringConfig.getResponsibilityPart(); + if (StringUtils.isNotBlank(responsibilityPart)) { + List responsiblePersonList = new ArrayList(); + if(enableAddingMultipleResponsiblePersons){ + //回收清点 + if(responsibilityPart + .indexOf(QualityMonitoringDefinition.QUALITYMONITORING_MODULE_NAME_RECYCLING) != -1){ + if(StringUtils.isNotBlank(tousseInstance.getRecyclingUser()) && !responsiblePersonList.contains(tousseInstance.getRecyclingUser())){ + responsiblePersonList.add(tousseInstance.getRecyclingUser()); + } + } + + //清洗消毒 + if(responsibilityPart + .indexOf(QualityMonitoringDefinition.QUALITYMONITORING_MODULE_NAME_WASH) != -1){ + //取最后一次清洗记录的清洗人或者清洗责任人 + String washOperator = getTousseInstanceLastWashOperator(tousseInstance); + if(StringUtils.isNotBlank(washOperator) && !responsiblePersonList.contains(washOperator)){ + responsiblePersonList.add(washOperator); + } + } + + //发货管理 + if(responsibilityPart + .indexOf(QualityMonitoringDefinition.QUALITYMONITORING_MODULE_NAME_INVOICE) != -1){ + String invoiceSender = StringUtils.isNotBlank(tousseInstance.getInvoiceSender2()) ? tousseInstance.getInvoiceSender2() : tousseInstance.getInvoiceSender(); + if(StringUtils.isNotBlank(invoiceSender) && !responsiblePersonList.contains(invoiceSender)){ + responsiblePersonList.add(invoiceSender); + } + } + } + + // 装配管理 + if (responsibilityPart + .indexOf(QualityMonitoringDefinition.QUALITYMONITORING_MODULE_NAME_PACKING) != -1) { + if(StringUtils.isNotBlank(tousseInstance.getOperator()) && !responsiblePersonList.contains(tousseInstance.getOperator())){ + responsiblePersonList.add(tousseInstance.getOperator()); + } + } + // 审核打包 + if (responsibilityPart + .indexOf(QualityMonitoringDefinition.QUALITYMONITORING_MODULE_NAME_REVIEW) != -1) { + // 去重 + if(StringUtils.isNotBlank(tousseInstance.getReviewer()) && !responsiblePersonList.contains(tousseInstance.getReviewer())){ + responsiblePersonList.add(tousseInstance.getReviewer()); + } + } + // 灭菌管理 + if (responsibilityPart + .indexOf(QualityMonitoringDefinition.QUALITYMONITORING_MODULE_NAME_STERILIZATION) != -1) { + if (DatabaseUtil.isPoIdValid(tousseInstance.getSterilizationRecord_id())) { + // 去重 + String sterilizationUser = tousseInstance.getSterilizationUser(); + if(StringUtils.isNotBlank(sterilizationUser) && !responsiblePersonList.contains(sterilizationUser)){ + responsiblePersonList.add(sterilizationUser); + } + } + } + responsiblePerson = StringTools.join(responsiblePersonList, ";"); + } + return responsiblePerson; + } + + /** + * 查询器械包实例最后一次关联的清洗记录的清洗人 + * @param tousseInstance 器械包信息 + * @return 最后一次清洗记录的清洗人 + */ + private String getTousseInstanceLastWashOperator(TousseInstance tousseInstance) { + if(tousseInstance == null || !DatabaseUtil.isPoIdValid(tousseInstance.getRecyclingRecordId())){ + return null; + } + StringBuffer sqlBuffer = new StringBuffer("select wdr.washPersonInCharge, wdr.operator from ClassifyBasket_RecyclingRecord cbrr ") + .append(" join ClassifyBasket_WashRecord cbwr on cbwr.ClassifyBasket_ID = cbrr.ClassifyBasket_ID ") + .append(" join WashAndDisinfectRecord wdr on wdr.id = cbwr.WashAndDisinfectRecord_ID ") + .append(" where cbrr.RecyclingRecord_ID = ") + .append(tousseInstance.getRecyclingRecordId()) + .append(" order by wdr.startDate desc "); + + //String washPersonInCharge = null; + String operator = null; + ResultSet rs = null; + try { + rs = objectDao.executeSql(sqlBuffer.toString()); + while(rs.next()){ + //washPersonInCharge = rs.getString("washPersonInCharge"); + operator = rs.getString("operator"); + break; + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + + //enableAddingMultipleResponsiblePersons启用添加多个责任人功能HZSRMYY-90 + /*if(ConfigUtils.getSystemSetConfigByNameBool("enableAddingMultipleResponsiblePersons")){ + return operator; + }*/ + + return operator; + } + } Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/action/QualityMonitoringDefinitionAction.java =================================================================== diff -u -r40302 -r40495 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/action/QualityMonitoringDefinitionAction.java (.../QualityMonitoringDefinitionAction.java) (revision 40302) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/action/QualityMonitoringDefinitionAction.java (.../QualityMonitoringDefinitionAction.java) (revision 40495) @@ -34,7 +34,6 @@ import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.StrutsResponseUtils; import com.forgon.tools.date.DateTools; -import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; import com.opensymphony.xwork2.ModelDriven; @@ -291,43 +290,7 @@ throw new SystemException("灭菌炉" + sterilizer.getName() + "的状态为“" + sterilizer.getUseStatus() + "”,请先启用后再登记。"); } } - - String responsibilityPart = qualityMonitoringConfig.getResponsibilityPart(); - if (StringUtils.isNotBlank(responsibilityPart)) { - // 装配管理 - if (responsibilityPart - .indexOf(QualityMonitoringDefinition.QUALITYMONITORING_MODULE_NAME_PACKING) != -1) { - responsiblePerson = appendToSourceStrWithTargetStr( - responsiblePerson, - tousseInstance.getOperator()); - } - // 审核打包 - if (responsibilityPart - .indexOf(QualityMonitoringDefinition.QUALITYMONITORING_MODULE_NAME_REVIEW) != -1) { - // 去重 - if ((";" + responsiblePerson + ";").indexOf((";" - + tousseInstance.getReviewer() + ";")) == -1) { - responsiblePerson = appendToSourceStrWithTargetStr( - responsiblePerson, - tousseInstance.getReviewer()); - } - } - // 灭菌管理 - if (responsibilityPart - .indexOf(QualityMonitoringDefinition.QUALITYMONITORING_MODULE_NAME_STERILIZATION) != -1) { - if (DatabaseUtil.isPoIdValid(tousseInstance.getSterilizationRecord_id())) { - // 去重 - String sterilizationUser = tousseInstance.getSterilizationUser(); - - if ((";" + responsiblePerson + ";") - .indexOf((";" + sterilizationUser + ";")) == -1) { - responsiblePerson = appendToSourceStrWithTargetStr( - responsiblePerson, - sterilizationUser); - } - } - } - } + responsiblePerson = tousseInstanceManager.getTousseInstanceResponsiblePersonByQualityMonitoringResponsibilityPart(tousseInstance, qualityMonitoringConfig); } TousseDefinition ancestorTD = tousseDefinitionManager.get(td.getAncestorID()); @@ -358,22 +321,6 @@ } /** - * 在“原来的字符串”追加“目标字符串”,如果“目标字符串”为空则直接返回“原来的字符串”(之间用分号分隔). - * @param sourceStr 原来的字符串 - * @param targetStr 目标字符串 - * @return - */ - private String appendToSourceStrWithTargetStr(String sourceStr, - String targetStr) { - if (StringUtils.isNotBlank(targetStr)) { - if (sourceStr.length() > 0) { - sourceStr += ";"; - } - sourceStr += targetStr; - } - return sourceStr; - } - /** * 质量监测页面通过篮筐条码和清洗记录id,获取位置信息 * @return */ Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java =================================================================== diff -u -r40302 -r40495 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 40302) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 40495) @@ -24,6 +24,7 @@ import com.forgon.disinfectsystem.entity.packing.IDCardInfoForPackingTask; import com.forgon.disinfectsystem.entity.packing.PackingTask; import com.forgon.disinfectsystem.entity.packing.ReviewedBasket; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityMonitoringDefinition; import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; import com.forgon.disinfectsystem.entity.sterilizationTransition.SterilizationTransition; import com.forgon.disinfectsystem.entity.sterilizationTransition.SterilizationTransitionItemVO; @@ -1462,5 +1463,15 @@ * @param subForeignProxyItemAmount 外部代理物品废弃数量 key:ForeignProxyItemId,value:废弃的数量 */ public void handleSubForeignProxyItemAmount(Map subForeignProxyItemAmount); + + /** + * 查询器械包实例的责任人, + * 责任人取决于“责任环节”,如果是装配管理,则取装配员,如果是审核打包则取审核人,如果是灭菌管理则取灭菌员 + * @param tousseInstance 器械包实例 + * @param qualityMonitoringConfig 质量监测定义 + * @return 器械包实例的责任人 + */ + public String getTousseInstanceResponsiblePersonByQualityMonitoringResponsibilityPart(TousseInstance tousseInstance, + QualityMonitoringDefinition qualityMonitoringConfig); }