Ver código fonte

华泰对接(电子保单下载)

cuixinpeng 2 anos atrás
pai
commit
7b2fc953a6

+ 5 - 2
src/main/java/com/ydtech/modules/ins/utils/CompressUtil.java

@@ -115,7 +115,7 @@ public class CompressUtil {
      * @param password
      *            解压文件密码(可以为空)
      */
-    public static void unZip(String source, String dest, String password) {
+    public static void unZip(String source, String dest, String password,String fileName,String licensePlate) {
         try {
             File zipFile = new File(source);
             // 首先创建ZipFile指向磁盘上的.zip文件
@@ -142,10 +142,13 @@ public class CompressUtil {
             extractedFileList.toArray(extractedFiles);
             for (File f : extractedFileList) {
                 if(f.getName().contains("_bz6")){
-                    f.renameTo(new File(dest+"保单.pdf"));
+                    f.renameTo(new File(dest+licensePlate+"-交强险标志.pdf"));
+                }else{
+                    f.renameTo(new File(dest+fileName));
                 }
                 System.out.println(f.getAbsolutePath() + "文件解压成功!");
             }
+            zipFile.delete();
         } catch (ZipException e) {
             e.printStackTrace();
         }

+ 2 - 1
src/main/java/com/ydtech/modules/order/controller/HuaTaiOrderApiController.java

@@ -11,6 +11,7 @@ import com.ydtech.modules.order.components.huatai.HuiTaiUploadImageComponents;
 import com.ydtech.modules.order.dao.InsTaskImagesMapper;
 import com.ydtech.modules.order.entity.api.zhongmei.request.ApprovedRequest;
 import com.ydtech.modules.order.entity.api.zhongmei.request.CoverageRequest;
+import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 import com.ydtech.modules.order.entity.dto.InsUploadImagesDto;
 import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.order.service.HuaTaiOrderApiService;
@@ -68,7 +69,7 @@ public class HuaTaiOrderApiController {
 
     @PostMapping("/getPolicyPrint")
     @ApiOperation(value = "电子保单")//3.12.	电子保单下载接口
-    public HttpResult<List<String>> getPolicyPrint(@RequestBody PolicyPrintVo policyPrintVo) {
+    public HttpResult<CrawlerPolicyPrintVo> getPolicyPrint(@RequestBody PolicyPrintVo policyPrintVo) {
         return this.huaTaiOrderApiService.getPolicyPrint(policyPrintVo);
     }
 

+ 2 - 1
src/main/java/com/ydtech/modules/order/service/HuaTaiOrderApiService.java

@@ -4,6 +4,7 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.ya.CarModelDTO;
 import com.ydtech.modules.order.entity.api.zhongmei.request.ApprovedRequest;
 import com.ydtech.modules.order.entity.api.zhongmei.request.CoverageRequest;
+import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 import com.ydtech.modules.order.entity.vo.AccidentalDrivingQueryVo;
 import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
@@ -25,7 +26,7 @@ public interface HuaTaiOrderApiService extends BaseOrderService<AccidentalDrivin
      *
      * @return 响应
      */
-    HttpResult<List<String>> getPolicyPrint(PolicyPrintVo policyPrintVo);
+    HttpResult<CrawlerPolicyPrintVo> getPolicyPrint(PolicyPrintVo policyPrintVo);
 
     /**
      * 缴费查询

+ 13 - 17
src/main/java/com/ydtech/modules/order/service/impl/HuaTaiOrderApiServiceImpl.java

@@ -35,6 +35,7 @@ import com.ydtech.modules.order.entity.api.zhongmei.response.ModelsQueryResponse
 import com.ydtech.modules.order.entity.api.zhongmei.response.UploadImageResponse;
 import com.ydtech.modules.order.entity.config.HuaTaiConfigureParameters;
 import com.ydtech.modules.order.entity.config.ZmConfigureParameters;
+import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 import com.ydtech.modules.order.entity.dto.InsUploadImagesDto;
 import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
 import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
@@ -366,7 +367,7 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
      * @return
      */
     @Override
-    public HttpResult<List<String>> getPolicyPrint(PolicyPrintVo policyPrintVo) {
+    public HttpResult<CrawlerPolicyPrintVo> getPolicyPrint(PolicyPrintVo policyPrintVo) {
         InsAreaCompany insAreaCompany = insAreaCompanyService.getById(policyPrintVo.getCompanyId());
         // 1. 协议id获取配置实体
         HuaTaiConfigureParameters huaTaiConfigureParameters = configureParametersComponents.toEntity(HuaTaiConfigureParameters.class, insAreaCompany.getAgreementId());
@@ -386,7 +387,7 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
         }
         request.setHead(new HuaTaiBaseRequestHead(huaTaiConfigureParameters));
         HuaTaiInsurancePolicyPrintResponse response = huaTaiRequestApiComponents.insurancePolicyPrint(request, HuaTaiInsurancePolicyPrintResponse.class);
-        List<String> transferUrlList = new ArrayList<>();
+        CrawlerPolicyPrintVo crawlerPolicyPrintVo = new CrawlerPolicyPrintVo();
         if("0".equals(response.getHead().getReturnCode())){
             List<HuaTaiInsurancePolicyPrintResponse.ElecDownLoadResultDto> urlList = response.getElecDownLoadResultList();
             //接口文档与返回示例不一致,待联调后修改
@@ -394,31 +395,26 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
             if(urlList!=null && !urlList.isEmpty()){
                 for(HuaTaiInsurancePolicyPrintResponse.ElecDownLoadResultDto elecDownLoadResultDto :urlList){
                     String url = elecDownLoadResultDto.getDownURL();
-                    String templateName = "";
-                    if("1".equals(policyPrintVo.getType())){
-                        templateName = "-交强险标志.pdf";
-                    }else{
-                        if (InsuranceRisk.TRAFFIC.getCode().equals(riskCode)) {
-                            templateName = "-交强险保单.pdf";
-                        }else if (InsuranceRisk.BUSINESS.getCode().equals(riskCode)) {
-                            templateName = "-商业险保单.pdf";
-                        }
+                    if (InsuranceRisk.TRAFFIC.getCode().equals(riskCode)) {
+                        crawlerPolicyPrintVo.setJqxPolicyUrl(gainCarInsPolicy(url, licensePlate + "-交强险保单.pdf", licensePlate,password));
+                        crawlerPolicyPrintVo.setJqxFlagUrl(gainCarInsPolicy(url, licensePlate + "-交强险标志.pdf", licensePlate,password));
+                    }else if (InsuranceRisk.BUSINESS.getCode().equals(riskCode)) {
+                        crawlerPolicyPrintVo.setSyxPolicyUrl(gainCarInsPolicy(url, licensePlate + "-商业险保单.pdf", licensePlate,password));
                     }
-                    String transferUrl = gainCarInsPolicy(url, licensePlate + templateName, licensePlate,password);
-                    transferUrlList.add(transferUrl) ;
+                    /**
+                     * 先下载到本地,然后再解压到固定路径
+                     */
                 }
             }
         }else{
             return HttpResult.error("获取华泰电子保单失败:"+response.getRegistResult());
         }
-        return HttpResult.ok("下载成功",transferUrlList);
+        return HttpResult.ok("下载成功",crawlerPolicyPrintVo);
     }
 
     public String gainCarInsPolicy(String url, String fileName, String licensePlate,String password) {
         String dir = "carInsPolicy/" + licensePlate + "/";
-        String newFilePath = FileUtil.netUrlStoreToLocal(url, dir, fileName, uploadFilePath, apiUrl + showFileUrl);
-        CompressUtil.unZip(newFilePath,dir+licensePlate,password);
-        return FileUtil.netUrlToFile(url, dir, fileName, uploadFilePath, apiUrl + showFileUrl);
+        return FileUtil.netUrlStoreToLocal(url, dir, fileName, uploadFilePath, apiUrl + showFileUrl,password,licensePlate);
     }
 
     /**

+ 7 - 7
src/main/java/com/ydtech/utils/baidu/FileUtil.java

@@ -173,7 +173,7 @@ public class FileUtil {
         }
 
     }
-    public static String netUrlStoreToLocal(String url, String dir, String fileName, String path, String showUrl) {
+    public static String netUrlStoreToLocal(String url, String dir, String fileName, String path, String showUrl,String password,String licensePlate) {
         if (StringUtils.isEmpty(url)) return "";
         String showPath = String.format("%s%s%s", showUrl, dir, fileName);
         String uploadPath = path + dir;
@@ -181,12 +181,12 @@ public class FileUtil {
         try {
 
             //存在
-            /*File existFile = new File(uploadPath + fileName);
+            File existFile = new File(uploadPath + fileName);
             if (existFile.exists()) {
                 System.err.println("存在的文件:" + existFile.getPath());
                 System.err.println("存在的文件的展示地址:" + showPath);
                 return showPath;
-            }*/
+            }
 
             File folder = new File(uploadPath);
             if (!folder.isDirectory()) {
@@ -195,10 +195,12 @@ public class FileUtil {
 
             URI u = URI.create(url);
             InputStream inputStream = u.toURL().openStream();
-            File file = new File(uploadPath + fileName);
+            File file = new File(uploadPath + licensePlate+".zip");
             copyInputStreamToFile(inputStream, file);
 
-            return file.getPath();
+            CompressUtil.unZip(file.getPath(),uploadPath,password,fileName,licensePlate);
+            file.delete();
+            return showPath;
 
         } catch (MalformedURLException e) {
             throw new RuntimeException(e);
@@ -214,7 +216,5 @@ public class FileUtil {
         String fileName = licensePlate + ".zip";
         String path = "D:/upload/";
         String showUrl = "http://127.0.0.1:8080/upload/";
-        String newFilePath = netUrlStoreToLocal(url, dir, fileName, path, showUrl);
-        CompressUtil.unZip(newFilePath,path+licensePlate,"140105199211031819");
     }
 }