Merge remote-tracking branch 'origin/dev_third_stage' into dev_third_stage
This commit is contained in:
+126
-63
@@ -1,15 +1,29 @@
|
|||||||
package com.jero.modules.feishu.service.impl;
|
package com.jero.modules.feishu.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.druid.support.json.JSONUtils;
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.jero.modules.feishu.service.IFeishuService;
|
import com.jero.modules.feishu.service.IFeishuService;
|
||||||
import com.jero.modules.feishu.vo.FeishuMsgVo;
|
import com.jero.modules.feishu.vo.FeishuMsgVo;
|
||||||
|
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseClassifyEO;
|
||||||
|
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseEO;
|
||||||
|
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseUserEO;
|
||||||
|
import com.jero.modules.problemKnowledgeBase.enums.ShowPermissionsEnum;
|
||||||
|
import com.jero.modules.problemKnowledgeBase.service.IProblemKnowledgeBaseClassifyEOService;
|
||||||
|
import com.jero.modules.problemKnowledgeBase.service.IProblemKnowledgeBaseEOService;
|
||||||
|
import com.jero.modules.problemKnowledgeBase.service.IProblemKnowledgeBaseUserEOService;
|
||||||
|
import com.jero.modules.project.enums.JumpLinkEnum;
|
||||||
|
import com.jero.modules.system.entity.SysUser;
|
||||||
|
import com.jero.modules.system.service.ISysUserService;
|
||||||
import com.jero.modules.system.util.HttpRequestUtil;
|
import com.jero.modules.system.util.HttpRequestUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -18,6 +32,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author: liyawei
|
* @Author: liyawei
|
||||||
@@ -42,6 +57,17 @@ public class FeishuServiceImpl implements IFeishuService {
|
|||||||
@Value("${Feishu.translateTextUrl}")
|
@Value("${Feishu.translateTextUrl}")
|
||||||
private String translateTextUrl;
|
private String translateTextUrl;
|
||||||
|
|
||||||
|
@Value(value = "${jero.backUrl}")
|
||||||
|
private String backUrl;
|
||||||
|
@Autowired
|
||||||
|
private IProblemKnowledgeBaseClassifyEOService problemKnowledgeBaseClassifyEOService;
|
||||||
|
@Autowired
|
||||||
|
private IProblemKnowledgeBaseEOService problemKnowledgeBaseEOService;
|
||||||
|
@Autowired
|
||||||
|
private IProblemKnowledgeBaseUserEOService problemKnowledgeBaseUserEOService;
|
||||||
|
@Autowired
|
||||||
|
private ISysUserService sysUserService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取token
|
* 获取token
|
||||||
* @return
|
* @return
|
||||||
@@ -333,7 +359,8 @@ public class FeishuServiceImpl implements IFeishuService {
|
|||||||
" \"title\": {\n" +
|
" \"title\": {\n" +
|
||||||
" \"tag\": \"plain_text\",\n" +
|
" \"tag\": \"plain_text\",\n" +
|
||||||
" \"content\": \"点击下方的分类查看常见问题\"\n" +
|
" \"content\": \"点击下方的分类查看常见问题\"\n" +
|
||||||
" }\n" +
|
" },\n" +
|
||||||
|
" \"template\": \"green\"\n" +
|
||||||
" }\n" +
|
" }\n" +
|
||||||
"}";
|
"}";
|
||||||
JSONObject jsonObject = JSONObject.parseObject(sendJson);
|
JSONObject jsonObject = JSONObject.parseObject(sendJson);
|
||||||
@@ -342,56 +369,28 @@ public class FeishuServiceImpl implements IFeishuService {
|
|||||||
element.put("tag","action");
|
element.put("tag","action");
|
||||||
element.put("layout","bisected");
|
element.put("layout","bisected");
|
||||||
|
|
||||||
JSONArray actions = new JSONArray();
|
//获取分类
|
||||||
//组装推送过去的点击按钮
|
List<ProblemKnowledgeBaseClassifyEO> problemKnowledgeBaseClassifyEOList = this.problemKnowledgeBaseClassifyEOService.list();
|
||||||
for (int i=0; i<5; i++){
|
|
||||||
|
|
||||||
|
JSONArray actions = new JSONArray();
|
||||||
|
|
||||||
|
//组装推送过去的点击按钮
|
||||||
|
for (ProblemKnowledgeBaseClassifyEO problemKnowledgeBaseClassifyEO : problemKnowledgeBaseClassifyEOList) {
|
||||||
JSONObject buttonObject = new JSONObject();
|
JSONObject buttonObject = new JSONObject();
|
||||||
JSONObject text = new JSONObject();
|
JSONObject text = new JSONObject();
|
||||||
JSONObject value = new JSONObject();
|
JSONObject value = new JSONObject();
|
||||||
buttonObject.put("tag","button");
|
buttonObject.put("tag","button");
|
||||||
|
|
||||||
if(i==0){
|
text.put("tag","plain_text");
|
||||||
text.put("tag","plain_text");
|
text.put("content",problemKnowledgeBaseClassifyEO.getProblemLabel());
|
||||||
text.put("content","content1");
|
value.put("chosen",problemKnowledgeBaseClassifyEO.getId());
|
||||||
|
|
||||||
value.put("chosen","chosen1");
|
|
||||||
}
|
|
||||||
if(i==1){
|
|
||||||
text.put("tag","plain_text");
|
|
||||||
text.put("content","content2");
|
|
||||||
|
|
||||||
value.put("chosen","chosen2");
|
|
||||||
}
|
|
||||||
if(i==2){
|
|
||||||
text.put("tag","plain_text");
|
|
||||||
text.put("content","content3");
|
|
||||||
|
|
||||||
value.put("chosen","chosen3");
|
|
||||||
}
|
|
||||||
if(i==3){
|
|
||||||
text.put("tag","plain_text");
|
|
||||||
text.put("content","content4");
|
|
||||||
|
|
||||||
value.put("chosen","chosen4");
|
|
||||||
}
|
|
||||||
if(i==4){
|
|
||||||
text.put("tag","plain_text");
|
|
||||||
text.put("content","content5");
|
|
||||||
|
|
||||||
value.put("chosen","chosen5");
|
|
||||||
}
|
|
||||||
if(i==5){
|
|
||||||
text.put("tag","plain_text");
|
|
||||||
text.put("content","content6");
|
|
||||||
|
|
||||||
value.put("chosen","chosen6");
|
|
||||||
}
|
|
||||||
buttonObject.put("text",text);
|
buttonObject.put("text",text);
|
||||||
buttonObject.put("type","primary");
|
buttonObject.put("type","primary");
|
||||||
buttonObject.put("value",value);
|
buttonObject.put("value",value);
|
||||||
actions.add(buttonObject);
|
actions.add(buttonObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
element.put("actions",actions);
|
element.put("actions",actions);
|
||||||
|
|
||||||
|
|
||||||
@@ -423,12 +422,94 @@ public class FeishuServiceImpl implements IFeishuService {
|
|||||||
String clickStr = JSONObject.toJSONString(JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("action"))).get("value"));
|
String clickStr = JSONObject.toJSONString(JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("action"))).get("value"));
|
||||||
log.info("用户点击的数据: " + clickStr);
|
log.info("用户点击的数据: " + clickStr);
|
||||||
|
|
||||||
String sendJson = " ";
|
String sendJsonStr = "{\n" +
|
||||||
|
" \"config\": {\n" +
|
||||||
|
" \"wide_screen_mode\": true\n" +
|
||||||
|
" },\n" +
|
||||||
|
" \"header\": {\n" +
|
||||||
|
" \"title\": {\n" +
|
||||||
|
" \"tag\": \"plain_text\",\n" +
|
||||||
|
" \"content\": \"问题知识库信息,点击下方标题即可跳转至详情页查看\"\n" +
|
||||||
|
" },\n" +
|
||||||
|
" \"template\": \"green\"\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
|
||||||
|
JSONObject sendJson = JSONObject.parseObject(sendJsonStr);
|
||||||
|
JSONArray elements = new JSONArray();
|
||||||
|
|
||||||
|
//分隔行对象。
|
||||||
|
JSONObject dividingLineJson = new JSONObject();
|
||||||
|
dividingLineJson.put("tag","hr");
|
||||||
|
|
||||||
JSONObject clickJson = JSONObject.parseObject(clickStr);
|
JSONObject clickJson = JSONObject.parseObject(clickStr);
|
||||||
if(StringUtils.isNotEmpty(clickJson.getString("chosen"))){
|
if(StringUtils.isNotEmpty(clickJson.getString("chosen"))){
|
||||||
sendJson = clickJson.getString("chosen");
|
String problemTypeId = clickJson.getString("chosen");
|
||||||
|
String thirdId = userIds[0];
|
||||||
|
SysUser currentOperatorUser = this.sysUserService.getBaseMapper().selectOne(
|
||||||
|
new QueryWrapper<SysUser>().lambda().eq(SysUser::getThirdId, thirdId)
|
||||||
|
);
|
||||||
|
if(ObjectUtils.isNotEmpty(currentOperatorUser)){
|
||||||
|
QueryWrapper<ProblemKnowledgeBaseUserEO> userPermissionQueryWrapper = new QueryWrapper<>();
|
||||||
|
userPermissionQueryWrapper.lambda().eq(ProblemKnowledgeBaseUserEO::getUserId,currentOperatorUser.getId());
|
||||||
|
List<ProblemKnowledgeBaseUserEO> problemKnowledgeBaseUserEOList = this.problemKnowledgeBaseUserEOService.list(userPermissionQueryWrapper);
|
||||||
|
|
||||||
|
List<String> problemKnowledgeBaseIdList = problemKnowledgeBaseUserEOList.stream().map(ProblemKnowledgeBaseUserEO::getProblemKnowledgeBaseId).distinct().collect(Collectors.toList());
|
||||||
|
|
||||||
|
QueryWrapper<ProblemKnowledgeBaseEO> problemKnowledgeBaseEOQueryWrapper = new QueryWrapper<>();
|
||||||
|
|
||||||
|
problemKnowledgeBaseEOQueryWrapper.lambda().eq(ProblemKnowledgeBaseEO::getProblemType,problemTypeId);
|
||||||
|
problemKnowledgeBaseEOQueryWrapper.lambda().and(query -> {
|
||||||
|
query.eq(ProblemKnowledgeBaseEO::getShowPermissions, ShowPermissionsEnum.OPEN.getValue()).
|
||||||
|
or(o -> {
|
||||||
|
o.eq(ProblemKnowledgeBaseEO::getShowPermissions,ShowPermissionsEnum.PRIVACY.getValue());
|
||||||
|
o.in(ProblemKnowledgeBaseEO::getId,problemKnowledgeBaseIdList);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
//根据发布日期倒序 查询出(公开、私密且自己是权限用户)最新的五条数据
|
||||||
|
problemKnowledgeBaseEOQueryWrapper.orderByDesc("release_time");
|
||||||
|
Integer pageNo = 1;
|
||||||
|
Integer pageSize = 5;
|
||||||
|
Page<ProblemKnowledgeBaseEO> page = new Page<ProblemKnowledgeBaseEO>(pageNo, pageSize);
|
||||||
|
IPage<ProblemKnowledgeBaseEO> pageList = problemKnowledgeBaseEOService.page(page, problemKnowledgeBaseEOQueryWrapper);
|
||||||
|
List<ProblemKnowledgeBaseEO> records = pageList.getRecords();
|
||||||
|
|
||||||
|
JSONObject element = new JSONObject();
|
||||||
|
JSONArray actions = new JSONArray();
|
||||||
|
|
||||||
|
for (ProblemKnowledgeBaseEO record : records) {
|
||||||
|
String url = backUrl + JumpLinkEnum.PROBLEM_KNOWLEDGE_BASE_DETAIL.getLink() + "?id=" + record.getId();
|
||||||
|
|
||||||
|
JSONObject action = new JSONObject();
|
||||||
|
JSONObject text = new JSONObject();
|
||||||
|
action.put("tag","button");
|
||||||
|
|
||||||
|
text.put("tag","plain_text");
|
||||||
|
text.put("content",record.getTitle());
|
||||||
|
action.put("text",text);
|
||||||
|
action.put("type","primary");
|
||||||
|
action.put("url",url);
|
||||||
|
actions.add(action);
|
||||||
|
}
|
||||||
|
|
||||||
|
element.put("tag","action");
|
||||||
|
element.put("actions",actions);
|
||||||
|
elements.add(element);
|
||||||
|
//添加一个分隔线。
|
||||||
|
elements.add(dividingLineJson);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
JSONObject textFinally = new JSONObject();
|
||||||
|
textFinally.put("tag","lark_md");
|
||||||
|
textFinally.put("content","[以上都不是>>]("+backUrl + JumpLinkEnum.PROBLEM_KNOWLEDGE_BASE.getLink()+")");
|
||||||
|
|
||||||
|
JSONObject elementFinally = new JSONObject();
|
||||||
|
elementFinally.put("tag","div");
|
||||||
|
elementFinally.put("text",textFinally);
|
||||||
|
elements.add(elementFinally);
|
||||||
|
|
||||||
|
sendJson.put("elements",elements);
|
||||||
|
|
||||||
String token = null;
|
String token = null;
|
||||||
try {
|
try {
|
||||||
@@ -440,30 +521,13 @@ public class FeishuServiceImpl implements IFeishuService {
|
|||||||
Map<String, String> headerMap = new HashMap<>();
|
Map<String, String> headerMap = new HashMap<>();
|
||||||
headerMap.put("Authorization", "Bearer " + token);
|
headerMap.put("Authorization", "Bearer " + token);
|
||||||
headerMap.put("Content-Type", "application/json; charset=utf-8");
|
headerMap.put("Content-Type", "application/json; charset=utf-8");
|
||||||
// 设置消息标题
|
|
||||||
JSONObject zh_cn = new JSONObject();
|
|
||||||
zh_cn.put("title", "title");
|
|
||||||
// 设置消息内容
|
|
||||||
// 第一行
|
|
||||||
JSONObject contentOne = new JSONObject();
|
|
||||||
contentOne.put("tag", "text");
|
|
||||||
contentOne.put("text", sendJson);
|
|
||||||
List<JSONObject> contentList = new ArrayList<>();
|
|
||||||
contentList.add(contentOne);
|
|
||||||
|
|
||||||
List<List<JSONObject>> list = new ArrayList<>();
|
|
||||||
list.add(contentList);
|
|
||||||
zh_cn.put("content", list);
|
|
||||||
|
|
||||||
JSONObject post = new JSONObject();
|
|
||||||
post.put("zh_cn", zh_cn);
|
|
||||||
JSONObject contentObj = new JSONObject();
|
|
||||||
contentObj.put("post", post);
|
|
||||||
// 设置请求参数
|
// 设置请求参数
|
||||||
JSONObject paramsMap = new JSONObject();
|
JSONObject paramsMap = new JSONObject();
|
||||||
paramsMap.put("user_ids", userIds);
|
paramsMap.put("user_ids", userIds);
|
||||||
paramsMap.put("msg_type", "post");
|
paramsMap.put("msg_type", "interactive");
|
||||||
paramsMap.put("content", contentObj);
|
paramsMap.put("card", sendJson);
|
||||||
|
|
||||||
// 发送请求给飞书
|
// 发送请求给飞书
|
||||||
String response = null;
|
String response = null;
|
||||||
try {
|
try {
|
||||||
@@ -471,7 +535,6 @@ public class FeishuServiceImpl implements IFeishuService {
|
|||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
// 返回结果样例:{"code":0,"data":{"invalid_department_ids":[],"invalid_open_ids":[],"invalid_union_ids":[],"invalid_user_ids":[],"message_id":"bm-d595567e4f448fafe397bc916f0be646"},"msg":"ok"}
|
|
||||||
// 获取返回结果
|
// 获取返回结果
|
||||||
JSONObject tokenJson = JSONObject.parseObject(response);
|
JSONObject tokenJson = JSONObject.parseObject(response);
|
||||||
if(!tokenJson.get("code").toString().equals("0")) {
|
if(!tokenJson.get("code").toString().equals("0")) {
|
||||||
|
|||||||
+4
@@ -84,6 +84,10 @@ public class CountryCardManageReleaseDetailEO implements Serializable {
|
|||||||
@ApiModelProperty(value = "内容")
|
@ApiModelProperty(value = "内容")
|
||||||
private java.lang.String content;
|
private java.lang.String content;
|
||||||
|
|
||||||
|
/**如果是下拉选的话,把翻译后的值放到此字段中。*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private java.lang.String contentDropDownValue;
|
||||||
|
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String cut;
|
private String cut;
|
||||||
|
|
||||||
|
|||||||
+9
-2
@@ -72,12 +72,19 @@ public class ProblemKnowledgeBaseEO implements Serializable {
|
|||||||
/**问题分类展示名称*/
|
/**问题分类展示名称*/
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private java.lang.String problemTypeName;
|
private java.lang.String problemTypeName;
|
||||||
|
/**问题分类查询条件字段 多个*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private java.lang.String problemTypes;
|
||||||
|
|
||||||
/**市场*/
|
|
||||||
@Dict(dicCode = "region")
|
/**市场*/
|
||||||
|
//@Dict(dicCode = "region")
|
||||||
@Excel(name = "市场", width = 15)
|
@Excel(name = "市场", width = 15)
|
||||||
@ApiModelProperty(value = "市场")
|
@ApiModelProperty(value = "市场")
|
||||||
private java.lang.String targetMarket;
|
private java.lang.String targetMarket;
|
||||||
|
/**市场展示字段**/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private java.lang.String targetMarket_dicText;
|
||||||
|
|
||||||
/**文档库id*/
|
/**文档库id*/
|
||||||
@Excel(name = "文档库id", width = 15)
|
@Excel(name = "文档库id", width = 15)
|
||||||
|
|||||||
+13
@@ -148,6 +148,19 @@ public class CountryCardManageReleaseDetailEOServiceImpl extends ServiceImpl<Cou
|
|||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
data.setCountryCardTempItemEOList(collect);
|
data.setCountryCardTempItemEOList(collect);
|
||||||
|
|
||||||
|
if(StringUtils.isNotEmpty(data.getContent())){
|
||||||
|
String contentDropDownValue = countryCardTempItemEOList.stream().filter(countryCardTempItemEO -> {
|
||||||
|
boolean flag = false;
|
||||||
|
if (StringUtils.equals(data.getContent(), countryCardTempItemEO.getId())) {
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}).map(CountryCardTempItemEO::getItemText).collect(Collectors.joining(","));
|
||||||
|
|
||||||
|
//设置下拉框的value
|
||||||
|
data.setContentDropDownValue(contentDropDownValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+47
@@ -1,7 +1,9 @@
|
|||||||
package com.jero.modules.problemKnowledgeBase.service.impl;
|
package com.jero.modules.problemKnowledgeBase.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.jero.common.constant.enums.CutEnum;
|
||||||
import com.jero.common.system.query.QueryGenerator;
|
import com.jero.common.system.query.QueryGenerator;
|
||||||
|
import com.jero.common.system.vo.DictModel;
|
||||||
import com.jero.common.system.vo.LoginUser;
|
import com.jero.common.system.vo.LoginUser;
|
||||||
import com.jero.modules.problemKnowledgeBase.entity.*;
|
import com.jero.modules.problemKnowledgeBase.entity.*;
|
||||||
import com.jero.modules.problemKnowledgeBase.enums.CollectStatusEnum;
|
import com.jero.modules.problemKnowledgeBase.enums.CollectStatusEnum;
|
||||||
@@ -9,6 +11,8 @@ import com.jero.modules.problemKnowledgeBase.enums.PraiseStatusEnum;
|
|||||||
import com.jero.modules.problemKnowledgeBase.enums.ShowPermissionsEnum;
|
import com.jero.modules.problemKnowledgeBase.enums.ShowPermissionsEnum;
|
||||||
import com.jero.modules.problemKnowledgeBase.mapper.ProblemKnowledgeBaseEOMapper;
|
import com.jero.modules.problemKnowledgeBase.mapper.ProblemKnowledgeBaseEOMapper;
|
||||||
import com.jero.modules.problemKnowledgeBase.service.*;
|
import com.jero.modules.problemKnowledgeBase.service.*;
|
||||||
|
import com.jero.modules.system.enums.DicCodeEnum;
|
||||||
|
import com.jero.modules.system.service.ISysDictService;
|
||||||
import com.jero.modules.system.util.StringUtils;
|
import com.jero.modules.system.util.StringUtils;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.shiro.SecurityUtils;
|
import org.apache.shiro.SecurityUtils;
|
||||||
@@ -44,6 +48,8 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
|
|||||||
private IProblemKnowledgeBaseBrowsingHistoryEOService problemKnowledgeBaseBrowsingHistoryEOService;
|
private IProblemKnowledgeBaseBrowsingHistoryEOService problemKnowledgeBaseBrowsingHistoryEOService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IProblemKnowledgeBaseClassifyEOService problemKnowledgeBaseClassifyEOService;
|
private IProblemKnowledgeBaseClassifyEOService problemKnowledgeBaseClassifyEOService;
|
||||||
|
@Autowired
|
||||||
|
private ISysDictService sysDictService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存
|
* 保存
|
||||||
@@ -209,6 +215,7 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
|
|||||||
problemKnowledgeBaseClassifyEOList = this.problemKnowledgeBaseClassifyEOService.list(classifyEOQueryWrapper);
|
problemKnowledgeBaseClassifyEOList = this.problemKnowledgeBaseClassifyEOService.list(classifyEOQueryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<DictModel> regionList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode());
|
||||||
|
|
||||||
List<ProblemKnowledgeBaseClassifyEO> finalProblemKnowledgeBaseClassifyEOList = problemKnowledgeBaseClassifyEOList;
|
List<ProblemKnowledgeBaseClassifyEO> finalProblemKnowledgeBaseClassifyEOList = problemKnowledgeBaseClassifyEOList;
|
||||||
datas.forEach(data -> {
|
datas.forEach(data -> {
|
||||||
@@ -298,6 +305,30 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
|
|||||||
|
|
||||||
data.setProblemTypeName(problemTypeName);
|
data.setProblemTypeName(problemTypeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String targetMarket = data.getTargetMarket();
|
||||||
|
if(StringUtils.isNotEmpty(targetMarket) && CollectionUtils.isNotEmpty(regionList)){
|
||||||
|
String targetMarket_dicText = "";
|
||||||
|
if(StringUtils.equals(cut, CutEnum.CN.getValue())){
|
||||||
|
targetMarket_dicText = regionList.stream().filter(region -> {
|
||||||
|
boolean flag = false;
|
||||||
|
if (StringUtils.equals(targetMarket, region.getValue())) {
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}).map(DictModel::getText).collect(Collectors.joining(","));
|
||||||
|
}else if(StringUtils.equals(cut, CutEnum.EN.getValue())){
|
||||||
|
targetMarket_dicText = regionList.stream().filter(region -> {
|
||||||
|
boolean flag = false;
|
||||||
|
if (StringUtils.equals(targetMarket, region.getValue())) {
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}).map(DictModel::getTextEn).collect(Collectors.joining(","));
|
||||||
|
}
|
||||||
|
|
||||||
|
data.setTargetMarket_dicText(targetMarket_dicText);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -335,5 +366,21 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
|
|||||||
query.or().like(ProblemKnowledgeBaseEO::getContent,searchStr);
|
query.or().like(ProblemKnowledgeBaseEO::getContent,searchStr);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//根据分类查询 ,包含就查出来。
|
||||||
|
String problemTypes = problemKnowledgeBaseEO.getProblemTypes();
|
||||||
|
if(StringUtils.isNotEmpty(problemTypes)){
|
||||||
|
List<String> problemTypeList = Arrays.asList(problemTypes.split(","));
|
||||||
|
queryWrapper.and(query -> {
|
||||||
|
query.lambda().like(ProblemKnowledgeBaseEO::getProblemType,problemTypes);
|
||||||
|
if(CollectionUtils.isNotEmpty(problemTypeList)){
|
||||||
|
problemTypeList.forEach(type -> {
|
||||||
|
query.or(q -> {
|
||||||
|
q.lambda().like(ProblemKnowledgeBaseEO::getProblemType,type);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1255,4 +1255,5 @@ module.exports = {
|
|||||||
deleteNode:'If there is any file information, the file will be deleted. Are you sure to delete this data?',
|
deleteNode:'If there is any file information, the file will be deleted. Are you sure to delete this data?',
|
||||||
HaveReleased:'Have released',
|
HaveReleased:'Have released',
|
||||||
forward:'Forward',
|
forward:'Forward',
|
||||||
|
issuedBy:'Issued by',
|
||||||
}
|
}
|
||||||
@@ -1358,4 +1358,5 @@ module.exports = {
|
|||||||
deleteNode:'若有文件信息将同步删除,确认删除该条数据?',
|
deleteNode:'若有文件信息将同步删除,确认删除该条数据?',
|
||||||
HaveReleased:'已发布',
|
HaveReleased:'已发布',
|
||||||
forward:'转发',
|
forward:'转发',
|
||||||
|
issuedBy:'发布人',
|
||||||
}
|
}
|
||||||
@@ -190,7 +190,6 @@
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
console.log(this.contentList)
|
|
||||||
},
|
},
|
||||||
queryCountry(callback) {
|
queryCountry(callback) {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
|
|||||||
+18
-8
@@ -92,12 +92,11 @@
|
|||||||
<span class="title-text-text" :title="$t('market')">{{$t('market')}}</span>
|
<span class="title-text-text" :title="$t('market')">{{$t('market')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<a-form-model-item class="itemModel" prop="targetMarket">
|
<a-form-model-item class="itemModel" prop="targetMarket">
|
||||||
<j-dict-select-tag class="box-input" v-model="formInline.targetMarket"
|
<j-multi-select-tag class="box-input" v-model="formInline.targetMarket"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
@input="handleInput('targetMarket')"
|
:placeholder="$t('PleaseSelect')+$t('market')"
|
||||||
:placeholder="$t('PleaseSelect')+$t('market')"
|
:type="'select'"
|
||||||
:type="'select'"
|
:triggerChange="false" :dictCode="'region'"/>
|
||||||
:triggerChange="false" :dictCode="'region'"/>
|
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -110,6 +109,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<a-form-model-item class="itemModel" prop="standNumber">
|
<a-form-model-item class="itemModel" prop="standNumber">
|
||||||
<a-input class="box-input"
|
<a-input class="box-input"
|
||||||
|
:title="formInline.standNumber"
|
||||||
:disabled="true"
|
:disabled="true"
|
||||||
v-model="formInline.standNumber"
|
v-model="formInline.standNumber"
|
||||||
:placeholder="$t('PleaseEnter')+$t('standardNo')"/>
|
:placeholder="$t('PleaseEnter')+$t('standardNo')"/>
|
||||||
@@ -133,11 +133,12 @@
|
|||||||
<div class="title-text">
|
<div class="title-text">
|
||||||
<span class="title-text-text">{{$t('content')}}</span>
|
<span class="title-text-text">{{$t('content')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<a-form-model-item class="itemModel" prop="vehiclePlatform">
|
<a-form-model-item style="height: 300px" class="itemModel" prop="content">
|
||||||
<quill-editor
|
<quill-editor
|
||||||
style="height: 300px"
|
style="height: 300px"
|
||||||
:content="formInline.content"
|
:content="formInline.content"
|
||||||
:options="editorOption"
|
:options="editorOption"
|
||||||
|
@blur="quilleditorBlur"
|
||||||
@change="onEditorChange($event)"
|
@change="onEditorChange($event)"
|
||||||
/>
|
/>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
@@ -239,6 +240,13 @@
|
|||||||
message: this.$t('market') + this.$t('cannotEmpty'),
|
message: this.$t('market') + this.$t('cannotEmpty'),
|
||||||
trigger: 'change'
|
trigger: 'change'
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
content: [
|
||||||
|
{
|
||||||
|
max: 5000,
|
||||||
|
message: this.$t('content') + this.$t('cannotExceed') + 5000 + this.$t('Characters'),
|
||||||
|
trigger: 'change'
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
url: {
|
url: {
|
||||||
@@ -276,6 +284,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
quilleditorBlur() {
|
||||||
|
this.$refs.ruleForm.validateField('content')
|
||||||
|
},
|
||||||
getBase() {
|
getBase() {
|
||||||
getAction('/problemKnowledgeBase/problemKnowledgeBaseClassifyEO/list', {}).then((res) => {
|
getAction('/problemKnowledgeBase/problemKnowledgeBaseClassifyEO/list', {}).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
@@ -340,7 +351,6 @@
|
|||||||
}
|
}
|
||||||
,
|
,
|
||||||
onEditorChange({ quill, html, text }) {
|
onEditorChange({ quill, html, text }) {
|
||||||
console.log('editor change!', quill, html, text)
|
|
||||||
this.formInline.content = html
|
this.formInline.content = html
|
||||||
}
|
}
|
||||||
,
|
,
|
||||||
|
|||||||
+16
-2
@@ -53,7 +53,7 @@
|
|||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-content">
|
<div class="text-content">
|
||||||
{{item.content}}
|
{{item.contentOne}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -130,6 +130,7 @@
|
|||||||
? [...selectedTags, tag]
|
? [...selectedTags, tag]
|
||||||
: selectedTags.filter(t => t !== tag)
|
: selectedTags.filter(t => t !== tag)
|
||||||
this.selectedTags = nextSelectedTags
|
this.selectedTags = nextSelectedTags
|
||||||
|
this.getList()
|
||||||
},
|
},
|
||||||
ResetSearch() {
|
ResetSearch() {
|
||||||
this.searchStr = ''
|
this.searchStr = ''
|
||||||
@@ -160,16 +161,29 @@
|
|||||||
this.pageSize = pageSize
|
this.pageSize = pageSize
|
||||||
this.getList()
|
this.getList()
|
||||||
},
|
},
|
||||||
|
getText(str) {
|
||||||
|
let words = str.replace(/<[^<>]+>/g, '').replace(/ /gi, '') //这里是去除标签
|
||||||
|
return words.replace(/\s/g, '') //这里是去除空格
|
||||||
|
},
|
||||||
getList() {
|
getList() {
|
||||||
|
let selectedTags = JSON.parse(JSON.stringify(this.selectedTags))
|
||||||
let query = {
|
let query = {
|
||||||
pageNo: this.pageNo,
|
pageNo: this.pageNo,
|
||||||
pageSize: this.pageSize,
|
pageSize: this.pageSize,
|
||||||
searchStr: this.searchStr
|
searchStr: this.searchStr,
|
||||||
|
problemTypes: selectedTags.join(',')
|
||||||
}
|
}
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getAction(this.url.getInfoList, query).then((res) => {
|
getAction(this.url.getInfoList, query).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.conList = res.result.records
|
this.conList = res.result.records
|
||||||
|
if (this.conList && this.conList.length > 0) {
|
||||||
|
this.conList.forEach(val => {
|
||||||
|
if (val.content) {
|
||||||
|
val.contentOne = this.getText(val.content)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
this.total = res.result.total
|
this.total = res.result.total
|
||||||
this.loading = false
|
this.loading = false
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+16
-6
@@ -22,7 +22,7 @@
|
|||||||
<a-button class="box-button" style="margin-left: 8px" @click="ResetSearch">{{$t('reset')}}</a-button>
|
<a-button class="box-button" style="margin-left: 8px" @click="ResetSearch">{{$t('reset')}}</a-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="conList.length > 0" style="height: calc(100vh - 180px);overflow:auto;">
|
<div v-if="conList.length > 0" style="height: calc(100vh - 240px);overflow:auto;">
|
||||||
<div v-for="(item,index) in conList" :key="item.id">
|
<div v-for="(item,index) in conList" :key="item.id">
|
||||||
<div style="margin-bottom: 10px;position: relative;overflow: hidden">
|
<div style="margin-bottom: 10px;position: relative;overflow: hidden">
|
||||||
<!-- <a-checkbox :value="item.id" class="checkbox-left"></a-checkbox>-->
|
<!-- <a-checkbox :value="item.id" class="checkbox-left"></a-checkbox>-->
|
||||||
@@ -36,7 +36,8 @@
|
|||||||
<span class="text-header-text" style="cursor: pointer" v-html="item.title"></span>
|
<span class="text-header-text" style="cursor: pointer" v-html="item.title"></span>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-content" v-html="item.content">
|
<div class="text-content">
|
||||||
|
{{item.contentOne}}
|
||||||
</div>
|
</div>
|
||||||
<div class="text-text-right-text">
|
<div class="text-text-right-text">
|
||||||
<a style="margin-right: 10px" @click="edit(item)">{{$t('edit')}}</a>
|
<a style="margin-right: 10px" @click="edit(item)">{{$t('edit')}}</a>
|
||||||
@@ -113,6 +114,10 @@
|
|||||||
this.pageNo = 1
|
this.pageNo = 1
|
||||||
this.getList()
|
this.getList()
|
||||||
},
|
},
|
||||||
|
getText(str) {
|
||||||
|
let words = str.replace(/<[^<>]+>/g, '').replace(/ /gi, '') //这里是去除标签
|
||||||
|
return words.replace(/\s/g, '') //这里是去除空格
|
||||||
|
},
|
||||||
getList() {
|
getList() {
|
||||||
let query = {
|
let query = {
|
||||||
pageNo: this.pageNo,
|
pageNo: this.pageNo,
|
||||||
@@ -124,6 +129,13 @@
|
|||||||
getAction(this.url.getInfoList, query).then((res) => {
|
getAction(this.url.getInfoList, query).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.conList = res.result.records
|
this.conList = res.result.records
|
||||||
|
if (this.conList && this.conList.length > 0) {
|
||||||
|
this.conList.forEach(val => {
|
||||||
|
if (val.content) {
|
||||||
|
val.contentOne = this.getText(val.content)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
this.total = res.result.total
|
this.total = res.result.total
|
||||||
this.loading = false
|
this.loading = false
|
||||||
} else {
|
} else {
|
||||||
@@ -139,11 +151,9 @@
|
|||||||
},
|
},
|
||||||
titleClick(item) {
|
titleClick(item) {
|
||||||
let newUrl = this.$router.resolve({
|
let newUrl = this.$router.resolve({
|
||||||
path: '/docManage/library/detail',
|
path: '/problemKnowledgeBaseView',
|
||||||
query: {
|
query: {
|
||||||
id: item.id.slice(0, 32),
|
id: item.id
|
||||||
title: item.title,
|
|
||||||
serial_number: item.serial_number
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
window.open(newUrl.href, '_blank')
|
window.open(newUrl.href, '_blank')
|
||||||
|
|||||||
+19
-2
@@ -17,6 +17,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="padding-top: 68px;background: #fff">
|
<div style="padding-top: 68px;background: #fff">
|
||||||
<div class="detail-content" style="padding: 24px">
|
<div class="detail-content" style="padding: 24px">
|
||||||
|
<div class="content-text-top">
|
||||||
|
<span style="margin-right: 10px">
|
||||||
|
{{$t('issuedBy')}}:{{this.queryForm.createBy}}
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
{{$t('releaseDate')}}:{{this.queryForm.createTime}}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
<div class="content-text">
|
<div class="content-text">
|
||||||
<div class="text-field" v-for="(item,index) in standardContentList" :key="index">
|
<div class="text-field" v-for="(item,index) in standardContentList" :key="index">
|
||||||
<span class="text-field-left" :title="item.title">{{item.title}}</span>
|
<span class="text-field-left" :title="item.title">{{item.title}}</span>
|
||||||
@@ -104,11 +112,11 @@
|
|||||||
standardContentList: [
|
standardContentList: [
|
||||||
{
|
{
|
||||||
title: this.$t('problemClassification'),
|
title: this.$t('problemClassification'),
|
||||||
value: 'problemType'
|
value: 'problemTypeName'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('market'),
|
title: this.$t('market'),
|
||||||
value: 'targetMarket'
|
value: 'targetMarket_dicText'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('standardNo'),
|
title: this.$t('standardNo'),
|
||||||
@@ -493,4 +501,13 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.content-text-top {
|
||||||
|
width: 100%;
|
||||||
|
text-align: right;
|
||||||
|
color: #040B29;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 16px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
Reference in New Issue
Block a user