Commit 06ebd048 by shenjunjie

Merge branch 'release' into 'master'

Release

See merge request !581
parents fe234347 e4ed37fd
......@@ -67,6 +67,9 @@ public class AppDownloadController extends BaseController {
@Resource(name = "markDataServiceImpl")
MarkDataService markDataService;
@Resource(name = "searchWholeServiceImpl")
SearchWholeService searchWholeService;
@Resource(name = "toolsetServiceImpl")
private ToolsetService toolsetService;
......@@ -431,7 +434,7 @@ public class AppDownloadController extends BaseController {
return ResponseResult.failure("实时采集余额不足");
}
}
List<ExportSearchWholeDTO> exportList = markDataService.exportSearchWhole(dto);
List<ExportSearchWholeDTO> exportList = searchWholeService.exportSearchWhole(dto);
// excel写入至指定路径
String projectName = projectService.getProjectById(UserThreadLocal.getProjectId()).getProjectName();
String filePath = EasyExcelUtil.generateExcelFilePath(brandkbsFilePath, projectName, UserThreadLocal.getNickname(), "全网搜舆情列表数据");
......
......@@ -91,6 +91,9 @@ public class AppSearchController extends BaseController {
@Resource(name = "extraServiceImpl")
ExtraService extraService;
@Resource(name = "searchWholeServiceImpl")
SearchWholeService searchWholeService;
@Resource(name = "redisUtil")
RedisUtil redisUtil;
......@@ -153,7 +156,7 @@ public class AppSearchController extends BaseController {
@ApiOperation("搜索-全网搜条件")
@GetMapping("/getWholeSearchCriteria")
public ResponseResult getWholeSearchCriteria(@RequestParam(value = "externalDataSource", defaultValue = "false") boolean externalDataSource) {
JSONObject wholeSearchCriteria = markDataService.getWholeNetworkSearchCriteria(externalDataSource);
JSONObject wholeSearchCriteria = searchWholeService.getWholeNetworkSearchCriteria(externalDataSource);
return ResponseResult.success(wholeSearchCriteria);
}
......@@ -181,7 +184,7 @@ public class AppSearchController extends BaseController {
return ResponseResult.failure("实时采集余额不足");
}
}
Pair<JSONObject, Integer> pair = markDataService.searchWholeNetworkWithBalance(dto);
Pair<JSONObject, Integer> pair = searchWholeService.searchWholeNetworkWithBalance(dto);
if(dto.isSentiment()){
List<JSONObject> list = pair.getLeft().getJSONArray("list").toJavaList(JSONObject.class);
commonService.sentimentAnalysis(list);
......@@ -219,7 +222,7 @@ public class AppSearchController extends BaseController {
return ResponseResult.failure("实时采集余额不足");
}
}
List<ExportSearchWholeDTO> exportList = markDataService.exportSearchWhole(dto);
List<ExportSearchWholeDTO> exportList = searchWholeService.exportSearchWhole(dto);
EasyExcelUtil.download("全网搜舆情列表数据", "sheet1", ExportSearchWholeDTO.class, exportList, response);
if (dto.isExternalDataSource()) {
extraService.decreaseRecord(dto.getKeyword(), WholeSearchRecord.UsedType.output, exportList.size());
......@@ -380,6 +383,79 @@ public class AppSearchController extends BaseController {
return ResponseResult.success(markDataService.getAIReferenceQuestionCache(true));
}
@ApiOperation("新-舆情分析-舆情总量")
@PostMapping("/analyze/amount")
@LogRecord(description = "舆情库-舆情分析")
public ResponseResult getYuqingAmount(@RequestBody SearchFilterDTO searchFilterDTO) {
if (searchFilterDTO.isExternalDataSource()){
return ResponseResult.failure("多元接口不支持数据分析");
}
return ResponseResult.success(searchWholeService.getSearchWholeYuqingAmount(searchFilterDTO));
}
@ApiOperation("新-舆情分析-重点平台")
@PostMapping("/analyze/important-platform")
public ResponseResult getImportantPlatformPercentage(@RequestBody SearchFilterDTO searchFilterDTO) {
if (searchFilterDTO.isExternalDataSource()){
return ResponseResult.failure("多元接口不支持数据分析");
}
return ResponseResult.success(searchWholeService.getSearchWholeImportantPlatformPercentage(searchFilterDTO));
}
@ApiOperation("新-舆情分析-平台占比")
@PostMapping("/analyze/platform-percent")
public ResponseResult getPlatformPercentage(@RequestBody SearchFilterDTO searchFilterDTO) {
if (searchFilterDTO.isExternalDataSource()){
return ResponseResult.failure("多元接口不支持数据分析");
}
return ResponseResult.success(searchWholeService.getSearchWholeAnalyzePlatformPercentage(searchFilterDTO));
}
@ApiOperation("新-舆情分析-舆情走势图")
@PostMapping("/analyze/tendency")
public ResponseResult getSpreadTendency(@RequestBody SearchFilterDTO searchFilterDTO) {
if (searchFilterDTO.isExternalDataSource()){
return ResponseResult.failure("多元接口不支持数据分析");
}
return ResponseResult.success(searchWholeService.getSearchWholeSpreadTendency(searchFilterDTO));
}
@ApiOperation("新-舆情分析-活跃渠道")
@PostMapping("/analyze/active-channel")
public ResponseResult getActiveChannels(@RequestBody SearchFilterDTO searchFilterDTO) {
if (searchFilterDTO.isExternalDataSource()){
return ResponseResult.failure("多元接口不支持数据分析");
}
return ResponseResult.success(searchWholeService.getSearchWholeActiveChannels(searchFilterDTO));
}
@ApiOperation("新-舆情分析-ip分布")
@PostMapping("/analyze/ip-located")
public ResponseResult getArticleIpLocated(@RequestBody SearchFilterDTO searchFilterDTO) {
if (searchFilterDTO.isExternalDataSource()){
return ResponseResult.failure("多元接口不支持数据分析");
}
return ResponseResult.success(searchWholeService.getSearchWholeArticleIpLocated(searchFilterDTO));
}
@ApiOperation("新-舆情分析-词云")
@PostMapping("/analyze/high-word")
public ResponseResult getHighWord(@RequestBody SearchFilterDTO searchFilterDTO) {
if (searchFilterDTO.isExternalDataSource()){
return ResponseResult.failure("多元接口不支持数据分析");
}
return ResponseResult.success(searchWholeService.getSearchWholeAnalyzeHighWord(searchFilterDTO));
}
@ApiOperation("新-舆情分析-活跃渠道、ip分布、词云详情页面,社媒平台发文")
@PostMapping("/analyze/data")
public ResponseResult getYuqingAnalyzeDetail(@RequestBody SearchFilterDTO searchFilterDTO) {
if (searchFilterDTO.isExternalDataSource()){
return ResponseResult.failure("多元接口不支持数据分析");
}
return ResponseResult.success(searchWholeService.getSearchWholeAnalyzeDetail(searchFilterDTO));
}
@ApiOperation("搜索-搜索关键词历史记录")
@GetMapping("/keyword/cache")
public ResponseResult getSearchKeywordCache(@ApiParam(name = "searchType",
......
package com.zhiwei.brandkbs2.enmus;
import com.zhiwei.brandkbs2.util.Tools;
import java.util.*;
/**
* @ClassName: SensitiveChannels
* @Description: 重要渠道
* @author: YaoGuoDong
* @create: 2022-06-10 14:50
**/
public enum SensitiveChannelsEnum {
YANG_MEI("央媒", "央媒", Arrays.asList("中国新闻网","中国网","人民日报", "新华社", "求是", "解放军报", "光明日报", "经济日报", "中国日报", "中央人民广播电台", "央视网", "国际在线", "科技日报", "中国纪检监察报", "工人日报", "中国青年报", "农民日报", "法制日报", "中新社")),
ZHU_LIU_CAI_CAI_JING("主流财经", "主流财经", Arrays.asList("证券时报", "国际金融报", "中国经济周刊", "经济参考报", "中国证券报", "上海证券报", "财经国家周刊", "中新经纬", "经济日报", "证券日报", "中国企业家", "中国经济信息社", "中国财经报", "中国商报", "中国企业报", "国际商报", "中国经济导报", "中国经济时报", "金融时报", "中国经营报", "财新周刊", "《财经》杂志", "证券市场红周刊", "界面新闻", "财联社", "蓝鲸财经", "摩尔金融", "第一财经日报", "第一财经周刊", "21世纪经济报道", "21世纪商业评论", "大众证券报", "深圳商报", "新财富", "香港商报", "成都商报", "每日经济新闻", "金融投资报", "长江商报", "支点财经", "经济观察报", "华商报", "东亚经贸新闻", "时代财经", "资本邦", "投资界", "投中网", "创业邦", "财经天下周刊", "FT中文网", "财富", "福布斯", "彭博商业周刊", "哈佛商业评论", "金融界", "金投网", "中研网", "FX168财经网", "中金在线 ", "中商情报网", "财界网", "东方财富网", "南方财富网", "同花顺财经", "云掌财经", "华尔街见闻", "智通财经", "深蓝财经", "乐居财经", "格隆汇", "棱镜", "凤凰WEEKLY财经 ", "野马财经", "燃财经", "晚点LatePost ", "LateNews by 小晚(微信公众号)", "秦朔朋友圈", "吴晓波频道", "兽楼处", "叶檀财经", "牛弹琴", "占豪", "新财迷", "智谷趋势", "智东西", "三言财经", "华商韬略", "正商参阅", "水木然专栏", "春暖花开", "饭统戴老板", "石述思", "刘军洛财经", "郎咸平", "花荣", "水皮", "光远看经济", "正和岛", "功夫财经", "李大霄", "肖锋", "宋清辉", "何加盐", "财经十一人", "但斌", "启阳路4号", "棱镜", "经鉴新闻", "蓝鲸浑水")),
ZHU_LIU_KE_JI("主流科技", "主流科技", Arrays.asList("科技日报", "计算机世界", "中国计算机报", "赛迪网", "中国电子报", "通信世界", "通信产业报", "虎嗅", "36氪", "36kr", "钛媒体", "动点科技", "雷锋网", "驱动之家", "快科技", "砍柴网", "驱动中国", "科技资讯网", "TechCrunch", "Business Insider", "新智元", "量子位", "机器之心", "TechWeb", "IT168", "IT之家", "天极网", "比特网", "中关村在线", "PCHOME", "电脑之家", "CSDN", "51CTO", "硅谷动力", "至顶网", "IT时代周刊", "C114通信网", "飞象网", "DoNews", "cnBeta", "亿欧网", "鞭牛士", "PingWest品玩", "镁客网", "极客公园", "猎云网", "泡泡网", "爱范儿", "速途网", "太平洋电脑网", "i黑马", "手机中国", "科技美学", "量子位", "少数派", "酷玩实验室", "笔吧评测室", "安兔兔", "差评", "科技每日推送", "全是黑科技", "机器之心", "小白测评", "AppSo ", "爱范儿", "大米评测", "最黑科技", "DeepTech深科技", "好机友", "果粉之家", "刘旷", "金错刀", "雷科技", "新智元", "爱否科技", "InfoQ", "小道消息", "人人都是产品经理", "花果科技", "智东西", "阑夕", "雷帝触网", "丁道师", "黑马公社", "周兴斌", "科技狐", "躺倒鸭", "春公子", "郝闻郝看", "全天候科技", "闫跃龙", "小声比比", "乌鸦校尉", "江湖老刘", "科技兽", "郭静的互联网圈", "电手", "超先声", "猿大侠", "IT三剑客", "果壳", "哎咆科技")),
BEI_JING("区域", "北京", Arrays.asList("北京时间", "北京广播电视台", "北京青年报", "北京青年网", "北青网", "北京青年周刊", "北京日报", "京报网", "北京商报", "北京现代商报", "北京商报网", "首都建设报", "北京社区报", "北京头条", "北京晚报", "北晚新视觉", "北晚在线", "北京晨报", "新京报", "千龙网")),
SHANG_HAI("区域", "上海", Arrays.asList("东方卫视", "解放日报", "上观新闻", "看看新闻", "SMG", "上海日报", "上海日报SHINE", "文汇报", "新民邻声", "新民晚报", "新民网", "新民周刊", "文汇网", "新闻晨报", "周到上海", "界面新闻", "财联社", "蓝鲸财经", "科创板日报", "澎湃新闻", "上海法治报", "上海证券报", "第一财经", "第一财经日报", "第一财经周刊", "一财网", "劳动报", "东方网", "观察者网")),
GUANG_ZHOU("区域", "广州", Arrays.asList("南方日报", "南方网", "南方+", "南方Plus", "南方都市报", "奥一网", "南方周末", "南都周刊", "南方人物周刊", "信息时报", "时代周报", "时代财经", "新周刊", "消费者报道", "大洋网", "21世纪经济报道", "21世纪商业评论", "广州日报", "新花城", "南风窗", "羊城晚报", "金羊网", "羊城派", "新快报", "广东卫视", "广东南方卫视", "触电新闻", "广东广播电视台", "触电新闻", "广东经视", "珠江频道")),
SHEN_ZHEN("区域", "深圳", Arrays.asList("深圳商报", "读创", "深圳特区报", "读特", "深圳卫视", "晶报", "壹深圳", "深圳热线", "深圳新闻网", "深圳晚报", "Shenzhen Daily")),
ZHE_JIANG("区域", "浙江", Arrays.asList("钱江晚报", "浙江日报", "浙江新闻", "天目新闻", "浙江法制报", "都市快报", "每日商报", "青年时报", "杭州日报", "浙江在线", "科技金融时报", "浙江之声", "浙江卫视", "中国蓝TV", "中国蓝新闻", "新蓝网", "杭州网", "1818黄金眼", "小强热线", "钱江视频", "浙样红TV", "FM93浙江交通之声", "FM93交通之声", "杭州日报", "杭州网", "网经社", "宁波日报", "甬派", "宁波晚报", "中国宁波网")),
CHUAN_YU("区域", "川渝", Arrays.asList("成都日报", "成都商报", "红星新闻", "每日经济新闻", "微成都", "成都晚报", "封面新闻", "华西都市报", "四川在线", "四川新闻网", "川报观察", "四川日报", "重庆日报", "上游新闻", "重庆晚报", "重庆晨报", "都市热报", "华龙网", "四川卫视", "四川观察", "就成都", "四川广播电视台", "重庆电视台"));
private final String group;
private final String name;
private final List<String> channels;
private static final List<String> GROUPS = Arrays.asList("全部", "央媒", "主流财经", "主流科技", "区域");
private static final List<String> FILTER_GROUPS = Arrays.asList("全部", "央媒", "主流财经", "主流科技");
public String getGroup() {
return group;
}
public String getName() {
return name;
}
public List<String> getChannels() {
return channels;
}
SensitiveChannelsEnum(String group, String name, List<String> channels) {
this.group = group;
this.name = name;
this.channels = channels;
}
public static List<String> getSensitiveChannelsByGroupAndName(String group, String name) {
for (SensitiveChannelsEnum channels : values()) {
// 条件一:group无子级、name传参为空、枚举存在group
boolean conditionOne = FILTER_GROUPS.contains(group) && Tools.isEmpty(name) && channels.getGroup().equals(group);
// 条件二:group有子级、枚举存在name、枚举存在group
boolean conditionTwo = channels.getGroup().equals(group) && channels.getName().equals(name);
if (conditionOne || conditionTwo) {
return channels.getChannels();
}
}
return new ArrayList<>();
}
public static List<String> getSensitiveChannelsNameByGroup(String group) {
List<String> list = new ArrayList<>();
for (SensitiveChannelsEnum channels : values()) {
if (channels.getGroup().equals(group)) {
list.add(channels.getName());
}
}
return list;
}
/**
* 获取重要渠道传参
* @return
*/
public static List<Map<String, Object>> getExtraParam() {
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < SensitiveChannelsEnum.GROUPS.size(); i++) {
Map<String, Object> map = new HashMap<>();
map.put("name", SensitiveChannelsEnum.GROUPS.get(i));
if (FILTER_GROUPS.contains(GROUPS.get(i))) {
map.put("value", new ArrayList<>());
} else {
map.put("value", SensitiveChannelsEnum.getSensitiveChannelsNameByGroup(SensitiveChannelsEnum.GROUPS.get(i)));
}
list.add(map);
}
return list;
}
}
......@@ -80,6 +80,58 @@ public class EsQueryTools {
}
/**
* keyword类型字段匹配 | 作分割
*
* @Title: assembleSeniorTermQuery
* @Description: keyword类型字段匹配
* @param @param source
* @param @param fieldlist
* @param @return 设定文件
* @return BoolQueryBuilder 返回类型
*/
public static BoolQueryBuilder assembleSeniorTermOrQuery(String source, String[] fieldlist) {
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
if (!Tools.isEmpty(source)) {
String[] sourcewords = source.split("\\|");
for (int i = 0; i < sourcewords.length; i++) {
String sourceword = sourcewords[i];
boolQuery.should(termQueryField(QueryBuilders.boolQuery(), "should", sourceword, fieldlist));
}
}
return boolQuery;
}
/**
* termQuery 多字段,单一匹配值
*
* @Title: termQueryField
* @Description: termQuery 多字段,单一匹配值
* @param @param boolQueryBuilder
* @param @param esQuery
* @param @param word
* @param @param fields
* @param @return 设定文件
* @return BoolQueryBuilder 返回类型
*/
public static <T> BoolQueryBuilder termQueryField(BoolQueryBuilder boolQueryBuilder, String esQuery, T word,
String[] fields) {
if (ES_QUERY_AND.equals(esQuery)) {
for (String field : fields) {
boolQueryBuilder.must(QueryBuilders.matchPhraseQuery(field, word));
}
} else if (ES_QUERY_OR.equals(esQuery)) {
for (String field : fields) {
boolQueryBuilder.should(QueryBuilders.matchPhraseQuery(field, word));
}
} else if (ES_QUERY_NOT.equals(esQuery)) {
for (String field : fields) {
boolQueryBuilder.mustNot(QueryBuilders.matchPhraseQuery(field, word));
}
}
return boolQueryBuilder;
}
/**
* 标签请求匹配
*
* @param tagIds
......
......@@ -2,6 +2,7 @@ package com.zhiwei.brandkbs2.pojo;
import com.alibaba.fastjson.JSONObject;
import com.zhiwei.brandkbs2.pojo.dto.MarkSearchDTO;
import com.zhiwei.brandkbs2.pojo.dto.SearchFilterDTO;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
......@@ -23,6 +24,10 @@ public class MarkSearchAnalyzeTask extends AbstractBaseMongo {
*/
private MarkSearchDTO markSearchDTO;
/**
* 全网搜搜索条件
*/
private SearchFilterDTO searchFilterDTO;
/**
* 数据分析结果-词云
*/
List<JSONObject> highWord;
......
......@@ -136,6 +136,12 @@ public class SearchFilterDTO {
@ApiModelProperty(value = "导出数据量")
private int outputCount;
/**
* ip地址
*/
@ApiModelProperty(value = "ip地址")
private String ip;
// /**
// * 这部分字段无需前端传参
// */
......@@ -162,7 +168,7 @@ public class SearchFilterDTO {
public Map<String, Object> toMap() {
Map<String, Object> map = new HashMap<>();
map.put("timeType", "time");
map.put("pt", getPlatforms());
map.put("pt", getDefaultPlatforms());
map.put("dataType", searchType);
map.put("matchType", matchType);
map.put("search", keyword);
......@@ -190,7 +196,7 @@ public class SearchFilterDTO {
return map;
}
public List<String> getPlatforms() {
public List<String> getDefaultPlatforms() {
if (Objects.equals("视频", this.searchType)){
return CollectionUtils.isNotEmpty(this.videoPlatforms) ? this.videoPlatforms : new ArrayList<>(GenericAttribute.VIDEO_PLATFORM);
}
......
package com.zhiwei.brandkbs2.service;
import com.alibaba.fastjson.JSONObject;
import com.zhiwei.brandkbs2.pojo.dto.ExportSearchWholeDTO;
import com.zhiwei.brandkbs2.pojo.dto.SearchFilterDTO;
import com.zhiwei.brandkbs2.pojo.vo.PageVO;
import org.apache.commons.lang3.tuple.Pair;
import java.io.IOException;
import java.util.List;
/**
* @ClassName: SearchWholeService
* @Description 全网搜服务
* @author: cjz
* @date: 2024-08-29 9:43
*/
public interface SearchWholeService {
/**
* 搜索-全网搜
*
* @param dto 全网搜搜索传输类
* @return JSONObject
*/
Pair<JSONObject, Integer> searchWholeNetworkWithBalance(SearchFilterDTO dto);
/**
* 搜索-全网搜条件
* @return JSONObject
*/
JSONObject getWholeNetworkSearchCriteria(boolean externalDataSource);
/**
* 搜索-全网搜-舆情导出
* @param dto 全网搜搜索传输类
* @return List<ExportSearchWholeDTO>
*/
List<ExportSearchWholeDTO> exportSearchWhole(SearchFilterDTO dto);
/**
* 全网搜舆情分析-舆情总量
* @param dto 全网搜数据传输类
* @return
* @throws IOException
*/
JSONObject getSearchWholeYuqingAmount(SearchFilterDTO dto);
/**
* 全网搜舆情分析-重点平台
* @param dto 全网搜数据传输类
* @return
*/
JSONObject getSearchWholeImportantPlatformPercentage(SearchFilterDTO dto);
/**
* 全网搜舆情分析-平台分布
* @param dto 全网搜数据传输类
* @return
*/
List<JSONObject> getSearchWholeAnalyzePlatformPercentage(SearchFilterDTO dto);
/**
* 全网搜舆情分析-舆情走势图
* @param dto 全网搜数据传输类
* @return
*/
JSONObject getSearchWholeSpreadTendency(SearchFilterDTO dto);
/**
* 全网搜舆情分析-活跃渠道
* @param dto 全网搜数据传输类
* @return
*/
List<JSONObject> getSearchWholeActiveChannels(SearchFilterDTO dto);
/**
* 全网搜舆情分析-ip分布
* @param dto 全网搜数据传输类
* @return
*/
List<JSONObject> getSearchWholeArticleIpLocated(SearchFilterDTO dto);
/**
* 全网搜舆情分析-词云
* @param dto 全网搜数据传输类
* @return
*/
List<JSONObject> getSearchWholeAnalyzeHighWord(SearchFilterDTO dto);
/**
* 全网搜舆情分析-活跃渠道、ip分布、词云详情页面、社媒平台发文
* @param dto 标注数据搜索传输类
* @return
*/
PageVO<JSONObject> getSearchWholeAnalyzeDetail(SearchFilterDTO dto);
}
......@@ -15,10 +15,7 @@ import com.zhiwei.brandkbs2.config.Constant;
import com.zhiwei.brandkbs2.dao.*;
import com.zhiwei.brandkbs2.easyexcel.EasyExcelUtil;
import com.zhiwei.brandkbs2.easyexcel.dto.ExportYuqingInteractionUpdateDTO;
import com.zhiwei.brandkbs2.enmus.ChannelEmotion;
import com.zhiwei.brandkbs2.enmus.EmotionEnum;
import com.zhiwei.brandkbs2.enmus.ImportantChannelEnum;
import com.zhiwei.brandkbs2.enmus.InteractionEnum;
import com.zhiwei.brandkbs2.enmus.*;
import com.zhiwei.brandkbs2.es.EsClientDao;
import com.zhiwei.brandkbs2.es.EsQueryTools;
import com.zhiwei.brandkbs2.exception.ExceptionCast;
......@@ -1389,6 +1386,7 @@ public class MarkDataServiceImpl implements MarkDataService {
}
@Override
@Deprecated
public Pair<JSONObject, Integer> searchWholeNetworkWithBalance(SearchFilterDTO dto) {
if (dto.isExternalDataSource()) { // 查商业数据库
try {
......@@ -1442,6 +1440,7 @@ public class MarkDataServiceImpl implements MarkDataService {
}
@Override
@Deprecated
public List<ExportSearchWholeDTO> exportSearchWhole(SearchFilterDTO dto) {
Integer exportAmount = userService.queryUserInfo(UserThreadLocal.getUserId(), UserThreadLocal.getProjectId()).getExportAmount();
exportAmount = Objects.isNull(exportAmount) ? 10000 : exportAmount;
......@@ -1973,6 +1972,9 @@ public class MarkDataServiceImpl implements MarkDataService {
if (nonManualProjectPlanDao.count(new Query(Criteria.where("projectId").is(projectId))) >= 5) {
return ResponseResult.failure("超过方案数量上限5");
}
if (!dto.getLasting() && Objects.isNull(dto.getEndTime())){
dto.setEndTime(System.currentTimeMillis() + Constant.ONE_YEAR);
}
NonManualProjectPlan plan = new NonManualProjectPlan(dto);
Project project = projectService.getProjectById(projectId);
if (project.getExternalDataSource()) {
......@@ -2025,6 +2027,9 @@ public class MarkDataServiceImpl implements MarkDataService {
@Override
public ResponseResult updateNonManualProjectPlan(NonManualProjectPlanDTO dto) {
if (!dto.getLasting() && Objects.isNull(dto.getEndTime())){
dto.setEndTime(System.currentTimeMillis() + Constant.ONE_YEAR);
}
NonManualProjectPlan existPlan = nonManualProjectPlanDao.findOneById(dto.getId());
NonManualProjectPlan plan = new NonManualProjectPlan(dto);
plan.setCTime(existPlan.getCTime());
......@@ -2625,7 +2630,10 @@ public class MarkDataServiceImpl implements MarkDataService {
// 项目日均
String projectYuqingCountAvgKey = RedisUtil.getYuqingAnalyzeProjectAvgCountKey(projectId, Constant.PRIMARY_CONTEND_ID, planId, null, false);
if (Objects.isNull(redisUtil.get(projectYuqingCountAvgKey))) {
countYuqingAmountAvg(dto.getStartTime(), dto.getEndTime(), projectId, planId);
Project project = projectService.getProjectById(projectId);
long endTime = System.currentTimeMillis();
long startTime = project.getCTime() > endTime - Constant.ONE_YEAR ? project.getCTime() : endTime - Constant.ONE_YEAR;
countYuqingAmountAvg(startTime, endTime, projectId, planId);
}
double projectYuqingAvgCount = Objects.isNull(redisUtil.get(projectYuqingCountAvgKey)) ? 0d : Double.parseDouble(redisUtil.get(projectYuqingCountAvgKey));
jsonObject.put("projectAvg", projectYuqingAvgCount);
......@@ -2674,10 +2682,13 @@ public class MarkDataServiceImpl implements MarkDataService {
String neutralKey = RedisUtil.getYuqingAnalyzeEmotionDistributionAvgKey(projectId, Constant.PRIMARY_CONTEND_ID, EmotionEnum.NEUTRAL.getName(), planId, customPlanId, isCustom);
String negativeKey = RedisUtil.getYuqingAnalyzeEmotionDistributionAvgKey(projectId, Constant.PRIMARY_CONTEND_ID, EmotionEnum.NEGATIVE.getName(), planId, customPlanId, isCustom);
if (Objects.isNull(redisUtil.get(positiveKey)) || Objects.isNull(redisUtil.get(neutralKey)) || Objects.isNull(redisUtil.get(negativeKey))){
Project project = projectService.getProjectById(projectId);
long endTime = System.currentTimeMillis();
long startTime = project.getCTime() > endTime - Constant.ONE_YEAR ? project.getCTime() : endTime - Constant.ONE_YEAR;
if (isCustom){
countCustomEmotionDistributionAvg(dto.getStartTime(), dto.getEndTime(), projectId, customPlanId);
countCustomEmotionDistributionAvg(startTime, endTime, projectId, customPlanId);
}else {
countEmotionDistributionAvg(dto.getStartTime(), dto.getEndTime(), projectId, planId);
countEmotionDistributionAvg(startTime, endTime, projectId, planId);
}
}
double positiveAvg = Objects.isNull(redisUtil.get(positiveKey)) ? 0d : Double.parseDouble(redisUtil.get(positiveKey));
......@@ -2734,7 +2745,10 @@ public class MarkDataServiceImpl implements MarkDataService {
// 项目均值
String key = RedisUtil.getYuqingAnalyzePlatformAvgCountKey(projectId, Constant.PRIMARY_CONTEND_ID, dto.getPlanId());
if (Objects.isNull(redisUtil.get(key))){
countImportantPlatformPercentageAvg(dto.getStartTime(), dto.getEndTime(), projectId, dto.getPlanId());
Project project = projectService.getProjectById(projectId);
long endTime = System.currentTimeMillis();
long startTime = project.getCTime() > endTime - Constant.ONE_YEAR ? project.getCTime() : endTime - Constant.ONE_YEAR;
countImportantPlatformPercentageAvg(startTime, endTime, projectId, dto.getPlanId());
}
double projectAvg = Objects.isNull(redisUtil.get(key)) ? 0d : Double.parseDouble(redisUtil.get(key));
overview.put("compare", compare(avg, projectAvg));
......@@ -3105,7 +3119,7 @@ public class MarkDataServiceImpl implements MarkDataService {
if (Objects.nonNull(existTask)){
return existTask.getHighWord();
}
MarkSearchAnalyzeTask task = new MarkSearchAnalyzeTask(dto, null, false, System.currentTimeMillis());
MarkSearchAnalyzeTask task = new MarkSearchAnalyzeTask(dto, null,null, false, System.currentTimeMillis());
markSearchAnalyzeTaskDao.insertOne(task);
List<JSONObject> highWord = generateHighWord(dto);
Update update = new Update();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment