Search in sources :

Example 11 with EvidenceHisRelationship

use of com.itrus.portal.db.EvidenceHisRelationship in project portal by ixinportal.

the class HisCertificateController method savepdf.

@RequestMapping(params = "uploadPDF", method = RequestMethod.POST, produces = "text/html")
public String savepdf(MultipartFile excelFile, int id, int type, HttpServletRequest request, Model uiModel) throws Exception {
    JSONObject ret_data = null;
    BufferedInputStream bin = null;
    ByteArrayOutputStream baos = null;
    BufferedOutputStream bout = null;
    String fileName = excelFile.getOriginalFilename();
    // 文件类型
    String fileType = FilenameUtils.getExtension(fileName);
    if ((!fileType.toLowerCase().equals("pdf"))) {
        error = "上传失败,上传的文件不是以‘.pdf’文件名结尾";
        return "redirect:/hiscertificate/showpdf/" + id + "/" + type;
    }
    // 得到出征信息
    EvidenceHisCertificateExample hiscer = new EvidenceHisCertificateExample();
    EvidenceHisCertificateExample.Criteria tificate = hiscer.createCriteria();
    tificate.andSerialnumberEqualTo(contractNumber);
    EvidenceHisCertificate hisCertificate = sqlSession.selectOne("com.itrus.portal.db.EvidenceHisCertificateMapper.selectByExample", hiscer);
    // 得到出证关系表
    EvidenceHisRelationshipExample hisrelation = new EvidenceHisRelationshipExample();
    EvidenceHisRelationshipExample.Criteria shipEx = hisrelation.createCriteria();
    shipEx.andHisCertificateEqualTo(hisCertificate.getId());
    List<EvidenceHisRelationship> hisrelationship = sqlSession.selectList("com.itrus.portal.db.EvidenceHisRelationshipMapper.selectByExample", hisrelation);
    try {
        // 建立读取文件的文件输出流
        // fin = new FileInputStream(excelFile.getName());
        // 在文件输出流上安装节点流(更大效率读取)
        // 读取文件流
        bin = new BufferedInputStream(excelFile.getInputStream());
        // 创建一个新的 byte 数组输出流,它具有指定大小的缓冲区容量
        baos = new ByteArrayOutputStream();
        // 创建一个新的缓冲输出流,以将数据写入指定的底层输出流
        bout = new BufferedOutputStream(baos);
        byte[] buffer = new byte[1024];
        int len = bin.read(buffer);
        while (len != -1) {
            bout.write(buffer, 0, len);
            len = bin.read(buffer);
        }
        // 刷新此输出流并强制写出所有缓冲的输出字节,必须这行代码,否则有可能有问题
        bout.flush();
        byte[] bytes = baos.toByteArray();
        // sun公司的API
        // return encoder.encodeBuffer(bytes).trim();
        // apache公司的API
        String base64 = Base64.encodeBase64String(bytes);
        RealNameAuthentication realNameAuthentication = CacheCustomer.getAUTH_CONFIG_MAP().get(2);
        if (realNameAuthentication == null) {
            realNameAuthentication = realNameAuthenticationSerivce.getRealNameAuthenticationByTwo();
        }
        if (realNameAuthentication == null) {
            error = "无服务路径";
            return "redirect:/hiscertificate/showpdf/" + id + "/" + type;
        }
        // 得到服务编码
        AppService appservice = appService.selectById(hisCertificate.getHisAppService());
        // 得到出证服务配置
        EvidenceOutServiceConfigExample saveService = new EvidenceOutServiceConfigExample();
        EvidenceOutServiceConfigExample.Criteria saveServiceEx = saveService.createCriteria();
        saveServiceEx.andAppServiceEqualTo(appservice.getId());
        EvidenceOutServiceConfig outService = sqlSession.selectOne("com.itrus.portal.db.EvidenceOutServiceConfigMapper.selectByExample", saveService);
        // 得到出证名称
        if (outService == null) {
            error = "无服务配置";
            return "redirect:/hiscertificate/showpdf/" + id + "/" + type;
        }
        // 得到证书信息
        EvidenceCertificate certificate = sqlSession.selectOne("com.itrus.portal.db.EvidenceCertificateMapper.selectByPrimaryKey", outService.getEvidenceCertificate());
        if (certificate == null) {
            error = "无证书信息";
            return "redirect:/hiscertificate/showpdf/" + id + "/" + type;
        }
        // 得到密钥信息
        EvidenceSecretKey secrerkey = sqlSession.selectOne("com.itrus.portal.db.EvidenceSecretKeyMapper.selectByPrimaryKey", certificate.getEvidenceSecretKey());
        EvidenceEnclosure enclosure = new EvidenceEnclosure();
        // 得到签章位置配置信息
        EvidenceSignetPlaceConfigExample signet = new EvidenceSignetPlaceConfigExample();
        EvidenceSignetPlaceConfigExample.Criteria palace = signet.createCriteria();
        palace.andEvidenceOutServiceConfigEqualTo(outService.getId());
        List<EvidenceSignetPlaceConfig> configlist = sqlSession.selectList("com.itrus.portal.db.EvidenceSignetPlaceConfigMapper.selectByExample", signet);
        // 得到接口路径
        String urlAgent = realNameAuthentication.getRealNameddress() + PDF_SIGN;
        Map<String, Object> paramsAgent = new HashMap<String, Object>();
        // 参数信息
        paramsAgent.put("alias", secrerkey.getAlias());
        paramsAgent.put("pdfContent", base64);
        for (EvidenceSignetPlaceConfig config : configlist) {
            // 获取签章信息
            List<Map> list = new ArrayList<Map>();
            Map<String, String> map = new HashMap<String, String>();
            if (config != null) {
                if (config.getType() == 2) {
                    // 参数信息
                    map.put("y", config.getDistanceToDown());
                    // 参数信息
                    map.put("width", config.getWidthOfImage());
                    // 参数信息
                    map.put("height", config.getHeightOfImage());
                    list.add(map);
                    paramsAgent.put("pagingSeal", JSON.toJSONString(list));
                } else if (config.getType() == 3) {
                    // 参数信息
                    map.put("page", config.getPage());
                    // 参数信息
                    map.put("x", config.getDistanceToLeft());
                    // 参数信息
                    map.put("y", config.getDistanceToDown());
                    // 参数信息
                    map.put("width", config.getWidthOfImage());
                    // 参数信息
                    map.put("height", config.getHeightOfImage());
                    list.add(map);
                    paramsAgent.put("multiPagesSeal", JSON.toJSONString(list));
                } else if (config.getType() == 1) {
                    // 参数信息
                    map.put("keyWord", config.getKeyword());
                    // 参数信息
                    map.put("page", config.getPage());
                    // 参数信息
                    map.put("width", config.getWidthOfImage());
                    // 参数信息
                    map.put("height", config.getHeightOfImage());
                    list.add(map);
                    paramsAgent.put("keyWordSeal", JSON.toJSONString(list));
                }
            }
        }
        boolean isbool = true;
        String signedPdf = null;
        if (outService.getIsAddTimestamp() == 2) {
            isbool = false;
        }
        // 参数信息
        paramsAgent.put("timeStamp", isbool);
        // paramsAgent.put("resultType",2L);//参数信息
        // 调用签章接口返回数据
        String repAgent = HttpClientUtil.postForm(urlAgent, AuthService.getHeader(), paramsAgent);
        // 把数据转换为json格式
        ret_data = JSONObject.parseObject(repAgent);
        if (ret_data.getIntValue("code") != 0) {
            // 判断是否成功
            String oper = "出证报告失败-pdf签章失败";
            String info = "错误原因:" + ret_data.getString("message");
            LogUtil.evidencelog(sqlSession, null, oper, info);
            error = ret_data.getString("message");
            // 修改证据中的出证状态
            for (EvidenceHisRelationship h : hisrelationship) {
                // 得到基本信息表
                EvidenceBasicInformation basic = sqlSession.selectOne("com.itrus.portal.db.EvidenceBasicInformationMapper.selectByPrimaryKey", h.getBasicInformation());
                basic.setStatus(4);
                sqlSession.update("com.itrus.portal.db.EvidenceBasicInformationMapper.updateByPrimaryKey", basic);
            }
            return "redirect:/hiscertificate/showpdf/" + id + "/" + type;
        } else {
            // 证书base编码
            signedPdf = ret_data.getString("signedPdf");
            // 正式系统将hood替换为/**/重的值
            String retpdf = EvidenceSaveServiceApi.storageSave("ST_O", "hood", /*realNameAuthentication.getKeyCode()*/
            hisCertificate.getSerialnumber() + ".pdf", "CT_MESSAGE", signedPdf, null, null, null, null, null, false, null, realNameAuthentication.getRealNameddress());
            // 把数据转换为json格式
            ret_data = JSONObject.parseObject(retpdf);
            if (ret_data.getInteger("code") == 0) {
                // 获取证据附件表
                EvidenceEnclosureExample envlosureE = new EvidenceEnclosureExample();
                EvidenceEnclosureExample.Criteria envlosureEx = envlosureE.createCriteria();
                envlosureEx.andSerialnumberEqualTo(hisCertificate.getSerialnumber());
                envlosureEx.andPdfTypeEqualTo("4");
                EvidenceEnclosure envlosure = sqlSession.selectOne("com.itrus.portal.db.EvidenceEnclosureMapper.selectByExample", envlosureE);
                if (envlosure != null && envlosure.getPdfType() != null) {
                    envlosure.setPdfType("4");
                    envlosure.setEvidenceSn(null);
                    envlosure.setSerialnumber(hisCertificate.getSerialnumber());
                    envlosure.setType("ST_E");
                    envlosure.setContentType("CT_BASE64_DATA");
                    envlosure.setBucketName(realNameAuthentication.getKeyCode());
                    envlosure.setObjectName(fileName);
                    envlosure.setAlias(secrerkey.getAlias());
                    envlosure.setFilesize(null);
                    envlosure.setApplicationTime(new Date());
                    envlosure.setFixationTime(new Date());
                    envlosure.setSaveFactor(null);
                    envlosure.setBuid(ret_data.getString("buid").toString());
                    // ret_data.remove("saveFactor");
                    sqlSession.update("com.itrus.portal.db.EvidenceEnclosureMapper.updateByPrimaryKey", envlosure);
                } else {
                    enclosure.setPdfType("4");
                    enclosure.setEvidenceSn(null);
                    enclosure.setSerialnumber(hisCertificate.getSerialnumber());
                    enclosure.setType("ST_E");
                    enclosure.setContentType("CT_BASE64_DATA");
                    enclosure.setBucketName(realNameAuthentication.getKeyCode());
                    enclosure.setObjectName(fileName);
                    enclosure.setAlias(secrerkey.getAlias());
                    enclosure.setFilesize(null);
                    enclosure.setApplicationTime(new Date());
                    enclosure.setFixationTime(new Date());
                    enclosure.setSaveFactor(null);
                    enclosure.setBuid(ret_data.getString("buid").toString());
                    // ret_data.remove("saveFactor");
                    sqlSession.insert("com.itrus.portal.db.EvidenceEnclosureMapper.insert", enclosure);
                }
                hisCertificate.setHisTime(new Date());
                hisCertificate.setHisway("2");
                hisCertificate.setHisState("0");
                hisCertificate.setOutState(0);
                sqlSession.update("com.itrus.portal.db.EvidenceHisCertificateMapper.updateByPrimaryKey", hisCertificate);
                // 修改证据中的出证状态
                for (EvidenceHisRelationship h : hisrelationship) {
                    // 得到基本信息表
                    EvidenceBasicInformation basic = sqlSession.selectOne("com.itrus.portal.db.EvidenceBasicInformationMapper.selectByPrimaryKey", h.getBasicInformation());
                    basic.setStatus(2);
                    sqlSession.update("com.itrus.portal.db.EvidenceBasicInformationMapper.updateByPrimaryKey", basic);
                }
                error = "上传pdf成功";
                String oper = "pdf上传成功";
                String info = "存储编号:" + ret_data.getString("buid").toString() + "pdf名称:" + hisCertificate.getSerialnumber();
                LogUtil.evidencelog(sqlSession, null, oper, info);
            }
        }
    } catch (FileNotFoundException e) {
        // 修改证据中的出证状态
        for (EvidenceHisRelationship h : hisrelationship) {
            // 得到基本信息表
            EvidenceBasicInformation basic = sqlSession.selectOne("com.itrus.portal.db.EvidenceBasicInformationMapper.selectByPrimaryKey", h.getBasicInformation());
            basic.setStatus(4);
            sqlSession.update("com.itrus.portal.db.EvidenceBasicInformationMapper.updateByPrimaryKey", basic);
        }
        e.printStackTrace();
        String oper = "pdf上传失败";
        String info = "失败原因:" + e.getMessage();
        LogUtil.evidencelog(sqlSession, null, oper, info);
        error = e.getMessage();
        return "redirect:/hiscertificate/showpdf/" + id + "/" + type;
    } catch (IOException e) {
        // 修改证据中的出证状态
        for (EvidenceHisRelationship h : hisrelationship) {
            // 得到基本信息表
            EvidenceBasicInformation basic = sqlSession.selectOne("com.itrus.portal.db.EvidenceBasicInformationMapper.selectByPrimaryKey", h.getBasicInformation());
            basic.setStatus(4);
            sqlSession.update("com.itrus.portal.db.EvidenceBasicInformationMapper.updateByPrimaryKey", basic);
        }
        e.printStackTrace();
        String oper = "pdf上传失败";
        String info = "失败原因:" + e.getMessage();
        LogUtil.evidencelog(sqlSession, null, oper, info);
        error = e.getMessage();
        return "redirect:/hiscertificate/showpdf/" + id + "/" + type;
    } finally {
        try {
            bin.close();
            // 关闭 ByteArrayOutputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何
            // IOException
            // 暂时关闭掉
            baos.close();
            bout.close();
        } catch (IOException e) {
            e.printStackTrace();
            error = e.getMessage();
            return "redirect:/hiscertificate/showpdf/" + id + "/" + type;
        }
    }
    return "redirect:/hiscertificate/showpdf/" + id + "/" + type;
}
Also used : HashMap(java.util.HashMap) EvidenceBasicInformation(com.itrus.portal.db.EvidenceBasicInformation) ArrayList(java.util.ArrayList) FileNotFoundException(java.io.FileNotFoundException) EvidenceHisCertificate(com.itrus.portal.db.EvidenceHisCertificate) EvidenceEnclosure(com.itrus.portal.db.EvidenceEnclosure) RealNameAuthentication(com.itrus.portal.db.RealNameAuthentication) EvidenceOutServiceConfig(com.itrus.portal.db.EvidenceOutServiceConfig) EvidenceSignetPlaceConfigExample(com.itrus.portal.db.EvidenceSignetPlaceConfigExample) BufferedInputStream(java.io.BufferedInputStream) EvidenceCertificate(com.itrus.portal.db.EvidenceCertificate) BufferedOutputStream(java.io.BufferedOutputStream) AppService(com.itrus.portal.db.AppService) EvidenceOutServiceConfigExample(com.itrus.portal.db.EvidenceOutServiceConfigExample) EvidenceSignetPlaceConfig(com.itrus.portal.db.EvidenceSignetPlaceConfig) EvidenceHisRelationship(com.itrus.portal.db.EvidenceHisRelationship) EvidenceEnclosureExample(com.itrus.portal.db.EvidenceEnclosureExample) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IOException(java.io.IOException) EvidenceSecretKey(com.itrus.portal.db.EvidenceSecretKey) EvidenceHisRelationshipExample(com.itrus.portal.db.EvidenceHisRelationshipExample) Date(java.util.Date) JSONObject(com.alibaba.fastjson.JSONObject) EvidenceHisCertificateExample(com.itrus.portal.db.EvidenceHisCertificateExample) JSONObject(com.alibaba.fastjson.JSONObject) Map(java.util.Map) HashMap(java.util.HashMap) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

EvidenceBasicInformation (com.itrus.portal.db.EvidenceBasicInformation)11 EvidenceHisCertificate (com.itrus.portal.db.EvidenceHisCertificate)11 EvidenceHisRelationship (com.itrus.portal.db.EvidenceHisRelationship)11 HashMap (java.util.HashMap)9 EvidenceEnclosure (com.itrus.portal.db.EvidenceEnclosure)8 EvidenceEnclosureExample (com.itrus.portal.db.EvidenceEnclosureExample)8 EvidenceHisRelationshipExample (com.itrus.portal.db.EvidenceHisRelationshipExample)8 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)8 ArrayList (java.util.ArrayList)7 List (java.util.List)6 AppService (com.itrus.portal.db.AppService)5 EvidenceMainInformation (com.itrus.portal.db.EvidenceMainInformation)5 EvidenceOutServiceConfig (com.itrus.portal.db.EvidenceOutServiceConfig)5 IOException (java.io.IOException)5 Date (java.util.Date)5 EvidenceOutServiceConfigExample (com.itrus.portal.db.EvidenceOutServiceConfigExample)4 EvidenceOutTemplate (com.itrus.portal.db.EvidenceOutTemplate)4 EvidenceSubjectIdentity (com.itrus.portal.db.EvidenceSubjectIdentity)4 EvidenceSubjectIdentityExample (com.itrus.portal.db.EvidenceSubjectIdentityExample)4 EvidenceTrustedIdentity (com.itrus.portal.db.EvidenceTrustedIdentity)4