Index: forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManager.java =================================================================== diff -u -r21981 -r21996 --- forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManager.java (.../WorkFlowManager.java) (revision 21981) +++ forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManager.java (.../WorkFlowManager.java) (revision 21996) @@ -54,4 +54,6 @@ public Boolean isWorkFlowRunning(Long WorkFlowId); + Boolean isExitsNodeDefinitionName(String nodeDefinitionName, String id); + } Index: ssts-web/src/main/webapp/systemmanage/workFlow/workFlowForm.js =================================================================== diff -u -r21979 -r21996 --- ssts-web/src/main/webapp/systemmanage/workFlow/workFlowForm.js (.../workFlowForm.js) (revision 21979) +++ ssts-web/src/main/webapp/systemmanage/workFlow/workFlowForm.js (.../workFlowForm.js) (revision 21996) @@ -221,6 +221,23 @@ //大保存 function save(store) { var workFlowName = Ext4.getCmp('workFlowName').getValue(); + var result=""; + Ext4.Ajax.request({ + async:false, + url : WWWROOT + + '/disinfectSystem/workFlowAction!isExitsWorkFlowName.do', + params : {id:id,workFlowName:workFlowName}, + success : function(response, options) { + result = Ext4.decode(response.responseText); + if (result.success) { + showResult('流程名称已经存在,请重新填写!'); + return false; + } + }, + failure : function(response, options) { + } + }); + var status = Ext4.getCmp('status').getValue(); if (!workFlowName) { showResult('请填写留下名称!'); @@ -231,51 +248,78 @@ showResult('请选择状态!'); return false; } - var nodes = store.getRootNode().childNodes; - - var items = []; - for (var i=0; i nodeDefinitions = objectDao.findByProperty(NodeDefinition.class.getSimpleName(), "workFlow.id", String.valueOf(workFlow.getId())); - long nodeDefinitionId=0; - Boolean flag=true; - for(NodeDefinition nodeDefinition :nodeDefinitions){ - flag=true; - for(int i = 0;i < itemInfo.size();++i){ - JSONObject item = itemInfo.getJSONObject(i); - if(!"".equals(item.opt("nodeDefinitionId").toString())){ - nodeDefinitionId=Long.parseLong(item.opt("nodeDefinitionId").toString()); - if(DatabaseUtil.isPoIdValid(nodeDefinitionId)){ - if(nodeDefinition.getId()==nodeDefinitionId){//存在则不删除 - flag=false; + Boolean isExitsWorkFlowNameFlag=isExitsWorkFlowName(workFlow.getWorkFlowName(),String.valueOf(workFlow.getId())); + + if(!isExitsWorkFlowNameFlag){ + Boolean isisExitsWorkFlowFormTypeFlag=isExitsWorkFlowFormType(workFlow.getInvoicePlanType(),String.valueOf(workFlow.getId())); + if(!isisExitsWorkFlowFormTypeFlag){ + saveOrUpdateWorkFlow(workFlow); + if(CollectionUtils.isNotEmpty(itemInfo)){ + //获取当前工作流id的所有节点,如与当前传过来的数据不匹配 删除 + List nodeDefinitions = objectDao.findByProperty(NodeDefinition.class.getSimpleName(), "workFlow.id", String.valueOf(workFlow.getId())); + long nodeDefinitionId=0; + Boolean flag=true; + for(NodeDefinition nodeDefinition :nodeDefinitions){ + flag=true; + for(int i = 0;i < itemInfo.size();++i){ + JSONObject item = itemInfo.getJSONObject(i); + if(!"".equals(item.opt("nodeDefinitionId").toString())){ + nodeDefinitionId=Long.parseLong(item.opt("nodeDefinitionId").toString()); + if(DatabaseUtil.isPoIdValid(nodeDefinitionId)){ + if(nodeDefinition.getId()==nodeDefinitionId){//存在则不删除 + flag=false; + } + } } } + if(flag){//true为不存在 + NodeApproval nodeApproval=(NodeApproval) objectDao.getByProperty(NodeApproval.class.getSimpleName(), "nodeDefinition.id",nodeDefinition.getId()); + objectDao.delete(nodeApproval); + deleteNodeDefinition(nodeDefinition); + } } + for(int i = 0;i < itemInfo.size();++i){ + JSONObject item = itemInfo.getJSONObject(i); + saveNodeDefinition(workFlow, item); + } } - if(flag){//true为不存在 - NodeApproval nodeApproval=(NodeApproval) objectDao.getByProperty(NodeApproval.class.getSimpleName(), "nodeDefinition.id",nodeDefinition.getId()); - objectDao.delete(nodeApproval); - deleteNodeDefinition(nodeDefinition); - } + }else{ + throw new RuntimeException("该单类型已被使用,请重新命名!"); } - for(int i = 0;i < itemInfo.size();++i){ - JSONObject item = itemInfo.getJSONObject(i); - saveNodeDefinition(workFlow, item); - } + }else{ + throw new RuntimeException("该流程名字已被使用,请重新命名!"); } } } @@ -207,21 +250,27 @@ @SuppressWarnings("unchecked") @Override public void deleteWorkFlow(Object[] idArray) { + Boolean isWorkFlowRunningFlag=false; for (Object object : idArray) { - List nodeDefinitions= objectDao.findByProperty(NodeDefinition.class.getSimpleName(), "workFlow.id",""+object); - for(NodeDefinition nodeDefinition:nodeDefinitions){ - List nodeApprovals= (List) objectDao.findByProperty(NodeApproval.class.getSimpleName(),"nodeDefinition.id",""+nodeDefinition.getId()); - for(NodeApproval nodeApproval:nodeApprovals){ - deleteNodeApproval(nodeApproval);//删除所属的节点审批 + isWorkFlowRunningFlag= isWorkFlowRunning(Long.parseLong(object.toString())); + if(isWorkFlowRunningFlag){ + throw new RuntimeException(object+"该流程已经有申请单在使用,故不能删除!"); + }else{ + List nodeDefinitions= objectDao.findByProperty(NodeDefinition.class.getSimpleName(), "workFlow.id",""+object); + for(NodeDefinition nodeDefinition:nodeDefinitions){ + List nodeApprovals= (List) objectDao.findByProperty(NodeApproval.class.getSimpleName(),"nodeDefinition.id",""+nodeDefinition.getId()); + for(NodeApproval nodeApproval:nodeApprovals){ + deleteNodeApproval(nodeApproval);//删除所属的节点审批 + } + List workFlowApprovalTasks= (List) objectDao.findByProperty(WorkFlowApprovalTask.class.getSimpleName(),"nodeDefinition.id",""+nodeDefinition.getId()); + for(WorkFlowApprovalTask workFlowApprovalTask:workFlowApprovalTasks){ + workFlowApprovalTaskManager.deleteWorkFlowApprovalTask(workFlowApprovalTask);//删除所属的节点审批 + } + deleteNodeDefinition(nodeDefinition);//删除所属的节点 } - List workFlowApprovalTasks= (List) objectDao.findByProperty(WorkFlowApprovalTask.class.getSimpleName(),"nodeDefinition.id",""+nodeDefinition.getId()); - for(WorkFlowApprovalTask workFlowApprovalTask:workFlowApprovalTasks){ - workFlowApprovalTaskManager.deleteWorkFlowApprovalTask(workFlowApprovalTask);//删除所属的节点审批 - } - deleteNodeDefinition(nodeDefinition);//删除所属的节点 - } - WorkFlow workFlow=(WorkFlow) objectDao.getByID_ForUpdate(WorkFlow.class.getSimpleName(), object.toString()); - objectDao.delete(workFlow); + WorkFlow workFlow=(WorkFlow) objectDao.getByID_ForUpdate(WorkFlow.class.getSimpleName(), object.toString()); + objectDao.delete(workFlow); + } } } Fisheye: Tag 20434 refers to a dead (removed) revision in file `ssts-web/src/main/webapp/dataUpdater/logs/updateReport.txt'. Fisheye: No comparison available. Pass `N' to diff?