wanghongzhi 1 gadu atpakaļ
vecāks
revīzija
db86cafcbc

+ 7 - 0
pom.xml

@@ -57,6 +57,13 @@
 		<dependency>
 			<groupId>org.projectlombok</groupId>
 			<artifactId>lombok</artifactId>
+			<version>1.18.22</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>easyexcel</artifactId>
+			<version>2.2.11</version>
 		</dependency>
 	</dependencies>
 	<dependencyManagement>

+ 62 - 0
src/main/java/com/qdport/controller/ImportDataController.java

@@ -0,0 +1,62 @@
+package com.qdport.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qdport.core.tool.api.R;
+import com.qdport.enums.QDPortEnum;
+import com.qdport.modules.system.entity.SysUser;
+import com.qdport.modules.system.service.TSysUserService;
+import com.qdport.service.PolicyShareService;
+import com.qdport.util.ExcelUtil;
+import com.qdport.util.HttpsUtil;
+import com.qdport.vo.PolicyShareExcelVO;
+import com.qdport.vo.PolicyShareVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("qdport-zcgx/import")
+@Api(value = "excel导入", tags = "excel导入")
+@AllArgsConstructor
+public class ImportDataController {
+    private final PolicyShareService policyShareService;
+    private final TSysUserService sysUserService;
+
+
+    @PostMapping("/policyShare")
+    @ApiOperation(value = "导入政策分享")
+    public R importPolicyShare(@RequestBody PolicyShareVO vo) throws Exception {
+        byte[] byteFromUrl = HttpsUtil.getByteFromUrl(vo.getExcelUrl());
+        List<PolicyShareExcelVO> list = ExcelUtil.readPolicyShareFromXls(byteFromUrl);
+
+        if (list.isEmpty()) {
+            throw new Exception("excel中缺失有效数据");
+        }
+        for (PolicyShareExcelVO model : list) {
+            PolicyShareVO shareVO = new PolicyShareVO();
+            BeanUtils.copyProperties(model, shareVO);
+
+            shareVO.setStatus(QDPortEnum.POLICY_SHARE_STATUS_ACTIVE.getValue());
+
+            QueryWrapper<SysUser> userWrapper = new QueryWrapper<>();
+            userWrapper.eq("MOBILE", model.getContactPhone());
+            userWrapper.eq("NAME", model.getCreateName());
+            SysUser createUser = sysUserService.getOne(userWrapper);
+            shareVO.setCreateId(Long.valueOf(createUser.getId()));
+            shareVO.setUpdateId(Long.valueOf(createUser.getId()));
+            shareVO.setCreateName(createUser.getName());
+
+            policyShareService.save(shareVO);
+        }
+
+
+        return R.data("导入成功");
+    }
+}

+ 9 - 1
src/main/java/com/qdport/controller/PolicyShareController.java

@@ -27,7 +27,6 @@ import com.qdport.core.boot.ctrl.QdportController;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import javax.validation.Valid;
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -100,6 +99,15 @@ public class PolicyShareController extends QdportController {
         return R.success("保存成功");
     }
 
+    @PostMapping("/saveDone")
+    @ApiOperation(value = "新增", notes = "传入PolicyShare")
+    @Transactional(rollbackFor = Exception.class)
+    public R saveDone(@RequestBody PolicyShareVO vo) {
+        vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_DONE.getValue());
+        policyShareService.save(vo);
+        return R.success("保存成功");
+    }
+
     @PostMapping("/saveApprove")
     @ApiOperation(value = "新增并且提交", notes = "传入PolicyShare")
     @Transactional(rollbackFor = Exception.class)

+ 3 - 2
src/main/java/com/qdport/entity/PolicyShare.java

@@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.*;
@@ -151,6 +150,8 @@ public class PolicyShare implements Serializable {
 	@JsonSerialize(
 			using = ToStringSerializer.class
 	)
-	private String updateId;
+	private Long updateId;
 
+	@ApiModelProperty(value = "解读内容")
+	private String decodeContent;
 }

+ 48 - 0
src/main/java/com/qdport/listener/PolicyShareReadListener.java

@@ -0,0 +1,48 @@
+package com.qdport.listener;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.CellExtra;
+import com.alibaba.excel.read.listener.ReadListener;
+import com.qdport.vo.PolicyShareExcelVO;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class PolicyShareReadListener implements ReadListener<PolicyShareExcelVO> {
+    private List<PolicyShareExcelVO> list = new ArrayList<>();
+
+    public List<PolicyShareExcelVO> getList() {
+        return list;
+    }
+
+    @Override
+    public void onException(Exception e, AnalysisContext analysisContext) {
+
+    }
+
+    @Override
+    public void invokeHead(Map<Integer, CellData> map, AnalysisContext analysisContext) {
+    }
+
+    @Override
+    public void invoke(PolicyShareExcelVO xls, AnalysisContext analysisContext) {
+        list.add(xls);
+    }
+
+    @Override
+    public void extra(CellExtra cellExtra, AnalysisContext analysisContext) {
+
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+    }
+
+    @Override
+    public boolean hasNext(AnalysisContext analysisContext) {
+        return true;
+    }
+}

+ 1 - 1
src/main/java/com/qdport/RedisEventListener.java

@@ -1,4 +1,4 @@
-package com.qdport;
+package com.qdport.listener;
 
 import com.qdport.core.cache.utils.CacheUtil;
 import lombok.extern.slf4j.Slf4j;

+ 13 - 0
src/main/java/com/qdport/query/PolicyShareQuery.java

@@ -4,7 +4,10 @@ import com.qdport.enums.Comparison;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
 import java.io.Serializable;
+import java.util.Date;
 
 
 /**
@@ -37,4 +40,14 @@ public class PolicyShareQuery implements Serializable {
     private String docNo;
     @Wrapper
     private Integer isInWh;
+    @Wrapper(value = Comparison.GT,column = "CREATE_TIME")
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    private Date beginCreateTime;
+    @Wrapper(value = Comparison.LT, column = "CREATE_TIME")
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    private Date endCreateTime;
 }

+ 13 - 0
src/main/java/com/qdport/query/PolicyTodoQuery.java

@@ -4,7 +4,10 @@ import com.qdport.enums.Comparison;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
 import java.io.Serializable;
+import java.util.Date;
 
 
 /**
@@ -31,4 +34,14 @@ public class PolicyTodoQuery implements Serializable {
     private String zcCreateName;
     @Wrapper(value = Comparison.LIKE)
     private String zcContactPhone;
+    @Wrapper(value = Comparison.GT, column = "CREATE_TIME")
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    private Date beginCreateTime;
+    @Wrapper(value = Comparison.LT, column = "CREATE_TIME")
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    private Date endCreateTime;
 }

+ 3 - 0
src/main/java/com/qdport/service/impl/PolicyShareServiceImpl.java

@@ -63,6 +63,7 @@ public class PolicyShareServiceImpl extends ServiceImpl<PolicyShareMapper, Polic
 
         QueryWrapper<PolicyFile> fileWrapper = new QueryWrapper<>();
         fileWrapper.eq("REF_ID", entity.getId());
+        fileWrapper.eq("REF_TYPE", QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
         policyFileService.remove(fileWrapper);
 
         List<PolicyFileVO> fileList = vo.getFileList();
@@ -82,6 +83,7 @@ public class PolicyShareServiceImpl extends ServiceImpl<PolicyShareMapper, Polic
 
         QueryWrapper<PolicyFile> fileWrapper = new QueryWrapper<>();
         fileWrapper.eq("REF_ID", entity.getId());
+        fileWrapper.eq("REF_TYPE", QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
         policyFileService.remove(fileWrapper);
 
         List<PolicyFileVO> fileList = vo.getFileList();
@@ -106,6 +108,7 @@ public class PolicyShareServiceImpl extends ServiceImpl<PolicyShareMapper, Polic
 
         QueryWrapper<PolicyFile> fileWrapper = new QueryWrapper<>();
         fileWrapper.in("REF_ID", idList);
+        fileWrapper.eq("REF_TYPE", QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
         policyFileService.remove(fileWrapper);
     }
 

+ 31 - 0
src/main/java/com/qdport/util/ExcelUtil.java

@@ -0,0 +1,31 @@
+package com.qdport.util;
+
+import com.alibaba.excel.EasyExcel;
+import com.qdport.entity.PolicyShare;
+import com.qdport.listener.PolicyShareReadListener;
+import com.qdport.vo.PolicyShareExcelVO;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.text.DecimalFormat;
+import java.util.List;
+
+/**
+ * @author liy
+ * @since 2022-03-31
+ **/
+public class ExcelUtil {
+    private static DecimalFormat df1 = new DecimalFormat("0");
+    private static DecimalFormat df2 = new DecimalFormat("0.00");
+
+    public static List<PolicyShareExcelVO> readPolicyShareFromXls(byte[] dataArray) {
+        InputStream is = new ByteArrayInputStream(dataArray);
+        PolicyShareReadListener readListener = new PolicyShareReadListener();
+        EasyExcel.read(is, PolicyShareExcelVO.class, readListener).sheet().headRowNumber(1).doRead();
+        List<PolicyShareExcelVO> list = readListener.getList();
+        return list;
+    }
+
+
+}
+  

+ 374 - 0
src/main/java/com/qdport/util/HttpsUtil.java

@@ -0,0 +1,374 @@
+/**
+ *
+ */
+package com.qdport.util;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.IOUtils;
+import org.springframework.stereotype.Component;
+
+import javax.net.ssl.*;
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+/**
+ * 发送https请求的工具类
+ */
+@Component
+@Slf4j
+public class HttpsUtil {
+
+    public static final String charset = "UTF-8";
+
+    public static final String CONTENTTYPE_APPLICATION_JSON = "application/json;charset=UTF-8";
+    public static final String CONTENTTYPE_APPLICATION_XML = "application/xml;charset=UTF-8";
+    public static final String CONTENTTYPE_MULTIPART_FORM = "multipart/form-data;charset=UTF-8";
+    public static final String TEXTPLAIN = "text/plain;charset=UTF-8";
+    public static final String TEXTHTML = "text/html;charset=UTF-8";
+    /**
+     * 忽视证书HostName
+     */
+    private static HostnameVerifier ignoreHostnameVerifier = new HostnameVerifier() {
+        public boolean verify(String s, SSLSession sslsession) {
+            return true;
+        }
+    };
+
+    /**
+     * Ignore Certification
+     */
+    private static TrustManager ignoreCertificationTrustManger = new X509TrustManager() {
+        private X509Certificate[] certificates;
+
+        public void checkClientTrusted(X509Certificate certificates[], String authType) throws CertificateException {
+            if (this.certificates == null) {
+                this.certificates = certificates;
+            }
+        }
+
+        public void checkServerTrusted(X509Certificate[] ax509certificate, String s) throws CertificateException {
+            if (this.certificates == null) {
+                this.certificates = ax509certificate;
+            }
+        }
+
+        public X509Certificate[] getAcceptedIssuers() {
+            return new X509Certificate[0];
+        }
+    };
+
+    public static byte[] getByteFromUrl(String filePath) {
+
+        byte[] data = null;
+        InputStream is = null;
+        HttpURLConnection conn = null;
+        HttpsURLConnection conns = null;
+        try {
+
+            URL url = new URL(filePath);
+            if (filePath.startsWith("https")) {
+                HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);
+                conns = (HttpsURLConnection) url.openConnection();
+                // Prepare SSL Context
+                TrustManager[] tm = {ignoreCertificationTrustManger};
+                SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
+                sslContext.init(null, tm, new java.security.SecureRandom());
+
+                // 从上述SSLContext对象中得到SSLSocketFactory对象
+                SSLSocketFactory ssf = sslContext.getSocketFactory();
+                conns.setSSLSocketFactory(ssf);
+                if (conns.getResponseCode() != 200) {
+                    return null;
+                }
+                is = conns.getInputStream();
+                if (conns.getResponseCode() == 200) {
+                    data = readInputStream(is);
+                } else {
+                    data = null;
+                }
+            } else {
+                conn = (HttpURLConnection) url.openConnection();
+                conn.setDoInput(true);
+                conn.setConnectTimeout(6000);
+                is = conn.getInputStream();
+                if (conn.getResponseCode() == 200) {
+                    data = readInputStream(is);
+                } else {
+                    data = null;
+                }
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (is != null) {
+                    is.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            if (conn != null) {
+                conn.disconnect();
+            }
+        }
+        return data;
+    }
+
+    public static byte[] readInputStream(InputStream is) {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        byte[] buffer = new byte[1024];
+        int length = -1;
+        try {
+            while ((length = is.read(buffer)) != -1) {
+                baos.write(buffer, 0, length);
+            }
+            baos.flush();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        byte[] data = baos.toByteArray();
+        try {
+            is.close();
+            baos.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return data;
+    }
+
+    /**
+     * 发送Get请求
+     */
+    public static JSONObject sendSSLGetMethod(String urlString) throws Exception {
+        JSONObject jsonObject = null;
+        StringBuffer buffer = null;
+        InputStream is = null;
+        InputStreamReader isr = null;
+        BufferedReader bufferedReader = null;
+        HttpsURLConnection connection = null;
+        try {
+
+            URL url = new URL(urlString);
+            HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);
+            connection = (HttpsURLConnection) url.openConnection();
+
+            // Prepare SSL Context
+            TrustManager[] tm = {ignoreCertificationTrustManger};
+            SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
+            sslContext.init(null, tm, new java.security.SecureRandom());
+
+            // 从上述SSLContext对象中得到SSLSocketFactory对象
+            SSLSocketFactory ssf = sslContext.getSocketFactory();
+            connection.setSSLSocketFactory(ssf);
+            if (connection.getResponseCode() != 200) {
+                return null;
+            }
+
+            is = connection.getInputStream();
+            isr = new InputStreamReader(is, "UTF-8");
+            bufferedReader = new BufferedReader(isr);
+
+            String str = null;
+            while ((str = bufferedReader.readLine()) != null) {
+                if (buffer == null) {
+                    buffer = new StringBuffer();
+                }
+                buffer.append(str);
+            }
+
+            jsonObject = JSONObject.parseObject(buffer.toString());
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+            ex.printStackTrace();
+        } finally {
+            if (bufferedReader != null) {
+                bufferedReader.close();
+                bufferedReader = null;
+            }
+            if (isr != null) {
+                isr.close();
+                isr = null;
+            }
+            if (is != null) {
+                is.close();
+                is = null;
+            }
+            if (connection != null) {
+                connection.disconnect();
+            }
+        }
+        return jsonObject;
+    }
+
+    /**
+     * 发送Post请求
+     */
+    public static JSONObject sendSSLPostMethod(String urlString, String postData) throws Exception {
+        JSONObject jsonObject = null;
+        StringBuffer buffer = null;
+        InputStream is = null;
+        InputStreamReader isr = null;
+        BufferedReader bufferedReader = null;
+        HttpsURLConnection connection = null;
+        try {
+
+            URL url = new URL(urlString);
+            HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);
+            connection = (HttpsURLConnection) url.openConnection();
+            connection.setDoInput(true);
+            connection.setDoOutput(true);
+            connection.setRequestMethod("POST");
+            connection.setRequestProperty("content-type", "text/json");
+            connection.setRequestProperty("content-length", String.valueOf(postData.getBytes().length));
+            connection.getOutputStream().write(postData.getBytes("utf-8"));
+            connection.getOutputStream().flush();
+            connection.getOutputStream().close();
+
+            // Prepare SSL Context
+            TrustManager[] tm = {ignoreCertificationTrustManger};
+            SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
+            sslContext.init(null, tm, new java.security.SecureRandom());
+
+            // 从上述SSLContext对象中得到SSLSocketFactory对象
+            SSLSocketFactory ssf = sslContext.getSocketFactory();
+            connection.setSSLSocketFactory(ssf);
+            if (connection.getResponseCode() != 200) {
+                return null;
+            }
+
+            is = connection.getInputStream();
+            isr = new InputStreamReader(is, "UTF-8");
+            bufferedReader = new BufferedReader(isr);
+
+            String str = null;
+            while ((str = bufferedReader.readLine()) != null) {
+                if (buffer == null) {
+                    buffer = new StringBuffer();
+                }
+                buffer.append(str);
+            }
+
+            jsonObject = JSONObject.parseObject(buffer.toString());
+        } finally {
+            if (null != is) {
+                is.close();
+                is = null;
+            }
+            if (null != connection) {
+                connection.disconnect();
+            }
+        }
+        return jsonObject;
+    }
+
+    /**
+     * 发送Post请求
+     */
+    public static String postForm(String urlString, byte[] postData) throws Exception {
+        String buffer = "";
+        InputStream is = null;
+        InputStreamReader isr = null;
+        BufferedReader bufferedReader = null;
+        HttpsURLConnection connection = null;
+        try {
+
+            URL url = new URL(urlString);
+            HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);
+            connection = (HttpsURLConnection) url.openConnection();
+            connection.setDoInput(true);
+            connection.setDoOutput(true);
+            connection.setRequestMethod("POST");
+            connection.setRequestProperty("content-type", "application/x-www-form-urlencoded");
+            // Prepare SSL Context
+            TrustManager[] tm = {ignoreCertificationTrustManger};
+            SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
+            sslContext.init(null, tm, new java.security.SecureRandom());
+
+            // 从上述SSLContext对象中得到SSLSocketFactory对象
+            SSLSocketFactory ssf = sslContext.getSocketFactory();
+            connection.setSSLSocketFactory(ssf);
+            OutputStream outStrm = connection.getOutputStream();
+            outStrm.write(postData);
+            outStrm.flush();
+            outStrm.close();
+
+            if (connection.getResponseCode() != 200) {
+                return null;
+            }
+            is = connection.getInputStream();
+            buffer = IOUtils.toString(is, "utf-8");
+        } finally {
+            if (null != is) {
+                is.close();
+                is = null;
+            }
+            if (null != connection) {
+                connection.disconnect();
+            }
+        }
+        return buffer;
+    }
+    public static String downloadFile(String localFile, String fileUrl) throws Exception {
+        InputStream is = null;
+        HttpsURLConnection connection = null;
+        File file = new File(localFile);
+        FileOutputStream fos = new FileOutputStream(file);
+        try {
+            URL url = new URL(fileUrl);
+            HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);
+            connection = (HttpsURLConnection) url.openConnection();
+            connection.setDoInput(true);
+            connection.setDoOutput(true);
+            connection.setRequestMethod("GET");
+//            connection.setRequestProperty("content-type", "application/x-www-form-urlencoded");
+            // Prepare SSL Context
+            TrustManager[] tm = {ignoreCertificationTrustManger};
+            SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
+            sslContext.init(null, tm, new java.security.SecureRandom());
+
+            // 从上述SSLContext对象中得到SSLSocketFactory对象
+            SSLSocketFactory ssf = sslContext.getSocketFactory();
+            connection.setSSLSocketFactory(ssf);
+
+            if (connection.getResponseCode() != 200) {
+                return null;
+            }
+            is = connection.getInputStream();
+            int bytesum = 0;
+            int byteread = 0;
+
+            byte[] buffer = new byte[1204];
+            while ((byteread = is.read(buffer)) != -1) {
+                bytesum += byteread;
+                System.out.println(bytesum);
+                fos.write(buffer, 0, byteread);
+            }
+            fos.close();
+            is.close();
+            connection.disconnect();
+            return localFile;
+        } finally {
+            if (null != is) {
+                fos.close();
+                fos = null;
+            }
+            if (null != is) {
+                is.close();
+                is = null;
+            }
+            if (null != connection) {
+                connection.disconnect();
+            }
+        }
+    }
+
+//    public static void main(String[] args) {
+//        byte[] byteFromUrl = getByteFromUrl("https://pmbimcloud-company.oss-cn-hangzhou.aliyuncs.com/af560077-7ead-2c94-b2dc-02170a833273.jpg?Expires=1672812245&OSSAccessKeyId=LTAI8PPrIEVEAQCK&Signature=9oy9s8HS%2FvIczLQJQUeWBqL7MII%3D");
+//        System.out.println(byteFromUrl.length);
+//    }
+}

+ 22 - 0
src/main/java/com/qdport/vo/PolicyShareExcelVO.java

@@ -0,0 +1,22 @@
+package com.qdport.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class PolicyShareExcelVO {
+    @ExcelProperty("填报人")
+    private String createName;
+    @ExcelProperty("政策名称")
+    private String name;
+    @ExcelProperty("政策概要")
+    private String abstractContent;
+    @ExcelProperty("政策等级")
+    private String zcLevel;
+    @ExcelProperty("政策类别")
+    private String zcType;
+    @ExcelProperty("政策文号")
+    private String docNo;
+    @ExcelProperty("联系方式")
+    private String contactPhone;
+}

+ 4 - 1
src/main/java/com/qdport/vo/PolicyShareVO.java

@@ -4,6 +4,7 @@ import com.qdport.entity.PolicyShare;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -21,5 +22,7 @@ public class PolicyShareVO extends PolicyShare {
 
     private String companyName;
 
-    private List<PolicyFileVO> fileList;
+    private List<PolicyFileVO> fileList = new ArrayList<>();
+
+    private String excelUrl;
 }