Commit 9a89d594 authored by ligang's avatar ligang
Browse files

add batchDeleteProcessInstanceByIds

parent 98450c7b
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -282,4 +282,30 @@ public class ProcessInstanceController extends BaseController{
            return error(Status.ENCAPSULATION_PROCESS_INSTANCE_GANTT_STRUCTURE_ERROR.getCode(),ENCAPSULATION_PROCESS_INSTANCE_GANTT_STRUCTURE_ERROR.getMsg());
        }
    }

    /**
     * batch delete process instance by ids, at the same time,
     * delete task instance and their mapping relation data
     *
     * @param loginUser
     * @param projectName
     * @param processInstanceIds
     * @return
     */
    @GetMapping(value="/batch-delete")
    @ResponseStatus(HttpStatus.OK)
    public Result batchDeleteProcessInstanceByIds(@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
                                            @PathVariable String projectName,
                                            @RequestParam("processInstanceIds") String processInstanceIds
    ){
        try{
            logger.info("delete process instance by ids, login user:{}, project name:{}, process instance ids :{}",
                    loginUser.getUserName(), projectName, processInstanceIds);
            Map<String, Object> result = processInstanceService.batchDeleteProcessInstanceByIds(loginUser, projectName, processInstanceIds);
            return returnDataList(result);
        }catch (Exception e){
            logger.error(BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR.getMsg(),e);
            return error(Status.BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR.getCode(), Status.BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR.getMsg());
        }
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -160,6 +160,7 @@ public enum Status {
    NAME_EXIST(10135, "name {0} already exists"),
    SAVE_ERROR(10136, "save error"),
    DELETE_PROJECT_ERROR_DEFINES_NOT_NULL(10137, "please delete the process definitions in project first!"),
    BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR(10117,"batch delete process instance by ids {0} error"),



+43 −0
Original line number Diff line number Diff line
@@ -467,6 +467,7 @@ public class ProcessInstanceService extends BaseDAGService {
            putMsg(result, Status.PROCESS_INSTANCE_NOT_EXIST, workflowId);
            return result;
        }

        int delete = processDao.deleteWorkProcessInstanceById(workflowId);
        processDao.deleteAllSubWorkProcessByParentId(workflowId);
        processDao.deleteWorkProcessMapByParentId(workflowId);
@@ -479,6 +480,48 @@ public class ProcessInstanceService extends BaseDAGService {
        return result;
    }

    /**
     * batch delete process instance by ids, at the same time,delete task instance and their mapping relation data
     *
     * @param loginUser
     * @param projectName
     * @param processInstanceIds
     * @return
     */
    public Map<String, Object> batchDeleteProcessInstanceByIds(User loginUser, String projectName, String processInstanceIds) {

        Map<String, Object> result = new HashMap<>(5);
        List<Integer> deleteFailedIdList = new ArrayList<Integer>();

        Project project = projectMapper.queryByName(projectName);

        Map<String, Object> checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName);
        Status resultEnum = (Status) checkResult.get(Constants.STATUS);
        if (resultEnum != Status.SUCCESS) {
            return checkResult;
        }

        if(StringUtils.isNotEmpty(processInstanceIds)){
            String[] processInstanceIdArray = processInstanceIds.split(",");

            for (String strProcessInstanceId:processInstanceIdArray) {
                int processInstanceId = Integer.parseInt(strProcessInstanceId);
                try {
                    deleteProcessInstanceById(loginUser, projectName, processInstanceId);
                } catch (Exception e) {
                    deleteFailedIdList.add(processInstanceId);
                }
            }
        }
        if(deleteFailedIdList.size() > 0){
            putMsg(result, Status.BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR,StringUtils.join(deleteFailedIdList.toArray(),","));
        }else{
            putMsg(result, Status.SUCCESS);
        }

        return result;
    }

    /**
     * view process instance variables
     *
+12 −0
Original line number Diff line number Diff line
@@ -75,4 +75,16 @@ public class ProcessInstanceServiceTest {
        Assert.assertEquals(Status.SUCCESS, map.get(Constants.STATUS));
        logger.info(JSON.toJSONString(map));
    }

    @Test
    public void batchDeleteProcessInstanceByIds() throws Exception {

        User loginUser = new User();
        loginUser.setId(2);
        loginUser.setUserType(UserType.GENERAL_USER);
        Map<String, Object> map = processInstanceService.batchDeleteProcessInstanceByIds(loginUser, "li_test_1", "4,2,300");

        Assert.assertEquals(Status.SUCCESS, map.get(Constants.STATUS));
        logger.info(JSON.toJSONString(map));
    }
}
 No newline at end of file