package com.vci.web.controller;
|
|
import com.vci.corba.workflow.data.TasksAssignedInfo;
|
import com.vci.pagemodel.ProcessUserVO;
|
import com.vci.starter.web.annotation.log.VciBusinessLog;
|
import com.vci.starter.web.pagemodel.BaseResult;
|
import com.vci.starter.web.pagemodel.DataGrid;
|
import com.vci.dto.BaseModelDTO;
|
import com.vci.dto.ProcessNodeUseDTO;
|
import com.vci.dto.ProcessStartConfigDTO;
|
import com.vci.web.service.WebProcessCommandServiceI;
|
import com.vci.web.util.WebUtil;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.io.IOException;
|
import java.util.*;
|
|
/**
|
* 流程执行控制
|
* @author weidy
|
*/
|
@VciBusinessLog(modelName="流程执行服务")
|
@Controller
|
@RequestMapping("/webProcessCommandController")
|
public class WebProcessCommandController{
|
|
private Logger logger = LoggerFactory.getLogger(getClass());
|
|
@Autowired
|
private WebProcessCommandServiceI proCmdService;
|
|
@VciBusinessLog(operateName="执行流程")
|
@RequestMapping("/completeTasks")
|
@ResponseBody
|
public BaseResult completeTasks(String taskOids, String outCome, String note, String nextTaskUserIds){
|
try{
|
proCmdService.completeTasks(taskOids, outCome, note, getProcessUserByIds(nextTaskUserIds));
|
return BaseResult.success(taskOids);
|
}catch(Exception e){
|
BaseResult result = BaseResult.fail(WebUtil.getErrorMsg(e));
|
result.setObj(taskOids);
|
return result;
|
}
|
}
|
|
/**
|
* 将用户名转为流程用户对象
|
* @param userIds 用户名
|
* @return
|
*/
|
private List<ProcessUserVO> getProcessUserByIds(String userIds){
|
List<ProcessUserVO> users = new ArrayList<ProcessUserVO>();
|
if(WebUtil.isNotNull(userIds)){
|
for(String s : userIds.split(",")){
|
if(WebUtil.isNotNull(s)){
|
ProcessUserVO pu = new ProcessUserVO();
|
pu.setId(s);
|
pu.setType("user");
|
users.add(pu);
|
}
|
}
|
}
|
return users;
|
}
|
|
|
@VciBusinessLog(operateName="开始流程")
|
@RequestMapping("/startProcess")
|
@ResponseBody
|
public BaseResult startProcess(ProcessStartConfigDTO config, ProcessNodeUseDTO processNodeUseDTO, BaseModelDTO variablesInfo){
|
try {
|
Map<String,List<ProcessUserVO>> inProcessUsers = new HashMap<String, List<ProcessUserVO>>();
|
if(processNodeUseDTO != null && processNodeUseDTO.getNodeUsers()!=null){
|
for(String nodeName : processNodeUseDTO.getNodeUsers().keySet()){
|
String userIds = processNodeUseDTO.getNodeUsers().get(nodeName);
|
inProcessUsers.put(nodeName, getProcessUserByIds(userIds));
|
}
|
}
|
proCmdService.startProcess(config, inProcessUsers, variablesInfo.getData());
|
return BaseResult.successMsg("发起流程成功");
|
} catch (Exception e) {
|
return BaseResult.fail(WebUtil.getErrorMsg(e));
|
}
|
}
|
|
@VciBusinessLog(operateName="发起流程时校验数据的属性是否符合要求")
|
@RequestMapping("/checkAttributesOnStartProcess")
|
@ResponseBody
|
public BaseResult checkAttributesOnStartProcess(String oids,String btmType,String attributes,String attributeValues,String primaryKeyName){
|
try{
|
proCmdService.checkAttributesOnStartProcess(oids,btmType,attributes,attributeValues,primaryKeyName);
|
return BaseResult.successMsg("属性校验成功");
|
}catch (Throwable e){
|
return BaseResult.fail(WebUtil.getErrorMsg(e));
|
}
|
}
|
|
@VciBusinessLog(operateName="终止流程")
|
@RequestMapping("/endProcess")
|
@ResponseBody
|
public BaseResult endProcess(String processOids,String note){
|
proCmdService.endProcess(processOids,note);
|
return BaseResult.success();
|
}
|
|
@VciBusinessLog(operateName="挂起流程")
|
@RequestMapping("/suspendProcess")
|
@ResponseBody
|
public BaseResult suspendProcess(String processOids,String note){
|
proCmdService.suspendProcess(processOids,note);
|
return BaseResult.success();
|
}
|
|
@VciBusinessLog(operateName="恢复流程")
|
@RequestMapping("/resumeProcess")
|
@ResponseBody
|
public BaseResult resumeProcess(String processOids){
|
proCmdService.resumeProcess(processOids);
|
return BaseResult.success();
|
}
|
|
@VciBusinessLog(operateName="查看代理信息")
|
@RequestMapping("/getProxy")
|
@ResponseBody
|
public DataGrid getProxy(){
|
DataGrid dg = new DataGrid();
|
TasksAssignedInfo taskAss = proCmdService.getProxy();
|
if(taskAss!=null){
|
dg.getData().add(taskAss);
|
dg.setLimit(1);
|
dg.setTotal(1);
|
}
|
return dg;
|
}
|
|
@VciBusinessLog(operateName="开启代理")
|
@RequestMapping("/startProxy")
|
@ResponseBody
|
public BaseResult startProxy(String userId,Date startTime,Date endTime) {
|
proCmdService.beginProxy(userId, startTime, endTime,true);
|
return BaseResult.successMsg("添加流程代理人成功");
|
}
|
|
@VciBusinessLog(operateName="关闭代理")
|
@RequestMapping("/endProxy")
|
@ResponseBody
|
public BaseResult endProxy() {
|
proCmdService.endProxy();
|
return BaseResult.successMsg("停止代理成功,在代理期间被转移到代理人的任务不会自动回转");
|
}
|
|
@VciBusinessLog(operateName="设置负责人")
|
@RequestMapping("/setPrincipal")
|
@ResponseBody
|
public BaseResult setPrincipal(String taskOids,String userIds){
|
proCmdService.setPrincipal(taskOids, userIds);
|
return BaseResult.successMsg("设置负责人成功");
|
}
|
|
@VciBusinessLog(operateName="上传流程审批意见")
|
@RequestMapping("/uploadAuditSuggestFile")
|
@ResponseBody
|
public BaseResult uploadAuditSuggestFile(String taskOids, MultipartFile file) throws IOException {
|
if(file != null){
|
proCmdService.uploadAuditSuggestFile(taskOids, file,file.getOriginalFilename());
|
return BaseResult.successMsg("上传流程审批意见成功");
|
}else{
|
return BaseResult.successMsg("上传的文件是空的");
|
}
|
}
|
|
}
|