Index: forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManagerImpl.java =================================================================== diff -u -r21981 -r21985 --- forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManagerImpl.java (.../WorkFlowManagerImpl.java) (revision 21981) +++ forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManagerImpl.java (.../WorkFlowManagerImpl.java) (revision 21985) @@ -44,7 +44,11 @@ @Override public Boolean isWorkFlowRunning(Long WorkFlowId) { Boolean flag=false; - String sql=" select * from WorkFlow wf where wf.id=1 and wf.id in ( select distinct nd.workFlow_id id from NodeDefinition nd where nd.id in (select nodeDefinition_id from WorkFlowApprovalTask w where w.status!=1))"; + String sql=" where po.id="+WorkFlowId+" and po.id in ( select distinct nd.workFlow_id id from NodeDefinition nd where nd.id in (select nodeDefinition_id from WorkFlowApprovalTask w where w.status!=1))"; + WorkFlow workFlow = (WorkFlow) objectDao.getBySql(WorkFlow.class.getSimpleName(), sql); + if(workFlow!=null){ + flag=true; + } return flag; } @@ -72,35 +76,40 @@ @Override public void save(WorkFlow workFlow, JSONArray itemInfo) { - 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; + Boolean isWorkFlowRunningFlag= isWorkFlowRunning(workFlow.getId()); + if(isWorkFlowRunningFlag){ + throw new RuntimeException("该流程已经有申请单在使用,故不能修改!"); + }else{ + 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); + } } - 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); } } - for(int i = 0;i < itemInfo.size();++i){ - JSONObject item = itemInfo.getJSONObject(i); - saveNodeDefinition(workFlow, item); - } } }