You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1189 lines
63 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<%@ page import="java.nio.charset.StandardCharsets" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="weaver.file.ImageFileManager" %>
<%@ page import="java.net.URL" %>
<%@ page import="org.apache.commons.io.FileUtils" %>
<%@ page import="okhttp3.*" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="weaver.soa.workflow.request.RequestService" %>
<%@ page import="weaver.soa.workflow.request.RequestInfo" %>
<%@ page import="com.engine.custom.archives.action.WorkflowToDocCus" %>
<%@ page import="weaver.docs.docs.DocRecycleManager" %>
<%@ page import="weaver.hrm.User" %>
<%@ page import="com.api.workflow.service.RequestAuthenticationService" %>
<%@ page import="weaver.workflow.workflow.WorkflowConfigComInfo" %>
<%@ page import="weaver.hrm.resource.ResourceComInfo" %>
<%@ page import="weaver.crm.Maint.CustomerInfoComInfo" %>
<%@ page import="com.alibaba.fastjson.JSON" %>
<%@ page import="weaver.workflow.monitor.Monitor" %>
<%@ page import="com.engine.workflow.biz.RobotNode.RobotNodeServiceBiz" %>
<%@ page import="com.api.workflow.util.ServiceUtil" %>
<%@ page import="com.engine.workflow.biz.RobotNode.RobotNodeBiz" %>
<%@ page import="weaver.general.TimeUtil" %>
<%@ page import="org.apache.poi.xwpf.usermodel.XWPFDocument" %>
<%@ page import="cn.afterturn.easypoi.word.WordExportUtil" %>
<%@ page import="com.icbc.api.internal.apache.http.impl.cookie.F" %>
<%@ page import="cn.hutool.core.util.ZipUtil" %>
<%
String requestid = "607615";
String filePath = "/opt/weaver/filesys/test";
String zwdir = getKeyword("7");
String fjdir = getKeyword("8");
String cbddir = getKeyword("9");
String zlcdir = getKeyword("9") + File.separator + getKeyword("10");
String lzxxdir = getKeyword("11");
String Url = "http://14.1.206.240:18080/fcscloud/composite/upload";
String fjFile = fjdir;
Map<String, String> subRequest = getSubRequest(requestid);
Map<String, String> requesData = getRequestByid(requestid);
String fj = Util.null2String(requesData.get("fj"));
String zwkbj = Util.null2String(requesData.get("zwkbj"));
List<String> docids = new ArrayList<>();
docids.addAll(Arrays.asList(fj.split(",")));
docids.addAll(Arrays.asList(zwkbj.split(",")));
Map<String, String> fjMap = getFileIdByDocId(fj);
Map<String, String> zwkbjMap = getFileIdByDocId(zwkbj);
final int[] i = {1};
// //---------------------------------------------------------------------------
// //附件
// fjMap.forEach((docid, imageid) -> {
// ImageFileManager imageFileManager = new ImageFileManager();
// imageFileManager.getImageFileInfoById(Util.getIntValue(imageid));
// InputStream inputStream = imageFileManager.getInputStream();
// //中文路径/中文文件名
// String imageFileName = filePath + File.separator + fjdir + File.separator + imageFileManager.getImageFileName();
// imageFileName = codeUtf8(imageFileName);
// try {
// File file = saveInputStreamToFile(inputStream, imageFileName);
// String s = callApi(Url, file);
// System.out.println(s);
// JSONObject result = JSONObject.parseObject(s);
// String errorcode = result.getString("errorcode");
// if ("0".equals(errorcode)) {
// JSONObject data = result.getJSONObject("data");
// String destFileName = data.getString("destFileName");
// String viewUrl = data.getString("viewUrl");
// downloadFile(viewUrl, filePath + File.separator + fjdir + File.separator + imageFileManager.getImageFileName() + ".pdf");
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
// });
// //正文
// zwkbjMap.forEach((docid, imageid) -> {
// ImageFileManager imageFileManager = new ImageFileManager();
// imageFileManager.getImageFileInfoById(Util.getIntValue(imageid));
// InputStream inputStream = imageFileManager.getInputStream();
// //中文路径/中文文件名
// String imageFileName = filePath + File.separator + zwdir + File.separator + imageFileManager.getImageFileName();
// imageFileName = codeUtf8(imageFileName);
// try {
// File file = saveInputStreamToFile(inputStream, imageFileName);
// String s = callApi(Url, file);
// System.out.println(s);
// JSONObject result = JSONObject.parseObject(s);
// String errorcode = result.getString("errorcode");
// if ("0".equals(errorcode)) {
// JSONObject data = result.getJSONObject("data");
// String destFileName = data.getString("destFileName");
// String viewUrl = data.getString("viewUrl");
// downloadFile(viewUrl, filePath + File.separator + zwdir + File.separator + imageFileManager.getImageFileName() + ".pdf");
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
// });
// //开始承办单 先获取主流程的承办单
//
// List<String> requestDocid = generaRequestFormPdf(requestid);
// List<String> requestDocid1 = generaSubRequestFormPdf(requestid);
// Map<String, String> map1 = getFileIdByDocId(String.join(",",requestDocid));
// Map<String, String> map2 = getFileIdByDocId(String.join(",",requestDocid1));
// out.print("<br/>");
// out.print("map1:"+JSONObject.toJSONString(map1));
// out.print("<br/>");
// out.print("map2:"+JSONObject.toJSONString(map2));
// out.print("<br/>");
//
// docids.addAll(requestDocid);
// docids.addAll(requestDocid1);
//
// //附件
// map1.forEach((docid, imageid) -> {
// ImageFileManager imageFileManager = new ImageFileManager();
// imageFileManager.getImageFileInfoById(Util.getIntValue(imageid));
// InputStream inputStream = imageFileManager.getInputStream();
// //中文路径/中文文件名
// String imageFileName = filePath + File.separator + cbddir + File.separator + fjFile + i[0] +"_"+ imageFileManager.getImageFileName();
// imageFileName = codeUtf8(imageFileName);
// try {
// File file = saveInputStreamToFile(inputStream, imageFileName);
// String s = callApi(Url, file);
// System.out.println(s);
// JSONObject result = JSONObject.parseObject(s);
// String errorcode = result.getString("errorcode");
// if ("0".equals(errorcode)) {
// JSONObject data = result.getJSONObject("data");
// String destFileName = data.getString("destFileName");
// String viewUrl = data.getString("viewUrl");
// downloadFile(viewUrl, filePath + File.separator + cbddir + File.separator +fjFile + i[0] +"_"+ imageFileManager.getImageFileName() + ".pdf");
// }
// i[0]++;
// } catch (IOException e) {
// e.printStackTrace();
// }
// });
// //正文
// i[0] = 1;
// map2.forEach((docid, imageid) -> {
// ImageFileManager imageFileManager = new ImageFileManager();
// imageFileManager.getImageFileInfoById(Util.getIntValue(imageid));
// InputStream inputStream = imageFileManager.getInputStream();
// //中文路径/中文文件名
// String imageFileName = filePath + File.separator + zlcdir + File.separator + fjFile + i[0] +"_"+ imageFileManager.getImageFileName();
// imageFileName = codeUtf8(imageFileName);
// try {
// File file = saveInputStreamToFile(inputStream, imageFileName);
// String s = callApi(Url, file);
// System.out.println(s);
// JSONObject result = JSONObject.parseObject(s);
// String errorcode = result.getString("errorcode");
// if ("0".equals(errorcode)) {
// JSONObject data = result.getJSONObject("data");
// String destFileName = data.getString("destFileName");
// String viewUrl = data.getString("viewUrl");
// downloadFile(viewUrl, filePath + File.separator + zlcdir + File.separator + fjFile + i[0] +"_"+ imageFileManager.getImageFileName() + ".pdf");
// }
// i[0]++;
// } catch (IOException e) {
// e.printStackTrace();
// }
// });
// //
// out.print(JSONObject.toJSONString(requestDocid));
// out.print(JSONObject.toJSONString(requestDocid1));
// for (String docid : docids) {
// out.print("删除了"+docids);
// out.print("<br/>");
// deleteDocByid(docid);
// }
// //--------------------------------------------------------------------
RequestService requestService = new RequestService();
RequestInfo requestInfo = requestService.getRequest(Util.getIntValue(requestid), 100);
String logFile = getSignLog(requestid, lzxxdir, requestInfo.getCreatorid() + requestInfo.getDescription());
String s = callApi(Url, new File(logFile));
System.out.println(s);
JSONObject result = JSONObject.parseObject(s);
String errorcode = result.getString("errorcode");
if ("0".equals(errorcode)) {
JSONObject data = result.getJSONObject("data");
String destFileName = data.getString("destFileName");
String viewUrl = data.getString("viewUrl");
downloadFile(viewUrl, logFile + ".pdf");
}
ZipUtil.zip(filePath,filePath+"test.zip");
%>
<%!
/**
* 生成子流程承办单
* @param requestid 主流程id
*/
private List<String> generaSubRequestFormPdf(String requestid) {
Map<String, String> subRequest = getSubRequest(requestid);
List<String> docids = new ArrayList<>();
for (String wfid : subRequest.keySet()) {
RequestService requestService = new RequestService();
RequestInfo requestInfo = requestService.getRequest(Util.getIntValue(subRequest.get(wfid)), 100);
WorkflowToDocCus workflowToDoc = new WorkflowToDocCus();
requestInfo.setLastoperator("1");
requestInfo.setDescription(getWfNameByid(requestInfo.getWorkflowid()) + "-" + requestInfo.getDescription());
List<String> subDocids = workflowToDoc.execute(requestInfo, 1);
docids.addAll(subDocids);
}
return docids;
}
/**
* 生成主流程承办单
* @param requestid
*/
private static List<String> generaRequestFormPdf(String requestid) {
RequestService requestService = new RequestService();
RequestInfo requestInfo = requestService.getRequest(Util.getIntValue(requestid), 100);
WorkflowToDocCus workflowToDoc = new WorkflowToDocCus();
requestInfo.setLastoperator("1");
requestInfo.setDescription(getWfNameByid(requestInfo.getWorkflowid()) + "-" + requestInfo.getDescription());
return workflowToDoc.execute(requestInfo, 0);
}
/***
* 封装数据
* @param requestid
* @return
*/
public Map<String, String> getRequestByid(String requestid) {
HashMap<String, String> record = new HashMap<>();
String sql = "select * from formtable_main_30 where requestid = ?";
RecordSet rs = new RecordSet();
rs.executeQuery(sql, requestid);
if (rs.next()) {
String fj = Util.null2String(rs.getString("fj"));
String zwkbj = Util.null2String(rs.getString("zwkbj")); // 正文可编辑字段
record.put("fj", fj);
record.put("zwkbj", zwkbj);
}
return record;
}
/**
* 将gbk转为UTF-8,创建ISO-8859-1编码的字符串
* ISO-8859-1编码是一个字节对应一个字符因此不会使最后一个字节错误。
* @param text
* @return
*/
public static String codeUtf8(String text) {
String ISOtext = null;
ISOtext = new String(text.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
return new String(ISOtext.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
}
/**
* 获取当前流程下的所有子流程(最大5层)
* @param requestid
* @return
*/
public static Map<String, String> getSubRequest(String requestid) {
HashMap<String, String> records = new HashMap<>();
RecordSet rs = new RecordSet();
String ids = requestid;
for (int i = 0; i < 5; i++) {
ArrayList<String> idList = new ArrayList<>();
String sql = "select requestid , workflowid from workflow_requestbase where mainrequestid in ( " + ids + " )";
rs.executeQuery(sql);
while (rs.next()) {
String subrequestid = Util.null2String(rs.getString("requestid"));
String workflowid = Util.null2String(rs.getString("workflowid"));
idList.add(subrequestid);
// 使用map自动去重,一种流程类型只取一个requestid
records.put(workflowid, subrequestid);
}
ids = String.join(",", idList);
}
// String sql = "select requestid from workflow_requestbase where mainrequestid = ?";
// RecordSet rs = new RecordSet();
// rs.executeQuery(sql, requestid);
// if (rs.next()) {
// String subrequestid = Util.null2String(rs.getString("requestid"));
// records.add(subrequestid);
// }
return records;
}
/**
* 获取imageid Map<imageid,docid>
* @param ids
* @return
*/
public static Map<String, String> getFileIdByDocId(String ids) {
HashMap<String, String> records = new HashMap<>();
String sql = "select docid,df.imagefileid imgid from docimagefile df left join imagefile imf on df.imagefileid = imf.imagefileid where DOCID in (" + ids + ")";
RecordSet recordSet = new RecordSet();
recordSet.execute(sql);
while (recordSet.next()) {
String docid = Util.null2String(recordSet.getString("docid"));
String imgid = Util.null2String(recordSet.getString("imgid"));
records.put(docid, imgid);
}
return records;
}
/**
* 将InputStream写入本地文件
* @param inputStream 输入流
* @param localFilePath 本地文件路径
* @throws IOException 如果发生输入输出异常
* @return
*/
public static File saveInputStreamToFile(InputStream inputStream, String localFilePath) throws IOException {
File targetFile = new File(localFilePath);
// 确保目标文件的父目录存在
File parentDir = targetFile.getParentFile();
if (parentDir != null && !parentDir.exists()) {
parentDir.mkdirs();
}
// 使用try-with-resources语句确保流的正确关闭
try (InputStream in = inputStream;
OutputStream outputStream = new FileOutputStream(targetFile)) {
int read;
byte[] bytes = new byte[1024];
while ((read = in.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
} // 自动关闭 in 和 outputStream
return targetFile;
}
/**
* 根据链接下载文件
* @param fileURL
* @param saveDir
*/
public static void downloadFile(String fileURL, String saveDir) {
try {
saveDir = codeUtf8(saveDir);
URL url = new URL(fileURL);
File file = new File(saveDir);
FileUtils.copyURLToFile(url, file);
System.out.println("Download completed successfully.");
} catch (IOException e) {
e.printStackTrace();
System.out.println("Download failed.");
}
}
/**
* 调用永中接口
* @param BASE_URL
* @param file
* @return
* @throws IOException
*/
public static String callApi(String BASE_URL, File file) throws IOException {
OkHttpClient client = new OkHttpClient();
// Debugging: Check if the file exists and can be read
if (file.exists() && file.canRead()) {
System.out.println("File exists and is readable. File path: " + file.getAbsolutePath());
} else {
System.out.println("File does not exist or cannot be read. File path: " + file.getAbsolutePath());
}
RequestBody requestBody = null;
String code = getCodeByFileType(file.getName());
String fileName = URLEncoder.encode(file.getName(), StandardCharsets.UTF_8.toString());
try {
requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("convertType", code)
.addFormDataPart("file", fileName, RequestBody.create(MediaType.parse("application/zip"), file))
.build();
} catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
Request request = new Request.Builder()
.url(BASE_URL)
.post(requestBody)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}
}
/**
* 根据文件类型获取转为pdf的编码
* @param FileName
* @return
*/
public static String getCodeByFileType(String FileName) {
String extName = FileName.substring(FileName.lastIndexOf(".") + 1);
String convertType = "";
if (extName.matches("(doc|dot|dtd|docx|docm|dotx|ppt|pptx|ppsx|potx|xlsx|xlsm|wps|dps|et|wpt|xls|xlc|xlt|xlm|xlw|DOC|DOT|DTD|DOCX|DOCM|DOTX|PPT|PPTX|PPSX|POTX|XLSX|XLSM|WPS|DPS|ET|WPT|XLS|XLC|XLT|XLM|XLW)")) {
convertType = "3";
} else if (extName.matches("(ofd|OFD)")) {
convertType = "57";
} else if (extName.matches("(GIF|JPEG|JPG|BMP|PNG|gif|jpeg|jpg|bmp|png)")) {
convertType = "44";
} else if (extName.matches("(PDF|pdf)")) {
convertType = "34";
}
return convertType;
}
/***
* 获取关键词
* @param id
* @return
*/
public static String getKeyword(String id) {
String sql = "select * from uf_test where id = ?";
RecordSet rs = new RecordSet();
rs.executeQuery(sql, id);
rs.next();
return Util.null2String(rs.getString("label"));
}
/**
* 删除文档及附件,调用移到回收站,再从回收站删除
* @param docid
*/
public static void deleteDocByid(String docid) {
DocRecycleManager docRecycleManager = new DocRecycleManager();
User user = new User(1);
docRecycleManager.moveDocToRecycle(user.getUID(), user.getLogintype(), Util.getIntValue(docid), "127.0.0.1");
docRecycleManager.deleteDocFromRecycle(user.getUID(), user.getLogintype(), weaver.general.Util.getIntValue(docid), "127.0.0.1");
}
/**
* 获取流程类型名称
* @param wfid
* @return
*/
public static String getWfNameByid(String wfid) {
String sql = "select WORKFLOWNAME from WORKFLOW_BASE where id = ?";
RecordSet rs = new RecordSet();
rs.executeQuery(sql, wfid);
rs.next();
return Util.null2String(rs.getString("WORKFLOWNAME"));
}
/**
* 生成流转意见 意见
* @param params
* @param user
* @return
*/
public static String getSignLog(String requestid, String dirName, String requestName) {
HashMap<String, Object> params = new HashMap<>();
params.put("requestid", requestid);
params.put("desremark", "all");
params.put("pageSize", "50");
params.put("isfirst", "true");
// params.put("request", request);
Map<String, Object> data = getSignLogCmd(params, new User(1));
System.out.println("data===>");
System.out.println(JSONObject.toJSONString(data));
Map<String, Object> datas = (Map<String, Object>) data.get("datas");
List<Map.Entry<String, Object>> entries = new ArrayList<>(datas.entrySet());
entries.sort(new Comparator<Map.Entry<String, Object>>() {
@Override
public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
Integer key1 = Util.getIntValue((Util.null2String(o1.getKey())).replace("key", ""));
Integer key2 = Util.getIntValue((Util.null2String(o2.getKey())).replace("key", ""));
return key1 - key2;
}
}); // 自然顺序
ArrayList<Map<String, String>> results = new ArrayList<>();
// out.print(JSONObject.toJSONString(entries));
for (Map.Entry<String, Object> entry : entries) {
Map value = (Map) entry.getValue();
List<Map<String, Object>> list = (List) value.get("list");
for (Map<String, Object> item : list) {
String operator = (String) item.get("operator");
String operatorid = (String) item.get("operatorid");
String operatortype = (String) item.get("operatortype");
String operatedate = (String) item.get("operatedate");
String nodename = (String) value.get("nodename");
HashMap<String, String> itemMap = new HashMap<>();
itemMap.put("operator", operator);
itemMap.put("operatorid", operatorid);
itemMap.put("operatortype", operatortype);
itemMap.put("operatedate", operatedate);
itemMap.put("nodename", nodename);
results.add(itemMap);
}
}
System.out.println("results===>");
System.out.println(JSONObject.toJSONString(results));
try {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("results", results); // 将用户列表添加到数据映射中
dataMap.put("name", requestName); // 将用户列表添加到数据映射中
// 加载模板并填充数据
String templatePath = "/opt/weaver/filesys/template.docx"; // 模板文件路径
System.out.println(dataMap);
XWPFDocument doc = WordExportUtil.exportWord07(templatePath, dataMap);
// 导出Word文档
String outputPath = "/opt/weaver/filesys/test" + File.separator + dirName + File.separator + requestName + ".docx"; // 输出文件路径
outputPath = codeUtf8(outputPath);
File targetFile = new File(outputPath);
// 确保目标文件的父目录存在
File parentDir = targetFile.getParentFile();
if (parentDir != null && !parentDir.exists()) {
parentDir.mkdirs();
}
FileOutputStream fos = new FileOutputStream(outputPath);
doc.write(fos);
fos.close();
return outputPath;
} catch (Exception e) {
System.out.println("errorerrorerror");
System.out.println(e.getMessage());
e.printStackTrace();
}
return requestid;
}
public static Map<String, Object> getSignLogCmd(Map<String, Object> params, User user) {
Map<String, Object> result = new HashMap<String, Object>();
RequestAuthenticationService authService = new RequestAuthenticationService();
authService.setUser(user);
long date1 = new Date().getTime();
try {
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
int pageSize = Util.getIntValue(Util.null2String(params.get("pageSize")), 30);
int desrequestid = Util.getIntValue(Util.null2String(params.get("desrequestid")), 0);
String isfirst = Util.null2String(params.get("isfirst"));
String isurger = Util.null2String(params.get("isurger"));
String desremark = Util.null2String(params.get("desremark"));
int desremarkIndex = desremark.indexOf("_");
boolean isAdSearch = false;//是否有过滤条件
if (desremarkIndex > -1) {
isAdSearch = true;
desremark = desremark.substring(0, desremarkIndex);
}
String parameter = Util.null2String(params.get("parameter"));
int selectedNode = Util.getIntValue(Util.null2String(params.get("selectedNode")), -1);//选中的节点
String selectedOperator = Util.null2String(params.get("selectedOperator"));//选中的操作者
int requestid = Util.getIntValue(Util.null2String(params.get("requestid")), 0);
int workflowid = -1;
rs.executeQuery("select workflowid from workflow_requestbase where requestid=" + requestid);
if (rs.next())
workflowid = Util.getIntValue(rs.getString("workflowid"));
// 将json字符串转换成jsonObject
int currentMaxId = 0;
int currentMinId = 0;
int currentId = 0;
int currentId2 = 0;
int lastNodeId = 0;
String viewlogids = "";
int index = 0;
try {
if (!"true".equals(isfirst)) {
Map<String, String> parameterMap = JSON.parseObject(parameter, Map.class);//Weibo类在下边定义
currentMaxId = Util.getIntValue(parameterMap.get("currentMaxId"), 0);
currentMinId = Util.getIntValue(parameterMap.get("currentMinId"), 0);
String currentId12 = Util.null2String(parameterMap.get("currentId"));
if (currentId12.contains("_")) {
String[] currentId12Arr = currentId12.split("_");
currentId = Util.getIntValue(currentId12Arr[0]);
currentId2 = Util.getIntValue(currentId12Arr[1]);
} else {
currentId = Util.getIntValue(currentId12);
}
viewlogids = Util.null2String(parameterMap.get("viewlogids"));
index = Util.getIntValue(parameterMap.get("nodeindex"), 0);
lastNodeId = Util.getIntValue(parameterMap.get("lastNodeId"), 0);
}
} catch (Exception e) {
e.printStackTrace();
}
Map<String, String> putpara = new HashMap<String, String>();
Monitor monitor = new Monitor();
// String joinStr = ("oracle".equalsIgnoreCase(rs.getDBType()) || "mysql".equalsIgnoreCase(rs.getDBType())) ? " left join " : " left hash join ";
String joinStr = " left join ";
// if (isurger.equals("true") || monitor.hasMonitor(requestid+"", user.getUID() + "")) {
// StringBuffer sqlsb = new StringBuffer();
// sqlsb.append(" select a.id,a.nodeid, ");
// sqlsb.append(" b.nodename, ");
// sqlsb.append(" a.userid, ");
// sqlsb.append(" a.isremark, ");
// sqlsb.append(" a.lastisremark, ");
// sqlsb.append(" a.usertype, ");
// sqlsb.append(" a.agentorbyagentid, ");
// sqlsb.append(" a.agenttype, ");
// sqlsb.append(" a.receivedate, ");
// sqlsb.append(" a.receivetime, ");
// sqlsb.append(" a.operatedate, ");
// sqlsb.append(" a.operatetime, ");
// sqlsb.append(" a.viewtype, ");
// sqlsb.append(" a.nodetype ");
// sqlsb.append(" ,a.operator ");
// sqlsb.append(" from (SELECT distinct top ").append(pageSize);
// sqlsb.append(" o.id, " );
// sqlsb.append(" o.requestid, " );
// sqlsb.append(" o.userid, ");
// sqlsb.append(" o.workflowid, ");
// sqlsb.append(" o.workflowtype, ");
// sqlsb.append(" o.isremark, ");
// sqlsb.append(" o.lastisremark, ");
// sqlsb.append(" o.usertype, ");
// sqlsb.append(" o.nodeid, ");
// sqlsb.append(" o.agentorbyagentid, ");
// sqlsb.append(" o.agenttype, ");
// sqlsb.append(" o.receivedate, ");
// sqlsb.append(" o.receivetime, ");
// sqlsb.append(" o.viewtype, ");
// sqlsb.append(" o.iscomplete, ");
// sqlsb.append(" o.operatedate, ");
// sqlsb.append(" o.operatetime, ");
// sqlsb.append(" nodetype ");
// sqlsb.append(" ,wr.operator ");
// sqlsb.append(" FROM workflow_currentoperator o ");
//
// sqlsb.append(" left join workflow_requestlog wr");
// sqlsb.append(" on wr.requestid=o.requestid");
// sqlsb.append(" and wr.nodeid=o.nodeid");
// sqlsb.append(" and wr.operator = o.userid");
// sqlsb.append(" and wr.logtype <> '1'");
//
// sqlsb.append(" , workflow_flownode ");
//
// sqlsb.append(" where o.nodeid = ");
// sqlsb.append(" workflow_flownode.nodeid ");
// if(desremark ==1){//1:已提交
// sqlsb.append(" AND o.isremark='2' AND wr.operator IS NOT null ");
// }else if(desremark == 2){//2未提交
// sqlsb.append(" and ((o.isremark = '0' and (o.takisremark is null or o.takisremark=0)) or o.isremark in ('1','5','7','8','9') )");
// }else if(desremark == 3){//3:已查看
// sqlsb.append(" and (((o.isremark = '2' AND wr.operator IS NULL) or o.isremark in ('0','1','4','5','7','8','9')) AND o.viewtype IN (-1,-2)) ");
// }else if(desremark == 4){//4:未查看
// sqlsb.append(" AND o.viewtype = 0 ");
// }
// sqlsb.append(" and o.id > ").append(currentId);
// sqlsb.append(" and o.requestid = " + requestid + ") a, ");
// sqlsb.append(" workflow_nodebase b ");
// sqlsb.append(" where a.nodeid = b.id ");
// sqlsb.append(" and a.requestid = " + requestid + " ");
// sqlsb.append(" and a.agenttype <> 1 ");
// sqlsb.append(" order by a.id ");
// //System.out.println("20170309 =====> sqlsb.toString() = "+sqlsb.toString());
// rs.executeSql(sqlsb.toString());
//
// } else {
// 处理相关流程的查看权限
// if ("".equals(viewlogids)) {
// viewlogids = this.getViewLogids();
// }
StringBuffer sqlsb = new StringBuffer();
if ("sqlserver".equalsIgnoreCase(rs.getDBType())) { // sqlserver 排序提到这里
sqlsb.append(" select top ").append(pageSize).append(" a.id,a.nodeid, ");
} else {
sqlsb.append(" select a.id,a.nodeid, ");
}
sqlsb.append("(CASE WHEN a.nodeid < -1 THEN (SELECT nodename FROM workflow_freenode t WHERE t.id = a.nodeid) ELSE (SELECT nodename FROM workflow_nodebase t1 WHERE t1.id = a.nodeid) END) AS nodename,");
sqlsb.append(" a.userid, ");
sqlsb.append(" a.isremark, ");
sqlsb.append(" a.preisremark, ");
sqlsb.append(" a.lastisremark, ");
sqlsb.append(" a.usertype, ");
sqlsb.append(" a.agentorbyagentid, ");
sqlsb.append(" a.agenttype, ");
sqlsb.append(" a.receivedate, ");
sqlsb.append(" a.receivetime, ");
sqlsb.append(" a.operatedate, ");
sqlsb.append(" a.operatetime, ");
sqlsb.append(" a.processuser, ");
sqlsb.append(" a.viewtype, ");
sqlsb.append(" a.nodetype ");
sqlsb.append(" ,a.operator ");
sqlsb.append(" ,a.tab ");
//if("true".equals(isfirst)){
/*if("oracle".equals(rs.getDBType()) || "mysql".equals(rs.getDBType())){
sqlsb.append(" from (SELECT distinct ");
}else{
sqlsb.append(" from (SELECT distinct top ").append(pageSize); // sqlserver排序提到外层查询
}*/
sqlsb.append(" from (SELECT distinct ");
// }else{
// sqlsb.append(" from (SELECT distinct ");
// }
sqlsb.append(" o.id, ");
sqlsb.append(" o.requestid, ");
sqlsb.append(" o.userid, ");
sqlsb.append(" o.workflowid, ");
sqlsb.append(" o.workflowtype, ");
//workflow_otheroperator表中isremark为字符型这里转下字符
if (rs.getDBType().toLowerCase().equals("oracle") || rs.getDBType().toLowerCase().equals("postgresql")) {
sqlsb.append(" to_char(o.isremark) as isremark, ");
sqlsb.append(" to_char(o.preisremark) AS preisremark, ");
sqlsb.append(" to_char(o.lastisremark) AS lastisremark, ");
} else if (rs.getDBType().toLowerCase().equals("mysql")) {
sqlsb.append(" o.isremark, ");
sqlsb.append(" o.preisremark, ");
sqlsb.append(" o.lastisremark, ");
} else {
sqlsb.append(" cast(o.isremark as varchar) as isremark, ");
sqlsb.append(" cast(o.preisremark as varchar) as preisremark, ");
sqlsb.append(" cast(o.lastisremark as varchar) as lastisremark, ");
}
sqlsb.append(" o.usertype, ");
sqlsb.append(" o.nodeid, ");
sqlsb.append(" o.agentorbyagentid, ");
sqlsb.append(" o.agenttype, ");
sqlsb.append(" o.receivedate, ");
sqlsb.append(" o.receivetime, ");
sqlsb.append(" o.viewtype, ");
sqlsb.append(" o.iscomplete, ");
sqlsb.append(" o.operatedate, ");
sqlsb.append(" o.operatetime, ");
sqlsb.append(" o.processuser, ");
sqlsb.append("(case when o.nodeid < -1 then (select nodetype from workflow_freenode t where t.id = o.nodeid) else (select nodetype from workflow_flownode t1 where t1.nodeid = o.nodeid) end) as nodetype ");
sqlsb.append(" ,wr.operator ");
sqlsb.append(" ,1 as tab ");
sqlsb.append(" FROM workflow_currentoperator o ");
sqlsb.append(" " + joinStr + " workflow_requestlog wr");
sqlsb.append(" on wr.requestid=o.requestid");
sqlsb.append(" and wr.nodeid=o.nodeid");
sqlsb.append(" and wr.operator = o.userid");
sqlsb.append(" and wr.logtype <> '1'");
sqlsb.append(" and o.operatedate = wr.operatedate");
sqlsb.append(" and o.operatetime = wr.operatetime");//再通过时间关联一下,防止流程状态操作状态显示错误
sqlsb.append(" where o.id > ").append(currentId);
if ("submit".equals(desremark)) {//1:已提交----isremark等于4preisremark=11实际对应已提交数据
sqlsb.append(" AND (o.isremark='2' or (o.isremark=4 and o.preisremark=11)) AND (wr.operator IS NOT null or o.userid = o.processuser)");
} else if ("nosubmit".equals(desremark)) {//2未提交
sqlsb.append(" AND( (o.isremark != '2' AND o.isremark != '4') OR (o.isremark = '4' AND o.viewtype = 0 and o.preisremark != 11) ) ");
} else if ("view".equals(desremark)) {//3:已查看
sqlsb.append(" and ((o.isremark = '2' AND wr.operator IS NULL) or o.isremark in ('0','1','5','7','8','9','11') or (o.isremark=4 and o.preisremark!=11)) AND o.viewtype IN (-1,-2) ");
} else if ("noview".equals(desremark)) {//4:未查看
sqlsb.append(" AND o.viewtype=0 AND (o.isremark IN ('0','1','5','7','8','9','11') or (o.isremark = '2' AND wr.operator IS NULL) or (o.isremark=4 and o.preisremark!=11)) ");
}
sqlsb.append(" and o.requestid = " + requestid);
sqlsb.append(" union ");
sqlsb.append(" SELECT DISTINCT ");
sqlsb.append(" o.id, ");
sqlsb.append(" o.requestid, ");
sqlsb.append(" o.userid, ");
sqlsb.append(" o.workflowid, ");
sqlsb.append(" 0 as workflowtype, ");
sqlsb.append(" o.isremark, ");
sqlsb.append(" o.isremark as preisremark, ");
sqlsb.append(" o.isremark as lastisremark, ");
sqlsb.append(" o.usertype, ");
sqlsb.append(" o.nodeid, ");
sqlsb.append(" 0 as agentorbyagentid, ");
sqlsb.append(" '0' as agenttype, ");
sqlsb.append(" o.receivedate, ");
sqlsb.append(" o.receivetime, ");
sqlsb.append(" o.viewtype, ");
sqlsb.append(" 1 as iscomplete, ");
sqlsb.append(" o.operatedate, ");
sqlsb.append(" o.operatetime, ");
sqlsb.append(" wr.operator as processuser, ");
sqlsb.append("(case when o.nodeid < -1 then (select nodetype from workflow_freenode t where t.id = o.nodeid) else (select nodetype from workflow_flownode t1 where t1.nodeid = o.nodeid) end) as nodetype, ");
sqlsb.append(" wr.operator ");
sqlsb.append(" ,2 as tab ");
sqlsb.append(" FROM workflow_otheroperator o LEFT JOIN workflow_requestlog wr ON wr.requestid = o.requestid ");
sqlsb.append(" AND wr.nodeid = o.nodeid ");
sqlsb.append(" AND wr.operator = o.userid ");
sqlsb.append(" AND wr.logtype <> '1' ");
sqlsb.append(" WHERE o.requestid = " + requestid + " ");
sqlsb.append(" and o.id > ").append(currentId2);
sqlsb.append(" ) a ");
sqlsb.append(" where a.requestid = " + requestid + " ");
sqlsb.append(" and a.agenttype <> 1 ");
if (!"".equals(viewlogids)) {
sqlsb.append(" and a.nodeid in (" + viewlogids + ") ");
}
if (selectedNode != -1) {
sqlsb.append(" AND a.nodeid = " + selectedNode + " ");
}
if (!"".equals(selectedOperator)) {
sqlsb.append(" AND a.userid = " + selectedOperator + " ");
}
WorkflowConfigComInfo configComInfo = new WorkflowConfigComInfo();
boolean showdelFreeNodeInfo = "1".equals(configComInfo.getValue("showdelete_freenode_info"));
sqlsb.append(" and (a.nodeid > -1 or (a.nodeid < -1 and exists (select id from workflow_freenode where id = a.nodeid and requestid = " + requestid + (showdelFreeNodeInfo ? "" : " and groupid > 0 ") + " ))) ");
//搜索时返回状态
if (isAdSearch && "true".equals(isfirst)) {
rs.executeQuery("select count(id) as count from (" + sqlsb.toString().replace("top " + pageSize, "") + ") t");
result.put("countTime", new Date().getTime() - date1);
if (rs.next()) {
result.put("count", Util.null2String(rs.getString("count")));
}
}
sqlsb.append(" order by a.receivedate, a.receivetime,a.id , a.nodetype");
//System.out.println("20170309 =====> sqlsb.toString() = "+sqlsb.toString());
if ("oracle".equals(rs.getDBType())) { //必须排序后再限制rownum
String sql_oracle = sqlsb.toString();
sqlsb.setLength(0);
sqlsb.append("select * from (" + sql_oracle + ") where rownum < ").append(pageSize);
} else if ("mysql".equals(rs.getDBType())) {
sqlsb.append(" LIMIT " + pageSize);
} else if ("postgresql".equals(rs.getDBType())) {
sqlsb.append(" LIMIT " + pageSize);
}
if (requestid > 0) {
rs.executeSql(sqlsb.toString());
}
result.put("dataTime", new Date().getTime() - date1);
// }
List<Map<String, String>> statuslist = new ArrayList<Map<String, String>>();
int tmpnodeid = 0;
while (rs.next()) {
int tab = rs.getInt("tab");
if (tab == 1) {
currentId = rs.getInt("id");
} else {
currentId2 = rs.getInt("id");
}
tmpnodeid = rs.getInt("nodeid");
String tmpnodename = rs.getString("nodename");
Map<String, String> nodekv = null;
if (statuslist.size() == 0) {
currentMinId = currentId;
nodekv = new HashMap<String, String>();
statuslist.add(nodekv);
} else {
Map<String, String> temmap = statuslist.get(statuslist.size() - 1);
int tnodeid = Util.getIntValue(temmap.get("nodeid"), 0);
if (tnodeid == tmpnodeid) {
nodekv = temmap;
} else {
currentMinId = currentId;
nodekv = new HashMap<String, String>();
statuslist.add(nodekv);
}
}
nodekv.put("nodeid", tmpnodeid + "");
nodekv.put("nodename", tmpnodename + "");
}
int nextlistcount = 0;
int nextsubmitCount = 0;
int nextviewCount = 0;
int nextnoviewCount = 0;
if ("all".equals(desremark) && !isAdSearch) {
currentMaxId = currentId;
String maxsql = " select a.id,a.nodeid from workflow_currentoperator a where a.id > " + currentId + " and a.requestid=" + requestid + " order by a.id ,a.receivedate, a.receivetime";
rs1.executeSql(maxsql);
while (rs1.next()) {
int currentid = rs1.getInt("id");
int currentnodeid = rs1.getInt("nodeid");
if (currentnodeid == tmpnodeid) {
currentMaxId = currentid;
} else {
break;
}
}
String listcountsql = " select count(id) num from workflow_currentoperator where id > " + currentId + " and id <= " + currentMaxId + " and requestid=" + requestid + " and nodeid=" + tmpnodeid + " and agenttype <> 1 and usertype <> 1 ";
//String submitCountsql = " select count(id) num from workflow_currentoperator where id > "+currentId +" and id <= "+currentMaxId+" and requestid="+requestid +" and nodeid="+tmpnodeid +" and agenttype <> 1 and usertype <> 1 and isremark = 2 and exists (select 1 from workflow_requestlog where workflow_requestlog.requestid = workflow_currentoperator.requestid and workflow_currentoperator.nodeid=workflow_requestlog.nodeid and workflow_requestlog.operator=workflow_currentoperator.userid )";
//String viewCountsql = " select count(id) num from workflow_currentoperator where id > "+currentId +" and id <= "+currentMaxId+" and requestid="+requestid +" and nodeid="+tmpnodeid + " and agenttype <> 1 and usertype <> 1 and (viewtype = -1 or viewtype=-2) and ((isremark = '0' and (takisremark is null or takisremark=0)) or isremark in ('1','5','7','8','9') or (isremark = '2' and not exists (select 1 from workflow_requestlog where workflow_requestlog.requestid = workflow_currentoperator.requestid and workflow_currentoperator.nodeid=workflow_requestlog.nodeid and (workflow_requestlog.operator is null or workflow_requestlog.operator ='' )))) ";
//String noviewCountsql = " select count(id) num from workflow_currentoperator where id > "+currentId +" and id <= "+currentMaxId+" and requestid="+requestid +" and nodeid="+tmpnodeid + " and agenttype <> 1 and usertype <> 1 AND viewtype=0 AND (isremark IN ('0','1','4','5','7','8','9') or (isremark = '2' and not exists (select 1 from workflow_requestlog where workflow_requestlog.requestid = workflow_currentoperator.requestid and workflow_currentoperator.nodeid=workflow_requestlog.nodeid and (workflow_requestlog.operator is null or workflow_requestlog.operator ='' )))) ";
String submitCountsql = " SELECT Count(distinct wc.id) num FROM workflow_currentoperator wc " + joinStr + " workflow_requestlog wr ON wr.requestid = wc.requestid AND wc.nodeid = wr.nodeid AND wr.operator = wc.userid WHERE wc.id > " + currentId + " AND wc.id <= " + currentMaxId + " AND wc.requestid = " + requestid + " AND wc.nodeid = " + tmpnodeid + " AND wc.agenttype <> 1 AND wc.usertype <> 1 AND wc.isremark = 2 and wr.operator is NOT null ";
String viewCountsql = " SELECT Count(distinct wc.id) num FROM workflow_currentoperator wc " + joinStr + " workflow_requestlog wr ON wr.requestid = wc.requestid AND wc.nodeid = wr.nodeid AND wr.operator = wc.userid WHERE wc.id > " + currentId + " AND wc.id <= " + currentMaxId + " AND wc.requestid = " + requestid + " AND wc.nodeid = " + tmpnodeid + " AND wc.agenttype <> 1 AND wc.usertype <> 1 AND wc.viewtype IN (-1,-2) and ((wc.isremark = '2' AND wr.operator IS NULL) or wc.isremark in ('0','1','4','5','7','8','9')) ";
String noviewCountsql = " SELECT Count(distinct wc.id) num FROM workflow_currentoperator wc " + joinStr + " workflow_requestlog wr ON wr.requestid = wc.requestid AND wc.nodeid = wr.nodeid AND wr.operator = wc.userid WHERE wc.id > " + currentId + " AND wc.id <= " + currentMaxId + " AND wc.requestid = " + requestid + " AND wc.nodeid = " + tmpnodeid + " AND wc.agenttype <> 1 AND wc.usertype <> 1 AND wc.viewtype=0 AND (wc.isremark IN ('0','1','4','5','7','8','9','11') or (wc.isremark = '2' and wr.operator is null )) ";
rs1.executeSql(listcountsql);
while (rs1.next()) {
nextlistcount = rs1.getInt("num");
}
rs1.executeSql(submitCountsql);
while (rs1.next()) {
nextsubmitCount = rs1.getInt("num");
}
rs1.executeSql(viewCountsql);
while (rs1.next()) {
nextviewCount = rs1.getInt("num");
}
rs1.executeSql(noviewCountsql);
while (rs1.next()) {
nextnoviewCount = rs1.getInt("num");
}
}
Map<String, Object> allstatusmap = new HashMap<String, Object>();
Map<String, Object> submitstatusmap = new HashMap<String, Object>();
Map<String, Object> nosubmitstatusmap = new HashMap<String, Object>();
Map<String, Object> viewstatusmap = new HashMap<String, Object>();
Map<String, Object> noviewstatusmap = new HashMap<String, Object>();
//提交节点信息--滚动加载到当前currentoperator对应最大id
//数字统计转到新接口count中
ResourceComInfo resourceComInfo = new ResourceComInfo();
CustomerInfoComInfo customerInfoComInfo = new CustomerInfoComInfo();
Map<String, Object> all_nodemap = new HashMap<String, Object>();
Map<String, Object> submit_nodemap = new HashMap<String, Object>();
Map<String, Object> nosubmit_nodemap = new HashMap<String, Object>();
Map<String, Object> view_nodemap = new HashMap<String, Object>();
Map<String, Object> noview_nodemap = new HashMap<String, Object>();
rs.beforFirst();
int currentnum = 0;
for (Iterator<Map<String, String>> it = statuslist.iterator(); it.hasNext(); index++) {
Map<String, String> nodekv = it.next();
int fnodeid = Util.getIntValue(nodekv.get("nodeid"));
String namename = nodekv.get("nodename");
int submitCount = 0;
int viewCount = 0;
int noviewCount = 0;
int listcount = 0;
if ("false".equals(isfirst) && currentnum == 0 && lastNodeId == fnodeid) {
index -= 1;
}
if (tmpnodeid == fnodeid && currentnum == (statuslist.size() - 1)) {
submitCount = nextsubmitCount;
viewCount = nextviewCount;
noviewCount = nextnoviewCount;
listcount = nextlistcount;
}
currentnum++;
Map<String, Object> all_nodemap_in = new HashMap<String, Object>();
all_nodemap_in.put("nodeid", fnodeid);
all_nodemap_in.put("nodename", namename);
Map<String, Object> submit_nodemap_in = new HashMap<String, Object>();
Map<String, Object> nosubmit_nodemap_in = new HashMap<String, Object>();
Map<String, Object> view_nodemap_in = new HashMap<String, Object>();
Map<String, Object> noview_nodemap_in = new HashMap<String, Object>();
List<Map<String, String>> nodeallstatuslist = new ArrayList<Map<String, String>>();
List<Map<String, String>> nodesubmitstatuslist = new ArrayList<Map<String, String>>();
List<Map<String, String>> nodenosubmitstatuslist = new ArrayList<Map<String, String>>();
List<Map<String, String>> nodeviewstatuslist = new ArrayList<Map<String, String>>();
List<Map<String, String>> nodenoviewstatuslist = new ArrayList<Map<String, String>>();
if ("submit".equals(desremark)) {//1:已提交
//提交节点信息
submit_nodemap_in.putAll(all_nodemap_in);
submitstatusmap.put("datas", submit_nodemap);
submit_nodemap.put("key" + index, submit_nodemap_in);
submit_nodemap_in.put("list", nodesubmitstatuslist);
} else if ("nosubmit".equals(desremark)) {//2未提交
nosubmit_nodemap_in.putAll(all_nodemap_in);
nosubmitstatusmap.put("datas", nosubmit_nodemap);
nosubmit_nodemap.put("key" + index, nosubmit_nodemap_in);
nosubmit_nodemap_in.put("list", nodenosubmitstatuslist);
} else if ("view".equals(desremark)) {//3:已查看
view_nodemap_in.putAll(all_nodemap_in);
viewstatusmap.put("datas", view_nodemap);
view_nodemap.put("key" + index, view_nodemap_in);
view_nodemap_in.put("list", nodeviewstatuslist);
} else if ("noview".equals(desremark)) {//4:未查看
noview_nodemap_in.putAll(all_nodemap_in);
noviewstatusmap.put("datas", noview_nodemap);
noview_nodemap.put("key" + index, noview_nodemap_in);
noview_nodemap_in.put("list", nodenoviewstatuslist);
} else {
//所有节点信息
allstatusmap.put("datas", all_nodemap);
all_nodemap.put("key" + index, all_nodemap_in);
all_nodemap_in.put("list", nodeallstatuslist);
}
boolean islight = false;
RobotNodeServiceBiz robotNodeServiceBiz = new RobotNodeServiceBiz();
while (rs.next()) {
int tmpnodeid1 = rs.getInt("nodeid");
if (tmpnodeid1 != fnodeid) {
rs.previous();
break;
}
//String tmpnodename = rs.getString("nodename");
int tmpcurrid = rs.getInt("id");
String tmpuserid = rs.getString("userid");
String tmpisremark = Util.null2String(rs.getString("isremark"));
if (tmpisremark.equals("")) {
tmpisremark = Util.null2String(rs.getString("lastisremark"));
}
int tmpusertype = rs.getInt("usertype");
String tmpagentorbyagentid = rs.getString("agentorbyagentid");
int tmpagenttype = rs.getInt("agenttype");
String tmpreceivedate = rs.getString("receivedate");
String tmpreceivetime = rs.getString("receivetime");
String tmpoperatedate = rs.getString("operatedate");
String tmpoperatetime = rs.getString("operatetime");
String viewtype = rs.getString("viewtype");
String nodetype = rs.getString("nodetype");
int preisremark = rs.getInt("preisremark");
String processuser = rs.getString("processuser");
boolean flags = false;
String tmpIntervel = "";
// 如果tmpisremark=2 判断时候在日志表里有该人确定是否是由非会签得到的isremark=2
String operator = rs.getString("operator");
if (operator != null && !"".equals(operator)) {
flags = true;
}
if ((tmpisremark.equals("2") || (tmpisremark.equals("4") && preisremark == 11)) && tmpoperatedate != null && !tmpoperatedate.equals("")) {
tmpIntervel = TimeUtil.timeInterval2(tmpreceivedate + " " + tmpreceivetime, tmpoperatedate + " " + tmpoperatetime, user.getLanguage());
}
islight = !islight;
Map<String, String> _statusmap = new HashMap<String, String>();
// 操作人
String _statususername = "";
String _operatorid = "";
String _beagentid = "";
String _beagentname = "";
String _operatortype = "0";
if (tmpusertype == 0) {
_operatorid = tmpuserid;
_statususername = ServiceUtil.convertChar(resourceComInfo.getResourcename(tmpuserid));
if (tmpagenttype == 2) { //代理情况
_beagentid = tmpagentorbyagentid;
_beagentname = ServiceUtil.convertChar(resourceComInfo.getResourcename(tmpagentorbyagentid));
}
_statusmap.put("operatorImg", resourceComInfo.getMessagerUrls(tmpuserid));
_statusmap.put("operatorImgDefName", _statususername);
} else if (RobotNodeBiz.operatortype.equals(tmpusertype + "")) {
_statususername = Util.formatMultiLang(robotNodeServiceBiz.getRobotNodeSet(tmpnodeid1).getOperatorName());
_operatorid = tmpuserid;
_operatortype = "2";
} else {
_operatorid = tmpuserid;
_operatortype = "1";
_statususername = ServiceUtil.convertChar(customerInfoComInfo.getCustomerInfoname(tmpuserid));
}
// 查看状态 1:未查看, 2:以查看, 3已提交 4:暂停, 5:撤销, 6:启用 7:已查阅 8:退回 9:被撤回
int _statusCode = 0;
if (preisremark != 8 && (tmpisremark.equals("2") || (tmpisremark.equals("4") && preisremark == 11)) && (flags || tmpuserid.equals(processuser))) {
_statusCode = 3;
submitCount++;
if ("4".equals(nodetype) && preisremark == 0) {
_statusCode = 7;
}
} else if (tmpisremark.equals("0") || tmpisremark.equals("1") || tmpisremark.equals("5") || tmpisremark.equals("4") || tmpisremark.equals("8") || tmpisremark.equals("9") || tmpisremark.equals("7") || tmpisremark.equals("11") || (tmpisremark.equals("2") && !flags)) {
if (viewtype.equals("-2") || (viewtype.equals("-1") && !tmpoperatedate.equals(""))) {
_statusCode = 2;
viewCount++;
} else {
_statusCode = 1;
noviewCount++;
}
} else if ("s".equals(tmpisremark)) {
_statusCode = 4;
} else if ("r".equals(tmpisremark)) {
_statusCode = 6;
} else if ("c".equals(tmpisremark)) {
_statusCode = 5;
} else if (preisremark == 8 && viewtype.equals("-2") && tmpisremark.equals("2")) {
_statusCode = 2;
viewCount++;
}
RecordSet recordSet = new RecordSet();
recordSet.executeQuery("select operatetype from workflow_currentoperator where id=?", tmpcurrid);
if (recordSet.next()) {
int operatetype = recordSet.getInt(1);
if (operatetype == 3) {//退回
_statusCode = 8;
} else if (operatetype == 4) {//被撤回
_statusCode = 9;
}
}
listcount++;
if ("view".equals(desremark)) {//3:已查看
if (processuser.equals(tmpuserid) && ("2".equals(tmpisremark) || "4".equals(tmpisremark))) {
listcount--;
}
}
String _receivedate = "";
String _operatedate = "";
String _intervel = "";
if (!tmpisremark.equals("s") && !tmpisremark.equals("c") && !tmpisremark.equals("r")) {
_receivedate = Util.toScreen(tmpreceivedate, user.getLanguage()) + " " + Util.toScreen(tmpreceivetime, user.getLanguage());
}
_operatedate = Util.toScreen(tmpoperatedate, user.getLanguage()) + " " + Util.toScreen(tmpoperatetime, user.getLanguage());
_intervel = Util.toScreen(tmpIntervel, user.getLanguage());
_statusmap.put("statuscode", String.valueOf(_statusCode));
_statusmap.put("operator", _statususername);
_statusmap.put("receivedate", _receivedate);
_statusmap.put("operatedate", _operatedate);
_statusmap.put("intervel", _intervel);
_statusmap.put("operatorid", _operatorid);
_statusmap.put("operatortype", _operatortype);
_statusmap.put("beagentid", _beagentid);
_statusmap.put("beagentname", _beagentname);
_statusmap.put("nodetype", nodetype);
//所有节点
nodeallstatuslist.add(_statusmap);
//查看状态 1:未查看, 2:以查看, 3已提交 4:暂停, 5:撤销, 6:启用 7:已查阅
if ((tmpisremark.equals("2") || (tmpisremark.equals("4") && preisremark == 11)) && (flags || tmpuserid.equals(processuser))) {
nodesubmitstatuslist.add(_statusmap);
} else if (tmpisremark.equals("0") || tmpisremark.equals("1") || tmpisremark.equals("5") || tmpisremark.equals("4") || tmpisremark.equals("8") || tmpisremark.equals("9") || tmpisremark.equals("7") || tmpisremark.equals("11") || (tmpisremark.equals("2") && !flags)) {
if (viewtype.equals("-2") || (viewtype.equals("-1") && !tmpoperatedate.equals(""))) {
nodeviewstatuslist.add(_statusmap);
} else if (viewtype.equals("0")) {
nodenoviewstatuslist.add(_statusmap);
}
}
if ((!tmpisremark.equals("2") && !tmpisremark.equals("4")) || (tmpisremark.equals("4") && viewtype.equals("0"))) {
if (!tmpisremark.equals("s") && !tmpisremark.equals("s") && !tmpisremark.equals("c") && !tmpisremark.equals("r")) {
nodenosubmitstatuslist.add(_statusmap);
}
}
}
//--已提交、已查看、未查看
all_nodemap_in.put("submitCount", submitCount);//--已提交
all_nodemap_in.put("viewCount", viewCount);//--已查看
all_nodemap_in.put("noviewCount", noviewCount);//--未查看
if ("submit".equals(desremark)) {//1:已提交
//提交节点信息
submit_nodemap_in.put("listcount", listcount);
result.putAll(submitstatusmap);
} else if ("nosubmit".equals(desremark)) {//2未提交
nosubmit_nodemap_in.put("listcount", listcount);
result.putAll(nosubmitstatusmap);
} else if ("view".equals(desremark)) {//3:已查看
view_nodemap_in.put("listcount", listcount);
result.putAll(viewstatusmap);
} else if ("noview".equals(desremark)) {//4:未查看
noview_nodemap_in.put("listcount", listcount);
result.putAll(noviewstatusmap);
} else {
//所有节点信息
all_nodemap_in.put("listcount", listcount);
result.putAll(allstatusmap);
}
lastNodeId = fnodeid;
}
// if(maxid == currentMaxId){
// isfinish = 1;
// }
putpara.put("nodeindex", index + "");
putpara.put("currentMaxId", currentMaxId + "");
putpara.put("currentMinId", currentMinId + "");
putpara.put("currentId", currentId + "_" + currentId2);
putpara.put("lastNodeId", lastNodeId + "");
putpara.put("viewlogids", viewlogids + "");
result.put("parameter", putpara);
result.put("otherTime", new Date().getTime() - date1);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
%>