Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManagerImpl.java =================================================================== diff -u -r32389 -r32394 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManagerImpl.java (.../QualityMonitoringInstanceManagerImpl.java) (revision 32389) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManagerImpl.java (.../QualityMonitoringInstanceManagerImpl.java) (revision 32394) @@ -8,6 +8,7 @@ import java.util.Date; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -18,6 +19,7 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; +import org.springframework.beans.BeanUtils; import com.forgon.Constants; import com.forgon.databaseadapter.service.DateQueryAdapter; @@ -639,8 +641,11 @@ if(isAll){ // 判断灭菌记录是否整炉重新回收 if(isAllTousseOfSterileRecycle(sterilizeRecordId, qmInstance.getId())){ - throw new SystemException("灭菌记录整炉物品已经重新回收,不允许再次勾选重新回收!"); + throw new SystemException("灭菌记录整炉物品已经重新回收,不允许再次勾选重新回收或重新装配!"); } + if(isAllTousseOfSterileRepacking(sterilizeRecordId, qmInstance.getId())){ + throw new SystemException("灭菌记录整炉物品已经重新装配,不允许再次勾选重新回收或重新装配!"); + } List tousseInstances = getCanRecycleAndRepackingTousseInstances(sterilizeRecordId); //敷料包和不回收的器械包,创建装配任务,其他的包生成申请单 List recycleTousse = new LinkedList(); @@ -658,22 +663,33 @@ }else{ if(isTousseInstanceRecycle(tousseInstanceId, qmInstance.getId())){ TousseInstance tousseInstance = tousseInstanceManager.get(tousseInstanceId); - throw new SystemException(tousseInstance.getTousseName() + "已经重新回收,不允许再次勾选重新回收!"); + throw new SystemException(tousseInstance.getTousseName() + "已经重新回收,不允许再次勾选重新回收或重新装配!"); } + if(isTousseInstanceRepacking(tousseInstanceId, qmInstance.getId())){ + TousseInstance tousseInstance = tousseInstanceManager.get(tousseInstanceId); + throw new SystemException(tousseInstance.getTousseName() + "已经重新装配,不允许再次勾选重新回收或重新装配!"); + } ret = recyclingApplicationManager.recycleTousseInstance(tousseInstanceId , cssdOrgUnit); } }else if(isRepacking && !saved){ //重新装配,已经保存过不处理 if(isAll){ // 判断灭菌记录是否整炉重新装配 if(isAllTousseOfSterileRepacking(sterilizeRecordId, qmInstance.getId())){ - throw new SystemException("灭菌记录整炉物品已经重新装配,不允许再次勾选重新装配!"); + throw new SystemException("灭菌记录整炉物品已经重新装配,不允许再次勾选重新回收或重新装配!"); } + if(isAllTousseOfSterileRecycle(sterilizeRecordId, qmInstance.getId())){ + throw new SystemException("灭菌记录整炉物品已经重新回收,不允许再次勾选重新回收或重新装配!"); + } packingManager.createPackingTaskForRepacking(getCanRecycleAndRepackingTousseInstances(sterilizeRecordId)); }else{ - if(isTousseInstanceRepacking(Long.valueOf(tousseInstanceId), qmInstance.getId())){ + if(isTousseInstanceRepacking(tousseInstanceId, qmInstance.getId())){ TousseInstance tousseInstance = tousseInstanceManager.get(tousseInstanceId); - throw new SystemException(tousseInstance.getTousseName() + "已经重新装配,不允许再次勾选重新装配!"); + throw new SystemException(tousseInstance.getTousseName() + "已经重新装配,不允许再次勾选重新回收或重新装配!"); } + if(isTousseInstanceRecycle(tousseInstanceId, qmInstance.getId())){ + TousseInstance tousseInstance = tousseInstanceManager.get(tousseInstanceId); + throw new SystemException(tousseInstance.getTousseName() + "已经重新回收,不允许再次勾选重新回收或重新装配!"); + } packingManager.createPackingTaskForRepacking(tousseInstanceId); } } @@ -697,15 +713,15 @@ if("是".equals(qmgProperty[4])){ if(isTousseInstanceRecycle(tId, qmInstance.getId())){ TousseInstance tousseInstance = tousseInstanceManager.get(tId); - throw new SystemException(tousseInstance.getTousseName() + "已经重新回收,不允许再次勾选重新回收!"); + throw new SystemException(tousseInstance.getTousseName() + "已经重新回收,不允许再次勾选重新回收或重新装配!"); } // 重新回收 ret = recyclingApplicationManager.recycleTousseInstance(tId , cssdOrgUnit); }else if("是".equals(qmgProperty[5])){ // 重新装配 - if(isTousseInstanceRepacking(Long.valueOf(tId), qmInstance.getId())){ + if(isTousseInstanceRepacking(tId, qmInstance.getId())){ TousseInstance tousseInstance = tousseInstanceManager.get(tId); - throw new SystemException(tousseInstance.getTousseName() + "已经重新装配,不允许再次勾选重新装配!"); + throw new SystemException(tousseInstance.getTousseName() + "已经重新装配,不允许再次勾选重新回收或重新装配!"); } packingManager.createPackingTaskForRepacking(tId); } @@ -798,7 +814,7 @@ * @param tousseInstanceId * @return */ - private boolean isTousseInstanceRepacking(Long tousseInstanceID, Long qmInstanceId) { + private boolean isTousseInstanceRepacking(String tousseInstanceID, Long qmInstanceId) { boolean ret = false; if(!DatabaseUtil.isPoIdValid(tousseInstanceID)){ return ret; @@ -1217,4 +1233,135 @@ return obj; } + @Override + public JSONObject bathSaveQualityMonitoringInstance(QualityMonitoringInstance qualityMonitoringInstance, Map map) { + boolean success = true; + String message = "保存成功!"; + try { + // 抽检器械包和抽检器械,以及和抽检器械包和抽检器械关联的检测项 + String tousseMaterialInstanceInfo = map.get("tousseMaterialInstanceInfo"); + JSONObject tousseMaterialInstanceJSON = JSONObject.fromObject(tousseMaterialInstanceInfo); + if(tousseMaterialInstanceJSON == null){ + throw new RuntimeException("抽检器械和监测项不能都为空"); + } + JSONArray tousseInstanceInfos = tousseMaterialInstanceJSON.optJSONArray("tousseInstanceInfos"); + if(tousseInstanceInfos == null || tousseInstanceInfos.size() == 0){ + throw new RuntimeException("抽检器械和监测项不能都为空"); + } + + // 填写了多少个监测元素信息(抽检器械和监测项),就要保存多少条质量监测监测记录 + for(int i=0 ; i tempMap = new HashMap(); + if(DatabaseUtil.isPoIdValid(qualityMonitoringInstance.getId())){ + tempInstance = qualityMonitoringInstance; + } else { + BeanUtils.copyProperties(qualityMonitoringInstance, tempInstance); + } + // tousseBarcode + "@" + tousseInstanceId + "@" + tousseName + "@" + tousseAmount + "@" + tousseRecycle+ "@" + tousseRePacking+ "@" + order + "@" + tousseDefinitionID + "@" + haveMaterial;" + String tousseInstanceInfo = ""; + // material +"@"+ amount + "@" + position + "@" + order + "@" + tousseDefinitionID; + String materialInfo = ""; + + JSONArray tousseBags = tousseInstanceInfos.optJSONObject(i).optJSONArray("tousseBags"); + if(tousseBags != null && tousseBags.size() > 0){ + for(int j=0;j 0){ + for(int k=0;k 0){ + for(int k=0;k it = configItemOption.keys(); + while(it.hasNext()){ + String key = String.valueOf(it.next()); + Object value = configItemOption.get(key); + if(StringUtils.equals(key.split("_")[0], "configItemOptionSterName")){ + // 质量监测记录的炉号(如果抽检器械扫的第一个包实例id为空时,炉号就取这个值) + tempMap.put("sterilizerName", (String)value); + tempMap.put("configItemOptionSterName", (String)value); + } else if (StringUtils.equals(key.split("_")[0], "configItemOptionSterFre")){ + // 质量监测记录的炉次(如果抽检器械扫的第一个包实例id为空时,炉次就取这个值) + tempMap.put("sterilizerFre", (String)value); + tempMap.put("configItemOptionSterFre", (String)value); + } else if(value instanceof String){ + tempMap.put(key.split("_")[0], (String) value); + } else if(value instanceof Number){ + Number number = (Number)value; + tempMap.put(key.split("_")[0], number.toString()); + } else { + tempMap.put(key.split("_")[0], null); + } + } + } + this.save(tempInstance, tempMap); + } + } catch (Exception e) { + success = false; + message = e.getMessage().toString(); + } + JSONObject result = new JSONObject(); + result.put("success", success); + result.put("message", message); + result.put("id", qualityMonitoringInstance.getId()); + return result; + } + } Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/action/QualityMonitoringInstanceAction.java =================================================================== diff -u -r32027 -r32394 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/action/QualityMonitoringInstanceAction.java (.../QualityMonitoringInstanceAction.java) (revision 32027) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/action/QualityMonitoringInstanceAction.java (.../QualityMonitoringInstanceAction.java) (revision 32394) @@ -126,135 +126,16 @@ /** * 批量保存质量监测记录. */ - @SuppressWarnings("unchecked") public void bathSaveQualityMonitoringInstance() { Map map = StrutsParamUtils.getParameters(); - boolean success = true; - String message = "保存成功!"; + + JSONObject result = JSONUtil.buildJsonObject(true, "保存成功!"); try { - // 抽检器械包和抽检器械,以及和抽检器械包和抽检器械关联的检测项 - String tousseMaterialInstanceInfo = map.get("tousseMaterialInstanceInfo"); - JSONObject tousseMaterialInstanceJSON = JSONObject.fromObject(tousseMaterialInstanceInfo); - if(tousseMaterialInstanceJSON == null){ - throw new RuntimeException("抽检器械和监测项不能都为空"); - } - JSONArray tousseInstanceInfos = tousseMaterialInstanceJSON.optJSONArray("tousseInstanceInfos"); - if(tousseInstanceInfos == null || tousseInstanceInfos.size() == 0){ - throw new RuntimeException("抽检器械和监测项不能都为空"); - } - - // 填写了多少个监测元素信息(抽检器械和监测项),就要保存多少条质量监测监测记录 - for(int i=0 ; i tempMap = new HashMap(); - if(DatabaseUtil.isPoIdValid(qualityMonitoringInstance.getId())){ - tempInstance = qualityMonitoringInstance; - } else { - BeanUtils.copyProperties(qualityMonitoringInstance, tempInstance); - } - // tousseBarcode + "@" + tousseInstanceId + "@" + tousseName + "@" + tousseAmount + "@" + tousseRecycle+ "@" + tousseRePacking+ "@" + order + "@" + tousseDefinitionID + "@" + haveMaterial;" - String tousseInstanceInfo = ""; - // material +"@"+ amount + "@" + position + "@" + order + "@" + tousseDefinitionID; - String materialInfo = ""; - - JSONArray tousseBags = tousseInstanceInfos.optJSONObject(i).optJSONArray("tousseBags"); - if(tousseBags != null && tousseBags.size() > 0){ - for(int j=0;j 0){ - for(int k=0;k 0){ - for(int k=0;k it = configItemOption.keys(); - while(it.hasNext()){ - String key = String.valueOf(it.next()); - Object value = configItemOption.get(key); - if(StringUtils.equals(key.split("_")[0], "configItemOptionSterName")){ - // 质量监测记录的炉号(如果抽检器械扫的第一个包实例id为空时,炉号就取这个值) - tempMap.put("sterilizerName", (String)value); - tempMap.put("configItemOptionSterName", (String)value); - } else if (StringUtils.equals(key.split("_")[0], "configItemOptionSterFre")){ - // 质量监测记录的炉次(如果抽检器械扫的第一个包实例id为空时,炉次就取这个值) - tempMap.put("sterilizerFre", (String)value); - tempMap.put("configItemOptionSterFre", (String)value); - } else if(value instanceof String){ - tempMap.put(key.split("_")[0], (String) value); - } else if(value instanceof Number){ - Number number = (Number)value; - tempMap.put(key.split("_")[0], number.toString()); - } else { - tempMap.put(key.split("_")[0], null); - } - } - } - qualityMonitoringInstanceManager.save(tempInstance, tempMap); - } + result = qualityMonitoringInstanceManager.bathSaveQualityMonitoringInstance(qualityMonitoringInstance, map); } catch (Exception e) { - success = false; - message = e.getMessage().toString(); + result = JSONUtil.buildJsonObject(false, "保存失败:" + e.getMessage()); + e.printStackTrace(); } - JSONObject result = new JSONObject(); - result.put("success", success); - result.put("message", message); - result.put("id", qualityMonitoringInstance.getId()); StrutsResponseUtils.output(result.toString()); } Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManager.java =================================================================== diff -u -r29997 -r32394 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManager.java (.../QualityMonitoringInstanceManager.java) (revision 29997) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManager.java (.../QualityMonitoringInstanceManager.java) (revision 32394) @@ -79,5 +79,13 @@ * @return */ public JSONObject loadWashRecordInfoById(String washRecordId); + + /** + * 批量保存质量监测记录 + * @param qualityMonitoringInstance + * @param map + * @return + */ + public JSONObject bathSaveQualityMonitoringInstance(QualityMonitoringInstance qualityMonitoringInstance, Map requestParams); }