Index: ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/showUploadIamge.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/showUploadIamge.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/showUploadIamge.js (revision 18497) @@ -0,0 +1,147 @@ +//图片上传分页定义 +var currentImageType; +var page = 1; +var totalPage = 0; +var toolbarPage = new Ext.Toolbar.TextItem({ + text : '第 1 页' +}); +var toolbarTotalPage = new Ext.Toolbar.TextItem({ + text : '共 0 页' +}); + +var pageNameStr = new Ext.Toolbar.TextItem({ + text : ' ' +}); + + +//展示器械包信息 +function showUploadImageWin(objectId) { + currentImageType = imageType_qualitymonitoring; + var imagePanel = new top.Ext.Panel({ + id : 'imagePanel', + layout : 'fit', + bbar : [{ + xtype : 'button', + text : '删除此图片', + tooltip:'删除当前图片', + listeners:{ + click : function(thiz, e){ + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/qualityMonitoringInstanceAction!deleteUploadImage.do', + params : {id : objectId,pageNum:page}, + success : function(response,options){ + showResult("删除成功!"); + loadImage(objectId,currentImageType); + }, + failure : function(response, options) { + showResult('删除失败!'); + } + }); + } + } + },'->',{ + xtype : 'button', + text : '<<', + tooltip:'上一页', + handler : function(){ + if (page - 1 <= 0) { + showResult('已是第一页'); + return; + } + page = page - 1; + + var url = WWWROOT + '/disinfectSystem/qualityMonitoringInstanceAction!getImage.do?objectId='+objectId + '&page=' + page+'&imageType='+currentImageType; + var imageBrowse = top.Ext.get('imageBrowse'); + var image = imageBrowse.dom; + image.src = url;// 覆盖原来的图片 + var element = Ext.get(toolbarPage.el); + element.update('第 ' + page + ' 页'); + } + }, + toolbarPage, + toolbarTotalPage,{ + xtype : 'button', + text : '>>', + tooltip:'下一页', + handler : function() { + if (page + 1 > totalPage) { + showResult('已是最后一页'); + return; + } + page = page + 1; + var url = WWWROOT + '/disinfectSystem/qualityMonitoringInstanceAction!getImage.do?objectId=' + objectId + '&page=' + page +'&imageType='+currentImageType; + var imageBrowse = top.Ext.get('imageBrowse'); + var image = imageBrowse.dom; + image.src = url;// 覆盖原来的图片 + var element = Ext.get(toolbarPage.el); + element.update('第 ' + page + ' 页'); + } + }], + items : [{ + xtype : 'box', + id : 'browseImage', + fieldLabel : "预览图片", + autoEl : { + id : 'imageBrowse', + tag : 'img', + autoHeight:true, + src : Ext.BLANK_IMAGE_URL, + style : 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);', + complete : 'off' + } + }] + }); + + /////////////////////////////////////////图片预览 + + var window = new top.Ext.Window({ + id : 'packageImg', + title : '图片预览', + width : 650, + height :450, + border : false, + autoScroll: true, + autoShow:true, + layout : 'fit', + items : [imagePanel] + }); + window.show(); + //图片 + if(objectId == undefined && objectId == "objectId" && objectId == null||objectId==""){ + objectId=""; + } + loadImage(objectId,currentImageType); +} + + +function loadImage(objectId,imageType){ + page = 1; + totalPage = 0; + //加载当前包图片总页数 + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/qualityMonitoringInstanceAction!getUploadImageCount.do', + params : { + imageType:imageType, + objectId:objectId + }, + success : function(result){ + var pageStr = result.responseText; + if(pageStr==null||pageStr=='undefiend'){ + totalPage=0; + } + totalPage = parseInt(pageStr); + var element = Ext.get(toolbarTotalPage.el); + element.update(' 共 ' + totalPage + ' 页'); + //加载图片 + var url = WWWROOT + '/disinfectSystem/qualityMonitoringInstanceAction!getImage.do?objectId='+objectId + '&page=' + page + '&imageType='+imageType +'&time='+new Date(); + var imageBrowse = top.Ext.get('imageBrowse'); + var image = imageBrowse.dom; + image.src = url;// 覆盖原来的图片 + var element = top.Ext.get(toolbarPage.el); + element.update('第 ' + page + ' 页'); + + var element = Ext.get(pageNameStr.el); + }, + failure : function(){} + }); +} \ No newline at end of file Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManagerImpl.java =================================================================== diff -u -r18480 -r18497 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManagerImpl.java (.../QualityMonitoringInstanceManagerImpl.java) (revision 18480) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManagerImpl.java (.../QualityMonitoringInstanceManagerImpl.java) (revision 18497) @@ -534,11 +534,17 @@ } if (qmInstance.getId() == null) { LoginUserData loginUser = AcegiHelper.getLoginUser(); - qmInstance.setOrgUnitCoding(loginUser.getCurrentOrgUnitCode()); - qmInstance.setOrgUnit(loginUser.getDirectOrgUnitNamesWhereUserBelong()); + if(StringUtils.isBlank(qmInstance.getOrgUnitCoding())){ + qmInstance.setOrgUnitCoding(loginUser.getCurrentOrgUnitCode()); + } + if(StringUtils.isBlank(qmInstance.getOrgUnit())){ + qmInstance.setOrgUnit(loginUser.getDirectOrgUnitNamesWhereUserBelong()); + } + if(StringUtils.isBlank(qmInstance.getCreateUserName())){ + qmInstance.setCreateUserName(loginUser.getUserFullName()); + } qmInstance.setCreateDate(Calendar.getInstance().getTime()); qmInstance.setStatus("未审核"); - qmInstance.setCreateUserName(loginUser.getUserFullName()); } List images = qmInstance.getImages(); @@ -567,7 +573,7 @@ String tousseInstanceInfo = requestParams.get("tousseInstanceInfo"); //灭菌记录的状态,灭菌失败或者灭菌中断 String sterilizationStatus = requestParams.get("sterilizationStatus"); - boolean saved = DatabaseUtil.isPoIdValid(qmInstance.getId()); //记录原来是否已经保存过 + boolean saved = qmInstance != null && DatabaseUtil.isPoIdValid(qmInstance.getId()); //记录原来是否已经保存过 String ret = ""; saveQualityMonitoringInstance_internal(qmInstance,requestParams); if(isRecycle && !saved){ //已经保存过都不处理 Index: ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/qualitymonitoringInstanceForm.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/qualitymonitoringInstanceForm.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/qualitymonitoringInstanceForm.js (revision 18497) @@ -0,0 +1,2633 @@ +var qualityMonitoringWin = null; +var disableShowImageButton = false; +var materialDefinitionStore; +// 添加抽检器械的材料store +var materialDefinitionAddStore; +var tousseDefinitionStore; +var materialItemCount = 0; +var tousseItemCount = 0; +var formPanel; +var qualityMonitoringSterilizationID; +var qualityMonitoringWRRecordID = 0; +var responPartName = ''; +var formDefinitionStore; +var frequencyStore; +var materialCountRecords; +var tousseInstanceInfo = ""; +var recycleQM = false; + +var rd = new Ext.data.JsonReader( { + fields : [ + {name : 'id'}, + {name : 'departId'}, + {name : 'name'} + + ] +}); +/** + * 供应室的数据源 + */ +var supplyRoomStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectsystem/qualitymonitoringWithNoLogon/qualityMonitoringAction!loadSupplyRoomConfigRoom.do', + method : 'POST' + }), + baseParams :{type:"12"}, + reader : rd, + autoLoad : true, + listeners :{ + 'load' : function(thiz,records,options){ + if(records.length > 0 && currentId){ + var record = records[0]; + Ext.getCmp('querySupplyRoom').setValue(record.get('departId')); + Ext.getCmp("orgUnitCoding").setValue(record.get('departId')); + Ext.getCmp("orgUnit").setValue(record.get('name')); + } + } + } +}); + + +function cancelQualityMonitoring() { + closeQMWindow(); +} + +function closeQMWindow(){ + if(recycleQM == true){ + // 回收页面进来 + closeLayer(); + }else{ + qualityMonitoringWin.close(); + } +} + +function triggerItemAction(valueTriggerItemIds,action){ + if(valueTriggerItemIds != null && valueTriggerItemIds != ""){ + var itemIdArray = valueTriggerItemIds.split(","); + if(itemIdArray.length > 0){ + for(var n = 0 ; n < itemIdArray.length ; n++){ + var triggerItemId = itemIdArray[n]; + if(triggerItemId != null && triggerItemId != ""){ + if("show" == action){ + Ext.getCmp("hideElement" + triggerItemId).show(); + }else{ + var xtype = Ext.getCmp("hideElement" + triggerItemId).getXType(); + if(xtype == 'fieldset'){ + var length = Ext.getCmp("hideElement" + triggerItemId).items.each(function(fsItem){ + var itemType = fsItem.getXType(); + if(itemType == "panel"){ + fsItem.items.each(function(item,index,length){ + item.setValue(false); + }); + }else if(itemType == "hidden"){ + fsItem.setValue(""); + } + }); + }else if(xtype == 'panel'){ + var panel = Ext.getCmp("hideElement" + triggerItemId); + panel.items.each(function(item,index,length){ + item.setValue(""); + }); + } + Ext.getCmp("hideElement" + triggerItemId).hide(); + } + } + } + } + } +} +function createQualityMonitoringItemElement(type,id,name,allowBlank,options,value,isTriggerItem){ + var hideElement = false; + if('是' == isTriggerItem && (value == null || value == "")){ + hideElement = true; + } + if(type == '文本'){ + return { + columnWidth : .5, + layout : 'form', + labelWidth : 90, + hidden:hideElement, + id:'hideElement'+id, + items : [{ + xtype : 'textfield', + fieldLabel : name, + maxLength : '30', + id : 'configItemOption'+id, + name : 'configItemOption'+id, + allowBlank : allowBlank, + value : value, + anchor : '95%' + }] + }; + }else if(type == '文本框'){ + return { + columnWidth : .9, + layout : 'form', + labelWidth : 90, + hidden:hideElement, + id:'hideElement'+id, + items : [{ + xtype : 'textarea', + fieldLabel : name, + maxLength : '300', + id : 'configItemOption'+id, + name : 'configItemOption'+id, + allowBlank : allowBlank, + value : value, + anchor : '95%' + }] + }; + + }else if(type == '数字'){ + return { + columnWidth : .5, + layout : 'form', + labelWidth : 90, + hidden:hideElement, + id:'hideElement'+id, + items : [{ + xtype : 'numberfield', + fieldLabel : name, + id : 'configItemOption'+id, + name : 'configItemOption'+id, + allowBlank : allowBlank, + allowDecimals : true, + value : value, + anchor : '95%' + }] + }; + }else if(type == '时间'){ + return { + columnWidth : .5, + layout : 'form', + labelWidth : 90, + hidden:hideElement, + id:'hideElement'+id, + items : [{ + xtype : 'datefieldWithMin', + fieldLabel : name, + id : 'configItemOption'+id, + name : 'configItemOption'+id, + format : 'Y-m-d H:i', + value : value, + readOnly : true, + editable : false, + allowBlank : allowBlank, + anchor : '95%' + }] + }; + }else if(type == '时间段'){ + if(value == null || value == ''){ + value = '00:00'; + } + return { + columnWidth : .5, + layout : 'form', + labelWidth : 90, + hidden:hideElement, + id:'hideElement'+id, + items : [{ + xtype : 'textfield', + fieldLabel : name, + maxLength : '16', + id : 'configItemOption'+id, + name : 'configItemOption'+id, + regex : /^\d*:\d\d$/, + regexText : '请按照"小时:分钟"的格式填写', + allowBlank : allowBlank, + value : value, + anchor : '95%' + }] + }; + }else if(type == '日期'){ + return { + columnWidth : .5, + layout : 'form', + labelWidth : 90, + hidden:hideElement, + id:'hideElement'+id, + items : [{ + xtype : 'datefieldWithMin', + fieldLabel : name, + id : 'configItemOption'+id, + name : 'configItemOption'+id, + format : 'Y-m-d', + value : value, + readOnly : true, + editable : false, + allowBlank : allowBlank, + anchor : '95%' + }] + }; + }else if(type == '单选'){ + var optionsArrays = new Array(); + if(options != ""){ + var optionsJson = JSON.parse(options); + var hideTriggerItemIdsValue = ""; + for(var j = 0 ; j < optionsJson.length ; j++){ + var optionsArray = new Array(); + optionsArray.push(optionsJson[j].name); + optionsArray.push(optionsJson[j].valueTriggerItemIds); + optionsArrays.push(optionsArray); + if(value == optionsJson[j].name){ + hideTriggerItemIdsValue = optionsJson[j].valueTriggerItemIds; + } + } + } + return { + columnWidth : .5, + layout : 'form', + labelWidth : 90, + style:'margin-top:10px', + hidden:hideElement, + id:'hideElement'+id, + items : [{ + xtype:'hidden', + id:'triggerItemIds' + id, + name:'triggerItemIds' + id, + value : hideTriggerItemIdsValue + },{ + xtype : 'combo', + fieldLabel : name, + id : 'configItemOption'+id, + name : 'configItemOption'+id, + valueField : 'value', + displayField : 'value', + allowBlank : allowBlank, + editable : false, + store : new Ext.data.SimpleStore({ + fields : [ 'value', 'valueTriggerItemIds'], + data : optionsArrays + }), + forceSelection : true, + value : value, + mode : 'local', + triggerAction : 'all', + anchor : '100%', + listeners:{ + select : function(combo, record, index) { + var valueTriggerItemIds = record.get("valueTriggerItemIds"); + var oldTriggerItemIds = Ext.getCmp("triggerItemIds" + id).getValue(); + triggerItemAction(oldTriggerItemIds,"hide"); + triggerItemAction(valueTriggerItemIds,"show"); + Ext.getCmp("triggerItemIds" + id).setValue(valueTriggerItemIds); + } + } + }] + }; + }else if(type == '多选'){ + if(value == null || value == ''){ + value = ''; + } + var optionsArray = new Array(); + optionsArray.push({ + id : 'configItemOption'+id, + name : 'configItemOption'+id, + xtype : 'hidden', + hidden : allowBlank, + value : value + }); + if(options != ""){ + var optionsJson = JSON.parse(options); + for(var j = 0 ; j < optionsJson.length ; j++){ + var checked = false; + if(value != null && value.indexOf(JSON.stringify(optionsJson[j])) != -1){ + checked = true; + } + optionsArray.push({ + layout : 'form', + columnWidth : 0.5, + labelWidth : 200, + style:'margin-top:10px', + items:[{ + name : 'cconfigItemOption'+id, + fieldLabel : optionsJson[j].name, + xtype : 'checkbox', + checked : checked, + columnWidth : .5, + inputValue : JSON.stringify(optionsJson[j]), + listeners : { + check : function(thiz, checked){ + var elementId = thiz.getName().substring(1); + var elementObj = Ext.getCmp(elementId); + if(elementObj != undefined && elementObj != null){ + var oldElementValue = elementObj.getValue(); + var checkedValue = JSON.parse(thiz.getRawValue()); + if(checked){ + if(oldElementValue.indexOf(thiz.getRawValue()) == -1){ + oldElementValue += ","; + oldElementValue += thiz.getRawValue() + elementObj.setValue(oldElementValue); + } + if(checkedValue != null){ + var valueTriggerItemIds = checkedValue.valueTriggerItemIds; + triggerItemAction(valueTriggerItemIds,"show"); + } + }else{ + var newValue = oldElementValue.replace("," + thiz.getRawValue(),''); + elementObj.setValue(newValue); + + if(checkedValue != null){ + var valueTriggerItemIds = checkedValue.valueTriggerItemIds; + triggerItemAction(valueTriggerItemIds,"hide"); + } + } + } + } + } + }] + }); + } + } + return { + columnWidth : 1, + xtype : "fieldset", + title: name, + id:'hideElement'+id, + layout : 'column', + hidden:hideElement, + autoHeight : true, + items : optionsArray + }; + } +} +// 返回炉次显示框 +function createQualityMonitoringElementSterName(value){ + return { + columnWidth : .5, + layout : 'form', + labelWidth : 90, + items : [{ + xtype : 'textfield', + fieldLabel : '炉次', + maxLength : '30', + id : 'configItemOptionSterName', + name : 'configItemOptionSterName', + allowBlank : true, + readOnly : true, + value : value, + anchor : '95%' + }] + }; +} +// 返回炉号显示框 +function createQualityMonitoringElementSterFre(value){ + return { + columnWidth : .5, + layout : 'form', + labelWidth : 90, + items : [{ + xtype : 'textfield', + fieldLabel : '炉号', + maxLength : '30', + id : 'configItemOptionSterFre', + name : 'configItemOptionSterFre', + allowBlank : true, + readOnly: true, + value : value, + anchor : '95%' + }] + }; +} + +function submitForm2(materialInfo,saveAndCreate){ + Ext.getCmp('responsiblePerson').setDisabled(false); + var sterilizationStatus = ''; + if(typeof(sterilizerStatus) != 'undefined' && sterilizerStatus != null && sterilizerStatus != ""){ + sterilizationStatus = sterilizerStatus; + } + var tousseName = Ext.getCmp('tousseName').getRawValue(); + if(tousseName != null && tousseName != ""){ + var barcode = Ext.getCmp('barcode').getValue(); + var tousseInstanceId = Ext.getCmp('tousseInstanceId').getValue(); + var amount = Ext.getCmp('tousseAmount').getValue(); + var isRecycle = Ext.getCmp('isRecycle').getValue(); + var isRepacking = Ext.getCmp('isRepacking').getValue(); + var info = barcode + "@" + tousseInstanceId + "@" + tousseName + "@" + amount + "@" + isRecycle+ "@" + isRepacking+ "@" + 1 +";"; + tousseInstanceInfo = info + tousseInstanceInfo; + } + Ext.getCmp('addQualityMonitoringForm').form.submit( { + url : WWWROOT + '/disinfectsystem/qualitymonitoringWithNoLogon/qualityMonitoringAction!saveQualityMonitoringInstance.do', + params : { + materialInfo : materialInfo, + sterilizationStatus:sterilizationStatus, + qualityMonitoringSterilizationID : qualityMonitoringSterilizationID, + qualityMonitoringWRRecordID : qualityMonitoringWRRecordID, + tousseInstanceInfo : tousseInstanceInfo + }, + method : 'POST', + waitMsg : '正在保存数据,请稍候', + waitTitle : '提交表单', + success : function(form, action) { + var result = Ext.decode(action.response.responseText); + showResultQM(result.message); + if(saveAndCreate){ + tempFormDefintionId = Ext.getCmp("formDefinitionId").getValue(); + tempFormDefinitionName = Ext.getCmp("name").getValue(); + closeQMWindow(); + qualityMonitoringSterilizationID = 0; + qualityMonitoringWRRecordID = 0; + materialCountRecords = null; + if(recycleQM == true){ + addQMAgain(); + }else{ + addQualityMonitoring("",tempFormDefintionId,tempFormDefinitionName); + if(typeof(grid) != 'undefined' && grid != null){ + grid.getStore().reload(); + } + } + }else{ + closeQMWindow(); + if(recycleQM == false){ + if(typeof(grid) != 'undefined' && grid != null){ + grid.getStore().reload(); + } + } + } + }, + failure : function(form, action) { + if(action.response != null && action.response.responseText != null){ + var result = Ext.decode(action.response.responseText); + showResultQM(result.message); + }else{ + alert('failure = ' + action.failureType); + } + //closeQMWindow(); + } + }); +} +function showAllTousseOfSterileCheckBox(show){ + if(!isUndefinedOrNullOrEmpty(qualityMonitoringSterilizationID) && show){ + Ext.getCmp('allTousseOfSterile').setVisible(true); + Ext.getCmp('allTousseOfSterile').getEl().up('.x-form-item').setDisplayed(true); + }else{ + Ext.getCmp('allTousseOfSterile').setVisible(false); + Ext.getCmp('allTousseOfSterile').getEl().up('.x-form-item').setDisplayed(false); + } +} +function addQualityMonitoringItem(formId,configName){ + // 质量监测添加‘无’这个项. + if(configName == '无'){ + Ext.getCmp('optionAmount').setValue(''); + Ext.getCmp('addQualityMonitoringForm').remove('itemsFieldSet'); + return; + } + Ext.Ajax.request({ + url : WWWROOT + '/disinfectsystem/qualitymonitoringWithNoLogon/qualityMonitoringAction!loadFormDefinition.do', + params : {id : formId}, + success : function(response,options){ + var result = Ext.decode(response.responseText); + if(result.success){ + Ext.getCmp('scope').setValue(result.data.scope); + if(sstsConfig.hasOwnProperty('isInspectScopeHideTousseMsg') && sstsConfig.isInspectScopeHideTousseMsg){ + if("无" == result.data.scope){ + // 如果监测范围为无,隐藏器械包信息 + Ext.getCmp('tousseInfoFieldSet').setVisible(false); + } + } + Ext.getCmp('optionAmount').setValue(''); + var baseInfoPanel = Ext.getCmp('baseInfoPanel'); + if("是" == result.data.isInsertBasket){ + Ext.getCmp("insertBasket").show(); + Ext.getCmp("containerNameItem").show(); + + Ext.getCmp('containerName').setVisible(true); + Ext.getCmp('containerName').getEl().up('.x-form-item').setDisplayed(true); + }else{ + Ext.getCmp("insertBasket").hide(); + Ext.getCmp("containerNameItem").hide(); + + Ext.getCmp('containerName').setVisible(false); + Ext.getCmp('containerName').getEl().up('.x-form-item').setDisplayed(false); + } + Ext.getCmp('responsibilityPart').setValue(result.data.responsibilityPart); + var items = new Array(); + // 如果显示炉次炉号,添加表单 + if(result.data.showSterilizerNumFrequency == '是'){ + items.push(createQualityMonitoringElementSterName('')); + items.push(createQualityMonitoringElementSterFre('')); + } + for(var i = 0 ; i< result.data.items.length ; i++){ + var item = result.data.items[i]; + if(Ext.getCmp('optionAmount').getValue() == null || Ext.getCmp('optionAmount').getValue() == ''){ + Ext.getCmp('optionAmount').setValue(item.id); + }else{ + Ext.getCmp('optionAmount').setValue(Ext.getCmp('optionAmount').getValue()+';'+item.id); + } + var allowBlank = result.data.items[i].requirement == '必填'?false:true; + items.push(createQualityMonitoringItemElement(item.type,item.id,item.name,allowBlank,item.optionsJson,null,item.isTriggerItem)); + if(result.data.items[i].type == '多选'){ + items.push({ + columnWidth : 1, + xtype : "label", + html : ' ', + anchor : '95%' + }); + } + } + + Ext.getCmp('addQualityMonitoringForm').remove('itemsFieldSet'); + if(items.length > 0){ + Ext.getCmp('addQualityMonitoringForm').add({ + id : 'itemsFieldSet', + xtype:"fieldset", + labelAlign :'left', + title:"监测项", + layout:'column', + autoHeight:true, + items:items + }); + } + Ext.getCmp('addQualityMonitoringForm').doLayout(); + if(Ext.getCmp('itemsFieldSet')){ + Ext.getCmp('itemsFieldSet').doLayout(); + } +// cccbbb + if(result.data.scope == "器械包"){ + Ext.getCmp('sterilizationRecordInfo').setVisible(false); + Ext.getCmp('tousseInfoFieldSet').setVisible(true); + // 隐藏第一个材料和添加的材料信息 + hideFirstMaterial(); + hideExtractCheckMaterial(); + // 显示器械包输入框 + showFirstTousse(); + + Ext.getCmp('recycleC').setVisible(true); + Ext.getCmp('repackingC').setVisible(true); + showAllTousseOfSterileCheckBox(true); + Ext.getCmp('addExtractCheckTousse').setVisible(true); + Ext.getCmp('addExtractCheckMaterial').setVisible(false); + // 清除材料数据 + Ext.getCmp('material').setValue(""); + Ext.getCmp('materialAmount').setValue(""); + }else if(result.data.scope == "材料"){ + Ext.getCmp('sterilizationRecordInfo').setVisible(false); + Ext.getCmp('tousseInfoFieldSet').setVisible(true); + hideFirstTousse(); + showFirstMaterial(); + Ext.getCmp('recycleC').setVisible(false); + Ext.getCmp('repackingC').setVisible(false); + showAllTousseOfSterileCheckBox(false); +// Ext.getCmp('material').getEl().up('.x-form-item').setDisplayed(true); + //showExtractCheckMaterial(); + Ext.getCmp('addExtractCheckTousse').setVisible(false); + Ext.getCmp('addExtractCheckMaterial').setVisible(true); + addMaterialAndAmount(); + }else if(result.data.scope == "灭菌炉记录"){ + Ext.getCmp('sterilizationRecordInfo').setVisible(true); + // 如果监测范围为灭菌炉记录,隐藏器械包信息 + Ext.getCmp('tousseInfoFieldSet').setVisible(false); + Ext.getCmp('addExtractCheckTousse').setVisible(false); + Ext.getCmp('addExtractCheckMaterial').setVisible(false); + hideExtractCheckMaterial(); + }else if(result.data.scope == "材料和器械包"){ + Ext.getCmp('sterilizationRecordInfo').setVisible(false); + Ext.getCmp('tousseInfoFieldSet').setVisible(true); + showFirstTousse(); + showFirstMaterial(); +// Ext.getCmp('material').getEl().up('.x-form-item').setDisplayed(true); + Ext.getCmp('recycleC').setVisible(true); + Ext.getCmp('repackingC').setVisible(true); + showAllTousseOfSterileCheckBox(true); + Ext.getCmp('addExtractCheckTousse').setVisible(true); + Ext.getCmp('addExtractCheckMaterial').setVisible(true); + // 添加抽检器械和数量 + addMaterialAndAmount(); + }else if(result.data.scope == "无"){ + Ext.getCmp('sterilizationRecordInfo').setVisible(false); + Ext.getCmp('tousseInfoFieldSet').setVisible(true); + hideFirstTousse(); + showFirstMaterial(); +// Ext.getCmp('material').getEl().up('.x-form-item').setDisplayed(true); + Ext.getCmp('recycleC').setVisible(true); + Ext.getCmp('repackingC').setVisible(true); + showAllTousseOfSterileCheckBox(true); + Ext.getCmp('addExtractCheckTousse').setVisible(false); + Ext.getCmp('addExtractCheckMaterial').setVisible(true); + Ext.getCmp('sterilizationRecordInfo').setVisible(false); + if(sstsConfig.hasOwnProperty('isInspectScopeHideTousseMsg') && sstsConfig.isInspectScopeHideTousseMsg){ + // 隐藏器械包信息 + Ext.getCmp('tousseInfoFieldSet').setVisible(false); + } + hideExtractCheckMaterial(); + } + // 新建质量监测单,数量默认为1 + var tAmount = Ext.getCmp('tousseAmount').getValue(); + var mAmount = Ext.getCmp('materialAmount').getValue(); + if(isUndefinedOrNullOrEmpty(tAmount) || tAmount <= 0){ + // 没有值,设置默认值为1 + Ext.getCmp('tousseAmount').setValue(1); + } + if(isUndefinedOrNullOrEmpty(mAmount) || mAmount <= 0){ + // 没有值,设置默认值为1 + Ext.getCmp('materialAmount').setValue(1); + } + resetRecycleAndRepackingValue(); + } + }, + failure : function(response, options) { + showResultQM('系统加载出错,请稍候再试'); + } + }); +} +// 装配页面进来,添加材料和数量 +function addMaterialAndAmount(){ + if(materialCountRecords != null && materialCountRecords != 'undefined' && materialCountRecords.length > 0){ + var maerialName = Ext.getCmp('material').getValue(); + if( !isUndefinedOrNullOrEmpty(maerialName) ){ + // 如果已经打开了,再选择其他的监测项,不再添加材料数据 + return ; + } + for(var i = 0 ; i < materialCountRecords.length ; i++){ + var materialName = materialCountRecords[i].data["name"]; + var count = materialCountRecords[i].data['count']; + if( i == 0 ){ + // 第一条记录 + Ext.getCmp('material').setValue(materialName); + Ext.getCmp('materialAmount').setValue(count); + }else{ + addExtractCheckMaterial(false,materialName,count); + } + } + } +} +function allTousseOfSterileChecked(){ + var isAll = Ext.getCmp('isAllTousseOfSterile').getValue(); //是否整炉 + if(isAll == '是'){ + return true; + } + return false; +} +function updateControlStatus(){ + if(allTousseOfSterileChecked()){ + enableRecycleAndRepacking(); + }else{ + var tousseType = Ext.getCmp('tousseType').getValue(); + var tousseInstanceId = Ext.getCmp('tousseInstanceId').getValue(); + + if(tousseType==PACKAGE_TYPE_FOREIGN || tousseType==PACKAGE_TYPE_SPLIT){ + disableRecycleAndRepacking(); + }else if(isUndefinedOrNullOrEmpty(tousseInstanceId)){ + disableRecycleAndRepacking(); + }else{ + enableRecycleAndRepacking(); + var toussedefRecycling = Ext.getCmp('tousseDefRecycling').getValue(); + if(!isUndefinedOrNullOrEmpty(toussedefRecycling)){ + if(tousseType == '敷料包' || toussedefRecycling == '否'){ + //敷料包或者是不回收的包,不能选择重新回收,只能选重新装配 + Ext.getCmp('recycle').setValue(false); + Ext.getCmp('recycle').disable(); + }else{ + Ext.getCmp('recycle').enable(); + } + } + } + } +} +/** + * 将重新回收和重新装配及是否整炉设置为未选种状态 + */ +function resetRecycleAndRepackingValue(){ + Ext.getCmp('isRecycle').setValue(''); + Ext.getCmp('isRepacking').setValue(''); + Ext.getCmp('isAllTousseOfSterile').setValue(''); + + Ext.getCmp('recycle').setValue(false); + Ext.getCmp('repacking').setValue(false); + Ext.getCmp('allTousseOfSterile').setValue(false); +} +//重置重新回收和重新装配 +function disableRecycleAndRepacking(){ + Ext.getCmp('isRecycle').setValue(''); + Ext.getCmp('isRepacking').setValue(''); + Ext.getCmp('recycle').disable(); + Ext.getCmp('repacking').disable(); + + Ext.getCmp('recycle').setValue(false); + Ext.getCmp('repacking').setValue(false); +} +function enableRecycleAndRepacking(){ + Ext.getCmp('recycle').enable(); + Ext.getCmp('repacking').enable(); +} +function getTousseInstanceNameAndResponsiblePerson(tempBarcode, qmDefinitionId, materialDefinitionStore){ + if(tempBarcode){ + Ext.Ajax.request({ + url : WWWROOT + '/disinfectsystem/qualitymonitoringWithNoLogon/qualityMonitoringAction!getTousseInstanceNameAndResponsiblePerson.do', + params : {barcode : tempBarcode,qmDefinitionId : qmDefinitionId}, + success : function(response,options){ + var result = Ext.decode(response.responseText); + if(result.success){ + if(tempBarcode != null && tempBarcode != ''){ + Ext.getCmp('tousseName').setValue(result.tousseName + "(" + tempBarcode + ")"); + }else{ + Ext.getCmp('tousseName').setValue(result.tousseName); + } + Ext.getCmp('barcode').setValue(tempBarcode); + Ext.getCmp('tousseInstanceId').setValue(result.tousseInstanceId); + Ext.getCmp('tousseType').setValue(result.tousseType); + Ext.getCmp('tousseDefRecycling').setValue(result.isRecycle); + Ext.getCmp('responsiblePerson').setValue(result.responsiblePerson); + if( !isUndefinedOrNullOrEmpty(Ext.getCmp('configItemOptionSterName')) ){ + // 显示炉次和炉号 + Ext.getCmp('configItemOptionSterName').setValue(result.sterilizerName); + Ext.getCmp('configItemOptionSterFre').setValue(result.sterileFrequency); + } + if(result.tousseDefinitionId){ + Ext.getCmp('tousseDefinitionId').setValue(result.tousseDefinitionId); + if(materialDefinitionStore){ + materialDefinitionStore.reload(); + } + }else if(materialDefinitionStore){ + Ext.getCmp('tousseDefinitionId').setValue(''); + } + updateControlStatus(); + }else{ + if(result.message){ + showResultQM(result.message); + }else{ + showResultQM("找不到该条码所对应的器械包实例"); + } + } + }, + failure : function(response, options) { + var result = Ext.decode(response.responseText); + if(result.message){ + showResultQM(result.message); + }else{ + showResultQM('系统加载出错,请稍候再试'); + } + } + }); + } +} +function getPostionByBasketBarcode(tempBarcode,positionId){ + if(tempBarcode){ + Ext.Ajax.request({ + url : WWWROOT + '/disinfectsystem/qualitymonitoringWithNoLogon/qualityMonitoringAction!getPostionMsg.do', + params : {barcode : tempBarcode,qualityMonitoringWRRecordID : qualityMonitoringWRRecordID}, + success : function(response,options){ + var result = Ext.decode(response.responseText); + if(result.success){ + if(result.positionMsg){ + Ext.getCmp(positionId).setValue(result.positionMsg); + } + }else{ + if(result.message){ + showResultQM(result.message); + }else{ + showResultQM("找不到该条码所对应的篮筐实例"); + } + } + }, + failure : function(response, options) { + var result = Ext.decode(response.responseText); + if(result == null || result.message == null){ + showResultQM('系统加载出错,请稍候再试'); + }else{ + showResultQM(result.message); + } + } + }); + } +} +// 添加抽检器械和数量 +function addExtractCheckMaterial(isOpenRecord,mateialName,count,basketPosition,orderNumber){ + materialItemCount++; + var tousseAndMaterial = Ext.getCmp('tosseAndMaterial'); + var mCount = 1; + if(count != null && count != 'undefined'){ + mCount = count; + } + var items = new Array(); + var items1 = new Array(); + var items2 = new Array(); + var items3 = new Array(); + items = { + layout : 'form', + id : 'materialC'+materialItemCount, + columnWidth : .5, + labelWidth : 90, + items : [{ + xtype : 'combo', + id : 'material'+materialItemCount, + name : 'material'+materialItemCount, + fieldLabel : '抽检器械', + queryParam : 'spell', + minChars : 0, + valueField : 'id', + displayField : 'name', + store : materialDefinitionAddStore, + value : mateialName, + forceSelection : true, + lazyInit : true, + triggerAction : 'all', + hideTrigger : true, + typeAhead : false, + anchor : '95%', + listeners : { + select : function(combo, record, index) { + combo.setValue(record.data.name); + } + } + }] + }; + items1 = { + layout : 'form', + id : 'materialAmountC'+materialItemCount, + columnWidth : .5, + labelWidth : 90, + items : [{ + xtype : 'numberfield', + allowDecimals : false, + name : 'materialAmount'+materialItemCount, + id : 'materialAmount'+materialItemCount, + fieldLabel : "器械数量", + value : mCount, + allowBlank : true, + blankText : '数量不能为空', + anchor : '95%' + }] + }; + items2 = { + layout : 'form', + hidden : !(qualityMonitoringWRRecordID > 0 && (sstsConfig.hasOwnProperty('haveRinserPosition')) && sstsConfig.haveRinserPosition), + id : 'basketBarcodeC'+materialItemCount, + columnWidth : .5, + labelWidth : 90, + items : [{ + xtype : 'textfield', + name : 'basketBarcode'+materialItemCount, + id : 'basketBarcode'+materialItemCount, + fieldLabel : "篮筐条码", + anchor : '95%', + listeners : { + specialkey : function(field,e){ + if(e.getKey() == 13){ + var idName = field.getId().replace("basketBarcode","position"); + getPostionByBasketBarcode(field.getValue(),idName); + field.setValue(''); + } + } + } + }] + }; + + items3 = { + layout : 'form', + hidden : !(qualityMonitoringWRRecordID > 0 && (sstsConfig.hasOwnProperty('haveRinserPosition')) && sstsConfig.haveRinserPosition), + id : 'positionC'+materialItemCount, + columnWidth : .5, + labelWidth : 90, + items : [{ + xtype : 'textfield', + name : 'position'+materialItemCount, + id : 'position'+materialItemCount, + editable : false, + fieldLabel : "位置", + anchor : '95%' + }] + }; + var items4 = new Array(); + items4 = { + xtype : 'hidden', + name : 'materialOrder'+materialItemCount, + id : 'materialOrder'+materialItemCount + }; + tousseAndMaterial.add(items); + tousseAndMaterial.add(items1); + tousseAndMaterial.add(items2); + tousseAndMaterial.add(items3); + tousseAndMaterial.add(items4); + tousseAndMaterial.doLayout(); + // 顺序包括器械包和材料都排进去 + var curOrder = materialItemCount + tousseItemCount + 2; + Ext.getCmp('materialOrder'+materialItemCount).setValue(curOrder); + if(basketPosition != null && basketPosition != ''){ + Ext.getCmp('position'+materialItemCount).setValue(basketPosition); + } + if(orderNumber != null && orderNumber > 0){ + Ext.getCmp('materialOrder'+materialItemCount).setValue(orderNumber); + } + if(isOpenRecord == true && mateialName != null && mateialName != ''){ + //打开记录,不允许修改 + Ext.getCmp('material'+materialItemCount).disable(); + Ext.getCmp('materialAmount'+materialItemCount).disable(); + Ext.getCmp('basketBarcode'+materialItemCount).disable(); + Ext.getCmp('position'+materialItemCount).disable(); + } +} +// 隐藏第一个器械包信息,包括器械包条码,数量 +function hideFirstTousse(){ + Ext.getCmp('tousseBarcodeC').setVisible(false); + Ext.getCmp('tousseNameC').setVisible(false); + Ext.getCmp('tousseAmountC').setVisible(false); +} +//显示第一个器械包信息,包括器械包条码,数量 +function showFirstTousse(){ + Ext.getCmp('tousseBarcodeC').setVisible(true); + Ext.getCmp('tousseNameC').setVisible(true); + Ext.getCmp('tousseAmountC').setVisible(true); +} + +//隐藏第一个材料信息,包括器械包条码,数量 +function hideFirstMaterial(){ + Ext.getCmp('materialC').setVisible(false); + Ext.getCmp('materialAmountC').setVisible(false); +} +//显示第一个材料信息,包括器械包条码,数量 +function showFirstMaterial(){ + Ext.getCmp('materialC').setVisible(true); + Ext.getCmp('materialAmountC').setVisible(true); +} + +function hideExtractCheckMaterial(){ + if(materialItemCount > 0){ + for(var i=1;i 0){ + Ext.getCmp('addQualityMonitoringForm').add({ + id : 'itemsFieldSet', + xtype:"fieldset", + labelWidth :400, + labelAlign :'left', + title:"监测项", + layout:'column', + autoHeight:true, + items:items + }); + } + Ext.getCmp('addQualityMonitoringForm').doLayout(); + if(Ext.getCmp('itemsFieldSet')){ + Ext.getCmp('itemsFieldSet').doLayout(); + } + //打开已有质量监测记录,器械包条码,器械包名称,重新回收和重新装配都禁用掉,不能再修改 + Ext.getCmp('recycle').disable(); + Ext.getCmp('repacking').disable(); + Ext.getCmp('tempBarcode').disable(); + Ext.getCmp('tousseName').disable(); + Ext.getCmp('tousseAmount').disable(); + Ext.getCmp('material').disable(); + Ext.getCmp('materialAmount').disable(); + Ext.getCmp('basketBarcode').disable(); + Ext.getCmp('position').disable(); + Ext.getCmp('allTousseOfSterile').disable(); + }else{ + showResultQM("找不到该条码所对应的器械包实例"); + } + }, + failure : function(response, options) { + showResultQM('系统加载出错,请稍候再试'); + } + }); + }else{ + setStartDate(Ext, 'yyyy/MM/dd HH:mm', 'dateTime'); //(设置抽检时间,取服务器时间 cjr) + disableRecycleAndRepacking(); + var resonPart = Ext.getCmp('responsibilityPart').getValue(); + if(resonPart != null && resonPart != '') { + formDefinitionStore.baseParams.responsiblePerson = resonPart; + } + if( !isUndefinedOrNullOrEmpty(formDefinitionId) && !isUndefinedOrNullOrEmpty(formDefinitionName) ){ + Ext.getCmp('formName').setValue(formDefinitionName); + addQualityMonitoringItem(formDefinitionId,formDefinitionName); + Ext.getCmp("formDefinitionId").setValue(formDefinitionId); + Ext.getCmp("name").setValue(formDefinitionName); + }else{ + formDefinitionStore.load(); + } + } + +} + +function uploadWindowA(imageType,id){ + var onUploadComplete = function(dialog){ + disableShowImageButton = false; + dialog.hide(); + }; + //文件上传成功后的回调函数 + var onUploadSuccess = function(dialog, filename, resp_data, record){ + disableShowImageButton = false; + dialog.hide(); + }; +// //文件上传失败后的回调函数 + var onUploadFailed = function(dialog, filename, resp_data, record){ + showResultQM(resp_data.message);//resp_data是json格式的数据 + disableShowImageButton = true; + }; + var dialog = new top.Ext.ux.UploadDialog.Dialog({ + title: "上传" + imageType, + url:WWWROOT + '/disinfectsystem/qualitymonitoringWithNoLogon/qualityMonitoringAction!uploadImage.do?imageType='+imageType+'&objectId='+id , //这里我用struts2做后台处理 + post_var_name:'uploadFiles',//这里是自己定义的,默认的名字叫file + width : 450, + height : 300, + minWidth : 450, + minHeight : 300, + draggable : true , + resizable : true , + constraintoviewport: true , + permitted_extensions:['JPG','jpg','jpeg','JPEG','GIF','gif','png','PNG'], + modal: true , + reset_on_hide: false , + allow_close_on_upload: false , //关闭上传窗口是否仍然上传文件 + upload_autostart: false + }); + dialog.show(); + dialog.on('uploadsuccess',onUploadSuccess); //定义上传成功回调函数 + dialog.on('uploadfailed',onUploadFailed); //定义上传失败回调函数 +// dialog.on('uploadcomplete',onUploadComplete); //定义上传完成回调函数 +} + +function saveQualityMonitoring(thiz,materialDefinitionStore,saveAndCreate) { + if(Ext.getCmp('createUserName').getValue() == ''){ + showResultQM("请填写登记人。"); + return false; + } + if(Ext.getCmp('querySupplyRoom').getValue() == ''){ + showResultQM("请选择供应室。"); + return false; + } + if(Ext.getCmp('dateTime').getValue() == ''){ + showResultQM("请选择抽检时间。"); + return false; + } + for(var i = 0 ; i<= Ext.getCmp('optionAmount').getValue().split(';').length ; i++){ + var itemId = Ext.getCmp('optionAmount').getValue().split(';')[i]; + if(itemId != null && itemId != ''){ + if(Ext.getCmp('configItemOption'+itemId).getXType() != 'hidden'){ + if(!Ext.getCmp('configItemOption'+itemId).isValid()){ + showResultQM("请正确填写表单各值。"); + return false; + } + }else{ + if(!Ext.getCmp('configItemOption'+itemId).hidden && Ext.getCmp('configItemOption'+itemId).getValue() == '#@'){ + showResultQM("请正确填写表单各值。"); + return false; + } + } + } + } + var materialInfo = ""; + var materialLength = materialItemCount; //(Ext.getCmp('setLeft').items.length-3)/2; + for(var i = 1 ; i <= materialLength ; i++){ + var isVisiable = Ext.getCmp("materialC"+i).isVisible(); + if(isVisiable == false){ + continue; + } + var material = Ext.getCmp("material"+i).getValue(); + var amount = Ext.getCmp("materialAmount"+i).getValue(); + var position = Ext.getCmp("position"+i).getValue(); + var order = Ext.getCmp("materialOrder"+i).getValue(); + if((material != null && material != "") && (amount != null && amount != "")){ + materialInfo += material + "@" + amount + "@" + position + "@" + order + ";"; + } + } + tousseInstanceInfo = ""; + var addTousseInstanceAmount = tousseItemCount; + for(var i =1; i <= addTousseInstanceAmount; i++){ + var tousseBarcode = Ext.getCmp('tempBarcode'+i+"_"+1).getValue(); + var tousseName = Ext.getCmp('tempBarcode'+i+"_"+3).getValue(); + var tousseAmount = Ext.getCmp('tempBarcode'+i+"_"+6).getValue(); + var tousseInstanceId = Ext.getCmp('tempBarcode'+i+"_"+5).getValue(); + var tousseRecycle = Ext.getCmp('tempBarcode'+i+"_"+7).getValue(); + var tousseRePacking = Ext.getCmp('tempBarcode'+i+"_"+8).getValue(); + var order = Ext.getCmp('tousseOrder'+i).getValue(); + if((tousseName != null && tousseName != "") && (tousseAmount != null && tousseAmount != "")){ + tousseInstanceInfo += tousseBarcode + "@" + tousseInstanceId + "@" + tousseName + "@" + tousseAmount + "@" + tousseRecycle+ "@" + tousseRePacking+ "@" + order +";"; + } + } + var material = Ext.getCmp('material').getValue(); + var tousseName = Ext.getCmp('tousseName').getRawValue(); + var barcode = Ext.getCmp('barcode').getValue(); + var inspectName = Ext.getCmp('formName').getRawValue(); + var scope = Ext.getCmp('scope').getValue(); + if(!allTousseOfSterileChecked()){ + if(inspectName != '无' && scope != '无' && scope != '灭菌炉记录'){ + // 质量检测项为'无',不强制登记器械包信息 + if(!material && !tousseName){ + showResultQM("请录入抽验器械或器械包名称"); + return false; + } + } + } + if(material){ + var amount = Ext.getCmp('materialAmount').getValue(); + if(!amount || amount < 0){ + showResultQM('输入的“'+material+'”的数量且不能小于1'); + return false; + } + var position = Ext.getCmp("position").getValue(); + materialInfo += material +"@"+ amount + "@" + position + "@" + 2 + ";"; + if(tousseName){ + var isExist = false; + var count = materialDefinitionStore.getCount(); + for(var i=0;i0) { + Ext.getCmp('formName').setValue(records[0].data.name); + addQualityMonitoringItem(records[0].data.id,records[0].data.name); + Ext.getCmp("formDefinitionId").setValue(records[0].data.id); + Ext.getCmp("name").setValue(records[0].data.name); + }else{ + // 没有找到监测项 + Ext.getCmp('formName').setValue(''); + } + } + } + }); + + frequencyStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectsystem/qualitymonitoringWithNoLogon/qualityMonitoringAction!getFrequency.do?', + method : 'POST' + }), + baseParams:{sterilizerDate : ""}, + reader : new Ext.data.JsonReader({ + root : 'data' + },[ + {name : 'value'}, + ] + ), + listeners:{ + load:function(store,records) { + + } + } + }); +} + +function getFormPanelContent(id){ + initStore(); + if(recycleQM == true){ + disableShowImageButton = true; + } + var varibaleContent1; + var varibaleContent2; + // 责任环节带出监测项 + if(sstsConfig.hasOwnProperty('responsibilityPartBringInspectItem') && sstsConfig.responsibilityPartBringInspectItem){ + varibaleContent1 = getResponsibilityPartContent(id); + varibaleContent2 = getInspectItemContent(id); + }else{ + varibaleContent1 = getInspectItemContent(id); + varibaleContent2 = getResponsibilityPartContent1(); + } + formPanel = new Ext.FormPanel({ + id : 'addQualityMonitoringForm', + frame : true, + labelSeparator : ':', + bodyStyle : 'padding:5px 5px 0px 5px', + width : 600, + height : 500, + labelAlign : 'right', + buttonAlign : 'center', + autoScroll : true, + items : [{ + id:'baseInfoPanel', + layout : 'column', + xtype:"fieldset", //定义类别为fieldset + title:"基本信息", + autoHeight:true, + items : [{ + xtype : 'hidden', + name : 'id', + id : 'id' + },{ + xtype : 'hidden', + name : 'tousseInstanceId', + id : 'tousseInstanceId' + },{ + xtype : 'hidden', + name : 'tousseDefinitionId', + id : 'tousseDefinitionId' + },{ + xtype : 'hidden', + name : 'tousseType', + id : 'tousseType' + },{ + xtype : 'hidden', + name : 'barcode', + id : 'barcode' + },{ + xtype : 'hidden', + name : 'scope', + id : 'scope' + },{ + xtype : 'hidden', + name : 'type', + id : 'type', + value : parm_s_type + },{ + xtype : 'hidden', + name : 'name', + id : 'name' + },{ + xtype : 'hidden', + name : 'optionAmount', + id : 'optionAmount' + },{ + xtype : 'hidden', + name : 'uploadImgIds', + id : 'uploadImgIds' + },{ + xtype : 'hidden', + name : 'containerBarcode', + id : 'containerBarcode' + },{ + xtype:'hidden', + name:'isRecycle', + id:'isRecycle' + },{ + xtype:'hidden', + name:'tousseDefRecycling', + id:'tousseDefRecycling' + },{ + xtype : 'hidden', + name : 'formDefinitionId', + id : 'formDefinitionId' + },{ + xtype:'hidden', + name:'isRepacking', + id:'isRepacking' + },{ + xtype:'hidden', + name:'isAllTousseOfSterile', + id:'isAllTousseOfSterile' + },{ + xtype:'hidden', + name:'orgUnitCoding', + id:'orgUnitCoding' + },{ + xtype:'hidden', + name:'orgUnit', + id:'orgUnit' + }, + varibaleContent1, + varibaleContent2, + { + layout : 'form', + columnWidth : .48, + labelWidth : 80, + items : [{ + xtype : 'datefieldWithMin', + fieldLabel : '抽检时间', + id : 'dateTime', + name : 'dateTime', +// value : new Date(), + editable : false, + format : 'Y-m-d H:i', + altFormats:'Y-m-d|Y-n-j|y-n-j|y-m-j|y-m-d|y-n-d|Y-n-d|Y-m-j|Ymd|Ynj|ynj|ymj|ymd|ynd|Ynd|Ymj|Y/m/d|Y/n/j|y/n/j|y/m/j|y/m/d|y/n/d|Y/n/d|Y/m/j', + allowBlank : false, + anchor : '90%' + }] + }, { + layout : 'form', + columnWidth : .48, + labelWidth : 80, + items : [{ + xtype : 'textfield', + name : 'createUserName', + id : 'createUserName', + fieldLabel : "登记人", + width:60, + anchor : '80%', + allowBlank : false, + value : userName + }] + },{ + layout : 'form', + columnWidth : .5, + labelWidth : 90, + hidden : true, + items : [{ + xtype : 'textfield', + name : 'responsiblePersonBarcode', + id : 'responsiblePersonBarcode', + fieldLabel : "扫描责任人条码", + listeners : { + specialkey : function(field,e){ + if(e.getKey() == 13){ + var barcodeValue = field.getValue(); + Ext.getCmp("responsiblePersonBarcode").setValue(''); + loadResponPersonByBarcode(barcodeValue); + } + } + }, + anchor : '95%' + }] + },{ + layout : 'form', + columnWidth : .48, + labelWidth : 80, + items : [{ + xtype : 'textfield', + name : 'responsiblePerson', + id : 'responsiblePerson', + fieldLabel : "责任人", + anchor : '90%' + }] + },{ + id:'insertBasket', + name:'insertBasket', + layout : 'form', + columnWidth : .48, + labelWidth : 80, + items : [{ + xtype : 'textfield', + name : 'scanBarcode', + id : 'scanBarcode', + fieldLabel : "清洗篮筐条码", + listeners : { + specialkey : function(field,e){ + if(e.getKey() == 13){ + var barcodeValue = field.getValue(); + Ext.getCmp("scanBarcode").setValue(''); + ContainerTableManager.getBasketByBarcodeAndProcedures(barcodeValue,basketAllowProcedure,function(jsonStr){ + var obj = Ext.util.JSON.decode(jsonStr); + if(obj.success){ + Ext.getCmp('containerName').setValue(obj.containerName); + }else{ + showResultQM(obj.message); + } + Ext.getCmp("containerBarcode").setValue(barcodeValue); + }); + } + } + }, + anchor : '90%' + }] + },{ + id:'containerNameItem', + name:'containerNameItem', + layout : 'form', + columnWidth : .5, + labelWidth : 90, + items : [{ + xtype : 'textfield', + name : 'containerName', + id : 'containerName', + fieldLabel : "清洗篮筐名称", + readOnly:true, + allowBlank:true, + anchor : '95%' + }] + },{ + layout : 'form', + labelWidth : 90, + columnWidth : .48, + items : [{ + xtype : 'combo', + id : 'querySupplyRoom', + name : 'querySupplyRoom', + valueField : 'departId', + displayField : 'name', + fieldLabel : "选择供应室", + allowBlank : false, + editable : false, + store : supplyRoomStore, + forceSelection : true, + //mode : 'local', + triggerAction : 'all', + anchor : '90%', + listeners : { + select : function(combo,record){ + Ext.getCmp("orgUnitCoding").setValue(combo.getValue()); + Ext.getCmp("orgUnit").setValue(combo.getRawValue()); + } + } + }] + },{ + layout : 'form', + columnWidth : 1, + labelWidth : 80, + items : [ { + xtype : 'textarea', + name : 'remark', + id : 'remark', + width : 130, + height : 50, + fieldLabel : "备注", + anchor : '95%' + }] + },{ + layout : 'column', + columnWidth : 1, + hidden : true, + labelWidth : 90, + items : [ + { + layout : 'form', + columnWidth : 0.8, + labelWidth : 90, + items : [ + { + xtype : 'textfield', + name : 'uploadImage', + id : 'uploadImage', + fieldLabel : "上传图片", + anchor : '100%' + } + ] + }, + { + layout : 'form', + columnWidth : 0.08, + labelWidth : 90, + items : [ + { xtype:'button', + text : '上传', + handler : function(){ + if(id == null || id == ''){ + showResultQM("请先保存后再上传图片!"); + }else{ + uploadWindowA(imageType_qualitymonitoring,id); + } + } + } + ] + }, + { + layout : 'form', + columnWidth : 0.12, + labelWidth : 90, + items : [ + { xtype:'button', + text : '预览', + disabled:disableShowImageButton, + iconCls : 'btn_ext_application_search', + handler : function(){ + showUploadImageWin(id); + } + } + ] + } + ] + }] + }], + buttons : [{ + id : 'addExtractCheckTousse', + text : '添加抽检器械包', + handler : function(){ + addExtractCheckTousse(); + } + },{ + id : 'addExtractCheckMaterial', + text : '添加抽检器械', + handler : function(){ + addExtractCheckMaterial(); + } + },{ + id : 'saveBtn', + text : '   保存    ', + hidden : currentId, + handler : function(){ + saveQualityMonitoring(this,materialDefinitionStore,false); + } + },{ + id : 'saveAndCreateBtn', + text : '保存并新建', + hidden : currentId, + handler : function(){ + saveQualityMonitoring(this,materialDefinitionStore,true); + } + }, { + text : '   取消    ', + id : 'saveAndNewBtn', + handler : cancelQualityMonitoring + }] + }); + formPanel.add({ + id : 'tousseInfoFieldSet', + xtype:"fieldset", + labelAlign :'left', + title:"器械包信息", +// layout:'column', + autoHeight:true, + items:[{ + layout : 'column', + columnWidth : .5, + labelWidth : 90, + id:'setLayout', + items : [{ + layout : 'form', + columnWidth : 1, + labelWidth : 90, + items : [{ + id : 'allTousseOfSterile', + name : 'allTousseOfSterile', + fieldLabel : '是否整炉', + xtype : 'checkbox', + inputValue : '是否整炉', + listeners:{ + check:function( thiz, checked ){ + if(checked){ + Ext.getCmp('isAllTousseOfSterile').setValue('是'); + }else{ + Ext.getCmp('isAllTousseOfSterile').setValue('否'); + } + updateControlStatus(); + } + } + }] + },{ + layout : 'form', + columnWidth : .5, + id : 'recycleC', + labelWidth : 90, + items : [{ + id : 'recycle', + name : 'recycle', + fieldLabel : '重新回收', + xtype : 'checkbox', + inputValue : '重新回收', + listeners:{ + check:function( thiz, checked ){ + if(checked){ + Ext.getCmp('isRecycle').setValue('是'); + Ext.getCmp('repacking').setValue(false); + }else{ + Ext.getCmp('isRecycle').setValue('否'); + } + } + } + }] + },{ + layout : 'form', + columnWidth : .5, + id : 'repackingC', + labelWidth : 90, + items : [{ + id : 'repacking', + name : 'repacking', + fieldLabel : '重新装配', + xtype : 'checkbox', + inputValue : '重新装配', + listeners:{ + check:function( thiz, checked ){ + if(checked){ + Ext.getCmp('isRepacking').setValue('是'); + Ext.getCmp('recycle').setValue(false); + }else{ + Ext.getCmp('isRepacking').setValue('否'); + } + } + } + }] + + },{ + layout : 'column', + columnWidth : 1, + labelWidth : 90, + id: 'tosseAndMaterial', + items : [{ + layout : 'form', + id : 'tousseBarcodeC', + labelWidth : 90, + columnWidth : .5, + items : [{ + xtype : 'textfield', + name : 'tempBarcode', + id : 'tempBarcode', + fieldLabel : "器械包条码", + listeners : { + specialkey : function(field,e){ + if(e.getKey() == 13){ + getTousseInstanceNameAndResponsiblePerson(field.getValue(), Ext.getCmp('formDefinitionId').getValue(), materialDefinitionStore); + field.setValue(''); + } + } + }, + anchor : '95%' + }] + },{ + layout : 'form', + id : 'tousseNameC', + labelWidth : 90, + columnWidth : .5, + items : [{ + xtype : 'combo', + id : 'tousseName', + name : 'tousseName', + fieldLabel : '器械包名称', + queryParam : 'spell', + minChars : 0, + valueField : 'name', + displayField : 'name', + store : tousseDefinitionStore, + forceSelection : true, + lazyInit : true, + triggerAction : 'all', + hideTrigger : true, + typeAhead : false, + anchor : '95%', + listeners : { + select : function(combo, record, index) { + combo.setValue(record.data.name); + Ext.getCmp('tousseDefinitionId').setValue(record.data.id); + //加载责任人 + + }, + blur : function(field){ + if(!Ext.getCmp('tousseName').getRawValue()){ + Ext.getCmp('tousseDefinitionId').setValue(''); + } + //重新加载包内的材料 + materialDefinitionStore.reload(); + } + } + }] + },{ + layout : 'form', + id : 'tousseAmountC', + labelWidth : 90, + columnWidth : .5, + items : [{ + xtype : 'numberfield', + allowDecimals : false, + name : 'tousseAmount', + id : 'tousseAmount', + fieldLabel : "器械包数量", + allowBlank : true, + blankText : '数量不能为空', + anchor : '95%' + }] + },{ + layout : 'form', + id : 'materialC', + columnWidth : .5, + labelWidth : 90, + items : [{ + xtype : 'combo', + id : 'material', + name : 'material', + fieldLabel : '抽检器械', + queryParam : 'spell', + minChars : 0, + valueField : 'id', + displayField : 'name', + store : materialDefinitionStore, + forceSelection : true, + lazyInit : true, + triggerAction : 'all', + hideTrigger : true, + typeAhead : false, + anchor : '95%', + listeners : { + select : function(combo, record, index) { + combo.setValue(record.data.name); + } + } + }] + },{ + layout : 'form', + id : 'materialAmountC', + columnWidth : .5, + labelWidth : 90, + items : [{ + xtype : 'numberfield', + allowDecimals : false, + name : 'materialAmount', + id : 'materialAmount', + fieldLabel : "器械数量", + allowBlank : true, + blankText : '数量不能为空', + anchor : '95%' + }] + },{ + layout : 'form', + hidden : !(qualityMonitoringWRRecordID > 0 && (sstsConfig.hasOwnProperty('haveRinserPosition')) && sstsConfig.haveRinserPosition), + id : 'basketBarcodeC', + columnWidth : .5, + labelWidth : 90, + items : [{ + xtype : 'textfield', + name : 'basketBarcode', + id : 'basketBarcode', + fieldLabel : "篮筐条码", + anchor : '95%', + listeners : { + specialkey : function(field,e){ + if(e.getKey() == 13){ + var idName = field.getId().replace("basketBarcode","position"); + getPostionByBasketBarcode(field.getValue(),idName); + field.setValue(''); + } + } + } + }] + },{ + layout : 'form', + hidden : !(qualityMonitoringWRRecordID > 0 && (sstsConfig.hasOwnProperty('haveRinserPosition')) && sstsConfig.haveRinserPosition), + id : 'positionC', + columnWidth : .5, + labelWidth : 90, + items : [{ + xtype : 'textfield', + name : 'position', + id : 'position', + editable : false, + fieldLabel : "位置", + anchor : '95%' + }] + }] + }] + }] + }); + formPanel.add({ + id : 'sterilizationRecordInfo', + xtype:"fieldset", + labelAlign :'left', + title:"灭菌记录信息", + autoHeight:true, + items:[{ + layout : 'column', + columnWidth : .5, + labelWidth : 90, + id:'setLayout', + items : [{ + layout : 'form', + columnWidth : .5, + labelWidth : 90, + items : [{ + xtype : 'datefieldWithMin', + fieldLabel : '灭菌日期', + id : 'srDateTime', + name : 'srDateTime', + editable : false, + format : 'Y-m-d', + altFormats:'Y-m-d|Y-n-j|y-n-j|y-m-j|y-m-d|y-n-d|Y-n-d|Y-m-j|Ymd|Ynj|ynj|ymj|ymd|ynd|Ynd|Ymj|Y/m/d|Y/n/j|y/n/j|y/m/j|y/m/d|y/n/d|Y/n/d|Y/m/j', + allowBlank : true, + anchor : '95%', + listeners : { + select : function() { + // this.value 2017-2-2 + Ext.getCmp('sterilizerFre').setValue(""); + frequencyStore.baseParams.sterilizerDate = this.value; + var name = Ext.getCmp('sterilizerName').getValue(); + frequencyStore.baseParams.sterilizerName = name; + frequencyStore.load(); + } + } + }] + },{ + layout : 'form', + columnWidth : .5, + labelWidth : 90, + items : [{ + xtype : 'combo', + id : 'sterilizerName', + name : 'sterilizerName', + fieldLabel : '灭菌炉号', + queryParam : 'spell', + minChars : 0, + valueField : 'name', + displayField : 'name', + store : new Ext.data.SimpleStore({ + fields : [ 'name' ], + url : WWWROOT + '/disinfectsystem/qualitymonitoringWithNoLogon/qualityMonitoringAction!getAllSterilizer.do?' + }), + forceSelection : true, + lazyInit : true, + triggerAction : 'all', + hideTrigger : false, + typeAhead : false, + anchor : '95%', + listeners : { + select : function(combo, record, index) { + // record.data.name 选择的值 + Ext.getCmp('sterilizerFre').setValue(""); + frequencyStore.baseParams.sterilizerName = record.data.name; + var date = Ext.getCmp('srDateTime').getRawValue(); + frequencyStore.baseParams.sterilizerDate = date; + frequencyStore.load(); + } + } + }] + },{ + layout : 'form', + columnWidth : .5, + labelWidth : 90, + items : [{ + xtype : 'combo', + id : 'sterilizerFre', + name : 'sterilizerFre', + fieldLabel : '炉次', + queryParam : 'spell', + minChars : 0, + valueField : 'value', + displayField : 'value', + store : frequencyStore, + forceSelection : true, + lazyInit : true, + triggerAction : 'all', + hideTrigger : false, + typeAhead : false, + anchor : '95%' + }] + }] + }] + }); + return formPanel; +} +function recycleAddQualityMonitoringDo(){ + setStartDate(Ext, 'yyyy/MM/dd HH:mm', 'dateTime'); //(设置抽检时间,取服务器时间 cjr) + disableRecycleAndRepacking(); + formDefinitionStore.baseParams.responsiblePerson = "回收清点"; + formDefinitionStore.load(); +} + +function showResultQM(msg){ + if(recycleQM == true){ + showResultCurPage(msg); + }else{ + showResult(msg); + } +} Index: ssts-web/src/main/resources/spring/security/applicationContext-acegi-security.xml =================================================================== diff -u -r18228 -r18497 --- ssts-web/src/main/resources/spring/security/applicationContext-acegi-security.xml (.../applicationContext-acegi-security.xml) (revision 18228) +++ ssts-web/src/main/resources/spring/security/applicationContext-acegi-security.xml (.../applicationContext-acegi-security.xml) (revision 18497) @@ -37,6 +37,7 @@ + Index: ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/qualitymonitoringView.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/qualitymonitoringView.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/qualitymonitoringView.jsp (revision 18497) @@ -0,0 +1,98 @@ +<%@page import="com.forgon.Constants"%> +<%@page import="org.apache.commons.lang.StringUtils"%> +<%@page import="com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinition"%> +<%@page import="com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityMonitoringDefinition"%> +<%@page import="com.forgon.disinfectsystem.entity.basedatamanager.container.Container"%> +<%@page import="com.forgon.disinfectsystem.entity.basedatamanager.imagefilemanager.ImageFile"%> +<%@page import="com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition" %> +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> + +<% + String userName = AcegiHelper.getLoginUser().getUserFullName(); + if(StringUtils.equals(Constants.ANONYMOUS_USERNAME, userName)){ + userName = ""; + } +%> + + + + +质量监测 + + +<%@ include file="/common/includeExtJsAndCss.jsp"%> + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+ + \ No newline at end of file Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/dwr/table/QualityMonitoringInstanceTableManager.java =================================================================== diff -u -r16080 -r18497 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/dwr/table/QualityMonitoringInstanceTableManager.java (.../QualityMonitoringInstanceTableManager.java) (revision 16080) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/dwr/table/QualityMonitoringInstanceTableManager.java (.../QualityMonitoringInstanceTableManager.java) (revision 18497) @@ -31,17 +31,13 @@ public String findQualityMonitoringInstanceTableList( Map> parameterMap) { - String sql = "where po.orgUnitCoding ='" - + AcegiHelper.getLoginUser() - .getCurrentOrgUnitCode() + "'"; + String currentOrgUnitCode = AcegiHelper.getLoginUser().getCurrentOrgUnitCode(); + String sql = " where 1=1 "; SupplyRoomConfig firstSupplyRoom = supplyRoomConfigManager .getFirstSupplyRoomConfig(); - if (firstSupplyRoom != null) { - if (StringUtils.equals(firstSupplyRoom.getOrgUnitCoding(), - AcegiHelper.getLoginUser() - .getCurrentOrgUnitCode())) { - sql = "where 1=1"; - } + if (firstSupplyRoom != null && StringUtils.equals(firstSupplyRoom.getOrgUnitCoding(),currentOrgUnitCode)) { + }else if(StringUtils.isNotBlank(currentOrgUnitCode)){ + sql = "where po.orgUnitCoding ='" + currentOrgUnitCode + "'"; } Map sqlWhereParamMap = gridManager Index: ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/qualitymonitoringInstanceView.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/qualitymonitoringInstanceView.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/qualitymonitoringInstanceView.js (revision 18497) @@ -0,0 +1,157 @@ +var entityName = "质量监测"; +var grid; +var tempFormDefintionId = null; +var tempFormDefinitionName = null; +var currentId; +/** + * 修改记录 + * modifyRecord函数 触发modify函数调用,并传入当前列的值以及record.data对象 + * 页面中需要定义 modify(v,data) 函数 + */ +function modify(v,data){ + addQualityMonitoring(data['id']); +} + +// 删除 +function deleteQualityMonitoringInstance(grid) { + + var records = grid.getSelectionModel().getSelections(); + + if (records.length == 0) { + showResult("请选择要删除的记录!"); + return false; + } + var ids = null; + for ( var i = 0, len = records.length; i < len; i++) { + if (ids == null) { + ids = records[i].data['id']; + } else { + ids = ids + ';' + records[i].data['id']; + } + } + Ext.MessageBox.confirm("请确认","是否确定要删除选中的信息吗?", + function(button, text) { + if ("yes" == button){ + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/qualityMonitoringInstanceAction!deleteQualityMonitoringInstance.do', + params : {ids : ids}, + success : function(response, options) { + var result = Ext.decode(response.responseText); + showResult(result.message); + grid.dwrReload(); + }, + failure : function(response, options) { + var result = Ext.decode(response.responseText); + alert(result.message); + } + }); + } + }); + +} + +Ext.onReady(function() { + Ext.QuickTips.init(); + // 记录cookie(3步) + + var columns = [ + {header : "监测项",width : 200,dataIndex : 'name', renderer : modifyRecord}, + {header : "登记人",width : 60,dataIndex : 'createUserName'}, + {header : "登记科室",width : 60,dataIndex : 'orgUnit'}, + {header : "抽检时间",width : 120,dataIndex : 'createDate',renderer : myDateFormatByMinute}, +// {header : "条码",width : 100,dataIndex : 'barcode'}, +// {header : "器械包名称",width : 120,dataIndex : 'tousseName'}, +// {header : "材料名称",width : 120,dataIndex : 'material'}, +// {header : "数量",width : 40,dataIndex : 'amount'}, + {header : "责任人",width : 60,dataIndex : 'responsiblePerson'}, + {header : "登记时间",width : 120,dataIndex : 'createDate',renderer : myDateFormatByMinute}, + {header : "灭菌炉",width : 120,dataIndex : 'sterilizerName'}, + {header : "灭菌炉次",width : 120,dataIndex : 'sterilizerFrequency'}, + {header : "灭菌记录信息",width : 120,dataIndex : 'sterilizationRecordInfo'}, + {id : 'remark',header : "备注",width : 120,dataIndex : 'remark'} + ]; + + var filters = new Ext.grid.GridFilters({ + filters : [ + {type:'string',dataIndex:'name'}, + {type:'numeric',dataIndex:'amount'}, + {type:'string',dataIndex:'barcode'}, + {type:'string',dataIndex:'tousseName'}, + {type:'string',dataIndex:'material'}, + {type:'date',dataIndex:'createDate'}, + {type:'string',dataIndex:'sterilizerName'}, + {type:'string',dataIndex:'sterilizerFrequency'}, + {type:'string',dataIndex:'sterilizationRecordInfo'}, + {type:'string',dataIndex:'remark'} + ] + }); + + var readerDetail = [ + {name : 'id'}, + {name : 'name'}, + {name : 'amount'}, + {name : 'barcode'}, + {name : 'tousseName'}, + {name : 'material'}, + {name : 'remark'}, + {name : 'createUserName'}, + {name : 'orgUnit'}, + {name : 'createDate'}, + {name : 'sterilizerName'}, + {name : 'sterilizerFrequency'}, + {name : 'sterilizationRecordInfo'}, + {name : 'responsiblePerson'} + ]; + + var tbar = [{ + text : '添加', + iconCls : 'btn_ext_application_add', + handler : function() { + qualityMonitoringSterilizationID = 0; + qualityMonitoringWRRecordID = 0; + addQualityMonitoring(); + } + }, '-', { + text : '删除', + hidden : true, + iconCls : 'btn_ext_application_del', + handler : function() { + deleteQualityMonitoringInstance(grid); + } + }]; + var dwrCallParams = null; + + Ext.ux.ForgonPageGrid.prototype.getGridParameterMap = function() { + + }; + + grid = new Ext.ux.ForgonPageGrid( { + tbar : tbar, + pageSize : 20, + defaultSortField : 'createDate', + defaultSortDirection : 'DESC', + title : '质量监测列表', + isCheckboxSelectionModel : true, + rememberSelected : false, + isShowSearchField : true, + columns : columns, + plugins : filters, + autoExpandColumn : 'remark', + renderTo : 'gridDiv', + frame : false + }, readerDetail, + QualityMonitoringInstanceTableManager.findQualityMonitoringInstanceTableList, + dwrCallParams // 这个参数只是占位作用 + ); + + var viewport = new Ext.Viewport( { + layout : 'border', + items : [{ + region : 'center', + margins : '0 0 0 0', + layout : 'fit', + items : grid + }] + }); + +}); \ No newline at end of file Index: ssts-web/src/main/resources/spring/security/applicationContext-acegi-security-standard.xml.back =================================================================== diff -u -r16595 -r18497 --- ssts-web/src/main/resources/spring/security/applicationContext-acegi-security-standard.xml.back (.../applicationContext-acegi-security-standard.xml.back) (revision 16595) +++ ssts-web/src/main/resources/spring/security/applicationContext-acegi-security-standard.xml.back (.../applicationContext-acegi-security-standard.xml.back) (revision 18497) @@ -37,6 +37,7 @@ + Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/action/QualityMonitoringWithNoLogonAction.java =================================================================== diff -u --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/action/QualityMonitoringWithNoLogonAction.java (revision 0) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/action/QualityMonitoringWithNoLogonAction.java (revision 18497) @@ -0,0 +1,959 @@ +package com.forgon.disinfectsystem.qualitymonitoring.instance.action; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletResponse; + +import net.sf.json.JSONArray; +import net.sf.json.JSONNull; +import net.sf.json.JSONObject; +import net.sf.json.JsonConfig; +import net.sf.json.processors.DefaultValueProcessor; +import net.sf.json.util.CycleDetectionStrategy; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.struts2.convention.annotation.Action; +import org.apache.struts2.convention.annotation.Namespace; +import org.apache.struts2.convention.annotation.ParentPackage; +import org.hibernate.Query; + +import com.forgon.Constants; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.customform.formdefinition.service.FormDefinitionManager; +import com.forgon.disinfectsystem.entity.basedatamanager.imagefilemanager.ImageFile; +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.ClassifyBasket; +import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinition; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoring.QualityMonitoringGoods; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoring.QualityMonitoringInstance; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityMonitoringDefinition; +import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; +import com.forgon.disinfectsystem.qualitymonitoring.definition.service.QualityMonitoringDefinitionManager; +import com.forgon.disinfectsystem.qualitymonitoring.instance.service.QualityMonitoringInstanceManager; +import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.service.SterilizationRecordManager; +import com.forgon.disinfectsystem.tousse.imagefilemanager.service.ImageFileManager; +import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; +import com.forgon.disinfectsystem.tousse.materialinstance.service.MaterialInstanceManager; +import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; +import com.forgon.tools.ImageUtils; +import com.forgon.tools.StrutsParamUtils; +import com.forgon.tools.StrutsResponseUtils; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.json.JSONUtil; +import com.forgon.tools.string.StringTools; +import com.opensymphony.xwork2.ModelDriven; +/** + * 录质量监测数据(不用登录的前提下) + * @author shuyongfu + * + */ +@ParentPackage(value = "default") +@Namespace(value = "/disinfectsystem/qualitymonitoringWithNoLogon") +@Action(value = "qualityMonitoringAction") +public class QualityMonitoringWithNoLogonAction implements ModelDriven { + + private QualityMonitoringDefinitionManager qualityMonitoringDefinitionManager; + + private QualityMonitoringInstance qualityMonitoringInstance = new QualityMonitoringInstance(); + + private QualityMonitoringInstanceManager qualityMonitoringInstanceManager; + + private ImageFileManager imageFileManager; + + private SupplyRoomConfigManager supplyRoomConfigManager; + + private ObjectDao objectDao; + + private TousseDefinitionManager tousseDefinitionManager; + + private FormDefinitionManager formDefinitionManager; + + private SterilizationRecordManager sterilizationRecordManager; + + private MaterialDefinitionManager materialDefinitionManager; + + private MaterialInstanceManager materialInstanceManager; + + private String objectID; + + private String objectType; + + private String spell; + + private File[] uploadFiles; + + private String[] uploadFilesFileName; + + public SupplyRoomConfigManager getSupplyRoomConfigManager() { + return supplyRoomConfigManager; + } + + public void setSupplyRoomConfigManager( + SupplyRoomConfigManager supplyRoomConfigManager) { + this.supplyRoomConfigManager = supplyRoomConfigManager; + } + + public void setImageFileManager(ImageFileManager imageFileManager) { + this.imageFileManager = imageFileManager; + } + + public void setQualityMonitoringInstanceManager( + QualityMonitoringInstanceManager qualityMonitoringInstanceManager) { + this.qualityMonitoringInstanceManager = qualityMonitoringInstanceManager; + } + + public void setQualityMonitoringDefinitionManager( + QualityMonitoringDefinitionManager qualityMonitoringDefinitionManager) { + this.qualityMonitoringDefinitionManager = qualityMonitoringDefinitionManager; + } + + public void setObjectDao(ObjectDao objectDao) { + this.objectDao = objectDao; + } + + public void setTousseDefinitionManager( + TousseDefinitionManager tousseDefinitionManager) { + this.tousseDefinitionManager = tousseDefinitionManager; + } + + public void setFormDefinitionManager(FormDefinitionManager formDefinitionManager) { + this.formDefinitionManager = formDefinitionManager; + } + + public void setSterilizationRecordManager( + SterilizationRecordManager sterilizationRecordManager) { + this.sterilizationRecordManager = sterilizationRecordManager; + } + + public void setSpell(String spell) { + this.spell = spell; + } + + public void setUploadFiles(File[] uploadFiles) { + this.uploadFiles = uploadFiles; + } + + public void setUploadFilesFileName(String[] uploadFilesFileName) { + this.uploadFilesFileName = uploadFilesFileName; + } + + public void setMaterialDefinitionManager( + MaterialDefinitionManager materialDefinitionManager) { + this.materialDefinitionManager = materialDefinitionManager; + } + + public void setMaterialInstanceManager( + MaterialInstanceManager materialInstanceManager) { + this.materialInstanceManager = materialInstanceManager; + } + + public void loadLastDeployFormDefinitionGroupByFormName(){ + String spell = StrutsParamUtils.getPraramValue("spell", ""); + String formType = StrutsParamUtils.getPraramValue("formType", ""); + String querySupplyRoom = StrutsParamUtils.getPraramValue("querySupplyRoom", ""); + String responsiblePerson = StrutsParamUtils.getPraramValue("responsiblePerson", ""); + String isNotLimitInspect = StrutsParamUtils.getPraramValue("isNotLimitInspect", ""); + List list = new ArrayList(); + if("是".equals(isNotLimitInspect) && StringUtils.isNotBlank(responsiblePerson)){ + list = qualityMonitoringDefinitionManager.loadLastDeployFormDefinitionGroupByFormName(spell,formType,null); + }else{ + list = qualityMonitoringDefinitionManager.loadLastDeployFormDefinitionGroupByFormName(spell,formType,responsiblePerson); + } + JSONArray data = new JSONArray(); + if(list != null){ + // 如果从责任环节进来,且不限制责任环节,重新按照责任环节排序 + List nList = new ArrayList(); + if("是".equals(isNotLimitInspect) && StringUtils.isNotBlank(responsiblePerson)){ + List otherList = new ArrayList(); + for (QualityMonitoringDefinition formDefinition : list){ + if(responsiblePerson.equals(formDefinition.getResponsibilityPart())){ + nList.add(formDefinition); + }else{ + otherList.add(formDefinition); + } + } + nList.addAll(otherList); + }else{ + nList = list; + } + + for (FormDefinition formDefinition : nList) { + if(StringUtils.isNotBlank(querySupplyRoom)){ + String departNames = formDefinition.getDepartNames(); + if(StringUtils.isNotBlank(departNames) && departNames.contains(querySupplyRoom)){ + JSONObject obj = new JSONObject(); + obj.put("id", formDefinition.getId()); + obj.put("name", formDefinition.getFormName()); + data.add(obj); + } + }else{ + JSONObject obj = new JSONObject(); + obj.put("id", formDefinition.getId()); + obj.put("name", formDefinition.getFormName()); + data.add(obj); + } + } + } + JSONObject obj = new JSONObject(); + obj.put("id","0"); + obj.put("name","无"); + data.add(obj); + JSONObject result = new JSONObject(); + result.put("totalCount", data.size()); + result.put("data", data); + StrutsResponseUtils.output(result); + } + + /** + * 保存质量监测记录 + */ + public void saveQualityMonitoringInstance() { + Map map = StrutsParamUtils.getParameters(); + boolean success = true; + String message = "保存成功!"; + try { + String ret = qualityMonitoringInstanceManager.saveQualityMonitoringInstance(qualityMonitoringInstance, map); + if(!StringTools.isBlank(ret)){ + message = ret; + } + } catch (Exception e) { + success = false; + if(StringUtils.isNotBlank(e.getMessage())){ + message = e.getMessage(); + }else{ + message = e.toString(); + } + } + JSONObject result = new JSONObject(); + result.put("success", success); + result.put("message", message); + result.put("id", qualityMonitoringInstance.getId()); + StrutsResponseUtils.output(result.toString()); + } + + + /** + * 根据器械包条码以及监测项获取器械包名字以及监测环节的责任人 + * + * @param barcode + * @return + */ + public String getTousseInstanceNameAndResponsiblePerson() { + String barcode = StrutsParamUtils.getPraramValue("barcode", ""); + String qmDefinitionId = StrutsParamUtils.getPraramValue( + "qmDefinitionId", ""); + JSONObject obj = JSONUtil.buildJsonObject(false); + try{ + if (StringUtils.isNotBlank(barcode) + && StringUtils.isNotBlank(qmDefinitionId)) { + TousseInstance tousseInstance = (TousseInstance) objectDao.getByProperty( + TousseInstance.class.getSimpleName(), "barcode", barcode); + if (tousseInstance != null) { + TousseDefinition td = tousseInstance.getTousseDefinition(); + + if(TousseDefinition.PACKAGE_TYPE_COMBO.equals(td.getTousseType())){ + obj = JSONUtil.buildJsonObject(false, "暂时不支持录入聚合包."); + }else{ + //验证当前科室是否有配置处理对应器械包 + tousseDefinitionManager.validateCssdHandleTousses(AcegiHelper.getCurrentOrgUnitCode(), + AcegiHelper.getCurrentOrgUnitName(), td.getTousseType(), + tousseInstance.getTousseName()); + + QualityMonitoringDefinition qualityMonitoringConfig = qualityMonitoringDefinitionManager + .getQualityMonitoringDefinitionById(qmDefinitionId); + String responsiblePerson = ""; + if (qualityMonitoringConfig != null) { + 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 (tousseInstance.getSterilizationRecord_id() != null && tousseInstance.getSterilizationRecord_id() != 0) { + // 去重 + String sterilizationUser = tousseInstance.getSterilizationUser(); + + if ((";" + responsiblePerson + ";") + .indexOf((";" + sterilizationUser + ";")) == -1) { + responsiblePerson = appendToSourceStrWithTargetStr( + responsiblePerson, + sterilizationUser); + } + } + } + } + } + String tousseType = td.getTousseType(); + String isRecycle = td.getIsRecycling(); + Long tousseDefinitionId = td.getId(); + String tousseName = tousseInstance.getTousseName(); + obj.put("success", true); + obj.put("tousseInstanceId", tousseInstance.getId()); + obj.put("tousseName", tousseName); + obj.put("tousseType", tousseType); + obj.put("isRecycle", isRecycle); + obj.put("responsiblePerson", responsiblePerson); + obj.put("tousseDefinitionId", tousseDefinitionId); + obj.put("sterilizerName", tousseInstance.getSterilizerName()); + obj.put("sterileFrequency", tousseInstance.getSterileFrequency()); + obj.put("success", true); + } + }else{ + obj = JSONUtil.buildJsonObject(false, "找不到器械包信息,请输入正确的条码."); + } + }else{ + obj = JSONUtil.buildJsonObject(false, "未选监测项或者未输入条码."); + } + }catch(Exception ex){ + obj = JSONUtil.buildJsonObject(false, ex.getMessage()); + } + StrutsResponseUtils.output(obj); + return null; + } + + + private String appendToSourceStrWithTargetStr(String sourceStr, + String targetStr) { + if (StringUtils.isNotBlank(targetStr)) { + if (sourceStr.length() > 0) { + sourceStr += ";"; + } + sourceStr += targetStr; + } + return sourceStr; + } + + /** + * 加载表单定义数据 + */ + public void loadFormDefinition() { + StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); + String id = StrutsParamUtils.getPraramValue("id", ""); + FormDefinition formDefinition = null; + if(DatabaseUtil.isPoIdValid(id)){ + formDefinition = formDefinitionManager.getFormDefinitionById(id); + } + Map map = new HashMap(); + map.put("success", true); + map.put("data", formDefinition); + Collections.sort(formDefinition.getItems()); + JSONObject jsonObject = JSONObject.fromObject(map); + String jsonStr = jsonObject.toString(); + try { + StrutsParamUtils.getResponse().getWriter().println(jsonStr); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 质量监测页面通过篮筐条码和清洗记录id,获取位置信息 + * @return + */ + public String getPostionMsg() { + String barcode = StrutsParamUtils.getPraramValue("barcode", ""); + // 清洗记录的id + String washAndDisinfectRecordId = StrutsParamUtils.getPraramValue("qualityMonitoringWRRecordID", ""); + JSONObject obj = JSONUtil.buildJsonObject(false); + try{ + if (StringUtils.isNotBlank(barcode)) { + String positionMsg = null; + ClassifyBasket classifyBasket = null; + WashAndDisinfectRecord wrRecord = null; + if(StringUtils.isNotBlank(washAndDisinfectRecordId)){ + wrRecord = (WashAndDisinfectRecord) objectDao.getByProperty( + WashAndDisinfectRecord.class.getSimpleName(), "id", Long.valueOf(washAndDisinfectRecordId)); + if(wrRecord != null){ + for(ClassifyBasket cb : wrRecord.getClassifyBaskets()){ + if(barcode.equals(cb.getContainerBarcode())){ + classifyBasket = cb; + } + } + }else{ + obj.put("success", false); + obj.put("message", "获取不到清洗记录!"); + StrutsResponseUtils.output(obj); + return null; + } + } + + // 通过篮筐的条码实例,查询到清洗的位置信息 + if(classifyBasket != null && StringUtils.isNotBlank(classifyBasket.getPosition())){ + positionMsg = wrRecord.getDisinfectIdentification() + " : " + classifyBasket.getPosition(); + obj.put("success", true); + obj.put("positionMsg", positionMsg); + obj.put("message", "获取位置成功!"); + }else{ + obj.put("success", false); + if(classifyBasket == null){ + obj.put("message", "找不到篮筐或清洗记录没有该篮筐!"); + }else{ + obj.put("message", "找不到篮筐位置信息!"); + } + } + }else{ + obj.put("success", false); + obj.put("message", "篮筐条码不能为空!"); + } + }catch(Exception ex){ + obj = JSONUtil.buildJsonObject(false, ex.getMessage()); + } + StrutsResponseUtils.output(obj); + return null; + } + + + /** + * 加载上传图片 + */ + public void getUploadImageCount() { + String imageType = StrutsParamUtils.getPraramValue("imageType", ""); + String objectId = StrutsParamUtils.getPraramValue("objectId", ""); + int imageCount = 0; + if (StringUtils.isNotBlank(objectId)) { + if (ImageFile.IMAGE_TYPE_QUALITYMONITORING.equals(imageType)) { + QualityMonitoringInstance qualityMonitoring = qualityMonitoringInstanceManager + .getQualityMonitoringInstanceById(objectId); + if (qualityMonitoring != null) { + List images = qualityMonitoring.getImages(); + if (images != null && images.size() > 0) { + imageCount = images.size(); + } + } + } + } + HttpServletResponse httpServletResponse = StrutsParamUtils + .getResponse(); + httpServletResponse.setCharacterEncoding("UTF-8"); + try { + httpServletResponse.getWriter().print(imageCount); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 删除上传的图片 + */ + public void deleteUploadImage() { + String page = StrutsParamUtils.getPraramValue("pageNum", "1"); + String objectId = StrutsParamUtils.getPraramValue("id", ""); + if (StringUtils.isNotBlank(objectId)) { + QualityMonitoringInstance qmInstance = qualityMonitoringInstanceManager + .getQualityMonitoringInstanceById(objectId); + if (qmInstance != null) { + String sql = " where po.objectId = '" + + qmInstance.getId() + "' and po.imageType = '" + + ImageFile.IMAGE_TYPE_QUALITYMONITORING + + "' order by po.serialNum asc"; + List imagesList = imageFileManager + .getImageFileBySql(sql); + if (Integer.parseInt(page) <= imagesList.size()) { + ImageFile imageFile = imagesList + .get(Integer.parseInt(page) - 1); + imageFileManager.deleteImageFile(imageFile); + } + } + } + HttpServletResponse httpServletResponse = StrutsParamUtils + .getResponse(); + httpServletResponse.setCharacterEncoding("UTF-8"); + String result = "{success:true}"; + try { + httpServletResponse.getWriter().print(result); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 上传图片 + */ + public void uploadImage() { + objectID = StrutsParamUtils.getPraramValue("objectId", null); + objectType = StrutsParamUtils.getPraramValue("imageType", null); + JSONObject json = JSONUtil.buildJsonObject(true, "上传成功!"); + boolean isSavePathExist = supplyRoomConfigManager.isSavePathExist(); + if (isSavePathExist == false) { + JSONUtil.addSuccess(json, false); + JSONUtil.addMessage(json, "文件保存目录不存在."); + } + try { + if (StringUtils.isNotBlank(objectID) + && StringUtils.isNotBlank(objectType) && isSavePathExist) { + // 上传图片 + List uploadImageList = new ArrayList(); + for (int i = 0, size = uploadFiles.length; i < size; i++) { + File file = uploadFiles[i]; + InputStream fileStream = null; + ByteArrayOutputStream outStream = null; + if (file != null) { + try { + fileStream = new FileInputStream(file); + outStream = new ByteArrayOutputStream(); + byte[] data = new byte[4096]; + int count = -1; + while ((count = fileStream.read(data, 0, 4096)) != -1) { + outStream.write(data, 0, count); + } + ImageFile image = new ImageFile(); + image.setImage(outStream.toByteArray()); + image.setImageType(objectType); + image.setObjectId(objectID); + image.setImageName(uploadFilesFileName[i]); + uploadImageList.add(image); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (fileStream != null) { + try { + fileStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (outStream != null) { + try { + outStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + } + } + } + if(!imageFileManager.saveImageFile(uploadImageList,objectType,objectID)){ + JSONUtil.addSuccess(json, false); + JSONUtil.addMessage(json, "对不起,请先保存质量监测记录后再上传图片!"); + } + } + } catch (Throwable e) { + e.printStackTrace(); + JSONUtil.addSuccess(json, false); + JSONUtil.addMessage(json, e.getMessage()); + } + StrutsResponseUtils.output(json); + } + + /** + * 根据拼音简拼,获取材料NAME和ID,包括获取外来器械材料 如果 tousseDefinitionId 不为空,则只查询该器械包中的材料以及数量 + * + * @return + * @throws Exception + */ + public void getMaterialDefinitionDataIncludeForeignMD() { + if (spell == null) { + return; + } + String tousseDefinitionId = StrutsParamUtils.getPraramValue( + "tousseDefinitionId", ""); + String selectType = StrutsParamUtils + .getPraramValue("selectType", "all"); + //是否需要盘点 + String canInventory = StrutsParamUtils + .getPraramValue("selectType", "all"); + String jsonStr = ""; + try { + spell = java.net.URLDecoder.decode(spell, "UTF-8"); + } catch (UnsupportedEncodingException e1) { + e1.printStackTrace(); + } + if (StringUtils.isBlank(tousseDefinitionId)) { + jsonStr = materialDefinitionManager + .searchMaterialDefinitionAndForeignMDAndDiposableGoods(spell, + selectType,canInventory).toString(); + } else { + try { + jsonStr = materialInstanceManager + .searchMaterialInstanceByTousseDefinitionIdAndSpell( + tousseDefinitionId, spell, selectType,canInventory); + } catch (SQLException e) { + e.printStackTrace(); + } + } + StrutsResponseUtils.output(jsonStr); + } + + + /** + * 根据拼音简拼,五笔码获取器械包(内部器械包和自定义器械包)、一次性物品NAME和ID + * + * @return + * @throws Exception + */ + public String getTousseAndDiposableGoodsData() { + if (spell == null) { + return null; + } + String type = StrutsParamUtils.getPraramValue("type", ""); + + try { + spell = java.net.URLDecoder.decode(spell, "UTF-8"); + + try { + JSONObject json = null; + if ("器械包".equals(type.trim())) { + json = tousseDefinitionManager + .searchTousseOrDiposableGoods(spell, true); + } else if ("一次性物品".equals(type.trim())) { + json = tousseDefinitionManager + .searchTousseOrDiposableGoods(spell, false); + + } else { + // 根据拼音码、五笔码获取器械包(内部器械包和自定义器械包)和一次性物品NAME和ID + json = tousseDefinitionManager + .searchTousseAndDiposableGoods(spell); + } + HttpServletResponse response = StrutsParamUtils.getResponse(); + response.setCharacterEncoding("UTF-8"); + PrintWriter out; + + out = response.getWriter(); + out.print(json); + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 通过灭菌时间和灭菌炉名称,获取灭菌的炉次 + */ + public void getFrequency(){ + // 时间格式如: 2017-2-3 + String sterilizerDate = StrutsParamUtils.getPraramValue("sterilizerDate", ""); + String sterilizerName = StrutsParamUtils.getPraramValue("sterilizerName", ""); + List fres = sterilizationRecordManager.getFrequency(sterilizerDate, sterilizerName); + JSONArray data = new JSONArray(); + if(fres != null && fres.size() > 0){ + for(String fre : fres){ + JSONObject obj = new JSONObject(); + obj.put("value",fre); + data.add(obj); + } + } + JSONObject result = new JSONObject(); + result.put("data", data); + StrutsResponseUtils.output(result); + } + + /** + * 获取灭菌(前台调用) + * + */ + public void getAllSterilizer() { + String ownGroup = StrutsParamUtils.getPraramValue( + "ownGroup", ""); + String departCoding = AcegiHelper.getLoginUser().getCurrentOrgUnitCode(); + + String queryString = "from " + Sterilizer.class.getSimpleName() + " where orgUnitCoding = :orgUnitCoding"; + if (StringUtils.isNotBlank(ownGroup)){ + queryString += " and ownGroup = :ownGroup"; + } + Query query = objectDao.getHibernateSession().createQuery(queryString); + query.setParameter("orgUnitCoding", departCoding); + + if (StringUtils.isNotBlank(ownGroup)){ + query.setParameter("ownGroup", ownGroup); + } + List sterilizerList = query.list(); + + String str = ""; + if (CollectionUtils.isNotEmpty(sterilizerList)){ + for(Sterilizer s : sterilizerList){ + str = str + "[ '" + s.getName() + "'],"; + } + + } + + str = str.length() > 0 ? str.substring(0, str.length() - 1) : str; + if (StringUtils.equals("yes", + StrutsParamUtils.getPraramValue("includeNone", null))) { + str = "['']," + str; + } + if (StringUtils.equals(Constants.STR_YES, + StrutsParamUtils.getPraramValue("needAll", null))) { //前台combo是否需要一个“全部”的标志, + str = "['全部']," + str; + } + HttpServletResponse response = StrutsParamUtils.getResponse(); + try { + response.setCharacterEncoding("utf-8"); + response.getWriter().print("[" + str + "]"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 加载上传图片 + */ + public void getImage() { + String page = StrutsParamUtils.getPraramValue("page", "1"); + String imageType = StrutsParamUtils.getPraramValue("imageType", ""); + String objectId = StrutsParamUtils.getPraramValue("objectId", ""); + byte[] img = null; + if (StringUtils.isNotBlank(objectId)) { + if (ImageFile.IMAGE_TYPE_QUALITYMONITORING.equals(imageType)) { + QualityMonitoringInstance qmInstance = qualityMonitoringInstanceManager + .getQualityMonitoringInstanceById(objectId); + img = imageFileManager.getImageByIdAndType(qmInstance.getId(), + ImageFile.IMAGE_TYPE_QUALITYMONITORING, page); + } + } + img = ImageUtils.defaultIfEmpty(img); + OutputStream outputStream = null; + try { + HttpServletResponse response = StrutsParamUtils.getResponse(); + response.setContentType("image/jpeg"); + outputStream = response.getOutputStream(); + outputStream.write(img, 0, img.length); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (outputStream != null) { + try { + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + public void deleteQualityMonitoringInstance() { + String idStr = StrutsParamUtils.getPraramValue("ids", ""); + String message = JSONUtil.buildJsonObject(true, "删除成功!").toString(); + try { + if (StringUtils.isNotBlank(idStr)) { + String[] str = idStr.split(";"); + for (String id : str) { + QualityMonitoringInstance qmi = qualityMonitoringInstanceManager.getQualityMonitoringInstanceById(id); + if(qmi != null && QualityMonitoringInstance.STATUS_UNREVIEW.equals(qmi.getStatus())){ + qualityMonitoringInstanceManager.deleteQualityMonitoring(qmi); + }else{ + message = JSONUtil.buildJsonObject(false, "有记录已审核过不能删除!").toString(); + } + } + } + } catch (Exception e) { + message = JSONUtil.buildJsonObject(false, e.getMessage()).toString(); + } + StrutsResponseUtils.output(message); + } + + public void reviewQualityMonitoring() { + String id = StrutsParamUtils.getPraramValue("id", ""); + String message = JSONUtil.buildJsonObject(true, "审核成功!").toString(); + try { + if (StringUtils.isNotBlank(id)) { + QualityMonitoringInstance qmInstance = qualityMonitoringInstanceManager + .getQualityMonitoringInstanceById(id); + if("已审核".equals(qmInstance.getStatus())){ + message = JSONUtil.buildJsonObject(false, "该记录已审核!").toString(); + }else{ + qmInstance.setReviewer(AcegiHelper + .getLoginUser().getUserFullName()); + qmInstance.setReviewTime(new Date()); + qmInstance.setStatus("已审核"); + qualityMonitoringInstanceManager.saveOrUpdate(qmInstance); + } + } + } catch (Exception e) { + message = JSONUtil.buildJsonObject(false, "审核失败!").toString(); + } + StrutsResponseUtils.output(message); + } + + public void loadQualityMonitoringInstance() { + iniInfo(); + StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); + JsonConfig config = new JsonConfig(); + config.setExcludes(new String[] { "handler", + "hibernateLazyInitializer", "washAndDisinfectRecords", + "classifyBasket", "sterilizationRecords", + "successSterilizationRecord", "foreignTousseApplication", + "useRecord", "foreignProxyItem", "proxyDisinfection", + "fieldHandler", "image", "materialInstances", + "diposableGoodsItems", "images", "packingRecord", + "idCardDefinitions","departmentStock" }); + config.registerDefaultValueProcessor(Integer.class, + new DefaultValueProcessor() { + @Override + public Object getDefaultValue( + @SuppressWarnings("rawtypes") Class type) { + return JSONNull.getInstance(); + } + }); + config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); + String showSterNameAndFre = ""; + FormDefinition qmc = qualityMonitoringInstance.getFormDefinition(); + if(qmc != null){ + + showSterNameAndFre = ((QualityMonitoringDefinition)qmc).getShowSterilizerNumFrequency(); + } + try { + Collections.sort(qualityMonitoringInstance.getItems()); + Collections.sort(qualityMonitoringInstance.getQualityMonitoringGoodsList(), + new Comparator() { + @Override + public int compare(QualityMonitoringGoods o1, + QualityMonitoringGoods o2) { + Integer order1 = o1.getOrderNumber(); + Integer order2 = o2.getOrderNumber(); + return order1 - order2; + } + }); + Map map = new HashMap(); + map.put("success", true); + map.put("data", qualityMonitoringInstance); + map.put("showSterNameAndFre", showSterNameAndFre); + JSONObject jsonObject = JSONObject.fromObject(map, config); + String jsonStr = jsonObject.toString(); + + StrutsParamUtils.getResponse().getWriter().println(jsonStr); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void checkIsUniqueWithBarcodeAndInspectItem() { + String id = StrutsParamUtils.getPraramValue("id", ""); + String barcode = StrutsParamUtils.getPraramValue("barcode", ""); + String formDefinitionId = StrutsParamUtils.getPraramValue("formDefinitionId", ""); + boolean isUnique = true;// 是否唯一 + if (StringUtils.isNotBlank(barcode) + && StringUtils.isNotBlank(formDefinitionId)) { + isUnique = qualityMonitoringInstanceManager + .checkIsUniqueWithBarcodeAndInspectItem(id, barcode, + formDefinitionId); + } + JSONObject json = JSONUtil.buildJsonObject(true); + JSONUtil.addProperty(json, "isUnique", isUnique); + StrutsResponseUtils.output(json); + } + + /** + * 获取一二级供应室 + * type 根据页面传入参数获取对应供应室 + */ + public void loadSupplyRoomConfigRoom(){ + String type = StrutsParamUtils.getPraramValue("type", ""); + List supplyRoomConfigList = new ArrayList(); + String jsonStr = null; + //获取1级供应室 + if(StringUtils.equals(String.valueOf(SupplyRoomConfig.SUPPLYROOM_TYPE_1) , type)){ + SupplyRoomConfig firstSupplyRoomConfig = supplyRoomConfigManager.getFirstSupplyRoomConfig(); + if(firstSupplyRoomConfig != null){ + supplyRoomConfigList.add(firstSupplyRoomConfig); + } + }else if(StringUtils.equals(String.valueOf(SupplyRoomConfig.SUPPLYROOM_TYPE_2) , type)){ + List secondSupplyRoomConfigList = supplyRoomConfigManager + .getSupplyRoomList(SupplyRoomConfig.SUPPLYROOM_TYPE_2); + if(CollectionUtils.isNotEmpty(secondSupplyRoomConfigList)){ + supplyRoomConfigList.addAll(secondSupplyRoomConfigList); + } + }else{//获取1级和2级供应室 + SupplyRoomConfig firstSupplyRoomConfig = supplyRoomConfigManager.getFirstSupplyRoomConfig(); + if(firstSupplyRoomConfig != null){ + supplyRoomConfigList.add(firstSupplyRoomConfig); + } + + List secondSupplyRoomConfigList = supplyRoomConfigManager + .getSupplyRoomList(SupplyRoomConfig.SUPPLYROOM_TYPE_2); + if(CollectionUtils.isNotEmpty(secondSupplyRoomConfigList)){ + supplyRoomConfigList.addAll(secondSupplyRoomConfigList); + } + } + JSONArray jsonArray = supplyRoomConfigListToJSONArray(supplyRoomConfigList); + StrutsResponseUtils.output(jsonArray); + } + + private JSONArray supplyRoomConfigListToJSONArray(List supplyRoomConfigList){ + JSONArray jsonArray = new JSONArray(); + for (SupplyRoomConfig supplyRoomConfig : supplyRoomConfigList) { + + JSONObject obj = new JSONObject(); + obj.put("id", supplyRoomConfig.getId()); + obj.put("departId", supplyRoomConfig.getOrgUnitCoding()); + obj.put("name", supplyRoomConfig.getOrgUnitName()); + obj.put("sequence", supplyRoomConfig.getSequence()); + obj.put("spell", supplyRoomConfig.getSpelling()); + + jsonArray.add(obj); + } + return jsonArray; + } + + public void iniInfo() { + + String id = StrutsParamUtils.getPraramValue("id", ""); + if (DatabaseUtil.isPoIdValid(id)) { + qualityMonitoringInstance = qualityMonitoringInstanceManager + .getQualityMonitoringInstanceById(id); + } else { + qualityMonitoringInstance = new QualityMonitoringInstance(); + } + } + + public QualityMonitoringInstance getQualityMonitoringInstance() { + return qualityMonitoringInstance; + } + + public void setQualityMonitoringInstance( + QualityMonitoringInstance qualityMonitoringInstance) { + this.qualityMonitoringInstance = qualityMonitoringInstance; + } + + public QualityMonitoringInstance getModel() { + return qualityMonitoringInstance; + } + + public void prepare() throws Exception { + iniInfo(); + } +} Index: ssts-web/src/main/webapp/WEB-INF/web.xml =================================================================== diff -u -r17914 -r18497 --- ssts-web/src/main/webapp/WEB-INF/web.xml (.../web.xml) (revision 17914) +++ ssts-web/src/main/webapp/WEB-INF/web.xml (.../web.xml) (revision 18497) @@ -64,7 +64,7 @@ com.forgon.register.filter.VersionManagerFilter noFilterUrl - /ext-4.2.3/;/buttjoint/;/debug/;/disinfectsystem/config/;/disinfectsystem/common/;/disinfectSystem/fileUploadServlet;/CodeImageServlet;/fckeditor/;/UserUpLoadFiles/;/openSystemMainPage.jsp;/logon.jsp;/favicon.ico;/js/;/common/taglibs.jsp;/jquery/;/ext/;/dwr/;/images/;/styles/;/scripts/;/wap/index.jsp;/themes/;/services/;/ikey/;/mobileClient/;/disinfectSystem/sterilization/sterilizationRecordAction!uploadSterilizationRecordPic.do + /ext-4.2.3/;/buttjoint/;/qualitymonitoringWithNoLogon/;/debug/;/disinfectsystem/config/;/disinfectsystem/common/;/disinfectSystem/fileUploadServlet;/CodeImageServlet;/fckeditor/;/UserUpLoadFiles/;/openSystemMainPage.jsp;/logon.jsp;/favicon.ico;/js/;/common/taglibs.jsp;/jquery/;/ext/;/dwr/;/images/;/styles/;/scripts/;/wap/index.jsp;/themes/;/services/;/ikey/;/mobileClient/;/disinfectSystem/sterilization/sterilizationRecordAction!uploadSterilizationRecordPic.do Index: ssts-web/src/main/webapp/WEB-INF/web-standard.xml =================================================================== diff -u -r17914 -r18497 --- ssts-web/src/main/webapp/WEB-INF/web-standard.xml (.../web-standard.xml) (revision 17914) +++ ssts-web/src/main/webapp/WEB-INF/web-standard.xml (.../web-standard.xml) (revision 18497) @@ -64,7 +64,7 @@ com.forgon.register.filter.VersionManagerFilter noFilterUrl - /ext-4.2.3/;/buttjoint/;/debug/;/disinfectsystem/config/;/disinfectsystem/common/;/disinfectSystem/fileUploadServlet;/CodeImageServlet;/fckeditor/;/UserUpLoadFiles/;/openSystemMainPage.jsp;/logon.jsp;/favicon.ico;/js/;/common/taglibs.jsp;/jquery/;/ext/;/dwr/;/images/;/styles/;/scripts/;/wap/index.jsp;/themes/;/services/;/ikey/;/mobileClient/;/disinfectSystem/sterilization/sterilizationRecordAction!uploadSterilizationRecordPic.do + /ext-4.2.3/;/buttjoint/;/qualitymonitoringWithNoLogon/;/debug/;/disinfectsystem/config/;/disinfectsystem/common/;/disinfectSystem/fileUploadServlet;/CodeImageServlet;/fckeditor/;/UserUpLoadFiles/;/openSystemMainPage.jsp;/logon.jsp;/favicon.ico;/js/;/common/taglibs.jsp;/jquery/;/ext/;/dwr/;/images/;/styles/;/scripts/;/wap/index.jsp;/themes/;/services/;/ikey/;/mobileClient/;/disinfectSystem/sterilization/sterilizationRecordAction!uploadSterilizationRecordPic.do Index: ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/uploadImageWindow.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/uploadImageWindow.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/qualitymonitoringWithNoLogon/uploadImageWindow.js (revision 18497) @@ -0,0 +1,42 @@ +function uploadWindow(imageType){alert(0); + var dialog = new top.Ext.ux.UploadDialog.Dialog({ + title: "上传" + imageType, + url:WWWROOT + '/disinfectSystem/baseData/uploadImageFileAction!uploadImage.do?imageType='+imageType , //这里我用struts2做后台处理 + post_var_name:'uploadFiles',//这里是自己定义的,默认的名字叫file + width : 450, + height : 300, + minWidth : 450, + minHeight : 300, + draggable : true , + resizable : true , + constraintoviewport: true , + permitted_extensions:['JPG','jpg','jpeg','JPEG','GIF','gif','png','PNG'], + modal: true , + reset_on_hide: false , + allow_close_on_upload: false , //关闭上传窗口是否仍然上传文件 + upload_autostart: false + }); + dialog.show(); + dialog.on('uploadSuccess',onUploadSuccess); +} +//文件上传成功后的回调函数 +var onUploadSuccess = function(dialog, filename, result, record){ + var uploaded = top.Ext.getCmp("uploadImage").getValue(); + var uploadedIds = top.Ext.getCmp("uploadImgIds").getValue(); + if(uploaded.length > 0){ + uploaded += ";"; + } + if(uploadedIds.length > 0){ + uploadedIds += ";"; + } + top.Ext.getCmp("uploadImage").setValue( uploaded + result.uploadImageObjNames); + top.Ext.getCmp("uploadImgIds").setValue( uploadedIds + result.uploadImageIds); + dialog.hide(); + +} +/*var onUploadComplete = function(dialog){ + showResult("文件上传成功!"); + //alert(dialog.uploadImageIds); + //toussePackingTearchingStore.reload(); + //dialog.hide(); +} */ \ No newline at end of file