diff --git a/kn-common/pom.xml b/kn-common/pom.xml index 137f225..03a3c4b 100644 --- a/kn-common/pom.xml +++ b/kn-common/pom.xml @@ -29,6 +29,10 @@ blade-core-auto provided + + com.alibaba + easyexcel + org.springblade blade-core-tool diff --git a/kn-common/src/main/java/org/springblade/common/converter/DateConverter.java b/kn-common/src/main/java/org/springblade/common/converter/DateConverter.java new file mode 100644 index 0000000..8ef2a9d --- /dev/null +++ b/kn-common/src/main/java/org/springblade/common/converter/DateConverter.java @@ -0,0 +1,37 @@ +package org.springblade.common.converter; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * 日期类型转换器-easyexcel注解 + * @author liyuchen + * @date 2023/04/06 + */ +public class DateConverter implements Converter { + + private static final String PATTERN_YYYY_MM_DD = "yyyy-MM-dd HH:mm:ss"; + + @Override + public Class supportJavaTypeKey() { + return Converter.super.supportJavaTypeKey(); + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return Converter.super.supportExcelTypeKey(); + } + + @Override + public WriteCellData convertToExcelData(Date value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_YYYY_MM_DD); + String dateValue = sdf.format(value); + return new WriteCellData<>(dateValue); + } +} diff --git a/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/Hotspot.java b/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/Hotspot.java index 8cc6211..f08544a 100644 --- a/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/Hotspot.java +++ b/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/Hotspot.java @@ -1,5 +1,9 @@ package com.kening.vordm.entity; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -12,55 +16,67 @@ import java.util.Date; * 热点区域数据 * @TableName hotspot */ -@TableName(value ="hotspot") @Data +@HeadRowHeight(20) +@ContentRowHeight(20) +@TableName(value ="hotspot") public class Hotspot implements Serializable { /** * 数据自增列 */ @TableId + @ExcelIgnore private Long id; /** * 区域_中文 */ + @ExcelProperty(value = "areaCn",index=0) private String areaCn; /** * 区域_英文 */ + @ExcelProperty(value = "areaEn",index=1) private String areaEn; /** * 出现频次 */ + @ExcelProperty(value = "frequency",index=2) private Integer frequency; /** * 灾害id */ + @ExcelIgnore private Long disasterId; /** * 数据条目创建时间 */ + @ExcelIgnore private Date createTime; /** * 是否保留此条目,0为未审核,1为审核保留,2为审核不保留 */ + @ExcelIgnore private Integer status; /** * 管理人/审核人 */ + @ExcelIgnore private Long managerId; /** * 审核时间 */ + @ExcelIgnore private Date reviewTime; + @ExcelIgnore @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/MapServer.java b/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/MapServer.java index 4251db4..b7dc101 100644 --- a/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/MapServer.java +++ b/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/MapServer.java @@ -1,5 +1,7 @@ package com.kening.vordm.entity; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/News.java b/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/News.java index 93d641a..9b71af2 100644 --- a/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/News.java +++ b/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/News.java @@ -1,5 +1,9 @@ package com.kening.vordm.entity; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -10,62 +14,76 @@ import java.util.Date; /** * 新闻咨询数据表 + * @author Administrator * @TableName news */ -@TableName(value ="news") @Data +@HeadRowHeight(20) +@ContentRowHeight(20) +@TableName(value ="news") public class News implements Serializable { /** * 数据自增列 */ @TableId + @ExcelIgnore private Long id; /** * 新闻名称 */ + @ExcelProperty(value="title",index=0) private String title; /** * 新闻内容 */ + @ExcelProperty(value="content",index=1) private String content; /** * 新闻链接 */ + @ExcelIgnore private String link; /** * 新闻类型(baidu,bing)0-baidu中文 ,1-bing英文 */ + @ExcelIgnore private Integer type; /** * 灾害id */ + @ExcelIgnore private Long disasterId; /** * 数据条目创建时间 */ + @ExcelIgnore private Date createTime; /** * 是否保留此条目,0为未审核,1为审核保留,2为审核不保留 */ + @ExcelIgnore private Integer status; /** * 管理人/审核人 */ + @ExcelIgnore private Long managerId; /** * 审核时间 */ + @ExcelIgnore private Date reviewTime; + @ExcelIgnore @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/SocialMedia.java b/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/SocialMedia.java index 0e65414..7042bc0 100644 --- a/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/SocialMedia.java +++ b/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/SocialMedia.java @@ -1,9 +1,15 @@ package com.kening.vordm.entity; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import org.springblade.common.converter.DateConverter; import java.io.Serializable; import java.util.Date; @@ -12,110 +18,134 @@ import java.util.Date; * 社交媒体数据表,主要指twitter,facebook,微博等数据来源,重要字段 time-content * @TableName social_media */ -@TableName(value ="social_media") @Data +@HeadRowHeight(20) +@ContentRowHeight(20) +@TableName(value ="social_media") public class SocialMedia implements Serializable { /** * 数据自增列 */ @TableId + @ExcelIgnore private Long id; /** * 推文标签链接 */ + @ExcelIgnore private String link; /** * 推文发表时间 */ + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + @ExcelProperty(value="time",index=0,converter = DateConverter.class) private Date time; /** * 推文内容 */ + @ExcelProperty(value="content",index=1) private String content; /** * 用户id */ + @ExcelIgnore private String userId; /** * 点赞数量 */ + @ExcelProperty(value="favoriteCount",index=2) private Integer favoriteCount; /** * 回复数 */ + @ExcelProperty(value="replyCount",index=3) private Integer replyCount; /** * 访问树量 */ + @ExcelProperty(value="visitCount",index=4) private Integer visitCount; /** * 转发次数 */ + @ExcelProperty(value="retweetCount",index=5) private Integer retweetCount; /** * 地理字段 */ + @ExcelIgnore private String geo; /** * 坐标 */ + @ExcelIgnore private String coordinates; /** * 发文地 */ + @ExcelIgnore private String place; /** * 贡献者 */ + @ExcelIgnore private String contributors; /** * 推文主题 */ + @ExcelIgnore private String topic; /** * 数据条目创建时间 */ + @ExcelIgnore private Date createTime; /** * 灾害id */ + @ExcelIgnore private Long disasterId; /** * 数据类型,0-twitter ,1-weibo */ + @ExcelIgnore private Integer type; /** * 审核状态,0为未审核,1为审核保留,2为审核不保留 */ + @ExcelIgnore private Integer status; /** * 管理人/审核人 */ + @ExcelIgnore private Long managerId; /** * 审核时间 */ + @ExcelIgnore private Date reviewTime; + @ExcelIgnore @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/WordColuds.java b/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/WordCLouds.java similarity index 81% rename from kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/WordColuds.java rename to kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/WordCLouds.java index 1ce8083..39e50f2 100644 --- a/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/WordColuds.java +++ b/kn-service-api/biz-vordm-api/src/main/java/com/kening/vordm/entity/WordCLouds.java @@ -1,5 +1,7 @@ package com.kening.vordm.entity; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -10,11 +12,11 @@ import java.util.Date; /** * 词云数据 - * @TableName word_coluds + * @TableName word_clouds */ -@TableName(value ="word_coluds") @Data -public class WordColuds implements Serializable { +@TableName(value ="word_clouds") +public class WordCLouds implements Serializable { /** * 数据自增列 */ diff --git a/kn-service-api/pom.xml b/kn-service-api/pom.xml index ecc438c..9c7c75f 100644 --- a/kn-service-api/pom.xml +++ b/kn-service-api/pom.xml @@ -55,6 +55,16 @@ org.springframework.cloud spring-cloud-starter-netflix-hystrix + + + com.alibaba + easyexcel + + + + cn.hutool + hutool-all + diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/HotspotController.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/HotspotController.java new file mode 100644 index 0000000..9f1ac6c --- /dev/null +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/HotspotController.java @@ -0,0 +1,37 @@ +package com.kening.vordm.controller; + +import com.kening.vordm.entity.HotspotArea; +import com.kening.vordm.entity.WorldCharts; +import com.kening.vordm.service.HotspotService; +import lombok.AllArgsConstructor; +import org.springblade.core.tool.api.R; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +/** + * 热点数据-前端UI控制器 + * @author liyuchen + * @date 2023/04/05 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/ui/hotspot") +public class HotspotController { + + private HotspotService service; + + /** + * 热点统计 + * @param disasterId 灾害id + * @return + */ + @GetMapping("/hotspotCount") + public R> hotspotCount(@RequestParam Long disasterId){ + return R.data(service.hotspotCount(disasterId)); + } +} diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/NewsController.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/NewsController.java index ab04772..4903c4f 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/NewsController.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/NewsController.java @@ -7,11 +7,10 @@ import lombok.AllArgsConstructor; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; -import org.springframework.web.bind.annotation.GetMapping; -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.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.Map; @@ -38,5 +37,15 @@ public class NewsController { return R.data(newsService.page(Condition.getPage(query),Condition.getQueryWrapper(params,News.class))); } - + /** + * 新闻、热点导出功能 + * @param disasterId + * @param request + * @param response + * @param type + */ + @GetMapping("export") + public void export(Long disasterId,Integer type,HttpServletRequest request, HttpServletResponse response){ + newsService.export(disasterId,type,request,response); + } } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/RemoteSensingSourceDataController.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/RemoteSensingSourceDataController.java index dd7c280..ee75542 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/RemoteSensingSourceDataController.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/RemoteSensingSourceDataController.java @@ -2,17 +2,13 @@ package com.kening.vordm.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.kening.vordm.entity.News; -import com.kening.vordm.service.DisasterInfoService; -import javafx.beans.binding.LongExpression; -import org.springblade.core.mp.support.Condition; -import org.springblade.core.mp.support.Query; import com.kening.vordm.entity.DisasterInfo; import com.kening.vordm.entity.RemoteSensingSourceData; +import com.kening.vordm.service.DisasterInfoService; import com.kening.vordm.service.RemoteSensingSourceDataService; -import io.swagger.models.auth.In; import lombok.AllArgsConstructor; -import lombok.RequiredArgsConstructor; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/SocialMediaController.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/SocialMediaController.java index b8724fe..601f9f3 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/SocialMediaController.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/SocialMediaController.java @@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -48,4 +50,15 @@ public class SocialMediaController { public R> tweetsCount(@RequestParam Long disasterId){ return R.data(service.tweetsCount(disasterId)); } + + /** + * 推文数据导出功能 + * @param disasterId + * @param request + * @param response + */ + @GetMapping("export") + public void export(Long disasterId, HttpServletRequest request, HttpServletResponse response){ + service.export(disasterId,request,response); + } } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/WordColudsController.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/WordCloudsController.java similarity index 80% rename from kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/WordColudsController.java rename to kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/WordCloudsController.java index 9603a17..9984257 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/WordColudsController.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/controller/WordCloudsController.java @@ -1,9 +1,7 @@ package com.kening.vordm.controller; -import com.kening.vordm.entity.Tweets; -import com.kening.vordm.entity.WordColuds; import com.kening.vordm.entity.WorldCharts; -import com.kening.vordm.service.WordColudsService; +import com.kening.vordm.service.WordCloudsService; import lombok.AllArgsConstructor; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.GetMapping; @@ -22,9 +20,9 @@ import java.util.Map; @RestController @AllArgsConstructor @RequestMapping("/ui/word") -public class WordColudsController { +public class WordCloudsController { - private WordColudsService service; + private WordCloudsService service; /** * 词云统计 diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/HotspotMapper.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/HotspotMapper.java index 977232b..a6a0193 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/HotspotMapper.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/HotspotMapper.java @@ -3,6 +3,10 @@ package com.kening.vordm.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.kening.vordm.entity.Hotspot; +import com.kening.vordm.entity.HotspotArea; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author G1393 @@ -12,5 +16,10 @@ import com.kening.vordm.entity.Hotspot; */ public interface HotspotMapper extends BaseMapper { - + /** + * 热点统计 + * @param disasterId 灾害id + * @return + */ + List hotspotCount(@Param("disasterId") Long disasterId); } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/HotspotMapper.xml b/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/HotspotMapper.xml index 57f01f8..fc9c1fb 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/HotspotMapper.xml +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/HotspotMapper.xml @@ -21,4 +21,17 @@ frequency,disaster_id,create_time, status,manager_id,review_time + + diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/WordColudsMapper.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/WordCloudsMapper.java similarity index 72% rename from kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/WordColudsMapper.java rename to kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/WordCloudsMapper.java index 2c437e1..6404552 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/WordColudsMapper.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/WordCloudsMapper.java @@ -2,7 +2,7 @@ package com.kening.vordm.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.kening.vordm.entity.WordColuds; +import com.kening.vordm.entity.WordCLouds; import com.kening.vordm.entity.WorldCharts; import org.apache.ibatis.annotations.Param; @@ -10,11 +10,11 @@ import java.util.List; /** * @author G1393 -* @description 针对表【word_coluds(词云数据)】的数据库操作Mapper +* @description 针对表【word_clouds(词云数据)】的数据库操作Mapper * @createDate 2023-04-04 15:54:31 * @Entity new.domain.WordColuds */ -public interface WordColudsMapper extends BaseMapper { +public interface WordCloudsMapper extends BaseMapper { /** diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/WordColudsMapper.xml b/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/WordCloudsMapper.xml similarity index 93% rename from kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/WordColudsMapper.xml rename to kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/WordCloudsMapper.xml index 940fa7e..80f883f 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/WordColudsMapper.xml +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/mapper/WordCloudsMapper.xml @@ -2,9 +2,9 @@ - + - + @@ -26,7 +26,7 @@ DATE_FORMAT(time,'%Y-%m-%d') date, frequency value, word name - from word_coluds + from word_clouds and `status` = 1 diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/HotspotService.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/HotspotService.java index 4f7cb47..86646c0 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/HotspotService.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/HotspotService.java @@ -3,6 +3,9 @@ package com.kening.vordm.service; import com.baomidou.mybatisplus.extension.service.IService; import com.kening.vordm.entity.Hotspot; +import com.kening.vordm.entity.HotspotArea; + +import java.util.List; /** * @author G1393 @@ -11,4 +14,10 @@ import com.kening.vordm.entity.Hotspot; */ public interface HotspotService extends IService { + /** + * 热点统计 + * @param disasterId 灾害id + * @return + */ + List hotspotCount(Long disasterId); } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/NewsService.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/NewsService.java index 09a8df2..6055b45 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/NewsService.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/NewsService.java @@ -4,6 +4,9 @@ package com.kening.vordm.service; import com.baomidou.mybatisplus.extension.service.IService; import com.kening.vordm.entity.News; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * @author G1393 * @description 针对表【news(新闻咨询数据表)】的数据库操作Service @@ -11,4 +14,12 @@ import com.kening.vordm.entity.News; */ public interface NewsService extends IService { + /** + * 新闻、热点导出功能 + * @param disasterId + * @param request + * @param response + * @param type + */ + void export(Long disasterId,Integer type, HttpServletRequest request, HttpServletResponse response); } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/SocialMediaService.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/SocialMediaService.java index 39cf9e1..ed67438 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/SocialMediaService.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/SocialMediaService.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.kening.vordm.entity.SocialMedia; import com.kening.vordm.entity.Tweets; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -19,4 +21,12 @@ public interface SocialMediaService extends IService { * @return */ List tweetsCount(Long disasterId); + + /** + * 推文数据导出功能 + * @param disasterId + * @param request + * @param response + */ + void export(Long disasterId, HttpServletRequest request, HttpServletResponse response); } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/WordColudsService.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/WordCloudsService.java similarity index 69% rename from kn-service/biz-vordm/src/main/java/com/kening/vordm/service/WordColudsService.java rename to kn-service/biz-vordm/src/main/java/com/kening/vordm/service/WordCloudsService.java index 257bc43..2f4955b 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/WordColudsService.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/WordCloudsService.java @@ -2,7 +2,7 @@ package com.kening.vordm.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.kening.vordm.entity.WordColuds; +import com.kening.vordm.entity.WordCLouds; import com.kening.vordm.entity.WorldCharts; import java.util.List; @@ -10,10 +10,10 @@ import java.util.Map; /** * @author G1393 -* @description 针对表【word_coluds(词云数据)】的数据库操作Service +* @description 针对表【word_clouds(词云数据)】的数据库操作Service * @createDate 2023-04-04 15:54:31 */ -public interface WordColudsService extends IService { +public interface WordCloudsService extends IService { /** * 词云统计 diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/HotspotServiceImpl.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/HotspotServiceImpl.java index 481d8c3..51a7fb3 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/HotspotServiceImpl.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/HotspotServiceImpl.java @@ -2,10 +2,13 @@ package com.kening.vordm.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.kening.vordm.entity.Hotspot; +import com.kening.vordm.entity.HotspotArea; import com.kening.vordm.mapper.HotspotMapper; import com.kening.vordm.service.HotspotService; import org.springframework.stereotype.Service; +import java.util.List; + /** * @author G1393 * @description 针对表【hotspot(热点区域数据)】的数据库操作Service实现 @@ -15,4 +18,13 @@ import org.springframework.stereotype.Service; public class HotspotServiceImpl extends ServiceImpl implements HotspotService { + /** + * 热点统计 + * @param disasterId 灾害id + * @return + */ + @Override + public List hotspotCount(Long disasterId) { + return baseMapper.hotspotCount(disasterId); + } } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/NewsServiceImpl.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/NewsServiceImpl.java index a56981c..c8ab79b 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/NewsServiceImpl.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/NewsServiceImpl.java @@ -1,18 +1,82 @@ package com.kening.vordm.service.impl; +import cn.hutool.core.exceptions.ExceptionUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.kening.vordm.entity.Hotspot; import com.kening.vordm.entity.News; import com.kening.vordm.mapper.NewsMapper; +import com.kening.vordm.service.HotspotService; import com.kening.vordm.service.NewsService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + /** * @author G1393 * @description 针对表【news(新闻咨询数据表)】的数据库操作Service实现 * @createDate 2023-04-04 15:54:31 */ +@Slf4j @Service +@AllArgsConstructor public class NewsServiceImpl extends ServiceImpl implements NewsService { + private HotspotService hotspotService; + + /** + * 新闻、热点导出功能 + * @param disasterId + * @param request + * @param response + * @param type + */ + @Override + public void export(Long disasterId,Integer type, HttpServletRequest request, HttpServletResponse response) { + try{ + String fileName = ""; + if(type.equals(1) || type.equals(0)){ + fileName = type.equals(1) ? "English News" : "Chinese News"; + //英文的新闻 或 中文的新闻 + List newsList = list(Wrappers.lambdaQuery().eq(News::getDisasterId,disasterId).eq(News::getStatus,1).eq(News::getType,type)); + extracted(response, fileName); + EasyExcel.write(response.getOutputStream(),News.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("news").doWrite(newsList); + }else if(type.equals(2)){ + //热点数据 + fileName = "Hotspot Area"; + List hotspotList = hotspotService.list(Wrappers.lambdaQuery().eq(Hotspot::getDisasterId,disasterId).eq(Hotspot::getStatus,1)); + extracted(response, fileName); + EasyExcel.write(response.getOutputStream(),Hotspot.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("hotspot").doWrite(hotspotList); + } + }catch (IOException e){ + log.error("导出IO异常:{}",e.getMessage()); + ExceptionUtil.stacktraceToString(e); + }catch (Exception e){ + log.error("导出发生异常:{}",e.getMessage()); + ExceptionUtil.stacktraceToString(e); + } + } + + /** + * 导出设置 + * @param response + * @param fileName + * @throws IOException + */ + private void extracted(HttpServletResponse response, String fileName) throws IOException { + // 设置文本内省 + response.setContentType("application/vnd.ms-excel"); + // 设置字符编码 + response.setCharacterEncoding("utf-8"); + // 设置响应头 + response.setHeader("Content-disposition", "attachment;filename="+ fileName +".xlsx"); + } } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/SocialMediaServiceImpl.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/SocialMediaServiceImpl.java index 5d55756..c1ee0f3 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/SocialMediaServiceImpl.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/SocialMediaServiceImpl.java @@ -1,12 +1,22 @@ package com.kening.vordm.service.impl; +import cn.hutool.core.exceptions.ExceptionUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.kening.vordm.entity.Hotspot; +import com.kening.vordm.entity.News; import com.kening.vordm.entity.SocialMedia; import com.kening.vordm.entity.Tweets; import com.kening.vordm.mapper.SocialMediaMapper; import com.kening.vordm.service.SocialMediaService; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.List; /** @@ -14,6 +24,7 @@ import java.util.List; * @description 针对表【social_media(社交媒体数据表,主要指twitter,facebook,微博等数据来源,重要字段 time-content)】的数据库操作Service实现 * @createDate 2023-04-04 15:54:31 */ +@Slf4j @Service public class SocialMediaServiceImpl extends ServiceImpl implements SocialMediaService { @@ -27,4 +38,32 @@ implements SocialMediaService { public List tweetsCount(Long disasterId) { return baseMapper.tweetsCount(disasterId); } + + /** + * 推文数据导出功能 + * @param disasterId + * @param request + * @param response + */ + @Override + public void export(Long disasterId, HttpServletRequest request, HttpServletResponse response) { + try{ + String fileName = "Social media data"; + //媒体数据 + List socialMediaList = list(Wrappers.lambdaQuery().eq(SocialMedia::getDisasterId,disasterId).eq(SocialMedia::getStatus,1)); + // 设置文本内省 + response.setContentType("application/vnd.ms-excel"); + // 设置字符编码 + response.setCharacterEncoding("utf-8"); + // 设置响应头 + response.setHeader("Content-disposition", "attachment;filename="+ fileName +".xlsx"); + EasyExcel.write(response.getOutputStream(),SocialMedia.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("social").doWrite(socialMediaList); + }catch (IOException e){ + log.error("导出IO异常:{}",e.getMessage()); + ExceptionUtil.stacktraceToString(e); + }catch (Exception e){ + log.error("导出发生异常:{}",e.getMessage()); + ExceptionUtil.stacktraceToString(e); + } + } } diff --git a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/WordColudsServiceImpl.java b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/WordCloudsServiceImpl.java similarity index 67% rename from kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/WordColudsServiceImpl.java rename to kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/WordCloudsServiceImpl.java index ac66ff9..93356ba 100644 --- a/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/WordColudsServiceImpl.java +++ b/kn-service/biz-vordm/src/main/java/com/kening/vordm/service/impl/WordCloudsServiceImpl.java @@ -1,10 +1,10 @@ package com.kening.vordm.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.kening.vordm.entity.WordColuds; +import com.kening.vordm.entity.WordCLouds; import com.kening.vordm.entity.WorldCharts; -import com.kening.vordm.mapper.WordColudsMapper; -import com.kening.vordm.service.WordColudsService; +import com.kening.vordm.mapper.WordCloudsMapper; +import com.kening.vordm.service.WordCloudsService; import org.springframework.stereotype.Service; import java.util.List; @@ -13,12 +13,12 @@ import java.util.stream.Collectors; /** * @author G1393 -* @description 针对表【word_coluds(词云数据)】的数据库操作Service实现 +* @description 针对表【word_clouds(词云数据)】的数据库操作Service实现 * @createDate 2023-04-04 15:54:31 */ @Service -public class WordColudsServiceImpl extends ServiceImpl -implements WordColudsService { +public class WordCloudsServiceImpl extends ServiceImpl +implements WordCloudsService { /** * 词云统计 diff --git a/pom.xml b/pom.xml index a78703c..b21280e 100644 --- a/pom.xml +++ b/pom.xml @@ -26,6 +26,8 @@ Harbor12345 iot 1.4.13 + 5.8.16 + 3.2.1 @@ -70,6 +72,16 @@ kn-launcher ${revision} + + cn.hutool + hutool-all + ${hutool.version} + + + com.alibaba + easyexcel + ${easyexcel.version} +