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

723 lines
37 KiB
Java

1 year ago
package com.engine.custom.archives.service.secondBranch;
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.archives.util.KeyWord;
import com.engine.custom.hg.util.HgUtils;
import org.apache.commons.lang.StringUtils;
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.company.DepartmentComInfo;
import weaver.soa.workflow.request.RequestInfo;
import weaver.soa.workflow.request.RequestService;
import weaver.workflow.workflow.WorkflowBillComInfo;
import weaver.workflow.workflow.WorkflowComInfo;
import java.io.*;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
public class SecondBranchReceivingPushArchivesService implements KeyWord {
private static String filePath;
private static String Url;
private static String templatePath; // 模板文件路径
private int endTime= 7;
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"));
endTime = Util.getIntValue(param.get("endTime"),7);
}
public void pushArchives(Map<String, String> param) {
log.info("FirstBranchReceivingPushArchivesService ====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));
RecordSet recordSet = new RecordSet();
List<PushArchivesBean> result = ArchivesUtil.getResultList(recordSet, firstSecond, lastSecond, 7);
log.error("推送分行收文的数量:{}", result.size());
File file = ArchivesUtil.crFile(filePath + "/togd_" + new SimpleDateFormat("yyyyMMdd000000").format(date));
log.error("textfile:{}", file.getAbsolutePath());
for (PushArchivesBean pushArchivesBean : result) {
if (ArchivesUtil.isAfterSevenAM(endTime)){
log.info("超过执行时间:{}点暂停计划任务",endTime);
break;
}
int requestid = pushArchivesBean.getRequest();
try {
log.error("requestid:{}", requestid);
//1.生成文件及推送的txt
String context = extracted(requestid);
log.error("context:{}", context);
//1.生成文件及推送的txt
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);
updateRecord(requestid,"esbtxtml",s);
updateRecord(requestid,"zt","0");
log.error("textZip:{}", s);
}catch (Exception e){
e.printStackTrace();
log.error("推送档案requestid:{}异常,异常原因为:{}",requestid,e.getMessage());
}
}
} 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 {
String newRequestid = "togd"+requestid;
RequestService requestService = new RequestService();
RequestInfo requestInfo = requestService.getRequest(Util.getIntValue(requestid), 100);
String workflowid = requestInfo.getWorkflowid();
Map<String, String> requesData = getRequestByid(requestid);
log.info("requesData:{}", requesData);
String fj = Util.null2String(requesData.get("fj"));
String zwkbj = Util.null2String(requesData.get("zwkbj"));
String lczw = Util.null2String(requesData.get("lczw"));
String gwly = Util.null2String(requesData.get("gwly"));
//增加签字意见中的附件到附件文件夹中
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> zwkbjMap = ArchivesUtil.getFileIdByDocId(zwkbj);
// Map<String, String> lczwMap = ArchivesUtil.getFileIdByDocId(lczw);
Map<String, String> lczwMap = new HashMap<>();
//判断公文来源
if ("0".equals(gwly)){
lczwMap = ArchivesUtil.getFileIdByDocId(lczw);
}else {
lczwMap = 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 + newRequestid + File.separator + FJDIR + File.separator + LCFJWORD + i[0] +"-" + imageFileManager.getImageFileName();
fjFileName.add(LCFJWORD+ 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 + newRequestid + File.separator + FJDIR + File.separator + LCFJWORD+ i[0] + "-" + imageFileManager.getImageFileName() + ".pdf");
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if(inputStream!=null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
i[0]++;
});
i[0] = 1;
//签字意见附件
signFiles.forEach((docid, imageid) -> {
ImageFileManager imageFileManager = new ImageFileManager();
imageFileManager.getImageFileInfoById(Util.getIntValue(imageid));
InputStream inputStream = imageFileManager.getInputStream();
//中文路径/中文文件名
String imageFileName = filePath + File.separator + newRequestid + File.separator + FJDIR + File.separator + QZYJFJWORD + i[0] + "-" +imageFileManager.getImageFileName();
fjFileName.add(QZYJFJWORD + 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 + newRequestid + File.separator + FJDIR + File.separator + QZYJFJWORD + i[0] + "-" + imageFileManager.getImageFileName() + ".pdf");
}
i[0]++;
} catch (IOException e) {
e.printStackTrace();
}finally {
if(inputStream!=null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
i[0] = 1;
Map<String, String> coReqFile = getCoReqFile(requestid, workflowid);
//协办要求
coReqFile.forEach((docid, imageid) -> {
ImageFileManager imageFileManager = new ImageFileManager();
imageFileManager.getImageFileInfoById(Util.getIntValue(imageid));
InputStream inputStream = imageFileManager.getInputStream();
zwFileName.add(XBBMFJWORD+ i[0] +"-"+ imageFileManager.getImageFileName());
//中文路径/中文文件名
String imageFileName = filePath + File.separator + newRequestid + File.separator + FJDIR + File.separator + XBBMFJWORD + 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 + newRequestid + File.separator + FJDIR + File.separator+XBBMFJWORD+ i[0] +"-" + imageFileManager.getImageFileName() + ".pdf");
}
i[0]++;
} catch (IOException e) {
e.printStackTrace();
}finally {
if(inputStream!=null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
// i[0] = 1;
// //正文
// 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 + newRequestid + 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 + newRequestid + File.separator + zwdir + File.separator + imageFileManager.getImageFileName() + ".pdf");
// }
//
// } catch (IOException e) {
// e.printStackTrace();
// }finally {
// if(inputStream!=null) {
// try {
// inputStream.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// }
// });
i[0] = 1;
//正文
lczwMap.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 + newRequestid + File.separator + ZWDIR + File.separator + (imageFileManager.getImageFileName().replaceAll("/","-"));
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 + newRequestid + File.separator + ZWDIR + File.separator + (imageFileManager.getImageFileName().replaceAll("/","-")) + ".pdf");
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if(inputStream!=null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
//开始承办单 先获取主流程的承办单
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);
//承办单
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 + newRequestid + File.separator + CBDDIR + File.separator + 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 + newRequestid + File.separator + CBDDIR + File.separator + WJCLDWORD + ".pdf" + ".pdf");
}
i[0]++;
} catch (IOException e) {
e.printStackTrace();
}finally {
if(inputStream!=null) {
try {
inputStream.close();
} 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);
}
//--------------------------------------------------------------------
String logFile = ArchivesUtil.getSignLog(requestid, CBDDIR+File.separator+LZXXDIR, requestInfo.getCreatorid() + requestInfo.getDescription(),templatePath,filePath,false,workflowid);
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 + newRequestid + ".zip";
ZipUtil.zip(filePath + File.separator + newRequestid, zipName);
log.error("zipName:{}", zipName);
String ftpFilePath = HgUtils.putFile(zipName, newRequestid + ".zip");
ArchivesUtil.deleteDirectory(filePath + File.separator + newRequestid);
updateRecord(requestid,"esbwjml",ftpFilePath);
log.error("ftpFilePath:{}", ftpFilePath);
// String ftpFilePathNew = HgUtils.putFile(zipName, "test" + File.separator + newRequestid + ".zip");
// log.error("ftpFilePathNew:{}", ftpFilePathNew);
String context = getContext(requestid, requesData, newRequestid + ".zip", zwFileName, fjFileName);
// insertRecord(requestid, context, ftpFilePath);
log.error("context:{}", context);
updateRecord(requestid,"content",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_137 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")));
record.put("lczw", Util.null2String(rs.getString("lczw")));
record.put("gwly", Util.null2String(rs.getString("gwly")));
record.put("lwdwsx", Util.null2String(rs.getString("lwdwsx")));
record.put("fb", Util.null2String(rs.getString("fb")));
record.put("xjdw", Util.null2String(rs.getString("xjdw")));
record.put("ejzx", Util.null2String(rs.getString("ejzx")));
record.put("yjbm", Util.null2String(rs.getString("yjbm")));
record.put("yjfxxldbm", Util.null2String(rs.getString("yjfxxldbm")));
}
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"));
String swh = Util.null2String(requesData.get("lwh"));
context.append(swh).append("|");
String requestname = Util.null2String(requesData.get("REQUESTNAME"));
context.append(requestname).append("|");
String lwdwmc = Util.null2String(requesData.get("lwdwsx")); //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 fb = Util.null2String(requesData.get("fb"));
String yjbm = Util.null2String(requesData.get("yjbm"));
String[] deptData = ArchivesUtil.getDeptNameAndCode(ngbm);
String[] yjbmdeptData = ArchivesUtil.getDeptNameAndCode(yjbm);
String[] subData = getSubCom(fb);
context.append(yjbmdeptData[0]).append("|"); //10 行编号 -> 拟稿部门
context.append(yjbmdeptData[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 收文号 -> 来文文号
String lwh = Util.null2String(requesData.get("swh"));// 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,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("togd"+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("xjdw")).split(",")));
records.addAll(Arrays.asList(Util.null2String(requesData.get("ejzx")).split(",")));
records.addAll(Arrays.asList(Util.null2String(requesData.get("yjbm")).split(",")));
records.addAll(Arrays.asList(Util.null2String(requesData.get("yjfxxldbm")).split(",")));
ArrayList<String> deptName = new ArrayList<>();
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
for (String record : records) {
try {
if (StringUtil.isEmpty(record)){
continue;
}
String departmentName = departmentComInfo.getDepartmentName(record);
deptName.add(departmentName);
} catch (Exception e) {
e.printStackTrace();
}
}
return String.join("&&", deptName);
}
private Map<String, String> getCoReqFile(int requestid , String workflowid){
try {
RecordSet rs = new RecordSet();
rs.executeQuery("select * from uf_ArchivesSet where mainwfid = ?",workflowid);
boolean isCo = false;
String cowfid = "";
String cofield = "";
String cofieldid = "";
if (rs.next()){
cowfid = Util.null2String(rs.getString("cowfid"));
if (!StringUtils.isBlank(cowfid)){
isCo = true;
cofield = Util.null2String(rs.getString("cofield"));
cofieldid = Util.null2String(rs.getString("cofieldid"));
}
}
log.info("isCo:{};cowfid:{};cofield:{};cofieldid:{}",isCo,cowfid,cofield,cofieldid);
if(isCo){
ArrayList<String> CoSubRequest = new ArrayList<>();
Map<String, String> subRequest = ArchivesUtil.getSubRequest(Util.null2String(requestid) , 6);
log.info("subRequest:{}",subRequest);
for (Map.Entry<String, String> subRequestEntry : subRequest.entrySet()) {
String subWFid = subRequestEntry.getValue();
if (cowfid.equals(subWFid)){
CoSubRequest.add(subRequestEntry.getKey());
}
}
log.info("CoSubRequest.size:{}",CoSubRequest.size());
if (CoSubRequest.size() == 0){
return new HashMap<>();
}
WorkflowComInfo wf = new WorkflowComInfo();
WorkflowBillComInfo wcInfo = new WorkflowBillComInfo();
String formId = wf.getFormId(cowfid);
String tablename = wcInfo.getTablename(formId);
String cosql = "select "+cofield+" from " + tablename + " where " +
" requestid in ( " + String.join(",",CoSubRequest) + " ) " +
" order by requestid asc ";
log.info("cosql:{}",cosql);
rs.executeQuery(cosql);
log.info("rs.getExceptionMsg():{}",rs.getExceptionMsg());
String fieldValue = "";
String[] cofieldsplit = cofield.split(",");
String coFile = cofieldsplit[2]; //协办部门
ArrayList<String> docids = new ArrayList<>();
while (rs.next()){
String coFileValue = rs.getString(coFile);
docids.addAll(Arrays.asList(coFileValue.split(",")));
}
log.info("fieldValue:{}",fieldValue);
return ArchivesUtil.getFileIdByDocId(String.join(",",docids));
}
return new HashMap<>();
}catch (Exception e){
log.error("getCoReqFile:[}",e.getMessage());
return new HashMap<>();
}
}
private void updateRecord(int requestid, String field , String fieldvalue) {
String sql = "update uf_pushArchivesLog set "+field+" = ? where request = ?";
RecordSet recordSet = new RecordSet();
recordSet.executeUpdate(sql, fieldvalue, requestid);
}
public static String[] getSubCom(String ngbm) {
RecordSet rs = new RecordSet();
rs.executeQuery("select sub.id subid , SUBCOMPANYNAME from HRMSUBCOMPANY sub where sub.id = ? ",ngbm);
rs.next();
String subcompanyname = rs.getString("SUBCOMPANYNAME");
String subid = rs.getString("subid");
if ("总行".equals(subcompanyname)){
subcompanyname = "总行机关";
}
rs.executeQuery("select DAPYBH from HRMSUBCOMPANYDEFINED where SUBCOMID = ?",subid);
rs.next();
String DAPYBH = rs.getString("DAPYBH");
return new String[]{DAPYBH,subcompanyname};
}
}