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);
}
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);
}
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);
}
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("办理完成");
}
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());
}
Aggregations