Files
bpmc/ebpm-process-rest/src/main/java/com/blueland/ebpm/rest/ActivityInstanceController.java
hanjian b610f94b2e update
2024-08-14 15:17:51 +08:00

168 lines
7.1 KiB
Java

package com.blueland.ebpm.rest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.blueland.ebpm.util.RestUtils;
import org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.blueland.bpm.engine.config.model.ActivityInfoConfig;
import com.blueland.bpm.engine.core.model.ActivityDefinitionModel;
import com.blueland.bpm.engine.core.model.ActivityInstanceModel;
import com.blueland.bpm.engine.core.model.ActivityResourceModel;
import com.blueland.bpm.engine.core.model.ExceptionErrorCode;
import com.blueland.bpm.engine.core.model.ProcessPageContext;
import com.blueland.bpm.engine.core.service.ProcessConfigService;
import com.blueland.bpm.engine.core.service.ProcessDefinitionService;
import com.blueland.bpm.engine.core.service.ProcessInstanceService;
import com.blueland.bpm.engine.util.WorkFlowContants;
import com.blueland.ebpm.bean.ActivityDefinitionBean;
import com.blueland.ebpm.bean.ActivityInstanceBean;
import com.blueland.ebpm.bean.ActivityOpBean;
import com.blueland.ebpm.bean.BeansBuilder;
import com.blueland.ebpm.exception.RestException;
@RestController
@RequestMapping(value = "/activityinstance")
public class ActivityInstanceController {
@Autowired
private ProcessConfigService processConfigService;
@Autowired
private ProcessInstanceService processInstanceService;
@Autowired
private ProcessDefinitionService processDefinitionService;
@Autowired
private BeansBuilder beansBuilder;
@RequestMapping(value = "/{actInstId}")
public ActivityInstanceBean getActInst(@PathVariable String actInstId) {
ActivityInstanceModel model = processInstanceService.getHistoryTask(actInstId);
return beansBuilder.build(model);
}
@RequestMapping(value = "/next/nextacts", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
public List<ActivityDefinitionBean> getNextActivities(
@RequestBody Map<String, String> param) {
String curActInstId = param.get("curActInstId");
String processInstId = null;
String processDefinitionId = null;
String curActDefId = null;
if (RestUtils.isEmpty(curActInstId)) {
processDefinitionId = param.get("procDefId");
curActDefId = param.get("curActDefId");
} else {
ActivityInstanceModel model = processInstanceService
.getTask(curActInstId);
processDefinitionId = model.getProcDefId();
processInstId = model.getProcInstId();
curActDefId = model.getActDefId();
}
List<ActivityDefinitionModel> list = processDefinitionService
.getNextActivity(processInstId, processDefinitionId,
curActDefId, param);
return beansBuilder.buildActDefList(list);
}
@RequestMapping(value = "/next/nextactusers", produces = "application/json;charset=UTF-8")
public List<ActivityResourceModel> getNextActivityUserTree(
@RequestBody Map<String, String> param) {
String curActInstId = param.get("curActInstId");
String destActDefId = param.get("destActDefId");
String userId = param.get("userId");
String userOrgId = param.get("userOrgId");
String procInstId = null;
String procDefId = null;
String curActDefId = null;
if (RestUtils.isEmpty(curActInstId)) {
procDefId = param.get("procDefId");
curActDefId = param.get("curActDefId");
} else {
ActivityInstanceModel model = processInstanceService
.getTask(curActInstId);
procInstId = model.getProcInstId();
procDefId = model.getProcDefId();
curActDefId = model.getActDefId();
}
return processDefinitionService.getActivityUserTree(procInstId,
procDefId, curActInstId, curActDefId, destActDefId, userId,
userOrgId, null, param);
}
@RequestMapping(value = "/oppower", produces = "application/json; charset=UTF-8")
public List<ActivityOpBean> getOpPower( @RequestBody Map<String, String> param) {
String scope = param.get("scope");
if (RestUtils.isEmpty(scope))
throw new IllegalArgumentException("scope is null");
if (scope.equals("1")) { // 新建
String procDefId = param.get("procDefId");
if (RestUtils.isEmpty(procDefId))
throw new IllegalArgumentException("procDefId is null");
String actDefId = param.get("actDefId");
if (RestUtils.isEmpty(actDefId))
throw new IllegalArgumentException("actDefId is null");
Map<String, Object> pageDetailVaribale = new HashMap<String, Object>();
ActivityInfoConfig actInfo = processConfigService
.getActivityInfoConfig(procDefId, actDefId, scope,
pageDetailVaribale);
return beansBuilder.buildActOpList(actInfo
.getActivityOperatePowers());
} else {
String actInstId = param.get("actInstId");
if (RestUtils.isEmpty(actInstId))
throw new IllegalArgumentException("actInstId is null");
String userId = param.get("userId");
if (RestUtils.isEmpty(userId))
throw new IllegalArgumentException("userId is null");
String userOrgId = param.get("userOrgId");
if (RestUtils.isEmpty(userOrgId))
throw new IllegalArgumentException("userOrgId is null");
ActivityInstanceModel actInst = processInstanceService.getHistoryTask(actInstId);
if (actInst == null)
throw new RestException(ExceptionErrorCode.B2052.name(), "activity instance not found, id=" + actInstId);
String procDefId = actInst.getProcDefId();
String actDefId = actInst.getActDefId();
Map<String, Object> pageDetailVaribale = new HashMap<String, Object>();
pageDetailVaribale.put("task", actInst);
HistoricProcessInstanceEntity processInstance = (HistoricProcessInstanceEntity) processInstanceService
.getHistoryService().createHistoricProcessInstanceQuery()
.processInstanceId(actInst.getProcInstId()).singleResult();
if (processInstance == null)
throw new RestException(ExceptionErrorCode.B2051.name(), "process instance not found, id=" + actInst.getProcInstId());
pageDetailVaribale.put("processInstance", processInstance);
ProcessPageContext processPageContext = new ProcessPageContext(
scope, WorkFlowContants.ACTION_TYPE_EXECUTE_ACTIVITY, "",
userId, userOrgId);
pageDetailVaribale.put("processPageContext", processPageContext);
ActivityInfoConfig actInfo = processConfigService
.getActivityInfoConfig(procDefId, actDefId, scope,
pageDetailVaribale);
return beansBuilder.buildActOpList(actInfo.getActivityOperatePowers());
}
}
@RequestMapping(value = "/{actInstId}/backactivities", produces = "application/json; charset=UTF-8")
public List<ActivityInstanceBean> findBackActivity(@PathVariable String actInstId){
List<ActivityInstanceModel> result = processInstanceService.findBackAvtivity(actInstId);
return beansBuilder.buildActInstList(result);
}
/*
@RequestMapping(value = "/{actInstId}/comment", produces = "application/json; charset=UTF-8")
public List<ProcessLogModel> getActInstComment(@PathVariable String actInstId){
return processInstanceService.getActInstComments(actInstId);
}*/
}