package com.engine.custom.archives.service; 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 java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; 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 weaver.hrm.company.DepartmentComInfo; import weaver.soa.workflow.request.RequestService; import weaver.soa.workflow.request.RequestInfo; import weaver.hrm.User; import weaver.workflow.workflow.WorkflowBillComInfo; import weaver.workflow.workflow.WorkflowComInfo; import cn.hutool.core.util.ZipUtil; 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 = "附件"; private static final String lcfjWord = "流程附件"; private static final String qzyjfjWord = "签字意见附件"; private static final String xbbmfjWord = "协办部门附件"; private static final String wjcldWord = "文件处理单"; private static final String wjlzxxWord = "文件流转信息"; private int endTime= 7; public static Logger log = LoggerFactory.getLogger("Archives"); public void setProp(Map 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 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)); RecordSet recordSet = new RecordSet(); List result = ArchivesUtil.getResultList(recordSet, firstSecond, lastSecond, 1); 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 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 signFiles = ArchivesUtil.getSignFiles(requestid,true); List docids = new ArrayList<>(); // docids.addAll(Arrays.asList(fj.split(","))); // docids.addAll(Arrays.asList(zwkbj.split(","))); Map fjMap = ArchivesUtil.getFileIdByDocId(fj); // Map zwkbjMap = ArchivesUtil.getFileIdByDocId(zwkbj); // Map lczwMap = ArchivesUtil.getFileIdByDocId(lczw); Map lczwMap = new HashMap<>(); //判断公文来源 if ("0".equals(gwly)){ lczwMap = ArchivesUtil.getFileIdByDocId(lczw); }else { lczwMap = ArchivesUtil.getFileIdByDocId(zwkbj); } List zwFileName = new ArrayList<>(); List 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().replaceAll("/","-")); fjFileName.add(lcfjWord+ i[0] +"-" + 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 + fjdir + File.separator + lcfjWord+ i[0] + "-" + (imageFileManager.getImageFileName().replaceAll("/","-")) + ".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 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 requestDocid = ArchivesUtil.generaRequestFormPdf(requestid,1); // 1.去掉生成子流程承办单 // List subRequestDocid = generaSubRequestFormPdf(requestid); Map reqDocMap = ArchivesUtil.getFileIdByDocId(String.join(",", requestDocid)); // 2.去掉生成子流程承办单 // Map 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,true,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 getRequestByid(int requestid) { HashMap 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"))); record.put("lczw", Util.null2String(rs.getString("lczw"))); record.put("gwly", Util.null2String(rs.getString("gwly"))); record.put("lwdwsx", Util.null2String(rs.getString("lwdwsx"))); } rs.executeQuery(reqsql, requestid); if (rs.next()) { record.put("REQUESTNAME", Util.null2String(rs.getString("REQUESTNAME"))); } return record; } private String getContext(int requestid, Map requesData, String zipName, List zwFileName, List fjFileName) { StringBuilder context = new StringBuilder(); try { String swrq = Util.null2String(requesData.get("lwrq")); 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[] deptData = ArchivesUtil.getDeptNameAndCode(ngbm); String[] subData = ArchivesUtil.getSubCom(ngbm); context.append("D10001").append("|"); //10 行编号 -> 拟稿部门 context.append("总行机关").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,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("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 requesData) { HashSet 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(","))); ArrayList deptName = new ArrayList<>(); DepartmentComInfo departmentComInfo = new DepartmentComInfo(); for (String record : records) { try { if (StringUtil.isEmpty(record)){ continue; } String departmentName = departmentComInfo.getDepartmentmark(record); deptName.add(departmentName); } catch (Exception e) { e.printStackTrace(); } } return String.join("&&", deptName); } private Map 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 CoSubRequest = new ArrayList<>(); Map subRequest = ArchivesUtil.getSubRequest(Util.null2String(requestid) , 6); log.info("subRequest:{}",subRequest); for (Map.Entry 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 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); } }