use of com.itrus.portal.db.EvidenceSecretKey in project portal by ixinportal.
the class CertificateController method list.
/**
* 证书列表
*
* @param queryDate1
* @param queryDate2
* @param queryDate3
* @param queryDate4
* @param queryDate5
* @param queryDate6
* @param alias
* @param certificateName
* @param subject
* @param signaturetype
* @param page
* @param size
* @param uiModel
* @return
* @throws Exception
*/
@RequestMapping(produces = "text/html")
public String list(@RequestParam(value = "queryDate1", required = false) Date queryDate1, @RequestParam(value = "queryDate2", required = false) Date queryDate2, @RequestParam(value = "queryDate3", required = false) Date queryDate3, @RequestParam(value = "queryDate4", required = false) Date queryDate4, @RequestParam(value = "queryDate5", required = false) Date queryDate5, @RequestParam(value = "queryDate6", required = false) Date queryDate6, @RequestParam(value = "alias", required = false) String alias, @RequestParam(value = "certificateName", required = false) String certificateName, @RequestParam(value = "subject", required = false) String subject, @RequestParam(value = "signaturetype", required = false) Integer signaturetype, @RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, Model uiModel) throws Exception {
/*
* if (queryDate1 == null && queryDate2 == null) { Calendar calendar =
* Calendar.getInstance(); calendar.add(Calendar.DATE, 1);
* calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE,
* 0); calendar.set(Calendar.SECOND, 0);
* calendar.set(Calendar.MILLISECOND, 0);
* calendar.add(Calendar.MILLISECOND, -1); queryDate2 =
* calendar.getTime(); calendar.add(Calendar.MILLISECOND, 1);
* calendar.add(Calendar.MONTH, -1); queryDate1 = calendar.getTime(); }
* if (queryDate3 == null && queryDate4 == null) { Calendar calendar =
* Calendar.getInstance(); calendar.add(Calendar.DATE, 1);
* calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE,
* 0); calendar.set(Calendar.SECOND, 0);
* calendar.set(Calendar.MILLISECOND, 0);
* calendar.add(Calendar.MILLISECOND, -1); queryDate4 =
* calendar.getTime(); calendar.add(Calendar.MILLISECOND, 1);
* calendar.add(Calendar.MONTH, -1); queryDate3 = calendar.getTime(); }
* if (queryDate5 == null && queryDate6 == null) { Calendar calendar =
* Calendar.getInstance(); calendar.add(Calendar.DATE, 1);
* calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE,
* 0); calendar.set(Calendar.SECOND, 0);
* calendar.set(Calendar.MILLISECOND, 0);
* calendar.add(Calendar.MILLISECOND, -1); queryDate6 =
* calendar.getTime(); calendar.add(Calendar.MILLISECOND, 1);
* calendar.add(Calendar.MONTH, -1); queryDate5 = calendar.getTime(); }
*/
Map param = new HashMap();
if (page == null || page < 1)
page = 1;
if (size == null || size < 1)
size = 10;
Integer offset = size * (page - 1);
param.put("offset", offset);
param.put("limit", size);
param.put("queryDate1", queryDate1);
param.put("queryDate2", queryDate2);
param.put("queryDate3", queryDate3);
param.put("queryDate4", queryDate4);
param.put("queryDate5", queryDate5);
param.put("queryDate6", queryDate6);
/*
* EvidenceCertificateExample certificateexample = new
* EvidenceCertificateExample(); EvidenceCertificateExample.Criteria
* certificate = certificateexample.createCriteria();
*/
if (StringUtils.isNotEmpty(alias) && !"0".equals(alias)) {
param.put("alias", "%" + alias + "%");
}
if (StringUtils.isNotEmpty(certificateName) && !"0".equals(certificateName)) {
param.put("certificateName", "%" + certificateName + "%");
}
if (StringUtils.isNotEmpty(subject) && !"0".equals(subject)) {
param.put("subject", "%" + subject + "%");
}
if (signaturetype != null && "0".equals(signaturetype)) {
param.put("signaturetype", signaturetype);
}
/*
* certificate.andCreateTimeBetween(queryDate5, queryDate6);
* certificateexample.setLimit(size);
* certificateexample.setOffset(page);
*/
List configuration = certificateService.selectListByCertificateEnt(param);
int count = certificateService.selectCountByCertificateEnt(param);
uiModel.addAttribute("configuration", configuration);
uiModel.addAttribute("count", count);
uiModel.addAttribute("pages", (count + size - 1) / size);
if (page > 1 && size * (page - 1) >= count) {
page = (count + size - 1) / size;
}
uiModel.addAttribute("page", page);
uiModel.addAttribute("size", size);
List<EvidenceCertificate> econfiguration = sqlSession.selectList("com.itrus.portal.db.EvidenceCertificateMapper.selectByExample");
List<EvidenceSecretKey> secretkey = sqlSession.selectList("com.itrus.portal.db.EvidenceSecretKeyMapper.selectByExample");
uiModel.addAttribute("secretkey", secretkey);
uiModel.addAttribute("econfiguration", econfiguration);
uiModel.addAttribute("queryDate1", queryDate1);
uiModel.addAttribute("queryDate2", queryDate2);
uiModel.addAttribute("queryDate3", queryDate3);
uiModel.addAttribute("queryDate4", queryDate4);
uiModel.addAttribute("queryDate5", queryDate5);
uiModel.addAttribute("queryDate6", queryDate6);
uiModel.addAttribute("alias", alias);
uiModel.addAttribute("certificateName", certificateName);
uiModel.addAttribute("subject", subject);
uiModel.addAttribute("signaturetype", signaturetype);
return "certificate/list";
}
use of com.itrus.portal.db.EvidenceSecretKey in project portal by ixinportal.
the class CertificateController method update.
/**
* 修改处理
*
* @param configuration
* @param photoCodeImg
* @param type
* 新建类型 3是新建签章 2是新建证书1修改
* @param uiModel
* @return
*/
@RequestMapping(method = RequestMethod.POST, value = "/{type}", produces = "text/html")
public String update(@Valid EvidenceCertificate configuration, @RequestParam(value = "photoCodeImg", required = false) String photoCodeImg, @PathVariable("type") int type, Model uiModel) {
if (type == 1) {
// System.out.println("新建签章" + configuration.getSignatureType());
// 获取证书信息
EvidenceCertificate econfiguration = certificateService.selectById(configuration.getId());
EvidenceSecretKey secretkey = new EvidenceSecretKey();
try {
if (StringUtils.isNotEmpty(photoCodeImg)) {
// 获取密钥信息
secretkey = sqlSession.selectOne("com.itrus.portal.db.EvidenceSecretKeyMapper.selectByPrimaryKey", econfiguration.getEvidenceSecretKey());
File imgDir = filePathUtils.getEnterpriseFile(secretkey.getAlias());
File frontImg = filePathUtils.saveImg(imgDir, null, photoCodeImg, IMG_DEFAULT_TYPE, IMG_NAME_VERIFY);
if (frontImg != null && frontImg.isFile()) {
configuration.setPhotoCodeImg(frontImg.getName());
configuration.setPhotoCodeImgHash(HMACSHA1.genSha1HashOfFile(frontImg));
}
}
if (configuration.getId() == null) {
certificateService.insert(configuration);
} else {
String s = String.valueOf(econfiguration.getEvidenceSecretKey());
Long keyid = Long.valueOf(s);
EvidenceSecretKey secret = secrtkey.selectById(keyid);
boolean is = certificateService.setSeal(secret.getAlias(), photoCodeImg);
if (is) {
certificateService.update(configuration);
}
}
} catch (Exception e) {
e.printStackTrace();
String oper = "修改签章失败";
String info = "错误原因:" + e.toString();
LogUtil.evidencelog(sqlSession, null, oper, info);
error = "修改签章失败";
return "redirect:/certificate/" + configuration.getId() + "/" + 3;
}
if (econfiguration.getIsCertificate() == null || econfiguration.getIsCertificate() != 1) {
JSONObject ret_data = null;
ret_data = JSONObject.parseObject(configuration.getSubject());
String cn = ret_data.getString("userName");
String ou = ret_data.getString("userOrgunit");
// String emali = ret_data.getString("EMAILADDRESS");
String O = ret_data.getString("userOrganization");
String dn = "CN=" + cn + "OU=" + ou + "O=" + O;
String csr = certificateService.genCsr(secretkey.getAlias(), configuration.getArithmetic(), dn);
if (csr != null) {
RaAccount ra = sqlSession.selectOne("com.itrus.portal.db.RaAccountMapper.selectByPrimaryKey", configuration.getRaAccount());
CertUtlis certutil = new CertUtlis();
// UserInfo rauserinfo = new UserInfo();
// Weibo类在下边定义
UserInfo rauserinfo = JSON.parseObject(configuration.getSubject(), UserInfo.class);
// System.out.println(rauserinfo.getUserAdditionalField1()+rauserinfo.getUserName());
// UserInfo = (UserInfo)JSONObject.toBean(ret_data,UserInfo.class);//将建json对象转换为Person对象
// System.out.println(configuration.getSubject());
/* rauserinfo.setUserName(cn);
rauserinfo.setUserEmail(emali);
rauserinfo.setUserAdditionalField1(ou);
rauserinfo.setUserOrganization(O); */
// 证书有效期
Integer certValidity = 7;
if ("0".equals(configuration.getPeriod())) {
certValidity = null;
} else if (1 == configuration.getPeriod()) {
certValidity = 365 * 1 + 1;
} else if (3 == configuration.getPeriod()) {
certValidity = 365 * 3 + 1;
} else if (5 == configuration.getPeriod()) {
certValidity = 365 * 5 + 2;
} else if (10 == configuration.getPeriod()) {
certValidity = 365 * 10 + 2;
}
// 调用RA
CertInfo racertinfo = null;
try {
if (ra.getAaPassword() != null) {
ra.setAaPassword(AESencrp.decrypt(ra.getAaPassword(), dbEncKey));
}
racertinfo = certutil.enrollCertByWS(csr, ra, rauserinfo, certValidity);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
String oper = "RA调用失败";
String info = "错误原因:" + e.toString();
LogUtil.evidencelog(sqlSession, null, oper, info);
error = "RA调用失败";
return "redirect:/certificate/" + configuration.getId() + "/" + 3;
}
if (racertinfo != null) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
EvidenceCert cert = new EvidenceCert();
cert.setCertBase64(racertinfo.getCertSignBuf());
cert.setCreateTime(new Date());
cert.setCertSerialnumber(racertinfo.getCertSerialNumber());
cert.setIssuerdn(racertinfo.getCertIssuerDn());
cert.setSubjectdn(racertinfo.getCertSubjectDn());
try {
configuration.setStartTime(sdf.parse(racertinfo.getCertNotBefore()));
configuration.setEndTime(sdf.parse(racertinfo.getCertNotAfter()));
cert.setStartTime(sdf.parse(racertinfo.getCertNotBefore()));
cert.setEndTime(sdf.parse(racertinfo.getCertNotAfter()));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cert.setCreateTime(new Date());
sqlSession.insert("com.itrus.portal.db.EvidenceCertMapper.insert", cert);
configuration.setCert(cert.getId().toString());
configuration.setCertp7(racertinfo.getCertSignBufP7());
configuration.setCertSerialnumber(racertinfo.getCertSerialNumber());
boolean is = certificateService.setCertitifate(secretkey.getAlias(), racertinfo.getCertSignBuf(), racertinfo.getCertSignBufP7());
if (is) {
if ("0".equals(configuration.getArithmetic())) {
configuration.setArithmetic(null);
}
if (StringUtils.isNotEmpty(configuration.getSubject())) {
configuration.setSubject(configuration.getSubject());
}
String s = String.valueOf(secretkey.getId());
int keyid = Integer.parseInt(s);
configuration.setEvidenceSecretKey(keyid);
configuration.setCreateTime(new Date());
configuration.setCreator(getAdmin().getName());
certificateService.update(configuration);
configuration.setSignatureType(2);
String oper = "证书产生成功";
String info = "证书名称:" + configuration.getCertificateName();
LogUtil.evidencelog(sqlSession, null, oper, info);
}
}
} else {
error = "csr产生失败";
return "redirect:/certificate/" + configuration.getId() + "/" + 3;
}
}
} else if (type == 3) {
EvidenceCertificate econfiguration = certificateService.selectById(configuration.getId());
EvidenceSecretKey secretkey = new EvidenceSecretKey();
try {
if (StringUtils.isNotEmpty(photoCodeImg)) {
// 获取密钥信息
secretkey = sqlSession.selectOne("com.itrus.portal.db.EvidenceSecretKeyMapper.selectByPrimaryKey", econfiguration.getEvidenceSecretKey());
File imgDir = filePathUtils.getEnterpriseFile(secretkey.getAlias());
File frontImg = filePathUtils.saveImg(imgDir, null, photoCodeImg, IMG_DEFAULT_TYPE, IMG_NAME_VERIFY);
if (frontImg != null && frontImg.isFile()) {
configuration.setPhotoCodeImg(frontImg.getName());
configuration.setPhotoCodeImgHash(HMACSHA1.genSha1HashOfFile(frontImg));
}
}
if (configuration.getId() == null) {
certificateService.insert(configuration);
} else {
String s = String.valueOf(econfiguration.getEvidenceSecretKey());
Long keyid = Long.valueOf(s);
EvidenceSecretKey secret = secrtkey.selectById(keyid);
boolean is = certificateService.setSeal(secret.getAlias(), photoCodeImg);
if (is) {
certificateService.update(configuration);
}
}
} catch (Exception e) {
e.printStackTrace();
String oper = "新建签章失败";
String info = "错误原因:" + e.toString();
LogUtil.evidencelog(sqlSession, null, oper, info);
error = "新建签章失败";
return "redirect:/certificate/" + configuration.getId() + "/" + 2;
}
} else {
// System.out.println("新建证书");
EvidenceSecretKey secret = new EvidenceSecretKey();
// List<EvidenceSecretKey> list = secrtkey.selecttype(configuration.getKeyType());
// log.error("list="+list.size());
// if(econfiguration.getIsCertificate()!=null && econfiguration.getIsCertificate()==1){
/*if (list != null && list.size() != 0) {
for (EvidenceSecretKey e : list) {
EvidenceCertificate certificate = certificateService.selectone(e.getId());
if (certificate == null) {
secret.setAlias(e.getAlias());
secret.setId(e.getId());
break;
}
}
if (StringUtils.isEmpty(secret.getAlias())) {
List<EvidenceSecretKey> secter = secrtkey.certufucateInterface(getAdmin().getName());
//List<EvidenceSecretKey> lists = secrtkey.selecttype(configuration.getKeyType());
if (secter != null) {
for (EvidenceSecretKey e : secter) {
EvidenceCertificate certificate = certificateService.selectone(e.getId());
if (certificate == null) {
secret.setAlias(e.getAlias());
secret.setId(e.getId());
break;
}
}
}
}
} else */
{
/*EvidenceSecretKey*/
secret = secrtkey.certufucateInterface(getAdmin().getName(), configuration.getKeyType());
// List<EvidenceSecretKey> lists = secrtkey.selecttype(configuration.getKeyType());
/*if (secter != null) {
for (EvidenceSecretKey e : secter) {
EvidenceCertificate certificate = certificateService.selectone(e.getId());
if (certificate == null) {
secret.setAlias(e.getAlias());
secret.setId(e.getId());
break;
}
}
}*/
}
/* }else{
secret = sqlSession.selectOne(
"com.itrus.portal.db.EvidenceSecretKeyMapper.selectByPrimaryKey",
econfiguration.getEvidenceSecretKey());
}*/
JSONObject ret_data = null;
ret_data = JSONObject.parseObject(configuration.getSubject());
String cn = ret_data.getString("userName");
String ou = ret_data.getString("userOrgunit");
// String emali = ret_data.getString("EMAILADDRESS");
String O = ret_data.getString("userOrganization");
String dn = "CN=" + cn + "OU=" + ou + "O=" + O;
log.error("Alias=" + secret.getAlias() + ",Arithmetic=" + configuration.getArithmetic());
String csr = certificateService.genCsr(secret.getAlias(), configuration.getArithmetic(), dn);
log.error("csr=" + csr);
if (csr != null) {
RaAccount ra = sqlSession.selectOne("com.itrus.portal.db.RaAccountMapper.selectByPrimaryKey", configuration.getRaAccount());
CertUtlis certutil = new CertUtlis();
// UserInfo rauserinfo = new UserInfo();
// System.out.println(configuration.getSubject());
// Weibo类在下边定义
UserInfo rauserinfo = JSON.parseObject(configuration.getSubject(), UserInfo.class);
// System.out.println(rauserinfo.getUserAdditionalField1()+rauserinfo.getUserName());
/*rauserinfo.setUserName(cn);
rauserinfo.setUserEmail(emali);
rauserinfo.setUserAdditionalField1(ou);
rauserinfo.setUserOrganization(O);*/
// 证书有效期
Integer certValidity = 7;
if ("0".equals(configuration.getPeriod())) {
certValidity = null;
} else if (1 == configuration.getPeriod()) {
certValidity = 365 * 1 + 1;
} else if (3 == configuration.getPeriod()) {
certValidity = 365 * 3 + 1;
} else if (5 == configuration.getPeriod()) {
certValidity = 365 * 5 + 2;
} else if (10 == configuration.getPeriod()) {
certValidity = 365 * 10 + 2;
}
// 调用RA
CertInfo racertinfo = null;
try {
if (ra.getAaPassword() != null) {
ra.setAaPassword(AESencrp.decrypt(ra.getAaPassword(), dbEncKey));
}
racertinfo = certutil.enrollCertByWS(csr, ra, rauserinfo, certValidity);
log.error("racertinfo=" + racertinfo);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
String oper = "RA调用失败";
String info = "错误原因:" + e.toString();
LogUtil.evidencelog(sqlSession, null, oper, info);
uiModel.addAttribute("error", "RA调用失败");
return "certificate/create";
}
if (racertinfo != null) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
EvidenceCert cert = new EvidenceCert();
cert.setCertBase64(racertinfo.getCertSignBuf());
cert.setCreateTime(new Date());
cert.setCertSerialnumber(racertinfo.getCertSerialNumber());
cert.setIssuerdn(racertinfo.getCertIssuerDn());
cert.setSubjectdn(racertinfo.getCertSubjectDn());
cert.setCreateTime(new Date());
try {
configuration.setStartTime(sdf.parse(racertinfo.getCertNotBefore()));
configuration.setEndTime(sdf.parse(racertinfo.getCertNotAfter()));
cert.setStartTime(sdf.parse(racertinfo.getCertNotBefore()));
cert.setEndTime(sdf.parse(racertinfo.getCertNotAfter()));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sqlSession.insert("com.itrus.portal.db.EvidenceCertMapper.insert", cert);
configuration.setCert(cert.getId().toString());
// configuration.setCert(racertinfo.getCertSignBuf());
configuration.setCertp7(racertinfo.getCertSignBufP7());
configuration.setCertSerialnumber(racertinfo.getCertSerialNumber());
/*try {
configuration.setStartTime(sdf.parse(racertinfo.getCertNotBefore()));
configuration.setEndTime(sdf.parse(racertinfo.getCertNotAfter()));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
boolean is = certificateService.setCertitifate(secret.getAlias(), racertinfo.getCertSignBuf(), racertinfo.getCertSignBufP7());
if (is) {
if ("0".equals(configuration.getArithmetic())) {
configuration.setArithmetic(null);
}
if (StringUtils.isNotEmpty(configuration.getSubject())) {
configuration.setSubject(configuration.getSubject());
}
String s = String.valueOf(secret.getId());
int keyid = Integer.parseInt(s);
configuration.setEvidenceSecretKey(keyid);
configuration.setCreateTime(new Date());
configuration.setCreator(getAdmin().getName());
certificateService.insert(configuration);
String oper = "证书产生成功";
String info = "证书名称:" + configuration.getCertificateName();
LogUtil.evidencelog(sqlSession, null, oper, info);
EvidenceCertificateExample certE = new EvidenceCertificateExample();
EvidenceCertificateExample.Criteria tificate = certE.createCriteria();
tificate.andEvidenceSecretKeyEqualTo(keyid);
configuration = sqlSession.selectOne("com.itrus.portal.db.EvidenceCertificateMapper.selectByExample", certE);
}
}
} else {
uiModel.addAttribute("error", "csr产生失败");
return "certificate/create";
}
}
return "redirect:/certificate/" + configuration.getId() + "/" + 1;
// return "redirect:/certificate/show/"+configuration.getId()+"/"+1;
// return "redirect:/certificate";
}
use of com.itrus.portal.db.EvidenceSecretKey in project portal by ixinportal.
the class CertificateController method show.
/**
* 跳转方法,查看详情和配置签章
*
* @param id
* @param type
* 区分跳转的页面
* @param uiModel
* @return
*/
@RequestMapping(value = "/{id}/{type}", produces = "text/html")
public String show(@PathVariable("id") Long id, @PathVariable("type") int type, Model uiModel) {
EvidenceCertificate configuration = certificateService.selectById(id);
if (configuration != null && configuration.getRaAccount() != null) {
RaAccount ra = raAccount.getRaAccount(Long.valueOf(configuration.getRaAccount()));
List<RaAccount> ras = sqlSession.selectList("com.itrus.portal.db.RaAccountMapper.selectByExample");
EvidenceSecretKey secretkey = sqlSession.selectOne("com.itrus.portal.db.EvidenceSecretKeyMapper.selectByPrimaryKey", configuration.getEvidenceSecretKey());
uiModel.addAttribute("ras", ras);
uiModel.addAttribute("ra", ra);
uiModel.addAttribute("secretkey", secretkey);
uiModel.addAttribute("error", error);
error = null;
}
uiModel.addAttribute("configuration", configuration);
if (type == 1) {
return "certificate/show";
} else if (type == 2) {
return "certificate/configure";
} else {
return "certificate/update";
}
}
use of com.itrus.portal.db.EvidenceSecretKey in project portal by ixinportal.
the class CertificateController method loadImg.
/**
* 得到图片
*
* @param id
* @param response
* @return
*/
@RequestMapping(value = "/img/{id}")
public String loadImg(@PathVariable("id") Long id, HttpServletResponse response) {
String img = null;
OutputStream os = null;
FileInputStream fis = null;
File file = null;
try {
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
EvidenceCertificate configuration = certificateService.selectById(id);
img = configuration.getPhotoCodeImg();
EvidenceSecretKey secretkey = sqlSession.selectOne("com.itrus.portal.db.EvidenceSecretKeyMapper.selectByPrimaryKey", configuration.getEvidenceSecretKey());
file = filePathUtils.getBillFile(secretkey.getAlias());
if (configuration == null && configuration == null) {
return "status403";
}
if (img == null) {
return "status403";
}
if (!file.exists()) {
file.mkdir();
}
File imgFile = new File(file, img);
fis = new FileInputStream(imgFile);
byte[] bb = IOUtils.toByteArray(fis);
os = response.getOutputStream();
os.write(bb);
os.flush();
} catch (IOException e) {
// 未找到
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭流!
try {
if (null != fis) {
fis.close();
}
if (null != os) {
os.close();
}
} catch (IOException e) {
}
}
return null;
}
use of com.itrus.portal.db.EvidenceSecretKey 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;
}
Aggregations