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.

1792 lines
92 KiB
Java

package com.engine.custom.archives.service;
import com.dcfs.fts.common.error.FtpException;
import com.engine.custom.hg.util.HgUtils;
import com.icbc.api.internal.apache.http.impl.cookie.S;
import lombok.extern.slf4j.Slf4j;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.nio.charset.StandardCharsets;
import java.io.*;
import java.util.*;
1 year ago
import org.apache.commons.lang.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.StringUtil;
import weaver.general.Util;
import com.alibaba.fastjson.JSONObject;
import weaver.file.ImageFileManager;
import java.net.URL;
import org.apache.commons.io.FileUtils;
import okhttp3.*;
import java.net.URLEncoder;
import weaver.soa.workflow.request.RequestService;
import weaver.soa.workflow.request.RequestInfo;
import com.engine.custom.archives.action.WorkflowToDocCus;
import weaver.docs.docs.DocRecycleManager;
import weaver.hrm.User;
import com.api.workflow.service.RequestAuthenticationService;
import weaver.workflow.workflow.WorkflowConfigComInfo;
import weaver.hrm.resource.ResourceComInfo;
import weaver.crm.Maint.CustomerInfoComInfo;
import com.alibaba.fastjson.JSON;
import weaver.workflow.monitor.Monitor;
import com.engine.workflow.biz.RobotNode.RobotNodeServiceBiz;
import com.api.workflow.util.ServiceUtil;
import com.engine.workflow.biz.RobotNode.RobotNodeBiz;
import weaver.general.TimeUtil;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import cn.afterturn.easypoi.word.WordExportUtil;
import cn.hutool.core.util.ZipUtil;
import freemarker.template.Configuration;
import freemarker.template.TemplateExceptionHandler;
import freemarker.template.Template;
import java.nio.charset.StandardCharsets;
@Slf4j
public class PushArchivesCornService {
private static String filePath;
private static String Url;
private static String templatePath; // 模板文件路径
private static final String zwdir = "正文";
private static final String fjdir = "附件";
private static final String cbddir = "承办单";
private static final String zlcdir = "承办单" + File.separator + "子流程";
private static final String lzxxdir = "流转信息";
private static final String fjFile = "附件";
public void setProp(Map<String, String> param) {
filePath = Util.null2String(param.get("filePath"));
Url = Util.null2String(param.get("Url"));
templatePath = Util.null2String(param.get("templatePath"));
}
public void pushArchives(Map<String, String> param) {
log.info("PushArchivesCorn====Begin========{}", param);
try {
1 year ago
ZipUtil zipUtil = new ZipUtil();
Date date = getDate();
1 year ago
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String format = dateFormat.format(date);
SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm");
// 获取当前时间的第一秒
String firstSecond = yyyyMMddHHmmss.format(getFirstSecondOfDate(date));
// 获取当前时间的最后一秒
String lastSecond = yyyyMMddHHmmss.format(getLastSecondOfDate(date));
String requestid = Util.null2String(param.get("requestid"));
log.error("requestid:{}", requestid);
String context = extracted(requestid);
log.error("context:{}", context);
File file = crFile(filePath + "/togd_" + new SimpleDateFormat("yyyyMMdd000000").format(date));
log.error("textfile:{}", file.getAbsolutePath());
writeToTxt(file.getPath(), file.getName(), context, true);
File txtzip = new File(filePath + File.separator + "togd_" + new SimpleDateFormat("yyyyMMdd000000").format(date) + ".zip");
log.error("textZipFile:{}", txtzip.getAbsolutePath());
OutputStream outputStream = new FileOutputStream(txtzip);
File writename = new File(file.getPath() + "/" + file.getName() + ".txt");
com.engine.custom.hg.util.ZipUtil.filesToZip(writename, outputStream, writename.getName());
log.error("writename:{}",writename.getName());
String s = HgUtils.putFile(txtzip.getAbsolutePath(), txtzip.getName());
updateRecord(requestid, s);
log.error("textZip:{}", s);
// HgUtils.putFile("");
} catch (Exception e) {
log.info("PushArchivesCorn====Exception========{}", e.getMessage());
e.printStackTrace();
}
}
private void updateRecord(String requestids, String s) {
String sql = "update uf_pushArchivesLog set esbtxtml = ? where request in ( " + requestids + " )";
RecordSet recordSet = new RecordSet();
recordSet.executeUpdate(sql, s);
}
private String extracted(String requestid) throws FtpException, IOException {
Map<String, String> requesData = getRequestByid(requestid);
log.info("requesData:{}", requesData);
String fj = Util.null2String(requesData.get("fj"));
String zwkbj = Util.null2String(requesData.get("zwkbj"));
//增加签字意见中的附件到附件文件夹中
Map<String, String> signFiles = getSignFiles(requestid);
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);
List<String> zwFileName = new ArrayList<>();
List<String> fjFileName = new ArrayList<>();
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 + requestid + File.separator + fjdir + File.separator + imageFileManager.getImageFileName();
fjFileName.add(imageFileManager.getImageFileName());
log.info("生成附件路径:{}", imageFileName);
imageFileName = codeUtf8(imageFileName);
try {
File file = saveInputStreamToFile(inputStream, imageFileName);
String jsonStr = callApi(Url, file);
log.error("永中接口返回数据:{}", jsonStr);
JSONObject result = JSONObject.parseObject(jsonStr);
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 + requestid + File.separator + fjdir + File.separator + imageFileManager.getImageFileName() + ".pdf");
}
} catch (IOException e) {
e.printStackTrace();
}
});
//签字意见附件
signFiles.forEach((docid, imageid) -> {
ImageFileManager imageFileManager = new ImageFileManager();
imageFileManager.getImageFileInfoById(Util.getIntValue(imageid));
InputStream inputStream = imageFileManager.getInputStream();
//中文路径/中文文件名
String imageFileName = filePath + File.separator + requestid + File.separator + fjdir + File.separator + imageFileManager.getImageFileName();
fjFileName.add(imageFileManager.getImageFileName());
log.info("生成签字意见附件路径:{}", imageFileName);
imageFileName = codeUtf8(imageFileName);
try {
File file = saveInputStreamToFile(inputStream, imageFileName);
String jsonStr = callApi(Url, file);
log.error("永中接口返回数据:{}", jsonStr);
JSONObject result = JSONObject.parseObject(jsonStr);
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 + requestid + 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();
zwFileName.add(imageFileManager.getImageFileName());
//中文路径/中文文件名
String imageFileName = filePath + File.separator + requestid + File.separator + zwdir + File.separator + imageFileManager.getImageFileName();
log.info("生成正文路径:{}", imageFileName);
imageFileName = codeUtf8(imageFileName);
try {
File file = saveInputStreamToFile(inputStream, imageFileName);
String jsonStr = callApi(Url, file);
log.error("永中接口返回:{}", jsonStr);
JSONObject result = JSONObject.parseObject(jsonStr);
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 + requestid + File.separator + zwdir + File.separator + imageFileManager.getImageFileName() + ".pdf");
}
} catch (IOException e) {
e.printStackTrace();
}
});
//开始承办单 先获取主流程的承办单
List<String> requestDocid = generaRequestFormPdf(requestid);
1 year ago
// 1.去掉生成子流程承办单
// List<String> subRequestDocid = generaSubRequestFormPdf(requestid);
Map<String, String> reqDocMap = getFileIdByDocId(String.join(",", requestDocid));
1 year ago
// 2.去掉生成子流程承办单
// Map<String, String> subReqDocMap = getFileIdByDocId(String.join(",", subRequestDocid));
log.error("reqDocMap:{}", JSONObject.toJSONString(reqDocMap));
1 year ago
//log.error("subReqDocMap:{}", JSONObject.toJSONString(subReqDocMap));
docids.addAll(requestDocid);
1 year ago
// 3.去掉生成子流程承办单
// docids.addAll(subRequestDocid);
//附件
reqDocMap.forEach((docid, imageid) -> {
ImageFileManager imageFileManager = new ImageFileManager();
imageFileManager.getImageFileInfoById(Util.getIntValue(imageid));
InputStream inputStream = imageFileManager.getInputStream();
//中文路径/中文文件名
String imageFileName = filePath + File.separator + requestid + File.separator + cbddir + File.separator + fjFile + i[0] + "_" + imageFileManager.getImageFileName();
log.info("主流程承办单路径:{}", imageFileName);
imageFileName = codeUtf8(imageFileName);
try {
File file = saveInputStreamToFile(inputStream, imageFileName);
String jsonStr = callApi(Url, file);
log.error("永中接口返回:{}", jsonStr);
JSONObject result = JSONObject.parseObject(jsonStr);
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 + requestid + File.separator + cbddir + File.separator + fjFile + i[0] + "_" + imageFileManager.getImageFileName() + ".pdf");
}
i[0]++;
} catch (IOException e) {
e.printStackTrace();
}
});
//正文
1 year ago
i[0] = 1;
1 year ago
// 4.去掉生成子流程承办单
// subReqDocMap.forEach((docid, imageid) -> {
// ImageFileManager imageFileManager = new ImageFileManager();
// imageFileManager.getImageFileInfoById(Util.getIntValue(imageid));
// InputStream inputStream = imageFileManager.getInputStream();
// //中文路径/中文文件名
// String imageFileName = filePath + File.separator + requestid + File.separator + zlcdir + File.separator + fjFile + i[0] + "_" + (imageFileManager.getImageFileName().contains("-")?imageFileManager.getImageFileName().split("\\-")[1]:imageFileManager.getImageFileName());
// imageFileName = codeUtf8(imageFileName);
// log.info("子流程承办单路径:{}", imageFileName);
// try {
// File file = saveInputStreamToFile(inputStream, imageFileName);
// String jsonStr = callApi(Url, file);
// log.error("永中接口返回:{}", jsonStr);
// JSONObject result = JSONObject.parseObject(jsonStr);
// 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 + requestid + File.separator + zlcdir + File.separator + fjFile + i[0] + "_" + (imageFileManager.getImageFileName().contains("-")?imageFileManager.getImageFileName().split("\\-")[1]:imageFileManager.getImageFileName() )+ ".pdf");
// }
// i[0]++;
// } catch (IOException e) {
// e.printStackTrace();
// }
// });
log.error(JSONObject.toJSONString(requestDocid));
1 year ago
// log.error(JSONObject.toJSONString(subRequestDocid));
for (String docid : docids) {
log.error("删除了" + docid);
deleteDocByid(docid);
}
//--------------------------------------------------------------------
RequestService requestService = new RequestService();
RequestInfo requestInfo = requestService.getRequest(Util.getIntValue(requestid), 100);
String logFile = getSignLog(requestid, cbddir+File.separator+lzxxdir, requestInfo.getCreatorid() + requestInfo.getDescription());
String s = callApi(Url, new File(logFile));
log.error(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");
}
String zipName = filePath + File.separator + requestid + ".zip";
ZipUtil.zip(filePath + File.separator + requestid, zipName);
log.error("zipName:{}", zipName);
String ftpFilePath = HgUtils.putFile(zipName, requestid + ".zip");
log.error("ftpFilePath:{}", ftpFilePath);
String ftpFilePathNew = HgUtils.putFile(zipName, "test" + File.separator + requestid + ".zip");
log.error("ftpFilePathNew:{}", ftpFilePathNew);
String context = getContext(requestid, requesData, requestid + ".zip", zwFileName, fjFileName);
insertRecord(requestid, context, ftpFilePath);
log.error("context:{}", context);
return context;
}
private Map <String, String> getSignFiles(String requestid) {
RecordSet recordSet = new RecordSet();
ArrayList<String> docids = new ArrayList<>();
List<String> subRequest = getSubRequestIds(requestid);
String sql = "select * from WORKFLOW_REQUESTLOG where REQUESTID in ( " +
String.join(",",subRequest) + " )" +
" and (annexdocids is not null or annexdocids <> '')";
recordSet.executeQuery(sql);
while (recordSet.next()){
String annexdocids = Util.null2String(recordSet.getString("annexdocids")) ;
if (annexdocids.length()>0){
if (annexdocids.contains(",")){
// annexdocids.split(",")
docids.addAll(Arrays.asList(annexdocids.split(",")));
}else {
docids.add(annexdocids);
}
}
}
return getFileIdByDocId(String.join(",",docids)) ;
}
private void insertRecord(String requestid, String context, String ftpFilePath) {
String sql = "insert into uf_pushArchivesLog (request ,content,esbwjml) VALUES (?,?,?)";
RecordSet recordSet = new RecordSet();
recordSet.executeUpdate(sql, requestid, context, ftpFilePath);
}
// 获取指定日期的第一秒
public static Date getFirstSecondOfDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
// 获取指定日期的最后一秒
public static Date getLastSecondOfDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTime();
}
/**
*
*
* @param requestid id
*/
private List<String> generaSubRequestFormPdf(String requestid) {
log.error("generaSubRequestFormPdf,requestid:{}",requestid);
Map<String, String> subRequest = getSubRequest(requestid);
for (String s : subRequest.keySet()) {
requestid = subRequest.get(s);
break;
}
List<String> docids = new ArrayList<>();
// for (String wfid : subRequest.keySet()) {
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());
log.error("generaSubRequestFormPdf,requestInfo:{}",JSON.toJSONString(requestInfo));
List<String> subDocids = workflowToDoc.execute(requestInfo, 1);
docids.addAll(subDocids);
log.error("generaSubRequestFormPdf,requestInfo:{}",JSON.toJSONString(subDocids));
// }
return docids;
}
/**
*
*
* @param requestid
*/
private static List<String> generaRequestFormPdf(String requestid) {
log.error("generaRequestFormPdf,requestid:{}",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());
log.error("generaRequestFormPdf,requestInfo:{}",JSON.toJSONString(requestInfo));
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 = ?";
String reqsql = "select REQUESTNAME from WORKFLOW_REQUESTBASE 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);
record.put("zwyyglgwmk", Util.null2String(rs.getString("zwyyglgwmk")));
record.put("lwh", Util.null2String(rs.getString("lwh")));
record.put("mj", Util.null2String(rs.getString("mj")));
record.put("lwrq", Util.null2String(rs.getString("lwrq")));
record.put("swrq", Util.null2String(rs.getString("swrq")));
record.put("blqx", Util.null2String(rs.getString("blqx")));
record.put("sfdb", Util.null2String(rs.getString("sfdb")));
record.put("wjlx", Util.null2String(rs.getString("wjlx")));
record.put("fssj", Util.null2String(rs.getString("fssj")));
record.put("gdh", Util.null2String(rs.getString("gdh")));
record.put("swh", Util.null2String(rs.getString("swh")));
record.put("ngbm", Util.null2String(rs.getString("ngbm")));
record.put("ngr", Util.null2String(rs.getString("ngr")));
record.put("ngrq", Util.null2String(rs.getString("ngrq")));
record.put("swlx", Util.null2String(rs.getString("swlx")));
record.put("jghwt", Util.null2String(rs.getString("jghwt")));
record.put("lwdwmc", Util.null2String(rs.getString("lwdwmc")));
record.put("bgqx", Util.null2String(rs.getString("bgqx")));
record.put("ys", Util.null2String(rs.getString("ys")));
record.put("wz", Util.null2String(rs.getString("wz")));
record.put("lb", Util.null2String(rs.getString("lb")));
record.put("bz", Util.null2String(rs.getString("bz")));
record.put("yffbm", Util.null2String(rs.getString("yffbm")));
record.put("ffbmb", Util.null2String(rs.getString("ffbmb")));
record.put("yffbm", Util.null2String(rs.getString("yffbm")));
}
rs.executeQuery(reqsql, requestid);
if (rs.next()) {
record.put("REQUESTNAME", Util.null2String(rs.getString("REQUESTNAME")));
}
return record;
}
private String getContext(String requestid, Map<String, String> requesData, String zipName, List<String> zwFileName, List<String> fjFileName) {
StringBuilder context = new StringBuilder();
try {
String swrq = Util.null2String(requesData.get("swrq"));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date = LocalDate.parse(swrq, formatter);
int year = date.getYear();
context.append(year).append("|");
String jghwt = Util.null2String(requesData.get("jghwt"));
context.append(jghwt).append("|");
String swh = Util.null2String(requesData.get("swh"));
context.append(swh).append("|");
String requestname = Util.null2String(requesData.get("REQUESTNAME"));
context.append(requestname).append("|");
String lwdwmc = Util.null2String(requesData.get("lwdwmc")); //5 责任者 -> 来文单位
context.append(lwdwmc).append("|");
String bgqx = Util.null2String(requesData.get("bgqx")); //6 保管期限 -> 保管期限
context.append(bgqx).append("|");
1 year ago
String lwrq = Util.null2String(requesData.get("lwrq")); //7 日期 -> 原发文日期
context.append(lwrq).append("|");
String ys = Util.null2String(requesData.get("ys")); //8 页数 -> 页数
context.append(ys).append("|");
String wz = Util.null2String(requesData.get("wz")); //9 文种 -> 文种
context.append(wz).append("|");
String ngbm = Util.null2String(requesData.get("ngbm"));
String[] deptData = getDeptNameAndCode(ngbm);
context.append(deptData[0]).append("|"); //10 行编号 -> 拟稿部门
context.append(deptData[1]).append("|"); //11 行名称
context.append("").append("|"); // 12 保管期限编号
context.append("").append("|"); // 13 保管期限及编号
context.append("").append("|"); // 14 是否开放
context.append("").append("|"); // 15 互见号
String lb = Util.null2String(requesData.get("lb"));
context.append(lb).append("|"); //16 类别 -> 类别
//TODO
String xgbm = Util.null2String(getAssociatedDepts(requesData));
context.append(xgbm).append("|"); //17 相关部门 -> 流经部门
String lwh = Util.null2String(requesData.get("lwh"));// 18 收文号 -> 来文文号
context.append(lwh).append("|");
String fs = "";
context.append(fs).append("|"); // 19 份数 -> 份数
String bz = Util.null2String(requesData.get("bz"));
context.append(bz).append("|"); // 20 备注 -> 备注
String yywh = Util.null2String(requesData.get("yywh"));
context.append(yywh).append("|"); // 21 引用文号 -> 引用文号
String wjlx = Util.null2String(requesData.get("wjlx"));
context.append(wjlx).append("|"); // 22 文件类型 -> 空
String fwlx = Util.null2String(requesData.get("fwlx"));
context.append(fwlx).append("|"); // 23 文件类型 -> 空
String f = Util.null2String(requesData.get("f"));
context.append(f).append("|"); // 24 发 -> 空
String ngr = Util.null2String(requesData.get("ngr"));
context.append(new User(Util.getIntValue(ngr)).getLoginid()).append("|"); // 25 拟稿人 -> 拟稿人
context.append(deptData[1]).append("|"); // 26 拟稿部门 -> 拟稿部门名称
context.append("收文").append("|"); // 27 公文类型 -> "收文"
//TODO
context.append(getAssociatedPersons(requestid)).append("|"); // 28 相关人员 -> 参与人员
context.append("智慧OA").append("|"); // 29 数据来源 -> 数据来源
context.append(year).append("|"); // 30 形成年度 -> 年份
context.append(String.join("&&", zwFileName)).append("|"); // 31 正文名称
context.append(String.join("&&", fjFileName)).append("|"); // 32 附件名称
context.append(requestid).append("|"); // 33 主键
context.append("").append("|"); // 34 关联主键
context.append("").append("|"); // 35 被关联主键
context.append(zipName);// 36 压缩包名称
} catch (Exception e) {
e.printStackTrace();
log.error("getContextError:{}", e.getMessage());
}
return context.toString();
}
private String getAssociatedDepts(Map<String, String> requesData) {
HashSet<String> records = new HashSet<>();
records.addAll(Arrays.asList(Util.null2String(requesData.get("ngbm")).split(",")));
records.addAll(Arrays.asList(Util.null2String(requesData.get("ffbm")).split(",")));
records.addAll(Arrays.asList(Util.null2String(requesData.get("yffbm")).split(",")));
records.addAll(Arrays.asList(Util.null2String(requesData.get("ffbmb")).split(",")));
records.addAll(Arrays.asList(Util.null2String(requesData.get("zfbm")).split(",")));
return String.join("&&", records);
}
private String getAssociatedPersons(String requestid) {
List<String> subRequest = getSubRequestIds(requestid);
String sql = "select distinct b.LOGINID loginid from WORKFLOW_REQUESTLOG a left join HRMRESOURCE b " +
" on a.OPERATOR = b.ID " +
" where a.OPERATOR is not null and a.OPERATOR != 1 and a.REQUESTID in ( " + String.join(",", subRequest) + " )";
RecordSet recordSet = new RecordSet();
HashSet<String> set = new HashSet<>();
recordSet.executeQuery(sql);
while (recordSet.next()) {
String loginid = Util.null2String(recordSet.getString("loginid"));
if (StringUtil.isEmpty(loginid)) {
continue;
}
//处理下子账号
if (loginid.length() > 8) {
loginid = loginid.substring(0, 8);
}
set.add(loginid);
}
return String.join("&&", set);
}
private String[] getFileName(String docids) {
return new String[0];
}
private String[] getDeptNameAndCode(String ngbm) {
String sql = "select DEPARTMENTNAME , DAPYBH from hrmdepartment a left join hrmdepartmentdefined b " +
" on a.ID = b.DEPTID " +
" where a.ID = ? ";
RecordSet recordSet = new RecordSet();
recordSet.executeQuery(sql, ngbm);
recordSet.next();
return new String[]{recordSet.getString("DAPYBH"), recordSet.getString("DEPARTMENTNAME")};
}
/**
* gbkUTF-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;
}
public static List<String> getSubRequestIds(String requestid) {
List<String> reqids = new ArrayList<>();
RecordSet rs = new RecordSet();
String ids = requestid;
reqids.add(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 + " )";
log.error("subrequestSql:{}", sql);
rs.executeQuery(sql);
while (rs.next()) {
String subrequestid = Util.null2String(rs.getString("requestid"));
// String workflowid = Util.null2String(rs.getString("workflowid"));
idList.add(subrequestid);
reqids.add(subrequestid);
// 使用map自动去重,一种流程类型只取一个requestid
}
ids = String.join(",", idList);
if (ids.length() == 0) {
break;
}
}
// 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 reqids;
}
/**
* 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
* @return
* @throws IOException
*/
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) {
log.info("文件下载地址:{}", fileURL);
log.info("文件保存地址:{}", saveDir);
try {
saveDir = codeUtf8(saveDir);
URL url = new URL(fileURL);
File file = new File(saveDir);
FileUtils.copyURLToFile(url, file);
log.error("Download completed successfully.");
} catch (IOException e) {
e.printStackTrace();
log.error("Download failed.");
}
}
/**
*
*
* @param BASE_URL
* @param file
* @return
* @throws IOException
*/
public static String callApi(String BASE_URL, File file) {
OkHttpClient client = new OkHttpClient();
// Debugging: Check if the file exists and can be read
if (file.exists() && file.canRead()) {
log.error("File exists and is readable. File path: " + file.getAbsolutePath());
} else {
log.error("File does not exist or cannot be read. File path: " + file.getAbsolutePath());
}
RequestBody requestBody = null;
String code = getCodeByFileType(file.getName());
String fileName = null;
try {
fileName = URLEncoder.encode(file.getName(), StandardCharsets.UTF_8.toString());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
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) {
log.error(e.getMessage());
e.printStackTrace();
}
Request request = new Request.Builder()
.url(BASE_URL)
.post(requestBody)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
/**
* 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 requestid
* @param dirName
* @param requestName
* @return
*/
public static String getSignLog(String requestid, String dirName, String requestName) {
List<String> subRequestIds = getSubRequestIds(requestid);
ArrayList<Map<String, Object>> lists = new ArrayList<>();
1 year ago
List<String> autoInitNodeIds = getAutoInitNodeIds(String.join(",", subRequestIds));
RecordSet recordSet = new RecordSet();
String getWFNameByReqId = "select WORKFLOWNAME from WORKFLOW_REQUESTBASE req " +
" left join WORKFLOW_BASE wf on req.WORKFLOWID = wf.ID " +
" where REQUESTID = ? ";
for (String reqid : subRequestIds) {
1 year ago
recordSet.executeQuery(getWFNameByReqId,reqid);
String wfName = "";
if (recordSet.next()){
wfName = recordSet.getString("WORKFLOWNAME");
}
HashMap<String, Object> params = new HashMap<>();
params.put("requestid", reqid);
params.put("desremark", "all");
1 year ago
params.put("pageSize", "999");
params.put("isfirst", "true");
// params.put("request", request);
Map<String, Object> data = getSignLogCmd(params, new User(1));
log.info("流转信息:{}", data);
log.error(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<>();
// log.error(JSONObject.toJSONString(entries));
for (Map.Entry<String, Object> entry : entries) {
Map value = (Map) entry.getValue();
List<Map<String, Object>> list = (List) value.get("list");
1 year ago
String nodeid = Util.null2String(value.get("nodeid")) ;
if (autoInitNodeIds.contains(nodeid)){
continue;
}
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");
1 year ago
String receivedate = (String) item.get("receivedate");
String nodename = (String) value.get("nodename");
1 year ago
String statuscode = (String) item.get("statuscode");
HashMap<String, String> itemMap = new HashMap<>();
itemMap.put("operator", operator);
itemMap.put("operatorid", operatorid);
itemMap.put("operatortype", operatortype);
1 year ago
itemMap.put("operatedate", StringUtil.isEmpty(operatedate) ? receivedate : operatedate);
itemMap.put("nodename", nodename);
itemMap.put("nodename", nodename);
itemMap.put("requestName", (String) value.get("requestName"));
1 year ago
//1:未查看, 2:以查看, 3已提交 4:暂停, 5:撤销, 6:启用 7:已查阅 8:退回 9:被撤回
String action = "";
if ("1".equals(statuscode)){
action = "未查看";
}else if("2".equals(statuscode)){
action = "已查看";
}else if("3".equals(statuscode)){
action = "已提交";
}else if("4".equals(statuscode)){
action = "暂停";
}else if("5".equals(statuscode)){
action = "撤销";
}else if("6".equals(statuscode)){
action = "启用";
}else if("7".equals(statuscode)){
action = "已查阅";
}else if("8".equals(statuscode)){
action = "退回";
}else if("9".equals(statuscode)){
action = "被撤回";
}
itemMap.put("statuscode", "3".equals(statuscode) ? "提交" : "查看" );
itemMap.put("action", action );
results.add(itemMap);
}
}
log.error("排序结果:{}", JSONObject.toJSONString(results));
HashMap<String, Object> records = new HashMap<>();
records.put("results",results);
String requestName1 = (String) data.get("requestName");
1 year ago
records.put("requestName","【"+wfName+"】-"+requestName1);
log.error("requestName1:{}", requestName1);
log.error("records:{}", JSONObject.toJSONString(records));
lists.add(records);
}
try {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("lists", lists); // 将用户列表添加到数据映射中
log.error("dataMap:{}", JSONObject.toJSONString(dataMap));
String TemplatePath = "/opt/weaver/filesys/";
//String TemplateName = "html模版.ftl";
String TemplateName = "temp.ftl";
// 加载模板并填充数据
log.error("模板路径:{}", templatePath);
// 导出Word文档
String outputPath = filePath + File.separator + requestid + File.separator + dirName + File.separator + requestName + ".docx"; // 输出文件路径
log.error("生成文件路径:{}", templatePath);
return generate(TemplatePath, TemplateName, dataMap, outputPath);
} catch (Exception e) {
log.error("errorerrorerror");
log.error(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;
String requestName = "";
rs.executeQuery("select workflowid , REQUESTNAMENEW from workflow_requestbase where requestid=" + requestid);
if (rs.next()) {
workflowid = Util.getIntValue(rs.getString("workflowid"));
requestName = Util.null2String(rs.getString("REQUESTNAMENEW"));
}
// 将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 ");
// //log.error("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");
//log.error("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());
}
1 year ago
_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);
1 year ago
//所有节点
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 + "");
putpara.put("requestName", requestName);
result.put("parameter", putpara);
result.put("otherTime", new Date().getTime() - date1);
result.put("requestName", requestName);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
//创建文件夹
public File crFile(String pathName) {
// bean.writeLog("创建文件夹==="+pathName);
File file = new File(pathName);
try {
// bean.writeLog("创建文件夹==="+file.exists());
if (!file.exists()) {
file.mkdir();
}
} catch (Exception E) {
// bean.writeLog("Exception"+E.getMessage());
}
return file;
}
public void writeToTxt(String path, String title, String content, Boolean append) {
try {
/* 写入Txt文件 */
File mkdirsName = new File(path);
// 相对路径
if (!mkdirsName.exists()) {
mkdirsName.mkdirs();
}
File writename = new File(path + "/" + title + ".txt");
// 存在即根据操作系统添加换行符
if (!writename.exists() && append == true) {
// 创建新文件
writename.createNewFile();
} else if ("del".equals(content) && append == false) {
writename.delete();
return;
} else if (!writename.exists() && append == false) {
writename.createNewFile();
} else {
String osName = System.getProperties().getProperty("os.name");
System.out.println(osName);
if ("Linux".equals(osName)) {
content = "\r" + content;
} else {
content = "\r\n" + content;
}
}
// 如果是在原有基础上写入则append属性为true默认为false
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(writename, append), StandardCharsets.UTF_8));
// 写入TXT
out.write(content);
// 把缓存区内容压入文件
out.flush();
// 最后记得关闭文件
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private Date getDate() {
Date date = new Date();
// if (day != null) {
// try {
// date = new SimpleDateFormat("yyyyMMdd").parse(day);
// } catch (ParseException e) {
// // writeLog("时间格式错误,重新发送指定日期失败");
// e.printStackTrace();
// }
// }
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//把日期往后增加一天.整数往后推,负数往前移动(1:表示明天、-1表示昨天0表示今天)
calendar.add(Calendar.DATE, -1);
date = calendar.getTime();
return date;
}
/**
* @param TemplatePath
* @param TemplateName
* @param root
* @param GenerateFilename
* @throws Exception
*/
public static String generate(String TemplatePath, String TemplateName, Map<String, Object> root, String GenerateFilename) throws Exception {
Configuration cfg = new Configuration();
//指定模板文件的来源目录
cfg.setDirectoryForTemplateLoading(new File(TemplatePath));
cfg.setDefaultEncoding("UTF-8");
//设置错误的显示方式(日志)
//在生产系统中TemplateExceptionHandler.RETHROW_HANDLER 默认值
//在开发HTML模板期间TemplateExceptionHandler.HTML_DEBUG_HANDLER
//在开发非HTML模板期间TemplateExceptionHandler.DEBUG_HANDLER
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
//获取模板文件
Template temp = cfg.getTemplate(TemplateName);
//合并模板和数据模型
// File file = new File(TemplatePath + "new-built");
//如果文件夹不存在,则创建文件夹
// if (!file.exists()) {
// //file.mkdirs();//多级目录
// file.mkdir();//只创建一级目录
// }
//Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(TemplatePath + "new-built/" + GenerateFilename)));//输出文件
// FileWriter out = new FileWriter(TemplatePath + "new-built/" + GenerateFilename);
//Writer out = new OutputStreamWriter(System.out);//输出控制台
//StringWriter out = new StringWriter();//输出为字符串,可作为接口动态返回
File file = new File(GenerateFilename);
File parentDir = file.getParentFile();
// 检查父目录是否存在
if (!parentDir.exists()) {
// 父目录不存在,创建所有必需的父目录
boolean dirsCreated = parentDir.mkdirs();
if (dirsCreated) {
System.out.println("所有必需的父目录已创建.");
} else {
System.out.println("无法创建目录,请检查权限或路径是否正确.");
}
} else {
System.out.println("父目录已存在,无需创建.");
}
FileOutputStream fos = new FileOutputStream(GenerateFilename);
Writer out = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
temp.process(root, out);
out.flush();//可不手动调用
return GenerateFilename;
}
public static void main(String[] args) {
String s = "25441,45465,545";
System.out.println();
String[] ss = s.split(",");
for (String s1 : ss) {
System.out.println(s1);
}
}
1 year ago
/**
*
* @param mainAndSubRequestId
* @return
*/
private static ArrayList<String> getAutoInitNodeIds(String mainAndSubRequestId) {
RecordSet recordSet = new RecordSet();
ArrayList<String> nodeids = new ArrayList<>();
String sql = "select node.NODEID nodeid , nodegroup.GROUPNAME from workflow_flownode node " +
" left join workflow_nodegroup nodegroup " +
" on node.nodeid = nodegroup.nodeid " +
" left join workflow_groupdetail detail " +
"on nodegroup.id = detail.GROUPID " +
"where node.WORKFLOWID in (select distinct WORKFLOWID from WORKFLOW_REQUESTBASE where REQUESTID in ( "+ mainAndSubRequestId +" ) ) and detail.id is null";
recordSet.executeQuery(sql);
while (recordSet.next()){
String nodeid = recordSet.getString("nodeid");
if (!StringUtils.isEmpty(nodeid)){
nodeids.add(nodeid);
}
}
return nodeids;
}
}