Browse Source

上报网格化平台图片压缩、事件-议题,议题-项目,话题-议题校验唯一

dev
尹作梅 6 years ago
parent
commit
6bee47bafb
  1. 5
      esua-epdc/epdc-commons/epdc-commons-tools/pom.xml
  2. 154
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/CompressImgUtils.java
  3. 15
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java
  4. 8
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java
  5. 60
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java
  6. 30
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/OssFeignClient.java
  7. 22
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/OssFeignClientFallback.java
  8. 39
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java
  9. 225
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java
  10. 12
      esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/EventFeignClient.java
  11. 5
      esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/fallback/EventFeignClientFallback.java
  12. 6
      esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/topic/service/impl/TopicServiceImpl.java
  13. 1
      esua-epdc/epdc-module/epdc-oss/epdc-oss-server/pom.xml
  14. 33
      esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java
  15. 22
      esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/OssService.java
  16. 52
      esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/impl/OssServiceImpl.java

5
esua-epdc/epdc-commons/epdc-commons-tools/pom.xml

@ -107,6 +107,11 @@
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
</dependencies>
<build>

154
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/CompressImgUtils.java

@ -0,0 +1,154 @@
package com.elink.esua.epdc.commons.tools.utils;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.lang3.StringUtils;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* @Description 压缩图片工具类
* @Author yinzuomei
* @Date 2020/2/27 15:48
*/
public class CompressImgUtils {
/**
* @param imgUrl
* @return long 字节大小
* @Author yinzuomei
* @Description 获取网络文件大小
* @Date 2020/2/27 15:52
**/
public static long getFileLength(String imgUrl) {
if (StringUtils.isBlank(imgUrl)) {
return 0L;
}
HttpURLConnection conn = null;
try {
URL url = new URL(imgUrl);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("HEAD");
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows 7; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36 YNoteCef/5.8.0.1 (Windows)");
return (long) conn.getContentLength();
} catch (IOException e) {
e.printStackTrace();
return 0L;
} finally {
conn.disconnect();
}
}
/**
* @param imgUrl
* @return byte[]
* @Author yinzuomei
* @Description 根据图片地址压缩图片
* @Date 2020/2/27 16:44
**/
public static byte[] compressImg(String imgUrl) {
byte[] afterJyBytes = new byte[0];
URL url = null;
try {
url = new URL(imgUrl);
System.out.println(url.getFile());
DataInputStream dataInputStream = new DataInputStream(url.openStream());
byte[] bytes = toByteArray(dataInputStream);
afterJyBytes = commpressPicCycle(bytes, 1024, 0.5);
// 输出到文件
/*File desFile = new File("D:\\testcompressImg\\" + System.currentTimeMillis() + ".jpg");
FileOutputStream fos = new FileOutputStream(desFile);
fos.write(afterJyBytes);
fos.close();*/
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return afterJyBytes;
}
/**
* inputstream输入流转换成byte[]字节数组
*
* @param input
* @return byte[]
* @author yinzuomei
* @date 2020/2/27 16:09
*/
public static byte[] toByteArray(InputStream input) throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[1024 * 4];
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
}
return output.toByteArray();
}
/**
* 压缩图片返回字节数组
*
* @param bytes 原图片字节数组
* @param desFileSize 指定图片大小,单位 kb
* @param accuracy 精度,递归压缩的比率,建议小于0.9
* @return byte[]
*/
public static byte[] commpressPicCycle(byte[] bytes, long desFileSize, double accuracy) throws IOException {
long fileSize = bytes.length;
System.out.println("=====fileSize======== " + fileSize);
// 判断图片大小是否小于指定图片大小
if (fileSize <= desFileSize * 1024) {
return bytes;
}
//计算宽高
BufferedImage bim = ImageIO.read(new ByteArrayInputStream(bytes));
int imgWidth = bim.getWidth();
int imgHeight = bim.getHeight();
System.out.println("宽度imgWidth=" + imgWidth + ";高度imgHeight=" + imgHeight);
int desWidth = new BigDecimal(imgWidth).multiply(new BigDecimal(accuracy)).intValue();
int desHeight = new BigDecimal(imgHeight).multiply(new BigDecimal(accuracy)).intValue();
System.out.println("转换后宽度desWidth=" + desWidth + ";高度desHeight=" + desHeight);
ByteArrayOutputStream baos = new ByteArrayOutputStream(); //字节输出流(写入到内存)
Thumbnails.of(new ByteArrayInputStream(bytes)).size(desWidth, desHeight).outputQuality(accuracy).toOutputStream(baos);
//如果不满足要求,递归直至满足要求
return commpressPicCycle(baos.toByteArray(), desFileSize, accuracy);
}
/**
* @param imgUrl eg:https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/esua-epdc/test/20200226/95dd03ace7d04627a297abae7339de97.jpg
* @param path 保存路径eg:d:/pic.jpg
* @return void
* @Author yinzuomei
* @Description 根据图片url下载图片到本地地址
* @Date 2020/2/27 15:50
**/
public static void downloadPicture(String imgUrl, String path) {
try {
URL url = new URL(imgUrl);
DataInputStream dataInputStream = new DataInputStream(url.openStream());
FileOutputStream fileOutputStream = new FileOutputStream(new File(path));
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = dataInputStream.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
fileOutputStream.write(output.toByteArray());
dataInputStream.close();
fileOutputStream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

15
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java

@ -26,10 +26,10 @@ import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup;
import com.elink.esua.epdc.dto.events.EpdcRejectEventDetailDTO;
import com.elink.esua.epdc.dto.events.EpdcRejectEventsDTO;
import com.elink.esua.epdc.dto.events.EpdcEventsDTO;
import com.elink.esua.epdc.dto.events.EpdcEventsDetailDTO;
import com.elink.esua.epdc.dto.events.EpdcRejectEventDetailDTO;
import com.elink.esua.epdc.dto.events.EpdcRejectEventsDTO;
import com.elink.esua.epdc.dto.events.form.EpdcEventsReviewFormDTO;
import com.elink.esua.epdc.modules.events.excel.EpdcEventsExcel;
import com.elink.esua.epdc.modules.events.service.EpdcEventsService;
@ -160,4 +160,15 @@ public class EpdcEventsController {
return new Result();
}
/**
* @param topicId 话题id
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.lang.Boolean>
* @Author yinzuomei
* @Description 校验话题是否已经转为议题
* @Date 2020/2/28 12:06
**/
@GetMapping("checkTopicToIssueFlag/{topicId}")
public Result<Boolean> checkTopicToIssueFlag(@PathVariable("topicId") String topicId) {
return epdcEventsService.checkTopicToIssueFlag(topicId);
}
}

8
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java

@ -208,4 +208,12 @@ public interface EpdcEventsService extends BaseService<EpdcEventsEntity> {
*/
Result<IssueDTO> topicToIssue(EpdcEventSubmitFormDTO dto);
/**
* @param topicId 话题id
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.lang.Boolean>
* @Author yinzuomei
* @Description 校验话题是否已经转为议题
* @Date 2020/2/28 12:06
**/
Result<Boolean> checkTopicToIssueFlag(String topicId);
}

60
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java

@ -56,6 +56,7 @@ import com.elink.esua.epdc.modules.events.service.EpdcEventsService;
import com.elink.esua.epdc.modules.events.service.ImgService;
import com.elink.esua.epdc.modules.feign.AdminFeignClient;
import com.elink.esua.epdc.modules.feign.GroupFeignClient;
import com.elink.esua.epdc.modules.issue.dao.IssueDao;
import com.elink.esua.epdc.modules.issue.entity.IssueEntity;
import com.elink.esua.epdc.modules.issue.entity.IssueHandleEntity;
import com.elink.esua.epdc.modules.issue.service.IssueHandleService;
@ -66,9 +67,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
@ -107,6 +105,9 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
@Autowired
private IssueOverseeResultsTask issueOverseeResultsTask;
@Autowired
private IssueDao issueDao;
@Override
public PageData<EpdcEventsDTO> listOfPendingReviewEvents(Map<String, Object> params) {
IPage<EpdcEventsDTO> page = getPage(params);
@ -182,16 +183,19 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
@Override
@Transactional(rollbackFor = Exception.class)
public Result eventReview(EpdcEventsReviewFormDTO dto) {
if(EventIssueItemState.EVENT_REVIEW_PASS == dto.getEventState()
if (EventIssueItemState.EVENT_REVIEW_PASS == dto.getEventState()
&& (dto.getCategoryId() == null
|| "".equals(dto.getCategoryId()))) {
|| "".equals(dto.getCategoryId()))) {
return new Result().error("分类信息不能为空");
}
if (checkAlreadyReviewed(dto.getId())) {
return new Result().error("议题已存在");
}
EpdcEventsEntity entity = new EpdcEventsEntity();
entity.setId(dto.getId());
entity.setEventState(dto.getEventState());
// 初始化分类
if(dto.getCategoryId() != null && !"".equals(dto.getCategoryId())){
if (dto.getCategoryId() != null && !"".equals(dto.getCategoryId())) {
EventsCategoryDTO categoryInfo = this.initCategoryInfo(dto.getCategoryId());
entity.setCategoryCode(categoryInfo.getCategoryCode());
entity.setFirstCategoryCode(categoryInfo.getFirstCategoryCode());
@ -259,11 +263,27 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
}
/**
*
* @param eventId 事件id
* @return boolean
* @Author yinzuomei
* @Description 根据eventId查询epdc_issue表如果存在有效记录返回true,不存在返回false.确保事件转议题一对一唯一性
* @Date 2020/2/28 11:41
**/
private boolean checkAlreadyReviewed(String eventId) {
QueryWrapper<IssueEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(eventId), "EVENT_ID", eventId);
List<IssueEntity> list = issueDao.selectList(wrapper);
if (null == list || list.size() == 0) {
return false;
}
return true;
}
/**
* 话题转议题审核回调
*
* @params [topicId, dto]
* @return void
* @params [topicId, dto]
* @author liuchuang
* @since 2019/11/11 10:28
*/
@ -482,12 +502,22 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
return new Result<IssueDTO>().ok(issueDTO);
}
@Override
public Result<Boolean> checkTopicToIssueFlag(String topicId) {
QueryWrapper<EpdcEventsEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(topicId), "TOPIC_ID", topicId);
List<EpdcEventsEntity> list = baseDao.selectList(wrapper);
if (null == list || list.size() == 0) {
return new Result<Boolean>().ok(false);
}
return new Result<Boolean>().ok(true);
}
/**
*
* 初始化分类信息
*
* @params [categoryId]
* @return com.elink.esua.epdc.dto.events.EventsCategoryDTO
* @params [categoryId]
* @author liuchuang
* @since 2019/11/29 13:51
*/
@ -523,14 +553,14 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
return resultDto;
}
/**
/**
* @Description: 议题待回应事件菜单 审核通过不通过短信通知 议题发起人
* @Param: [dto]
* @Param: [userMobiles] 手机号列表
* @return: void
* @Author: zy
* @Date: 2020-01-08
*/
* @return: void
* @Author: zy
* @Date: 2020-01-08
*/
private void issueSmsNotification(EpdcEventsReviewFormDTO dto, List<String> userMobiles){
// 审核操作发送短信
SmsNoticeFormDTO sms = new SmsNoticeFormDTO();

30
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/OssFeignClient.java

@ -0,0 +1,30 @@
package com.elink.esua.epdc.modules.feign;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.modules.feign.fallback.OssFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
/**
* 文件对象模块
*
* @Author yinzuomei
* @Date 2020/02/27 18:24
*/
@FeignClient(name = ServiceConstant.EPDC_OSS_SERVER, fallback = OssFeignClientFallback.class)
public interface OssFeignClient {
/**
* 压缩图片并上传返回新的url
*
* @Params: [base64]
* @Return: com.elink.esua.epdc.commons.tools.utils.Result<java.lang.String>
* @Author: yinzuomei
* @Date: 2019/9/11 17:17
*/
@PostMapping(value = "oss/file/compressImg")
Result<List<String>> compressImg(List<String> imgUrlList);
}

22
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/OssFeignClientFallback.java

@ -0,0 +1,22 @@
package com.elink.esua.epdc.modules.feign.fallback;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.ModuleUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.modules.feign.OssFeignClient;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author yinzuomei
* @date 2020/02/27 18:24
*/
@Component
public class OssFeignClientFallback implements OssFeignClient {
@Override
public Result<List<String>> compressImg(List<String> imgUrlList) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_OSS_SERVER, "compressImg", imgUrlList);
}
}

39
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java

@ -39,7 +39,10 @@ import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO;
import com.elink.esua.epdc.dto.events.EpdcEventsCommentsDTO;
import com.elink.esua.epdc.dto.events.result.EventAppDetailResultDTO;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.dto.issue.*;
import com.elink.esua.epdc.dto.issue.IssueContentDetailDTO;
import com.elink.esua.epdc.dto.issue.IssueDTO;
import com.elink.esua.epdc.dto.issue.IssueWaitHandleDetailDTO;
import com.elink.esua.epdc.dto.issue.IssueWaitHandleOrClosedDTO;
import com.elink.esua.epdc.dto.issue.form.*;
import com.elink.esua.epdc.dto.issue.result.*;
import com.elink.esua.epdc.dto.item.result.ItemHandleProgressResultDTO;
@ -54,6 +57,7 @@ import com.elink.esua.epdc.modules.issue.entity.IssueEntity;
import com.elink.esua.epdc.modules.issue.entity.IssueHandleEntity;
import com.elink.esua.epdc.modules.issue.service.IssueHandleService;
import com.elink.esua.epdc.modules.issue.service.IssueService;
import com.elink.esua.epdc.modules.item.dao.ItemDao;
import com.elink.esua.epdc.modules.item.entity.ItemDeptEntity;
import com.elink.esua.epdc.modules.item.entity.ItemEntity;
import com.elink.esua.epdc.modules.item.entity.ItemHandleProcessEntity;
@ -106,6 +110,9 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
@Autowired
private IssueOverseeResultsTask issueOverseeResultsTask;
@Autowired
private ItemDao itemDao;
@Override
public PageData<IssueWaitHandleOrClosedDTO> listOfIssues(Map<String, Object> params) {
IPage<IssueWaitHandleOrClosedDTO> page = getPage(params);
@ -211,6 +218,9 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
updateById(issueEntity);
// 转项目
if (EventIssueItemState.ISSUE_CHANGE_TO_ITEM == dto.getState()) {
if (checkAlreadyChangeToItem(dto.getId())) {
return new Result().error("项目已存在");
}
informationFormDTO.setTitle(EventsNoticeConstant.NOTICE_ISSUE_CHANGE_TO_ITEM);
informationFormDTO.setBusinessType(EventsNoticeConstant.NOTICE_BUSINESS_TYPE_ITEM);
// 插入项目表
@ -267,6 +277,23 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
return new Result();
}
/**
* @param issueId 议题id
* @return boolean
* @Author yinzuomei
* @Description 根据议题id项目表如果存在有效记录返回true,否则返回false,确保议题-转项目一对一唯一性
* @Date 2020/2/28 11:51
**/
private boolean checkAlreadyChangeToItem(String issueId) {
QueryWrapper<ItemEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(issueId), "ISSUE_ID", issueId);
List<ItemEntity> list = itemDao.selectList(wrapper);
if (null == list || list.size() == 0) {
return false;
}
return true;
}
@Override
public IssueContentDetailDTO getIssueContentDetail(String issueId) {
// 议题详情
@ -479,13 +506,13 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
return baseDao.selectListIssueProgress(issueId);
}
/**
/**
* @Description: 议题待处理事件 议题转项目结果短信通知 议题发起人
* @Param: [userId]
* @return: void
* @Author: zy
* @Date: 2020-01-08
*/
* @return: void
* @Author: zy
* @Date: 2020-01-08
*/
private void issueSmsNotification(String userMobiles){
List<String> list = new ArrayList<>();
list.add(userMobiles);

225
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java

@ -30,10 +30,7 @@ import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.security.user.SecurityUser;
import com.elink.esua.epdc.commons.tools.security.user.UserDetail;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.DateUtils;
import com.elink.esua.epdc.commons.tools.utils.GPSUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.utils.*;
import com.elink.esua.epdc.constant.*;
import com.elink.esua.epdc.constants.MenuCodeConstant;
import com.elink.esua.epdc.dto.CompleteDeptDTO;
@ -66,13 +63,12 @@ import com.elink.esua.epdc.modules.events.entity.ImgEntity;
import com.elink.esua.epdc.modules.events.service.EpdcEventsService;
import com.elink.esua.epdc.modules.events.service.ImgService;
import com.elink.esua.epdc.modules.feign.AdminFeignClient;
import com.elink.esua.epdc.modules.feign.OssFeignClient;
import com.elink.esua.epdc.modules.interfacelog.entity.InterfaceLogEntity;
import com.elink.esua.epdc.modules.interfacelog.service.InterfaceLogService;
import com.elink.esua.epdc.modules.issue.service.IssueService;
import com.elink.esua.epdc.modules.item.dao.GridPlatformHandleLogDao;
import com.elink.esua.epdc.modules.item.dao.ItemDao;
import com.elink.esua.epdc.modules.item.dao.ItemGridPlatformDao;
import com.elink.esua.epdc.modules.item.dao.ItemHandleProcessDao;
import com.elink.esua.epdc.modules.item.entity.*;
import com.elink.esua.epdc.modules.item.service.*;
import org.apache.commons.lang3.StringUtils;
@ -143,12 +139,10 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
private ItemGridPlatformDao itemGridPlatformDao;
@Autowired
private ItemHandleProcessDao itemHandleProcessDao;
@Autowired
private GridPlatformHandleLogDao gridPlatformHandleLogDao;
private IssueOverseeResultsTask issueOverseeResultsTask;
@Autowired
private IssueOverseeResultsTask issueOverseeResultsTask;
private OssFeignClient ossFeignClient;
@Override
public PageData<ItemDTO> page(Map<String, Object> params) {
@ -958,93 +952,126 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
* @Date 2019/12/25 13:14
**/
private SendInputInfoFormDto packageReportEntity(ItemEntity itemEntity) throws Exception {
UserDetail user = SecurityUser.getUser();
SendInputInfoFormDto formDto = new SendInputInfoFormDto();
// 案件来源
formDto.setInfoSourceID(CommonConstants.INFO_SOURCE_ID);
// 渠道来源
formDto.setReportDept(CommonConstants.REPORT_DEPT);
// 案件属性
formDto.setInfoTypeID(CommonConstants.INFO_TYPE_ID);
// 案件大类
formDto.setInfoBC(CommonConstants.INFO_BC);
// 案件小类
formDto.setInfoSC(CommonConstants.INFO_SC);
// 案件子类
formDto.setInfoZC(CommonConstants.INFO_ZC);
// 发生地址
formDto.setStandardAddress(itemEntity.getIssueAddress());
// 问题描述
UserDetail user = SecurityUser.getUser();
SendInputInfoFormDto formDto = new SendInputInfoFormDto();
// 案件来源
formDto.setInfoSourceID(CommonConstants.INFO_SOURCE_ID);
// 渠道来源
formDto.setReportDept(CommonConstants.REPORT_DEPT);
// 案件属性
formDto.setInfoTypeID(CommonConstants.INFO_TYPE_ID);
// 案件大类
formDto.setInfoBC(CommonConstants.INFO_BC);
// 案件小类
formDto.setInfoSC(CommonConstants.INFO_SC);
// 案件子类
formDto.setInfoZC(CommonConstants.INFO_ZC);
// 发生地址
formDto.setStandardAddress(itemEntity.getIssueAddress());
// 问题描述
formDto.setDescription(itemEntity.getItemContent());// 测试999勿删谢谢
// 反映人
formDto.setReportPerson(itemEntity.getNickName());// itemEntity.getNickName()测试人员
// 联系方式
formDto.setContactMode(itemEntity.getMobile());
double[] gps= GPSUtils.gcj02_To_Gps84(itemEntity.getIssueLatitude(),itemEntity.getIssueLongitude());
// 坐标X
// 反映人
formDto.setReportPerson(itemEntity.getNickName());// itemEntity.getNickName()测试人员
// 联系方式
formDto.setContactMode(itemEntity.getMobile());
double[] gps = GPSUtils.gcj02_To_Gps84(itemEntity.getIssueLatitude(), itemEntity.getIssueLongitude());
// 坐标X
formDto.setCoordX(new BigDecimal(gps[1]).setScale(15, BigDecimal.ROUND_HALF_UP));
// 坐标Y
// 坐标Y
formDto.setCoordY(new BigDecimal(gps[0]).setScale(15, BigDecimal.ROUND_HALF_UP));
// 监督员编号
formDto.setKeepersn("");
// 操作时间
formDto.setInsertTime(new Date());
// 操作人
formDto.setInsertUser(user.getRealName());//
// 外系统编号
formDto.setHotLinesn(itemEntity.getId());
// 先查询网格对应街道id
Result<CompleteDeptDTO> completeDeptDTOResult = adminFeignClient.getCompleteDept(itemEntity.getGridId());
if (!completeDeptDTOResult.success()) {
throw new Exception("根据网格ID获取所有上级机构信息失败" + completeDeptDTOResult.getMsg());
}
// 根据街道id查询对应平台的deptCode、streetCode
Result<DeptGridPlatformDTO> deptGridPlatformDTOResult = adminFeignClient.getDeptGridPlatformDTO(completeDeptDTOResult.getData().getStreetId().toString());
if (!deptGridPlatformDTOResult.success() || null == deptGridPlatformDTOResult.getData()) {
throw new Exception("根据街道查询平台部门信息失败" + deptGridPlatformDTOResult.getMsg());
}
//外系统编码 必填!!!!!!!
formDto.setDeptCode(deptGridPlatformDTOResult.getData().getDeptCode());// 130099
// 街道编码!!!!!!!!!!!!
formDto.setStreetCode(deptGridPlatformDTOResult.getData().getStreetCode());
// 网格编码
formDto.setGridCode(null);
//查询图片列表
QueryWrapper<ImgEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(itemEntity.getEventId()), "REFERENCE_ID", itemEntity.getEventId());
List<ImgEntity> imageList = imgDao.selectList(wrapper);
if (null != imageList && !imageList.isEmpty()) {
String url = null;
String filename = null;
ReportFile reportFile = null;
List<ReportFile> reportFiles = new ArrayList<>();
for (ImgEntity image : imageList) {
url = image.getImgUrl();
if (org.apache.commons.lang.StringUtils.isNotBlank(url)) {
filename = url.substring(url.lastIndexOf(CommonConstants.CHAR_ASCII_47) + CommonConstants.NUMBER_ONE);
reportFile = new ReportFile();
reportFile.setName(filename);
reportFile.setUrl(url);
reportFile.setBase64string("");
reportFiles.add(reportFile);
}
}
ImageFile imageFile = new ImageFile();
imageFile.setReportFileList(reportFiles);
formDto.setImageFile(imageFile);
}
return formDto;
}
// 监督员编号
formDto.setKeepersn("");
// 操作时间
formDto.setInsertTime(new Date());
// 操作人
formDto.setInsertUser(user.getRealName());//
// 外系统编号
formDto.setHotLinesn(itemEntity.getId());
// 先查询网格对应街道id
Result<CompleteDeptDTO> completeDeptDTOResult = adminFeignClient.getCompleteDept(itemEntity.getGridId());
if (!completeDeptDTOResult.success()) {
throw new Exception("根据网格ID获取所有上级机构信息失败" + completeDeptDTOResult.getMsg());
}
// 根据街道id查询对应平台的deptCode、streetCode
Result<DeptGridPlatformDTO> deptGridPlatformDTOResult = adminFeignClient.getDeptGridPlatformDTO(completeDeptDTOResult.getData().getStreetId().toString());
if (!deptGridPlatformDTOResult.success() || null == deptGridPlatformDTOResult.getData()) {
throw new Exception("根据街道查询平台部门信息失败" + deptGridPlatformDTOResult.getMsg());
}
//外系统编码 必填!!!!!!!
formDto.setDeptCode(deptGridPlatformDTOResult.getData().getDeptCode());// 130099
// 街道编码!!!!!!!!!!!!
formDto.setStreetCode(deptGridPlatformDTOResult.getData().getStreetCode());
// 网格编码
formDto.setGridCode(null);
formDto.setImageFile(getImageFile(itemEntity.getEventId()));
return formDto;
}
/**
* @param gridDto
* @param handleProcessEntity
* @return void
* @Author yinzuomei
* @Description
* @Date 2019/12/25 15:29
**/
// 组装事件图片
private ImageFile getImageFile(String eventId) {
ImageFile imageFile = new ImageFile();
//查询图片列表
QueryWrapper<ImgEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(eventId), "REFERENCE_ID", eventId);
List<ImgEntity> imageList = imgDao.selectList(wrapper);
if (null != imageList && !imageList.isEmpty()) {
String url = null;
String filename = null;
ReportFile reportFile = null;
List<ReportFile> reportFiles = new ArrayList<>();
List<String> imgUrlList = this.getUploadDTOList(imageList);
for (String imgUrl : imgUrlList) {
url = imgUrl;
if (org.apache.commons.lang.StringUtils.isNotBlank(url)) {
filename = url.substring(url.lastIndexOf(CommonConstants.CHAR_ASCII_47) + CommonConstants.NUMBER_ONE);
reportFile = new ReportFile();
reportFile.setName(filename);
reportFile.setUrl(url);
reportFile.setBase64string("");
reportFiles.add(reportFile);
}
}
imageFile.setReportFileList(reportFiles);
}
return imageFile;
}
//压缩图片并上传到服务器,得到新的地址
private List<String> getUploadDTOList(List<ImgEntity> imageList) {
List<String> imgUrlList = new ArrayList<>();
List<String> notNeedCompressImgUrlList = new ArrayList<>();
List<String> needCompressImgUrlList = new ArrayList<>();
for (ImgEntity image : imageList) {
long imgLength = CompressImgUtils.getFileLength(image.getImgUrl());
if (imgLength > 1024 * 1024) {
needCompressImgUrlList.add(image.getImgUrl());
} else {
notNeedCompressImgUrlList.add(image.getImgUrl());
}
}
if (null != needCompressImgUrlList && needCompressImgUrlList.size() > 0) {
//如果图片大于1M则需要压缩
Result<List<String>> result = ossFeignClient.compressImg(needCompressImgUrlList);
if (!result.success()) {
throw new RenException("图片压缩异常" + result.getMsg());
}
if (null == result.getData() || result.getData().size() == 0) {
throw new RenException("图片压缩失败" + result.getMsg());
}
imgUrlList.addAll(result.getData());
}
imgUrlList.addAll(notNeedCompressImgUrlList);
return imgUrlList;
}
/**
* @param gridDto
* @param handleProcessEntity
* @return void
* @Author yinzuomei
* @Description
* @Date 2019/12/25 15:29
**/
private void saveItemGridPlatformInfo(GridDto gridDto, ItemHandleProcessEntity handleProcessEntity) {
UserDetail user = SecurityUser.getUser();
ItemGridPlatformEntity itemGridPlatformEntity = new ItemGridPlatformEntity();
@ -1220,14 +1247,14 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
}
}
/**
/**
* @Description: 某三种情况下 查询当前项目下的上级部门id做去重处理向部门下的所有人员发送短信
* @Description: 1.街道做吹哨, 做回应处理; 2.反馈回应; 3.上报网格化平台
* @Param: [dto]
* @return: void
* @Author: zy
* @Date: 2020-01-14
*/
* @Param: [dto]
* @return: void
* @Author: zy
* @Date: 2020-01-14
*/
private void superiorDeptSmsHandle(ItemHandleSubmitFormDTO dto){
UserDetail user = SecurityUser.getUser(); //获取当前登录人信息
List<Long> deptId = new ArrayList<>();

12
esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/EventFeignClient.java

@ -8,6 +8,8 @@ import com.elink.esua.epdc.dto.issue.IssueDTO;
import com.elink.esua.epdc.modules.feign.fallback.EventFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
/**
@ -43,4 +45,14 @@ public interface EventFeignClient {
*/
@PostMapping(value = "events/eventcomment/receive", consumes = MediaType.APPLICATION_JSON_VALUE)
Result receiveTopicCommentAndAttitude(EpdcCommentsAndAttitudeFromTopicFormDTO formDto);
/**
* @param topicId 话题id
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.lang.Boolean>
* @Author yinzuomei
* @Description 校验话题是否已经转为议题
* @Date 2020/2/28 12:02
**/
@GetMapping("events/epdcevents/checkTopicToIssueFlag/{topicId}")
Result<Boolean> checkTopicToIssueFlag(@PathVariable("topicId") String topicId);
}

5
esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/fallback/EventFeignClientFallback.java

@ -25,4 +25,9 @@ public class EventFeignClientFallback implements EventFeignClient {
public Result receiveTopicCommentAndAttitude(EpdcCommentsAndAttitudeFromTopicFormDTO formDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_EVENTS_SERVER, "receiveTopicCommentAndAttitude", formDto);
}
@Override
public Result<Boolean> checkTopicToIssueFlag(String topicId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_EVENTS_SERVER, "checkTopicToIssueFlag", topicId);
}
}

6
esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/topic/service/impl/TopicServiceImpl.java

@ -423,7 +423,11 @@ public class TopicServiceImpl extends BaseServiceImpl<TopicDao, TopicEntity> imp
if (!TopicStateEnum.TOPIC_STATE_IN_CONVERSATION.getValue().equals(topicDto.getState())) {
return new Result().error("当前话题不是讨论中状态,不可以转为议题");
}
// 校验话题是否已经转为议题
Result<Boolean> result = eventFeignClient.checkTopicToIssueFlag(topicDto.getId());
if (result.getData()) {
return new Result().error("当前话题已经转为议题");
}
return new Result();
}

1
esua-epdc/epdc-module/epdc-oss/epdc-oss-server/pom.xml

@ -173,6 +173,7 @@
<nacos.register-enabled>false</nacos.register-enabled>
<nacos.server-addr>47.104.224.45:8848</nacos.server-addr>
<nacos.ip></nacos.ip>
<fastdfs.server-addr></fastdfs.server-addr>
</properties>
</profile>

33
esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java

@ -10,6 +10,8 @@ package com.elink.esua.epdc.controller;
import com.elink.esua.epdc.cloud.AbstractCloudStorageService;
import com.elink.esua.epdc.cloud.AliyunCloudStorageService;
import com.elink.esua.epdc.cloud.CloudStorageConfig;
import com.elink.esua.epdc.cloud.OssFactory;
import com.elink.esua.epdc.commons.tools.annotation.LogOperation;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.page.PageData;
@ -18,18 +20,16 @@ import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.commons.tools.validator.group.AliyunGroup;
import com.elink.esua.epdc.commons.tools.validator.group.QcloudGroup;
import com.elink.esua.epdc.commons.tools.validator.group.QiniuGroup;
import com.elink.esua.epdc.dto.UploadDTO;
import com.elink.esua.epdc.dto.UploadFormDTO;
import com.elink.esua.epdc.dto.UploadToOssDTO;
import com.elink.esua.epdc.entity.OssEntity;
import com.elink.esua.epdc.enums.OssTypeEnum;
import com.elink.esua.epdc.exception.ModuleErrorCode;
import com.elink.esua.epdc.remote.ParamsRemoteService;
import com.elink.esua.epdc.service.OssService;
import com.elink.esua.epdc.utils.ModuleConstant;
import com.google.gson.Gson;
import com.elink.esua.epdc.cloud.CloudStorageConfig;
import com.elink.esua.epdc.cloud.OssFactory;
import com.elink.esua.epdc.dto.UploadDTO;
import com.elink.esua.epdc.enums.OssTypeEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FilenameUtils;
@ -42,6 +42,7 @@ import sun.misc.BASE64Decoder;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
@ -171,4 +172,28 @@ public class OssController {
return new Result().ok(url);
}
/**
* @param avatarUrl
* @return java.lang.String
* @Author yinzuomei
* @Description 上传微信头像
* @Date 2019/12/19 18:48
**/
@GetMapping("saveWeChatFaceImg")
public Result<UploadDTO> saveWeChatFaceImg(@RequestParam(value = "avatarUrl") String avatarUrl) {
return ossService.saveWeChatFaceImg(avatarUrl);
}
/**
* 压缩图片并上传
*
* @param imgUrlList 完整的访问链接
* @return void
* @author yinzuomei
* @date 2020/02/27
*/
@PostMapping("compressImg")
public Result<List<String>> compressImg(@RequestBody List<String> imgUrlList) {
return ossService.compressImg(imgUrlList);
}
}

22
esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/OssService.java

@ -8,8 +8,6 @@
package com.elink.esua.epdc.service;
import com.elink.esua.epdc.commons.mybatis.service.BaseService;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.mybatis.service.BaseService;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
@ -17,6 +15,7 @@ import com.elink.esua.epdc.dto.UploadDTO;
import com.elink.esua.epdc.entity.OssEntity;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
@ -49,4 +48,23 @@ public interface OssService extends BaseService<OssEntity> {
* @date 2019/12/10 17:23
*/
void download(String fileUrl, HttpServletResponse response);
/**
* @param fileUrl
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.UploadDTO>
* @Author yinzuomei
* @Description 上传微信头像
* @Date 2019/12/19 18:55
**/
Result<UploadDTO> saveWeChatFaceImg(String fileUrl);
/**
* 压缩图片并上传
*
* @param imgUrlList 完整的访问链接
* @return void
* @author yinzuomei
* @date 2020/02/27
*/
Result<List<String>> compressImg(List<String> imgUrlList);
}

52
esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/impl/OssServiceImpl.java

@ -10,15 +10,18 @@ package com.elink.esua.epdc.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.cloud.OssFactory;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.Constant;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.CompressImgUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dao.OssDao;
import com.elink.esua.epdc.dto.UploadDTO;
import com.elink.esua.epdc.entity.OssEntity;
import com.elink.esua.epdc.service.OssService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
@ -26,7 +29,9 @@ import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
@ -97,4 +102,51 @@ public class OssServiceImpl extends BaseServiceImpl<OssDao, OssEntity> implement
}
/**
* @param avatarUrl
* @return java.lang.String
* @Author yinzuomei
* @Description 上传微信头像
* @Date 2019/12/19 18:49
**/
@Override
public Result<UploadDTO> saveWeChatFaceImg(String avatarUrl) {
if (StringUtils.isBlank(avatarUrl)) {
return new Result<UploadDTO>().error("avatarUrl不能为空");
}
try {
//实例化url
URL url = new URL(avatarUrl);
//载入图片到输入流
DataInputStream dataInputStream = new DataInputStream(url.openStream());
int size = dataInputStream.available();
//上传文件
String fileUrl = OssFactory.build().uploadSuffix(dataInputStream, "jpg");
return this.afterUpload(fileUrl, size);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return new Result<UploadDTO>().error("上传微信头像异常");
}
@Override
public Result<List<String>> compressImg(List<String> imgUrlList) {
List<String> resultList = new ArrayList<>();
if (null == imgUrlList || 0 == imgUrlList.size()) {
return new Result<List<String>>().error("imgUrlList不能为空");
}
for (int i = 0; i < imgUrlList.size(); i++) {
String imgUrl = imgUrlList.get(i);
byte[] data = CompressImgUtils.compressImg(imgUrl);
//上传文件
String fileUrl = OssFactory.build().uploadSuffix(data, "jpg");
this.afterUpload(fileUrl, data.length);
resultList.add(fileUrl);
}
return new Result<List<String>>().ok(resultList);
}
}

Loading…
Cancel
Save