no message

master
rengp 1 year ago
parent 4f6effbf9c
commit 82de9480fd

@ -0,0 +1,60 @@
package com.engine.custom.archives.action;
import weaver.conn.RecordSet;
import weaver.file.Prop;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
*
*/
public class AddArchivesRecordAction extends BaseBean implements Action {
String SQL = "insert into uf_pushArchivesLog (request,type,ddsj) values (?,?,?) ";
@Override
public String execute(RequestInfo requestInfo) {
String requestid = requestInfo.getRequestid();
String workflowid = requestInfo.getWorkflowid();
String reveive = Util.null2String(Prop.getPropValue("archives", "reveive"));
String send = Util.null2String(Prop.getPropValue("archives", "send"));
String SignOff = Util.null2String(Prop.getPropValue("archives", "SignOff"));
//痩文
List<String> reveiveArr = Arrays.asList( reveive.split(","));
//发文
List<String> sendArr = Arrays.asList(send.split(","));
//签报
List<String> SignOffArr = Arrays.asList(SignOff.split(","));
String type = "";
if (sendArr.contains(workflowid)){
type = "0";
}else if(reveiveArr.contains(workflowid)){
type = "1";
}else if(SignOffArr.contains(workflowid)){
type = "2";
}else {
//不匹配跳过insert
return Action.SUCCESS;
}
RecordSet recordSet = new RecordSet();
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String dateStr = format.format(date);
recordSet.executeUpdate(SQL,requestid,type,dateStr);
return null;
}
public static void main(String[] args) {
}
}

@ -11,6 +11,7 @@ import com.engine.custom.archives.workflow.biz.requestForm.WfToDocBizCus;
import com.engine.workflow.biz.requestForm.WfWaterMark4WfToDocBiz;
import com.engine.workflow.entity.WorkflowToDocSettingInfoEntity;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
@ -52,11 +53,12 @@ import java.util.regex.Pattern;
* @version 1.0
*/
@Slf4j
public class WorkflowToDocCus {
String SUCCESS = "1";
String FAILURE_AND_CONTINUE = "0";
private static final Logger log = LoggerFactory.getLogger(WorkflowToDocCus.class);
// private static final Logger log = LoggerFactory.getLogger(WorkflowToDocCus.class);
private final static int THREAD_NUM = 10;//10个固定线程池
private final static ExecutorService expPool = Executors.newFixedThreadPool(THREAD_NUM);//使用线程池进行线程管理
@ -78,7 +80,7 @@ public class WorkflowToDocCus {
try {
class_MultiLangFilter = Class.forName("weaver.filter.MultiLangFilter");
} catch (ClassNotFoundException e) {
log.info("class MultiLangFilter doesn't exist");
new BaseBean().writeLog("class MultiLangFilter doesn't exist");
}
}
@ -153,6 +155,13 @@ public class WorkflowToDocCus {
com.api.workflow.util.ServiceUtil serviceUtil = new ServiceUtil();
if (!isfromaction)
nodeid = serviceUtil.getCurrentNode(requestid,user);
RecordSet rs = new RecordSet();
rs.executeQuery("select * from workflowactionset where workflowid = ? and INTERFACEID = 'WorkflowToDoc'",workflowid);
log.error("oldnodeid:"+nodeid);
if (rs.next()){
nodeid = Util.getIntValue(rs.getString("nodeid"));
}
log.error("newnodeid:"+nodeid);
String modeid = wfbiz.getModeid(Util.getIntValue(workflowid),Util.getIntValue(requestid),nodeid);
int keepsign = getKeepSign(workflowid);
@ -630,7 +639,7 @@ public class WorkflowToDocCus {
try {
ResourceComInfo = new ResourceComInfo();
} catch (Exception e) {
log.error(e);
log.error("异常:",e);
}
String sql = "";
int doclangurage = 7;
@ -733,7 +742,7 @@ public class WorkflowToDocCus {
}
} catch (Exception e) {
log.error(e);
log.error("异常",e);
}
int isHistory = 0;
int approveType = 0;
@ -1080,7 +1089,7 @@ public class WorkflowToDocCus {
}catch (Exception e) {
success = false;
log.error("RequestDocPropManagerCus Error:requestid="+requestid+"###docids="+docids);
log.error(e);
log.error("异常"+e);
}
log.error("success:"+success);
return success;

@ -1,10 +1,18 @@
package com.engine.custom.archives.corn;
import com.engine.custom.archives.service.PushArchivesCornService;
import com.engine.custom.archives.service.ReceivingPushArchivesService;
import com.engine.custom.archives.service.SendingPushArchivesService;
import com.engine.custom.archives.service.SignReportPushArchivesService;
import com.engine.custom.archives.util.ArchivesUtil;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import weaver.interfaces.schedule.BaseCronJob;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
/***
@ -12,24 +20,34 @@ import java.util.HashMap;
* @author rengp
* @date 2024/4/7
*/
@Slf4j
public class PushArchivesCorn extends BaseCronJob {
public String filePath = "/opt/weaver/filesys/test";
public String filePath = "/opt/weaver/archivesFile";
public String Url = "http://14.1.206.240:18080/fcscloud/composite/upload";
public String templatePath = "/opt/weaver/filesys/template.docx";
public String templatePath = "/opt/weaver/archivesFile/template/";
public String reqid = "";
public static Logger log = LoggerFactory.getLogger("Archives");
PushArchivesCornService service = new PushArchivesCornService();
ReceivingPushArchivesService receivingservice = new ReceivingPushArchivesService();
SendingPushArchivesService sendingservice = new SendingPushArchivesService();
SignReportPushArchivesService signReportservice =new SignReportPushArchivesService();
@Override
public void execute() {
log.info("PushArchivesCorn====Begin========");
Date date = ArchivesUtil.getDate();
String dateStr = new SimpleDateFormat("yyyyMMdd").format(date);
HashMap<String, String> param = new HashMap<>();
param.put("filePath",filePath);
param.put("filePath",filePath+ File.separator+dateStr);
param.put("Url",Url);
param.put("requestid",reqid);
param.put("templatePath",templatePath);
service.setProp(param);
service.pushArchives(param);
// receivingservice.setProp(param);
// receivingservice.pushArchives(param);
sendingservice.setProp(param);
sendingservice.pushArchives(param);
signReportservice.setProp(param);
signReportservice.pushArchives(param);
}
}

@ -0,0 +1,217 @@
package com.engine.custom.archives.entity;
public class PushArchivesBean {
private int id;
private String requestId;
private int request;
private String content;
private String zt;
private String ddsj;
private String tssj;
private String zw;
private String fj;
private String cbd;
private String lzxx;
private String zlc;
private String esbtxtml;
private String esbwjml;
private String formModeId;
private String modeDataCreater;
private String modeDataCreatertype;
private String modeDataCreatedate;
private String modeDataCreatetime;
private String modeDataModifier;
private String modeDataModifydatetime;
private String formBizId;
private String type;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getRequestId() {
return requestId;
}
public void setRequestId(String requestId) {
this.requestId = requestId;
}
public int getRequest() {
return request;
}
public void setRequest(int request) {
this.request = request;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getZt() {
return zt;
}
public void setZt(String zt) {
this.zt = zt;
}
public String getDdsj() {
return ddsj;
}
public void setDdsj(String ddsj) {
this.ddsj = ddsj;
}
public String getTssj() {
return tssj;
}
public void setTssj(String tssj) {
this.tssj = tssj;
}
public String getZw() {
return zw;
}
public void setZw(String zw) {
this.zw = zw;
}
public String getFj() {
return fj;
}
public void setFj(String fj) {
this.fj = fj;
}
public String getCbd() {
return cbd;
}
public void setCbd(String cbd) {
this.cbd = cbd;
}
public String getLzxx() {
return lzxx;
}
public void setLzxx(String lzxx) {
this.lzxx = lzxx;
}
public String getZlc() {
return zlc;
}
public void setZlc(String zlc) {
this.zlc = zlc;
}
public String getEsbtxtml() {
return esbtxtml;
}
public void setEsbtxtml(String esbtxtml) {
this.esbtxtml = esbtxtml;
}
public String getEsbwjml() {
return esbwjml;
}
public void setEsbwjml(String esbwjml) {
this.esbwjml = esbwjml;
}
public String getFormModeId() {
return formModeId;
}
public void setFormModeId(String formModeId) {
this.formModeId = formModeId;
}
public String getModeDataCreater() {
return modeDataCreater;
}
public void setModeDataCreater(String modeDataCreater) {
this.modeDataCreater = modeDataCreater;
}
public String getModeDataCreatertype() {
return modeDataCreatertype;
}
public void setModeDataCreatertype(String modeDataCreatertype) {
this.modeDataCreatertype = modeDataCreatertype;
}
public String getModeDataCreatedate() {
return modeDataCreatedate;
}
public void setModeDataCreatedate(String modeDataCreatedate) {
this.modeDataCreatedate = modeDataCreatedate;
}
public String getModeDataCreatetime() {
return modeDataCreatetime;
}
public void setModeDataCreatetime(String modeDataCreatetime) {
this.modeDataCreatetime = modeDataCreatetime;
}
public String getModeDataModifier() {
return modeDataModifier;
}
public void setModeDataModifier(String modeDataModifier) {
this.modeDataModifier = modeDataModifier;
}
public String getModeDataModifydatetime() {
return modeDataModifydatetime;
}
public void setModeDataModifydatetime(String modeDataModifydatetime) {
this.modeDataModifydatetime = modeDataModifydatetime;
}
public String getFormBizId() {
return formBizId;
}
public void setFormBizId(String formBizId) {
this.formBizId = formBizId;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}

@ -0,0 +1,488 @@
package com.engine.custom.archives.service;
import com.dcfs.fts.common.error.FtpException;
import com.engine.custom.archives.util.ArchivesUtil;
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.*;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;
public class ReceivingPushArchivesService {
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 static Logger log = LoggerFactory.getLogger("Archives");
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 {
ZipUtil zipUtil = new ZipUtil();
Date date = ArchivesUtil.getDate();
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));
Integer requestid = Util.getIntValue(param.get("requestid"));
log.error("requestid:{}", requestid);
String context = extracted(requestid);
log.error("context:{}", context);
File file = ArchivesUtil.crFile(filePath + "/togd_" + new SimpleDateFormat("yyyyMMdd000000").format(date));
log.error("textfile:{}", file.getAbsolutePath());
ArchivesUtil.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);
} catch (Exception e) {
log.info("PushArchivesCorn====Exception========{}", e.getMessage());
e.printStackTrace();
}
}
private void updateRecord(int 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(int 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 = ArchivesUtil.getSignFiles(requestid,true);
List<String> docids = new ArrayList<>();
// docids.addAll(Arrays.asList(fj.split(",")));
// docids.addAll(Arrays.asList(zwkbj.split(",")));
Map<String, String> fjMap = ArchivesUtil.getFileIdByDocId(fj);
Map<String, String> zwkbjMap = ArchivesUtil.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 = ArchivesUtil.codeUtf8(imageFileName);
try {
File file = ArchivesUtil.saveInputStreamToFile(inputStream, imageFileName);
String jsonStr = ArchivesUtil.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");
ArchivesUtil.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 = ArchivesUtil.codeUtf8(imageFileName);
try {
File file = ArchivesUtil.saveInputStreamToFile(inputStream, imageFileName);
String jsonStr = ArchivesUtil.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");
ArchivesUtil.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 = ArchivesUtil.codeUtf8(imageFileName);
try {
File file = ArchivesUtil.saveInputStreamToFile(inputStream, imageFileName);
String jsonStr = ArchivesUtil.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");
ArchivesUtil.downloadFile(viewUrl, filePath + File.separator + requestid + File.separator + zwdir + File.separator + imageFileManager.getImageFileName() + ".pdf");
}
} catch (IOException e) {
e.printStackTrace();
}
});
//开始承办单 先获取主流程的承办单
List<String> requestDocid = ArchivesUtil.generaRequestFormPdf(requestid,1);
// 1.去掉生成子流程承办单
// List<String> subRequestDocid = generaSubRequestFormPdf(requestid);
Map<String, String> reqDocMap = ArchivesUtil.getFileIdByDocId(String.join(",", requestDocid));
// 2.去掉生成子流程承办单
// Map<String, String> subReqDocMap = getFileIdByDocId(String.join(",", subRequestDocid));
log.error("reqDocMap:{}", JSONObject.toJSONString(reqDocMap));
//log.error("subReqDocMap:{}", JSONObject.toJSONString(subReqDocMap));
docids.addAll(requestDocid);
// 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 = ArchivesUtil.codeUtf8(imageFileName);
try {
File file = ArchivesUtil.saveInputStreamToFile(inputStream, imageFileName);
String jsonStr = ArchivesUtil.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");
ArchivesUtil.downloadFile(viewUrl, filePath + File.separator + requestid + File.separator + cbddir + File.separator + fjFile + i[0] + "_" + imageFileManager.getImageFileName() + ".pdf");
}
i[0]++;
} catch (IOException e) {
e.printStackTrace();
}
});
//正文
i[0] = 1;
// 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));
// log.error(JSONObject.toJSONString(subRequestDocid));
for (String docid : docids) {
log.error("删除了" + docid);
ArchivesUtil.deleteDocByid(docid);
}
//--------------------------------------------------------------------
RequestService requestService = new RequestService();
RequestInfo requestInfo = requestService.getRequest(Util.getIntValue(requestid), 100);
String logFile = ArchivesUtil.getSignLog(requestid, cbddir+File.separator+lzxxdir, requestInfo.getCreatorid() + requestInfo.getDescription(),templatePath,filePath,true);
String s = ArchivesUtil.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");
ArchivesUtil.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 void insertRecord(int 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
* @return
*/
public Map<String, String> getRequestByid(int 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(int 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("|");
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 = ArchivesUtil.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(ArchivesUtil.getAssociatedPersons(requestid,true)).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);
}
}

@ -0,0 +1,514 @@
package com.engine.custom.archives.service;
import cn.hutool.core.util.ZipUtil;
import com.alibaba.fastjson.JSONObject;
import com.dcfs.fts.common.error.FtpException;
import com.engine.custom.archives.entity.PushArchivesBean;
import com.engine.custom.archives.util.ArchivesUtil;
import com.engine.custom.hg.util.HgUtils;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import weaver.conn.RecordSet;
import weaver.file.ImageFileManager;
import weaver.general.StringUtil;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.authority.manager.HrmDepartmentManager;
import weaver.hrm.company.DepartmentComInfo;
import weaver.soa.hrm.Department;
import weaver.soa.workflow.request.RequestInfo;
import weaver.soa.workflow.request.RequestService;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
public class SendingPushArchivesService {
public static Logger log = LoggerFactory.getLogger("Archives");
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 = "附件";
private static final String fjWord = "附件";
private static final String zwWord = "正文";
private static final String lhgWord = "留痕稿";
private static final String lcfjWord = "流程附件";
private static final String qzyjfjWord = "签字意见附件";
private static final String wjcldWord = "文件处理单";
private static final String wjlzxxWord = "文件流转信息";
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);
Date date = ArchivesUtil.getDate();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String format = dateFormat.format(date);
SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm");
// 获取当前时间的第一秒
String firstSecond = yyyyMMddHHmmss.format(ArchivesUtil.getFirstSecondOfDate(date));
// 获取当前时间的最后一秒
String lastSecond = yyyyMMddHHmmss.format(ArchivesUtil.getLastSecondOfDate(date));
RecordSet recordSet = new RecordSet();
List<PushArchivesBean> result = ArchivesUtil.getResultList(recordSet, firstSecond, lastSecond, 0);
log.error("推送发文的数量:{}", result.size());
File file = ArchivesUtil.crFile(filePath + "/togd_" + new SimpleDateFormat("yyyyMMdd000000").format(date));
log.error("textfile:{}", file.getAbsolutePath());
for (PushArchivesBean pushArchivesBean : result) {
int id = pushArchivesBean.getId();
int request = pushArchivesBean.getRequest();
log.error("推送的requestId:{}", request);
try {
String context = generateFile(request);
ArchivesUtil.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(request, s);
log.error("textZip:{}", s);
} catch (FtpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private String generateFile(int requestid) throws FtpException, IOException {
Map<String, String> requesData = getRequestByid(requestid);
log.info("requesData:{}", requesData);
String fj = Util.null2String(requesData.get("fj"));
String dwd = Util.null2String(requesData.get("dwd"));
String zw = Util.null2String(requesData.get("zw"));
String qgqhj = Util.null2String(requesData.get("qgqhj"));
String thhlh = Util.null2String(requesData.get("thhlh"));
//增加签字意见中的附件到附件文件夹中
Map<String, String> signFiles = ArchivesUtil.getSignFiles(requestid,false);
List<String> docids = new ArrayList<>();
// docids.addAll(Arrays.asList(fj.split(",")));
// docids.addAll(Arrays.asList(zwkbj.split(",")));
Map<String, String> fjMap = ArchivesUtil.getFileIdByDocId(fj);
Map<String, String> dwdMap = ArchivesUtil.getFileIdByDocId(dwd);
Map<String, String> zwMap = ArchivesUtil.getFileIdByDocId(zw);
Map<String, String> qgqhjMap = ArchivesUtil.getFileIdByDocId(qgqhj);
Map<String, String> thhlhMap = ArchivesUtil.getFileIdByDocId(thhlh);
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 + lcfjWord + "-" +imageFileManager.getImageFileName();
fjFileName.add(imageFileManager.getImageFileName());
log.info("生成附件路径:{}", imageFileName);
imageFileName = ArchivesUtil.codeUtf8(imageFileName);
try {
File file = ArchivesUtil.saveInputStreamToFile(inputStream, imageFileName);
String jsonStr = ArchivesUtil.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");
ArchivesUtil.downloadFile(viewUrl, filePath + File.separator + requestid + File.separator + fjdir + File.separator + lcfjWord + "-" + 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 + qzyjfjWord+ "-" +imageFileManager.getImageFileName();
fjFileName.add(imageFileManager.getImageFileName());
log.info("生成签字意见附件路径:{}", imageFileName);
imageFileName = ArchivesUtil.codeUtf8(imageFileName);
try {
File file = ArchivesUtil.saveInputStreamToFile(inputStream, imageFileName);
String jsonStr = ArchivesUtil.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");
ArchivesUtil.downloadFile(viewUrl, filePath + File.separator + requestid + File.separator + fjdir + File.separator + qzyjfjWord+ "-" + imageFileManager.getImageFileName() + ".pdf");
}
} catch (IOException e) {
e.printStackTrace();
}
});
//多文档
// dwdMap.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 + fjWord + i[0] + "_" + zwWord + "_" + imageFileManager.getImageFileName();
// log.info("生成多文档路径:{}", imageFileName);
// imageFileName = ArchivesUtil.codeUtf8(imageFileName);
// try {
// File file = ArchivesUtil.saveInputStreamToFile(inputStream, imageFileName);
// String jsonStr = ArchivesUtil.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");
// ArchivesUtil.downloadFile(viewUrl, filePath + File.separator + requestid + File.separator + zwdir + File.separator + fjWord + i[0] + "_" + zwWord + "_" + imageFileManager.getImageFileName() + ".pdf");
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
// i[0]++;
// });
//正文
zwMap.forEach((docid, imageid) -> {
ImageFileManager imageFileManager = new ImageFileManager();
imageFileManager.getImageFileInfoById(Util.getIntValue(imageid));
InputStream inputStream = imageFileManager.getInputStream();
String newFile = fjWord + i[0] + "_" + zwWord + "-" + imageFileManager.getImageFileName();
//中文路径/中文文件名
String imageFileName = filePath + File.separator + requestid + File.separator + zwdir + File.separator + newFile;
zwFileName.add(newFile);
log.info("生成正文路径:{}", imageFileName);
imageFileName = ArchivesUtil.codeUtf8(imageFileName);
try {
File file = ArchivesUtil.saveInputStreamToFile(inputStream, imageFileName);
String jsonStr = ArchivesUtil.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");
ArchivesUtil.downloadFile(viewUrl, filePath + File.separator + requestid + File.separator + zwdir + File.separator + newFile + ".pdf");
}
} catch (IOException e) {
e.printStackTrace();
}
i[0]++;
});
//清稿前痕迹
qgqhjMap.forEach((docid, imageid) -> {
ImageFileManager imageFileManager = new ImageFileManager();
imageFileManager.getImageFileInfoById(Util.getIntValue(imageid));
InputStream inputStream = imageFileManager.getInputStream();
String newFile = fjWord + i[0] + "_" + lhgWord + "-" + imageFileManager.getImageFileName();
zwFileName.add(newFile);
//中文路径/中文文件名
String imageFileName = filePath + File.separator + requestid + File.separator + zwdir + File.separator + newFile;
log.info("生成清稿前痕迹路径:{}", imageFileName);
imageFileName = ArchivesUtil.codeUtf8(imageFileName);
try {
File file = ArchivesUtil.saveInputStreamToFile(inputStream, imageFileName);
String jsonStr = ArchivesUtil.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");
ArchivesUtil.downloadFile(viewUrl, filePath + File.separator + requestid + File.separator + zwdir + File.separator + newFile + ".pdf");
}
} catch (IOException e) {
e.printStackTrace();
}
i[0]++;
});
//套红后留痕
// thhlhMap.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 + fjWord + i[0] + "_" + lhgWord + "_" + imageFileManager.getImageFileName();
// log.info("生成套红后留痕路径:{}", imageFileName);
// imageFileName = ArchivesUtil.codeUtf8(imageFileName);
// try {
// File file = ArchivesUtil.saveInputStreamToFile(inputStream, imageFileName);
// String jsonStr = ArchivesUtil.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");
// ArchivesUtil.downloadFile(viewUrl, filePath + File.separator + requestid + File.separator + zwdir + File.separator + fjWord + i[0] + "_" + lhgWord + "_" + imageFileManager.getImageFileName() + ".pdf");
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
// i[0]++;
// });
//开始承办单 先获取主流程的承办单
List<String> requestDocid = ArchivesUtil.generaRequestFormPdf(requestid, 0);
// 1.去掉生成子流程承办单
// List<String> subRequestDocid = generaSubRequestFormPdf(requestid);
Map<String, String> reqDocMap = ArchivesUtil.getFileIdByDocId(String.join(",", requestDocid));
// 2.去掉生成子流程承办单
// Map<String, String> subReqDocMap = getFileIdByDocId(String.join(",", subRequestDocid));
log.error("reqDocMap:{}", JSONObject.toJSONString(reqDocMap));
//log.error("subReqDocMap:{}", JSONObject.toJSONString(subReqDocMap));
docids.addAll(requestDocid);
// 3.去掉生成子流程承办单
// docids.addAll(subRequestDocid);
i[0] = 1;
//主流程承办单
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();
String imageFileName = filePath + File.separator + requestid + File.separator + cbddir + File.separator + fjFile + i[0] + "_" + wjcldWord+".pdf";
log.info("主流程承办单路径:{}", imageFileName);
imageFileName = ArchivesUtil.codeUtf8(imageFileName);
try {
File file = ArchivesUtil.saveInputStreamToFile(inputStream, imageFileName);
String jsonStr = ArchivesUtil.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");
ArchivesUtil.downloadFile(viewUrl, filePath + File.separator + requestid + File.separator + cbddir + File.separator + fjFile + i[0] + "_" + wjcldWord + ".pdf" + ".pdf");
}
i[0]++;
} catch (IOException e) {
e.printStackTrace();
}
});
//正文
log.error(JSONObject.toJSONString(requestDocid));
for (String docid : docids) {
log.error("删除了" + docid);
ArchivesUtil.deleteDocByid(docid);
}
//--------------------------------------------------------------------
RequestService requestService = new RequestService();
RequestInfo requestInfo = requestService.getRequest(Util.getIntValue(requestid), 100);
String logFile = ArchivesUtil.getSignLog(requestid, cbddir + File.separator + lzxxdir, requestInfo.getCreatorid() + requestInfo.getDescription(), templatePath, filePath,false);
String s = ArchivesUtil.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");
ArchivesUtil.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;
}
/***
*
* @param requestid
* @return
*/
public Map<String, String> getRequestByid(int requestid) {
HashMap<String, String> record = new HashMap<>();
String sql = "select * from formtable_main_11 where requestid = ?";
String reqsql = "select REQUESTNAME from WORKFLOW_REQUESTBASE where REQUESTID = ?";
RecordSet rs = new RecordSet();
rs.executeQuery(sql, requestid);
if (rs.next()) {
record.put("fj", Util.null2String(rs.getString("fj")));
record.put("dwd", Util.null2String(rs.getString("dwd")));
record.put("zw", Util.null2String(rs.getString("zw")));
record.put("ngrq", Util.null2String(rs.getString("ngrq")));
record.put("jghwt", Util.null2String(rs.getString("jghwt")));
record.put("bh", Util.null2String(rs.getString("bh")));
record.put("ngbm", Util.null2String(rs.getString("ngbm")));
record.put("bgqx", Util.null2String(rs.getString("bgqx")));
record.put("cwrq", Util.null2String(rs.getString("cwrq")));
record.put("ys", Util.null2String(rs.getString("ys")));
record.put("wz", Util.null2String(rs.getString("wz")));
record.put("ngbm", Util.null2String(rs.getString("ngbm")));
record.put("lb", Util.null2String(rs.getString("lb")));
record.put("bz", Util.null2String(rs.getString("bz")));
record.put("yywh", Util.null2String(rs.getString("yywh")));
record.put("wjlx", Util.null2String(rs.getString("wjlx")));
record.put("fwlx", Util.null2String(rs.getString("fwlx")));
record.put("f", Util.null2String(rs.getString("f")));
record.put("ngr", Util.null2String(rs.getString("ngr")));
record.put("qgqhj", Util.null2String(rs.getString("qgqhj")));
record.put("thhlh", Util.null2String(rs.getString("thhlh")));
}
rs.executeQuery(reqsql, requestid);
if (rs.next()) {
record.put("REQUESTNAME", Util.null2String(rs.getString("REQUESTNAME")));
}
return record;
}
private String getContext(int requestid, Map<String, String> requesData, String zipName, List<String> zwFileName, List<String> fjFileName) {
StringBuilder context = new StringBuilder();
try {
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
String ngrq = Util.null2String(requesData.get("ngrq")); //拟稿日期
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date = LocalDate.parse(ngrq, formatter);
int year = date.getYear();
context.append(year).append("|"); //1.年度 -> 拟稿日期
String jghwt = Util.null2String(requesData.get("jghwt"));//2.机构或问题 -> 机构或问题
context.append(jghwt).append("|");
String bh = Util.null2String(requesData.get("bh"));// 3.文号 -> 编号
context.append(bh).append("|");
String requestname = Util.null2String(requesData.get("REQUESTNAME")); // 4.文件题名 -> 流程名称
context.append(requestname).append("|");
String ngbmName = Util.null2String(departmentComInfo.getDepartmentname(requesData.get("ngbm"))); //5 责任者 -> 拟稿部门
context.append(ngbmName).append("|");
String bgqx = Util.null2String(requesData.get("bgqx")); //6 保管期限 -> 保管期限
context.append(bgqx).append("|");
String cwrq = Util.null2String(requesData.get("cwrq")); //7 日期 -> 成文日期
context.append(cwrq).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 = ArchivesUtil.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"));
context.append("").append("|");// 18 收文号 -> 空
String fs = "";
context.append(fs).append("|"); // 19 份数 -> 份数
String bz = Util.null2String(requesData.get("bz"));
context.append("").append("|"); // 20 备注 -> 备注
String yywh = Util.null2String(requesData.get("yywh"));
context.append("").append("|"); // 21 引用文号 -> 引用文号
String wjlx = Util.null2String(requesData.get("wjlx"));
context.append("").append("|"); // 22 文件类型 -> 空
String fwlx = Util.null2String(requesData.get("fwlx"));
context.append("总行发文").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(ngbmName).append("|"); // 26 拟稿部门 -> 拟稿部门名称
context.append("发文").append("|"); // 27 公文类型 -> "收文"
//TODO
context.append(ArchivesUtil.getAssociatedPersons(requestid,false)).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("hqbm")).split(","))); // 会签部门
records.addAll(Arrays.asList(Util.null2String(requesData.get("ngbm")).split(","))); // 拟稿部门
records.addAll(Arrays.asList(Util.null2String(requesData.get("bmyb")).split(","))); // 部门阅办
records.addAll(Arrays.asList(Util.null2String(requesData.get("cs")).split(","))); // 抄送
records.addAll(Arrays.asList(Util.null2String(requesData.get("nbfs")).split(","))); // 本行发送
records.addAll(Arrays.asList(Util.null2String(requesData.get("zs")).split(","))); // 主送
records.addAll(Arrays.asList(Util.null2String(requesData.get("dqbm")).split(","))); // 当前部门
records.addAll(Arrays.asList(Util.null2String(requesData.get("cb")).split(","))); // 抄报
records.addAll(Arrays.asList(Util.null2String(requesData.get("bmhqzj")).split(","))); // 部门会签(追加)
records.addAll(Arrays.asList(Util.null2String(requesData.get("bmybzj")).split(","))); // 部门阅办(追加)
ArrayList<String> deptName = new ArrayList<>();
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
for (String record : records) {
try {
String departmentName = departmentComInfo.getDepartmentName(record);
deptName.add(departmentName);
} catch (Exception e) {
e.printStackTrace();
}
}
return String.join("&&", deptName);
}
private void updateRecord(int requestid, String s) {
String sql = "update uf_pushArchivesLog set esbtxtml = ? where request = ?";
RecordSet recordSet = new RecordSet();
recordSet.executeUpdate(sql, s, requestid);
}
}

@ -0,0 +1,84 @@
package com.engine.custom.archives.service;
import cn.hutool.core.util.ZipUtil;
import com.dcfs.fts.common.error.FtpException;
import com.engine.custom.archives.entity.PushArchivesBean;
import com.engine.custom.archives.util.ArchivesUtil;
import com.engine.custom.hg.util.HgUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import weaver.conn.RecordSet;
import weaver.general.Util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class SignReportPushArchivesService {
public static Logger log = LoggerFactory.getLogger("Archives");
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 = "附件";
private static final String fjWord = "附件";
private static final String zwWord = "正文";
private static final String lhgWord = "留痕稿";
private static final String lcfjWord = "流程附件";
private static final String qzyjfjWord = "签字意见附件";
private static final String wjcldWord = "文件处理单";
private static final String wjlzxxWord = "文件流转信息";
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) {
Date date = ArchivesUtil.getDate();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String format = dateFormat.format(date);
SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm");
// 获取当前时间的第一秒
String firstSecond = yyyyMMddHHmmss.format(ArchivesUtil.getFirstSecondOfDate(date));
// 获取当前时间的最后一秒
String lastSecond = yyyyMMddHHmmss.format(ArchivesUtil.getLastSecondOfDate(date));
RecordSet recordSet = new RecordSet();
List<PushArchivesBean> result = ArchivesUtil.getResultList(recordSet, firstSecond, lastSecond, 0);
log.error("推送发文的数量:{}", result.size());
File file = ArchivesUtil.crFile(filePath + "/togd_" + new SimpleDateFormat("yyyyMMdd000000").format(date));
log.error("textfile:{}", file.getAbsolutePath());
for (PushArchivesBean pushArchivesBean : result) {
int id = pushArchivesBean.getId();
int request = pushArchivesBean.getRequest();
log.error("推送的requestId:{}", request);
try {
// String context = generateFile(request);
ArchivesUtil.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(request, s);
log.error("textZip:{}", s);
} catch (FtpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

@ -11,6 +11,8 @@ import com.engine.workflow.cmd.requestForm.*;
import com.engine.workflow.entity.requestForm.TableInfo;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
@ -25,6 +27,7 @@ import java.util.List;
import java.util.Map;
public class HtmlToPdfServiceCusImpl extends Service implements HtmlToPdfServiceCus {
public static Logger log = LoggerFactory.getLogger("Archives");
@Override
public Map<String, Object> getHtml(Map<String, Object> reqpParams, User user) {
return null;
@ -55,7 +58,7 @@ public class HtmlToPdfServiceCusImpl extends Service implements HtmlToPdfService
requestMap.put("modeid",modeid);
requestMap.put("limitauth",Util.null2String(reqpParams.get("limitauth")));
requestMap.put("forceNoPaging",1); //明细强制不分页
new BaseBean().writeLog("HtmltoPdfServiceimpl ---requestid:"+requestid+"-----modeid:"+modeid);
log.error("HtmltoPdfServiceimpl ---requestid:"+requestid+"-----modeid:"+modeid);
long start2 = System.currentTimeMillis();
//第一步:获取基础信息参数
@ -110,6 +113,7 @@ public class HtmlToPdfServiceCusImpl extends Service implements HtmlToPdfService
}
log.error("ismode:"+ismode);
//第五步:模板布局
if (ismode == 0 || (ismode == 2 && layoutversion == 2)) {
@ -117,7 +121,9 @@ public class HtmlToPdfServiceCusImpl extends Service implements HtmlToPdfService
if (ismode == 0) { //普通模式
layoutStr = Util.null2String(commonLayout.get("layoutStr"));
} else if (ismode == 2) { //html模式
int layoutid = Util.getIntValue(Util.null2String(params.get("modeid")), 0);
log.error("layoutid:"+layoutid);
layoutStr = new LayoutInfoBiz().getLayoutStr(layoutid);
}
apidatas.put("datajson",layoutStr);
@ -168,10 +174,10 @@ public class HtmlToPdfServiceCusImpl extends Service implements HtmlToPdfService
params.put("isSubrequest",reqpParams.get("isSubrequest"));
Map<String,Object> requestlog =commandExecutor.execute(new LoadRequestLogDataCusCmd(request, user, params,"topdf"));
apidatas.put("requestLog",requestlog);
new BaseBean().writeLog(JSONObject.toJSONString(apidatas));
log.error(JSONObject.toJSONString(apidatas));
long end2 = System.currentTimeMillis()-start2;
BaseBean baseBean = new BaseBean();
baseBean.writeLog("loadform接口+底部签字意见+detail耗时"+end2);
log.error("loadform接口+底部签字意见+detail耗时"+end2);
//是否开启水印
apidatas.put("isOpenWaterMark",reqpParams.get("isOpenWaterMark"));
@ -181,7 +187,7 @@ public class HtmlToPdfServiceCusImpl extends Service implements HtmlToPdfService
result.putAll(html);
long end = System.currentTimeMillis()-start2;
baseBean.writeLog("【pdf】 总耗时:"+end);
log.error("【pdf】 总耗时:"+end);
return html;
}

@ -8,6 +8,8 @@
package com.engine.custom.archives.workflow.biz.requestForm;
import com.engine.workflow.biz.requestForm.WfToDocBiz;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
@ -28,8 +30,9 @@ import java.util.Map;
public class RequestDocPropManagerCus extends BaseBean {
//private RecordSet rs;//277481: [90]集成中心-解决代码质量问题修复--操作数据库的对象不能作为成员变量
public static Logger log = LoggerFactory.getLogger("Archives");
//private RecordSet rs;//277481: [90]集成中心-解决代码质量问题修复--操作数据库的对象不能作为成员变量
//private RecordSet rsTwo;//277481: [90]集成中心-解决代码质量问题修复--操作数据库的对象不能作为成员变量
private char flag = Util.getSeparator();

@ -5,6 +5,8 @@ import com.engine.hrm.biz.HrmClassifiedProtectionBiz;
import com.engine.workflow.biz.requestForm.RequestSecLevelBiz;
import com.engine.workflow.biz.requestForm.WfToDocBiz;
import oracle.sql.CLOB;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import weaver.conn.ConnStatement;
import weaver.conn.RecordSet;
import weaver.docs.DocDetailLog;
@ -21,6 +23,7 @@ import java.util.ArrayList;
import java.util.Map;
public class SaveDocDetailBizCus extends BaseBean {
public static Logger log = LoggerFactory.getLogger("Archives");
private int docid;
private int maincategory;
private int subcategory;
@ -827,7 +830,7 @@ public class SaveDocDetailBizCus extends BaseBean {
}
}
}catch(Exception ex) {
writeLog("添加文档信息至虚拟目录出错:" + ex);
log.error("添加文档信息至虚拟目录出错:" + ex);
}
//更新文档密级
@ -848,12 +851,12 @@ public class SaveDocDetailBizCus extends BaseBean {
try {
DocManager.AddShareInfo();
} catch (Exception e) {
writeLog("添加文档共享信息出错:" + e);
log.error("添加文档共享信息出错:" + e);
}
try {
new DocViewer().setDocShareByDoc("" + docid);
} catch (Exception e) {
writeLog("添加文档共享信息出错:" + e);
log.error("添加文档共享信息出错:" + e);
}
return docid;
}
@ -867,15 +870,15 @@ public class SaveDocDetailBizCus extends BaseBean {
boolean success = true;
String docids = docid+"";
try{
writeLog("saveDocProp:" + docid +" "+requestid);
log.error("saveDocProp:" + docid +" "+requestid);
RequestDocPropManagerCus requestDocPropManager=new RequestDocPropManagerCus(wfbiz);
requestDocPropManager.changeDocProp(requestManager,docids);
}catch (Exception e) {
success = false;
writeLog("RequestDocPropManagerCus Error:requestid="+requestid+"###docids="+docids);
writeLog(e);
log.error("RequestDocPropManagerCus Error:requestid="+requestid+"###docids="+docids);
log.error(e.getMessage());
}
writeLog("success:"+success);
log.error("success:"+success);
return success;
}

@ -7,6 +7,8 @@ import com.engine.custom.archives.service.impl.HtmlToPdfServiceCusImpl;
import com.engine.workflow.biz.freeNode.FreeNodeBiz;
import com.engine.workflow.entity.freeNode.FreeNodeEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import weaver.conn.RecordSet;
import weaver.docs.share.DocShareUtil;
import weaver.file.FileSecurityUtil;
@ -29,6 +31,7 @@ import java.util.Map;
public class WfToDocBizCus extends BaseBean {
public static Logger log = LoggerFactory.getLogger("Archives");
//底部签字意见列表显示数量
private int pageSize =100;
@ -174,7 +177,7 @@ public class WfToDocBizCus extends BaseBean {
//是否使用wk,在config表中读配置
WorkflowConfigComInfo configComInfo = new WorkflowConfigComInfo();
useWk = Util.null2String(configComInfo.getValue("htmltopdf_usewk"));
new BaseBean().writeLog("jymjym……useWk ="+useWk);
log.error("jymjym……useWk ="+useWk);
//是否使用Itext7
String useItext7 = Util.null2String(configComInfo.getValue("workflowtodoc_useitext7"));
params.put("useItext7", useItext7);
@ -266,7 +269,7 @@ public class WfToDocBizCus extends BaseBean {
int fileid = imageFileManager.saveImageFile();
if (fileid <= 0) {
writeLog("保存离线HTML/PDF文件失败");
log.error("保存离线HTML/PDF文件失败");
return "";
}
FileSecurityUtil.deleteFile(file);
@ -440,7 +443,7 @@ public class WfToDocBizCus extends BaseBean {
agentids = agentids.substring(1);
agenttypes = agenttypes.substring(1);
}
new BaseBean().writeLog("docShare------userids="+userids+"-------agentids="+agentids+"-----docid="+docids);
log.error("docShare------userids="+userids+"-------agentids="+agentids+"-----docid="+docids);
User user = new User(docowner);
//文档共享
DocShareUtil dsu = new DocShareUtil();

@ -13,12 +13,12 @@ import com.engine.workflow.entity.core.NodeInfoEntity;
import com.engine.workflow.entity.requestLog.RequestLogEntity;
import com.engine.workflow.util.CollectionUtil;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import weaver.conn.ConnStatement;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.workflow.logging.Logger;
import weaver.workflow.logging.LoggerFactory;
import weaver.workflow.request.RequestOperationMsgManager;
import weaver.workflow.request.RequestSignRelevanceWithMe;
import weaver.workflow.request.WFLinkInfo;
@ -33,7 +33,7 @@ import java.util.*;
*/
public class RequestLogCusBiz {
private final static Logger log = LoggerFactory.getLogger(RequestLogCusBiz.class);
public static Logger log = LoggerFactory.getLogger("Archives");
/**
*
@ -103,7 +103,7 @@ public class RequestLogCusBiz {
int max = pagenumber * pageSize;
String sql = getLogSql(requestid, workflowid, viewLogIds, orderby, sqlwhere ,isSubrequest);
System.out.println("requestlogsql==>"+ sql);
log.error("requestlogsql==>"+ sql);
StringBuffer splitinertSql = new StringBuffer();
if ("sqlserver".equals(rs.getDBType())) {
splitinertSql.append(" select * from ( select");
@ -140,7 +140,7 @@ public class RequestLogCusBiz {
mssqlTopflg = " top 100 percent ";
}
String thisviewLogIds = getViewLogIds(viewLogIds, requestid, workflowid);
String autoInitNodeIds = getAutoInitNodeIds(mainAndSubRequestId);
String autoInitNodeIds = getAutoInitNodeIds(workflowid);
String robotNodeid = getRobotNodeid(thisviewLogIds);
String selectfields = " nodeid,destnodeid,operatedate,operatetime,logtype,remark,isMobile,logid,operatortype,operator," +
"agenttype,agentorbyagentid,receivedPersonids,requestLogId,annexdocids,operatorDept,signdocids," +
@ -157,7 +157,8 @@ public class RequestLogCusBiz {
String sql = "select " + mssqlTopflg + selectfields + " from workflow_requestlog t1 " +
" where t1.requestid in ( " + mainAndSubRequestId + ") and t1.logtype != '1' " +
" and t1.nodeid not in (" + autoInitNodeIds + " )";
" and t1.nodeid not in (" + autoInitNodeIds + " )" + " " +
" and t1.operator != 1 and t1.OPERATOR != (select id from HRMRESOURCE where loginid = 'fenfa')";
if (sqlwhere != null && !sqlwhere.equals("")) {
sql = sql + sqlwhere;
}
@ -170,6 +171,7 @@ public class RequestLogCusBiz {
sql += " and logid not in (select logid from workflow_requestlog where "+Util.getSubINClause(robotNodeid, "t1.nodeid", "in")+" and operator = '0' and isRobotNode='1')";
}
sql = sql + " order by t1.operatedate " + orderby + ",t1.operatetime " + orderby + ",t1.logtype " + orderby + ",t1.logid " + orderby;
log.error("sqlsql:"+sql);
return sql;
}
@ -178,52 +180,42 @@ public class RequestLogCusBiz {
* @param mainAndSubRequestId
* @return
*/
private static String getAutoInitNodeIds(String mainAndSubRequestId) {
// private static String getAutoInitNodeIds(String mainAndSubRequestId) {
private static String getAutoInitNodeIds(int workflowid) {
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 String.join(",",nodeids);
// 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";
String sql = "select * from uf_ArchivesSet where mainwfid = ? ";
recordSet.executeQuery(sql,workflowid);
// while (recordSet.next()){
// String nodeid = recordSet.getString("nodeid");
// if (!StringUtils.isEmpty(nodeid)){
// nodeids.add(nodeid);
// }
// }
if (recordSet.next()){
return recordSet.getString("exclusenodeid");
}
return "1";
}
private static String getMainOrSubRequest(int requestid, boolean isSubrequest) {
log.error("isSubrequest:"+isSubrequest);
if (isSubrequest){
// RecordSet rs = new RecordSet();
// ArrayList<String> results = new ArrayList<>();
// String mainSql = "select mainrequestid from workflow_requestbase where requestid = ? ";
// String mainRequestId = "";
// rs.executeQuery(mainSql,requestid);
// if (rs.next()){
// mainRequestId = Util.null2String(rs.getString("mainrequestid"));
// }else {
// return Util.null2String(requestid);
// }
// // results.add(requestid+"");
// String subSql = "select requestid from workflow_requestbase where mainrequestid = ? ";
// rs.executeQuery(subSql , mainRequestId);
// while (rs.next()){
// results.add(rs.getString("requestid"));
// }
List<String> reqids = new ArrayList<>();
RecordSet rs = new RecordSet();
String ids = requestid+"";
// reqids.add(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);
log.error("subrequestSql:" + sql);
rs.executeQuery(sql);
while (rs.next()) {
String subrequestid = Util.null2String(rs.getString("requestid"));
@ -241,17 +233,31 @@ public class RequestLogCusBiz {
log.error("子流程的id:"+String.join(",", reqids));
return String.join(",", reqids);
}else {
RecordSet recordSet = new RecordSet();
recordSet.executeQuery("select * from WORKFLOW_REQUESTBASE where REQUESTID = ?",requestid);
String wfid = "";
if (recordSet.next()){
wfid = Util.null2String(recordSet.getString("WORKFLOWID"));
}
recordSet.executeQuery("select * from uf_ArchivesSet where mainwfid = ? ",wfid);
String mainwfid = "";
String subwfid = "";
if(recordSet.next()){
mainwfid = Util.null2String(recordSet.getString("mainwfid"));
subwfid = Util.null2String(recordSet.getString("subwfid"));
}else {
return Util.null2String(requestid);
}
List<String> reqids = new ArrayList<>();
RecordSet rs = new RecordSet();
String ids = requestid+"";
reqids.add(requestid+"");
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 + " )";
log.error("subrequestSql:{}" + sql);
rs.executeQuery(sql);
while (rs.next()) {
String subrequestid = Util.null2String(rs.getString("requestid"));
String sql = "select requestid , workflowid from workflow_requestbase where mainrequestid in ( " + ids + " ) and workflowid in ( " + subwfid + " ) ";
log.error("subrequestSql:" + sql);
recordSet.executeQuery(sql);
while (recordSet.next()) {
String subrequestid = Util.null2String(recordSet.getString("requestid"));
// String workflowid = Util.null2String(rs.getString("workflowid"));
idList.add(subrequestid);
reqids.add(subrequestid);

@ -30,6 +30,8 @@ import com.engine.workflow.service.RequestSecondAuthService;
import com.engine.workflow.service.impl.RequestSecondAuthServiceImpl;
import com.engine.workflow.util.MenuOrderSetUtil;
import com.google.common.base.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import weaver.conn.RecordSet;
import weaver.crm.Maint.CustomerInfoComInfo;
import weaver.dateformat.DateTransformer;
@ -62,6 +64,7 @@ import java.util.regex.Pattern;
*/
public class LoadRequestLogDataCusCmd extends AbstractCommonCommand<Map<String, Object>> {
public static Logger log = LoggerFactory.getLogger("Archives");
/***方便使用参数***/
private int requestid;
private int workflowid;
@ -164,9 +167,10 @@ public class LoadRequestLogDataCusCmd extends AbstractCommonCommand<Map<String,
boolean isFromWfForm = "1".equals(params.get("isFromWfForm"));
long start = System.currentTimeMillis();
int userid = user.getUID();
boolean isdebug = (userid == 8 || userid == 80 || userid == 1215 || userid == 1348 || userid == 3724 || userid == 4548);
// boolean isdebug = (userid == 8 || userid == 80 || userid == 1215 || userid == 1348 || userid == 3724 || userid == 4548);
boolean isdebug = true;
if (isdebug) {
System.out.println("requestlog-121-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
log.error("requestlog-121-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
}
start = System.currentTimeMillis();
@ -175,7 +179,7 @@ public class LoadRequestLogDataCusCmd extends AbstractCommonCommand<Map<String,
boolean issplitload = Util.null2String(params.get("loadmethod")).equals("split"); //是否分页加载
if (isdebug) {
System.out.println("requestlog-122-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
log.error("requestlog-122-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
}
start = System.currentTimeMillis();
@ -250,7 +254,7 @@ public class LoadRequestLogDataCusCmd extends AbstractCommonCommand<Map<String,
}
if (isdebug) {
System.out.println("requestlog-123-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
log.error("requestlog-123-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
}
// 节点签字意见权限控制
@ -260,7 +264,7 @@ public class LoadRequestLogDataCusCmd extends AbstractCommonCommand<Map<String,
sqlwhere += sqlcondition;
if (isdebug) {
System.out.println("requestlog-124-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
log.error("requestlog-124-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
}
@ -271,7 +275,7 @@ public class LoadRequestLogDataCusCmd extends AbstractCommonCommand<Map<String,
}
if (isdebug) {
System.out.println("requestlog-125-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
log.error("requestlog-125-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
}
if (pgflag == null || pgflag.equals("")) {
@ -288,7 +292,7 @@ public class LoadRequestLogDataCusCmd extends AbstractCommonCommand<Map<String,
resultDatas.put("maxrequestlogid", sbfmaxrequestlogid.toString());
if (isdebug) {
System.out.println("requestlog-126-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
log.error("requestlog-126-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
}
@ -307,7 +311,7 @@ public class LoadRequestLogDataCusCmd extends AbstractCommonCommand<Map<String,
//签字意见相关流程
String signrequestids = "";
if (isdebug) {
System.out.println("requestlog-127-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
log.error("requestlog-127-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
}
start = System.currentTimeMillis();
@ -851,7 +855,7 @@ public class LoadRequestLogDataCusCmd extends AbstractCommonCommand<Map<String,
loglistnew.add(logmap);
}
if (isdebug) {
System.out.println("requestlog-128-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
log.error("requestlog-128-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
}
resultDatas.put("totalCount", RequestLogCusBiz.getRequestLogTotalCount(requestid, workflowid, viewLogIds, sqlwhere));
@ -1067,6 +1071,6 @@ public class LoadRequestLogDataCusCmd extends AbstractCommonCommand<Map<String,
public static void main(String[] args){
String value = "2020-10-11 11:22:0.00";
value = value.substring(0,10);
System.out.println("value2222:"+value);
log.error("value2222:"+value);
}
}

@ -28,7 +28,7 @@ public class TJBKWorkFlowServiceImpl implements TJBKWorkFlowService {
private static final String getToReadwfidsql = "SELECT distinct b.CONTENT content from hpsetting_wfcenter a , workflowcentersettingdetail b where a.eid = b.eid and a.tabid = b.tabid and a.tabtitle = '我的待阅' and b.TYPE ='flowid'";
private static final String getToDowfidsql = "SELECT distinct b.CONTENT content from hpsetting_wfcenter a , workflowcentersettingdetail b where a.eid = b.eid and a.tabid = b.tabid and a.tabtitle = '我的待办' and b.TYPE ='flowid'";
// private static final String getToReadwfidsql = "SELECT b.* from hpsetting_wfcenter a , workflowcentersettingdetail b where a.eid = b.eid and a.tabid = b.tabid";
private WorkflowServiceImpl workflowService = new WorkflowServiceImpl();
// private WorkflowServiceImpl workflowService = new WorkflowServiceImpl();
private RecordSet rs = new RecordSet();

@ -34,10 +34,10 @@ public class CWGLSocketExecute extends BaseBean implements SocketExecute {
int userid = 0;
try {
if(oaTrvlBnsExpnsAcctNo.startsWith("BTSQD")){
tableName = "formtable_main_281";
tableName = "formtable_main_295";
// resultMap = getBeanByOAnum(oaTrvlBnsExpnsAcctNo, "formtable_main_281");
}else if(oaTrvlBnsExpnsAcctNo.startsWith("FHBTSQD")) {
tableName = "formtable_main_420";
tableName = "formtable_main_398";
// resultMap = getBeanByOAnum(oaTrvlBnsExpnsAcctNo, "");
}else {
throw new Exception("未找到编号 '"+oaTrvlBnsExpnsAcctNo+"' 对应的表单");
@ -78,7 +78,7 @@ public class CWGLSocketExecute extends BaseBean implements SocketExecute {
writeLog("istrue==="+istrue);
if (istrue) {
try {
updateStatus(requestid, flowStatus);
updateStatus(requestid, flowStatus,tableName);
String sqr = getsqrbyBH(oaTrvlBnsExpnsAcctNo, tableName);
if("3".equals(flowStatus)){
sendMsgForSuccess(sqr,oaTrvlBnsExpnsAcctNo,requestid);
@ -118,10 +118,10 @@ public class CWGLSocketExecute extends BaseBean implements SocketExecute {
}
}
private void updateStatus(int requestid, String flowStatus) throws Exception {
private void updateStatus(int requestid, String flowStatus ,String tableName) throws Exception {
try {
RecordSet recordSet = new RecordSet();
recordSet.executeUpdate("update formtable_main_281 set cwxtzt = ? where requestId = ?", flowStatus, requestid);
recordSet.executeUpdate("update "+tableName+" set cwxtzt = ? where requestId = ?", flowStatus, requestid);
} catch (Exception e) {
throw new Exception("更新状态失败");
}

@ -24,9 +24,10 @@ public class SocketClientUtil {
Socket socket = null;
try {
//创建一个流套接字并将其连接到指定主机上的指定端口号
// System.out.println(request);
socket = new Socket(host,port);
// String str = "00000612<?xml version=\"1.0\" encoding=\"UTF-8\"?><Service><Service_Header><service_sn>1010157060000081243</service_sn><system_id>0258</system_id><requester_id>0157</requester_id><branch_id>010231100</branch_id><channel_id>01</channel_id><service_time>20230905104426</service_time><need_request>true</need_request><SvcCd>500130004</SvcCd><SvcScn>13</SvcScn><BnkSrlNo>015720230905060000081243</BnkSrlNo><FileFlg>0</FileFlg></Service_Header><Service_Body><request><path>todo</path><method>getCount</method><args><entry><key>userNum</key><value>10913026任广鹏是个大刷币</value></entry></args></request></Service_Body></Service>";
// System.out.println(str);
// System.out.println(request);
//读取服务器端数据
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
//向服务器端发送数据
@ -71,46 +72,25 @@ public class SocketClientUtil {
// return "-1";
}
static class UpdateLogThread extends Thread {
@Override
public void run() {
try {
Thread.sleep(3000);
System.out.println("33333333");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//测试
public static void main(String[] args) throws Exception {
for (int i = 0; i < 5000; i++) {
for (int i = 0; i < 2000; i++) {
new Thread(){
@Override
public void run(){
SocketClientUtil socket = new SocketClientUtil("14.1.209.146", 8090);
try {
socket.send("00000597<?xml version=\"1.0\" encoding=\"UTF-8\"?><Service><Service_Header><service_sn>1010157060000065445</service_sn><system_id>0258</system_id><requester_id>0157</requester_id><branch_id>010231100</branch_id><channel_id>01</channel_id><service_time>20240315092648</service_time><need_request>true</need_request><SvcCd>500130004</SvcCd><SvcScn>12</SvcScn><BnkSrlNo>015720240315060000065445</BnkSrlNo><FileFlg>0</FileFlg></Service_Header><Service_Body><request><path>todo</path><method>getCount2</method><args><entry><key>userNum</key><value>10110047</value></entry></args></request></Service_Body></Service>");
socket.send("00000597<?xml version=\"1.0\" encoding=\"UTF-8\"?><Service><Service_Header><service_sn>1010157060000065445</service_sn><system_id>0258</system_id><requester_id>0157</requester_id><branch_id>010231100</branch_id><channel_id>01</channel_id><service_time>20240315092648</service_time><need_request>true</need_request><SvcCd>500130004</SvcCd><SvcScn>12</SvcScn><BnkSrlNo>015720240315060000065445</BnkSrlNo><FileFlg>0</FileFlg></Service_Header><Service_Body><request><path>todo</path><method>getCount2</method><args><entry><key>userNum</key><value>10110047</value></entry></args></request></Service_Body></Service>");
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
}
public static String cece(){
System.out.println("1111");
UpdateLogThread updateLogThread = new UpdateLogThread();
updateLogThread.start();
return "222";
}
}

@ -18,6 +18,8 @@ import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TjbkServerSocket implements ServletContextListener {
private SocketThread socketThread;
@ -34,7 +36,7 @@ public class TjbkServerSocket implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
new BaseBean().writeLog("contextInitialized启动");
// new BaseBean().writeLog("contextInitialized启动");
ServletContext servletContext = arg0.getServletContext();
if (socketThread == null) {
socketThread = new SocketThread(null, servletContext);
@ -50,6 +52,7 @@ class SocketThread extends Thread {
private ServletContext servletContext;
private ServerSocket serverSocket;
private ExecutorService executorService; // 线程池
public static Logger logger = LoggerFactory.getLogger("ESBSocket");
public SocketThread(ServerSocket serverSocket, ServletContext servletContext) {
this.servletContext = servletContext;
@ -72,9 +75,10 @@ class SocketThread extends Thread {
while (!this.isInterrupted()) { // 线程未中断执行循环
try {
new BaseBean().writeLog("SocketThread线程启动");
Socket socket = serverSocket.accept();
if (socket != null) {
logger.error("SocketThread线程启动");
// new ProcessSocketData(socket, this.servletContext).start();
executorService.submit(new ProcessSocketData(socket, servletContext));
}
@ -100,6 +104,7 @@ class ProcessSocketData implements Runnable {
private Socket socket;
private ServletContext servletContext;
private Logger logger = LoggerFactory.getLogger("ESBSocket");
public ProcessSocketData() {
super();
@ -108,69 +113,166 @@ class ProcessSocketData implements Runnable {
public ProcessSocketData(Socket socket, ServletContext servletContext) {
this.socket = socket;
this.servletContext = servletContext;
}
@Override
public void run() {
PrintWriter pw = null;
BufferedReader in = null;
Socket localSocket = this.socket;
try {
// BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
new BaseBean().writeLog("ServerSocket线程启动"+Thread.currentThread().getName());
logger.error("ServerSocket线程启动"+Thread.currentThread().getName());
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8);
PrintWriter pw = new PrintWriter(outputStreamWriter);
// PrintWriter pw = new PrintWriter(outputStreamWriter);
pw = new PrintWriter(outputStreamWriter);
InputStream inputStream = socket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
// BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
in = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
char[] datalen=new char[8];//报文前八位为报文体总长度
in.read(datalen,0,8);
String lendata=new String (datalen);
String clientIPAddress = localSocket.getInetAddress().getHostAddress(); // 获取客户端IP地址
logger.error("Client connected from IP: " + clientIPAddress);
logger.error("request.length:"+lendata);
int length=Integer.parseInt(lendata);
new BaseBean().writeLog("报文长度"+length);
logger.error("报文长度"+length);
// byte[] data=new byte[length];
char[] data=new char[length];
int datalength = in.read(data,0,length);
String requestData = new String(data);
new BaseBean().writeLog("requestData",requestData);
logger.error("requestData",requestData);
String s = "";
if (!StringUtil.isEmpty(requestData.toString())) {
new BaseBean().writeLog("requestData",requestData);
s = execute(requestData.toString());
logger.error("requestData",requestData);
s = execute(requestData.toString());
}
// 执行自定义的请求解析方法生成响应response
pw.println(s);
pw.flush(); // 刷新缓冲区
pw.close();
socket.close();
// pw.close();
// socket.close();
// System.out.println(sb);
} catch (IOException e) {
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
logger.error("error:"+e.getMessage());
}finally {
if (pw != null) {
pw.close();
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
logger.error("error:"+e.getMessage());
}
}
if (localSocket != null) {
try {
localSocket.close();
} catch (IOException e) {
e.printStackTrace();
logger.error("error:"+e.getMessage());
}
}
}
}
private String execute(String XMLparam){
new BaseBean().writeLog(this.getClass().getName()+":XMLparam=="+XMLparam);
Map<String, String> paramMap = XMLUtils.parseXMLToMap(XMLparam);
new BaseBean().writeLog(this.getClass().getName()+":paramMap=="+paramMap);
StringEscapeUtils.unescapeXml(XMLparam);
//目标系统代码
String system_id = paramMap.get("system_id");
// 请求方系统代码
String requester_id = paramMap.get("requester_id");
// 请求方机构代号
String branch_id = paramMap.get("branch_id");
new BaseBean().writeLog(this.getClass().getName()+":requester_id=="+requester_id);
SocketExecute socketExecute = null;
if ("0157".equals(requester_id)){
socketExecute = new GetToCountSocketExecute();
new BaseBean().writeLog(this.getClass().getName()+":GetToCountSocketExecute");
}else if("0170".equals(requester_id)){
socketExecute = new CWGLSocketExecute();
new BaseBean().writeLog(this.getClass().getName()+":CWGLSocketExecute");
try {
logger.error("XMLparam=="+XMLparam);
Map<String, String> paramMap = XMLUtils.parseXMLToMap(XMLparam);
logger.error("paramMap=="+paramMap);
StringEscapeUtils.unescapeXml(XMLparam);
//目标系统代码
String system_id = paramMap.get("system_id");
// 请求方系统代码
String requester_id = paramMap.get("requester_id");
// 请求方机构代号
String branch_id = paramMap.get("branch_id");
logger.error("requester_id=="+requester_id);
SocketExecute socketExecute = null;
if ("0157".equals(requester_id)){
logger.error("GetToCountSocketExecute-Start");
socketExecute = new GetToCountSocketExecute();
logger.error("GetToCountSocketExecute-end");
}else if("0170".equals(requester_id)){
logger.error("GetToCountSocketExecute-Start");
socketExecute = new CWGLSocketExecute();
logger.error("CWGLSocketExecute-end");
}
String execute = socketExecute.execute(paramMap);
logger.error("socketExecute:return"+execute);
return execute;
}catch (Exception e) {
e.printStackTrace();
logger.error("error:"+e.getMessage());
return "";
}
String execute = socketExecute.execute(paramMap);
return execute;
}
// public void run() {
// try {
// (new BaseBean()).writeLog("ServerSocket线程启动");
// OutputStreamWriter outputStreamWriter = new OutputStreamWriter(this.socket.getOutputStream(), StandardCharsets.UTF_8);
// PrintWriter pw = new PrintWriter(outputStreamWriter);
// InputStream inputStream = this.socket.getInputStream();
// BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
// char[] datalen = new char[8];
// in.read(datalen, 0, 8);
// String lendata = new String(datalen);
// int length = Integer.parseInt(lendata);
// (new BaseBean()).writeLog("报文长度" + length);
// char[] data = new char[length];
// in.read(data, 0, length);
// String requestData = new String(data);
// (new BaseBean()).writeLog("requestData", requestData);
// String s = "";
// if (!StringUtil.isEmpty(requestData.toString())) {
// (new BaseBean()).writeLog("requestData", requestData);
// s = this.execute(requestData.toString());
// }
//
// pw.println(s);
// pw.flush();
// pw.close();
// this.socket.close();
// } catch (IOException var12) {
// var12.printStackTrace();
// System.out.println(var12);
// }
//
// }
//
// private String execute(String XMLparam) {
// (new BaseBean()).writeLog(this.getClass().getName() + ":XMLparam==" + XMLparam);
// Map<String, String> paramMap = XMLUtils.parseXMLToMap(XMLparam);
// (new BaseBean()).writeLog(this.getClass().getName() + ":paramMap==" + paramMap);
// StringEscapeUtils.unescapeXml(XMLparam);
// String system_id = (String)paramMap.get("system_id");
// String requester_id = (String)paramMap.get("requester_id");
// String branch_id = (String)paramMap.get("branch_id");
// (new BaseBean()).writeLog(this.getClass().getName() + ":requester_id==" + requester_id);
// SocketExecute socketExecute = null;
// if ("0157".equals(requester_id)) {
// socketExecute = new GetToCountSocketExecute();
// (new BaseBean()).writeLog(this.getClass().getName() + ":GetToCountSocketExecute");
// } else if ("0170".equals(requester_id)) {
// socketExecute = new CWGLSocketExecute();
// (new BaseBean()).writeLog(this.getClass().getName() + ":CWGLSocketExecute");
// }
//
// String execute = ((SocketExecute)socketExecute).execute(XMLparam);
// return execute;
// }
}

@ -25,6 +25,7 @@ import weaver.conn.RecordSet;
import weaver.crm.Maint.CustomerInfoComInfo;
import weaver.fullsearch.util.SearchBrowserUtils;
import weaver.general.BaseBean;
import weaver.general.StringUtil;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.resource.ResourceComInfo;
@ -32,6 +33,8 @@ import weaver.system.RequestDefaultComInfo;
import weaver.systeminfo.SystemEnv;
import weaver.workflow.request.todo.OfsSettingObject;
import weaver.workflow.request.todo.RequestUtil;
import weaver.workflow.workflow.WorkflowBillComInfo;
import weaver.workflow.workflow.WorkflowComInfo;
import weaver.workflow.workflow.WorkflowConfigComInfo;
import javax.servlet.http.HttpServletRequest;
@ -303,12 +306,15 @@ public class GetListResultCmd extends AbstractCommonCommand<Map<String,Object>>{
orderby = OrderByListUtil.appendRequestIdOrderBy(orderby);
String firstFloor = bean.getFirstFloor();//建模表类型对应的数据id,根据这个id来获取这类流程需要额外展示的字段列
String wfid = reqparams.get("workflowid");
String orderrule = "";//0--升序 1--降序
String sysorder = "";//排序系统字段 0-紧急程度 1-创建日期 2-接收日期 3-操作时间 4-流程编号
String order_qc = "";
String order_by = "";
String orderfieldname = "";
List<String> orderfieldnameList = new ArrayList<>();
if (!"".equals(firstFloor)) {
RecordSet.executeQuery("select orderrule,sysorder from uf_treelistsetting where id = ?", Util.getIntValue(firstFloor));
RecordSet.executeQuery("select orderrule,sysorder,orderfieldname from uf_treelistsetting where id = ?", Util.getIntValue(firstFloor));
if (RecordSet.next()){
orderrule = RecordSet.getString("orderrule");
if ("0".equals(orderrule)){
@ -318,6 +324,13 @@ public class GetListResultCmd extends AbstractCommonCommand<Map<String,Object>>{
order_by = "desc";
}
sysorder = RecordSet.getString("sysorder");
if (wfid.contains("S")){
String[] split = wfid.split("_");
if (split.length>1){
wfid = split[1].substring(1);
orderfieldname = RecordSet.getString("orderfieldname");
}
}
}
}
if (!"".equals(firstFloor) && !"".equals(sysorder)) {
@ -345,6 +358,28 @@ public class GetListResultCmd extends AbstractCommonCommand<Map<String,Object>>{
}
}
WorkflowBillComInfo wcInfo = new WorkflowBillComInfo();
WorkflowComInfo wf = new WorkflowComInfo();
if (!StringUtil.isEmpty(wfid)&&!StringUtil.isEmpty(orderfieldname)){
String formId = wf.getFormId(wfid);
String tablename = wcInfo.getTablename(formId);
String[] split = orderfieldname.split(",");
String orderfieldnamesqlsql = "";
String order_cus = "";
if (StringUtil.isEmpty(order_by)){
order_by = "desc";
}
for (String s : split) {
orderfieldnamesqlsql = orderfieldnamesqlsql + ", (select " + s + " from "+tablename +" where requestid = t1.requestid ) as "+ s;
order_cus = orderfieldname +" "+ order_by+"," + order_cus ;
}
// if (order_qc.startsWith(",")){
// order_qc = order_qc.substring(1);
// }
backfields0 = backfields0 + orderfieldnamesqlsql;
orderby = order_cus + orderby;
tableBean.setBackfields(backfields0);
}
tableBean.setSqlorderby(orderby);

File diff suppressed because it is too large Load Diff

@ -0,0 +1,47 @@
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.io.FileInputStream" %>
<%@ page import="java.io.File" %>
<%@ page import="org.apache.poi.ss.usermodel.Workbook" %>
<%@ page import="org.apache.poi.xssf.usermodel.XSSFWorkbook" %>
<%@ page import="org.apache.poi.ss.usermodel.Sheet" %>
<%@ page import="org.apache.poi.ss.usermodel.Row" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="com.engine.custom.archives.entity.Dept" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="weaver.soa.workflow.request.RequestService" %>
<%@ page import="weaver.soa.workflow.request.RequestInfo" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="com.engine.custom.archives.action.WorkflowToDocCus" %>
<%@ page import="com.engine.custom.archives.util.ArchivesUtil" %>
<%@ page import="com.alibaba.fastjson.JSON" %>
<%
generaRequestFormPdf(895895,0);
%>
<%!
/**
* 生成主流程承办单
*
* @param requestid
* 生成表单时的签字意见是否需要子流程的签字意见
*
*/
public static List<String> generaRequestFormPdf(int requestid ,int reqType) {
// 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(ArchivesUtil.getWfNameByid(requestInfo.getWorkflowid()) + "-" + requestInfo.getDescription());
// log.error("generaRequestFormPdf,requestInfo:{}", JSON.toJSONString(requestInfo));
return workflowToDoc.execute(requestInfo, reqType);
}
%>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,25 @@
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="com.alibaba.fastjson.JSONArray" %>
<%@ page import="com.engine.common.util.ParamUtil" %>
<%@ page import="java.util.Map" %>
<%@ page import="com.weaverboot.weaComponent.impl.weaTable.table.impl.DefaultWeaTable" %>
<%@ page import="com.weaverboot.tools.componentTools.table.WeaTableTools" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%!
%>
<%
Map<String, Object> param = ParamUtil.request2Map(request);
String dataKey = (String) param.get("dataKey");
DefaultWeaTable defaultWeaTable = WeaTableTools.checkTableStringConfig(dataKey, DefaultWeaTable.class);
%>
Loading…
Cancel
Save