package com.hotent.runtime.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import javax.annotation.Resource;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.hotent.base.annotation.ApiGroup;
import com.hotent.base.constants.ApiGroupConsts;
import com.hotent.base.controller.BaseController;
import com.hotent.base.groovy.GroovyScriptEngine;
import com.hotent.base.groovy.IUserScript;
import com.hotent.base.model.CommonResult;
import com.hotent.base.query.FieldRelation;
import com.hotent.base.query.PageList;
import com.hotent.base.query.QueryFilter;
import com.hotent.base.query.QueryOP;
import com.hotent.base.util.AppUtil;
import com.hotent.base.util.BeanUtils;
import com.hotent.base.util.StringUtil;
import com.hotent.base.util.UniqueIdUtil;
import com.hotent.bpm.api.cmd.ActionCmd;
import com.hotent.bpm.api.cmd.BaseActionCmd;
import com.hotent.bpm.api.constant.BpmConstants;
import com.hotent.bpm.api.context.ContextThreadUtil;
import com.hotent.bpm.api.model.identity.BpmIdentity;
import com.hotent.runtime.manager.ConditionScriptManager;
import com.hotent.runtime.model.ConditionScript;
import com.hotent.runtime.model.IConditionScript;
import com.hotent.uc.api.impl.service.UserServiceImpl;
import com.hotent.uc.api.impl.util.ContextUtil;
import com.hotent.uc.api.model.IUser;
/**
*
*
* 描述:sys_multi_script管理
* 构建组:eip平台-bpmx-platform
* 作者:helh
* 邮箱:helh@jee-soft.cn
* 日期:2014-05-08 15:33:34
* 版权:广州宏天软件有限公司版权所有
*
*/
@RestController
@RequestMapping("/runtime/conditionScript/v1/")
@Api(tags = "条件脚本管理")
@ApiGroup(group= {ApiGroupConsts.GROUP_BPM})
public class ConditionScriptController extends BaseController {
@Resource
private ConditionScriptManager conditionScriptManager;
@RequestMapping(value = "list", method = RequestMethod.POST, produces = { "application/json; charset=utf-8" })
@ApiOperation(value = "条件脚本列表(分页条件查询)", httpMethod = "POST", notes = "条件脚本列表(分页条件查询)")
public PageList listJson(
@ApiParam(name = "queryFilter", value = "通用查询对象") @RequestBody QueryFilter queryFilter,
@ApiParam(name = "type", value = "脚本类型") @RequestParam Optional type) throws Exception {
PageList res=conditionScriptManager.listJson(queryFilter,type);
return res;
}
@RequestMapping(value = "edit", method = RequestMethod.GET, produces = { "application/json; charset=utf-8" })
@ApiOperation(value = "获取脚本设置明细", httpMethod = "GET", notes = "获取脚本设置明细")
public ObjectNode edit(@ApiParam(name = "id", value = "脚本id") @RequestParam String id) throws Exception {
ObjectNode node=conditionScriptManager.edit(id);
return node;
}
@RequestMapping(value = "getImplClasses", method = RequestMethod.GET, produces = {
"application/json; charset=utf-8" })
@ApiOperation(value = "根据指定的接口或基类获取实现类列表", httpMethod = "GET", notes = "根据指定的接口或基类获取实现类列表")
public List getImplClasses(
@ApiParam(name = "type", value = "脚本类型(1:条件脚本,2:人员脚本 )", required = true) @RequestParam Integer type)
throws Exception {
return conditionScriptManager.getImplClasses(type);
}
public static class ParaCtOtion {
public String id; // 控件类型ID
public String option; // 控件类型可以绑定的字段列表
public void setId(String id) {
this.id = id;
}
public String getId() {
return this.id;
}
public void setOption(String option) {
this.option = option;
}
public String getOption() {
return this.option;
}
}
@RequestMapping(value = "get", method = RequestMethod.GET, produces = { "application/json; charset=utf-8" })
@ApiOperation(value = "获取脚本明细", httpMethod = "GET", notes = "获取脚本明细")
public ConditionScript get(@ApiParam(name = "id", value = "脚本id", required = true) @RequestParam String id)
throws Exception {
ConditionScript conditionScript = null;
if (StringUtil.isNotEmpty(id)) {
conditionScript = conditionScriptManager.get(id);
}
return conditionScript;
}
@RequestMapping(value = "save", method = RequestMethod.POST, produces = { "application/json; charset=utf-8" })
@ApiOperation(value = "保存脚本信息", httpMethod = "POST", notes = "保存脚本信息")
public CommonResult save(
@ApiParam(name = "conditionScript", value = "脚本设置", required = true) @RequestBody ConditionScript conditionScript)
throws Exception {
String resultMsg = null;
String id = conditionScript.getId();
try {
if (StringUtil.isEmpty(id)) {
conditionScript.setId(UniqueIdUtil.getSuid());
conditionScriptManager.create(conditionScript);
resultMsg = "添加脚本成功";
} else {
conditionScriptManager.update(conditionScript);
resultMsg = "更新脚本成功";
}
return new CommonResult(true, resultMsg);
} catch (Exception e) {
return new CommonResult(false, resultMsg + "," + e.getMessage());
}
}
@RequestMapping(value = "remove", method = RequestMethod.DELETE, produces = { "application/json; charset=utf-8" })
@ApiOperation(value = "删除脚本设置", httpMethod = "DELETE", notes = "删除脚本设置")
public CommonResult remove(
@ApiParam(name = "ids", value = "流程的测试用例设置id,多个用“,”号分隔", required = true) @RequestParam String ids)
throws Exception {
try {
String[] aryIds = null;
if (!StringUtil.isEmpty(ids)) {
aryIds = ids.split(",");
}
conditionScriptManager.removeByIds(aryIds);
return new CommonResult(true, "删除成功");
} catch (Exception e) {
return new CommonResult(false, "删除失败");
}
}
@RequestMapping(value = "getMethodsByName", method = RequestMethod.GET, produces = {
"application/json; charset=utf-8" })
@ApiOperation(value = "通过类名获取类的所有方法", httpMethod = "GET", notes = "通过类名获取类的所有方法")
public CommonResult getMethodsByName(
@ApiParam(name = "className", value = "类名", required = true) @RequestParam String className,
@ApiParam(name = "id", value = "id") @RequestParam String id,
@ApiParam(name = "type", value = "脚本类型") @RequestParam Integer type) throws Exception {
try {
ConditionScript conditionScript = null;
if (StringUtil.isNotEmpty(id)) {
conditionScript = conditionScriptManager.get(id);
type = conditionScript.getType();
}
ArrayNode jarray = conditionScriptManager.getMethodsByClassName(className, conditionScript, type);
return new CommonResult(true, "获取成功!", jarray.toString());
} catch (Exception ex) {
return new CommonResult(false, ex.getMessage());
}
}
@SuppressWarnings("unchecked")
@RequestMapping(value = "testScript", method = RequestMethod.POST, produces = { "application/json; charset=utf-8" })
@ApiOperation(value = "测试脚本", httpMethod = "POST", notes = "测试脚本")
public CommonResult