Index: ssts-satisfactionsurvey/src/main/java/com/forgon/disinfectsystem/satisfactionsurvey/action/SatisfactionSurveyTemplateAction.java =================================================================== diff -u -r12531 -r14927 --- ssts-satisfactionsurvey/src/main/java/com/forgon/disinfectsystem/satisfactionsurvey/action/SatisfactionSurveyTemplateAction.java (.../SatisfactionSurveyTemplateAction.java) (revision 12531) +++ ssts-satisfactionsurvey/src/main/java/com/forgon/disinfectsystem/satisfactionsurvey/action/SatisfactionSurveyTemplateAction.java (.../SatisfactionSurveyTemplateAction.java) (revision 14927) @@ -102,13 +102,14 @@ public String loadSatisfactionSurveyTemplate(){ resultMap.put("success", true); - resultMap.put("data", satisfactionSurveyTemplate); if(satisfactionSurveyTemplate != null){ - aclManager.setAclFieldsObjectDisplayValue(satisfactionSurveyTemplate); - if(StringUtils.isNotBlank(satisfactionSurveyTemplate.getReadersForDisplay())){ - satisfactionSurveyTemplate.setReadersForDisplay(satisfactionSurveyTemplate.getReadersForDisplay().replace("组织机构-", "")); + String readersForDisplay + = satisfactionSurveyTemplateManager.convertAclFieldValueToDisplayValue(satisfactionSurveyTemplate.getReaders()); + if(StringUtils.isNotBlank(readersForDisplay)){ + satisfactionSurveyTemplate.setReadersForDisplay(readersForDisplay.replace("组织机构-", "")); } } + resultMap.put("data", satisfactionSurveyTemplate); responseJson(new String[]{"itemList"}); return null; } @@ -239,7 +240,13 @@ null))); } - satisfactionSurveyTemplateManager.saveOrUpdate(satisfactionSurveyTemplate, itemList); + try{ + satisfactionSurveyTemplateManager.saveOrUpdate(satisfactionSurveyTemplate, itemList); + }catch(Exception e){ + e.printStackTrace(); + resultMap.put("success", false); + resultMap.put("message", "保存失败,服务器程序出现异常,请联系管理 员!"); + } resultMap.put("success", true); responseJson(null); return null; Index: ssts-satisfactionsurvey/src/main/java/com/forgon/disinfectsystem/satisfactionsurvey/dwr/table/SatisfactionSurveyTemplateTableManager.java =================================================================== diff -u -r12331 -r14927 --- ssts-satisfactionsurvey/src/main/java/com/forgon/disinfectsystem/satisfactionsurvey/dwr/table/SatisfactionSurveyTemplateTableManager.java (.../SatisfactionSurveyTemplateTableManager.java) (revision 12331) +++ ssts-satisfactionsurvey/src/main/java/com/forgon/disinfectsystem/satisfactionsurvey/dwr/table/SatisfactionSurveyTemplateTableManager.java (.../SatisfactionSurveyTemplateTableManager.java) (revision 14927) @@ -54,7 +54,7 @@ } public String getReadersForDisplayName(String readers){ - String readersForDisplay = aclManager.convertAclFieldValueToDisplayValue(readers); + String readersForDisplay = satisfactionSurveyTemplateManager.convertAclFieldValueToDisplayValue(readers); if(StringUtils.isNotBlank(readersForDisplay)){ readersForDisplay = readersForDisplay.replace("组织机构-", ""); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/satisfactionsurvey/SatisfactionSurveyTemplate.java =================================================================== diff -u -r12331 -r14927 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/satisfactionsurvey/SatisfactionSurveyTemplate.java (.../SatisfactionSurveyTemplate.java) (revision 12331) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/satisfactionsurvey/SatisfactionSurveyTemplate.java (.../SatisfactionSurveyTemplate.java) (revision 14927) @@ -46,12 +46,18 @@ private List itemList = new ArrayList(); + /** + * 科室编码(多个之间采用逗号分隔) + */ private String readers = ""; private String administrators = ";ROLE_ADMINISTRATOR_0;"; private String editors = ""; + /** + * 科室名称(多个之间用逗号分隔,不保存到数据库里,只是用于在页面上显示,根据readers字段的科室code对应变成科室名称) + */ private String readersForDisplay = ""; private String administratorsForDisplay = "系统管理员"; @@ -123,6 +129,7 @@ this.itemList = itemList; } + @Column(length=4000) public String getReaders() { return readers; } Index: ssts-web/src/main/webapp/disinfectsystem/satisfactionsurvey/satisfactionSurveyTemplateForm.js =================================================================== diff -u -r12331 -r14927 --- ssts-web/src/main/webapp/disinfectsystem/satisfactionsurvey/satisfactionSurveyTemplateForm.js (.../satisfactionSurveyTemplateForm.js) (revision 12331) +++ ssts-web/src/main/webapp/disinfectsystem/satisfactionsurvey/satisfactionSurveyTemplateForm.js (.../satisfactionSurveyTemplateForm.js) (revision 14927) @@ -290,12 +290,22 @@ showResult('满意度调查项不能为空!'); return false; } + + var departcodes = top.Ext.getCmp('readers').getValue(); + if(!departcodes || departcodes.length == 0){ + showResult('科室不能为空!'); + return false; + }else if(departcodes.length >= 3980){ + showResult('所选科室太多,请重新选择!'); + return false; + } + top.Ext.getCmp("treeItemData").setValue("["+treeData+"]"); var b = this; top.Ext.MessageBox.confirm("请确认","是否提交满意调查模板信息?",function(btn) { if(btn=='yes') { b.disable(); - if(submitForm(form,wwindow)==false){ + if(submitForm(form,wwindow,b)==false){ b.enable(); } } @@ -594,23 +604,25 @@ return valArr.join(""); } -function submitForm(form,window){ +function submitForm(form,wwindow,btnSave){ form.form.submit({ url : WWWROOT + '/disinfectSystem/satisfactionsurvey/satisfactionSurveyTemplateAction!saveSatisfactionSurveyTemplate.do', method : 'POST', waitMsg : '正在保存数据,请稍候', waitTitle : '提交表单', success : function(form, action) { grid.dwrReload(); - window.close(); + wwindow.close(); if(action.result.success){ showResult("保存成功!"); }else{ showResult("保存失败!"); } }, failure : function(form, action) { - showResult(action.failureType); + showResult(action.result.message); + btnSave.enable(); + return false; } }); return true; Index: ssts-web/src/main/webapp/dataUpdater/sqls/4.3.5_4.3.6_oracle.sql =================================================================== diff -u -r14896 -r14927 --- ssts-web/src/main/webapp/dataUpdater/sqls/4.3.5_4.3.6_oracle.sql (.../4.3.5_4.3.6_oracle.sql) (revision 14896) +++ ssts-web/src/main/webapp/dataUpdater/sqls/4.3.5_4.3.6_oracle.sql (.../4.3.5_4.3.6_oracle.sql) (revision 14927) @@ -4,3 +4,8 @@ execute immediate 'alter table foreignTousseapplication drop column patientAge'; execute immediate 'alter table foreignTousseapplication rename column patientAge1 to patientAge'; +execute immediate 'alter table SatisfactionSurveyTemplate add readers1 CLOB'; +execute immediate 'update SatisfactionSurveyTemplate set readers1 = TO_CLOB(readers)'; +execute immediate 'commit'; +execute immediate 'alter table SatisfactionSurveyTemplate drop column readers'; +execute immediate 'alter table SatisfactionSurveyTemplate rename column readers1 to readers'; \ No newline at end of file Index: ssts-satisfactionsurvey/src/main/java/com/forgon/disinfectsystem/satisfactionsurvey/service/SatisfactionSurveyTemplateManager.java =================================================================== diff -u -r12331 -r14927 --- ssts-satisfactionsurvey/src/main/java/com/forgon/disinfectsystem/satisfactionsurvey/service/SatisfactionSurveyTemplateManager.java (.../SatisfactionSurveyTemplateManager.java) (revision 12331) +++ ssts-satisfactionsurvey/src/main/java/com/forgon/disinfectsystem/satisfactionsurvey/service/SatisfactionSurveyTemplateManager.java (.../SatisfactionSurveyTemplateManager.java) (revision 14927) @@ -51,4 +51,6 @@ * @return */ public int getSatisfactionSurveyTemplateNoticeNum(); + + public String convertAclFieldValueToDisplayValue(String alcFieldValue); } Index: ssts-web/src/main/webapp/dataUpdater/sqls/4.3.5_4.3.6_sqlserver.sql =================================================================== diff -u -r14896 -r14927 --- ssts-web/src/main/webapp/dataUpdater/sqls/4.3.5_4.3.6_sqlserver.sql (.../4.3.5_4.3.6_sqlserver.sql) (revision 14896) +++ ssts-web/src/main/webapp/dataUpdater/sqls/4.3.5_4.3.6_sqlserver.sql (.../4.3.5_4.3.6_sqlserver.sql) (revision 14927) @@ -1 +1,3 @@ -ALTER TABLE ForeignTousseApplication ALTER COLUMN patientAge varchar(10); \ No newline at end of file +ALTER TABLE ForeignTousseApplication ALTER COLUMN patientAge varchar(10); + +ALTER TABLE SatisfactionSurveyTemplate ALTER COLUMN readers text; \ No newline at end of file Index: ssts-satisfactionsurvey/src/main/java/com/forgon/disinfectsystem/satisfactionsurvey/service/SatisfactionSurveyTemplateManagerImpl.java =================================================================== diff -u -r12331 -r14927 --- ssts-satisfactionsurvey/src/main/java/com/forgon/disinfectsystem/satisfactionsurvey/service/SatisfactionSurveyTemplateManagerImpl.java (.../SatisfactionSurveyTemplateManagerImpl.java) (revision 12331) +++ ssts-satisfactionsurvey/src/main/java/com/forgon/disinfectsystem/satisfactionsurvey/service/SatisfactionSurveyTemplateManagerImpl.java (.../SatisfactionSurveyTemplateManagerImpl.java) (revision 14927) @@ -11,11 +11,15 @@ import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.OrgUnit; import com.forgon.directory.service.DirectoryHelper; import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.entity.satisfactionsurvey.SatisfactionSurveyTable; import com.forgon.disinfectsystem.entity.satisfactionsurvey.SatisfactionSurveyTemplate; import com.forgon.disinfectsystem.entity.satisfactionsurvey.SatisfactionSurveyTemplateItem; +import com.forgon.security.acls.AclFieldsObject; +import com.forgon.security.model.Role; +import com.forgon.security.model.User; import com.forgon.security.service.AclTools; import com.forgon.security.service.OperationManager; import com.forgon.tools.hibernate.ObjectDao; @@ -37,6 +41,8 @@ private OperationManager operationManager; private DateQueryAdapter dateQueryAdapter; + + private DirectoryHelper directoryHelper; public void setObjectDao(ObjectDao objectDao) { this.objectDao = objectDao; @@ -50,6 +56,10 @@ this.dateQueryAdapter = dateQueryAdapter; } + public void setDirectoryHelper(DirectoryHelper directoryHelper) { + this.directoryHelper = directoryHelper; + } + @Transactional(readOnly = false, propagation = Propagation.REQUIRED) public void saveOrUpdate( SatisfactionSurveyTemplate satisfactionSurveyTemplate) { @@ -217,4 +227,73 @@ SatisfactionSurveyTemplate.class.getSimpleName(), sql); } + public String convertAclFieldValueToDisplayValue(String alcFieldValue) { + String aclFieldDisplayValue = ""; + + String roleNames = ""; + String userNames = ""; + String orgUnitCodes = ""; + if (StringUtils.isNotBlank(alcFieldValue)) { + String[] alcFieldValueArray = (String[]) StringUtils.split( + alcFieldValue, AclFieldsObject.ACL_Field_Values_Separator); + for (String aclElement : alcFieldValueArray) { + if (aclElement + .startsWith(com.forgon.tools.Constants.PREFIX_ROLE)) { + roleNames = StringTools.uniteTwoStringBySemicolon( + roleNames, aclElement, "','"); + + } else if (aclElement + .startsWith(com.forgon.tools.Constants.PREFIX_USERID)) { + aclElement = aclElement + .substring(com.forgon.tools.Constants.PREFIX_USERID + .length()); + userNames = StringTools.uniteTwoStringBySemicolon( + userNames, aclElement, "','"); + + } else if (aclElement + .startsWith(com.forgon.tools.Constants.PREFIX_ORGUNIT)) { + aclElement = aclElement + .substring(com.forgon.tools.Constants.PREFIX_ORGUNIT + .length()); + orgUnitCodes = StringTools.uniteTwoStringBySemicolon( + orgUnitCodes, aclElement, "','"); + + } + } + } + + List orgUnits = directoryHelper + .findOrgUnitListByHql(" where po.orgUnitCoding in ('" + + orgUnitCodes + "')"); + List roles = directoryHelper + .findRoleListByHql(" where po.name in ('" + roleNames + "')"); + List users = directoryHelper + .findUserListByHql(" where po.name in ('" + userNames + "')"); + + if (orgUnits != null) { + for (OrgUnit orgUnit : orgUnits) { + aclFieldDisplayValue = StringTools.uniteTwoStringBySemicolon( + aclFieldDisplayValue, orgUnit.getCurrentOrgUnitNames(), + AclFieldsObject.ACL_Field_Values_Separator); + } + } + + if (roles != null) { + for (Role role : roles) { + aclFieldDisplayValue = StringTools.uniteTwoStringBySemicolon( + aclFieldDisplayValue, role.getDescn(), + AclFieldsObject.ACL_Field_Values_Separator); + } + } + + if (users != null) { + for (User user : users) { + aclFieldDisplayValue = StringTools.uniteTwoStringBySemicolon( + aclFieldDisplayValue, user.getFullName(), + AclFieldsObject.ACL_Field_Values_Separator); + } + } + + return aclFieldDisplayValue; + } }