From 1189670ffd6fd8f6428f6f8e1333fbf1cbe54cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= Date: Wed, 24 Jan 2024 14:33:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9srms=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jero/config/filter/csrf/CsrfFilter.java | 2 +- .../com/jero/config/shiro/ShiroConfig.java | 4 - .../srms/mapper/xml/LawsStandardMapper.xml | 23 ++-- .../srms/service/impl/SrmsApiServiceImpl.java | 110 +++++++++++++----- .../src/main/resources/application-dev.yml | 10 ++ 5 files changed, 106 insertions(+), 43 deletions(-) diff --git a/laws-base/laws-base-core/src/main/java/com/jero/config/filter/csrf/CsrfFilter.java b/laws-base/laws-base-core/src/main/java/com/jero/config/filter/csrf/CsrfFilter.java index 9c617f73..de22e377 100644 --- a/laws-base/laws-base-core/src/main/java/com/jero/config/filter/csrf/CsrfFilter.java +++ b/laws-base/laws-base-core/src/main/java/com/jero/config/filter/csrf/CsrfFilter.java @@ -56,7 +56,7 @@ public class CsrfFilter implements Filter { String url = req.getRequestURL().toString(); // 获取来源 String referurl = req.getHeader("Referer"); - if(isWhiteReq(referurl) || Objects.equals(upgrade,"websocket") || url.contains("view") || url.contains("doc.html")){ + if(isWhiteReq(referurl) || Objects.equals(upgrade,"websocket") || url.contains("view") || url.contains("/srms/") || url.contains("doc.html")){ chain.doFilter(request, response); }else{ String log = ""; diff --git a/laws-base/laws-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java b/laws-base/laws-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java index ff802ee8..90be6a80 100644 --- a/laws-base/laws-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java +++ b/laws-base/laws-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java @@ -152,10 +152,6 @@ public class ShiroConfig { // 获取token filterChainDefinitionMap.put("/srms/getByToken", "anon"); - // 标准法规文档查询 - filterChainDefinitionMap.put("/srms/getByLawsFileList", "anon"); - // 设计导航-产品设计条款查询 - filterChainDefinitionMap.put("/srms/getByLawsProductDesign", "anon"); // 添加自己的过滤器并且取名为jwt Map filterMap = new HashMap<>(1); diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsStandardMapper.xml b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsStandardMapper.xml index 3447bc96..8ce573c0 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsStandardMapper.xml +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsStandardMapper.xml @@ -58,10 +58,10 @@ and l1.name = #{standard.partCategoryName} - + and s1.split_result = '成功' - + and s1.split_result is null @@ -101,20 +101,27 @@ diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java index 17013a1d..82f4b70e 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java @@ -7,9 +7,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.common.base.CaseFormat; +import com.google.common.base.Charsets; import com.jero.common.api.vo.Result; import com.jero.common.system.api.ISysBaseAPI; import com.jero.common.system.util.JwtUtil; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.MD5Util; import com.jero.common.util.RedisUtil; import com.jero.common.util.TokenUtils; import com.jero.modules.docking.srms.dto.ByTokenRequests; @@ -35,13 +39,16 @@ import com.jero.modules.tag.enums.TableNameEnum; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.regexp.RE; +import org.apache.shiro.SecurityUtils; import org.jetbrains.annotations.Nullable; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -80,6 +87,19 @@ public class SrmsApiServiceImpl implements SrmsApiService { private String appKey; @Value("${srms.secret}") private String secret; + @Value("${srms.font_url_pdf}") + private String fontUrlPdf; + @Value("${srms.back_url_pdf}") + private String backUrlPdf; + @Value("${srms.font_url_other}") + private String fontUrlOther; + @Value("${srms.back_url_other}") + private String backUrlOther; + @Value("${srms.other_md5_mark}") + private String otherMd5Mark; + + + private static final String SRMS_TOKEN = "srms_token_"; private static final String REQUESTS = "Requests"; @@ -154,7 +174,7 @@ public class SrmsApiServiceImpl implements SrmsApiService { standardVO.setStandardState(standardState); // 是否存在拆分信息,默认false; true-是,false-否 setHasSplit(requests, standardVO); - List listByFileRows = getByFileRows(partCategoryNum, standardVO); + List listByFileRows = getByFileRows(partCategoryNum, standardVO,token); return Result.OK(listByFileRows); }catch (Exception e){ log.error("标准法规文档查询异常:",e); @@ -163,7 +183,7 @@ public class SrmsApiServiceImpl implements SrmsApiService { } @Nullable - private List getByFileRows(String partCategoryNum, StandardVO standardVO) { + private List getByFileRows(String partCategoryNum, StandardVO standardVO,String token) { List listByFileRows = lawsStandardMapper.getStandard(standardVO); if(CollectionUtils.isEmpty(listByFileRows)) { return listByFileRows; @@ -190,7 +210,7 @@ public class SrmsApiServiceImpl implements SrmsApiService { List listFile = listOssFile.stream().filter(o-> Objects.equals(o.getStandardId(),byFileRows.getId())).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(listFile)){ listFile = listFile.stream().sorted(Comparator.comparing(OSSFile::getCreateTime).reversed()).collect(Collectors.toList()); - byFileRows.setStandardUrl(listFile.get(0).getUrl()); + byFileRows.setStandardUrl(getUrl(listFile.get(0),token)); } } LambdaQueryWrapper querySarFileSplitInfoEo = new LambdaQueryWrapper<>(); @@ -318,16 +338,15 @@ public class SrmsApiServiceImpl implements SrmsApiService { } try { List listStandardTreeAll = new ArrayList<>(); - // 企业标准 - List listEnterprise = lawsTreeNodeService.queryTreeNodeList(TableNameEnum.ENTERPRISE_STANDARDS.getValue(), nodeName, "1"); - getStandardTree(listStandardTreeAll, listEnterprise); // 国内标准 List listDomestic = lawsTreeNodeService.queryTreeNodeList(TableNameEnum.DOMESTIC_REGULATIONS.getValue(), nodeName, "1"); getStandardTree(listStandardTreeAll, listDomestic); // 海外标准 List listForeign = lawsTreeNodeService.queryTreeNodeList(TableNameEnum.FOREIGN_REGULATIONS.getValue(), nodeName, "1"); getStandardTree(listStandardTreeAll, listForeign); - + // 企业标准 + List listEnterprise = lawsTreeNodeService.queryTreeNodeList(TableNameEnum.ENTERPRISE_STANDARDS.getValue(), nodeName, "1"); + getStandardTree(listStandardTreeAll, listEnterprise); return Result.OK(listStandardTreeAll); }catch (Exception e){ log.error("获取所有体系数据异常:",e); @@ -382,6 +401,7 @@ public class SrmsApiServiceImpl implements SrmsApiService { if(StringUtils.isBlank(token) || !Objects.equals(TokenUtils.getTokenByRequest(req),token)){ return Result.error(SYS_ERR); } + JSONObject requests = JSON.parseObject(JSON.toJSONString(json.get(REQUESTS))); if(Objects.isNull(requests)){ return Result.error(ADD_NOT_NULL); @@ -414,12 +434,13 @@ public class SrmsApiServiceImpl implements SrmsApiService { } Page page = new Page<>(Long.parseLong(requests.get(pageNoKey).toString()), Long.parseLong(requests.get(pageSizeKey).toString())); - IPage pageList =lawsStandardMapper.getByLawsStandardPage(page,queryStandardPageVO); - getListStandardPageVO(pageList); + IPage pageList = lawsStandardMapper.getByLawsStandardPage(page,queryStandardPageVO); + getListStandardPageVO(pageList,token); return Result.OK(pageList); } private void setQuery(JSONObject requests, QueryWrapper queryStandardPageVO) { + queryStandardPageVO.eq("'1'","1"); String nodeCodeKey = "nodeCode"; if(requests.containsKey(nodeCodeKey) && !StringUtils.isEmpty(requests.get(nodeCodeKey).toString())){ String nodeCode = requests.get(nodeCodeKey).toString(); @@ -437,19 +458,20 @@ public class SrmsApiServiceImpl implements SrmsApiService { private void setOrder(QueryWrapper queryStandardPageVO, String[] column, String[] order) { for (int i = 0; i < column.length; i++) { + String c = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, column[i]); if(Objects.isNull(order)){ - queryStandardPageVO.orderByDesc(column[i]); + queryStandardPageVO.orderByDesc(c); }else{ if(Objects.equals(order[i],"asc") || Objects.equals(order[i],"ASC")){ - queryStandardPageVO.orderByAsc(column[i]); + queryStandardPageVO.orderByAsc(c); }else{ - queryStandardPageVO.orderByDesc(column[i]); + queryStandardPageVO.orderByDesc(c); } } } } - private void getListStandardPageVO(IPage pageList) { + private void getListStandardPageVO(IPage pageList,String token) { List listStandardPageVO = pageList.getRecords(); if(CollectionUtils.isEmpty(listStandardPageVO)){ return; @@ -463,6 +485,29 @@ public class SrmsApiServiceImpl implements SrmsApiService { List listOssFile = ossFileService.list(queryOssFile); List listStandardPageVOPartName = listStandardPageVO.stream().filter(o->!StringUtils.isBlank(o.getPartCategoryNum())).collect(Collectors.toList()); + List listPartName = getPartNames(listStandardPageVOPartName); + + for (StandardPageVO standardPageVO : listStandardPageVO) { + standardPageVO.setStandardState_dictText(sysBaseAPI.translateDict("standard_state", standardPageVO.getStandardState())); + if(!CollectionUtils.isEmpty(listOssFile)){ + List listOssFileOne = listOssFile.stream().filter(o-> Objects.equals(o.getStandardId(),standardPageVO.getId())).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(listOssFileOne)){ + listOssFileOne = listOssFileOne.stream().sorted(Comparator.comparing(OSSFile::getCreateTime).reversed()).collect(Collectors.toList()); + standardPageVO.setStandardUrl(getUrl(listOssFileOne.get(0),token)); + } + } + // 零件号查询 + if(!CollectionUtils.isEmpty(listPartName) && !StringUtils.isBlank(standardPageVO.getPartCategoryNum())){ + List listPartNameNew = listPartName.stream().filter(o->Arrays.asList(standardPageVO.getPartCategoryNum().split(",")).contains(o.getCode())).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(listPartNameNew)){ + List listName = listPartNameNew.stream().map(PartName::getName).collect(Collectors.toList()); + standardPageVO.setPartCategoryName(String.join(",",listName)); + } + } + } + } + + private List getPartNames(List listStandardPageVOPartName) { List listPartName = new ArrayList<>(); if(!CollectionUtils.isEmpty(listStandardPageVOPartName)){ List listPartCategoryNum = listStandardPageVOPartName.stream().map(StandardPageVO::getPartCategoryNum).collect(Collectors.toList()); @@ -473,24 +518,29 @@ public class SrmsApiServiceImpl implements SrmsApiService { listPartName = partNameService.list(queryPartName); } } + return listPartName; + } - for (StandardPageVO standardPageVO : listStandardPageVO) { - standardPageVO.setStandardState_dictText(sysBaseAPI.translateDict("standard_state", standardPageVO.getStandardState())); - if(!CollectionUtils.isEmpty(listOssFile)){ - List listOssFileOne = listOssFile.stream().filter(o-> Objects.equals(o.getStandardId(),standardPageVO.getId())).collect(Collectors.toList()); - if(!CollectionUtils.isEmpty(listOssFileOne)){ - listOssFileOne = listOssFileOne.stream().sorted(Comparator.comparing(OSSFile::getCreateTime).reversed()).collect(Collectors.toList()); - standardPageVO.setStandardUrl(listOssFileOne.get(0).getUrl()); - } - } - // 零件号查询 - if(!CollectionUtils.isEmpty(listPartName)){ - List listPartNameNew = listPartName.stream().filter(o->Arrays.asList(standardPageVO.getPartCategoryNum().split(",")).contains(o.getCode())).collect(Collectors.toList()); - if(!CollectionUtils.isEmpty(listPartNameNew)){ - List listName = listPartNameNew.stream().map(PartName::getName).collect(Collectors.toList()); - standardPageVO.setPartCategoryName(String.join(",",listName)); - } + private String getUrl(OSSFile ossFile,String token){ + String url = ""; + try{ + if(ossFile.getFileName().toUpperCase().lastIndexOf(".PDF") > 0){ + // 拼接url pdf预览 + String back = backUrlPdf.replace("{id}",ossFile.getId()).replace("{token}",token); + url = fontUrlPdf.replace("{back_url_pdf}", URLEncoder.encode(back, StandardCharsets.UTF_8.name())); + }else{ + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String mark = loginUser.getUsername() + loginUser.getRealname() + LocalDateTime.now(); + String markMd5 = MD5Util.MD5Encode(mark + otherMd5Mark,null); + String backOther = backUrlOther.replace("{id}",ossFile.getId()).replace("{token}",token) + .replace("{file_name}",ossFile.getFileName()); + url = fontUrlOther.replace("{back_url_other}",URLEncoder.encode(Base64.getEncoder().encodeToString(backOther.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8.name())) + .replace("{mark}",URLEncoder.encode(mark, StandardCharsets.UTF_8.name())) + .replace("{mark_md5}",markMd5); } + }catch (Exception e){ + log.error("拼接url异常",e); } + return url; } } diff --git a/laws-single-startup/src/main/resources/application-dev.yml b/laws-single-startup/src/main/resources/application-dev.yml index 79c02353..1ee77ea9 100644 --- a/laws-single-startup/src/main/resources/application-dev.yml +++ b/laws-single-startup/src/main/resources/application-dev.yml @@ -483,3 +483,13 @@ srms: app_key: eeabe117f06a4d99a15582a143d3be54 # 系统对应秘钥 secret: 7ddbafa5b7ba4104bff5ffae9d775998 + # pdf预览 前端url http://ip:port 替换前端地址 + font_url_pdf: http://localhost:3334/pdfjs/web/viewer.html?file={back_url_pdf}&.pdf + # pdf预览 后端url + back_url_pdf: /laws-sinotruk/sys/common/view/{id}?type=view&at={token} + # 其他文件预览 替换kkfileviewurl + font_url_other: http://127.0.0.1:8012/onlinePreview?url={back_url_other}&watermarkTxt={mark}&watermarkSign={mark_md5} + # 其他文件预览 后端url 替换侯丹地址 + back_url_other: http://localhost:8184/${srms.back_url_pdf}&fullfilename={file_name} + # 其他文件水印标识 + other_md5_mark: cnhtc