@@ -43,7 +43,7 @@ public class IRSAPIRequest { | |||
* | |||
* @return | |||
*/ | |||
public static byte[] createSignPdf(SignReqDTO req) { | |||
public static String createSignPdf(SignReqDTO req) { | |||
String pdfEncode64 = req.getPdfEncode64(); | |||
Float posX = req.getPosX(); | |||
Float posY = req.getPosY(); | |||
@@ -79,11 +79,7 @@ public class IRSAPIRequest { | |||
JSONObject object = JSON.parseObject(data, JSONObject.class); | |||
// 获取盖好章的PDF文件内容Base64字符串 | |||
String signFileB64 = object.getString("signFileB64"); | |||
if (Objects.nonNull(signFileB64)){ | |||
return Base64.getDecoder().decode(signFileB64); | |||
}else { | |||
return null; | |||
} | |||
return signFileB64; | |||
} | |||
@@ -27,8 +27,8 @@ public class ProjectApplicationController { | |||
@GetMapping("/get-report") | |||
@ApiOperation("获取应用 试运行报告") | |||
@WebLog("获取应用 试运行报告") | |||
public String getReport(@Valid @RequestBody ApplicationAppCodeSaveDTO dto) { | |||
return applicationManage.getReport(dto); | |||
public String getReport(@RequestParam(required = false) String appCode) { | |||
return applicationManage.getReport(appCode); | |||
} | |||
@PostMapping("/save-appcode") | |||
@@ -1,15 +1,25 @@ | |||
package com.ningdatech.pmapi.projectlib.manage; | |||
import com.alibaba.fastjson.JSON; | |||
import com.ningdatech.basic.function.VUtils; | |||
import com.ningdatech.pmapi.common.util.HmacAuthUtil; | |||
import com.ningdatech.pmapi.projectlib.model.dto.ApplicationAppCodeSaveDTO; | |||
import com.ningdatech.pmapi.projectlib.model.entity.ProjectApplication; | |||
import com.ningdatech.pmapi.projectlib.service.IProjectApplicationService; | |||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | |||
import lombok.RequiredArgsConstructor; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.springframework.beans.factory.annotation.Value; | |||
import org.springframework.http.HttpEntity; | |||
import org.springframework.http.HttpHeaders; | |||
import org.springframework.http.HttpMethod; | |||
import org.springframework.http.ResponseEntity; | |||
import org.springframework.stereotype.Component; | |||
import org.springframework.util.MultiValueMap; | |||
import org.springframework.web.client.RestTemplate; | |||
import java.time.LocalDateTime; | |||
import java.util.Map; | |||
import java.util.Objects; | |||
/** | |||
@@ -25,6 +35,15 @@ import java.util.Objects; | |||
@Slf4j | |||
public class ApplicationManage { | |||
@Value("${irs.app-report.url}") | |||
private String url; | |||
@Value("${irs.app-report.appKey}") | |||
private String appKey; | |||
@Value("${irs.app-report.appScret}") | |||
private String appScret; | |||
private final IProjectApplicationService applicationService; | |||
/** | |||
@@ -46,7 +65,30 @@ public class ApplicationManage { | |||
return "保存失败"; | |||
} | |||
public String getReport(ApplicationAppCodeSaveDTO dto) { | |||
/** | |||
* 获取试运行报告 | |||
* @param appCode | |||
* @return | |||
*/ | |||
public String getReport(String appCode) { | |||
String method = HttpMethod.GET.name(); | |||
String appUrl = url + "?appCode=" + appCode; | |||
Map<String, String> header = HmacAuthUtil.generateHeader(appUrl, method, appKey, appScret); | |||
//请求头 | |||
HttpHeaders headers = new HttpHeaders(); | |||
for(Map.Entry<String, String> entry : header.entrySet()){ | |||
headers.add(entry.getKey(), entry.getValue()); | |||
} | |||
//封装请求头 | |||
HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers); | |||
RestTemplate restTemplate = new RestTemplate(); | |||
ResponseEntity<String> forEntity = restTemplate.exchange(url, HttpMethod.GET,formEntity, String.class); | |||
log.info("body:",forEntity.getBody()); | |||
String body = forEntity.getBody(); | |||
return null; | |||
} | |||
@@ -105,6 +105,7 @@ import cn.hutool.core.collection.CollUtil; | |||
import cn.hutool.core.util.StrUtil; | |||
import lombok.RequiredArgsConstructor; | |||
import lombok.extern.slf4j.Slf4j; | |||
import sun.misc.BASE64Decoder; | |||
/** | |||
* @author ZPF | |||
@@ -495,10 +496,22 @@ public class TodoCenterManage { | |||
Integer signType = req.getSignType(); | |||
signReq.setSignType(signType); | |||
// 调用盖章接口,获取盖章后返回的pdf文件字符数组 | |||
byte[] signPdf = IRSAPIRequest.createSignPdf(signReq); | |||
String signPdf = IRSAPIRequest.createSignPdf(signReq); | |||
ByteArrayInputStream inputStream = null; | |||
if (Objects.nonNull(signPdf)) { | |||
inputStream = new ByteArrayInputStream(signPdf); | |||
BASE64Decoder decoder = new BASE64Decoder(); | |||
try { | |||
//转码 | |||
byte[] b = decoder.decodeBuffer(signPdf); | |||
for (int i = 0; i < b.length; ++i) { | |||
if (b[i] < 0) {//调整异常数据 | |||
b[i] += 256; | |||
} | |||
} | |||
inputStream = new ByteArrayInputStream(b); | |||
}catch (Exception e){ | |||
} | |||
} | |||
// 转换成MultipartFile | |||
MultipartFile multipartFile; | |||
@@ -209,10 +209,14 @@ irs: | |||
access-key: 42bcb49bea174986a3bfdfba7d005566 | |||
secret-key: bebff29877d4443abd67fc4f8fb335d8 | |||
api-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220309000004/seal-platform/seal/v1/rest/sign/signPdf | |||
app-report: | |||
url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020230427000001/irs-res-bill/report/pdfUrl | |||
appScret: BCDSGS_4ab4235d26a9a357170a39f3a13fd68c | |||
appKey: BCDSGA_d874c8e46b541eb4e8aac6510fd3351b | |||
hostname: iZbp13nwyvib53j4j1p2xoZ | |||
login: | |||
phone-verify-code: | |||
skip: true | |||
@@ -208,7 +208,10 @@ irs: | |||
access-key: 42bcb49bea174986a3bfdfba7d005566 | |||
secret-key: bebff29877d4443abd67fc4f8fb335d8 | |||
api-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220309000004/seal-platform/seal/v1/rest/sign/signPdf | |||
app-report: | |||
url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020230427000001/irs-res-bill/report/pdfUrl | |||
appScret: BCDSGS_4ab4235d26a9a357170a39f3a13fd68c | |||
appKey: BCDSGA_d874c8e46b541eb4e8aac6510fd3351b | |||
hostname: iZ6mx01gyeodd80imxd2gbZ | |||
login: | |||
phone-verify-code: | |||
@@ -0,0 +1,81 @@ | |||
package com.ningdatech.pmapi.irs; | |||
import com.alibaba.fastjson.JSON; | |||
import com.google.common.collect.Maps; | |||
import com.ningdatech.pmapi.common.util.CryptUtils; | |||
import com.ningdatech.pmapi.common.util.HmacAuthUtil; | |||
import com.ningdatech.pmapi.common.util.RefreshKeyUtil; | |||
import org.junit.Test; | |||
import org.springframework.http.HttpEntity; | |||
import org.springframework.http.HttpHeaders; | |||
import org.springframework.http.HttpMethod; | |||
import org.springframework.http.ResponseEntity; | |||
import org.springframework.util.LinkedMultiValueMap; | |||
import org.springframework.util.MultiValueMap; | |||
import org.springframework.web.client.RestTemplate; | |||
import java.security.NoSuchAlgorithmException; | |||
import java.util.Collection; | |||
import java.util.List; | |||
import java.util.Map; | |||
import java.util.Set; | |||
/** | |||
* @Classname IrsTest | |||
* @Description | |||
* @Date 2023/6/26 17:42 | |||
* @Author PoffyZhang | |||
*/ | |||
public class IrsTest { | |||
@Test | |||
public void test1(){ | |||
String method = "GET"; | |||
String url = "https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020230427000001/irs-res-bill/report/pdfUrl?appCode=A330000100000202105005790"; | |||
String appScret = "BCDSGS_4ab4235d26a9a357170a39f3a13fd68c"; | |||
String appKey = "BCDSGA_d874c8e46b541eb4e8aac6510fd3351b"; | |||
Map<String, String> header = HmacAuthUtil.generateHeader(url, method, appKey, appScret); | |||
//请求头 | |||
HttpHeaders headers = new HttpHeaders(); | |||
for(Map.Entry<String, String> entry : header.entrySet()){ | |||
headers.add(entry.getKey(), entry.getValue()); | |||
} | |||
//封装请求头 | |||
HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers); | |||
RestTemplate restTemplate = new RestTemplate(); | |||
ResponseEntity<String> forEntity = restTemplate.exchange(url, HttpMethod.GET,formEntity, String.class); | |||
System.out.println(JSON.toJSONString(forEntity)); | |||
} | |||
@Test | |||
public void test2() throws NoSuchAlgorithmException { | |||
long timestamp = System.currentTimeMillis(); | |||
String areaCode = "331121"; | |||
String appKey = "A331101453557202109017383"; | |||
String appScret = "496f0f2a19994f76b4fd9dae087366c7"; | |||
String requestSecret = RefreshKeyUtil.getRequestSecret(appKey, appScret); | |||
String capCode = CryptUtils.MD5Encode(timestamp + areaCode); | |||
String capTime = String.valueOf(timestamp); | |||
String sign = CryptUtils.MD5Encode(appKey + requestSecret + timestamp); | |||
String url = "https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/94wbaL1I1Pbz0648.htm?requestTime=" + timestamp + | |||
"&sign=" + sign + "&appKey=" + appKey + "&capCode=" + capCode + "&capTime=" + capTime + | |||
"&baseProjSys=测试应用&areaCode=331121&baseProjName=nsl-丽水演示项目&baseProjId=331100230130112233001" + | |||
"&isEffective=1&baseProjSysCode=25083657"; | |||
RestTemplate restTemplate = new RestTemplate(); | |||
ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class); | |||
System.out.println(JSON.toJSONString(forEntity)); | |||
} | |||
@Test | |||
public void test3() throws NoSuchAlgorithmException { | |||
long timestamp = System.currentTimeMillis(); | |||
String areaCode = "331121"; | |||
System.out.println(CryptUtils.MD5Encode(timestamp + areaCode)); | |||
} | |||
} |