Merge remote-tracking branch 'origin/master' into secondStage
# Conflicts: # laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java # laws-modules/src/main/java/com/jero/modules/activiti/process/esinspect/controller/EsInspectFlowController.java # laws-modules/src/main/java/com/jero/modules/activiti/process/esinspect/controller/ProcessEsInspectController.java # laws-modules/src/main/java/com/jero/modules/activiti/process/esinspect/entity/ProcessEsInspect.java # laws-modules/src/main/java/com/jero/modules/activiti/process/esinspect/mapper/xml/ProcessEsInspectMapper.xml # laws-modules/src/main/java/com/jero/modules/activiti/process/esinspect/service/impl/EsInspectFlowServiceImpl.java # laws-modules/src/main/java/com/jero/modules/activiti/process/esinspect/service/impl/ProcessEsInspectServiceImpl.java # laws-modules/src/main/java/com/jero/modules/activiti/process/esinspect/vo/ProcessEsInspectVO.java # laws-modules/src/main/java/com/jero/modules/activiti/process/esinspectplan/service/impl/EsInspectPlanFlowServiceImpl.java # laws-modules/src/main/java/com/jero/modules/activiti/process/esinspectplan/service/impl/ProcessEsInspectPlanServiceImpl.java # laws-modules/src/main/java/com/jero/modules/activiti/process/fb/controller/ProcessFbInfoController.java # laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java # laws-modules/src/main/java/com/jero/modules/laws/enterprise/controller/EnterpriseStandardInspectController.java # laws-modules/src/main/java/com/jero/modules/laws/enterprise/mapper/xml/EnterpriseStandardInspectMapper.xml # laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardInspectServiceImpl.java
This commit is contained in:
+25
-9
@@ -137,27 +137,43 @@ public class CommonController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 预览图片&下载文件
|
||||
* 下载文件
|
||||
*
|
||||
* @param id 传入文件id
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
@GetMapping(value = "/download/{id}")
|
||||
public void download(@PathVariable String id,HttpServletRequest request, HttpServletResponse response) {
|
||||
downloadAndView(id, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 预览图片
|
||||
*
|
||||
* @param id 传入文件id
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
@GetMapping(value = "/view/{id}")
|
||||
public void view(@PathVariable String id,HttpServletRequest request, HttpServletResponse response) {
|
||||
downloadAndView(id, response);
|
||||
}
|
||||
|
||||
private void downloadAndView(@PathVariable String id, HttpServletResponse response) {
|
||||
// 查询数据表数据是否存在
|
||||
LambdaQueryWrapper<OSSFile> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(OSSFile::getId,id);
|
||||
queryWrapper.eq(OSSFile::getId, id);
|
||||
OSSFile ossFile = ossFileService.getOne(queryWrapper);
|
||||
if( null == ossFile){
|
||||
if (null == ossFile) {
|
||||
throw new JeroBootException("文件不存在..");
|
||||
}
|
||||
String fileUrl = ossFile.getUrl();
|
||||
if(CommonConstant.UPLOAD_TYPE_LOCAL.equals(uploadType)){
|
||||
if (CommonConstant.UPLOAD_TYPE_LOCAL.equals(uploadType)) {
|
||||
//本地下载
|
||||
String filePath = uploadpath + File.separator + fileUrl;
|
||||
File file = new File(filePath);
|
||||
if(!file.exists()){
|
||||
if (!file.exists()) {
|
||||
response.setStatus(404);
|
||||
throw new JeroBootException("文件不存在..");
|
||||
}
|
||||
@@ -173,12 +189,12 @@ public class CommonController {
|
||||
outputStream.write(buf, 0, len);
|
||||
}
|
||||
response.flushBuffer();
|
||||
}catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
log.error(FILE_VIEW_ERROR + e.getMessage());
|
||||
response.setStatus(404);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}else if(CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)){
|
||||
} else if (CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)) {
|
||||
// minio 下载
|
||||
// 通过MinioUtil查询时 只需要桶后面的路径
|
||||
String minioUrl = MinioUtil.getMinioUrl();
|
||||
@@ -193,14 +209,14 @@ public class CommonController {
|
||||
) {
|
||||
byte[] buf = new byte[1024];
|
||||
int len;
|
||||
if(inputStream==null) {
|
||||
if (inputStream == null) {
|
||||
return;
|
||||
}
|
||||
while ((len = inputStream.read(buf)) > 0) {
|
||||
outputStream.write(buf, 0, len);
|
||||
}
|
||||
response.flushBuffer();
|
||||
}catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
log.error(FILE_VIEW_ERROR + e.getMessage());
|
||||
response.setStatus(404);
|
||||
e.printStackTrace();
|
||||
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
package com.jero.modules.docking.download.config;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
import org.springframework.web.util.ContentCachingRequestWrapper;
|
||||
import org.springframework.web.util.ContentCachingResponseWrapper;
|
||||
import org.springframework.web.util.WebUtils;
|
||||
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author lqt
|
||||
* @version 1.0
|
||||
* @date 2023/11/24 11:36
|
||||
*/
|
||||
@Component
|
||||
public class ContentCachingWrapperFilter extends OncePerRequestFilter implements Ordered {
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return Ordered.LOWEST_PRECEDENCE - 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
|
||||
throws ServletException, IOException {
|
||||
// 包装流,可重复读取
|
||||
if (!(request instanceof ContentCachingRequestWrapper)) {
|
||||
request = new ContentCachingRequestWrapper(request);
|
||||
}
|
||||
if (!(response instanceof ContentCachingResponseWrapper)) {
|
||||
response = new ContentCachingResponseWrapper(response);
|
||||
}
|
||||
|
||||
filterChain.doFilter(request, response);
|
||||
updateResponse(response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新响应(不操作这一步,会导致接口响应空白)
|
||||
*
|
||||
* @param response 响应对象
|
||||
* @throws IOException /
|
||||
*/
|
||||
public static void updateResponse(HttpServletResponse response) throws IOException {
|
||||
ContentCachingResponseWrapper responseWrapper = WebUtils.getNativeResponse(response, ContentCachingResponseWrapper.class);
|
||||
Objects.requireNonNull(responseWrapper).copyBodyToResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取请求体
|
||||
*
|
||||
* @param request 请求对象
|
||||
* @return 请求体
|
||||
*/
|
||||
public static String getRequestBody(HttpServletRequest request) throws IOException {
|
||||
String requestBody = "";
|
||||
ContentCachingRequestWrapper wrapper = WebUtils.getNativeRequest(request, ContentCachingRequestWrapper.class);
|
||||
if (wrapper != null) {
|
||||
requestBody = IOUtils.toString(wrapper.getContentAsByteArray(), StandardCharsets.UTF_8.toString());
|
||||
}
|
||||
return requestBody;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取响应体
|
||||
*
|
||||
* @param response 响应对象
|
||||
* @return 响应体
|
||||
*/
|
||||
public static String getResponseBody(HttpServletResponse response) throws IOException {
|
||||
String responseBody = "";
|
||||
ContentCachingResponseWrapper wrapper = WebUtils.getNativeResponse(response, ContentCachingResponseWrapper.class);
|
||||
if (wrapper != null) {
|
||||
responseBody = IOUtils.toString(wrapper.getContentAsByteArray(), StandardCharsets.UTF_8.toString());
|
||||
}
|
||||
return responseBody;
|
||||
}
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
package com.jero.modules.docking.download.config;
|
||||
|
||||
import com.jero.modules.docking.download.service.DownloadDecryptFileService;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* @author lqt
|
||||
* @version 1.0
|
||||
* @date 2023/11/23 18:20
|
||||
*/
|
||||
@Component
|
||||
public class DownloadInterceptor implements HandlerInterceptor{
|
||||
|
||||
@Resource
|
||||
private DownloadDecryptFileService downloadDecryptFileService;
|
||||
|
||||
public DownloadInterceptor(DownloadDecryptFileService downloadDecryptFileService) {
|
||||
this.downloadDecryptFileService = downloadDecryptFileService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 预处理回调方法,实现处理器的预处理(如检查登陆),第三个参数为响应的处理器
|
||||
* 返回值:true表示继续流程(如调用下一个拦截器或处理器);false表示流程中断(如登录检查失败),不会继续调用其他的拦截器或处理器,此时我们需要通过response来产生响应
|
||||
* @throws Exception
|
||||
*/
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 后处理回调方法,实现处理器的后处理(但在渲染视图之前),此时我们可以通过modelAndView(模型和视图对象)对模型数据进行处理或对视图进行处理,modelAndView也可能为null
|
||||
*/
|
||||
@Override
|
||||
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
|
||||
downloadDecryptFileService.downloadDecryptFile(request,response,handler,"1");
|
||||
}
|
||||
|
||||
/**
|
||||
*整个请求处理完毕回调方法,即在视图渲染完毕时回调,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理,类似于try-catch-finally中的finally,但仅调用处理器执行链中
|
||||
*/
|
||||
@Override
|
||||
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
|
||||
downloadDecryptFileService.downloadDecryptFile(request,response,handler,null);
|
||||
}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package com.jero.modules.docking.download.config;
|
||||
|
||||
import com.jero.modules.docking.download.service.DownloadDecryptFileService;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @author lqt
|
||||
* @version 1.0
|
||||
* @date 2023/11/23 18:21
|
||||
*/
|
||||
@Configuration
|
||||
public class InterceptorConfig implements WebMvcConfigurer {
|
||||
@Resource
|
||||
private DownloadDecryptFileService downloadDecryptFileService;
|
||||
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addInterceptor(new DownloadInterceptor(downloadDecryptFileService)).addPathPatterns("/**");
|
||||
}
|
||||
|
||||
}
|
||||
+14
-16
@@ -1,10 +1,9 @@
|
||||
package com.jero.modules.docking.encrypt.controller;
|
||||
package com.jero.modules.docking.download.controller;
|
||||
|
||||
import com.jero.modules.docking.utils.IntekeyUtils;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@@ -15,21 +14,21 @@ import java.io.OutputStream;
|
||||
/**
|
||||
* @author lqt
|
||||
* @version 1.0
|
||||
* @date 2023/11/7 15:22
|
||||
* @date 2023/11/27 17:41
|
||||
*/
|
||||
@Slf4j
|
||||
@Api(tags = "加解密附件")
|
||||
@RequestMapping("/encrypt")
|
||||
@RestController
|
||||
public class EncrygtController {
|
||||
@RequestMapping("/home/search")
|
||||
public class SearchController {
|
||||
|
||||
|
||||
/**
|
||||
* 下载附件
|
||||
*
|
||||
*/
|
||||
@PostMapping(value = "/download")
|
||||
public void view(MultipartFile file,String url, String appCode, String secretKey,String scope, HttpServletResponse response) {
|
||||
try (InputStream inputStream = IntekeyUtils.DecryptFile(url, appCode, secretKey, scope, file);
|
||||
public void downloadAndView(@RequestParam("file") MultipartFile file,
|
||||
@RequestParam("url") String url,
|
||||
@RequestParam("appCode") String appCode,
|
||||
@RequestParam("secretKey") String secretKey,
|
||||
@RequestParam("scope") Integer scope,
|
||||
HttpServletResponse response) {
|
||||
try (InputStream inputStream = IntekeyUtils.DecryptFile(url, appCode, secretKey, scope, file);
|
||||
OutputStream outputStream = response.getOutputStream()
|
||||
) {
|
||||
byte[] buf = new byte[1024];
|
||||
@@ -38,8 +37,7 @@ public class EncrygtController {
|
||||
outputStream.write(buf, 0, len);
|
||||
}
|
||||
response.flushBuffer();
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage());
|
||||
} catch (Exception e) {
|
||||
response.setStatus(404);
|
||||
e.printStackTrace();
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.jero.modules.docking.download.service;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* @author lqt
|
||||
* @version 1.0
|
||||
* @date 2023/11/24 9:04
|
||||
*/
|
||||
public interface DownloadDecryptFileService {
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LQT
|
||||
* @date 2023/11/24 9:06
|
||||
* @param request
|
||||
* @param response
|
||||
* @param handler
|
||||
* @param type 1 为直接返回文件流,其他为modelandview
|
||||
* @return void
|
||||
*/
|
||||
void downloadDecryptFile(HttpServletRequest request, HttpServletResponse response, Object handler,String type);
|
||||
}
|
||||
+237
@@ -0,0 +1,237 @@
|
||||
package com.jero.modules.docking.download.service.impl;
|
||||
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.modules.docking.download.service.DownloadDecryptFileService;
|
||||
import com.jero.modules.docking.utils.IntekeyUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.http.entity.ContentType;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.method.HandlerMethod;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.util.ContentCachingResponseWrapper;
|
||||
import org.springframework.web.util.WebUtils;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author lqt
|
||||
* @version 1.0
|
||||
* @date 2023/11/24 9:04
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class DownloadDecryptFileServiceImpl implements DownloadDecryptFileService {
|
||||
|
||||
@Value("#{'${download.download_url}'.split(',')}")
|
||||
private List<String> downloadUrl;
|
||||
|
||||
@Value("#{'${download.view_url}'.split(',')}")
|
||||
private List<String> viewUrl;
|
||||
|
||||
@Value("#{'${download.enable}'}")
|
||||
private boolean enable;
|
||||
|
||||
/**
|
||||
* 管理员角色
|
||||
*/
|
||||
@Value("#{'${download.admin_role_code}'.split(',')}")
|
||||
private List<String> adminRoleCode;
|
||||
|
||||
/**
|
||||
* 加密
|
||||
*/
|
||||
@Value("#{'${download.encrypt.url}'}")
|
||||
private String encryptUrl;
|
||||
@Value("#{'${download.encrypt.app_code}'}")
|
||||
private String encryptAppCode;
|
||||
@Value("#{'${download.encrypt.secret_key}'}")
|
||||
private String encryptSecretKey;
|
||||
|
||||
/**
|
||||
* 解密
|
||||
*/
|
||||
@Value("#{'${download.decrypt.url}'}")
|
||||
private String decryptUrl;
|
||||
@Value("#{'${download.decrypt.app_code}'}")
|
||||
private String decryptAppCode;
|
||||
@Value("#{'${download.decrypt.secret_key}'}")
|
||||
private String decryptSecretKey;
|
||||
|
||||
/**
|
||||
* 研发域
|
||||
*/
|
||||
@Value("#{'${download.scope_dev}'}")
|
||||
private int scopeDev;
|
||||
/**
|
||||
* 办公域
|
||||
*/
|
||||
@Value("#{'${download.scope_work}'}")
|
||||
private int scopeWork;
|
||||
|
||||
|
||||
@Override
|
||||
public void downloadDecryptFile(HttpServletRequest request, HttpServletResponse response, Object handler,String type) {
|
||||
if(!enable){
|
||||
return;
|
||||
}
|
||||
// 判断返回值是否为文件流,否则其他接口返回值会变更成字符串,导致前端无法解析
|
||||
HandlerMethod handlerMethod = (HandlerMethod) handler;
|
||||
InputStream responseBody = null;
|
||||
try {
|
||||
String returnType = handlerMethod.getMethod().getReturnType().getName();
|
||||
if(!Objects.equals(returnType,"void") && !Objects.equals(returnType,"org.springframework.web.servlet.ModelAndView")){
|
||||
return;
|
||||
}
|
||||
if(Objects.equals(returnType,"void") && !Objects.equals(type,"1")){
|
||||
return;
|
||||
}
|
||||
ContentCachingResponseWrapper wrapper = WebUtils.getNativeResponse(response, ContentCachingResponseWrapper.class);
|
||||
if (wrapper != null) {
|
||||
responseBody = wrapper.getContentInputStream();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
response.setStatus(404);
|
||||
}
|
||||
|
||||
String contentType = response.getContentType();
|
||||
String fileName = getFileName(response);
|
||||
|
||||
MultipartFile file = getMultipartFile(response,responseBody, contentType, fileName);
|
||||
// 访问路径
|
||||
String str = request.getRequestURI();
|
||||
|
||||
boolean b = isBoolean(str, viewUrl);
|
||||
|
||||
boolean b1 = isBoolean(str, downloadUrl);
|
||||
|
||||
if(b){
|
||||
// 预览,进行解密
|
||||
decryptFile(response, file, null);
|
||||
}else if(b1){
|
||||
// 下载文件 先解密,判断组织域,加密
|
||||
try (InputStream is = IntekeyUtils.DecryptFile(decryptUrl, decryptAppCode, decryptSecretKey, null, file)) {
|
||||
MultipartFile fileDecrypt = getMultipartFile(response,is, contentType, fileName);
|
||||
int scope = getScope();
|
||||
// 加密
|
||||
encryptFile(response, fileDecrypt, scope);
|
||||
} catch (Exception e) {
|
||||
response.setStatus(404);
|
||||
}
|
||||
|
||||
}else{
|
||||
// excel 判断组织域,加密
|
||||
int scope = getScope();
|
||||
// 加密
|
||||
encryptFile(response, file, scope);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private String getFileName(HttpServletResponse response) {
|
||||
String fileName = "";
|
||||
String headerField = response.getHeader("Content-Disposition");
|
||||
|
||||
if (!StringUtils.isBlank(headerField) || headerField.contains("fileName=") || headerField.contains("filename=")){
|
||||
String name = "";
|
||||
if(headerField.contains("fileName=")){
|
||||
name = "fileName";
|
||||
}else{
|
||||
name = "filename";
|
||||
}
|
||||
fileName = headerField.substring(headerField.lastIndexOf(name + "=") + 9);
|
||||
}else {
|
||||
fileName = UUID.randomUUID().toString();
|
||||
}
|
||||
return fileName;
|
||||
}
|
||||
|
||||
private void decryptFile(HttpServletResponse response, MultipartFile file, Integer scope) {
|
||||
try (InputStream is = IntekeyUtils.DecryptFile(decryptUrl, decryptAppCode, decryptSecretKey, scope, file)) {
|
||||
writeResponse(response, is);
|
||||
} catch (Exception e) {
|
||||
response.setStatus(404);
|
||||
}
|
||||
}
|
||||
|
||||
private void encryptFile(HttpServletResponse response, MultipartFile file, Integer scope) {
|
||||
try (InputStream is = IntekeyUtils.DecryptFile(encryptUrl, encryptAppCode, encryptSecretKey, scope, file)) {
|
||||
writeResponse(response, is);
|
||||
} catch (Exception e) {
|
||||
response.setStatus(404);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private MultipartFile getMultipartFile(HttpServletResponse response,InputStream responseBody,String contentType,String fileName) {
|
||||
MultipartFile file = null;
|
||||
try {
|
||||
file = new MockMultipartFile(ContentType.APPLICATION_OCTET_STREAM.toString(),fileName,contentType, responseBody);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
response.setStatus(404);
|
||||
}
|
||||
return file;
|
||||
}
|
||||
|
||||
private boolean isBoolean(String str, List<String> viewUrl) {
|
||||
boolean b = false;
|
||||
for (String s : viewUrl) {
|
||||
if (str.contains(s)) {
|
||||
b = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
private int getScope() {
|
||||
// 角色信息中存在 【系统管理员】或者 【标准管理员】即加为研发密,其他情况都是OA密
|
||||
// 研发密比较高级(加密需要传参)
|
||||
// 研发域 scope = 51
|
||||
// 办公密 scope = 52
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
List<String> listRoleCode = Arrays.asList(sysUser.getRoleIds().split(","));
|
||||
if(CollectionUtils.isEmpty(listRoleCode)){
|
||||
throw new JeroBootException(ResultCommon.ERROR);
|
||||
}
|
||||
int scope = scopeWork;
|
||||
long l = listRoleCode.stream().filter(o->adminRoleCode.contains(o)).count();
|
||||
if(l > 0){
|
||||
scope = scopeDev;
|
||||
}
|
||||
return scope;
|
||||
}
|
||||
|
||||
private void writeResponse(HttpServletResponse response,InputStream is) {
|
||||
response.resetBuffer();
|
||||
try (OutputStream outputStream = response.getOutputStream()) {
|
||||
byte[] buf = new byte[1024];
|
||||
int len;
|
||||
while ((len = is.read(buf)) > 0) {
|
||||
outputStream.write(buf, 0, len);
|
||||
}
|
||||
response.flushBuffer();
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage());
|
||||
response.setStatus(404);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import org.springframework.http.*;
|
||||
import org.springframework.util.DigestUtils;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@@ -32,14 +33,14 @@ public class IntekeyUtils {
|
||||
* @return
|
||||
*/
|
||||
//todo 这个方法需要写在laws-modules-docking 里面 可以新建一个文件夹是encrypt
|
||||
public static InputStream DecryptFile(String url, String appCode, String secretKey, String scope, MultipartFile multipartFile) {
|
||||
public static InputStream DecryptFile(String url, String appCode, String secretKey, Integer scope, MultipartFile multipartFile) {
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
|
||||
logger.info("解密时间:" + format.format(new Date()));
|
||||
//设置校验
|
||||
Long time = System.currentTimeMillis();
|
||||
|
||||
String sign = DigestUtils.md5DigestAsHex((secretKey + time).getBytes());
|
||||
url = url + "?appCode=" + appCode + "&time=" + time + "&sign=" + sign + "&scope=" + scope;
|
||||
url = url + "?appCode=" + appCode + "&time=" + time + "&sign=" + sign + (Objects.isNull(scope) ? "" : "&scope=" + scope);
|
||||
File file = transferToFile(multipartFile);
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
//设置请求头
|
||||
|
||||
+1
-1
@@ -444,4 +444,4 @@ public class ActFlowCommonService {
|
||||
updateWrapper.set(ProcessApprovalRecord::getFinishFlag, ProcessStatusEnum.WITHDRAWN.getValue());
|
||||
processApprovalRecordService.update(updateWrapper);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -39,4 +39,4 @@
|
||||
group by pesi.id) t
|
||||
${ew.customSqlSegment}
|
||||
</sql>
|
||||
</mapper>
|
||||
</mapper>
|
||||
|
||||
-10
@@ -595,12 +595,8 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
|
||||
JSONObject sort = new JSONObject();
|
||||
Map<String,Object> issueTimeDesc = new HashMap<>();
|
||||
Map<String,Object> issueTimeAsc = new HashMap<>();
|
||||
Map<String,Object> issueTime = new HashMap<>();
|
||||
issueTimeDesc.put("order","desc");
|
||||
issueTimeAsc.put("order","asc");
|
||||
issueTime.put(RESOURCE_TYPE,issueTimeAsc);
|
||||
issueTime.put(STANDARD_TYPE,issueTimeDesc);
|
||||
issueTime.put(CREATE_TIME,issueTimeDesc);
|
||||
sort.putAll(issueTime);
|
||||
IPage page = getIPage(searchContent, queryMapJsonAll, mapHighlight1,
|
||||
@@ -905,11 +901,6 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
obj.setApplicableVehicle(lawsDomesticStandard.getApplicableVehicle());
|
||||
obj.setStandardProperty(lawsDomesticStandard.getStandardProperty());
|
||||
obj.setStandardState(lawsDomesticStandard.getStandardState());
|
||||
if(Objects.equals(lawsDomesticStandard.getStandardClass(),"GB")){
|
||||
obj.setStandardType("2");
|
||||
}else if(Objects.equals(lawsDomesticStandard.getStandardClass(),"GB/T")){
|
||||
obj.setStandardType("1");
|
||||
}
|
||||
List<OSSFile> listFile = getOssFilesLawsDomesticStandard(lawsDomesticStandard);
|
||||
updateES(opType, obj, listFile, lawsDomesticStandard.getId());
|
||||
}catch (Exception e){
|
||||
@@ -1205,7 +1196,6 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
map.put(STANDARD_CODE,obj.getStandardCode());
|
||||
map.put(ENTERPRISE_STANDARD_STATE,obj.getEnterpriseStandardState());
|
||||
map.put(GRADE_CLASSIFICATION,obj.getGradeClassification());
|
||||
map.put(STANDARD_TYPE,obj.getStandardType());
|
||||
map.put(CREATE_TIME,new Date());
|
||||
//添加es
|
||||
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(map));
|
||||
|
||||
+9
@@ -61,6 +61,15 @@ public class LawsDomesticController {
|
||||
return Result.OK(lawsCommonService.getCommonPage(parameterMap));
|
||||
}
|
||||
|
||||
@AutoLog(value = "国内法规标准-高级检索")
|
||||
@ApiOperation(value="国内法规标准-高级检索", notes="国内法规标准-高级检索")
|
||||
@PostMapping(value = "/getCommonPageNoPermissions")
|
||||
@ApiOperationSupport(order = 1)
|
||||
public Result<IPage<Map<String,Object>>> getCommonPageNoPermissions(@RequestBody @ApiParam("标签管理") Map<String,Object> parameterMap) {
|
||||
parameterMap.put(FieldCommon.MODULE, MODULE_VALUE);
|
||||
return Result.OK(lawsCommonService.getCommonPage(parameterMap));
|
||||
}
|
||||
|
||||
@AutoLog(value = "国内法规标准-获取列表表头")
|
||||
@ApiOperation(value="国内法规标准-获取列表表头", notes="国内法规标准-获取列表表头")
|
||||
@GetMapping(value = "getCommonHeader")
|
||||
|
||||
+9
@@ -79,6 +79,15 @@ public class LawsEnterpriseController {
|
||||
return Result.OK(lawsCommonService.getCommonPage(parameterMap));
|
||||
}
|
||||
|
||||
@AutoLog(value = "企业法规标准-高级检索")
|
||||
@ApiOperation(value="企业法规标准-高级检索", notes="企业法规标准-高级检索")
|
||||
@PostMapping(value = "/getCommonPageNoPermissions")
|
||||
@ApiOperationSupport(order = 1)
|
||||
public Result<IPage<Map<String,Object>>> getCommonPageNoPermissions(@RequestBody @ApiParam("标签管理") Map<String,Object> parameterMap) {
|
||||
parameterMap.put(FieldCommon.MODULE, MODULE_VALUE);
|
||||
return Result.OK(lawsCommonService.getCommonPage(parameterMap));
|
||||
}
|
||||
|
||||
@AutoLog(value = "企业法规标准-获取列表表头")
|
||||
@ApiOperation(value="企业法规标准-获取列表表头", notes="企业法规标准-获取列表表头")
|
||||
@GetMapping(value = "getCommonHeader")
|
||||
|
||||
+9
@@ -61,6 +61,15 @@ public class LawsOverseasController {
|
||||
return Result.OK(lawsCommonService.getCommonPage(parameterMap));
|
||||
}
|
||||
|
||||
@AutoLog(value = "海外法规标准-高级检索")
|
||||
@ApiOperation(value="海外法规标准-高级检索", notes="海外法规标准-高级检索")
|
||||
@PostMapping(value = "/getCommonPageNoPermissions")
|
||||
@ApiOperationSupport(order = 1)
|
||||
public Result<IPage<Map<String,Object>>> getCommonPageNoPermissions(@RequestBody @ApiParam("标签管理") Map<String,Object> parameterMap) {
|
||||
parameterMap.put(FieldCommon.MODULE, MODULE_VALUE);
|
||||
return Result.OK(lawsCommonService.getCommonPage(parameterMap));
|
||||
}
|
||||
|
||||
@AutoLog(value = "海外法规标准-获取列表表头")
|
||||
@ApiOperation(value="海外法规标准-获取列表表头", notes="海外法规标准-获取列表表头")
|
||||
@GetMapping(value = "getCommonHeader")
|
||||
|
||||
@@ -431,3 +431,26 @@ draftDepartName: 起草部门
|
||||
|
||||
# 管理员权限roleCode,多填用英文逗号拼接
|
||||
adminRoleCode: admin
|
||||
|
||||
# 文件下载加解密
|
||||
download:
|
||||
enable: false
|
||||
# 文件下载、预览拦截路径,多个以逗号分隔
|
||||
download_url: /sys/common/download/
|
||||
view_url: /sys/common/view/
|
||||
# 管理员角色
|
||||
admin_role_code: admin,BZGLY
|
||||
# 加密参数
|
||||
encrypt:
|
||||
url: http://10.2.159.90/intekey/encrypteFile
|
||||
app_code: SRMS
|
||||
secret_key: SRMS1234..
|
||||
# 解密参数
|
||||
decrypt:
|
||||
url: http://10.2.159.90/intekey/file
|
||||
app_code: SRMS
|
||||
secret_key: SRMS1234..
|
||||
# 研发域
|
||||
scope_dev: 51
|
||||
# 办公域
|
||||
scope_work: 52
|
||||
|
||||
Reference in New Issue
Block a user