|  | @@ -0,0 +1,815 @@
 | 
												
													
														
															|  | 
 |  | +package com.jeeplus.finance.invoice.util;
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +import com.alibaba.fastjson.JSON;
 | 
												
													
														
															|  | 
 |  | +import com.alibaba.fastjson.JSONArray;
 | 
												
													
														
															|  | 
 |  | +import com.jeeplus.finance.invoice.domain.SealUserInfo;
 | 
												
													
														
															|  | 
 |  | +import com.jeeplus.sys.utils.Global;
 | 
												
													
														
															|  | 
 |  | +import org.apache.commons.lang3.StringUtils;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.HttpEntity;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.HttpResponse;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.HttpStatus;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.NameValuePair;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.client.ClientProtocolException;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.client.config.RequestConfig;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.client.methods.CloseableHttpResponse;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.client.methods.HttpGet;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.client.methods.HttpPost;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.client.utils.URLEncodedUtils;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.entity.StringEntity;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.impl.client.CloseableHttpClient;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.impl.client.HttpClients;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.message.BasicNameValuePair;
 | 
												
													
														
															|  | 
 |  | +import org.apache.http.util.EntityUtils;
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +import javax.servlet.http.HttpServletResponse;
 | 
												
													
														
															|  | 
 |  | +import java.io.*;
 | 
												
													
														
															|  | 
 |  | +import java.net.HttpURLConnection;
 | 
												
													
														
															|  | 
 |  | +import java.net.URI;
 | 
												
													
														
															|  | 
 |  | +import java.net.URL;
 | 
												
													
														
															|  | 
 |  | +import java.net.URLConnection;
 | 
												
													
														
															|  | 
 |  | +import java.nio.charset.Charset;
 | 
												
													
														
															|  | 
 |  | +import java.util.*;
 | 
												
													
														
															|  | 
 |  | +import java.util.Map.Entry;
 | 
												
													
														
															|  | 
 |  | +import java.util.zip.ZipEntry;
 | 
												
													
														
															|  | 
 |  | +import java.util.zip.ZipFile;
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +/**
 | 
												
													
														
															|  | 
 |  | + * @author: 徐滕
 | 
												
													
														
															|  | 
 |  | + * @create: 2021-11-02 14:20
 | 
												
													
														
															|  | 
 |  | + **/
 | 
												
													
														
															|  | 
 |  | +public class SignaturePostUtil {
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    //竖版模板templateId
 | 
												
													
														
															|  | 
 |  | +    private static final String VERTICALTEMPLATEID = Global.getConfig("vertical_templateId");
 | 
												
													
														
															|  | 
 |  | +    //横板模板templateId
 | 
												
													
														
															|  | 
 |  | +    private static final String ACROSSTEMPLATEID = Global.getConfig("across_templateId");
 | 
												
													
														
															|  | 
 |  | +    private static final String HTTPTOP = Global.getConfig("signature_http_top");
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    private final static String apptoken = Global.getConfig("apptoken");
 | 
												
													
														
															|  | 
 |  | +    private final static String appsecret = Global.getConfig("appsecret");
 | 
												
													
														
															|  | 
 |  | +    private final static String signature = Global.getConfig("signature");
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    /**
 | 
												
													
														
															|  | 
 |  | +     * 发送get请求
 | 
												
													
														
															|  | 
 |  | +     *
 | 
												
													
														
															|  | 
 |  | +     * @param requestUrl
 | 
												
													
														
															|  | 
 |  | +     *      请求url
 | 
												
													
														
															|  | 
 |  | +     * @param requestHeader
 | 
												
													
														
															|  | 
 |  | +     *      请求头
 | 
												
													
														
															|  | 
 |  | +     * @param responseEncoding
 | 
												
													
														
															|  | 
 |  | +     *      响应编码
 | 
												
													
														
															|  | 
 |  | +     * @return 页面响应html
 | 
												
													
														
															|  | 
 |  | +     */
 | 
												
													
														
															|  | 
 |  | +    public static String sendGet(String requestUrl, Map<String, String> requestHeader, String responseEncoding) {
 | 
												
													
														
															|  | 
 |  | +        String result = "";
 | 
												
													
														
															|  | 
 |  | +        BufferedReader reader = null;
 | 
												
													
														
															|  | 
 |  | +        try {
 | 
												
													
														
															|  | 
 |  | +            if (requestUrl == null || requestUrl.isEmpty()) {
 | 
												
													
														
															|  | 
 |  | +                return result;
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            URL realUrl = new URL(requestUrl);
 | 
												
													
														
															|  | 
 |  | +            URLConnection connection = realUrl.openConnection();
 | 
												
													
														
															|  | 
 |  | +            connection.setRequestProperty("accept", "text/html, application/xhtml+xml, image/jxr, */*");
 | 
												
													
														
															|  | 
 |  | +            connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0");
 | 
												
													
														
															|  | 
 |  | +            if (requestHeader != null && requestHeader.size() > 0) {
 | 
												
													
														
															|  | 
 |  | +                for (Entry<String, String> entry : requestHeader.entrySet()) {
 | 
												
													
														
															|  | 
 |  | +                    connection.setRequestProperty(entry.getKey(), entry.getValue());
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            connection.connect();
 | 
												
													
														
															|  | 
 |  | +            if (responseEncoding == null || responseEncoding.isEmpty()) {
 | 
												
													
														
															|  | 
 |  | +                responseEncoding = "UTF-8";
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), responseEncoding));
 | 
												
													
														
															|  | 
 |  | +            String line;
 | 
												
													
														
															|  | 
 |  | +            while ((line = reader.readLine()) != null) {
 | 
												
													
														
															|  | 
 |  | +                result += line;
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  | +            System.out.println("发送GET请求出现异常!");
 | 
												
													
														
															|  | 
 |  | +            e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +        } finally {
 | 
												
													
														
															|  | 
 |  | +            try {
 | 
												
													
														
															|  | 
 |  | +                if (reader != null) {
 | 
												
													
														
															|  | 
 |  | +                    reader.close();
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  | +                e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        result = decodeUnicode(result);
 | 
												
													
														
															|  | 
 |  | +        return result;
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    /**
 | 
												
													
														
															|  | 
 |  | +     * 发送下载压缩包get请求
 | 
												
													
														
															|  | 
 |  | +     * @param requestUrl 请求url
 | 
												
													
														
															|  | 
 |  | +     * @param requestHeader 请求头
 | 
												
													
														
															|  | 
 |  | +     * @param fileName 下载文件名称
 | 
												
													
														
															|  | 
 |  | +     * @param responseEncoding 响应编码
 | 
												
													
														
															|  | 
 |  | +     * @return 页面响应html
 | 
												
													
														
															|  | 
 |  | +     */
 | 
												
													
														
															|  | 
 |  | +    public static String downloadZipGet(String requestUrl, Map<String, String> requestHeader, String fileName, String responseEncoding, HttpServletResponse response) {
 | 
												
													
														
															|  | 
 |  | +        String result = "";
 | 
												
													
														
															|  | 
 |  | +        BufferedReader reader = null;
 | 
												
													
														
															|  | 
 |  | +        try {
 | 
												
													
														
															|  | 
 |  | +            if (requestUrl == null || requestUrl.isEmpty()) {
 | 
												
													
														
															|  | 
 |  | +                return result;
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            URL realUrl = new URL(requestUrl);
 | 
												
													
														
															|  | 
 |  | +            URLConnection connection = realUrl.openConnection();
 | 
												
													
														
															|  | 
 |  | +            connection.setRequestProperty("accept", "text/html, application/xhtml+xml, image/jxr, */*");
 | 
												
													
														
															|  | 
 |  | +            connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0");
 | 
												
													
														
															|  | 
 |  | +            if (requestHeader != null && requestHeader.size() > 0) {
 | 
												
													
														
															|  | 
 |  | +                for (Entry<String, String> entry : requestHeader.entrySet()) {
 | 
												
													
														
															|  | 
 |  | +                    connection.setRequestProperty(entry.getKey(), entry.getValue());
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            connection.setRequestProperty("Content-Type", "application/zip");
 | 
												
													
														
															|  | 
 |  | +            connection.connect();
 | 
												
													
														
															|  | 
 |  | +            if (responseEncoding == null || responseEncoding.isEmpty()) {
 | 
												
													
														
															|  | 
 |  | +                responseEncoding = "UTF-8";
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            InputStream inputStream = connection.getInputStream();
 | 
												
													
														
															|  | 
 |  | +            //获取自己数组
 | 
												
													
														
															|  | 
 |  | +            byte[] getData = readInputStream(inputStream);
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +            //设置HTTP响应头
 | 
												
													
														
															|  | 
 |  | +            response.reset();//重置 响应头
 | 
												
													
														
															|  | 
 |  | +            response.setContentType("application/x-download");//告知浏览器下载文件,而不是直接打开,浏览器默认为打开
 | 
												
													
														
															|  | 
 |  | +            fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
 | 
												
													
														
															|  | 
 |  | +            response.addHeader("Content-Disposition" ,"attachment;filename=" +fileName+ "");//下载文件的名称
 | 
												
													
														
															|  | 
 |  | +            // 循环取出流中的数据
 | 
												
													
														
															|  | 
 |  | +            response.getOutputStream().write(getData);
 | 
												
													
														
															|  | 
 |  | +            response.getOutputStream().close();
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +            if(inputStream!=null){
 | 
												
													
														
															|  | 
 |  | +                inputStream.close();
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +        } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  | +            System.out.println("发送GET请求出现异常!");
 | 
												
													
														
															|  | 
 |  | +            e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +        } finally {
 | 
												
													
														
															|  | 
 |  | +            try {
 | 
												
													
														
															|  | 
 |  | +                if (reader != null) {
 | 
												
													
														
															|  | 
 |  | +                    reader.close();
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  | +                e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        return result;
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    /**
 | 
												
													
														
															|  | 
 |  | +     * 下载文件并保存到指定位置
 | 
												
													
														
															|  | 
 |  | +     * @param requestUrl 请求url
 | 
												
													
														
															|  | 
 |  | +     * @param requestHeader 请求头
 | 
												
													
														
															|  | 
 |  | +     * @param fileName 下载文件名称
 | 
												
													
														
															|  | 
 |  | +     * @param responseEncoding 响应编码
 | 
												
													
														
															|  | 
 |  | +     * @return 页面响应html
 | 
												
													
														
															|  | 
 |  | +     */
 | 
												
													
														
															|  | 
 |  | +    public static Map<String,Object> downloadZipDesignated(String requestUrl, Map<String, String> requestHeader, String fileName, String responseEncoding) {
 | 
												
													
														
															|  | 
 |  | +        Map<String,Object> map = new HashMap<>();
 | 
												
													
														
															|  | 
 |  | +        BufferedReader reader = null;
 | 
												
													
														
															|  | 
 |  | +        try {
 | 
												
													
														
															|  | 
 |  | +            if (requestUrl == null || requestUrl.isEmpty()) {
 | 
												
													
														
															|  | 
 |  | +                map.put("success",false);
 | 
												
													
														
															|  | 
 |  | +                map.put("message",fileName + " 的请求路径为空");
 | 
												
													
														
															|  | 
 |  | +                map.put("fileName",fileName);
 | 
												
													
														
															|  | 
 |  | +                map.put("filePath","");
 | 
												
													
														
															|  | 
 |  | +                return map;
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            URL realUrl = new URL(requestUrl);
 | 
												
													
														
															|  | 
 |  | +            URLConnection connection = realUrl.openConnection();
 | 
												
													
														
															|  | 
 |  | +            connection.setRequestProperty("accept", "text/html, application/xhtml+xml, image/jxr, */*");
 | 
												
													
														
															|  | 
 |  | +            connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0");
 | 
												
													
														
															|  | 
 |  | +            if (requestHeader != null && requestHeader.size() > 0) {
 | 
												
													
														
															|  | 
 |  | +                for (Entry<String, String> entry : requestHeader.entrySet()) {
 | 
												
													
														
															|  | 
 |  | +                    connection.setRequestProperty(entry.getKey(), entry.getValue());
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            connection.setRequestProperty("Content-Type", "application/zip");
 | 
												
													
														
															|  | 
 |  | +            connection.connect();
 | 
												
													
														
															|  | 
 |  | +            if (responseEncoding == null || responseEncoding.isEmpty()) {
 | 
												
													
														
															|  | 
 |  | +                responseEncoding = "UTF-8";
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            InputStream inputStream = connection.getInputStream();
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +            BufferedInputStream bis = new BufferedInputStream(inputStream);
 | 
												
													
														
															|  | 
 |  | +            //判断文件的保存路径后面是否以/结尾
 | 
												
													
														
															|  | 
 |  | +            String filePath = null;
 | 
												
													
														
															|  | 
 |  | +            if(System.getProperty("os.name").toLowerCase().contains("win")){
 | 
												
													
														
															|  | 
 |  | +                filePath = "D:/attachment-file/";
 | 
												
													
														
															|  | 
 |  | +            }else{
 | 
												
													
														
															|  | 
 |  | +                filePath = "/attachment-file/";
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            //写入到文件(注意文件保存路径的后面一定要加上文件的名称)
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("\\\\","");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("/","");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("\\*","");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("\\?","");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("\"","");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("<","");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll(">","");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("\\|","");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("\\’","'");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("\\”","\"");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("【","(");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("\\{","(");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("】",")");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("}",")");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll(",",",");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll(":",":");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("—","-");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("……","");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("±","");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("#","");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("%","");
 | 
												
													
														
															|  | 
 |  | +            fileName = fileName.replaceAll("Π","");
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +            FileOutputStream fileOut = new FileOutputStream(filePath + fileName);
 | 
												
													
														
															|  | 
 |  | +            BufferedOutputStream bos = new BufferedOutputStream(fileOut);
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +            byte[] buf = new byte[4096];
 | 
												
													
														
															|  | 
 |  | +            int length = bis.read(buf);
 | 
												
													
														
															|  | 
 |  | +            //保存文件
 | 
												
													
														
															|  | 
 |  | +            while(length != -1)
 | 
												
													
														
															|  | 
 |  | +            {
 | 
												
													
														
															|  | 
 |  | +                bos.write(buf, 0, length);
 | 
												
													
														
															|  | 
 |  | +                length = bis.read(buf);
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            //response.getOutputStream().close();
 | 
												
													
														
															|  | 
 |  | +            bos.close();
 | 
												
													
														
															|  | 
 |  | +            fileOut.close();
 | 
												
													
														
															|  | 
 |  | +            bis.close();
 | 
												
													
														
															|  | 
 |  | +            if(inputStream!=null){
 | 
												
													
														
															|  | 
 |  | +                inputStream.close();
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            map.put("success",true);
 | 
												
													
														
															|  | 
 |  | +            map.put("message","下载成功");
 | 
												
													
														
															|  | 
 |  | +            map.put("fileName",fileName);
 | 
												
													
														
															|  | 
 |  | +            map.put("filePath",filePath);
 | 
												
													
														
															|  | 
 |  | +        } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  | +            System.out.println("发送GET请求出现异常!");
 | 
												
													
														
															|  | 
 |  | +            e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +        } finally {
 | 
												
													
														
															|  | 
 |  | +            try {
 | 
												
													
														
															|  | 
 |  | +                if (reader != null) {
 | 
												
													
														
															|  | 
 |  | +                    reader.close();
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  | +                e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        return map;
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    /**
 | 
												
													
														
															|  | 
 |  | +     * 从输入流中获取字节数组
 | 
												
													
														
															|  | 
 |  | +     * @param inputStream
 | 
												
													
														
															|  | 
 |  | +     * @return
 | 
												
													
														
															|  | 
 |  | +     * @throws IOException
 | 
												
													
														
															|  | 
 |  | +     */
 | 
												
													
														
															|  | 
 |  | +    public static byte[] readInputStream(InputStream inputStream) throws IOException {
 | 
												
													
														
															|  | 
 |  | +        byte[] buffer = new byte[1024];
 | 
												
													
														
															|  | 
 |  | +        int len = 0;
 | 
												
													
														
															|  | 
 |  | +        ByteArrayOutputStream bos = new ByteArrayOutputStream();
 | 
												
													
														
															|  | 
 |  | +        while((len = inputStream.read(buffer)) != -1) {
 | 
												
													
														
															|  | 
 |  | +            bos.write(buffer, 0, len);
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        bos.close();
 | 
												
													
														
															|  | 
 |  | +        return bos.toByteArray();
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    /**
 | 
												
													
														
															|  | 
 |  | +     * 发送post请求
 | 
												
													
														
															|  | 
 |  | +     *
 | 
												
													
														
															|  | 
 |  | +     * @param requestUrl 请求url
 | 
												
													
														
															|  | 
 |  | +     * @param requestHeader 请求头
 | 
												
													
														
															|  | 
 |  | +     * @param formTexts 表单数据
 | 
												
													
														
															|  | 
 |  | +     * @param files 上传文件
 | 
												
													
														
															|  | 
 |  | +     * @param requestEncoding 请求编码
 | 
												
													
														
															|  | 
 |  | +     * @param responseEncoding 响应编码
 | 
												
													
														
															|  | 
 |  | +     * @return 页面响应html
 | 
												
													
														
															|  | 
 |  | +     */
 | 
												
													
														
															|  | 
 |  | +    public static String sendPost(String requestUrl, Map<String, String> requestHeader, Map<String, String> formTexts, File[] files, String requestEncoding, String responseEncoding) {
 | 
												
													
														
															|  | 
 |  | +        OutputStream out = null;
 | 
												
													
														
															|  | 
 |  | +        BufferedReader reader = null;
 | 
												
													
														
															|  | 
 |  | +        String result = "";
 | 
												
													
														
															|  | 
 |  | +        try {
 | 
												
													
														
															|  | 
 |  | +            if (requestUrl == null || requestUrl.isEmpty()) {
 | 
												
													
														
															|  | 
 |  | +                return result;
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            URL realUrl = new URL(requestUrl);
 | 
												
													
														
															|  | 
 |  | +            HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
 | 
												
													
														
															|  | 
 |  | +            connection.setRequestProperty("accept", "text/html, application/xhtml+xml, image/jxr, */*");
 | 
												
													
														
															|  | 
 |  | +            connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0");
 | 
												
													
														
															|  | 
 |  | +            if (requestHeader != null && requestHeader.size() > 0) {
 | 
												
													
														
															|  | 
 |  | +                for (Entry<String, String> entry : requestHeader.entrySet()) {
 | 
												
													
														
															|  | 
 |  | +                    connection.setRequestProperty(entry.getKey(), entry.getValue());
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            connection.setDoOutput(true);
 | 
												
													
														
															|  | 
 |  | +            connection.setDoInput(true);
 | 
												
													
														
															|  | 
 |  | +            connection.setRequestMethod("POST");
 | 
												
													
														
															|  | 
 |  | +            if (requestEncoding == null || requestEncoding.isEmpty()) {
 | 
												
													
														
															|  | 
 |  | +                requestEncoding = "UTF-8";
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            if (responseEncoding == null || responseEncoding.isEmpty()) {
 | 
												
													
														
															|  | 
 |  | +                responseEncoding = "UTF-8";
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            if (requestHeader != null && requestHeader.size() > 0) {
 | 
												
													
														
															|  | 
 |  | +                for (Entry<String, String> entry : requestHeader.entrySet()) {
 | 
												
													
														
															|  | 
 |  | +                    connection.setRequestProperty(entry.getKey(), entry.getValue());
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            if (files == null || files.length == 0) {
 | 
												
													
														
															|  | 
 |  | +                String boundary = "-----------------------------" + String.valueOf(new Date().getTime());
 | 
												
													
														
															|  | 
 |  | +                connection.setRequestProperty("content-type", "multipart/form-data; boundary=" + boundary);
 | 
												
													
														
															|  | 
 |  | +                out = new DataOutputStream(connection.getOutputStream());
 | 
												
													
														
															|  | 
 |  | +                if (formTexts != null && formTexts.size() > 0) {
 | 
												
													
														
															|  | 
 |  | +                    StringBuilder sbFormData = new StringBuilder();
 | 
												
													
														
															|  | 
 |  | +                    for (Entry<String, String> entry : formTexts.entrySet()) {
 | 
												
													
														
															|  | 
 |  | +                        sbFormData.append("--" + boundary + "\r\n");
 | 
												
													
														
															|  | 
 |  | +                        sbFormData.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"\r\n\r\n");
 | 
												
													
														
															|  | 
 |  | +                        sbFormData.append(entry.getValue() + "\r\n");
 | 
												
													
														
															|  | 
 |  | +                    }
 | 
												
													
														
															|  | 
 |  | +                    out.write(sbFormData.toString().getBytes(requestEncoding));
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            } else {
 | 
												
													
														
															|  | 
 |  | +                String boundary = "-----------------------------" + String.valueOf(new Date().getTime());
 | 
												
													
														
															|  | 
 |  | +                connection.setRequestProperty("content-type", "multipart/form-data; boundary=" + boundary);
 | 
												
													
														
															|  | 
 |  | +                out = new DataOutputStream(connection.getOutputStream());
 | 
												
													
														
															|  | 
 |  | +                if (formTexts != null && formTexts.size() > 0) {
 | 
												
													
														
															|  | 
 |  | +                    StringBuilder sbFormData = new StringBuilder();
 | 
												
													
														
															|  | 
 |  | +                    for (Entry<String, String> entry : formTexts.entrySet()) {
 | 
												
													
														
															|  | 
 |  | +                        sbFormData.append("--" + boundary + "\r\n");
 | 
												
													
														
															|  | 
 |  | +                        sbFormData.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"\r\n\r\n");
 | 
												
													
														
															|  | 
 |  | +                        sbFormData.append(entry.getValue() + "\r\n");
 | 
												
													
														
															|  | 
 |  | +                    }
 | 
												
													
														
															|  | 
 |  | +                    out.write(sbFormData.toString().getBytes(requestEncoding));
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +                for (File file : files) {
 | 
												
													
														
															|  | 
 |  | +                    if (!file.exists()) {
 | 
												
													
														
															|  | 
 |  | +                        continue;
 | 
												
													
														
															|  | 
 |  | +                    }
 | 
												
													
														
															|  | 
 |  | +                    out.write(("--" + boundary + "\r\n").getBytes(requestEncoding));
 | 
												
													
														
															|  | 
 |  | +                    out.write(("Content-Disposition: form-data; name=\" file \"; filename=\"" + file.getName() + "\"\r\n").getBytes(requestEncoding));
 | 
												
													
														
															|  | 
 |  | +                    out.write(("Content-Type: application/x-msdownload\r\n\r\n").getBytes(requestEncoding));
 | 
												
													
														
															|  | 
 |  | +                    DataInputStream in = new DataInputStream(new FileInputStream(file));
 | 
												
													
														
															|  | 
 |  | +                    int bytes = 0;
 | 
												
													
														
															|  | 
 |  | +                    byte[] bufferOut = new byte[1024];
 | 
												
													
														
															|  | 
 |  | +                    while ((bytes = in.read(bufferOut)) != -1) {
 | 
												
													
														
															|  | 
 |  | +                        out.write(bufferOut, 0, bytes);
 | 
												
													
														
															|  | 
 |  | +                    }
 | 
												
													
														
															|  | 
 |  | +                    in.close();
 | 
												
													
														
															|  | 
 |  | +                    out.write(("\r\n").getBytes(requestEncoding));
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +                out.write(("--" + boundary + "--").getBytes(requestEncoding));
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            out.flush();
 | 
												
													
														
															|  | 
 |  | +            out.close();
 | 
												
													
														
															|  | 
 |  | +            out = null;
 | 
												
													
														
															|  | 
 |  | +            reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), responseEncoding));
 | 
												
													
														
															|  | 
 |  | +            String line;
 | 
												
													
														
															|  | 
 |  | +            while ((line = reader.readLine()) != null) {
 | 
												
													
														
															|  | 
 |  | +                result += line;
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  | +            System.out.println("发送POST请求出现异常!");
 | 
												
													
														
															|  | 
 |  | +            e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +        } finally {
 | 
												
													
														
															|  | 
 |  | +            try {
 | 
												
													
														
															|  | 
 |  | +                if (out != null) {
 | 
												
													
														
															|  | 
 |  | +                    out.close();
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +                if (reader != null) {
 | 
												
													
														
															|  | 
 |  | +                    reader.close();
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            } catch (IOException ex) {
 | 
												
													
														
															|  | 
 |  | +                ex.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        result = decodeUnicode(result);
 | 
												
													
														
															|  | 
 |  | +        return result;
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    /**
 | 
												
													
														
															|  | 
 |  | +     * ApplicationJson的post请求
 | 
												
													
														
															|  | 
 |  | +     * @return
 | 
												
													
														
															|  | 
 |  | +     */
 | 
												
													
														
															|  | 
 |  | +    public static String sendPostApplicationJson(String url, String jsonString) {
 | 
												
													
														
															|  | 
 |  | +        CloseableHttpClient httpClient = null;
 | 
												
													
														
															|  | 
 |  | +        CloseableHttpResponse httpResponse = null;
 | 
												
													
														
															|  | 
 |  | +        String result = "";
 | 
												
													
														
															|  | 
 |  | +        // 创建httpClient实例
 | 
												
													
														
															|  | 
 |  | +        httpClient = HttpClients.createDefault();
 | 
												
													
														
															|  | 
 |  | +        // 创建httpPost远程连接实例
 | 
												
													
														
															|  | 
 |  | +        HttpPost httpPost = new HttpPost(url);
 | 
												
													
														
															|  | 
 |  | +        // 配置请求参数实例
 | 
												
													
														
															|  | 
 |  | +        RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间
 | 
												
													
														
															|  | 
 |  | +                .setConnectionRequestTimeout(35000)// 设置连接请求超时时间
 | 
												
													
														
															|  | 
 |  | +                .setSocketTimeout(60000)// 设置读取数据连接超时时间
 | 
												
													
														
															|  | 
 |  | +                .build();
 | 
												
													
														
															|  | 
 |  | +        // 为httpPost实例设置配置
 | 
												
													
														
															|  | 
 |  | +        httpPost.setConfig(requestConfig);
 | 
												
													
														
															|  | 
 |  | +        // 设置请求头鉴权
 | 
												
													
														
															|  | 
 |  | +        httpPost.setHeader("x-qys-accesstoken", apptoken);
 | 
												
													
														
															|  | 
 |  | +        httpPost.setHeader("x-qys-signature", signature);
 | 
												
													
														
															|  | 
 |  | +        httpPost.setHeader("x-qys-timestamp", "0");
 | 
												
													
														
															|  | 
 |  | +        // 包含内容格式设置
 | 
												
													
														
															|  | 
 |  | +        httpPost.addHeader("Content-Type", "application/json");
 | 
												
													
														
															|  | 
 |  | +        // 封装post请求参数
 | 
												
													
														
															|  | 
 |  | +        if (null != jsonString) {
 | 
												
													
														
															|  | 
 |  | +            // 为httpPost设置封装好的请求参数
 | 
												
													
														
															|  | 
 |  | +            System.out.println("添加到实体------");
 | 
												
													
														
															|  | 
 |  | +            httpPost.setEntity(new StringEntity(jsonString, "UTF-8"));
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        try {
 | 
												
													
														
															|  | 
 |  | +            // httpClient对象执行post请求,并返回响应参数对象
 | 
												
													
														
															|  | 
 |  | +            httpResponse = httpClient.execute(httpPost);
 | 
												
													
														
															|  | 
 |  | +            // 从响应对象中获取响应内容
 | 
												
													
														
															|  | 
 |  | +            HttpEntity entity = httpResponse.getEntity();
 | 
												
													
														
															|  | 
 |  | +            result = EntityUtils.toString(entity);
 | 
												
													
														
															|  | 
 |  | +        } catch (ClientProtocolException e) {
 | 
												
													
														
															|  | 
 |  | +            e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +        } catch (IOException e) {
 | 
												
													
														
															|  | 
 |  | +            e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +        } finally {
 | 
												
													
														
															|  | 
 |  | +            // 关闭资源
 | 
												
													
														
															|  | 
 |  | +            if (null != httpResponse) {
 | 
												
													
														
															|  | 
 |  | +                try {
 | 
												
													
														
															|  | 
 |  | +                    httpResponse.close();
 | 
												
													
														
															|  | 
 |  | +                } catch (IOException e) {
 | 
												
													
														
															|  | 
 |  | +                    e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            if (null != httpClient) {
 | 
												
													
														
															|  | 
 |  | +                try {
 | 
												
													
														
															|  | 
 |  | +                    httpClient.close();
 | 
												
													
														
															|  | 
 |  | +                } catch (IOException e) {
 | 
												
													
														
															|  | 
 |  | +                    e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        result = decodeUnicode(result);
 | 
												
													
														
															|  | 
 |  | +        System.out.println(result);
 | 
												
													
														
															|  | 
 |  | +        return result;
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +    /**
 | 
												
													
														
															|  | 
 |  | +     * imagePng的post请求
 | 
												
													
														
															|  | 
 |  | +     * @return
 | 
												
													
														
															|  | 
 |  | +     */
 | 
												
													
														
															|  | 
 |  | +    public static String sendPostImagePng(String url, String jsonString) {
 | 
												
													
														
															|  | 
 |  | +        CloseableHttpClient httpClient = null;
 | 
												
													
														
															|  | 
 |  | +        CloseableHttpResponse httpResponse = null;
 | 
												
													
														
															|  | 
 |  | +        String result = "";
 | 
												
													
														
															|  | 
 |  | +        // 创建httpClient实例
 | 
												
													
														
															|  | 
 |  | +        httpClient = HttpClients.createDefault();
 | 
												
													
														
															|  | 
 |  | +        // 创建httpPost远程连接实例
 | 
												
													
														
															|  | 
 |  | +        HttpPost httpPost = new HttpPost(url);
 | 
												
													
														
															|  | 
 |  | +        // 配置请求参数实例
 | 
												
													
														
															|  | 
 |  | +        RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间
 | 
												
													
														
															|  | 
 |  | +                .setConnectionRequestTimeout(35000)// 设置连接请求超时时间
 | 
												
													
														
															|  | 
 |  | +                .setSocketTimeout(60000)// 设置读取数据连接超时时间
 | 
												
													
														
															|  | 
 |  | +                .build();
 | 
												
													
														
															|  | 
 |  | +        // 为httpPost实例设置配置
 | 
												
													
														
															|  | 
 |  | +        httpPost.setConfig(requestConfig);
 | 
												
													
														
															|  | 
 |  | +        // 设置请求头鉴权
 | 
												
													
														
															|  | 
 |  | +        httpPost.setHeader("x-qys-accesstoken", apptoken);
 | 
												
													
														
															|  | 
 |  | +        httpPost.setHeader("x-qys-signature", signature);
 | 
												
													
														
															|  | 
 |  | +        httpPost.setHeader("x-qys-timestamp", "0");
 | 
												
													
														
															|  | 
 |  | +        // 包含内容格式设置
 | 
												
													
														
															|  | 
 |  | +        httpPost.addHeader("Content-Type", "image/png");
 | 
												
													
														
															|  | 
 |  | +        // 封装post请求参数
 | 
												
													
														
															|  | 
 |  | +        if (null != jsonString) {
 | 
												
													
														
															|  | 
 |  | +            // 为httpPost设置封装好的请求参数
 | 
												
													
														
															|  | 
 |  | +            System.out.println("添加到实体------");
 | 
												
													
														
															|  | 
 |  | +            httpPost.setEntity(new StringEntity(jsonString, "UTF-8"));
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        try {
 | 
												
													
														
															|  | 
 |  | +            // httpClient对象执行post请求,并返回响应参数对象
 | 
												
													
														
															|  | 
 |  | +            httpResponse = httpClient.execute(httpPost);
 | 
												
													
														
															|  | 
 |  | +            // 从响应对象中获取响应内容
 | 
												
													
														
															|  | 
 |  | +            HttpEntity entity = httpResponse.getEntity();
 | 
												
													
														
															|  | 
 |  | +            result = EntityUtils.toString(entity);
 | 
												
													
														
															|  | 
 |  | +        } catch (ClientProtocolException e) {
 | 
												
													
														
															|  | 
 |  | +            e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +        } catch (IOException e) {
 | 
												
													
														
															|  | 
 |  | +            e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +        } finally {
 | 
												
													
														
															|  | 
 |  | +            // 关闭资源
 | 
												
													
														
															|  | 
 |  | +            if (null != httpResponse) {
 | 
												
													
														
															|  | 
 |  | +                try {
 | 
												
													
														
															|  | 
 |  | +                    httpResponse.close();
 | 
												
													
														
															|  | 
 |  | +                } catch (IOException e) {
 | 
												
													
														
															|  | 
 |  | +                    e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            if (null != httpClient) {
 | 
												
													
														
															|  | 
 |  | +                try {
 | 
												
													
														
															|  | 
 |  | +                    httpClient.close();
 | 
												
													
														
															|  | 
 |  | +                } catch (IOException e) {
 | 
												
													
														
															|  | 
 |  | +                    e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        result = decodeUnicode(result);
 | 
												
													
														
															|  | 
 |  | +        System.out.println(result);
 | 
												
													
														
															|  | 
 |  | +        return result;
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    public static String decodeUnicode(String asciicode) {
 | 
												
													
														
															|  | 
 |  | +        String[] asciis = asciicode.split ("\\\\u");
 | 
												
													
														
															|  | 
 |  | +        String nativeValue = asciis[0];
 | 
												
													
														
															|  | 
 |  | +        try
 | 
												
													
														
															|  | 
 |  | +        {
 | 
												
													
														
															|  | 
 |  | +            for ( int i = 1; i < asciis.length; i++ )
 | 
												
													
														
															|  | 
 |  | +            {
 | 
												
													
														
															|  | 
 |  | +                String code = asciis[i];
 | 
												
													
														
															|  | 
 |  | +                nativeValue += (char) Integer.parseInt (code.substring (0, 4), 16);
 | 
												
													
														
															|  | 
 |  | +                if (code.length () > 4)
 | 
												
													
														
															|  | 
 |  | +                {
 | 
												
													
														
															|  | 
 |  | +                    nativeValue += code.substring (4, code.length ());
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        catch (NumberFormatException e)
 | 
												
													
														
															|  | 
 |  | +        {
 | 
												
													
														
															|  | 
 |  | +            return asciicode;
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        return nativeValue;
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    /**
 | 
												
													
														
															|  | 
 |  | +     * 根据文件创建合同信息
 | 
												
													
														
															|  | 
 |  | +     * @param srcFile
 | 
												
													
														
															|  | 
 |  | +     * @return
 | 
												
													
														
															|  | 
 |  | +     */
 | 
												
													
														
															|  | 
 |  | +    public static HashMap getDocument(File srcFile) {
 | 
												
													
														
															|  | 
 |  | +        //截取文件后缀名
 | 
												
													
														
															|  | 
 |  | +        String substring = srcFile.getName().substring(srcFile.getName().lastIndexOf(".")+1, srcFile.getName().length());
 | 
												
													
														
															|  | 
 |  | +        //截取文件名称
 | 
												
													
														
															|  | 
 |  | +        String fileName = srcFile.getName().substring(0,srcFile.getName().lastIndexOf("."));
 | 
												
													
														
															|  | 
 |  | +        //添加请求头
 | 
												
													
														
															|  | 
 |  | +        Map<String,String> requestHeaderMap = new HashMap<>();
 | 
												
													
														
															|  | 
 |  | +        requestHeaderMap.put("x-qys-accesstoken", apptoken);
 | 
												
													
														
															|  | 
 |  | +        requestHeaderMap.put("x-qys-signature", signature);
 | 
												
													
														
															|  | 
 |  | +        requestHeaderMap.put("x-qys-timestamp", "0");
 | 
												
													
														
															|  | 
 |  | +        //添加文件参数
 | 
												
													
														
															|  | 
 |  | +        Map<String,String> formTextsMap = new HashMap<>();
 | 
												
													
														
															|  | 
 |  | +        formTextsMap.put("title",fileName);
 | 
												
													
														
															|  | 
 |  | +        formTextsMap.put("fileType",substring);
 | 
												
													
														
															|  | 
 |  | +        //创建文件数组
 | 
												
													
														
															|  | 
 |  | +        File[] files = new File[]{srcFile};
 | 
												
													
														
															|  | 
 |  | +        //访问方法
 | 
												
													
														
															|  | 
 |  | +        String documentResult = sendPost(HTTPTOP + "/v2/document/createbyfile", requestHeaderMap, formTextsMap, files, "", "");
 | 
												
													
														
															|  | 
 |  | +        HashMap hashMap = JSON.parseObject(documentResult, HashMap.class);
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +        return hashMap;
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    /**
 | 
												
													
														
															|  | 
 |  | +     * 运行无效合同信息
 | 
												
													
														
															|  | 
 |  | +     * @param fileName
 | 
												
													
														
															|  | 
 |  | +     * @param invalidFile
 | 
												
													
														
															|  | 
 |  | +     * @return
 | 
												
													
														
															|  | 
 |  | +     */
 | 
												
													
														
															|  | 
 |  | +    public static String getVerticalInvalidDocument(String fileName,File invalidFile){
 | 
												
													
														
															|  | 
 |  | +        File[] files = new File[]{invalidFile};
 | 
												
													
														
															|  | 
 |  | +        //添加请求头
 | 
												
													
														
															|  | 
 |  | +        Map<String,String> requestHeaderMap = new HashMap<>();
 | 
												
													
														
															|  | 
 |  | +        requestHeaderMap.put("x-qys-accesstoken", apptoken);
 | 
												
													
														
															|  | 
 |  | +        requestHeaderMap.put("x-qys-signature", signature);
 | 
												
													
														
															|  | 
 |  | +        requestHeaderMap.put("x-qys-timestamp", "0");
 | 
												
													
														
															|  | 
 |  | +        //添加文件参数
 | 
												
													
														
															|  | 
 |  | +        Map<String,String> formTextsMap = new HashMap<>();
 | 
												
													
														
															|  | 
 |  | +        formTextsMap.put("title",fileName);
 | 
												
													
														
															|  | 
 |  | +        formTextsMap.put("templateId",VERTICALTEMPLATEID);
 | 
												
													
														
															|  | 
 |  | +        //访问方法
 | 
												
													
														
															|  | 
 |  | +        String documentResult = sendPost(HTTPTOP + "/document/createbytemplate", requestHeaderMap, formTextsMap, files, "", "");
 | 
												
													
														
															|  | 
 |  | +        HashMap hashMap = JSON.parseObject(documentResult, HashMap.class);
 | 
												
													
														
															|  | 
 |  | +        String code = hashMap.get("code").toString();
 | 
												
													
														
															|  | 
 |  | +        if("0".equals(code)){
 | 
												
													
														
															|  | 
 |  | +            String documentId = hashMap.get("documentId").toString();
 | 
												
													
														
															|  | 
 |  | +            return documentId;
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        return "";
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    /**
 | 
												
													
														
															|  | 
 |  | +     * 运行无效合同信息
 | 
												
													
														
															|  | 
 |  | +     * @param fileName
 | 
												
													
														
															|  | 
 |  | +     * @param invalidFile
 | 
												
													
														
															|  | 
 |  | +     * @return
 | 
												
													
														
															|  | 
 |  | +     */
 | 
												
													
														
															|  | 
 |  | +    public static String getAcrossVerticalInvalidDocument(String fileName,File invalidFile){
 | 
												
													
														
															|  | 
 |  | +        File[] files = new File[]{invalidFile};
 | 
												
													
														
															|  | 
 |  | +        //添加请求头
 | 
												
													
														
															|  | 
 |  | +        Map<String,String> requestHeaderMap = new HashMap<>();
 | 
												
													
														
															|  | 
 |  | +        requestHeaderMap.put("x-qys-accesstoken", apptoken);
 | 
												
													
														
															|  | 
 |  | +        requestHeaderMap.put("x-qys-signature", signature);
 | 
												
													
														
															|  | 
 |  | +        requestHeaderMap.put("x-qys-timestamp", "0");
 | 
												
													
														
															|  | 
 |  | +        //添加文件参数
 | 
												
													
														
															|  | 
 |  | +        Map<String,String> formTextsMap = new HashMap<>();
 | 
												
													
														
															|  | 
 |  | +        formTextsMap.put("title",fileName);
 | 
												
													
														
															|  | 
 |  | +        formTextsMap.put("templateId",ACROSSTEMPLATEID);
 | 
												
													
														
															|  | 
 |  | +        //访问方法
 | 
												
													
														
															|  | 
 |  | +        String documentResult = sendPost(HTTPTOP + "/document/createbytemplate", requestHeaderMap, formTextsMap, files, "", "");
 | 
												
													
														
															|  | 
 |  | +        HashMap hashMap = JSON.parseObject(documentResult, HashMap.class);
 | 
												
													
														
															|  | 
 |  | +        String code = hashMap.get("code").toString();
 | 
												
													
														
															|  | 
 |  | +        if("0".equals(code)){
 | 
												
													
														
															|  | 
 |  | +            String documentId = hashMap.get("documentId").toString();
 | 
												
													
														
															|  | 
 |  | +            return documentId;
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        return "";
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    public static String doGet(Map<String, String> paramMap, String url){
 | 
												
													
														
															|  | 
 |  | +        String result = "";
 | 
												
													
														
															|  | 
 |  | +        HttpGet get = new HttpGet(url);
 | 
												
													
														
															|  | 
 |  | +        try{
 | 
												
													
														
															|  | 
 |  | +            // 设置请求头鉴权
 | 
												
													
														
															|  | 
 |  | +            get.setHeader("x-qys-accesstoken", apptoken);
 | 
												
													
														
															|  | 
 |  | +            get.setHeader("x-qys-signature", signature);
 | 
												
													
														
															|  | 
 |  | +            get.setHeader("x-qys-timestamp", "0");
 | 
												
													
														
															|  | 
 |  | +            CloseableHttpClient httpClient = HttpClients.createDefault();
 | 
												
													
														
															|  | 
 |  | +            List<NameValuePair> params = setHttpParams(paramMap);
 | 
												
													
														
															|  | 
 |  | +            String param = URLEncodedUtils.format(params, "UTF-8");
 | 
												
													
														
															|  | 
 |  | +            get.setURI(URI.create(url + "?" + param));
 | 
												
													
														
															|  | 
 |  | +            HttpResponse response = httpClient.execute(get);
 | 
												
													
														
															|  | 
 |  | +            result = getHttpEntityContent(response);
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +            if(response.getStatusLine().getStatusCode()!= HttpStatus.SC_OK){
 | 
												
													
														
															|  | 
 |  | +                result = "服务器异常";
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        } catch (Exception e){
 | 
												
													
														
															|  | 
 |  | +            System.out.println("请求异常");
 | 
												
													
														
															|  | 
 |  | +            throw new RuntimeException(e);
 | 
												
													
														
															|  | 
 |  | +        } finally{
 | 
												
													
														
															|  | 
 |  | +            get.abort();
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        result = decodeUnicode(result);
 | 
												
													
														
															|  | 
 |  | +        return result;
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    public static List<NameValuePair> setHttpParams(Map<String, String> paramMap){
 | 
												
													
														
															|  | 
 |  | +        List<NameValuePair> params = new ArrayList<NameValuePair>();
 | 
												
													
														
															|  | 
 |  | +        Set<Entry<String, String>> set = paramMap.entrySet();
 | 
												
													
														
															|  | 
 |  | +        for(Entry<String, String> entry : set){
 | 
												
													
														
															|  | 
 |  | +            params.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        return params;
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    public static String getHttpEntityContent(HttpResponse response) throws UnsupportedOperationException, IOException{
 | 
												
													
														
															|  | 
 |  | +        String result = "";
 | 
												
													
														
															|  | 
 |  | +        HttpEntity entity = response.getEntity();
 | 
												
													
														
															|  | 
 |  | +        if(entity != null){
 | 
												
													
														
															|  | 
 |  | +            InputStream in = entity.getContent();
 | 
												
													
														
															|  | 
 |  | +            BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8"));
 | 
												
													
														
															|  | 
 |  | +            StringBuilder strber= new StringBuilder();
 | 
												
													
														
															|  | 
 |  | +            String line = null;
 | 
												
													
														
															|  | 
 |  | +            while((line = br.readLine())!=null){
 | 
												
													
														
															|  | 
 |  | +                strber.append(line+'\n');
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +            br.close();
 | 
												
													
														
															|  | 
 |  | +            in.close();
 | 
												
													
														
															|  | 
 |  | +            result = strber.toString();
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +        return result;
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    /**
 | 
												
													
														
															|  | 
 |  | +     * 根据用户手机号查询用户章信息
 | 
												
													
														
															|  | 
 |  | +     * @param userMobile
 | 
												
													
														
															|  | 
 |  | +     * @param employeeNo 用户编号
 | 
												
													
														
															|  | 
 |  | +     * @param sealName 印章名称
 | 
												
													
														
															|  | 
 |  | +     * @return
 | 
												
													
														
															|  | 
 |  | +     */
 | 
												
													
														
															|  | 
 |  | +    public static String getUserSealByMobile(String userMobile,String employeeNo,String sealName){
 | 
												
													
														
															|  | 
 |  | +        //根据contractId将文件下载下来 并上传到阿里云服务种
 | 
												
													
														
															|  | 
 |  | +        //添加请求头
 | 
												
													
														
															|  | 
 |  | +        Map<String,String> requestHeaderMap = new HashMap<>();
 | 
												
													
														
															|  | 
 |  | +        requestHeaderMap.put("x-qys-accesstoken", apptoken);
 | 
												
													
														
															|  | 
 |  | +        requestHeaderMap.put("x-qys-signature", signature);
 | 
												
													
														
															|  | 
 |  | +        requestHeaderMap.put("x-qys-timestamp", "0");
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +        Map map =new HashMap();
 | 
												
													
														
															|  | 
 |  | +        map.put("companyName","江苏兴光项目管理有限公司");
 | 
												
													
														
															|  | 
 |  | +        map.put("mobile",userMobile);
 | 
												
													
														
															|  | 
 |  | +        map.put("employeeNo",employeeNo);
 | 
												
													
														
															|  | 
 |  | +        String viewUrlStr = SignaturePostUtil.doGet(map, HTTPTOP + "/seal/user/charge");
 | 
												
													
														
															|  | 
 |  | +        HashMap userSealStrMap = JSON.parseObject(viewUrlStr, HashMap.class);
 | 
												
													
														
															|  | 
 |  | +        String code = userSealStrMap.get("code").toString();
 | 
												
													
														
															|  | 
 |  | +        if("0".equals(code)){
 | 
												
													
														
															|  | 
 |  | +            String resultStr = userSealStrMap.get("result").toString();
 | 
												
													
														
															|  | 
 |  | +            //获取成员印章信息列表
 | 
												
													
														
															|  | 
 |  | +            List<SealUserInfo> userSealList = (List<SealUserInfo>) JSONArray.parseArray(resultStr, SealUserInfo.class);
 | 
												
													
														
															|  | 
 |  | +            //ZList <SealUserInfo> userSealList =new Gson().fromJson(resultStr, new TypeToken<List<SealUserInfo>>() {}.getType());
 | 
												
													
														
															|  | 
 |  | +            if(userSealList.size()>0){
 | 
												
													
														
															|  | 
 |  | +                //如果需要判定得印章名称不为空则进行精确印章处理
 | 
												
													
														
															|  | 
 |  | +                if(StringUtils.isNotBlank(sealName)){
 | 
												
													
														
															|  | 
 |  | +                    for (SealUserInfo userSeal: userSealList) {
 | 
												
													
														
															|  | 
 |  | +                        if(sealName.equals(userSeal.getName())){
 | 
												
													
														
															|  | 
 |  | +                            //返回成员印章编号id
 | 
												
													
														
															|  | 
 |  | +                            return userSeal.getId();
 | 
												
													
														
															|  | 
 |  | +                        }
 | 
												
													
														
															|  | 
 |  | +                    }
 | 
												
													
														
															|  | 
 |  | +                }else{
 | 
												
													
														
															|  | 
 |  | +                    if(StringUtils.isNotBlank(userSealList.get(0).getId())){
 | 
												
													
														
															|  | 
 |  | +                        //返回成员第一个印章编号id
 | 
												
													
														
															|  | 
 |  | +                        return userSealList.get(0).getId();
 | 
												
													
														
															|  | 
 |  | +                    }
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        return "";
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    /**
 | 
												
													
														
															|  | 
 |  | +     * 根据合同编号查询签章合同对应的url访问界面
 | 
												
													
														
															|  | 
 |  | +     * @param contractId 签章合同id
 | 
												
													
														
															|  | 
 |  | +     * @param contact 签章人手机号
 | 
												
													
														
															|  | 
 |  | +     * @return
 | 
												
													
														
															|  | 
 |  | +     */
 | 
												
													
														
															|  | 
 |  | +    public static String getSignatureContractUrl( String contractId,String contact ){
 | 
												
													
														
															|  | 
 |  | +        Map map = new HashMap();
 | 
												
													
														
															|  | 
 |  | +        map.put("contractId",contractId);
 | 
												
													
														
															|  | 
 |  | +        map.put("tenantType","COMPANY");
 | 
												
													
														
															|  | 
 |  | +        map.put("tenantName","江苏兴光项目管理有限公司");
 | 
												
													
														
															|  | 
 |  | +        map.put("contact",contact);
 | 
												
													
														
															|  | 
 |  | +        String jsonString = JSON.toJSONString(map);
 | 
												
													
														
															|  | 
 |  | +        String contractIdUrl = SignaturePostUtil.sendPostApplicationJson(HTTPTOP + "/contract/signurl", jsonString);
 | 
												
													
														
															|  | 
 |  | +        HashMap signUrlHashMap = JSON.parseObject(contractIdUrl, HashMap.class);
 | 
												
													
														
															|  | 
 |  | +        String code = signUrlHashMap.get("code").toString();
 | 
												
													
														
															|  | 
 |  | +        if("0".equals(code)){
 | 
												
													
														
															|  | 
 |  | +            String signUrl = signUrlHashMap.get("signUrl").toString();
 | 
												
													
														
															|  | 
 |  | +            return signUrl;
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +        return "";
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    /**
 | 
												
													
														
															|  | 
 |  | +     * zip文件解压
 | 
												
													
														
															|  | 
 |  | +     * @param file 需解压的文件
 | 
												
													
														
															|  | 
 |  | +     * @param destDirPath 解压文件地址
 | 
												
													
														
															|  | 
 |  | +     */
 | 
												
													
														
															|  | 
 |  | +    public static void unZipFile(File file,String destDirPath){
 | 
												
													
														
															|  | 
 |  | +        // 开始解压
 | 
												
													
														
															|  | 
 |  | +        ZipFile zipFile = null;
 | 
												
													
														
															|  | 
 |  | +        try {
 | 
												
													
														
															|  | 
 |  | +            //zipFile = new ZipFile(file);
 | 
												
													
														
															|  | 
 |  | +            //添加解压编码,解决解压报错问题
 | 
												
													
														
															|  | 
 |  | +            zipFile = new ZipFile(file, Charset.forName("GBK"));
 | 
												
													
														
															|  | 
 |  | +            Enumeration<?> entries = zipFile.entries();
 | 
												
													
														
															|  | 
 |  | +            while (entries.hasMoreElements()) {
 | 
												
													
														
															|  | 
 |  | +                ZipEntry entry = (ZipEntry) entries.nextElement();
 | 
												
													
														
															|  | 
 |  | +                System.out.println("解压" + entry.getName());
 | 
												
													
														
															|  | 
 |  | +                // 如果是文件夹,就创建个文件夹
 | 
												
													
														
															|  | 
 |  | +                if (entry.isDirectory()) {
 | 
												
													
														
															|  | 
 |  | +                    String dirPath = destDirPath + "/" + entry.getName();
 | 
												
													
														
															|  | 
 |  | +                    File dir = new File(dirPath);
 | 
												
													
														
															|  | 
 |  | +                    dir.mkdirs();
 | 
												
													
														
															|  | 
 |  | +                } else {
 | 
												
													
														
															|  | 
 |  | +                    // 如果是文件,就先创建一个文件,然后用io流把内容copy过去
 | 
												
													
														
															|  | 
 |  | +                    File targetFile = new File(destDirPath + "/" + entry.getName());
 | 
												
													
														
															|  | 
 |  | +                    // 保证这个文件的父文件夹必须要存在
 | 
												
													
														
															|  | 
 |  | +                    if(!targetFile.getParentFile().exists()){
 | 
												
													
														
															|  | 
 |  | +                        targetFile.getParentFile().mkdirs();
 | 
												
													
														
															|  | 
 |  | +                    }
 | 
												
													
														
															|  | 
 |  | +                    targetFile.createNewFile();
 | 
												
													
														
															|  | 
 |  | +                    // 将压缩文件内容写入到这个文件中
 | 
												
													
														
															|  | 
 |  | +                    InputStream is = zipFile.getInputStream(entry);
 | 
												
													
														
															|  | 
 |  | +                    FileOutputStream fos = new FileOutputStream(targetFile);
 | 
												
													
														
															|  | 
 |  | +                    int len;
 | 
												
													
														
															|  | 
 |  | +                    byte[] buf = new byte[1024];
 | 
												
													
														
															|  | 
 |  | +                    while ((len = is.read(buf)) != -1) {
 | 
												
													
														
															|  | 
 |  | +                        fos.write(buf, 0, len);
 | 
												
													
														
															|  | 
 |  | +                    }
 | 
												
													
														
															|  | 
 |  | +                    // 关流顺序,先打开的后关闭
 | 
												
													
														
															|  | 
 |  | +                    fos.close();
 | 
												
													
														
															|  | 
 |  | +                    is.close();
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  | +            e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +        } finally {
 | 
												
													
														
															|  | 
 |  | +            if(zipFile != null){
 | 
												
													
														
															|  | 
 |  | +                try {
 | 
												
													
														
															|  | 
 |  | +                    zipFile.close();
 | 
												
													
														
															|  | 
 |  | +                } catch (IOException e) {
 | 
												
													
														
															|  | 
 |  | +                    e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +                    e.printStackTrace();
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +}
 | 
												
													
														
															|  | 
 |  | +
 |