Index: forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowApprovalTaskManager.java =================================================================== diff -u -r21976 -r21981 --- forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowApprovalTaskManager.java (.../WorkFlowApprovalTaskManager.java) (revision 21976) +++ forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowApprovalTaskManager.java (.../WorkFlowApprovalTaskManager.java) (revision 21981) @@ -21,6 +21,8 @@ public WorkFlowApprovalTask getWorkFlowApprovalTaskByRollBack(String nodeDefinitionId,Long formId); + public void deleteWorkFlowApprovalTask(WorkFlowApprovalTask workFlowApprovalTask); + public void deleteWorkFlowApprovalTask(Object[] idArray); public List searchWorkFlowApprovalTask(); Index: forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManagerImpl.java =================================================================== diff -u -r21979 -r21981 --- forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManagerImpl.java (.../WorkFlowManagerImpl.java) (revision 21979) +++ forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManagerImpl.java (.../WorkFlowManagerImpl.java) (revision 21981) @@ -19,6 +19,7 @@ import com.forgon.workflow.model.NodeApproval; import com.forgon.workflow.model.NodeDefinition; import com.forgon.workflow.model.WorkFlow; +import com.forgon.workflow.model.WorkFlowApprovalTask; /** * @@ -33,27 +34,29 @@ this.objectDao = objectDao; } + private WorkFlowApprovalTaskManager workFlowApprovalTaskManager; + + public void setWorkFlowApprovalTaskManager( + WorkFlowApprovalTaskManager workFlowApprovalTaskManager) { + this.workFlowApprovalTaskManager = workFlowApprovalTaskManager; + } + @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))"; + return flag; + } + + @Override public Boolean isExitsWorkFlowName(String workFlowName,String id) { String sql=" where po.workFlowName="+workFlowName+" and po.id="+id; WorkFlow workFlow =(WorkFlow) objectDao.getBySql(WorkFlow.class.getSimpleName(), sql); if(workFlow!=null) return true; return false; } - - public NodeDefinition getLastNodeDefinitionById(String nodeDefinition_id){ - String sql= " where po.sequenceNumber = ( select o.sequenceNumber-1 from NodeDefinition o where o.id="+nodeDefinition_id+") and po.workFlow.id =( select o.workFlow.id from NodeDefinition o where o.id="+nodeDefinition_id+") "; - NodeDefinition nodeDefinition=(NodeDefinition) objectDao.getBySql(NodeDefinition.class.getSimpleName(), sql); - return nodeDefinition; - } - public NodeDefinition getNextNodeDefinitionById(String nodeDefinition_id){//o.workFlow_id - String sql= " where po.sequenceNumber in ( select o.sequenceNumber+1 from NodeDefinition o where o.id="+nodeDefinition_id+") and po.workFlow.id =( select o.workFlow.id from NodeDefinition o where o.id="+nodeDefinition_id+") "; - NodeDefinition nodeDefinition=(NodeDefinition) objectDao.getBySql(NodeDefinition.class.getSimpleName(), sql); - return nodeDefinition; - } - @Override public List searchUserBySpellOrId(String spell) { String spe = spell.toUpperCase(); @@ -202,6 +205,10 @@ 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);//删除所属的节点 } WorkFlow workFlow=(WorkFlow) objectDao.getByID_ForUpdate(WorkFlow.class.getSimpleName(), object.toString()); @@ -244,7 +251,6 @@ @Override public NodeApproval getNodeApproval(String NodeDefinitionId) { return (NodeApproval) objectDao.getByProperty_ForUpdate(NodeApproval.class.getSimpleName(),"nodeDefinition.id",NodeDefinitionId); - //return (NodeApproval) objectDao.getByID_ForUpdate(NodeApproval.class.getSimpleName(),NodeDefinitionId); } @Override @@ -255,5 +261,6 @@ @Override public void deleteNodeApproval(NodeApproval nodeApproval) { objectDao.delete(nodeApproval); - } + } + } Index: forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManager.java =================================================================== diff -u -r21979 -r21981 --- forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManager.java (.../WorkFlowManager.java) (revision 21979) +++ forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManager.java (.../WorkFlowManager.java) (revision 21981) @@ -20,10 +20,6 @@ public interface WorkFlowManager { public List searchUserBySpellOrId(String spell); - public NodeDefinition getLastNodeDefinitionById(String nodeDefinition_id); - - public NodeDefinition getNextNodeDefinitionById(String nodeDefinition_id); - public void save(WorkFlow workFlow,JSONArray itemInfo); public void saveOrUpdateWorkFlow(WorkFlow workFlow); @@ -55,5 +51,7 @@ public void deleteNodeDefinition(Object[] idArray); public Boolean isExitsWorkFlowName(String workFlowName,String id); + + public Boolean isWorkFlowRunning(Long WorkFlowId); } Index: forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowApprovalTaskManagerImpl.java =================================================================== diff -u -r21979 -r21981 --- forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowApprovalTaskManagerImpl.java (.../WorkFlowApprovalTaskManagerImpl.java) (revision 21979) +++ forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowApprovalTaskManagerImpl.java (.../WorkFlowApprovalTaskManagerImpl.java) (revision 21981) @@ -52,7 +52,7 @@ WorkFlowApprovalTask workFlowApprovalTask = getWorkFlowApprovalTask(workFlowApprovalTaskId+""); if(workFlowApprovalTask != null){ //如果是当前节点为空 - if (!DatabaseUtil.isPoIdValid(workFlowApprovalTaskVO.getNodeDefinitionId())&&workFlowApprovalTaskVO.getNodeDefinitionId()!=null) { + if (DatabaseUtil.isPoIdValid(workFlowApprovalTaskVO.getNodeDefinitionId())) { //当前节点 NodeDefinition nodeDefinition = getNodeDefinition(workFlowApprovalTaskVO.getNodeDefinitionId()+""); //获取下一个节点 @@ -85,6 +85,9 @@ } saveOrUpdateWorkFlowApprovalTask(workFlowApprovalTask1); } + /*else{ //代表最后一个节点,生成一条待办任务,给申请人点击结束 + + }*/ } } } @@ -178,7 +181,7 @@ JSONArray jSONArray = new JSONArray(); ResultSet result1 = null,result2 = null; //当前节点是倒数第二个节点 - if(flag==1){ + if(flag==0){ JSONObject jSONObject; try { //获取节点审批表的roleid 对应下的用户 @@ -187,7 +190,7 @@ result1 = objectDao.executeSql(select1+where1); //获取节点审批表的useid 对应下的用户 String select2=" select u.id,u.fullName from ss_users u "; - String where2 =" where u.id= (select na.userId from NodeApproval na where na.nodeDefinition_ID= (select no.id from NodeDefinition no where no.sequenceNumber = =(select top 1 po.sequenceNumber from NodeDefinition po where po.sequenceNumber > (select nd.sequenceNumber from NodeDefinition nd where nd.id="+nodeDefinition_id+") order by po.sequenceNumber ) and no.workFlow_id=( select n.workFlow_id from NodeDefinition n where n.id="+nodeDefinition_id+"))) "; + String where2 =" where u.id= (select na.userId from NodeApproval na where na.nodeDefinition_ID= (select no.id from NodeDefinition no where no.sequenceNumber =(select top 1 po.sequenceNumber from NodeDefinition po where po.sequenceNumber > (select nd.sequenceNumber from NodeDefinition nd where nd.id="+nodeDefinition_id+") order by po.sequenceNumber ) and no.workFlow_id=( select n.workFlow_id from NodeDefinition n where n.id="+nodeDefinition_id+"))) "; result2 = objectDao.executeSql(select2+where2); while(result1.next()){ jSONObject = new JSONObject(); @@ -331,4 +334,10 @@ objectDao.save(workFlowApprovalTask); } + @Override + public void deleteWorkFlowApprovalTask( + WorkFlowApprovalTask workFlowApprovalTask) { + objectDao.delete(workFlowApprovalTask); + } + }