From e1554e40a856471ad66a0669c7dd1ef43b8f1bf3 Mon Sep 17 00:00:00 2001 From: WendyYang Date: Thu, 30 May 2024 12:53:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=81=A5=E5=BA=B7=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build-spec.config | 2 +- .../kqapi/admin/manage/AdminMatterManage.java | 4 +- .../kqapi/common/config/SystemProps.java | 36 ++++ .../ningdatech/kqapi/common/constant/BizConst.java | 2 + .../com/ningdatech/kqapi/common/util/HttpUtil.java | 172 ++++--------------- .../ningdatech/kqapi/common/util/NdDateUtils.java | 2 +- .../password/UsernamePasswordAuthFilter.java | 4 +- .../ningdatech/kqapi/sso/utils/HmacAuthUtil.java | 50 +++--- .../kqapi/user/manage/UserInfoManage.java | 1 + .../kqapi/zzsfw/controller/CommonController.java | 4 +- .../zzsfw/controller/KqZzsfwMenuController.java | 4 +- .../kqapi/zzsfw/manage/MatterManage.java | 111 +++++------- kq-vas-api/src/main/resources/application-dev.yml | 3 + kq-vas-api/src/main/resources/application-prod.yml | 8 +- .../com/ningdatech/kqapi/menu/DuplicationTest.java | 87 ---------- .../kqapi/menu/ExcelSplitMergedCells.java | 60 ------- .../java/com/ningdatech/kqapi/menu/MenuTest.java | 187 --------------------- .../java/com/ningdatech/kqapi/menu/PolicyTest.java | 85 ---------- 18 files changed, 161 insertions(+), 661 deletions(-) create mode 100644 kq-vas-api/src/main/java/com/ningdatech/kqapi/common/config/SystemProps.java delete mode 100644 kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/ExcelSplitMergedCells.java delete mode 100644 kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/MenuTest.java delete mode 100644 kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/PolicyTest.java diff --git a/build-spec.config b/build-spec.config index 036957f..7023f06 100644 --- a/build-spec.config +++ b/build-spec.config @@ -1,2 +1,2 @@ artifactType=1 -artifactFile=kqapi/target/kqapi.jar \ No newline at end of file +artifactFile=kq-vas-api/target/kqapi.jar \ No newline at end of file diff --git a/kq-vas-api/src/main/java/com/ningdatech/kqapi/admin/manage/AdminMatterManage.java b/kq-vas-api/src/main/java/com/ningdatech/kqapi/admin/manage/AdminMatterManage.java index 17aae79..3577c05 100644 --- a/kq-vas-api/src/main/java/com/ningdatech/kqapi/admin/manage/AdminMatterManage.java +++ b/kq-vas-api/src/main/java/com/ningdatech/kqapi/admin/manage/AdminMatterManage.java @@ -208,7 +208,7 @@ public class AdminMatterManage { }); zzsfwMenuService.saveBatch(newMatters); } catch (IOException e) { - log.error("导入失败:", e); + log.error("导入失败:{}", e.getMessage()); throw BizException.wrap("政务服务事项导入失败"); } } @@ -251,7 +251,7 @@ public class AdminMatterManage { os.write(resource.readBytes()); os.flush(); } catch (IOException e) { - log.error("下载失败:", e); + log.error("下载失败:{}", e.getMessage()); throw BizException.wrap("事项配置模板下载失败"); } } diff --git a/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/config/SystemProps.java b/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/config/SystemProps.java new file mode 100644 index 0000000..5e4df6e --- /dev/null +++ b/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/config/SystemProps.java @@ -0,0 +1,36 @@ +package com.ningdatech.kqapi.common.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + *

+ * WebProps + *

+ * + * @author WendyYang + * @since 10:20 2024/5/30 + */ +@Component +public class SystemProps { + + public static String webUrl; + + public static String servletContentPath; + + public static String getApiUrl() { + return webUrl + servletContentPath; + } + + @Value("${sys.web-url:}") + public void setWebUrl(String webUrl) { + SystemProps.webUrl = webUrl; + } + + + @Value("${server.servlet.context-path:}") + public void setServletContentPath(String servletContentPath) { + SystemProps.servletContentPath = servletContentPath; + } + +} diff --git a/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/constant/BizConst.java b/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/constant/BizConst.java index 0307599..e8162b2 100644 --- a/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/constant/BizConst.java +++ b/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/constant/BizConst.java @@ -34,4 +34,6 @@ public class BizConst { public static final ApiResponse UNAUTHENTICATED = ApiResponse.of(401, "用户未登录!"); + public static final String ANONYMOUS_FILE_DOWN_URL = "/api/v1/common/anonymous/file/download/"; + } diff --git a/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/util/HttpUtil.java b/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/util/HttpUtil.java index e15b995..05c666b 100644 --- a/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/util/HttpUtil.java +++ b/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/util/HttpUtil.java @@ -10,29 +10,42 @@ import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.ssl.DefaultHostnameVerifier; import org.apache.http.conn.util.PublicSuffixMatcher; import org.apache.http.conn.util.PublicSuffixMatcherLoader; -import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Map; + +/** + *

+ * HttpUtil + *

+ * + * @author WendyYang + * @since 12:01 2024/5/30 + */ public class HttpUtil { - private Logger logger = LoggerFactory.getLogger(getClass()); - private RequestConfig requestConfig = RequestConfig.custom() - .setSocketTimeout(15000) - .setConnectTimeout(15000) - .setConnectionRequestTimeout(15000) - .build(); + + private static final Logger logger = LoggerFactory.getLogger(HttpUtil.class); + private final RequestConfig requestConfig = RequestConfig.custom() + .setSocketTimeout(15000) + .setConnectTimeout(15000) + .setConnectionRequestTimeout(15000) + .build(); + private static HttpUtil instance = null; - private HttpUtil(){} - public static HttpUtil getInstance(){ + private HttpUtil() { + } + + public static HttpUtil getInstance() { if (instance == null) { instance = new HttpUtil(); } @@ -40,39 +53,13 @@ public class HttpUtil { } /** - * 发送 post 请求 - * @param httpUrl 地址 - */ - public String sendHttpPost(String httpUrl) throws IOException { - HttpPost httpPost= new HttpPost(httpUrl);// 创建 httpPost - return sendHttpPost(httpPost); - } - - /** - * 发送 post 请求 - * @param httpUrl 地址 - * @param params 参数(格式:key1=value1&key2=value2) - */ - public String sendHttpPost(String httpUrl, String params) throws IOException { - HttpPost httpPost= new HttpPost(httpUrl);// 创建 httpPost - try { - //设置参数 - StringEntity stringEntity = new StringEntity(params, "UTF-8"); - stringEntity.setContentType("application/x-www-form-urlencoded"); - httpPost.setEntity(stringEntity); - } catch (Exception e) { - logger.error(e.getMessage()); - } - return sendHttpPost(httpPost); - } - - /** - * 发送 post 请求 - * @param httpUrl 地址 - * @param maps 参数 - */ + * 发送 post 请求 + * + * @param httpUrl 地址 + * @param maps 参数 + */ public String sendHttpPost(String httpUrl, Map maps) throws IOException { - HttpPost httpPost= new HttpPost(httpUrl);// 创建 httpPost + HttpPost httpPost = new HttpPost(httpUrl);// 创建 httpPost // 创建参数队列 List nameValuePairs = new ArrayList(); for (String key : maps.keySet()) { @@ -87,14 +74,15 @@ public class HttpUtil { } /** - * 发送 Post请求 - * @param httpPost - *@return - */ + * 发送 Post请求 + * + * @param httpPost + * @return + */ private String sendHttpPost(HttpPost httpPost) throws IOException { CloseableHttpClient httpClient = null; CloseableHttpResponse response = null; - HttpEntity entity = null; + HttpEntity entity; String responseContent = null; try { // 创建默认的 httpClient 实例. @@ -123,96 +111,4 @@ public class HttpUtil { return responseContent; } - /** - * 发送 get 请求 - * @param httpUrl - */ - public String sendHttpGet(String httpUrl) throws IOException { - HttpGet httpGet = new HttpGet(httpUrl);// 创建 get 请求 - return sendHttpGet(httpGet); - } - - /** - * 发送 get请求 Https - * @param httpUrl - */ - public String sendHttpsGet(String httpUrl) { - HttpGet httpGet = new HttpGet(httpUrl);// 创建 get 请求 - return sendHttpsGet(httpGet); - } - - /** - * 发送 Get请求 - * @param httpGet - *@return - */ - private String sendHttpGet(HttpGet httpGet) throws IOException { - CloseableHttpClient httpClient = null; - CloseableHttpResponse response = null; - HttpEntity entity = null; - String responseContent = null; - try { - // 创建默认的 httpClient 实例. - httpClient = HttpClients.createDefault(); - httpGet.setConfig(requestConfig); - // 执行请求 - response = httpClient.execute(httpGet); - entity = response.getEntity(); - responseContent = EntityUtils.toString(entity, "UTF-8"); - } catch (Exception e) { - logger.error(e.getMessage()); - } finally { - httpClient.close(); - try { - // 关闭连接,释放资源 - if (response != null) { - response.close(); - } - if (httpClient != null) { - httpClient.close(); - } - } catch (IOException e) { - logger.error(e.getMessage()); - } - } - return responseContent; - } - - /** - * 发送 Get请求 Https - *@return - */ - private String sendHttpsGet(HttpGet httpGet) { - CloseableHttpClient httpClient = null; - CloseableHttpResponse response = null; - HttpEntity entity = null; - String responseContent = null; - try { - // 创建默认的 httpClient 实例. - PublicSuffixMatcher publicSuffixMatcher = PublicSuffixMatcherLoader.load(new - URL(httpGet.getURI().toString())); - DefaultHostnameVerifier hostnameVerifier = new DefaultHostnameVerifier(publicSuffixMatcher); - httpClient = HttpClients.custom().setSSLHostnameVerifier(hostnameVerifier).build(); - httpGet.setConfig(requestConfig); - // 执行请求 - response = httpClient.execute(httpGet); - entity = response.getEntity(); - responseContent = EntityUtils.toString(entity, "UTF-8"); - } catch (Exception e) { - logger.error(e.getMessage()); - } finally { - try { - // 关闭连接,释放资源 - if (response != null) { - response.close(); - } - if (httpClient != null) { - httpClient.close(); - } - } catch (IOException e) { - logger.error(e.getMessage()); - } - } - return responseContent; - } } \ No newline at end of file diff --git a/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/util/NdDateUtils.java b/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/util/NdDateUtils.java index 793983a..ab2fce9 100644 --- a/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/util/NdDateUtils.java +++ b/kq-vas-api/src/main/java/com/ningdatech/kqapi/common/util/NdDateUtils.java @@ -290,7 +290,7 @@ public final class NdDateUtils { date = dateFormat.parse(dateStr); } catch (Exception e) { - log.info("DateUtils error", e); + log.info("DateUtils error:{}", e.getMessage()); } return date; } diff --git a/kq-vas-api/src/main/java/com/ningdatech/kqapi/security/password/UsernamePasswordAuthFilter.java b/kq-vas-api/src/main/java/com/ningdatech/kqapi/security/password/UsernamePasswordAuthFilter.java index 2a7f2a4..dacdbeb 100644 --- a/kq-vas-api/src/main/java/com/ningdatech/kqapi/security/password/UsernamePasswordAuthFilter.java +++ b/kq-vas-api/src/main/java/com/ningdatech/kqapi/security/password/UsernamePasswordAuthFilter.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import com.ningdatech.kqapi.common.exception.BizException; import com.ningdatech.kqapi.security.constant.AuthConst; import com.ningdatech.kqapi.security.model.WebRequestDetails; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpMethod; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.core.Authentication; @@ -24,6 +25,7 @@ import java.time.LocalDateTime; * @author WendyYang * @since 2023/9/1 **/ +@Slf4j public class UsernamePasswordAuthFilter extends AbstractAuthenticationProcessingFilter { private final Boolean postOnly; @@ -49,7 +51,7 @@ public class UsernamePasswordAuthFilter extends AbstractAuthenticationProcessing } catch (BadCredentialsException | UsernameNotFoundException e) { throw e; } catch (Exception e) { - logger.error("登录失败:", e); + log.error("登录失败:{}", e.getMessage()); throw BizException.wrap("登录失败,请联系管理员!"); } } diff --git a/kq-vas-api/src/main/java/com/ningdatech/kqapi/sso/utils/HmacAuthUtil.java b/kq-vas-api/src/main/java/com/ningdatech/kqapi/sso/utils/HmacAuthUtil.java index d1514b7..e05611e 100644 --- a/kq-vas-api/src/main/java/com/ningdatech/kqapi/sso/utils/HmacAuthUtil.java +++ b/kq-vas-api/src/main/java/com/ningdatech/kqapi/sso/utils/HmacAuthUtil.java @@ -1,5 +1,14 @@ package com.ningdatech.kqapi.sso.utils; +import com.ningdatech.kqapi.common.exception.BizException; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.math3.util.Pair; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; +import javax.xml.bind.DatatypeConverter; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URL; @@ -9,16 +18,6 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; -import javax.crypto.Mac; -import javax.crypto.spec.SecretKeySpec; -import javax.xml.bind.DatatypeConverter; - -import org.apache.commons.math3.util.Pair; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; - -import lombok.extern.slf4j.Slf4j; - /** * @author CMM * @since 2024/04/07 11:28 @@ -37,7 +36,7 @@ public class HmacAuthUtil { * @return */ public static Map generateHeader(String urlStr, String requestMethod, String accessKey, String secretKey) { - log.info("params,urlStr={},requestMethod={},accessKey={},secretKey={}",urlStr,requestMethod,accessKey,secretKey); + log.info("params,urlStr={},requestMethod={},accessKey={},secretKey={}", urlStr, requestMethod, accessKey, secretKey); Map header = new HashMap<>(); try { DateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); @@ -48,7 +47,7 @@ public class HmacAuthUtil { String canonicalQueryString = getCanonicalQueryString(uri.getQuery()); - String message = requestMethod.toUpperCase() + "\n" + uri.getPath() + "\n" + canonicalQueryString + "\n" + accessKey + "\n" + date + "\n"; + String message = requestMethod.toUpperCase() + "\n" + uri.getPath() + "\n" + canonicalQueryString + "\n" + accessKey + "\n" + date + "\n"; Mac hasher = Mac.getInstance("HmacSHA256"); hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256")); @@ -65,10 +64,10 @@ public class HmacAuthUtil { header.put("X-BG-HMAC-ACCESS-KEY", accessKey); header.put("X-BG-DATE-TIME", date); } catch (Exception e) { - log.error("generate error",e); - throw new RuntimeException("generate header error"); + log.error("generate error:{}", e.getMessage()); + throw BizException.wrap("generate header error"); } - log.info("header info,{}",header); + log.info("header info,{}", header); return header; } @@ -82,9 +81,9 @@ public class HmacAuthUtil { int eqIndex = param.indexOf("="); String key = param; String value = ""; - if(eqIndex!=-1){ + if (eqIndex != -1) { key = param.substring(0, eqIndex); - value = param.substring(eqIndex+1); + value = param.substring(eqIndex + 1); } Pair pair = new Pair<>(key, value); queryParamList.add(pair); @@ -96,15 +95,14 @@ public class HmacAuthUtil { try { String key = URLEncoder.encode(param.getKey(), "utf-8"); String value = URLEncoder.encode(Optional.ofNullable(param.getValue()).orElse(""), "utf-8") - .replaceAll("\\%2B","%20") - .replaceAll("\\+","%20") - .replaceAll("\\%21","!") - .replaceAll("\\%27","'") - .replaceAll("\\%28","(") - .replaceAll("\\%29",")") - .replaceAll("\\%7E","~") - .replaceAll("\\%25","%") - ; + .replaceAll("\\%2B", "%20") + .replaceAll("\\+", "%20") + .replaceAll("\\%21", "!") + .replaceAll("\\%27", "'") + .replaceAll("\\%28", "(") + .replaceAll("\\%29", ")") + .replaceAll("\\%7E", "~") + .replaceAll("\\%25", "%"); encodeParamList.add(new Pair<>(key, value)); } catch (UnsupportedEncodingException e) { throw new RuntimeException("encoding error"); diff --git a/kq-vas-api/src/main/java/com/ningdatech/kqapi/user/manage/UserInfoManage.java b/kq-vas-api/src/main/java/com/ningdatech/kqapi/user/manage/UserInfoManage.java index a755eab..9a25cbb 100644 --- a/kq-vas-api/src/main/java/com/ningdatech/kqapi/user/manage/UserInfoManage.java +++ b/kq-vas-api/src/main/java/com/ningdatech/kqapi/user/manage/UserInfoManage.java @@ -234,6 +234,7 @@ public class UserInfoManage { @Transactional(rollbackFor = Exception.class) public void deleteUser(Long userId) { + Assert.isTrue(LoginUserUtil.getUserId().equals(userId), "不能删除当前登录账号信息"); kickOff(userId); userInfoService.removeById(userId); userAuthService.removeByUserId(userId); diff --git a/kq-vas-api/src/main/java/com/ningdatech/kqapi/zzsfw/controller/CommonController.java b/kq-vas-api/src/main/java/com/ningdatech/kqapi/zzsfw/controller/CommonController.java index 3767312..5df400b 100644 --- a/kq-vas-api/src/main/java/com/ningdatech/kqapi/zzsfw/controller/CommonController.java +++ b/kq-vas-api/src/main/java/com/ningdatech/kqapi/zzsfw/controller/CommonController.java @@ -34,8 +34,8 @@ public class CommonController { try { fileService.download(fileId, response); } catch (Exception e) { - log.error("文件下载失败:", e); - throw BizException.wrap("读物文件失败"); + log.error("文件下载失败:{}", e.getMessage()); + throw BizException.wrap("读取文件失败"); } } diff --git a/kq-vas-api/src/main/java/com/ningdatech/kqapi/zzsfw/controller/KqZzsfwMenuController.java b/kq-vas-api/src/main/java/com/ningdatech/kqapi/zzsfw/controller/KqZzsfwMenuController.java index ed3abb8..5bc1e2b 100644 --- a/kq-vas-api/src/main/java/com/ningdatech/kqapi/zzsfw/controller/KqZzsfwMenuController.java +++ b/kq-vas-api/src/main/java/com/ningdatech/kqapi/zzsfw/controller/KqZzsfwMenuController.java @@ -39,8 +39,8 @@ public class KqZzsfwMenuController { } @GetMapping("/zones") - public List getZones() { - return matterManage.getZones(); + public List listZones() { + return matterManage.listZones(); } @GetMapping("/windows") diff --git a/kq-vas-api/src/main/java/com/ningdatech/kqapi/zzsfw/manage/MatterManage.java b/kq-vas-api/src/main/java/com/ningdatech/kqapi/zzsfw/manage/MatterManage.java index 575f8b5..ee7c6c3 100644 --- a/kq-vas-api/src/main/java/com/ningdatech/kqapi/zzsfw/manage/MatterManage.java +++ b/kq-vas-api/src/main/java/com/ningdatech/kqapi/zzsfw/manage/MatterManage.java @@ -2,9 +2,9 @@ package com.ningdatech.kqapi.zzsfw.manage; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import cn.hutool.poi.excel.ExcelReader; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ningdatech.basic.util.CollUtils; import com.ningdatech.file.entity.File; @@ -18,6 +18,8 @@ import com.ningdatech.kqapi.admin.model.vo.MatterDetailDTO; import com.ningdatech.kqapi.admin.model.vo.WebMatterDetailVO; import com.ningdatech.kqapi.admin.service.IWindowService; import com.ningdatech.kqapi.admin.service.IZoneService; +import com.ningdatech.kqapi.common.config.SystemProps; +import com.ningdatech.kqapi.common.constant.BizConst; import com.ningdatech.kqapi.scheduler.utils.ExcelUtil; import com.ningdatech.kqapi.zzsfw.constants.ZzsfwMenuConstant; import com.ningdatech.kqapi.zzsfw.enumeration.ItemTypeEnum; @@ -35,15 +37,12 @@ import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; @@ -105,22 +104,22 @@ public class MatterManage { } /** - * 查询社区 + * 查询专区 * - * @return + * @return \ */ - public List getZones() { + public List listZones() { List zones = zoneService.list(); if (zones.isEmpty()) { return Collections.emptyList(); } - Map iconFileIdMap = new HashMap<>(); + Map iconFileIdMap = new HashMap<>(); Map specialFeatureFileIdMap = new HashMap<>(); for (Zone zone : zones) { if (StrUtil.isNotBlank(zone.getZoneIcon())) { List files = JSONUtil.toList(zone.getZoneIcon(), AttachFileVo.class); if (CollUtil.isNotEmpty(files)) { - iconFileIdMap.put(files.get(0).getFileId(), zone.getId()); + iconFileIdMap.put(zone.getId(), files.get(0).getFileId()); } } if (StrUtil.isNotBlank(zone.getSpecialFeature())) { @@ -132,44 +131,44 @@ public class MatterManage { } } } - Map iconUrlMap = new HashMap<>(); + Map> specialFeatureUrlMap = new HashMap<>(); - if (!iconFileIdMap.isEmpty() || !specialFeatureFileIdMap.isEmpty()) { - List tmpFileIds = new ArrayList<>(); - tmpFileIds.addAll(iconFileIdMap.keySet()); - tmpFileIds.addAll(specialFeatureFileIdMap.keySet()); - for (File file : fileService.listByIds(tmpFileIds)) { + if (!specialFeatureFileIdMap.isEmpty()) { + for (File file : fileService.listByIds(specialFeatureFileIdMap.keySet())) { String fileUrl = fileService.findUrlByFile(file, Duration.ofDays(30)); - if (iconFileIdMap.containsKey(file.getId())) { - iconUrlMap.put(iconFileIdMap.get(file.getId()), fileUrl); - } else if (specialFeatureFileIdMap.containsKey(file.getId())) { - FileResultVO retFile = FileResultVO.builder() - .id(file.getId()) - .url(fileUrl) - .contentType(file.getContentType()) - .fileType(file.getFileType()) - .originalFileName(file.getOriginalFileName()) - .size(file.getSize()) - .suffix(file.getSuffix()) - .build(); - specialFeatureUrlMap.merge(specialFeatureFileIdMap.get(file.getId()), - CollUtil.newArrayList(retFile), (v1, v2) -> { - v1.addAll(v2); - return v1; - }); - } + FileResultVO retFile = FileResultVO.builder() + .id(file.getId()) + .url(fileUrl) + .contentType(file.getContentType()) + .fileType(file.getFileType()) + .originalFileName(file.getOriginalFileName()) + .size(file.getSize()) + .suffix(file.getSuffix()) + .build(); + specialFeatureUrlMap.merge(specialFeatureFileIdMap.get(file.getId()), + CollUtil.newArrayList(retFile), (v1, v2) -> { + v1.addAll(v2); + return v1; + }); } } - return CollUtils.convert(zones, w -> TreeVO.builder() - .name(w.getZoneName()) - .zoneIcon(iconUrlMap.get(w.getId())) - .specialFeature(w.getSpecialFeature()) - .specialFeatureFiles(specialFeatureUrlMap.get(w.getId())) - .type(ZzsfwMenuConstant.MENU_TYPE_ZONE) - .build()); + return CollUtils.convert(zones, w -> { + String iconUrl = null; + if (iconFileIdMap.containsKey(w.getId())) { + iconUrl = SystemProps.getApiUrl() + BizConst.ANONYMOUS_FILE_DOWN_URL + iconFileIdMap.get(w.getId()); + } + return TreeVO.builder() + .name(w.getZoneName()) + .zoneIcon(iconUrl) + .specialFeature(w.getSpecialFeature()) + .specialFeatureFiles(specialFeatureUrlMap.get(w.getId())) + .type(ZzsfwMenuConstant.MENU_TYPE_ZONE) + .build(); + }); } + @Deprecated public List getZonesOld() { List matters = menuService.list(Wrappers.lambdaQuery(KqZzsfwMenu.class) @@ -437,46 +436,31 @@ public class MatterManage { } public String uploadMenu(MultipartFile file) throws IOException { - InputStream inputStream = file.getInputStream(); - Workbook workbook = new XSSFWorkbook(inputStream); - Assert.notNull(workbook); Row row; //获取最大行数 - Sheet sheet = workbook.getSheetAt(0); - int rownum = sheet.getPhysicalNumberOfRows(); - //获取最大列数 - Integer num = 1; - - for (int i = 2; i < rownum; i++) { + ExcelReader reader = cn.hutool.poi.excel.ExcelUtil.getReader(file.getInputStream(), 0); + Sheet sheet = reader.getSheet(); + int rowNo = sheet.getPhysicalNumberOfRows(); + for (int i = 2; i < rowNo; i++) { row = sheet.getRow(i); if (row.getZeroHeight()) { continue; } - System.out.println("记数:" + (num++)); String zoneName = row.getCell(0).getStringCellValue(); - System.out.println(zoneName); DecimalFormat decimalFormat = new DecimalFormat("#"); Integer sort = Integer.valueOf(decimalFormat.format(row.getCell(1).getNumericCellValue())); - System.out.println(sort); String windowName = row.getCell(2).getStringCellValue(); - System.out.println(windowName); String department = row.getCell(3).getStringCellValue(); - System.out.println(department); String itemName = row.getCell(4).getStringCellValue(); - System.out.println(itemName); String serviceContent = row.getCell(5).getStringCellValue(); - System.out.println(serviceContent); String serviceProcess = row.getCell(6).getStringCellValue(); - System.out.println(serviceProcess); String telephone = ""; CellType cellType = row.getCell(7).getCellType(); if (cellType.equals(CellType.STRING)) { telephone = row.getCell(7).getStringCellValue(); - System.out.println(telephone); } else if (cellType.equals(CellType.NUMERIC)) { DecimalFormat decimalFormat2 = new DecimalFormat("#.#######"); telephone = decimalFormat2.format(row.getCell(7).getNumericCellValue()); - System.out.println(telephone); } KqZzsfwMenu menu = new KqZzsfwMenu(); menu.setItemName(itemName); @@ -498,23 +482,18 @@ public class MatterManage { try { // 1. 加载数据库驱动 Class.forName("com.mysql.cj.jdbc.Driver"); - // 2. 建立数据库连接 Connection connection = DriverManager.getConnection(url, username, password); - // 3. 创建Statement对象 Statement statement = connection.createStatement(); - // 4. 编写并执行DDL语句(创建一个名为`users`的表) statement.executeUpdate(sql); - - System.out.println(" Table updated successfully."); - + log.info(" Table updated successfully."); // 5. 关闭资源 statement.close(); connection.close(); } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage()); } return "success!"; } diff --git a/kq-vas-api/src/main/resources/application-dev.yml b/kq-vas-api/src/main/resources/application-dev.yml index a458a40..05ac7a6 100644 --- a/kq-vas-api/src/main/resources/application-dev.yml +++ b/kq-vas-api/src/main/resources/application-dev.yml @@ -123,6 +123,9 @@ log: swagger: enabled: true +sys: + web-url: http://kqzh.ningdatech.com + hostname: iZbp13nwyvib53j4j1p2xoZ jasypt: encryptor: diff --git a/kq-vas-api/src/main/resources/application-prod.yml b/kq-vas-api/src/main/resources/application-prod.yml index 66206a5..1657e9a 100644 --- a/kq-vas-api/src/main/resources/application-prod.yml +++ b/kq-vas-api/src/main/resources/application-prod.yml @@ -47,9 +47,9 @@ spring: datasource: type: com.zaxxer.hikari.HikariDataSource driverClassName: com.kingbase8.Driver - url: jdbc:kingbase8://10.75.42.167:54321/kq_added_project?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8 + url: ENC(/Bwlm+apsyR8EHuhBHBUpfBG/a9HkM12voHCw3quVoVcGh/1BNTSjyq1gCZ81+mAh84gCsLD5ZnA65/tuiFwvRcuWOHd4+WcAlbVw5MB0Wi1FtY0IeeDN69TSKOSToF/g5F8ggl+XyVJClrhkj0hcgMj4EAWsdJdcIuMsG+U1DItLYU4XfzYYw==) username: SYSTEM - password: Kqvdsj@159260 + password: ENC(ya6q/ZCE5Gdexu6OXZTlHTjKH9y28z89) # 数据源 hikari: @@ -103,7 +103,6 @@ nd: file: storage-type: ALI_OSS ali: - protocol: http:// bucket: kqqfzx-295 urlPrefix: oss0eab-cn-shaoxing-sxdx-d01-a.ops.dxdtsxzwy.com @@ -127,6 +126,9 @@ swagger: hostname: iZut201mqskxt0mwme4tjfZ +sys: + web-url: https://qyxspt.kq.gov.cn:33060 + jasypt: encryptor: password: CodeSheep diff --git a/kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/DuplicationTest.java b/kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/DuplicationTest.java index 70a46fe..857b708 100644 --- a/kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/DuplicationTest.java +++ b/kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/DuplicationTest.java @@ -1,28 +1,6 @@ package com.ningdatech.kqapi.menu; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.google.common.collect.Sets; import com.ningdatech.kqapi.AppTests; -import com.ningdatech.kqapi.zzsfw.model.entity.KqZzsfwMenu; -import com.ningdatech.kqapi.zzsfw.model.entity.KqZzsfwMattersDeduplicate; -import com.ningdatech.kqapi.zzsfw.service.IKqZzsfwMatterDeduplicateService; -import com.ningdatech.kqapi.zzsfw.service.IKqZzsfwMenuService; -import org.apache.commons.lang3.StringUtils; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.junit.Assert; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import java.io.FileInputStream; -import java.io.IOException; -import java.time.LocalDateTime; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; /** * @Classname DuplicationTest @@ -32,69 +10,4 @@ import java.util.stream.Collectors; */ public class DuplicationTest extends AppTests { - @Autowired - private IKqZzsfwMatterDeduplicateService matterDeduplicateService; - - @Autowired - private IKqZzsfwMenuService menuService; - - @Test - public void test() throws IOException { - FileInputStream fis = new FileInputStream("C:\\Users\\PoffyZhang\\Desktop\\去重后的事项数据.xlsx"); - Workbook workbook = new XSSFWorkbook(fis); - Assert.assertNotNull(workbook); - Row row; - if (workbook != null) { - //获取最大行数 - Sheet sheet = workbook.getSheetAt(0); - int rownum = sheet.getPhysicalNumberOfRows(); - //获取第一行 - row = sheet.getRow(0); - //获取最大列数 - Integer num = 1; - - matterDeduplicateService.remove(Wrappers.lambdaQuery(KqZzsfwMattersDeduplicate.class)); - - for (int i = 2; i < rownum; i++) { - row = sheet.getRow(i); - if(row.getZeroHeight()){ - continue; - } - System.out.println("记数:" + (num++)); - System.out.println(row.getCell(0).getStringCellValue()); - System.out.println(row.getCell(1).getStringCellValue()); - Double numericCellValue = row.getCell(2).getNumericCellValue(); - - KqZzsfwMattersDeduplicate menu = new KqZzsfwMattersDeduplicate(); - menu.setWebapplyurl(row.getCell(1).getStringCellValue()); - menu.setQlName(row.getCell(0).getStringCellValue()); - menu.setCreateOn(LocalDateTime.now()); - menu.setCountNum(numericCellValue.intValue()); - - matterDeduplicateService.save(menu); - } - } - } - - @Test - public void syncUrl(){ - List menus = menuService.list(Wrappers.lambdaQuery(KqZzsfwMenu.class)); - - List list = matterDeduplicateService.list(); - - Set qlSet = Sets.newTreeSet(); - Map map = list.stream().filter(q -> qlSet.add(q.getQlName())) - .filter(q -> StringUtils.isNotBlank(q.getWebapplyurl()) && StringUtils.isNotBlank(q.getQlName())) - .collect(Collectors.toMap(q -> q.getQlName(), q -> q.getWebapplyurl())); - - for(KqZzsfwMenu menu : menus){ - String itemName = menu.getItemName(); - if(map.containsKey(itemName)){ - String url = map.get(itemName); - menu.setWebapplyurl(url); - menu.setHasUrl(1); - menuService.updateById(menu); - } - } - } } diff --git a/kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/ExcelSplitMergedCells.java b/kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/ExcelSplitMergedCells.java deleted file mode 100644 index bb3731f..0000000 --- a/kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/ExcelSplitMergedCells.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.ningdatech.kqapi.menu; - -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; - -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; - -public class ExcelSplitMergedCells { - public static void main(String[] args) throws IOException { - // 打开Excel文件 - FileInputStream fis = new FileInputStream("C:\\Users\\PoffyZhang\\Desktop\\8.8柯桥区企业综合服务中心政务服务事项清单.xlsx"); - Workbook workbook = new XSSFWorkbook(fis); - Sheet sheet = workbook.getSheetAt(0); - - // 获取合并单元格的范围 - CellRangeAddress mergedRegion = sheet.getMergedRegion(0); // 0表示第一个合并的单元格 - int firstRow = mergedRegion.getFirstRow(); - int lastRow = mergedRegion.getLastRow(); - int firstCol = mergedRegion.getFirstColumn(); - int lastCol = mergedRegion.getLastColumn(); - - // 取消合并单元格 - sheet.removeMergedRegion(0); - Integer num = 0; - // 创建新的单元格并复制内容 - for (int i = firstRow; i <= lastRow; i++) { - Row row = sheet.getRow(i); - for (int j = firstCol; j <= lastCol; j++) { - Cell oldCell = row.getCell(j); - Cell newCell = row.createCell(j); - newCell.setCellType(oldCell.getCellType()); - switch (oldCell.getCellType()) { - case STRING: - newCell.setCellValue(oldCell.getStringCellValue()); - break; - case NUMERIC: - newCell.setCellValue(oldCell.getNumericCellValue()); - break; - case BOOLEAN: - newCell.setCellValue(oldCell.getBooleanCellValue()); - break; - case FORMULA: - newCell.setCellFormula(oldCell.getCellFormula()); - break; - default: - newCell.setCellValue(""); - } - } - } - - // 保存修改后的Excel文件 - fis.close(); - FileOutputStream fos = new FileOutputStream("C:\\Users\\PoffyZhang\\Desktop\\8.8柯桥区企业综合服务中心政务服务事项清单2.xlsx"); - workbook.write(fos); - fos.close(); - } -} \ No newline at end of file diff --git a/kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/MenuTest.java b/kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/MenuTest.java deleted file mode 100644 index 89ec354..0000000 --- a/kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/MenuTest.java +++ /dev/null @@ -1,187 +0,0 @@ -package com.ningdatech.kqapi.menu; - -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.ningdatech.kqapi.AppTests; -import com.ningdatech.kqapi.zzsfw.model.entity.KqZzsfwMenu; -import com.ningdatech.kqapi.zzsfw.enumeration.ItemTypeEnum; -import com.ningdatech.kqapi.zzsfw.service.IKqZzsfwMenuService; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.junit.Assert; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; -import java.io.FileInputStream; -import java.io.IOException; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.Statement; -import java.text.DecimalFormat; -import java.time.LocalDateTime; - -/** - * @Classname MenuTest - * @Description - * @Date 2023/10/27 9:51 - * @Author PoffyZhang - */ -public class MenuTest extends AppTests{ // - - @Autowired - private IKqZzsfwMenuService menuService; - - @Test - public void test() throws IOException { - FileInputStream fis = new FileInputStream("C:\\Users\\PoffyZhang\\Desktop\\11.14柯桥.xlsx"); - Workbook workbook = new XSSFWorkbook(fis); - Assert.assertNotNull(workbook); - Row row; - if (workbook != null) { - //获取最大行数 - Sheet sheet = workbook.getSheetAt(0); - int rownum = sheet.getPhysicalNumberOfRows(); - //获取第一行 - row = sheet.getRow(0); - //获取最大列数 - Integer num = 1; - - menuService.remove(Wrappers.lambdaQuery(KqZzsfwMenu.class)); - - for (int i = 2; i < rownum; i++) { - row = sheet.getRow(i); - if(row.getZeroHeight()){ - continue; - } - System.out.println("记数:" + (num++)); - System.out.println(row.getCell(0).getStringCellValue()); - System.out.println(row.getCell(1).getStringCellValue()); - System.out.println(row.getCell(2).getStringCellValue()); - Double numericCellValue = row.getCell(3).getNumericCellValue(); - String itemName = row.getCell(4).getStringCellValue(); - System.out.println(itemName); - - KqZzsfwMenu menu = new KqZzsfwMenu(); - menu.setItemName(itemName); - menu.setZoneName(row.getCell(0).getStringCellValue()); - menu.setWindow(row.getCell(1).getStringCellValue()); - menu.setCreateOn(LocalDateTime.now()); - menu.setDepartment(row.getCell(2).getStringCellValue()); - menu.setSort(numericCellValue.intValue()); - - //去查询 url -// DscSxAdsShareItemQltQlsxCommonIDVKq item = itemQltQlsxCommonIDVKqService.getOne(Wrappers.lambdaQuery(DscSxAdsShareItemQltQlsxCommonIDVKq.class) -// .select(DscSxAdsShareItemQltQlsxCommonIDVKq::getRowguid, DscSxAdsShareItemQltQlsxCommonIDVKq::getWebapplyurl, DscSxAdsShareItemQltQlsxCommonIDVKq::getQlName) -// .eq(DscSxAdsShareItemQltQlsxCommonIDVKq::getQlName, itemName) -// .isNotNull(DscSxAdsShareItemQltQlsxCommonIDVKq::getWebapplyurl) -// .last("limit 1")); -// if(Objects.nonNull(item)){ - menu.setHasUrl(1); -// menu.setWebapplyurl(item.getWebapplyurl()); -// menu.setItemRowid(item.getRowguid()); -// } - - menuService.save(menu); - } - } - } - - - @Test - public void importData() throws IOException { - FileInputStream fis = new FileInputStream("C:\\Users\\PoffyZhang\\Desktop\\增值服务数据20240403.xlsx"); - Workbook workbook = new XSSFWorkbook(fis); - Assert.assertNotNull(workbook); - Row row; - if (workbook != null) { - //获取最大行数 - Sheet sheet = workbook.getSheetAt(0); - int rownum = sheet.getPhysicalNumberOfRows(); - //获取第一行 - row = sheet.getRow(0); - //获取最大列数 - Integer num = 1; - - for (int i = 2; i < rownum; i++) { - row = sheet.getRow(i); - if (row.getZeroHeight()) { - continue; - } - System.out.println("记数:" + (num++)); - String zoneName = row.getCell(0).getStringCellValue(); - System.out.println(zoneName); - DecimalFormat decimalFormat = new DecimalFormat("#"); - Integer sort = Integer.valueOf(decimalFormat.format(row.getCell(1).getNumericCellValue())); - System.out.println(sort); - String windowName = row.getCell(2).getStringCellValue(); - System.out.println(windowName); - String department = row.getCell(3).getStringCellValue(); - System.out.println(department); - String itemName = row.getCell(4).getStringCellValue(); - System.out.println(itemName); - String serviceContent = row.getCell(5).getStringCellValue(); - System.out.println(serviceContent); - String serviceProcess = row.getCell(6).getStringCellValue(); - System.out.println(serviceProcess); - String telephone = ""; - CellType cellType = row.getCell(7).getCellType(); - if(cellType.equals(CellType.STRING)){ - telephone = row.getCell(7).getStringCellValue(); - System.out.println(telephone); - }else if(cellType.equals(CellType.NUMERIC)){ - DecimalFormat decimalFormat2 = new DecimalFormat("#.#######"); - telephone = decimalFormat2.format(row.getCell(7).getNumericCellValue()); - System.out.println(telephone); - } - KqZzsfwMenu menu = new KqZzsfwMenu(); - menu.setItemName(itemName); - menu.setZoneName(zoneName); - menu.setWindow(windowName); - menu.setDepartment(department); - menu.setServiceContent(serviceContent); - menu.setServiceProcess(serviceProcess); - menu.setTelephone(telephone); - menu.setType(ItemTypeEnum.ADDED.getCode()); - menu.setCreateOn(LocalDateTime.now()); - menu.setSort(sort); -// menuService.save(menu); - } - } - - } - - - @Test - public void tableAndColumn() throws IOException { - String url = "jdbc:mysql://47.98.125.47:3306/kqzzsfw?serverTimezone=Asia/Shanghai&characterEncoding=utf8&allowPublicKeyRetrieval=true&useSSL=false"; // 你的数据库URL - String username = "root"; // 数据库用户名 - String password = "NingdaKeji123!"; // 数据库密码 - - String table = "nd_kq_zzsfw_menu"; - - try { - // 1. 加载数据库驱动 - Class.forName("com.mysql.cj.jdbc.Driver"); - - // 2. 建立数据库连接 - Connection connection = DriverManager.getConnection(url, username, password); - - // 3. 创建Statement对象 - Statement statement = connection.createStatement(); - - // 4. 编写并执行DDL语句(创建一个名为`users`的表) -// String createTableUsers = "alter table nd_kq_zzsfw_menu add column type tinyint default 1 comment '类型 1.政府服务 2.增值服务 3.特殊'"; -// String createTableUsers = "alter table nd_kq_zzsfw_menu add column service_content text comment '服务内容';"; -// String createTableUsers = "alter table nd_kq_zzsfw_menu add column service_process text comment '服务流程';"; - String createTableUsers = "alter table nd_kq_zzsfw_menu add column telephone text comment '咨询电话'"; - statement.executeUpdate(createTableUsers); - - System.out.println(" Table '" + table + "' updated successfully."); - - // 5. 关闭资源 - statement.close(); - connection.close(); - - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/PolicyTest.java b/kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/PolicyTest.java deleted file mode 100644 index cb128b6..0000000 --- a/kq-vas-api/src/test/java/com/ningdatech/kqapi/menu/PolicyTest.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.ningdatech.kqapi.menu; - -import cn.hutool.core.date.DateUtil; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.ningdatech.kqapi.AppTests; -import com.ningdatech.kqapi.zzsfw.model.entity.KqZzsfwPolicy; -import com.ningdatech.kqapi.zzsfw.service.IKqZzsfwPolicyService; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.junit.Assert; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import java.io.FileInputStream; -import java.io.IOException; -import java.time.LocalDateTime; -import java.util.Objects; - -/** - * @Classname MenuTest - * @Description - * @Date 2023/10/27 9:51 - * @Author PoffyZhang - */ -public class PolicyTest extends AppTests { - - @Autowired - private IKqZzsfwPolicyService policyService; - - @Test - public void test() throws IOException { - FileInputStream fis = new FileInputStream("C:\\Users\\PoffyZhang\\Desktop\\政策条例摘录.xlsx"); - Workbook workbook = new XSSFWorkbook(fis); - Assert.assertNotNull(workbook); - Row row; - - policyService.remove(Wrappers.lambdaQuery(KqZzsfwPolicy.class)); - - if (workbook != null) { - //获取最大行数 - Sheet sheet = workbook.getSheetAt(0); - int rownum = sheet.getPhysicalNumberOfRows(); - //获取第一行 - row = sheet.getRow(0); - //获取最大列数 - Integer sort = 1; - for (int i = 2; i < rownum; i++) { - row = sheet.getRow(i); - if(row.getZeroHeight()){ - continue; - } - - String header = Objects.nonNull(row.getCell(0)) ? row.getCell(0).getStringCellValue() : null; - String title = Objects.nonNull(row.getCell(1)) ? row.getCell(1).getStringCellValue() : null; - String secondTitle = Objects.nonNull(row.getCell(2)) ? row.getCell(2).getStringCellValue() : null; - String regionName = Objects.nonNull(row.getCell(3)) ? row.getCell(3).getStringCellValue() : null; - String department = Objects.nonNull(row.getCell(4)) ? row.getCell(4).getStringCellValue() : null; - String issueDate = Objects.nonNull(row.getCell(5)) ? DateUtil.format(row.getCell(5).getDateCellValue(),"yyyy/MM/dd") : null; - String status = Objects.nonNull(row.getCell(7)) ? row.getCell(7).getStringCellValue() : null; - String applyTime = Objects.nonNull(row.getCell(8)) ? row.getCell(8).getStringCellValue() : null; - String url = Objects.nonNull(row.getCell(9)) ? row.getCell(9).getStringCellValue() : null; - - KqZzsfwPolicy policy = new KqZzsfwPolicy(); - policy.setHeader(header); - policy.setTitle(title); - policy.setSecondTitle(secondTitle); - policy.setRegionName(regionName); - policy.setDepartment(department); - policy.setIssueDate(issueDate); - policy.setStatus(status); - policy.setApplyTime(applyTime); - policy.setOnlineConsultationUrl(url); - policy.setCreateOn(LocalDateTime.now()); - policy.setSort(sort); - - policyService.save(policy); - - System.out.println("记数:" + (sort++)); - } - } - } - -}