<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="com.alibaba.fastjson.JSONArray" %>
<%@ page import="java.util.regex.Pattern" %>
<%@ page import="java.util.regex.Matcher" %>
<%@ page import="java.io.*" %>
<%@ page import="weaver.docs.webservices.DocInfo" %>
<%@ page import="weaver.docs.webservices.DocAttachment" %>
<%@ page import="org.apache.axis.encoding.Base64" %>
<%@ page import="weaver.docs.webservices.DocServiceImpl" %>
<%@ page import="weaver.hrm.User" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.*" %>
<%@ page import="org.apache.commons.lang.StringUtils" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import="org.apache.http.impl.client.CloseableHttpClient" %>
<%@ page import="org.apache.http.impl.client.HttpClients" %>
<%@ page import="org.apache.http.client.methods.HttpPost" %>
<%@ page import="com.alibaba.fastjson.JSON" %>
<%@ page import="org.apache.http.entity.StringEntity" %>
<%@ page import="org.apache.http.client.methods.CloseableHttpResponse" %>
<%@ page import="org.apache.http.HttpStatus" %>
<%@ page import="org.apache.http.HttpEntity" %>
<%@ page import="org.apache.http.util.EntityUtils" %>
<%@ page import="org.apache.http.client.ClientProtocolException" %>
<%@ page import="weaver.hrm.HrmUserVarify" %>
<%@ page import="java.net.URL" %>
<%@ page import="java.net.HttpURLConnection" %>
<%@ page import="org.apache.http.HttpException" %>
<%@ page import="org.apache.http.client.HttpClient" %>
<%@ page import="org.apache.commons.httpclient.methods.PostMethod" %>
<%@ page import="org.apache.commons.httpclient.params.HttpMethodParams" %>
<%@ page import="org.slf4j.Logger" %>
<%@ page import="org.slf4j.LoggerFactory" %>
<%@ page import="com.engine.custom.archives.util.ArchivesUtil" %>
<%@ page import="com.engine.custom.archives.entity.PushArchivesBean" %>
<%@ page import="com.engine.custom.hg.util.HgUtils" %>
<%@ page import="com.dcfs.fts.common.error.FtpException" %>
<%@ page import="weaver.file.ImageFileManager" %>
<%@ page import="weaver.soa.workflow.request.RequestService" %>
<%@ page import="weaver.soa.workflow.request.RequestInfo" %>
<%@ page import="cn.hutool.core.util.ZipUtil" %>
<%@ page import="weaver.hrm.company.DepartmentComInfo" %>
<%@ page import="java.time.format.DateTimeFormatter" %>
<%@ page import="java.time.LocalDate" %>
<%@ page import="weaver.general.StringUtil" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.nio.charset.StandardCharsets" %>
<%@ page import="okhttp3.*" %>
<%@ page import="com.engine.common.util.ParamUtil" %>

<%
    Map<String, Object> paramMap = ParamUtil.request2Map(request);
    String requestid = Util.null2String(paramMap.get("requestid"));
    Logger log = LoggerFactory.getLogger("Archives");
    log.info("PushArchivesCorn====Begin========");
    Date date = ArchivesUtil.getDate();
    String dateStr = new SimpleDateFormat("yyyyMMdd").format(date);
    ArrayList<PushArchivesBean> pushArchivesBeans = new ArrayList<>();
    PushArchivesBean pushArchivesBean = new PushArchivesBean();
    pushArchivesBean.setRequest(Util.getIntValue(requestid));
    pushArchivesBeans.add(pushArchivesBean);
    pushArchives(pushArchivesBeans,dateStr);

%>

<%!
    public static Logger log = LoggerFactory.getLogger("Archives");
    private static String filePath = "/opt/oadata/archivesFile";;
    private static String Url = "http://14.1.213.5:18080/fcscloud/composite/upload" ;
    private static String templatePath = "/opt/weaver/archivesFile/template/"; // 模板文件路径
    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(List<PushArchivesBean> result, String dateStr) {
        // log.info("PushArchivesCorn====Begin========{}", param);
        filePath = filePath + File.separator + dateStr ;
        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);
                if ("-1".equals(context)){
                    continue;
                }
                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,"esbtxtml",s);
                updateRecord(request,"zt","0");
                log.error("textZip:{}", s);
            } catch (FtpException e) {
                e.printStackTrace();
                log.error("推送档案requestid:{}异常,异常原因为:{}",request,e.getMessage());
            } catch (IOException e) {
                e.printStackTrace();
                log.error("推送档案requestid:{}异常,异常原因为:{}",request,e.getMessage());
            } catch (Exception e){
                e.printStackTrace();
                log.error("推送档案requestid:{}异常,异常原因为:{}",request,e.getMessage());
            }
        }

    }


    private String generateFile(int requestid) throws FtpException, IOException {
        Map<String, String> requesData = getRequestByid(requestid);
        String newRequestid = "togd"+requestid;
        log.info("requesData:{}", requesData);
        String bh = requesData.get("bh");
        if (StringUtil.isEmpty(bh)){
            return "-1";
        }
        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 + newRequestid + File.separator + fjdir + File.separator + lcfjWord + "-" +imageFileManager.getImageFileName();
            fjFileName.add(lcfjWord + "-" +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 + "-" +  imageFileManager.getImageFileName() + ".pdf");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                if(inputStream!=null) {
                    try {
                        inputStream.close();
                    } 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 + newRequestid + File.separator + fjdir + File.separator + qzyjfjWord+ "-" +imageFileManager.getImageFileName();
            fjFileName.add(qzyjfjWord+ "-" +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+ "-" + imageFileManager.getImageFileName() + ".pdf");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                if(inputStream!=null) {
                    try {
                        inputStream.close();
                    } 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 + newRequestid + 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 + newRequestid + File.separator + zwdir + File.separator + newFile + ".pdf");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                if(inputStream!=null) {
                    try {
                        inputStream.close();
                    } 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 + newRequestid + 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 + newRequestid + File.separator + zwdir + File.separator + newFile + ".pdf");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                if(inputStream!=null) {
                    try {
                        inputStream.close();
                    } 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 + newRequestid + File.separator + cbddir + File.separator + fjFile + i[0] + "_" + wjcldWord+".pdf";
            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();
                    }
                }
            }
        });
//正文


        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 workflowid = requestInfo.getWorkflowid();
        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");
        log.error("ftpFilePath:{}", ftpFilePath);
        updateRecord(requestid,"esbwjml",ftpFilePath);
        // String ftpFilePathNew = HgUtils.putFile(zipName, "test" + File.separator + requestid + ".zip");
        // log.error("ftpFilePathNew:{}", ftpFilePathNew);
        String context = getContext(requestid, requesData, newRequestid + ".zip", zwFileName, fjFileName);
        // insertRecord(requestid, context, ftpFilePath);
        updateRecord(requestid,"content",context);
        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);
            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"));
            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("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("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 {
                if (StringUtil.isEmpty(record)){
                    continue;
                }
                String departmentName = departmentComInfo.getDepartmentName(record);
                deptName.add(departmentName);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        return String.join("&&", deptName);
    }

    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);
    }



%>