Browse Source

Merge branch 'dev_thirdplatform' into dev_temp

master
zhaoqifeng 5 years ago
parent
commit
f6be0c7b63
  1. 92
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java
  2. 17
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/constant/ThirdPlatformActions.java
  3. 32
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/UploadFileFormDTO.java
  4. 16
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/UploadFileResultDTO.java
  5. 22
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdOpenFeignClient.java
  6. 20
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdOpenFeignClientFallback.java
  7. 40
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/apiservice/ApiService.java
  8. 33
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/apiservice/impl/LuzhouGridPlatformApiService.java
  9. 25
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/ProjectController.java
  10. 16
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/ProjectService.java
  11. 22
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  12. 24
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/PlatformFileDTO.java
  13. 214
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  14. 9
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java

92
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java

@ -6,6 +6,9 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
@ -23,6 +26,7 @@ import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
@ -32,16 +36,15 @@ import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
@ -239,6 +242,32 @@ public class HttpClientManager {
}
}
public Result<String> uploadFile(String url, boolean isHttps, File file, String fileName, Map<String, Object> headerMap) {
try {
HttpPost httppost = new HttpPost(url);
httppost.setConfig(requestConfig);
if (null != headerMap) {
headerMap.forEach((k, v) -> {
if (v != null) {
httppost.addHeader(k, v.toString());
}
});
}
if (file != null) {
HttpEntity entity = MultipartEntityBuilder
.create()
.addBinaryBody("file", file, ContentType.MULTIPART_FORM_DATA, fileName)
.setMode(HttpMultipartMode.RFC6532)
.build();
httppost.setEntity(entity);
}
return execute(httppost,isHttps);
} catch (Exception e) {
log.error("send exception", e);
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
}
/**
* desc: https发送json post 请求
* param: url,jsonStrParam
@ -436,6 +465,61 @@ public class HttpClientManager {
}
}
public Result<MultipartFile> getFileItem(String url, String fileName) {
try {
URIBuilder builder = new URIBuilder(url);
HttpGet httpGet = new HttpGet(builder.build());
httpGet.setConfig(requestConfig);
return executeToFile(httpGet, fileName);
} catch (Exception e) {
log.error("sendGet exception", e);
return new Result<MultipartFile >().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
}
private Result<MultipartFile> executeToFile(HttpRequestBase httpMethod, String fileName) {
CloseableHttpResponse response = null;
FileItem item = null;
try {
response = httpclient.execute(httpMethod);
log.debug("http send response:{}", JSON.toJSONString(response));
if (response != null && response.getStatusLine() != null) {
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
InputStream is = response.getEntity().getContent();
FileItemFactory factory = new DiskFileItemFactory(16, null);
String textFieldName = "uploadfile";
item = factory.createItem(textFieldName, ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName);
OutputStream os = item.getOutputStream();
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = is.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
is.close();
return new Result<MultipartFile>().ok(new CommonsMultipartFile(item));
} else {
log.warn("execute http method fail,httpStatus:{0}", response.getStatusLine().getStatusCode());
}
}
} catch (Exception e) {
log.error("execute exception", e);
return new Result<MultipartFile>().error(EpmetErrorCode.SERVER_ERROR.getCode(), e.getMessage());
} finally {
httpMethod.releaseConnection();
try {
if (response != null) {
response.close();
}
} catch (IOException e) {
}
}
return new Result<MultipartFile>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
public Result<byte[]> getMediaByteArray(String url, String json) {
try {

17
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/constant/ThirdPlatformActions.java

@ -2,12 +2,21 @@ package com.epmet.constant;
/**
* 第三方平台动作常量
* @author kamui
*/
public interface ThirdPlatformActions {
// 获取accessToken
String GET_ACCESS_TOKEN = "GET_ACCESS_TOKEN";
// 项目协助
String PROJECT_ASSIST = "PROJECT_ASSIST";
/**
* 获取accessToken
*/
String GET_ACCESS_TOKEN = "GET_ACCESS_TOKEN";
/**
* 项目协助
*/
String PROJECT_ASSIST = "PROJECT_ASSIST";
/**
* 上传文件
*/
String UPLOAD_FILE = "UPLOAD_FILE";
}

32
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/UploadFileFormDTO.java

@ -0,0 +1,32 @@
package com.epmet.dto.form;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2021/3/25 9:57
*/
@Data
public class UploadFileFormDTO implements Serializable {
private static final long serialVersionUID = 2911010733366812636L;
/**
* 客户ID
*/
private String customerId;
/**
* 平台ID
*/
@NotBlank(message = "平台ID不能为空")
private String platformId;
/**
* 文件
*/
private MultipartFile file;
}

16
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/UploadFileResultDTO.java

@ -0,0 +1,16 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2021/3/25 10:09
*/
@Data
public class UploadFileResultDTO implements Serializable {
private static final long serialVersionUID = -4986665750488963082L;
private String url;
}

22
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdOpenFeignClient.java

@ -3,18 +3,13 @@ package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.ProcessListFormDTO;
import com.epmet.dto.form.ProjectApplyAssistFormDTO;
import com.epmet.dto.form.ProjectByCreateTopicUserFormDTO;
import com.epmet.dto.form.ProjectListFromDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.feign.fallback.EpmetThirdOpenFeignClientFallback;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@ -38,4 +33,15 @@ public interface EpmetThirdOpenFeignClient {
@PostMapping("third/project/apply-assist")
Result<ProjectAssistResult> applyAssist(@RequestBody ProjectApplyAssistFormDTO formDTO);
/**
* 上传文件
* @author zhaoqifeng
* @date 2021/3/25 16:10
* @param file
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.UploadFileResultDTO>
*/
@PostMapping("third/project/uploadfile")
Result<UploadFileResultDTO> uploadFile(@RequestParam("file") MultipartFile file, UploadFileFormDTO formDTO);
}

20
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdOpenFeignClientFallback.java

@ -4,14 +4,12 @@ import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.ProcessListFormDTO;
import com.epmet.dto.form.ProjectApplyAssistFormDTO;
import com.epmet.dto.form.ProjectByCreateTopicUserFormDTO;
import com.epmet.dto.form.ProjectListFromDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.feign.EpmetThirdOpenFeignClient;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@ -35,4 +33,18 @@ public class EpmetThirdOpenFeignClientFallback implements EpmetThirdOpenFeignCli
public Result<ProjectAssistResult> applyAssist(ProjectApplyAssistFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "applyAssist", formDTO);
}
/**
* 上传文件
*
* @param file
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.UploadFileResultDTO>
* @author zhaoqifeng
* @date 2021/3/25 16:10
*/
@Override
public Result<UploadFileResultDTO> uploadFile(MultipartFile file, UploadFileFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "uploadFile", formDTO);
}
}

40
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/apiservice/ApiService.java

@ -2,6 +2,7 @@ package com.epmet.apiservice;
import com.alibaba.fastjson.JSON;
import com.epmet.apiservice.result.LZGridPlatformBaseResult;
import com.epmet.dto.form.UploadFileFormDTO;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.dto.result.ProjectAssistResult;
import com.epmet.commons.tools.exception.RenException;
@ -13,11 +14,13 @@ import com.epmet.dao.ThirdplatformCustomerRegisterDao;
import com.epmet.dao.ThirdplatformDao;
import com.epmet.dto.form.ProjectApplyAssistFormDTO;
import com.epmet.dto.form.TPFDemoFormDTO;
import com.epmet.dto.result.UploadFileResultDTO;
import com.epmet.entity.ThirdplatformActionEntity;
import com.epmet.entity.ThirdplatformCustomerRegisterEntity;
import com.epmet.entity.ThirdplatformEntity;
import org.springframework.data.redis.core.RedisTemplate;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
@ -117,6 +120,37 @@ public abstract class ApiService {
throw new RenException("请求第三方平台,发送Post请求失败。错误信息:" + result.getMsg());
}
LZGridPlatformBaseResult platformResult = JSON.parseObject(result.getData(), LZGridPlatformBaseResult.class);
judgeResultSuccess(platformResult);
return result.getData();
}
public String sendPostRequestToUploadFile(String platformId, String action, File file, String fileName) {
// 1.获取token
String accessToken = getAccessToken(platformId);
//2.获取url
ThirdplatformEntity thirdplatform = SpringContextUtils.getBean(ThirdplatformDao.class).selectById(platformId);
ThirdplatformActionEntity actionEntity = SpringContextUtils.getBean(ThirdplatformActionDao.class)
.getByPlatformIdAndActionKey(platformId, action);
Map<String, Object> headers = new HashMap<>();
// 填充access token到头当中
headers.put("X-Access-Token", accessToken);
Result<String> result = HttpClientManager.getInstance().uploadFile(thirdplatform.getBaseUrl().concat(actionEntity.getApiUrl()),
thirdplatform.getBaseUrl().startsWith("https://"),
file,
fileName,
headers);
if (result == null) {
throw new RenException("请求第三方平台,发送Post请求失败。result为null");
}
if (!result.success()) {
throw new RenException("请求第三方平台,发送Post请求失败。错误信息:" + result.getMsg());
}
LZGridPlatformBaseResult platformResult = JSON.parseObject(result.getData(), LZGridPlatformBaseResult.class);
// token过期重试逻辑,先不加
@ -210,4 +244,10 @@ public abstract class ApiService {
* @date 2021.03.22 10:32
*/
public abstract void judgeResultSuccess(LZGridPlatformBaseResult result);
public UploadFileResultDTO uploadFile(UploadFileFormDTO formDTO) {
return null;
}
}

33
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/apiservice/impl/LuzhouGridPlatformApiService.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.epmet.apiservice.ApiService;
import com.epmet.apiservice.result.LZGridPlatformBaseResult;
import com.epmet.apiservice.result.LZGridPlatformProjectAssistResult;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.utils.HttpClientManager;
@ -12,15 +13,21 @@ import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.constant.ThirdPlatformActions;
import com.epmet.dao.ThirdplatformActionDao;
import com.epmet.dao.ThirdplatformDao;
import com.epmet.dto.form.UploadFileFormDTO;
import com.epmet.dto.result.ProjectAssistResult;
import com.epmet.dto.form.ProjectApplyAssistFormDTO;
import com.epmet.dto.result.UploadFileResultDTO;
import com.epmet.entity.ThirdplatformActionEntity;
import com.epmet.entity.ThirdplatformEntity;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.io.File;
import java.util.HashMap;
import java.util.Objects;
/**
* 泸州网格化平台ApiService
@ -95,4 +102,30 @@ public class LuzhouGridPlatformApiService extends ApiService {
throw new RenException("泸州网格化平台:返回失败结果,错误码:" + result.getCode());
}
}
@Override
public UploadFileResultDTO uploadFile(UploadFileFormDTO formDTO) {
UploadFileResultDTO resultDTO = new UploadFileResultDTO();
String platformId = formDTO.getPlatformId();
try {
String fileName = formDTO.getFile().getOriginalFilename();
// 正式调用第三方平台
File file = new File(formDTO.getFile().getOriginalFilename());
FileUtils.copyInputStreamToFile(formDTO.getFile().getInputStream(), file);
String result = sendPostRequestToUploadFile(platformId, ThirdPlatformActions.UPLOAD_FILE, file, fileName);
if (!StringUtils.isBlank(result)) {
// 此处要经过一系列业务处理,将第三方平台返回的数据进行解析,等处理最后转换成ProjectAssistResult类型,返回。ProjectAssistResult这个类型是
// 所有apiService的projectAssist方法返回值的统一类型,是我们的epmet-cloud所需要的数据的实体,
// 所有apiService都要想办法转化成这个类型。
LZGridPlatformBaseResult lzResult = JSON.parseObject(result, LZGridPlatformBaseResult.class);
// 此处设置为第三方系统返回的唯一id
resultDTO.setUrl((String) lzResult.getResult());
}
System.out.println("泸州网格化平台项目文件上传成功");
} catch (Exception e) {
throw new RenException("上传失败");
}
return resultDTO;
}
}

25
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/ProjectController.java

@ -1,16 +1,16 @@
package com.epmet.controller;
import com.epmet.dto.form.UploadFileFormDTO;
import com.epmet.dto.result.ProjectAssistResult;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.ProjectApplyAssistFormDTO;
import com.epmet.dto.form.TPFDemoFormDTO;
import com.epmet.dto.result.UploadFileResultDTO;
import com.epmet.service.ProjectService;
import org.springframework.beans.factory.annotation.Autowired;
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 org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* 对接第三方平台业务Project相关的controller
@ -50,4 +50,21 @@ public class ProjectController {
return new Result<ProjectAssistResult>().ok(projectAssistResult);
}
/**
* 上传文件
* @author zhaoqifeng
* @date 2021/3/25 11:13
* @param file
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.UploadFileResultDTO>
*/
@PostMapping("uploadfile")
public Result<UploadFileResultDTO> uploadFile(@RequestParam("file") MultipartFile file, UploadFileFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
formDTO.setFile(file);
UploadFileResultDTO result = projectService.uploadFile(formDTO);
return new Result<UploadFileResultDTO>().ok(result);
}
}

16
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/ProjectService.java

@ -1,8 +1,10 @@
package com.epmet.service;
import com.epmet.dto.form.UploadFileFormDTO;
import com.epmet.dto.result.ProjectAssistResult;
import com.epmet.dto.form.ProjectApplyAssistFormDTO;
import com.epmet.dto.form.TPFDemoFormDTO;
import com.epmet.dto.result.UploadFileResultDTO;
/**
* 该service用于封装project相关的代码
@ -12,8 +14,20 @@ public interface ProjectService {
String demoAction(TPFDemoFormDTO formDTO);
/**
*
* 项目协同处理
* @author wangxz
* @date 2021/3/25 10:59
* @param formDTO
* @return com.epmet.dto.result.ProjectAssistResult
*/
ProjectAssistResult applyAssist(ProjectApplyAssistFormDTO formDTO);
/**
* 文件上传
* @author zhaoqifeng
* @date 2021/3/25 10:59
* @param formDTO
* @return com.epmet.dto.result.UploadFileResultDTO
*/
UploadFileResultDTO uploadFile(UploadFileFormDTO formDTO);
}

22
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -1,9 +1,11 @@
package com.epmet.service.impl;
import com.epmet.apiservice.ApiService;
import com.epmet.dto.form.UploadFileFormDTO;
import com.epmet.dto.result.ProjectAssistResult;
import com.epmet.dto.form.ProjectApplyAssistFormDTO;
import com.epmet.dto.form.TPFDemoFormDTO;
import com.epmet.dto.result.UploadFileResultDTO;
import com.epmet.service.ApiServiceSelector;
import com.epmet.service.ProjectService;
import org.springframework.stereotype.Service;
@ -35,4 +37,24 @@ public class ProjectServiceImpl implements ProjectService, ApiServiceSelector {
return apiService.projectAssist(formDTO);
}
/**
* 文件上传
*
* @param formDTO
* @return com.epmet.dto.result.UploadFileResultDTO
* @author zhaoqifeng
* @date 2021/3/25 10:59
*/
@Override
public UploadFileResultDTO uploadFile(UploadFileFormDTO formDTO) {
String customerId = formDTO.getCustomerId();
String platformId = formDTO.getPlatformId();
// 根据平台ID找到注意,此处会如果找不到对应的ApiService会抛出异常
ApiService apiService = selectApiService(platformId);
// 判断该客户是否注册了该平台,如果没有的话,抛出异常
apiService.judgeRegistered(customerId, platformId);
return apiService.uploadFile(formDTO);
}
}

24
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/PlatformFileDTO.java

@ -0,0 +1,24 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author zhaoqifeng
* @dscription
* @date 2021/3/25 16:47
*/
@Data
public class PlatformFileDTO implements Serializable {
private static final long serialVersionUID = 1090878172073142780L;
String projectImages;
String projectVoices;
String projectVideos;
String projectDocs;
String topicImages;
String topicVoices;
String topicVideos;
String topicDocs;
}

214
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -28,10 +28,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.param.TextTaskDTO;
import com.epmet.commons.tools.scan.result.SyncScanResult;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.commons.tools.utils.*;
import com.epmet.constant.ParameterKeyConstant;
import com.epmet.constant.ProjectConstant;
import com.epmet.constant.SmsTemplateConstant;
@ -46,6 +43,9 @@ import com.epmet.feign.*;
import com.epmet.redis.ProjectRedis;
import com.epmet.resi.group.constant.TopicConstant;
import com.epmet.resi.group.dto.topic.ResiTopicDTO;
import com.epmet.resi.group.dto.topic.form.TopicAttachmentFormDTO;
import com.epmet.resi.group.dto.topic.result.TopicAttachmentResultDTO;
import com.epmet.resi.group.dto.topic.result.TopicFileResultDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.epmet.service.*;
@ -63,6 +63,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.text.SimpleDateFormat;
@ -2124,22 +2125,93 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
applyAssistFormDTO.setCustomerId(projectStaff.getCustomerId());
applyAssistFormDTO.setPlatformId(formDTO.getPlatformId());
applyAssistFormDTO.setTitle(projectEntity.getTitle());
UploadFileFormDTO uploadFileFormDTO = new UploadFileFormDTO();
uploadFileFormDTO.setCustomerId(projectStaff.getCustomerId());
uploadFileFormDTO.setPlatformId(formDTO.getPlatformId());
//存放项目和话题的附件
PlatformFileDTO platformFileDTO = new PlatformFileDTO();
if (CollectionUtils.isNotEmpty(formDTO.getInternalFile())) {
List<String> imageList =
formDTO.getInternalFile().stream().filter(fileDTO -> TopicConstant.IMAGE.equals(fileDTO.getType())).map(FileDTO::getUrl).collect(Collectors.toList());
//附件上传到第三方平台,获取返回的链接
List<FileDTO> imageList =
formDTO.getInternalFile().stream().filter(fileDTO -> TopicConstant.IMAGE.equals(fileDTO.getType())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(imageList)) {
applyAssistFormDTO.setImageLink(String.join(StrConstant.COMMA, imageList));
List<String> images = new ArrayList<>();
for (FileDTO file : imageList) {
Result<MultipartFile> multipartFileResult = HttpClientManager.getInstance().getFileItem(file.getUrl(), file.getName());
if (!multipartFileResult.success()) {
throw new RenException(multipartFileResult.getCode(), multipartFileResult.getMsg());
}
Result<UploadFileResultDTO> uploadResult = epmetThirdOpenFeignClient.uploadFile(multipartFileResult.getData(), uploadFileFormDTO);
if (!uploadResult.success()) {
throw new RenException(uploadResult.getCode(), uploadResult.getMsg());
}
images.add(uploadResult.getData().getUrl());
}
if (CollectionUtils.isNotEmpty(images)) {
String all = String.join(StrConstant.COMMA, images);
applyAssistFormDTO.setImageLink(all);
platformFileDTO.setProjectImages(all);
}
}
List<String> voiceList =
formDTO.getInternalFile().stream().filter(fileDTO -> TopicConstant.VOICE.equals(fileDTO.getType())).map(FileDTO::getUrl).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(imageList)) {
applyAssistFormDTO.setVoiceLink(String.join(StrConstant.COMMA, voiceList));
List<FileDTO> voiceList =
formDTO.getInternalFile().stream().filter(fileDTO -> TopicConstant.VOICE.equals(fileDTO.getType())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(voiceList)) {
List<String> voices = new ArrayList<>();
for (FileDTO file : voiceList) {
Result<MultipartFile> multipartFileResult = HttpClientManager.getInstance().getFileItem(file.getUrl(), file.getName());
if (!multipartFileResult.success()) {
throw new RenException(multipartFileResult.getCode(), multipartFileResult.getMsg());
}
Result<UploadFileResultDTO> uploadResult = epmetThirdOpenFeignClient.uploadFile(multipartFileResult.getData(), uploadFileFormDTO);
if (!uploadResult.success()) {
throw new RenException(uploadResult.getCode(), uploadResult.getMsg());
}
voices.add(uploadResult.getData().getUrl());
}
if (CollectionUtils.isNotEmpty(voices)) {
String all = String.join(StrConstant.COMMA, voices);
applyAssistFormDTO.setVoiceLink(all);
platformFileDTO.setProjectVoices(all);
}
}
List<String> videoList =
formDTO.getInternalFile().stream().filter(fileDTO -> TopicConstant.VIDEO.equals(fileDTO.getType())).map(FileDTO::getUrl).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(imageList)) {
applyAssistFormDTO.setVideoLink(String.join(StrConstant.COMMA, videoList));
List<FileDTO> videoList =
formDTO.getInternalFile().stream().filter(fileDTO -> TopicConstant.VIDEO.equals(fileDTO.getType())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(videoList)) {
List<String> videos = new ArrayList<>();
for (FileDTO file : videoList) {
Result<MultipartFile> multipartFileResult = HttpClientManager.getInstance().getFileItem(file.getUrl(), file.getName());
if (!multipartFileResult.success()) {
throw new RenException(multipartFileResult.getCode(), multipartFileResult.getMsg());
}
Result<UploadFileResultDTO> uploadResult = epmetThirdOpenFeignClient.uploadFile(multipartFileResult.getData(), uploadFileFormDTO);
if (!uploadResult.success()) {
throw new RenException(uploadResult.getCode(), uploadResult.getMsg());
}
videos.add(uploadResult.getData().getUrl());
}
if (CollectionUtils.isNotEmpty(videos)) {
String all = String.join(StrConstant.COMMA, videos);
applyAssistFormDTO.setVideoLink(all);
platformFileDTO.setProjectVideos(all);
}
}
if (CollectionUtils.isNotEmpty(formDTO.getInternalFile())) {
List<String> docs = new ArrayList<>();
for (FileDTO file : formDTO.getInternalFile()) {
Result<MultipartFile> multipartFileResult = HttpClientManager.getInstance().getFileItem(file.getUrl(), file.getName());
if (!multipartFileResult.success()) {
throw new RenException(multipartFileResult.getCode(), multipartFileResult.getMsg());
}
Result<UploadFileResultDTO> uploadResult = epmetThirdOpenFeignClient.uploadFile(multipartFileResult.getData(), uploadFileFormDTO);
if (!uploadResult.success()) {
throw new RenException(uploadResult.getCode(), uploadResult.getMsg());
}
docs.add(uploadResult.getData().getUrl());
}
if (CollectionUtils.isNotEmpty(docs)) {
String all = String.join(StrConstant.COMMA, docs);
platformFileDTO.setProjectDocs(all);
}
}
}
//获取工作人员信息
@ -2160,6 +2232,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!issueDetail.success()) {
throw new RenException(issueDetail.getCode(), issueDetail.getMsg());
}
//获取话题详情
Result<ResiTopicDTO> topic = resiGroupOpenFeignClient.getTopicById(issueDetail.getData().getTopicInfo().getTopicId());
if (!topic.success()) {
throw new RenException(topic.getCode(), topic.getMsg());
@ -2169,6 +2242,89 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
applyAssistFormDTO.setProvince(topic.getData().getProvince());
applyAssistFormDTO.setCity(topic.getData().getCity());
applyAssistFormDTO.setArea(topic.getData().getArea());
//获取话题附件
TopicAttachmentFormDTO topicAttachmentFormDTO = new TopicAttachmentFormDTO();
topicAttachmentFormDTO.setTopicId(issueDetail.getData().getTopicInfo().getTopicId());
Result<TopicAttachmentResultDTO> topicAttachment = resiGroupOpenFeignClient.topicAttachmentList(topicAttachmentFormDTO);
if (!topicAttachment.success()) {
throw new RenException(topicAttachment.getCode(), topicAttachment.getMsg());
}
if (CollectionUtils.isNotEmpty(issueDetail.getData().getTopicInfo().getPhotoList())) {
List<String> files = new ArrayList<>();
for (String url : issueDetail.getData().getTopicInfo().getPhotoList()) {
Result<MultipartFile> multipartFileResult =
HttpClientManager.getInstance().getFileItem(url, UUID.randomUUID().toString().replace("-", ""));
if (!multipartFileResult.success()) {
throw new RenException(multipartFileResult.getCode(), multipartFileResult.getMsg());
}
Result<UploadFileResultDTO> uploadResult = epmetThirdOpenFeignClient.uploadFile(multipartFileResult.getData(), uploadFileFormDTO);
if (!uploadResult.success()) {
throw new RenException(uploadResult.getCode(), uploadResult.getMsg());
}
files.add(uploadResult.getData().getUrl());
}
if (CollectionUtils.isNotEmpty(files)) {
String all = String.join(StrConstant.COMMA, files);
platformFileDTO.setTopicImages(all);
}
}
if (CollectionUtils.isNotEmpty(topicAttachment.getData().getVoiceList())) {
List<String> files = new ArrayList<>();
for (TopicFileResultDTO item : topicAttachment.getData().getVoiceList()) {
Result<MultipartFile> multipartFileResult =
HttpClientManager.getInstance().getFileItem(item.getUrl(), UUID.randomUUID().toString().replace("-", ""));
if (!multipartFileResult.success()) {
throw new RenException(multipartFileResult.getCode(), multipartFileResult.getMsg());
}
Result<UploadFileResultDTO> uploadResult = epmetThirdOpenFeignClient.uploadFile(multipartFileResult.getData(), uploadFileFormDTO);
if (!uploadResult.success()) {
throw new RenException(uploadResult.getCode(), uploadResult.getMsg());
}
files.add(uploadResult.getData().getUrl());
}
if (CollectionUtils.isNotEmpty(files)) {
String all = String.join(StrConstant.COMMA, files);
platformFileDTO.setTopicVoices(all);
}
}
if (CollectionUtils.isNotEmpty(topicAttachment.getData().getVideoList())) {
List<String> files = new ArrayList<>();
for (TopicFileResultDTO item : topicAttachment.getData().getVideoList()) {
Result<MultipartFile> multipartFileResult =
HttpClientManager.getInstance().getFileItem(item.getUrl(), UUID.randomUUID().toString().replace("-", ""));
if (!multipartFileResult.success()) {
throw new RenException(multipartFileResult.getCode(), multipartFileResult.getMsg());
}
Result<UploadFileResultDTO> uploadResult = epmetThirdOpenFeignClient.uploadFile(multipartFileResult.getData(), uploadFileFormDTO);
if (!uploadResult.success()) {
throw new RenException(uploadResult.getCode(), uploadResult.getMsg());
}
files.add(uploadResult.getData().getUrl());
}
if (CollectionUtils.isNotEmpty(files)) {
String all = String.join(StrConstant.COMMA, files);
platformFileDTO.setTopicVideos(all);
}
}
if (CollectionUtils.isNotEmpty(topicAttachment.getData().getDocList())) {
List<String> files = new ArrayList<>();
for (TopicFileResultDTO item : topicAttachment.getData().getDocList()) {
Result<MultipartFile> multipartFileResult =
HttpClientManager.getInstance().getFileItem(item.getUrl(), UUID.randomUUID().toString().replace("-", ""));
if (!multipartFileResult.success()) {
throw new RenException(multipartFileResult.getCode(), multipartFileResult.getMsg());
}
Result<UploadFileResultDTO> uploadResult = epmetThirdOpenFeignClient.uploadFile(multipartFileResult.getData(), uploadFileFormDTO);
if (!uploadResult.success()) {
throw new RenException(uploadResult.getCode(), uploadResult.getMsg());
}
files.add(uploadResult.getData().getUrl());
}
if (CollectionUtils.isNotEmpty(files)) {
String all = String.join(StrConstant.COMMA, files);
platformFileDTO.setTopicDocs(all);
}
}
ProjectDetailDTO projectDetailDTO = ConvertUtils.sourceToTarget(issueDetail.getData(), ProjectDetailDTO.class);
projectDetailDTO.setTopicContent(issueDetail.getData().getTopicInfo().getTopicContent());
projectDetailDTO.setTopicPublisher(issueDetail.getData().getTopicInfo().getTopicPublisher());
@ -2189,7 +2345,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
processListV2FormDTO.setProjectId(formDTO.getProjectId());
List<ProcessListV2ResultDTO> processList = projectTraceService.processListV2(processListV2FormDTO);
applyAssistFormDTO.setDetail(getDetail(projectDetailDTO, projectDetailResultDTO, processList));
applyAssistFormDTO.setDetail(getDetail(projectDetailDTO, projectDetailResultDTO, processList, platformFileDTO));
applyAssistFormDTO.setDetailAddress(projectDetailDTO.getBelongsGridName());
applyAssistFormDTO.setSource("党建引领");
applyAssistFormDTO.setNotifyUrl("/gov/project/project/platformcallback");
@ -2285,7 +2441,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
//TODO 保存附件
}
private String getDetail(ProjectDetailDTO sourceDTO, ProjectDetailResultDTO projectDetail, List<ProcessListV2ResultDTO> processList) {
private String getDetail(ProjectDetailDTO sourceDTO, ProjectDetailResultDTO projectDetail, List<ProcessListV2ResultDTO> processList, PlatformFileDTO platformFileDTO) {
String detail = "";
detail = detail.concat("项目来源\n");
if (null == sourceDTO.getTopicContent()) {
@ -2296,16 +2452,27 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
sourceDTO.setPhotoList(new ArrayList<>());
}
String source = "议题标题:" + sourceDTO.getIssueTitle() + "\n" +
"针对话题\n" + (null == sourceDTO.getTopicContent()?"":sourceDTO.getTopicContent()) + "\n" +
"话题图片\n" + Joiner.on(StrConstant.COMMA).join(sourceDTO.getPhotoList()) + "\n" +
"建议采用如下处理方式\n" + sourceDTO.getIssueSuggestion() + "\n" +
"针对话题\n" + (null == sourceDTO.getTopicContent()?"":sourceDTO.getTopicContent()) + "\n";
if (StringUtils.isNotEmpty(platformFileDTO.getTopicImages())) {
source = source + "话题图片:" + platformFileDTO.getTopicImages() + "\n";
}
if (StringUtils.isNotEmpty(platformFileDTO.getTopicVoices())) {
source = source + "话题语音:" + platformFileDTO.getTopicVoices() + "\n";
}
if (StringUtils.isNotEmpty(platformFileDTO.getTopicVideos())) {
source = source + "话题视频:" + platformFileDTO.getTopicVideos() + "\n";
}
if (StringUtils.isNotEmpty(platformFileDTO.getTopicDocs())) {
source = source + "话题文档:" + platformFileDTO.getTopicDocs() + "\n";
}
source = source + "建议采用如下处理方式\n" + sourceDTO.getIssueSuggestion() + "\n" +
"所属网格:" + sourceDTO.getBelongsGridName() + "\n" +
"话题发表人:" + sourceDTO.getTopicPublisher() + sourceDTO.getTopicPublisherMobile() + "\n" +
"议题发表人:" + sourceDTO.getIssueInitiator() + sourceDTO.getIssuePublisherMobile() + "\n" +
"话题发表时间:" + DateUtils.formatTimestamp(sourceDTO.getTopicPublishTime(), DateUtils.DATE_TIME_PATTERN);
detail = detail.concat(source);
detail = detail.concat("\n项目详情\n");
detail = "项目标题:" +projectDetail.getProjectTitle() + "\n" +
detail = detail + "项目标题:" +projectDetail.getProjectTitle() + "\n" +
"项目方案::\n" + projectDetail.getPublicReply() + "\n" +
"内部备注:\n" + projectDetail.getInternalRemark() + "\n" +
"当前处理部门:\n";
@ -2317,12 +2484,11 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
for (ProcessListV2ResultDTO item : processList) {
String process = "【" + item.getProcessName() + "】\n" +
DateUtils.formatTimestamp(item.getProcessTime(), DateUtils.DATE_TIME_PATTERN) + "\n" +
"处理部门:" + item.getProcessName() + "\n" +
"处理部门:" + item.getDepartmentName() + "\n" +
"说明:" + item.getPublicReply() + "\n";
//TODO 上传图片
detail = detail + process;
}
System.out.println(detail);
return detail;

9
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java

@ -208,4 +208,13 @@ public interface ResiGroupOpenFeignClient {
**/
@PostMapping("/resi/group/topic/gettopicbyid/{topicId}")
Result<ResiTopicDTO> getTopicById(@PathVariable("topicId") String topicId);
/**
* @param formDTO
* @return
* @Author sun
* @Description 获取话题附件信息
**/
@PostMapping(value = "/resi/group/topic/topicattachmentlist")
Result<TopicAttachmentResultDTO> topicAttachmentList(@RequestBody TopicAttachmentFormDTO formDTO);
}

Loading…
Cancel
Save