activiti 图片

一、

 if(obj.event === 'detail'){
layer.msg('ID:'+ data.processInstanceId + ' 的查看操作');

//start
var index= top.layer.open({
type: 2,
title:"流程图",
area: ['1300px', '520px'],
fixed: false, //不固定
maxmin: true,
content: $("#PageContext").val()+'/shinePics?processInstanceId='+data.processInstanceId,
btn: ['确认', '取消'] ,
yes: function(index, layero){
top.layer.close(index);
}
,btn2: function(index, layero){

}
});
layer.iframeAuto(index);
//end
}
二、controller

 

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.activiti.engine.HistoryService;
import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.DelegationState;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import sun.misc.BASE64Encoder;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

@Controller
@RequestMapping(value = "/dw")
public class DWController {

private static Logger log = Logger.getLogger(DWController.class);

@Autowired
RepositoryService repositoryService;
@Autowired
ProcessEngine processEngine;
@Autowired
IdentityService identityService;
@Autowired
TaskService taskService;
@Autowired
HistoryService historyService;
@Autowired
RuntimeService runtimeService;
@Autowired
ProcessEngineConfiguration processEngineConfiguration;
@Autowired
private DwService dwService;
@Autowired
DwCustomerRelationsService dwCustomerRelationService;
@Autowired
ActivitService activiti;
@Autowired
EmpLoyeesService empLoyeesService;
@Autowired
ApproveLogService approveLogService;

@RequestMapping(value = "/list")
public String list() {
return "dwlist";
}

@RequestMapping(value = "/form")
public String form(@ModelAttribute DW dw, Model model) throws Exception {
//dw.setDwNo(HelperUtils.getCard(6));
String dwNo="DWAP"+dwService.dwNoSeq();
dw.setDwNo(dwNo);
model.addAttribute("dw", dw);
return "dwform";
}

@RequestMapping(value = "/dwList")
@ResponseBody
public String dwList(HttpServletRequest request, HttpServletResponse resp,
@ModelAttribute DW dw) {
JSONObject returnValue = new JSONObject();
try {
Integer page = 1;
Integer rows = 10;
String userName=request.getParameter("userName");
dw.setCreateUsername(userName);
String pageObj = request.getParameter("page");
if (null != pageObj && !StringUtils.isBlank(pageObj)) {
page = Integer.parseInt(request.getParameter("page"));
rows = Integer.parseInt(request.getParameter("limit"));
}
String key = request.getParameter("key");
if (!StringUtils.isBlank(key)) {
dw.setKey(key);
}
int count = dwService.listCount(dw);
PageObject pageObject = new PageObject(page, rows, count);
dw.setStartIndex(pageObject.getStartIndex());
dw.setEndIndex(pageObject.getEndIndex());
List<DW> data = dwService.listPage(dw);
returnValue.put("code", 0);
returnValue.put("msg", "");
returnValue.put("count", count);
returnValue.put("data", data);
} catch (Exception e) {
log.error("dwList{}->",e);
returnValue.put("code", -1);
returnValue.put("msg", e.toString());
returnValue.put("count", 0);
returnValue.put("data", null);
}
return JSON.toJSONString(returnValue);
}

//只读图片页面
@RequestMapping("shinePics")
public String shinePics(HttpServletRequest request,
HttpServletResponse resp, Model model) {
String processInstanceId=request.getParameter("processInstanceId");
model.addAttribute("processInstanceId", processInstanceId);
return "shiePics";
}

@RequestMapping("getShineProcImage")
@ResponseBody
public String getShineProcImage(HttpServletRequest request,
HttpServletResponse resp, String processInstanceId){
JSONObject result = new JSONObject();
try{
JSONArray shineProImages = new JSONArray();
BASE64Encoder encoder = new BASE64Encoder();
InputStream imageStream = activiti.generateStream(request, resp,
processInstanceId, true);
if (imageStream != null) {
String imageCurrentNode = Base64Utils.ioToBase64(imageStream);
if (StringUtils.isNotBlank(imageCurrentNode)) {
shineProImages.add(imageCurrentNode);
}
}
InputStream imageNoCurrentStream = activiti.generateStream(request, resp,
processInstanceId, false);
if (imageNoCurrentStream != null) {
String imageNoCurrentNode = Base64Utils
.ioToBase64(imageNoCurrentStream);
if (StringUtils.isNotBlank(imageNoCurrentNode)) {
shineProImages.add(imageNoCurrentNode);
}
}
result.put("id", UUID.randomUUID().toString());
result.put("errorNo", 0);
result.put("images", shineProImages);
}catch(Exception e){
log.error("getShineProcImage{}->",e);
}

return result.toJSONString();
}

/**
* 我的待办
* @return
*/
@RequestMapping(value = "pending")
public String pending() {
return "pending_list";
}

@RequestMapping(value = "/pendingPage")
@ResponseBody
public String pendingPage(HttpServletRequest request, HttpServletResponse resp,
@ModelAttribute DW dw) {
JSONObject returnValue = new JSONObject();
try {
List<DW> data =new ArrayList<DW>();
String userName=request.getParameter("userName");
int count =0;
List<Task> tasks=activiti.getPendingList(userName);
List<String> list=new ArrayList<String>();
Map<String,String> taskMap=new HashMap<String,String>();
if(null!=tasks && !tasks.isEmpty()){
for (Task task : tasks) {
list.add(task.getProcessInstanceId());
taskMap.put(task.getProcessInstanceId(), task.getId());
}
dw.setList(list);
String key = request.getParameter("key");
if (!StringUtils.isBlank(key)) {
dw.setKey(key);
}
data = dwService.pedingList(dw);
if(null!=data && !data.isEmpty()){
for (DW d : data) {
d.setTaskId(taskMap.get(d.getProcessInstanceId()));
}
}
}
returnValue.put("code", 0);
returnValue.put("msg", "");
returnValue.put("count", count);
returnValue.put("data", data);
} catch (Exception e) {
log.error("pendingPage ->{}"+e.toString());
returnValue.put("code", -1);
returnValue.put("msg", e.toString());
returnValue.put("count", 0);
returnValue.put("data", null);
}
return JSON.toJSONString(returnValue);
}

/**
* 审批页面
* @return
*/
@RequestMapping(value = "approve")
public String approvePage(HttpServletRequest request,
HttpServletResponse resp, Model model) {
try{
String processInstanceId=request.getParameter("processInstanceId");
Task task = activiti.getCurrenTask(processInstanceId);
String node=task.getTaskDefinitionKey();
String PENDING="";
if(task.getOwner() != null && !task.getOwner().equals("null")){
DelegationState delegationState = task.getDelegationState();
if (delegationState.toString().equals("PENDING")) {
PENDING="PENDING";
}
}
DW dw=new DW();
dw.setProcessInstanceId(processInstanceId);
DW detail=dwService.getDetail(dw);
model.addAttribute("dw", detail);
if("applicantNode".equals(node)){
return "dw_approve_reload";
}else if("baseInfoNode".equals(node)){
return "dw_approve_end";
}else if("PENDING".equals(PENDING)){
return "dw_goutong";
}else{
return "dw_approve";
}
}catch(Exception e){
log.error("approve{}->",e);
}
return "404";

}

@RequestMapping(value = "/dwDetail")
public String dwDetail(@ModelAttribute DW dw, Model model) {
try{
DW detail=dwService.getDetail(dw);
model.addAttribute("dw", detail);
}catch(Exception e){
log.error("dwDetail {}->",e);
}
return "dw_detail";
}

@RequestMapping(value = "/save")
@ResponseBody
public String save(@ModelAttribute DW dw,HttpServletRequest request, HttpServletResponse resp) {
JSONObject result = new JSONObject();
result.put("code", -1);
try {
String userName=request.getParameter("userName");
Employees employee=new Employees();
employee.setUserName(userName);
Employees emp=empLoyeesService.getByEmployee(employee);
employee.setUserName(null);
employee.setUp1BossId(emp.getUp1BossId());
Employees superVisor=empLoyeesService.getByEmployee(employee);
Map<String, Object> querys = new HashMap<String, Object>();
querys.put("applicantUserName", userName);
querys.put("message", "同意");
querys.put("superVisor", superVisor.getUserName());
querys.put("level", emp.getDuty());
ProcessInstance processInstance=activiti.startActivit(userName, "dwfinal", querys);
ApproveInfo approve=new ApproveInfo();
approve.setUserName(userName);
approve.setProcessInstanceId(processInstance.getProcessInstanceId());
autoApprove(emp,processInstance.getProcessInstanceId());
dw.setProcessInstanceId(processInstance.getProcessInstanceId());
dw.setCreateUsername(userName);
dw.setDwSignStatus("1");
dwService.save(dw);
result.put("code", 0);
}catch (Exception e) {
log.error("保存DW信息{}->",e);
}
return JSON.toJSONString(result);
}

/**
* 审批页面
*
* @return
*/
@RequestMapping(value = "doApprove")
@ResponseBody
public String doApprove(@ModelAttribute ApproveInfo approve) {
JSONObject result = new JSONObject();
result.put("code", -1);
try {
String processInstanceId = approve.getProcessInstanceId();
Task task = activiti.getCurrenTask(processInstanceId);
Employees employee = new Employees();
employee.setUserName(task.getAssignee());
Employees approvePerson = empLoyeesService.getByEmployee(employee);
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("message", approve.getAttitude());
variables.put("level", approvePerson.getDuty());
if (approvePerson.getDuty() > 4) {
employee.setUserName(null);
employee.setUp1BossId(approvePerson.getUp1BossId());
Employees superPerson = empLoyeesService
.getByEmployee(employee);
variables.put("superVisor", superPerson.getUserName());
}
upDW(approve);
addLog(approve,task);
if("转办".equals(approve.getAttitude())){
taskService.delegateTask(task.getId(), approve.getGtUserName());
}else if("完成转办".equals(approve.getAttitude())){
taskService.resolveTask(task.getId());
}else{
activiti.completeTask(task.getId(), variables);
}
result.put("code", 0);
} catch (Exception e) {
log.error("doApprove {}->", e);
}
return JSON.toJSONString(result);
}

public void autoApprove(Employees emp, String processInstanceId) {
try {
if(emp.getDuty()<=4){
Task task=activiti.getCurrenTask(processInstanceId);
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("message", "1");
variables.put("level", emp.getDuty());
activiti.completeTask(task.getId(),variables);
}
} catch (Exception e) {
log.error("autoApprove {}->", e);
}
}

public void upDW(ApproveInfo approve) {
try {
String processInstanceId = approve.getProcessInstanceId();
DW dw = new DW();
dw.setProcessInstanceId(processInstanceId);
String status = approve.getAttitude();
if ("结束".equals(status)) {
dw.setDwSignStatus("2");
dwService.upDW(dw);
}
if ("取消".equals(status)) {
dw.setDwSignStatus("0");
dwService.upDW(dw);
}
} catch (Exception e) {
log.error("upDW {}->", e);
}
}

public void addLog(ApproveInfo approve,Task task){
try {
ApproveLog applog = new ApproveLog();
applog.setProcessInstanceId(task.getProcessInstanceId());
applog.setApproveUsername(task.getAssignee());
String attitude=approve.getAttitude().replace("转办", "沟通");
applog.setApproveMark(approve.getAttitude()+" "+approve.getMark());
approveLogService.save(applog);
} catch (Exception e) {
log.error("addLog {}->", e);
}
}

@RequestMapping(value = "/getDetail")
@ResponseBody
public String getDetail(HttpServletRequest request, HttpServletResponse resp,
@ModelAttribute DW dw) {
JSONObject returnValue = new JSONObject();
returnValue.put("code", -1);
try {
DW dwDetail = dwService.getDetail(dw);
returnValue.put("code", 0);
returnValue.put("msg", "");
returnValue.put("data", dwDetail);
} catch (Exception e) {
log.error("getDetail{}->",e);
returnValue.put("code", -1);
returnValue.put("msg", e.toString());
returnValue.put("count", 0);
returnValue.put("data", null);
}
return JSON.toJSONString(returnValue);
}

@RequestMapping(value = "/dwResubmit")
public String dwResubmit(@ModelAttribute DW dw, Model model) {
try{
DW detail=dwService.getDetail(dw);
model.addAttribute("dw", detail);
}catch(Exception e){
log.error("dwResubmit {}->",e);
}
return "dw_resubmit";
}

@RequestMapping(value = "/update")
@ResponseBody
public String update(@ModelAttribute DW dw,HttpServletRequest request, HttpServletResponse resp) {
JSONObject result = new JSONObject();
result.put("code", -1);
try {
dwService.update(dw);
result.put("code", 0);
}catch (Exception e) {
log.error("保存DW信息{}->",e);
}
return JSON.toJSONString(result);
}

}

三、页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="UTF-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport"
content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>FLOW管理</title>
<jsp:include page="includ_script.jsp" />
</head>

<body>
<div class="x-body">
<form class="layui-form layui-form-pane" style="margin-left: 20px;">
<div id="image" style="width: 100%; height: 100%; overflow: auto;">
<div class="layui-form-item">
<image id="showImages1" style="display: none;"></image>
<image id="showImages2"></image>
</div>
</form>
</div>
<script>
var countNum = 0;
// $('#image').css('height',document.body.offsetHeight);
layui.use(['form','layer'], function(){
$ = layui.jquery;
//执行AJAX 获取数据
// $.getJSON('getShineProcImage?processInstanceId=${processInstanceId}', function(json){
$.getJSON('dw/getShineProcImage?processInstanceId=${processInstanceId}', function(json){
var result = json.images;
var imgObj1 = document.getElementById("showImages1")
imgObj1.src = "data:image/png;base64,"+result[0] ;
var imgObj2 = document.getElementById("showImages2")
imgObj2.src = "data:image/png;base64,"+result[1] ;
// $("#showImages1").show();
window.setInterval(function () {
//获取网页中id=myImg的图片对象元素
// var imgObj = document.getElementById("showImages")
// imgObj.src = "data:image/png;base64,"+result[countNum] ;
if(countNum==0)
{
$("#showImages1").show();
$("#showImages2").hide();
}else
{
$("#showImages1").hide();
$("#showImages2").show();
}
countNum++;
if (countNum==2)
{
countNum = 0;//回到了原点
}
}, 1000);
});

});
</script>
</body>

</html>

posted @ 2019-06-10 15:53  albert_think  阅读(310)  评论(0编辑  收藏  举报