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 testScript(@ApiParam(name = "param", value = "参数") @RequestBody ObjectNode param) throws Exception { CommonResult res=conditionScriptManager.testScript(param); return res; } }