Search in sources :

Example 16 with Before

use of com.jfinal.aop.Before in project my_curd by qinyou.

the class ActFormTplController method deleteAction.

/**
 * 删除 action
 */
@Before(IdsRequired.class)
public void deleteAction() {
    String ids = getPara("ids").replaceAll(",", "','");
    String sql = "select count(1) as c from act_hi_varinst where NAME_ = '" + ActConst.APPLY_FORM_TPL_ID + "' and TEXT_  in ('" + ids + "')";
    Record record = Db.findFirst(sql);
    if (record.getLong("c") > 0L) {
        renderFail("删除失败,表单已产生历史单据,禁止删除!");
        return;
    }
    sql = "delete from act_form_tpl where id in ( '" + ids + "' ) ";
    Db.update(sql);
    renderSuccess(DELETE_SUCCESS);
}
Also used : Record(com.jfinal.plugin.activerecord.Record) Before(com.jfinal.aop.Before)

Example 17 with Before

use of com.jfinal.aop.Before in project my_curd by qinyou.

the class ProcessModelController method newModel.

// 新增模型
@Before(Tx.class)
public void newModel() {
    String name = get("name");
    String description = get("description");
    if (StringUtils.isEmpty(name)) {
        renderText("名称参数不可为空");
        return;
    }
    ObjectMapper objectMapper = new ObjectMapper();
    ObjectNode editorNode = objectMapper.createObjectNode();
    editorNode.put("id", "canvas");
    editorNode.put("resourceId", "canvas");
    ObjectNode stencilSetNode = objectMapper.createObjectNode();
    // 这个很重要,不能轻易改动 (改动后可能造成异常情况)
    stencilSetNode.put("namespace", "http://b3mn.org/stencilset/bpmn2.0#");
    editorNode.put("stencilset", stencilSetNode);
    ObjectNode modelObjectNode = objectMapper.createObjectNode();
    modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, name);
    modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);
    modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description == null ? "" : description);
    Model newModel = ActivitiUtils.getRepositoryService().newModel();
    newModel.setMetaInfo(modelObjectNode.toString());
    newModel.setName(name);
    ActivitiUtils.getRepositoryService().saveModel(newModel);
    ActivitiUtils.getRepositoryService().addModelEditorSource(newModel.getId(), editorNode.toString().getBytes(ActConst.DEFAULT_CHARSET));
    String editorUrl = "/static/plugins/activiti/modeler.html?modelId=" + newModel.getId();
    redirect(editorUrl);
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) Model(org.activiti.engine.repository.Model) BpmnModel(org.activiti.bpmn.model.BpmnModel) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Before(com.jfinal.aop.Before)

Example 18 with Before

use of com.jfinal.aop.Before in project my_curd by qinyou.

the class ProcessModelController method modelSave.

// activti modeler 保存
@Before(Tx.class)
public void modelSave() throws TranscoderException, IOException {
    String modelId = get("modelId");
    String name = get("name");
    String description = get("description");
    String jsonXml = get("json_xml");
    String svgXml = get("svg_xml");
    if (StringUtils.isEmpty(modelId) || StringUtils.isEmpty(jsonXml) || StringUtils.isEmpty(svgXml) || StringUtils.isEmpty(name)) {
        renderFail("参数缺失");
        return;
    }
    ObjectMapper objectMapper = new ObjectMapper();
    Model model = ActivitiUtils.getRepositoryService().getModel(modelId);
    ObjectNode modelJson = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
    modelJson.put(ModelDataJsonConstants.MODEL_NAME, name);
    modelJson.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
    model.setMetaInfo(modelJson.toString());
    model.setName(name);
    ActivitiUtils.getRepositoryService().saveModel(model);
    ActivitiUtils.getRepositoryService().addModelEditorSource(model.getId(), jsonXml.getBytes(ActConst.DEFAULT_CHARSET));
    InputStream svgStream = new ByteArrayInputStream(svgXml.getBytes(ActConst.DEFAULT_CHARSET));
    TranscoderInput input = new TranscoderInput(svgStream);
    PNGTranscoder transcoder = new PNGTranscoder();
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    TranscoderOutput output = new TranscoderOutput(outStream);
    transcoder.transcode(input, output);
    final byte[] result = outStream.toByteArray();
    ActivitiUtils.getRepositoryService().addModelEditorSourceExtra(model.getId(), result);
    outStream.close();
    Map<String, Object> ret = new HashMap<>();
    ret.put("lastUpdated", model.getLastUpdateTime());
    renderJson(ret);
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) HashMap(java.util.HashMap) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) PNGTranscoder(org.apache.batik.transcoder.image.PNGTranscoder) TranscoderOutput(org.apache.batik.transcoder.TranscoderOutput) ByteArrayInputStream(java.io.ByteArrayInputStream) TranscoderInput(org.apache.batik.transcoder.TranscoderInput) Model(org.activiti.engine.repository.Model) BpmnModel(org.activiti.bpmn.model.BpmnModel) JSONObject(com.alibaba.fastjson.JSONObject) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Before(com.jfinal.aop.Before)

Example 19 with Before

use of com.jfinal.aop.Before in project my_curd by qinyou.

the class MyTaskController method completeAction.

/**
 * 完成任务
 */
@Before(Tx.class)
public void completeAction() {
    String taskId = get("taskId");
    String instanceId = get("instanceId");
    if (StringUtils.isEmpty(instanceId) || StringUtils.isEmpty(taskId)) {
        renderFail("参数缺失");
        return;
    }
    TaskService service = ActivitiUtils.getTaskService();
    Task task = service.createTaskQuery().taskId(taskId).singleResult();
    if (task == null) {
        log.info("taskId:{} 任务不存在", taskId);
        renderFail("参数错误");
        return;
    }
    if (task.getAssignee() == null) {
        renderFail("未认领任务无法办理");
        return;
    }
    String username = WebUtils.getSessionUsername(this);
    if (!username.equals(task.getAssignee())) {
        log.info("username: {} 尝试办理 无权限任务 taskId: {}", username, taskId);
        renderFail("无权办理");
        return;
    }
    // 意见
    String comment = get("comment");
    if (StringUtils.notEmpty(comment)) {
        service.addComment(taskId, null, comment);
    }
    // 附件
    String[] attachments = getParaValues("attachments");
    if (attachments != null && attachments.length > 0) {
        String[] temp;
        for (String fileUri : attachments) {
            // 文件名#SEP#文件地址
            temp = fileUri.split("#SEP#");
            service.createAttachment("file", taskId, null, temp[0], null, temp[1]);
        }
    }
    // 审批表单数据
    Map<String, String> formParams = ActivitiUtils.getFormParams(this, taskId);
    log.info("params: {}", formParams.toString());
    Map<String, Object> variables = new HashMap<>();
    // 作用范围,英文变量名,中文变量名
    String scope, eKey, cKey;
    for (String key : formParams.keySet()) {
        // 长度为3
        String[] temp = key.split("_");
        if (temp.length != 3) {
            throw new RuntimeException("任务表单ID:" + key + "配置错误");
        }
        scope = temp[0];
        eKey = temp[1];
        cKey = temp[2];
        switch(scope) {
            case ActConst.PROCESS_VAR_PREFIX:
                // 实例 和 任务 范围 都添加)
                service.setVariableLocal(taskId, cKey, formParams.get(key));
                variables.put(eKey, formParams.get(key));
                System.out.println(eKey + "---" + formParams.get(key));
                break;
            case ActConst.TASK_VAR_PREFIX:
                // 添加 到 任务范围
                service.setVariableLocal(taskId, cKey, formParams.get(key));
                break;
            case ActConst.APPLY_VAR_PREFIX:
                service.setVariableLocal(taskId, cKey, formParams.get(key));
                ProcessInstance instance = ActivitiUtils.getRuntimeProcessInstance(task.getProcessInstanceId(), true);
                String applyFormData = (String) instance.getProcessVariables().get(ActConst.APPLY_FORM_DATA);
                Map<String, Object> applyForm = JSON.parseObject(applyFormData, Map.class);
                applyForm.put(eKey, formParams.get(key));
                variables.put(ActConst.APPLY_FORM_DATA, JSON.toJSONString(applyForm));
                break;
            default:
                log.info("无效表单参数: {}:{}", key, formParams.get(key));
        }
    }
    service.complete(taskId, variables);
    renderSuccess("办理完成");
}
Also used : Task(org.activiti.engine.task.Task) HashMap(java.util.HashMap) TaskService(org.activiti.engine.TaskService) ProcessInstance(org.activiti.engine.runtime.ProcessInstance) Before(com.jfinal.aop.Before)

Example 20 with Before

use of com.jfinal.aop.Before in project my_curd by qinyou.

the class ProcessDefineController method convertToModel.

// 流程定义转模型
@Before({ IdRequired.class, Tx.class })
public void convertToModel() throws UnsupportedEncodingException, XMLStreamException {
    // 流程定义id
    String processDefinitionId = get("id");
    ProcessDefinition processDefinition = ActivitiUtils.getRepositoryService().createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
    if (processDefinition == null) {
        renderFail("流程定义id参数错误");
        return;
    }
    InputStream bpmnStream = ActivitiUtils.getRepositoryService().getResourceAsStream(processDefinition.getDeploymentId(), processDefinition.getResourceName());
    XMLInputFactory xif = XMLInputFactory.newInstance();
    InputStreamReader in = new InputStreamReader(bpmnStream, ActConst.DEFAULT_CHARSET);
    XMLStreamReader xtr = xif.createXMLStreamReader(in);
    BpmnModel bpmnModel = new BpmnXMLConverter().convertToBpmnModel(xtr);
    BpmnJsonConverter converter = new BpmnJsonConverter();
    ObjectNode modelObjectNode = new ObjectMapper().createObjectNode();
    modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, processDefinition.getName());
    modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, processDefinition.getVersion());
    modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, processDefinition.getDescription());
    Model model = ActivitiUtils.getRepositoryService().newModel();
    model.setMetaInfo(modelObjectNode.toString());
    model.setName(processDefinition.getName());
    ActivitiUtils.getRepositoryService().saveModel(model);
    ObjectNode modelNode = converter.convertToJson(bpmnModel);
    ActivitiUtils.getRepositoryService().addModelEditorSource(model.getId(), modelNode.toString().getBytes(ActConst.DEFAULT_CHARSET));
    renderSuccess("转化成功:modelId: " + model.getId());
}
Also used : XMLStreamReader(javax.xml.stream.XMLStreamReader) InputStreamReader(java.io.InputStreamReader) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) InputStream(java.io.InputStream) Model(org.activiti.engine.repository.Model) BpmnModel(org.activiti.bpmn.model.BpmnModel) ProcessDefinition(org.activiti.engine.repository.ProcessDefinition) BpmnJsonConverter(org.activiti.editor.language.json.converter.BpmnJsonConverter) XMLInputFactory(javax.xml.stream.XMLInputFactory) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) BpmnModel(org.activiti.bpmn.model.BpmnModel) BpmnXMLConverter(org.activiti.bpmn.converter.BpmnXMLConverter) Before(com.jfinal.aop.Before)

Aggregations

Before (com.jfinal.aop.Before)53 Date (java.util.Date)11 ActiveRecordException (com.jfinal.plugin.activerecord.ActiveRecordException)5 Record (com.jfinal.plugin.activerecord.Record)5 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)4 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)4 ToolString (com.hxkj.common.util.ToolString)4 ExportParams (cn.afterturn.easypoi.excel.entity.ExportParams)3 ExcelRdException (com.fruit.manage.util.excelRd.ExcelRdException)3 ActFormTpl (com.github.qinyou.process.model.ActFormTpl)3 SysOplog (com.hxkj.system.model.SysOplog)3 SysUser (com.hxkj.system.model.SysUser)3 IOException (java.io.IOException)3 InputStream (java.io.InputStream)3 HashMap (java.util.HashMap)3 BpmnModel (org.activiti.bpmn.model.BpmnModel)3 RepositoryService (org.activiti.engine.RepositoryService)3 HistoricProcessInstance (org.activiti.engine.history.HistoricProcessInstance)3 Model (org.activiti.engine.repository.Model)3 DateTime (org.joda.time.DateTime)3