Commit 65888600 authored by caotao's avatar caotao

知识库代码提交

parent 5167791c
package com.yeejoin.amos.boot.biz.common.aop;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.DepartmentBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.bo.RoleBo;
import com.yeejoin.amos.boot.biz.common.interceptors.PermissionInterceptorContext;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import org.apache.commons.lang3.ObjectUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
......@@ -25,22 +36,11 @@ import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.DepartmentBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.bo.RoleBo;
import com.yeejoin.amos.boot.biz.common.interceptors.PermissionInterceptorContext;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
/**
* controller层切面 用于用户数据缓存 供 sql自动填充使用 (使用粒度过大的Aop会创建大量代理对象,影响性能,占用内存,考虑使用
......@@ -80,21 +80,27 @@ public class ControllerAop {
} else {
return;
}
// 不需要添加请求头的接口
String[] url = new String[] { "/api/user/save/curCompany", "/jcs/command/lookHtmlText",
"/jcs/common/duty-person/findByDutyAreaId", "/tzs/wechatBack", "/tzs/elevator/getElevatorInfo",
"/openapi/bizToken/applyToken"
,"/tzs/flc-unit-info/region/tree"
// ,"/tzs/reg-unit-info/management-unit/tree",
//"/tzs/reg-unit-info/unit-type/list"
//+ ",/tzs/reg-unit-info/management-unit/tree","/tzs/flc-unit-info/region/tree", "/tzs/reg-unit-info/unit-type/list"
};
if (request.getRequestURI().contains("/tzs/reg-unit-info") || request.getRequestURI().contains("/tzs/flc-unit-info")) {
return;
}
// 不需要添加请求头的接口,如使用url中有PathVariable,则使用正则表达式匹配
List<String> urls = Lists.newArrayList();
urls.add("/api/user/save/curCompany");
urls.add("/jcs/command/lookHtmlText");
urls.add("^/jcs/common/duty-person/findByDutyAreaId/[A-Za-z0-9]+$");
urls.add("/tzs/wechatBack");
urls.add("/tzs/elevator/getElevatorInfo");
urls.add("/openapi/bizToken/applyToken");
urls.add("/tzs/flc-unit-info/region/tree");
urls.add("/tzs/reg-unit-info/management-unit/tree");
urls.add("/tzs/reg-unit-info/unit-type/list");
urls.add("^/tzs/flc-unit-info/hasExistPhone/[0-9]+$");
urls.add("^/tzs/flc-unit-info/sendTelCode/[0-9]+$");
urls.add("^/tzs/reg-unit-info/[A-Za-z0-9]+/check$");
urls.add("^/tzs/flc-unit-info/verifyTelCode/[A-Za-z0-9]+/[A-Za-z0-9]+");
urls.add("^/tzs/flc-unit-info/hasExistUser/[A-Za-z0-9_-]+");
urls.add("/tzs/reg-unit-info/save");
// 获取请求路径
for (String uri : url) {
if (request.getRequestURI().indexOf(uri) != -1) {
for (String uri : urls) {
Pattern p = Pattern.compile(uri);
if (p.matcher(request.getRequestURI()).matches()) {
return;
}
}
......
......@@ -21,6 +21,10 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<!-- 规则模块 -->
<dependency>
<groupId>com.yeejoin</groupId>
......@@ -74,20 +78,28 @@
<artifactId>html2pdf</artifactId>
<version>2.0.1</version>
</dependency>
<!-- 解析excel -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<!-- 解析excel -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!-- 针对2007以上版本的库 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<!-- 针对2003版本的库 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>fr.opensagres.poi.xwpf.converter.xhtml</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies>
</project>
package com.yeejoin.amos.knowledgebase.face.orm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDocContent;
import org.apache.ibatis.annotations.Param;
......@@ -9,7 +10,7 @@ import java.util.Map;
/**
* <p>
* 知识库文档存储 Mapper 接口
* 知识库文档存储 Mapper 接口
* </p>
*
* @author 子杨
......@@ -18,18 +19,24 @@ import java.util.Map;
public interface DocContentMapper extends BaseMapper<KnowledgeDocContent> {
List<Map<String,Long>> searchForDocIds(@Param("agencyCode") String agencyCode,
@Param("queryStr") String queryStr,
@Param("docStatus")String []docStatus,
@Param("auditStatus")String [] auditStatus,
@Param("userId")String userId,
@Param("orgCode")String orgCode,
@Param("offset") long offset,
@Param("length") long length);
List<Map<String, Long>> searchForDocIds(
@Param("agencyCode") String agencyCode,
@Param("queryStr") String queryStr,
@Param("docStatus") String[] docStatus,
@Param("auditStatus") String[] auditStatus,
@Param("userId") String userId,
@Param("orgCode") String orgCode,
@Param("offset") long offset,
@Param("length") long length);
List<Map<String,Object>> queryDocBaseInfoList(Map<String, Object> paramMap);
List<Map<String, Object>> queryDocBaseInfoList(Map<String, Object> paramMap);
int queryDocBaseInfoTotal(Map<String, Object> paramMap);
List<Long> getAllPublishedDocIds();
IPage<KnowledgeDocContent> pageByType(
IPage<KnowledgeDocContent> page,
@Param("typeId") Long typeId,
@Param("tagId") Long tagId);
}
\ No newline at end of file
package com.yeejoin.amos.knowledgebase.face.orm.dao;
import com.yeejoin.amos.knowledgebase.face.orm.entity.ESDocEntity;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.repository.ElasticsearchCrudRepository;
public interface ESDocRepository extends ElasticsearchCrudRepository<ESDocEntity, Long> {
......
......@@ -2,7 +2,9 @@ package com.yeejoin.amos.knowledgebase.face.orm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowlegeStatisticsRecord;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -37,5 +39,21 @@ public interface StatisticsRecordMapper extends BaseMapper<KnowlegeStatisticsRec
* 按类型查询/按时间分段总计
*/
List<Map<String, Object>> selectCountByNameAndDateRange(Map<String, Object> queryMap);
List<Map<String, Object>> tagStatisticsMonth(@Param("tag")String tag, @Param("startDate")Date startDate, @Param("endDate")Date endDate);
List<Map<String, Object>> tagStatisticsYear(@Param("tag")String tag, @Param("startDate")Date startDate, @Param("endDate")Date endDate);
List<Map<String, Object>> docStatisticsMonth(@Param("categoryName")String categoryName, @Param("startDate")Date startDate, @Param("endDate")Date endDate);
List<Map<String, Object>> docStatisticsYear(@Param("categoryName")String categoryName, @Param("startDate")Date startDate, @Param("endDate")Date endDate);
List<Map<String, Object>> tagChartStatistics(@Param("tag")String tag, @Param("startDate")Date startDate, @Param("endDate")Date endDate,@Param("splitSQL")String splitSQL);
List<Map<String, Object>> tagTimeChartStatistics(@Param("startDate")Date startDate, @Param("endDate")Date endDate,@Param("splitSQL")String splitSQL);
List<Map<String, Object>> docChartStatistics(@Param("startDate")Date startDate, @Param("endDate")Date endDate);
List<Map<String, Object>> docBurnChartStatistics(@Param("startDate")Date startDate,@Param("endDate") Date endDate);
}
\ No newline at end of file
package com.yeejoin.amos.knowledgebase.face.orm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagValueModel;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagValue;
import org.apache.ibatis.annotations.Param;
......
......@@ -2,9 +2,9 @@ package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import java.util.Date;
......
......@@ -2,9 +2,9 @@ package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
......
......@@ -2,9 +2,9 @@ package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
......
......@@ -2,9 +2,9 @@ package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
......
......@@ -2,9 +2,9 @@ package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
......
......@@ -2,9 +2,9 @@ package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
......
......@@ -2,9 +2,9 @@ package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
......
......@@ -2,9 +2,9 @@ package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
......
......@@ -2,9 +2,9 @@ package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
......
......@@ -2,9 +2,9 @@ package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
......
......@@ -2,9 +2,9 @@ package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
......
......@@ -2,9 +2,9 @@ package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
......
......@@ -24,6 +24,29 @@
</exclusion>
</exclusions>
</dependency>
<!-- 解析excel -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!-- 针对2007以上版本的库 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<!-- 针对2003版本的库 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>fr.opensagres.poi.xwpf.converter.xhtml</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies>
</project>
//package com.yeejoin.amos.knowledgebase.config;
//
//import com.baomidou.mybatisplus.core.toolkit.Sequence;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
///**
// * @author 杨博超
// * @ClassName Config
// * @Deacription TODO
// **/
//@Configuration
//public class Config {
//
// @Bean
// public Sequence sequence() {
// return new Sequence();
// }
//}
package com.yeejoin.amos.knowledgebase.config;
import com.baomidou.mybatisplus.core.toolkit.Sequence;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author 杨博超
* @ClassName Config
* @Deacription TODO
**/
@Configuration
public class Config {
@Bean
public Sequence sequence() {
return new Sequence();
}
}
......@@ -2,12 +2,7 @@ package com.yeejoin.amos.knowledgebase.config;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
......@@ -21,31 +16,17 @@ public class ElasticSearchClientConfig {
@Value("${spring.elasticsearch.rest.uris}")
private String uris;
@Value("${elasticsearch.username}")
private String username;
@Value("${elasticsearch.password}")
private String password;
@Bean
@Qualifier("highLevelClient")
public RestHighLevelClient restHighLevelClient() {
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(username, password));
try {
String url = uris.replace("http://", "");
final String[] parts = StringUtils.split(url, ":");
HttpHost httpHost = new HttpHost(parts[0], Integer.parseInt(parts[1]), "http");
RestClientBuilder builder = RestClient.builder(httpHost);
builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
httpClientBuilder.disableAuthCaching();
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
});
builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
// 该方法接收一个RequestConfig.Builder对象,对该对象进行修改后然后返回。
@Override
......
......@@ -34,6 +34,7 @@ import java.util.List;
public class DocAnnotateResource {
private final Logger logger = LogManager.getLogger(DocAnnotateResource.class);
@Autowired
private DocAnnotateService docAnnotateService;
......
......@@ -86,7 +86,7 @@ public class DocCategoryResource {
return ResponseHelper.buildResponse(docCategoryService.queryForKnowledgeDocCategoryList(parentId));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@ApiOperation(value = "文档分类树查询")
@RequestMapping(value = "/tree", method = RequestMethod.GET)
public ResponseModel<Collection<KnowledgeDocCategoryModel>> docCategoryTree() {
......
package com.yeejoin.amos.knowledgebase.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDocCommentsModel;
import com.yeejoin.amos.knowledgebase.face.service.DocCommentsService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.logging.log4j.LogManager;
......@@ -11,11 +10,11 @@ import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.StringUtil;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.doc.TycloudResource;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
......
package com.yeejoin.amos.knowledgebase.controller;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.knowledgebase.face.enumeration.DynamicsFunctional;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDocContentModel;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDocContent;
import com.yeejoin.amos.knowledgebase.face.service.DocContentService;
import com.yeejoin.amos.knowledgebase.face.service.DocLibraryService;
import com.yeejoin.amos.knowledgebase.face.service.DynamicsOptionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.StringUtil;
......@@ -22,16 +21,9 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.knowledgebase.face.enumeration.DynamicsFunctional;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDocContentModel;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDocContent;
import com.yeejoin.amos.knowledgebase.face.service.DocContentService;
import com.yeejoin.amos.knowledgebase.face.service.DocLibraryService;
import com.yeejoin.amos.knowledgebase.face.service.DynamicsOptionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
/**
* <p>
......@@ -129,7 +121,7 @@ public class DocContentResource {
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@ApiOperation(value = "查询单个文档内容信息")
@RequestMapping(value = "/{sequenceNbr}", method = RequestMethod.GET)
public ResponseModel<KnowledgeDocContentModel> seleteOne(@PathVariable("sequenceNbr") Long sequenceNbr) {
......@@ -145,48 +137,6 @@ public class DocContentResource {
}
// @TycloudOperation(ApiLevel = UserType.AGENCY)
// @ApiOperation(value = "分页查询文档信息")
// @RequestMapping(value = "/page", method = RequestMethod.GET)
// public ResponseModel<Page> queryDocPage(HttpServletRequest request) {
// Map paramMap = request.getParameterMap();
//
// String[] auditStatus = request.getParameterValues("auditStatus");
// String[] docStatus = request.getParameterValues("docStatus");
//
// if (!ValidationUtil.isEmpty(auditStatus) && auditStatus[0].length() == 0) {
// auditStatus = null;
// }
// if (!ValidationUtil.isEmpty(docStatus) && docStatus[0].length() == 0) {
// docStatus = null;
// }
// Date createTimeLeft = null;
// Date createTimeRight = null;
// try {
// if (!ValidationUtil.isEmpty(paramMap.get("createTimeLeft"))) {
// createTimeLeft = DateUtil.formatStringToDate(request.getParameterValues("createTimeLeft")[0], null);
// }
// if (!ValidationUtil.isEmpty(paramMap.get("createTimeRight"))) {
// createTimeRight = DateUtil.formatStringToDate(request.getParameterValues("createTimeRight")[0], null);
// }
// } catch (Exception e) {
// throw new BadRequest("时间范围参数格式有误");
// }
// int offset = Integer.parseInt(request.getParameterValues("offset")[0]);
// int end = Integer.parseInt(request.getParameterValues("end")[0]);
//
// paramMap.remove("offset");
// paramMap.remove("end");
// paramMap.remove("total");
// paramMap.remove("auditStatus");
// paramMap.remove("docStatus");
// paramMap.remove("createTimeLeft");
// paramMap.remove("createTimeRight");
//
// return ResponseHelper.buildResponse(docContentService.queryDocPage(offset, end, paramMap, auditStatus, docStatus, createTimeLeft, createTimeRight));
// }
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "分页查询文档信息")
@RequestMapping(value = "/page", method = RequestMethod.GET)
......@@ -206,20 +156,6 @@ public class DocContentResource {
}
// @TycloudOperation(ApiLevel = UserType.AGENCY)
// @ApiOperation(value = "字符串模糊查询文档(搜索项为文档标题和标签名称)")
// @RequestMapping(value = "/title/tag", method = RequestMethod.GET)
// public ResponseModel searchForDocs(
// @RequestParam(value = "queryStr", defaultValue = "") String queryStr,
// @RequestParam(value = "current") int current,
// @RequestParam(value = "size") int size) {
// Page page = new Page();
// page.setCurrent(current);
// page.setSize(size);
// return ResponseHelper.buildResponse(docContentService.searchForDoc(page, queryStr));
// }
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "文档被点赞/吐槽状态")
@RequestMapping(value = "/{sequenceNbr}/statistics/likes", method = RequestMethod.GET)
......@@ -227,12 +163,5 @@ public class DocContentResource {
@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(docContentService.queryLikeOrDis(sequenceNbr));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "获取简单的预案信息")
@RequestMapping(value = "/getSimpleDetail/{sequenceNbr}", method = RequestMethod.GET)
public ResponseModel<List<Map<String, Object>>> getSimpleDetail(
@PathVariable(value = "sequenceNbr") String sequenceNbr) {
return ResponseHelper.buildResponse(docContentService.getSimpleDetail(sequenceNbr));
}
}
......@@ -9,7 +9,6 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.StringUtil;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
......@@ -51,10 +50,12 @@ public class DocOuterResource {
public ResponseModel<Page> queryDocPage(@RequestParam(value = "current") Integer current,
@RequestParam(value = "size") Integer size,
@RequestParam(value = "code", required = false) String code,
@RequestParam(value = "docTitle", required = false) String docTitle) {
@RequestParam(value = "docTitle", required = false) String docTitle,
@RequestParam(value = "directoryId", required = false) Long directoryId,
@RequestParam(value = "orgCode", required = false) String orgCode) {
Page page = new Page(current, size);
return ResponseHelper.buildResponse(docLibraryService.queryDocPage(page, docTitle, code));
return ResponseHelper.buildResponse(docLibraryService.queryDocPage(page, docTitle, code,directoryId,orgCode));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
......
package com.yeejoin.amos.knowledgebase.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.knowledgebase.face.service.MessageService;
import io.swagger.annotations.Api;
......@@ -42,7 +40,7 @@ public class MessageResource {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "查询用户的消息列表.")
@RequestMapping(value = "/list/owner", method = RequestMethod.GET)
public ResponseModel list(@RequestParam(value = "messageType", required = false) String messageType) {
public ResponseModel listOwner(@RequestParam(value = "messageType", required = false) String messageType) {
if (ValidationUtil.isEmpty(messageType)) {
messageType = null;
}
......@@ -129,7 +127,7 @@ public class MessageResource {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "分页查询查询用户的消息列表.")
@RequestMapping(value = "/list/page", method = RequestMethod.GET)
public ResponseModel<Page> list(
public ResponseModel<Page> listPage(
@RequestParam(value = "current", required = true) int current,
@RequestParam(value = "size", required = true) int size,
@RequestParam(value = "messageType", required = false) String messageType) {
......
......@@ -2,8 +2,6 @@ package com.yeejoin.amos.knowledgebase.controller;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagGroupModel;
import com.yeejoin.amos.knowledgebase.face.service.TagGroupService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.logging.log4j.LogManager;
......@@ -11,10 +9,10 @@ import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.doc.TycloudResource;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
......
package com.yeejoin.amos.knowledgebase.controller;
import java.util.List;
import com.yeejoin.amos.knowledgebase.face.service.TagInstanceService;
import io.swagger.annotations.Api;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.doc.TycloudResource;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagInstanceModel;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagInstance;
import com.yeejoin.amos.knowledgebase.face.service.TagInstanceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* <p>
......@@ -41,25 +27,4 @@ public class TagInstanceResource {
private final Logger logger = LogManager.getLogger(TagInstanceResource.class);
@Autowired
private TagInstanceService tagInstanceService;
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "根据主键查询实例标签")
@RequestMapping(value = "find/{id}", method = RequestMethod.GET)
public ResponseModel<KnowledgeTagInstance> findById(@PathVariable("id") Long id) {
return ResponseHelper.buildResponse(tagInstanceService.findById(id));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "根据targetSeq查询实例标签")
@RequestMapping(value = "targetSeq/{id}", method = RequestMethod.GET)
public ResponseModel<List<KnowledgeTagInstanceModel>> queryListByTargetSeq(@PathVariable("id") Long id) {
return ResponseHelper.buildResponse(tagInstanceService.queryListByTargetSeq(id));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "根据targetSeq查询实例标签")
@RequestMapping(value = "getTarget/byName", method = RequestMethod.GET)
public ResponseModel<List<KnowledgeTagInstanceModel>> queryListByTagName(@RequestParam String name) {
return ResponseHelper.buildResponse(tagInstanceService.queryListByTagName(name));
}
}
package com.yeejoin.amos.knowledgebase.controller;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagModel;
import com.yeejoin.amos.knowledgebase.face.service.TagService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.StringUtil;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
......@@ -18,13 +17,6 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagModel;
import com.yeejoin.amos.knowledgebase.face.service.TagService;
import com.yeejoin.amos.knowledgebase.face.util.Constants;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* <p>
* 标签库 前端控制器
......@@ -107,7 +99,7 @@ public class TagResource {
@ApiOperation(value = "查询TOP15")
@RequestMapping(value = "/list/top", method = RequestMethod.GET)
public ResponseModel selectForList(@RequestParam(value = "quoteType", required = false) String quoteType) {
boolean isAll = ValidationUtil.equalsIgnoreCase(quoteType, Constants.APPKEY_ALL);
boolean isAll = ValidationUtil.equalsIgnoreCase(quoteType, TagService.APPKEY_ALL);
return ResponseHelper.buildResponse(tagService.queryTopList(isAll));
}
......@@ -123,14 +115,14 @@ public class TagResource {
@ApiOperation(value = "启用标签")
@RequestMapping(value = "status/activate/{ids}", method = RequestMethod.PUT)
public ResponseModel batchActivate(@PathVariable(value = "ids") String ids) {
return ResponseHelper.buildResponse(tagService.updateTagStatus(StringUtil.String2LongList(ids), Constants.TAG_STATUS_ACTIVATE));
return ResponseHelper.buildResponse(tagService.updateTagStatus(StringUtil.String2LongList(ids), TagService.TAG_STATUS_ACTIVATE));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "停用标签")
@RequestMapping(value = "status/deactivate/{ids}", method = RequestMethod.PUT)
public ResponseModel batchDeactivate(@PathVariable(value = "ids") String ids) {
return ResponseHelper.buildResponse(tagService.updateTagStatus(StringUtil.String2LongList(ids), Constants.TAG_STATUS_DEACTIVATE));
return ResponseHelper.buildResponse(tagService.updateTagStatus(StringUtil.String2LongList(ids), TagService.TAG_STATUS_DEACTIVATE));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
......
package com.yeejoin.amos.knowledgebase.controller;
import com.yeejoin.amos.knowledgebase.face.service.TagValueService;
import io.swagger.annotations.Api;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.doc.TycloudResource;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.yeejoin.amos.knowledgebase.face.service.TagValueService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* <p>
......@@ -36,17 +27,5 @@ public class TagValueResource {
private final Logger logger = LogManager.getLogger(TagValueResource.class);
@Autowired
private TagValueService tagValueService;
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "获取所有当前系统的值标签的实例值")
@RequestMapping(value = "/getAll/tegartValue", method = RequestMethod.GET)
public ResponseModel<Object> getAllTegartValue(@RequestParam String value) {
return ResponseHelper.buildResponse(tagValueService.getAllTegartValue(value));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "获取所有当前系统的值标签的实例值")
@RequestMapping(value = "/getOne/", method = RequestMethod.GET)
public ResponseModel<Object> queryByInstance(@RequestParam Long id) {
return ResponseHelper.buildResponse(tagValueService.queryByInstance(id));
}
}
package com.yeejoin.amos.knowledgebase.face.enumeration;
/**
* @author 杨博超
* @ClassName DynamicsFunctional
**/
public enum DynamicsFunctional {
DOC_BASEINFO,//文档基础信息动态字段配置
VALUE_TAG_CONFIG//标签配置信息动态字段
}
package com.yeejoin.amos.knowledgebase.face.enumeration;
import java.util.Comparator;
import java.util.List;
/**
* @author 杨博超
* @ClassName RoleName
* @Deacription
**/
public enum KnowledgeRoleName {
VIEWER("浏览者", 0, 0, 1, 1),
INPUTER("录入者", 0, 1, 1, 1),
AUDITOR("审核者", 0, 2, 1, 1),
TAG_MANAGER("标签管理员", 1, 0, 0, 0);
private String roleName;
private int tagManagerScore;
private int docManagerScore;
private int docGroupManagerScore;
private int searchScore;
KnowledgeRoleName(String roleName, int tagManagerScore, int docManagerScore, int docGroupManagerScore, int searchScore) {
this.roleName = roleName;
this.tagManagerScore = tagManagerScore;
this.docManagerScore = docManagerScore;
this.docGroupManagerScore = docGroupManagerScore;
this.searchScore = searchScore;
}
public String getRoleName() {
return roleName;
}
public int getTagManagerScore() {
return tagManagerScore;
}
public int getDocManagerScore() {
return docManagerScore;
}
public int getDocGroupManagerScore() {
return docGroupManagerScore;
}
public int getSearchScore() {
return searchScore;
}
public static KnowledgeRoleName getInstance(String roleName) {
KnowledgeRoleName knowledgeRoleName = null;
for (KnowledgeRoleName roleNameIns : KnowledgeRoleName.values()) {
if (roleNameIns.getRoleName().equals(roleName))
knowledgeRoleName = roleNameIns;
}
return knowledgeRoleName;
}
public static KnowledgeRoleName getMaxScore(List<String> roleNames, Comparator<KnowledgeRoleName> comparator) {
KnowledgeRoleName maxScore = null;
for (String roleName : roleNames) {
if (maxScore == null) {
maxScore = getInstance(roleName);
continue;
}
KnowledgeRoleName current = getInstance(roleName);
if(comparator.compare(current,maxScore) > 0)
maxScore = current;
}
return maxScore;
}
}
package com.yeejoin.amos.knowledgebase.face.enumeration;
/**
* @author 杨博超
* @ClassName OperateType
* @Deacription 内容操作类型
**/
public enum OperateType {
LIKE, //点赞
DIS_LIKE, //吐槽
COMMENT, //评论
REFERENCE, //引用
COLLECT //收藏
}
package com.yeejoin.amos.knowledgebase.face.enumeration;
/**
* @author 杨博超
* @ClassName DataType
* @Deacription 动态配置的值类型
**/
public enum OptionDataType {
String, Integer,datetime, Enum,Double,Date
}
package com.yeejoin.amos.knowledgebase.face.model;
import org.typroject.tyboot.core.foundation.utils.TreeNode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.foundation.utils.TreeNode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import java.util.Collection;
......
package com.yeejoin.amos.knowledgebase.face.model;
import com.baomidou.mybatisplus.annotation.TableField;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
/**
* <p>
......
package com.yeejoin.amos.knowledgebase.face.model;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
/**
* <p>
......
package com.yeejoin.amos.knowledgebase.face.model;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
/**
* <p>
* 知识库系统动态选项配置的实例值
......
package com.yeejoin.amos.knowledgebase.face.model;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
/**
* <p>
* 知识库内容交互计数表
......
package com.yeejoin.amos.knowledgebase.face.model;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
/**
* <p>
* 知识库内容交互记录
......
package com.yeejoin.amos.knowledgebase.face.model;
import org.typroject.tyboot.core.foundation.utils.TreeNode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.foundation.utils.TreeNode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import java.util.Collection;
......
package com.yeejoin.amos.knowledgebase.face.model;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import java.util.List;
......
package com.yeejoin.amos.knowledgebase.face.model;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import java.util.List;
import java.util.Map;
......
package com.yeejoin.amos.knowledgebase.face.model;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
/**
* <p>
* 值标签的实例值
......
package com.yeejoin.amos.knowledgebase.face.orm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDocContent;
import org.apache.ibatis.annotations.Param;
......@@ -9,7 +10,7 @@ import java.util.Map;
/**
* <p>
* 知识库文档存储 Mapper 接口
* 知识库文档存储 Mapper 接口
* </p>
*
* @author 子杨
......@@ -18,18 +19,24 @@ import java.util.Map;
public interface DocContentMapper extends BaseMapper<KnowledgeDocContent> {
List<Map<String,Long>> searchForDocIds(@Param("agencyCode") String agencyCode,
@Param("queryStr") String queryStr,
@Param("docStatus")String []docStatus,
@Param("auditStatus")String [] auditStatus,
@Param("userId")String userId,
@Param("orgCode")String orgCode,
@Param("offset") long offset,
@Param("length") long length);
List<Map<String, Long>> searchForDocIds(
@Param("agencyCode") String agencyCode,
@Param("queryStr") String queryStr,
@Param("docStatus") String[] docStatus,
@Param("auditStatus") String[] auditStatus,
@Param("userId") String userId,
@Param("orgCode") String orgCode,
@Param("offset") long offset,
@Param("length") long length);
List<Map<String,Object>> queryDocBaseInfoList(Map<String, Object> paramMap);
List<Map<String, Object>> queryDocBaseInfoList(Map<String, Object> paramMap);
int queryDocBaseInfoTotal(Map<String, Object> paramMap);
List<Long> getAllPublishedDocIds();
IPage<KnowledgeDocContent> pageByType(
IPage<KnowledgeDocContent> page,
@Param("typeId") Long typeId,
@Param("tagId") Long tagId);
}
\ No newline at end of file
package com.yeejoin.amos.knowledgebase.face.orm.dao;
import com.yeejoin.amos.knowledgebase.face.orm.entity.ESDocEntity;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.repository.ElasticsearchCrudRepository;
public interface ESDocRepository extends ElasticsearchCrudRepository<ESDocEntity, Long> {
......
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.knowledgebase.face.orm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowlegeStatisticsRecord;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
......@@ -9,7 +10,7 @@ import java.util.Map;
/**
* <p>
* 标签分组 Mapper 接口
* 标签分组 Mapper 接口
* </p>
*
* @author 子杨
......@@ -17,43 +18,42 @@ import java.util.Map;
*/
public interface StatisticsRecordMapper extends BaseMapper<KnowlegeStatisticsRecord> {
/**
* 表清空
*
* @return
*/
void deleteAll();
/**
* 表清空
* @return
*/
void deleteAll();
/**
* 查询灾情总计
*
* @return
*/
Map<String, Object> selectDisasterCount();
/**
* 查询灾情总计
* @return
*/
Map<String, Object> selectDisasterCount();
/**
* 按类型分组查询
*/
List<Map<String, Object>> selectCategoryByName(String recordName);
/**
* 按类型分组查询
*/
List<Map<String, Object>> selectCategoryByName(String recordName);
/**
* 按类型查询/按时间分段总计
*/
List<Map<String, Object>> selectCountByNameAndDateRange(Map<String, Object> queryMap);
/**
* 按类型查询/按时间分段总计
*/
List<Map<String, Object>> selectCountByNameAndDateRange(Map<String, Object> queryMap);
List<Map<String, Object>> tagStatisticsMonth(@Param("tag")String tag, @Param("startDate")Date startDate, @Param("endDate")Date endDate);
List<Map<String, Object>> tagStatisticsMonth(String tag, Date startDate, Date endDate);
List<Map<String, Object>> tagStatisticsYear(@Param("tag")String tag, @Param("startDate")Date startDate, @Param("endDate")Date endDate);
List<Map<String, Object>> tagStatisticsYear(String tag, Date startDate, Date endDate);
List<Map<String, Object>> docStatisticsMonth(@Param("categoryName")String categoryName, @Param("startDate")Date startDate, @Param("endDate")Date endDate);
List<Map<String, Object>> docStatisticsMonth(String categoryName, Date startDate, Date endDate);
List<Map<String, Object>> docStatisticsYear(String categoryName, Date startDate, Date endDate);
List<Map<String, Object>> docStatisticsYear(@Param("categoryName")String categoryName, @Param("startDate")Date startDate, @Param("endDate")Date endDate);
List<Map<String, Object>> tagChartStatistics(String tag, Date startDate, Date endDate,String splitSQL);
List<Map<String, Object>> tagChartStatistics(@Param("tag")String tag, @Param("startDate")Date startDate, @Param("endDate")Date endDate,@Param("splitSQL")String splitSQL);
List<Map<String, Object>> tagTimeChartStatistics(Date startDate, Date endDate,String splitSQL);
List<Map<String, Object>> tagTimeChartStatistics(@Param("startDate")Date startDate, @Param("endDate")Date endDate,@Param("splitSQL")String splitSQL);
List<Map<String, Object>> docChartStatistics(Date startDate, Date endDate);
List<Map<String, Object>> docChartStatistics(@Param("startDate")Date startDate, @Param("endDate")Date endDate);
List<Map<String, Object>> docBurnChartStatistics(Date startDate, Date endDate);
List<Map<String, Object>> docBurnChartStatistics(@Param("startDate")Date startDate,@Param("endDate") Date endDate);
}
\ No newline at end of file
package com.yeejoin.amos.knowledgebase.face.orm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagValueModel;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagValue;
import org.apache.ibatis.annotations.Param;
......
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.DateFormat;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import java.util.Date;
import java.util.List;
@Data
@Accessors(chain = true)
@Document(indexName = "knowledgebase", type = "doc", shards = 1, replicas = 0)
public class ESDocEntity {
/** 主键 */
@Id
private Long sequenceNbr;
/** 文档标题 */
@Field(type = FieldType.Text, searchAnalyzer = "ik_max_word", analyzer = "ik_max_word")
private String docTitle;
/** 主键 */
private Long directoryId;
/** 分类 */
@Field(type = FieldType.Text, searchAnalyzer = "ik_smart", analyzer = "ik_smart")
private String directoryName;
/** 作者 */
@Field(type = FieldType.Text, searchAnalyzer = "ik_smart", analyzer = "ik_smart")
private String author;
/** 发布时间 */
@Field(type = FieldType.Date, format = DateFormat.basic_date_time)
private Date lastUpdateTime;
/** 正文文字 */
@Field(type = FieldType.Text, searchAnalyzer = "ik_max_word", analyzer = "ik_max_word")
private String textContent;
/** 基本信息 */
@Field(type = FieldType.Text, searchAnalyzer = "ik_smart", analyzer = "ik_max_word")
private String docInfo;
/** 文档正文HTML */
private String htmlContent;
/** 文档摘要 */
private String summary;
/** 文档标签 */
@Field(type = FieldType.Nested, includeInParent = true)
private List<ESTagEntity> docTags;
/** 文档内容标签 */
@Field(type = FieldType.Nested, includeInParent = true)
private List<ESTagEntity> contentTags;
private String docJson;
@Field(type = FieldType.Keyword)
private String sortStr;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import org.springframework.data.elasticsearch.annotations.Parent;
@Data
@Accessors(chain = true)
@Document(indexName = "knowledgebase",type = "tag", shards = 1, replicas = 0)
public class ESTagEntity {
/** 主键 */
@Id
private Long sequenceNbr;
private Long tagSeq;
/** 标签名称 */
@Field(type = FieldType.Text, searchAnalyzer = "ik_max_word", analyzer = "ik_max_word")
private String tagName;
/** 标签值信息 */
@Field(type = FieldType.Text, searchAnalyzer = "ik_smart", analyzer = "ik_smart")
private String tagInfo;
/**原生数据*/
private String tagJson;
/** 绑定外键 */
@Parent(type = "doc")
private String docId;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import java.util.Date;
/**
* <p>
* 知识库文档注释
* </p>
*
* @author ningtianqing
* @since 2020-09-16
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_doc_annotate")
public class KnowledgeDocAnnotate extends BaseEntity {
/**
* 文档id
*/
@TableField("DOC_SEQ")
private Long docSeq;
/**
* 添加注释的用户id
*/
@TableField("USER_ID")
private String userId;
/**
* 注释内容
*/
@TableField("ANNOTATE_CONTENT")
private String annotateContent;
/**
* 注释位置信息(前端定义和使用的内容)
*/
@TableField("POSITION_INFO")
private String positionInfo;
/**
* 创建时间
*/
@TableField("CREATE_TIME")
private Date createTime;
/**
* 机构编号
*/
@TableField("AGENCY_CODE")
private String agencyCode;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 知识库文档分类
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_doc_category")
public class KnowledgeDocCategory extends BaseEntity {
/**
* 分组名称
*/
@TableField("CATEGORY_NAME")
private String categoryName;
@TableField("PARENT_ID")
private Long parentId;
/**
* 机构编号
*/
@TableField("AGENCY_CODE")
private String agencyCode;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 知识库评论信息
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_doc_comments")
public class KnowledgeDocComments extends BaseEntity {
/**
* 文档id
*/
@TableField("DOC_SEQ")
private Long docSeq;
/**
* 发表评论的用户id
*/
@TableField("USER_ID")
private String userId;
/**
* 评论内容
*/
@TableField("COMMENTS_CONTENT")
private String commentsContent;
/**
* 父级评论id
*/
@TableField("PARENT_ID")
private Long parentId;
/**
* 机构编号
*/
@TableField("AGENCY_CODE")
private String agencyCode;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import java.util.Date;
/**
* <p>
* 知识库文档存储
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_doc_content")
public class KnowledgeDocContent extends BaseEntity {
/**
* 富文本内容存储
*/
@TableField("HTML_CONTENT")
private String htmlContent;
/**
* 文档状态:发布,未发布
*/
@TableField("DOC_STATUS")
private String docStatus;
/**
* 发布者
*/
@TableField("USER_ID")
private String userId;
/**
* 创建时间
*/
@TableField("CREATE_TIME")
private Date createTime;
/**
* 是否有附件
*/
@TableField("HAVE_ATTACHMENT")
private Boolean haveAttachment;
/**
* 摘要
*/
@TableField("SUMMARY")
private String summary;
/**
* 机构编号
*/
@TableField("AGENCY_CODE")
private String agencyCode;
/**
* 审核状态:通过,驳回,待审核,待提交
**/
@TableField("AUDIT_STATUS")
private String auditStatus;
/**
* 驳回意见
**/
@TableField("REJECTION_COMMENT")
private String rejectionComment;
/**
* 审核人id
**/
@TableField("AUDITOR_USER_ID")
private String auditorUserId;
@TableField("ORG_CODE")
private String orgCode;
/**
* 纯文本内容
*/
@TableField("TEXT_CONTENT")
private String textContent;
/**
* 排序内容
*/
@TableField("SORT_STR")
private String sortStr;
/**
* 所属目录
*/
@TableField("DIRECTORY_ID")
private Long directoryId;
/**
* 文档标题
*/
@TableField("DOC_TITLE")
private String docTitle;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 知识库系统动态选项配置的分组,用于区分不同功能的字段列表
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_dynamics_group")
public class KnowledgeDynamicsGroup extends BaseEntity {
/**
* 分组名称
*/
@TableField("GROUP_NAME")
private String groupName;
/**
* 前端配置
*/
@TableField("FRONT_END_CONFIG")
private String frontEndConfig;
/**
* 机构编号
*/
@TableField("AGENCY_CODE")
private String agencyCode;
/**
* 功能标识
*/
@TableField("FUNCTIONAL")
private String functional;
/**
* 业务项目标识
*/
@TableField("APP_KEY")
private String appKey;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 知识库系统动态选项配置,多用于动态字段配置
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_dynamics_option")
public class KnowledgeDynamicsOption extends BaseEntity {
/**
* 字段名
*/
@TableField("FIELD_NAME")
private String fieldName;
/**
* 中文名
*/
@TableField("FIELD_LABEL")
private String fieldLabel;
/**
* 数据类型:文本,数字,枚举,日期
*/
@TableField("DATA_TYPE")
private String dataType;
/**
* 功能标识
*/
@TableField("FUNCTIONAL")
private String functional;
/**
* 业务项目标识
*/
@TableField("APP_KEY")
private String appKey;
@TableField("FRONT_END_CONFIG")
private String frontEndConfig;
/**
* 机构编号
*/
@TableField("AGENCY_CODE")
private String agencyCode;
/**
* 分组主键
*/
@TableField("GROUP_SEQ")
private Long groupSeq;
/**
* 查询策略
*/
@TableField("QUERY_STRATEGY")
private String queryStrategy;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 知识库系统动态选项配置的实例值
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_dynamics_value")
public class KnowledgeDynamicsValue extends BaseEntity {
/**
* 字段名
*/
@TableField("FIELD_NAME")
private String fieldName;
/**
* 中文名
*/
@TableField("FIELD_LABEL")
private String fieldLabel;
/**
* 数据类型:文本,数字,枚举,日期
*/
@TableField("DATA_TYPE")
private String dataType;
/**
* 字段分组id
*/
@TableField("GROUP_SEQ")
private Long groupSeq;
/**
* 动态配置字段的值
*/
@TableField("FIELD_VALUE")
private String fieldValue;
/**
* 关联的对象id,即文档id
*/
@TableField("INSTANCE_ID")
private Long instanceId;
/**
* 机构编号
*/
@TableField("AGENCY_CODE")
private String agencyCode;
@TableField("OPTION_SEQ")
private Long optionSeq;
@TableField("QUERY_STRATEGY")
private String queryStrategy;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 知识库内容交互计数表
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_interaction_count")
public class KnowledgeInteractionCount extends BaseEntity {
/**
* 操作类型(标签所有情况引用,标签被已审核/已发布文档引用,文档引用)
*/
@TableField("OPERATE_TYPE")
private String operateType;
/**
* 关联对象类型
*/
@TableField("ENTITY_TYPE")
private String entityType;
/**
* 关联对象id
*/
@TableField("ENTITY_ID")
private String entityId;
/**
* 计数
*/
@TableField("OPERATE_COUNT")
private Integer operateCount;
/**
* 机构编号
*/
@TableField("AGENCY_CODE")
private String agencyCode;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 知识库内容交互记录
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_interaction_record")
public class KnowledgeInteractionRecord extends BaseEntity {
/**
* 用户id
*/
@TableField("USER_ID")
private String userId;
/**
* 操作类型(点赞,吐槽,收藏)
*/
@TableField("OPERATE_TYPE")
private String operateType;
/**
* 关联对象类型
*/
@TableField("ENTITY_TYPE")
private String entityType;
/**
* 关联对象id
*/
@TableField("ENTITY_ID")
private String entityId;
/**
* 机构编号
*/
@TableField("AGENCY_CODE")
private String agencyCode;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 消息
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_message")
public class KnowledgeMessage extends BaseEntity {
/**
* 消息类型
*/
@TableField("MESSAGE_TYPE")
private String messageType;
/**
* 消息标题
*/
@TableField("MESSAGE_TITLE")
private String messageTitle;
/**
* 消息内容
*/
@TableField("MESSAGE_CONTENT")
private String messageContent;
/**
* 相关文档ID
*/
@TableField("TARGET_SEQ")
private Long targetSeq;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 个人消息
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_message_personal")
public class KnowledgeMessagePersonal extends BaseEntity {
/**
* 接收人
*/
@TableField("MESSAGE_OWNER")
private String messageOwner;
/**
* 消息ID
*/
@TableField("MESSAGE_SEQ")
private Long messageSeq;
/**
* 消息状态
*/
@TableField("MESSAGE_STATUS")
private Integer messageStatus;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 标签库
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_tag")
public class KnowledgeTag extends BaseEntity {
/**
* 标签名称
*/
@TableField("TAG_NAME")
private String tagName;
/**
* 标签编码
*/
@TableField("TAG_CODE")
private String tagCode;
/**
* 标签分类:文本标签,值标签,
*/
@TableField("TAG_TYPE")
private String tagType;
/**
* 标签状态:启用,禁用
*/
@TableField("TAG_STATUS")
private String tagStatus;
/**
* 标签备注
*/
@TableField("TAG_REMARK")
private String tagRemark;
/**
* 机构编号
*/
@TableField("AGENCY_CODE")
private String agencyCode;
/**
* 创建人姓名
*/
@TableField("CREATOR")
private String creator;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 标签分组
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_tag_group")
public class KnowledgeTagGroup extends BaseEntity {
/**
* 标签名称
*/
@TableField("GROUP_NAME")
private String groupName;
/**
* 父级分类id
*/
@TableField("PARENT_ID")
private Long parentId;
/**
* 机构编号
*/
@TableField("AGENCY_CODE")
private String agencyCode;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 标签分组
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_tag_group_ref")
public class KnowledgeTagGroupRef extends BaseEntity {
/**
* 标签分组id
*/
@TableField("GROUP_SEQ")
private Long groupSeq;
/**
* 标签id
*/
@TableField("TAG_SEQ")
private Long tagSeq;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 标签实例
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_tag_instance")
public class KnowledgeTagInstance extends BaseEntity {
/**
* 标签id
*/
@TableField("TAG_SEQ")
private Long tagSeq;
/**
* 标签标记的目标id
*/
@TableField("TARGET_SEQ")
private Long targetSeq;
/**
* 标签名称
*/
@TableField("TAG_NAME")
private String tagName;
/**
* 标记方式:文档,内容
*/
@TableField("MARKING_TYPE")
private String markingType;
/**
* 机构编号
*/
@TableField("AGENCY_CODE")
private String agencyCode;
/**
* 标签类型
*/
@TableField("TAG_TYPE")
private String tagType;
@TableField("FRONT_END_CONFIG")
private String frontEndConfig;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
/**
* <p>
* 值标签的实例值
* </p>
*
* @author 子杨
* @since 2020-08-05
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowledge_tag_value")
public class KnowledgeTagValue extends BaseEntity {
/**
* 标签实例id
*/
@TableField("INSTANCE_SEQ")
private Long instanceSeq;
/**
* 值标签的扩展字段名,内容标签文本位置,值标签文本内容/单值/日期,值标签范围最大值-最小值
*/
@TableField("FIELD_NAME")
private String fieldName;
/**
* 值标签扩展字段的值
*/
@TableField("TAG_VALUE")
private String tagValue;
/**
* 机构编号
*/
@TableField("AGENCY_CODE")
private String agencyCode;
@TableField("UNIT")
private String unit;
}
package com.yeejoin.amos.knowledgebase.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import java.util.Date;
/**
* <p>
* 标签分组
* </p>
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("knowlege_statistics_record")
public class KnowlegeStatisticsRecord extends BaseEntity {
/**
* 文档ID
*/
@TableField("DOC_SEQ")
private Long docSeq;
/**
* 警情发生时间
*/
@TableField("DISASTER_TIME")
private Date disasterTime;
/**
* 记录类型
*/
@TableField("RECORD_NAME")
private String recordName;
/**
* 分类字段值
*/
@TableField("CATEGORY_VALUE")
private String categoryValue;
/**
* 统计数值
*/
@TableField("COUNT_VALUE")
private Long countValue;
/**
* 值放大倍数
*/
@TableField("VALUE_WEIGHT")
private Integer valueWeight;
/**
* 数值单位
*/
@TableField("UNIT")
private Long unit;
}
package com.yeejoin.amos.knowledgebase.face.service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDocAnnotateModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.DocAnnotateMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDocAnnotate;
import com.yeejoin.amos.knowledgebase.face.util.RemoteData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
......@@ -16,10 +14,11 @@ import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.yeejoin.amos.knowledgebase.face.feign.RemoteData;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDocAnnotateModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.DocAnnotateMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDocAnnotate;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
......@@ -88,13 +87,12 @@ public class DocAnnotateService extends BaseService<KnowledgeDocAnnotateModel, K
**/
public List<KnowledgeDocAnnotateModel> queryForAnnotateList(String docSeq) {
List<KnowledgeDocAnnotateModel> list = this.queryForList("CREATE_TIME",true, docSeq);
Set<String> userIds = list.stream().filter(item -> !ValidationUtil.isEmpty(item)).map(arg0 -> arg0.getUserId()).collect(Collectors.toSet());
Set<String> userIds = list.stream().filter(item -> !ValidationUtil.isEmpty(item)).map(KnowledgeDocAnnotateModel::getUserId).collect(Collectors.toSet());
Map<String, String> userMap = RemoteData.getUserMap(userIds);
list.forEach(item -> {
item.setUsername(userMap.get(item.getUserId()));
item.setIsCurrentUser(ValidationUtil.equals(item.getUserId(),RequestContext.getExeUserId()));
});
return list;
}
}
package com.yeejoin.amos.knowledgebase.face.service;
import java.util.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDocCategoryModel;
import com.yeejoin.amos.knowledgebase.face.model.MultipleNodeModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.DocCategoryMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDocCategory;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTag;
import com.yeejoin.amos.knowledgebase.face.util.BaseUtil;
import com.yeejoin.amos.knowledgebase.face.util.TreeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
......@@ -17,16 +24,7 @@ import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.exception.instance.RequestForbidden;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDocCategoryModel;
import com.yeejoin.amos.knowledgebase.face.model.MultipleNodeModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.DocCategoryMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDocCategory;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTag;
import com.yeejoin.amos.knowledgebase.face.util.BaseUtil;
import com.yeejoin.amos.knowledgebase.face.util.Constants;
import com.yeejoin.amos.knowledgebase.face.util.TreeUtil;
import java.util.*;
/**
* <p>
......@@ -173,6 +171,16 @@ public class DocCategoryService extends BaseService<KnowledgeDocCategoryModel, K
return sequenceList;
}
public Map<String, Long> getGroupNameValue(List<Long> ids) {
List<KnowledgeDocCategoryModel> list = this.queryBatchSeq(ids);
Map<String, Long> result = new HashMap<>();
for(KnowledgeDocCategoryModel knowledgeDocCategoryModel: list) {
result.put(knowledgeDocCategoryModel.getCategoryName(), knowledgeDocCategoryModel.getSequenceNbr());
}
return result;
}
private void getAllChildList(KnowledgeDocCategoryModel currentTagGroupModel, List<KnowledgeDocCategoryModel> resList) {
if (null == currentTagGroupModel) {
return;
......@@ -205,7 +213,7 @@ public class DocCategoryService extends BaseService<KnowledgeDocCategoryModel, K
List<KnowledgeDocCategoryModel> allChildren = TreeUtil.getAllChildren(categoryTree);
if (!allChildren.isEmpty()) {
List<Long> directoryIds = BaseUtil.getModelIds(allChildren);
List<MultipleNodeModel> multipleNodeModels = this.baseMapper.queryDocAndCategoryTree(directoryIds, onlyPublish ? Constants.DOC_STATUS_PUBLISHED : null);
List<MultipleNodeModel> multipleNodeModels = this.baseMapper.queryDocAndCategoryTree(directoryIds, onlyPublish ? DocContentService.DOC_STATUS_PUBLISHED : null);
return TreeBuilder.buildByRecursive(multipleNodeModels, null == rootCategory ? root : rootCategory.getParentId());
}
}
......@@ -250,13 +258,4 @@ public class DocCategoryService extends BaseService<KnowledgeDocCategoryModel, K
List<KnowledgeDocCategoryModel> categoryModelList = this.queryForList(null, true, categoryName, parentId);
return categoryModelList.isEmpty() ? null : categoryModelList.get(0);
}
public Map<String, Long> getGroupNameValue(List<Long> ids) {
List<KnowledgeDocCategoryModel> list = this.queryBatchSeq(ids);
Map<String, Long> result = new HashMap<>();
for(KnowledgeDocCategoryModel knowledgeDocCategoryModel: list) {
result.put(knowledgeDocCategoryModel.getCategoryName(), knowledgeDocCategoryModel.getSequenceNbr());
}
return result;
}
}
package com.yeejoin.amos.knowledgebase.face.service;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.knowledgebase.face.enumeration.OperateType;
import com.yeejoin.amos.knowledgebase.face.feign.RemoteData;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDocCommentsModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeInteractionRecordModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.DocCommentsMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDocComments;
import com.yeejoin.amos.knowledgebase.face.util.RemoteData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.Date;
import java.util.List;
/**
......
......@@ -4,7 +4,6 @@ package com.yeejoin.amos.knowledgebase.face.service;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDynamicsGroupModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.DynamicsGroupMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDynamicsGroup;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.rdbms.service.BaseService;
......
......@@ -5,13 +5,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.knowledgebase.face.enumeration.DynamicsFunctional;
import com.yeejoin.amos.knowledgebase.face.enumeration.KnowledgeRoleName;
import com.yeejoin.amos.knowledgebase.face.enumeration.OptionDataType;
import com.yeejoin.amos.knowledgebase.face.feign.DataFillter;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDynamicsOptionModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDynamicsValueModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.DynamicsValueMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDynamicsValue;
import com.yeejoin.amos.knowledgebase.face.util.Constants;
import com.yeejoin.amos.knowledgebase.face.util.DataFillter;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
......@@ -26,6 +24,7 @@ import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -148,8 +147,8 @@ public class DynamicsValueService extends BaseService<KnowledgeDynamicsValueMode
}
switch (knowledgeRoleName) {
case AUDITOR:
auditStatusSet.add(Constants.DOC_AUDIT_STATUS_PASSED);
auditStatusSet.add(Constants.DOC_AUDIT_STATUS_SUBMITTED);
auditStatusSet.add(DocAuditService.DOC_AUDIT_STATUS_PASSED);
auditStatusSet.add(DocAuditService.DOC_AUDIT_STATUS_SUBMITTED);
dataPrivilegemap.put(DataFillter.orgCode, orgCode);
dataPrivilegemap.put(auditStatus, auditStatusSet.toArray(new String[auditStatusSet.size()]));
break;
......@@ -160,8 +159,8 @@ public class DynamicsValueService extends BaseService<KnowledgeDynamicsValueMode
dataPrivilegemap.put(DataFillter.noData, true);
break;
case VIEWER:
auditStatusSet.add(Constants.DOC_AUDIT_STATUS_PASSED);
docStatusSet.add(Constants.DOC_STATUS_PUBLISHED);
auditStatusSet.add(DocAuditService.DOC_AUDIT_STATUS_PASSED);
docStatusSet.add(DocContentService.DOC_STATUS_PUBLISHED);
dataPrivilegemap.put(docStatus, docStatusSet.toArray(new String[docStatusSet.size()]));
dataPrivilegemap.put(auditStatus, auditStatusSet.toArray(new String[auditStatusSet.size()]));
break;
......@@ -370,4 +369,15 @@ public class DynamicsValueService extends BaseService<KnowledgeDynamicsValueMode
public List<KnowledgeDynamicsValueModel> queryByInstanceIds(@Condition(Operator.in) Collection<Long> instanceId) {
return this.queryForList("", false, instanceId);
}
//查询文档发布时间是否为空
public List<KnowledgeDynamicsValue> isRequiredByFile(String appKey, String name, List<Long> docSeqList) {
String fineSeqs = docSeqList.stream().map(String::valueOf).collect(Collectors.joining(","));
QueryWrapper<KnowledgeDynamicsValue> wrapper = new QueryWrapper<>();
wrapper.inSql("OPTION_SEQ",
"SELECT kdo.SEQUENCE_NBR FROM `knowledge_dynamics_option` kdo WHERE kdo.FUNCTIONAL = '" + name + "' AND kdo.APP_KEY = '" + appKey + "' AND kdo.FRONT_END_CONFIG LIKE '%\"required\":true%'");
wrapper.and(wq -> wq.inSql("INSTANCE_ID", fineSeqs));
return this.list(wrapper);
}
}
......@@ -6,19 +6,16 @@ import com.yeejoin.amos.knowledgebase.face.model.KnowledgeInteractionCountModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.InteractionCountMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeInteractionCount;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.exception.BaseException;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
/**
......
......@@ -4,12 +4,11 @@ package com.yeejoin.amos.knowledgebase.face.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Sequence;
import com.yeejoin.amos.knowledgebase.face.feign.RemoteData;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeMessageModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.MessageMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeMessage;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeMessagePersonal;
import com.yeejoin.amos.knowledgebase.face.util.Constants;
import com.yeejoin.amos.knowledgebase.face.util.RemoteData;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
......@@ -36,7 +35,20 @@ import java.util.*;
@Component
public class MessageService extends BaseService<KnowledgeMessageModel, KnowledgeMessage, MessageMapper> {
/**
* 消息类型-要点推送
*/
public static final String MESSAGE_TYPE_PUSH = "ESSENTIAL_PUSH";
/**
* 消息类型-战例分享
*/
public static final String MESSAGE_TYPE_SHARE = "DOC_SHARE";
/**
* 消息主题前缀
*/
public static final String TOPIC_PREFIX = "knowledge_message_";
public static final String SHARE_WAY_APP = "app";
private final String userTypeUser = "user";
private final String userTypeGroup = "group";
......@@ -95,14 +107,14 @@ public class MessageService extends BaseService<KnowledgeMessageModel, Knowledge
*/
@Transactional(rollbackFor = {BaseException.class, Exception.class})
public boolean shareDoc(List<Map<String, Object>> users, List<Map<String, Object>> docs, String way) {
if (ValidationUtil.equalsIgnoreCase(way, Constants.SHARE_WAY_APP)) {
if (ValidationUtil.equalsIgnoreCase(way, SHARE_WAY_APP)) {
for (Map<String, Object> doc : docs) {
//创建消息
if (ValidationUtil.isEmpty(doc) || ValidationUtil.isEmpty(doc.get("sequenceNbr"))) {
throw new BadRequest("分享内容缺失");
}
String messageTitle = String.valueOf(doc.get("docTitle"));
KnowledgeMessageModel message = createMessage(Constants.MESSAGE_TYPE_SHARE, Long.valueOf(doc.get("sequenceNbr").toString()), messageTitle, String.valueOf(doc.get("summary")));
KnowledgeMessageModel message = createMessage(MESSAGE_TYPE_SHARE, Long.valueOf(doc.get("sequenceNbr").toString()), messageTitle, String.valueOf(doc.get("summary")));
Set<String> userIdSet = new HashSet<>();
userIdSet = parseUserMapToIdList(users, userIdSet);
//创建个人消息
......@@ -122,7 +134,7 @@ public class MessageService extends BaseService<KnowledgeMessageModel, Knowledge
@Transactional(rollbackFor = {BaseException.class, Exception.class})
public boolean pushEssential(List<Map<String, Object>> users, String messageTitle, String content, Long docSeq) {
//创建消息
KnowledgeMessageModel message = createMessage(Constants.MESSAGE_TYPE_PUSH, docSeq, messageTitle, content);
KnowledgeMessageModel message = createMessage(MESSAGE_TYPE_PUSH, docSeq, messageTitle, content);
Set<String> userIdSet = new HashSet<>();
userIdSet = parseUserMapToIdList(users, userIdSet);
//创建个人消息
......@@ -239,7 +251,7 @@ public class MessageService extends BaseService<KnowledgeMessageModel, Knowledge
* 获取用户的主题
*/
private String getTopic(String userId) {
return Constants.TOPIC_PREFIX + String.valueOf(userId);
return TOPIC_PREFIX + String.valueOf(userId);
}
/**
......
package com.yeejoin.amos.knowledgebase.face.service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.core.toolkit.Sequence;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDynamicsValueModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagInstanceModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagValueModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.TagInstanceMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.context.RequestContext;
......@@ -15,14 +17,10 @@ import org.typroject.tyboot.core.rdbms.annotation.Condition;
import org.typroject.tyboot.core.rdbms.annotation.Operator;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.baomidou.mybatisplus.core.toolkit.Sequence;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDynamicsValueModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagInstanceModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagValueModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.TagInstanceMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagInstance;
import com.yeejoin.amos.knowledgebase.face.util.Constants;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
......@@ -36,6 +34,10 @@ import com.yeejoin.amos.knowledgebase.face.util.Constants;
@Component
public class TagInstanceService extends BaseService<KnowledgeTagInstanceModel, KnowledgeTagInstance, TagInstanceMapper> {
public static final String MARKING_TYPE_DOC = "DOC"; // 标记类型--文档标签
public static final String MARKING_TYPE_CONTENT = "CONTENT";// 标记类型--内容标签
@Autowired
private TagValueService tagValueService;
......@@ -72,11 +74,11 @@ public class TagInstanceService extends BaseService<KnowledgeTagInstanceModel, K
instanceModel.setTagType(tagModel.getTagType());
//值标签保存标签的具体值
List<KnowledgeTagValueModel> valueModels = instanceModel.getTagValues();
if (Constants.TAG_TYPE_VALUE.equals(tagModel.getTagType()) && !ValidationUtil.isEmpty(valueModels)) {
if (TagService.TAG_TYPE_VALUE.equals(tagModel.getTagType()) && !ValidationUtil.isEmpty(valueModels)) {
List<KnowledgeDynamicsValueModel> valueTagConfigs = dynamicsValueService.queryByInstanceId(tagModel.getSequenceNbr());
Map<String,Object> valueTagConfigMap = Bean.listToMap(valueTagConfigs,"fieldName","fieldValue",KnowledgeDynamicsValueModel.class);
Map<String, Object> valueTagConfigMap = Bean.listToMap(valueTagConfigs, "fieldName", "fieldValue", KnowledgeDynamicsValueModel.class);
String unit = String.valueOf(valueTagConfigMap.get("unit"));
List<KnowledgeTagValueModel> savedValues = this.tagValueService.saveInstanceValue(instanceSeq, valueModels,unit);
List<KnowledgeTagValueModel> savedValues = this.tagValueService.saveInstanceValue(instanceSeq, valueModels, unit);
instanceModel.setTagValues(savedValues);
}
this.createWithModel(instanceModel);
......@@ -111,7 +113,9 @@ public class TagInstanceService extends BaseService<KnowledgeTagInstanceModel, K
// return this.queryCount(tagSeq, targetSeq);
// }
/** 根据标签ID统计标签实例数量 */
/**
* 根据标签ID统计标签实例数量
*/
public int queryCountByTagSeq(Long tagSeq) {
return this.queryCount(tagSeq);
}
......@@ -136,10 +140,10 @@ public class TagInstanceService extends BaseService<KnowledgeTagInstanceModel, K
public List<KnowledgeTagInstanceModel> queryByTargetAndType(String agencyCode, Long targetSeq, String markingType) {
List<KnowledgeTagInstanceModel> instanceModels = this.queryForList(null, false, agencyCode, targetSeq,markingType);
List<KnowledgeTagInstanceModel> instanceModels = this.queryForList(null, false, agencyCode, targetSeq, markingType);
if (!ValidationUtil.isEmpty(instanceModels)) {
for (KnowledgeTagInstanceModel instanceModel : instanceModels) {
if (Constants.TAG_TYPE_VALUE.equals(instanceModel.getTagType())) {
if (TagService.TAG_TYPE_VALUE.equals(instanceModel.getTagType())) {
List<KnowledgeTagValueModel> list = this.tagValueService.queryByInstance(instanceModel.getSequenceNbr());
instanceModel.setTagValues(list);
}
......@@ -156,15 +160,7 @@ public class TagInstanceService extends BaseService<KnowledgeTagInstanceModel, K
return this.queryForList(null, false, targetSeq);
}
public KnowledgeTagInstance findById(Long id) {
return this.baseMapper.selectById(id);
}
public List<KnowledgeTagInstanceModel> queryListByTagName(String tagName) {
// TODO Auto-generated method stub
return this.queryForList(null, false, tagName);
}
public List<KnowledgeTagInstanceModel> queryTopTagListByUser(String recUserId) {
return this.queryForList("REC_DATE", true, recUserId);
}
}
package com.yeejoin.amos.knowledgebase.face.service;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagValueModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.TagValueMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagValue;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.foundation.context.RequestContext;
......@@ -13,13 +12,8 @@ import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagValueModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.TagValueMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagValue;
import net.bytebuddy.asm.Advice.This;
import java.util.Collection;
import java.util.List;
/**
......@@ -33,6 +27,15 @@ import net.bytebuddy.asm.Advice.This;
@Component
public class TagValueService extends BaseService<KnowledgeTagValueModel, KnowledgeTagValue, TagValueMapper> {
public static final String VALUE_TAG_FIELD_SINGLEVALUE = "singleValue";//单值字段名
public static final String VALUE_TAG_FIELD_RANGE_MAX = "rangeMax";//范围值 上界
public static final String VALUE_TAG_FIELD_RANGE_MIN = "rangeMin";//范围值 下界
public static final String VALUE_TAG_FIELD_TEXT = "text";//文本值
public static final String VALUE_TAG_FIELD_DATE_H = "dateH";//时间,年月日时分秒
public static final String VALUE_TAG_FIELD_ENUM_NAME = "enumName";// 枚举类型字段名
@Transactional(rollbackFor = {Exception.class, BaseException.class})
public List<KnowledgeTagValueModel> saveInstanceValue(Long instanceSeq, List<KnowledgeTagValueModel> valueModels, String unit) {
......@@ -71,13 +74,4 @@ public class TagValueService extends BaseService<KnowledgeTagValueModel, Knowled
public List<KnowledgeTagValueModel> queryTagValuesByDocIds(Collection<Long> docSeqList) {
return Bean.toModels(this.getBaseMapper().queryTagValuesByDocIds(docSeqList), KnowledgeTagValueModel.class);
}
public List<KnowledgeTagValue> getAllTegartValue(String value) {
String[] strings = value.split(",");
QueryWrapper<KnowledgeTagValue> wrapper = new QueryWrapper<KnowledgeTagValue>();
wrapper.eq("AGENCY_CODE", RequestContext.getAgencyCode());
wrapper.in("TAG_VALUE", Arrays.asList(strings));
return this.baseMapper.selectList(wrapper);
}
}
package com.yeejoin.amos.knowledgebase.face.util;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* <h1><h1>
*
* @author tiantao
* @date 2020/12/7 11:47
*/
public class BaseUtil {
public static List<Long> getEntityIds(Collection<? extends BaseEntity> entityList){
List<Long> idList = new ArrayList<>();
if (!ValidationUtil.isEmpty(entityList)) {
entityList.forEach(entity -> idList.add(entity.getSequenceNbr()));
}
return idList;
}
public static List<Long> getModelIds(Collection<? extends BaseModel> entityList){
List<Long> idList = new ArrayList<>();
if (!ValidationUtil.isEmpty(entityList)) {
entityList.forEach(entity -> idList.add(entity.getSequenceNbr()));
}
return idList;
}
}
package com.yeejoin.amos.knowledgebase.face.util;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* <h1>定制化配置信息加载器<h1>
*
* @author tiantao
* @date 2021/1/7 9:33
*/
@Getter
@Component
@PropertySource(value = "classpath:customization.properties", encoding = "UTF-8")
public class ConfigLoader {
private boolean sync;
private String tags;
private String projects;
private boolean tagWithName;
private String agencyCode;
@Value("${system-conf.rule.sync}")
public void setSync(boolean sync) {
this.sync = sync;
}
@Value("${system-conf.rule.source.tags}")
public void setTags(String tags) {
this.tags = tags;
}
@Value("${system-conf.rule.target.projects}")
public void setProjects(String projects) {
this.projects = projects;
}
@Value("${system-conf.rule.source.tag-with-name}")
public void setTagWithName(boolean tagWithName) {
this.tagWithName = tagWithName;
}
@Value("${system-conf.rule.target.agency-code}")
public void setAgencyCode(String agencyCode) {
this.agencyCode = agencyCode;
}
}
package com.yeejoin.amos.knowledgebase.face.util;
import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.*;
/**
* @author 杨博超
* @ClassName DataFillter
* @Deacription 文档数据过参数组装
**/
public interface DataFillter {
String auditStatus = "auditStatus";
String docStatus = "docStatus";
String orgCode = "orgCode";
String noData = "noData";
String userId = "userId";
Map<String, Object> assembleParams(List<String> roleNameList, String orgCode);
/**
* @return java.util.Map<java.lang.String, java.lang.String>
* @author 杨博超
* @description 根据角色过滤数据
* @Param [auditStatus, docStatus]
**/
static Map<String, Object> dataFillterByRoleName(DataFillter dataFillter) {
Map<String, Object> dataPrivilegemap = new HashMap<>();
try {
AgencyUserModel agencyUserModel = FeignUtil.remoteCall(() -> Privilege.agencyUserClient.queryByUserId(RequestContext.getExeUserId()));
Map<Long, List<RoleModel>> map = agencyUserModel.getOrgRoles();
Collection<List<RoleModel>> roleCollection = map.values();
List<String> roleNameList = new ArrayList<>();
for (List<RoleModel> list : roleCollection)
for (RoleModel roleModel : list)
roleNameList.add(roleModel.getRoleName());
String orgCodce = null;
if (!ValidationUtil.isEmpty(agencyUserModel.getCompanyDepartments())
&& !ValidationUtil.isEmpty(agencyUserModel.getCompanyDepartments().values())
&& agencyUserModel.getCompanyDepartments().values().size() > 0
&& !ValidationUtil.isEmpty(agencyUserModel.getCompanyDepartments().values().iterator().next().iterator().next())) { //TODO 多部门多公司处理
orgCodce = agencyUserModel.getCompanyDepartments().values().iterator().next().iterator().next().getOrgCode();
} else if (!ValidationUtil.isEmpty(agencyUserModel.getCompanys())) {
orgCodce = agencyUserModel.getCompanys().iterator().next().getOrgCode();
}
if(ValidationUtil.isEmpty(orgCodce))
throw new RuntimeException("用户部门信息有误.");
dataPrivilegemap.put(DataFillter.orgCode, orgCodce);
if (!ValidationUtil.isEmpty(dataFillter))
dataPrivilegemap = dataFillter.assembleParams(roleNameList, orgCodce);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("获取数据用户角色信息失败.");
}
return dataPrivilegemap;
}
}
package com.yeejoin.amos.knowledgebase.face.util;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import java.io.*;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class DataTransformator {
/**
* 多个集合合并成一个
*
* @param list
* @return
*/
public static Set<Long> objSet2LongSet(List<Set> list) {
Set<Long> res = new HashSet<>();
for (Set set : list) {
for (Object o : set) {
if (o instanceof Long) {
res.add((Long) o);
} else {
res.add(Long.parseLong(o.toString()));
}
}
}
return res;
}
/**
* html内容转text
*
* @param htmlContent html文本
* @return 文本
*/
public static String htmlContent2Text(String htmlContent) {
String res = "";
try {
Element body = Jsoup.parseBodyFragment(htmlContent, "UTF-8").body();
body.getElementsByTag("h1").remove();
res = body.text();
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
/**
* 文件对象转字节数组
*
* @throws IOException
*/
public static byte[] file2Bytes(File file) throws IOException {
try (FileInputStream fis = new FileInputStream(file)) {
return inputStream2Bytes(fis);
}
}
public static byte[] inputStream2Bytes(InputStream is) throws IOException {
try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
// 10M
byte[] bytes = new byte[1024 * 1024 * 10];
int len;
while ((len = is.read(bytes)) > 0) {
bos.write(bytes, 0, len);
}
return bos.toByteArray();
}
}
}
package com.yeejoin.amos.knowledgebase.face.util;
import com.alibaba.fastjson.JSON;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagInstanceModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagValueModel;
import com.yeejoin.amos.knowledgebase.face.service.TagValueService;
import lombok.Data;
import org.typroject.tyboot.core.foundation.exception.BaseException;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.DateUtil;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
/**
* 文档根据标签定制化排序
*
* @author tiantao
*/
public class DocSortUtil {
public static List<DocTagConfig> tagConfigList;
/**
* 正数恒定大于负数,1开头表正数,0开头表负数
*/
private static final String POSITIVE = "1";
private static final String NEGATIVE = "0";
private static final DecimalFormat LONG_FORMAT = new DecimalFormat("0000000000000000000");
static {
loadConfig();
}
public static void loadConfig() {
Object configObj = JSON.parse("{\n" +
" \"docTag\": [\n" +
" {\n" +
" \"sort\": 1,\n" +
" \"name\": \"死亡/失踪人数总和\",\n" +
" \"desc\": true,\n" +
" \"formula\": \"1319951584694317058+1319952328386359297+1319951672883752961+1319952397084864513\"\n" +
" },\n" +
" {\n" +
" \"sort\": 2,\n" +
" \"name\": \"受伤人数总和\",\n" +
" \"desc\": true,\n" +
" \"formula\": \"1319951506357301249+1319952269997453314+1319951885195227138+1319952474897592321\"\n" +
" },\n" +
" {\n" +
" \"sort\": 3,\n" +
" \"name\": \"参战总人数\",\n" +
" \"desc\": true,\n" +
" \"formula\": \"1319953830182072322\"\n" +
" },\n" +
" {\n" +
" \"sort\": 4,\n" +
" \"name\": \"处置时间\",\n" +
" \"desc\": true,\n" +
" \"formula\": \"1320181702299004930-1320181277285986305\"\n" +
" }\n" +
" ]\n" +
"}");
tagConfigList = new ArrayList<>();
if (configObj instanceof Map) {
Object docTag = ((Map) configObj).get("docTag");
if (docTag instanceof List) {
((List) docTag).forEach(tag -> {
try {
DocTagConfig docTagConfig = JSON.parseObject(JSON.toJSONString(tag), DocTagConfig.class);
tagConfigList.add(docTagConfig);
} catch (Exception e) {
e.printStackTrace();
}
});
}
}
tagConfigList.sort(Comparator.comparingInt(o -> o.sort));
}
public static String getSortStr(List<KnowledgeTagInstanceModel> docTags) {
Map<Object, KnowledgeTagInstanceModel> docTagsMap = Bean.listToMap(docTags, "tagSeq", KnowledgeTagInstanceModel.class);
StringBuilder res = new StringBuilder();
final boolean[] flag = {false};
tagConfigList.forEach(docTagConfig -> {
String formula = docTagConfig.formula;
List<String> tagSeqs = trimArray(formula.split("\\D"));
long sortValue = 0L;
for (int i = 0; i < tagSeqs.size(); i++) {
Long tagValue = getTagLongValue(tagSeqs.get(i), docTagsMap);
if (i > 0) {
String operator = formula.substring(formula.indexOf(tagSeqs.get(i - 1)) + tagSeqs.get(i - 1).length(), formula.indexOf(tagSeqs.get(i)));
switch (operator.trim()) {
case "+":
sortValue += tagValue;
break;
case "-":
sortValue -= tagValue;
break;
default:
throw new BadRequest("排序规则错误,无法识别的运算符");
}
} else {
sortValue = tagValue;
}
}
if (flag[0]) {
res.append("_");
}else {
flag[0] = true;
}
res.append(formatLong2SortStr(sortValue, docTagConfig.desc));
});
return res.toString();
}
/**
* 依据正负数/正倒序转换数值为字符串正整数
* @param sortValue 数值
* @param desc 是否倒序排列
* @return 字符串
*/
private static String formatLong2SortStr(long sortValue, boolean desc) {
if (desc) {
if (sortValue < 0) {
sortValue = 0 - sortValue;
return POSITIVE + LONG_FORMAT.format(sortValue);
} else {
sortValue = Long.MAX_VALUE - sortValue;
return NEGATIVE + LONG_FORMAT.format(sortValue);
}
} else {
if (sortValue < 0) {
sortValue = Long.MAX_VALUE - (0 - sortValue);
return NEGATIVE + LONG_FORMAT.format(sortValue);
} else {
return POSITIVE + LONG_FORMAT.format(sortValue);
}
}
}
/**
* 获取不同数据格式转化的long数值
* @param ts 标签实例id
* @param docTagsMap 标签实例map
* @return long值
*/
private static Long getTagLongValue(String ts, Map<Object, KnowledgeTagInstanceModel> docTagsMap) {
Long res = 0L;
try {
Long tagSeq = Long.valueOf(ts.trim());
KnowledgeTagInstanceModel instanceModel = docTagsMap.get(tagSeq);
if (null == instanceModel) {
return res;
}
List<KnowledgeTagValueModel> tagValues = instanceModel.getTagValues();
if (tagValues != null && tagValues.size() > 0) {
String fieldName = tagValues.get(0).getFieldName();
String tagValue = tagValues.get(0).getTagValue();
switch (fieldName) {
case TagValueService.VALUE_TAG_FIELD_DATE_H:
res = DateUtil.formatStringToDate(tagValue, null).getTime();
break;
case TagValueService.VALUE_TAG_FIELD_SINGLEVALUE:
res = Long.valueOf(tagValue);
break;
default:
throw new BadRequest("排序规则错误,不支持的数据类型");
}
}
} catch (BaseException e) {
throw e;
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
/**
* 去除数组中的空值
* @param arr 数组
* @param <T> 泛型
* @return List
*/
private static <T> List<T> trimArray(T[] arr) {
List<T> res = new ArrayList<>();
for (T t : arr) {
if (!ValidationUtil.isEmpty(t)) {
res.add(t);
}
}
return res;
}
@Data
private static class DocTagConfig {
// 排序优先级
private int sort;
// 排序名称,方便读懂json与逻辑无关
private String name;
// 是否倒序
private boolean desc;
// 算法公式,格式为标签id用数学运算符连接,目前仅支持加减
private String formula;
}
}
package com.yeejoin.amos.knowledgebase.face.util;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
public class FileExporter {
public static void exportFile(FileType fileType, String fileName, byte[] data, HttpServletResponse response) {
try {
response.reset();
response.setCharacterEncoding("utf-8");
response.setContentType(fileType.getContentType());
fileName = fileName.replaceAll("\\.", "·");
fileName = URLEncoder.encode(fileName + fileType.getFileSufix(), "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName + "");
response.getOutputStream().write(data);
response.getOutputStream().flush();
} catch (Exception e) {
throw new BadRequest("导出文档出错");
} finally {
try {
response.getOutputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 文件类型
*/
public enum FileType {
// word文档
docx(".docx", "application/msword"),
// pdf文档
pdf(".pdf", "application/pdf");
private String fileSufix;
private String contentType;
private FileType(String fileSufix, String contentType) {
this.fileSufix = fileSufix;
this.contentType = contentType;
}
public String getFileSufix() {
return fileSufix;
}
public String getContentType() {
return contentType;
}
public static FileType getInstance(String fileSufix) {
FileType knowledgeRoleName = null;
for (FileType fileType : FileType.values()) {
if (fileType.getFileSufix().equals(fileSufix)) {
knowledgeRoleName = fileType;
}
}
return knowledgeRoleName;
}
}
}
package com.yeejoin.amos.knowledgebase.face.util;
import org.docx4j.XmlUtils;
import org.docx4j.openpackaging.parts.WordprocessingML.NumberingDefinitionsPart;
import org.docx4j.wml.Numbering;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* 导入导出配置
* @author tiantao
*/
public class IOConfig {
/**
* 列表样式与前端匹配
*/
public static final Map<String, Long> NUM_MAP;
public static final Map<String, Long> ILV1_MAP;
/**
* 列表样式
*/
public static final NumberingDefinitionsPart INIT_NUMBERING_DEFINITION;
/**
* 图片服务器路径
*/
public static String PIC_URI = "http://39.98.246.31:8888/";
/**
* 图片服务器路由
*/
public static String PIC_ROUTER = "/fileURI/";
static {
Map<String, Long> tmp1 = new HashMap<>();
tmp1.put("ul", 1L);
tmp1.put("ol", 2L);
NUM_MAP = Collections.unmodifiableMap(tmp1);
Map<String, Long> tmp2 = new HashMap<>();
tmp2.put("square", 1L);
tmp2.put("disc", 2L);
tmp2.put("circle", 3L);
tmp2.put("lower-alpha", 1L);
tmp2.put("lower-roman", 2L);
tmp2.put("upper-alpha", 3L);
tmp2.put("upper-roman", 4L);
tmp2.put("lower-greek", 1L);
ILV1_MAP = Collections.unmodifiableMap(tmp2);
NumberingDefinitionsPart numberingDefinitionsPart = null;
try {
numberingDefinitionsPart = new NumberingDefinitionsPart();
InputStream is = IOConfig.class.getClassLoader().getResourceAsStream("office/listStyle.xml");
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuilder builder = new StringBuilder();
String str;
while ((str = reader.readLine()) != null) {
builder.append(str);
}
Numbering numbering = (Numbering) XmlUtils.unmarshalString(builder.toString());
numberingDefinitionsPart.setJaxbElement(numbering);
} catch (Exception e) {
e.printStackTrace();
}
INIT_NUMBERING_DEFINITION = numberingDefinitionsPart;
}
}
package com.yeejoin.amos.knowledgebase.face.util;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class PropertiesLoader {
/**
* 图片服务器地址
*/
@Value("${pic-server.uri}")
private String picUri;
/**
* 图片服务器路由标识
*/
@Value("${pic-server.router}")
private String picRouter;
@PostConstruct
public void savePropertiesData(){
IOConfig.PIC_URI = picUri;
IOConfig.PIC_ROUTER = picRouter;
}
}
package com.yeejoin.amos.knowledgebase.face.util;
import com.google.common.base.Joiner;
import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.exception.instance.DataNotFound;
import java.util.*;
import java.util.stream.Collectors;
public class RemoteData {
/**
* 根据用户id Set集合查询对应的用户姓名
*
* @param userIds
* @return Map
*/
public static Map<String, String> getUserMap(Set<String> userIds) {
String join = Joiner.on(",").join(userIds);
try {
List<AgencyUserModel> agencyUserModelList = FeignUtil
.remoteCall(() -> Privilege.agencyUserClient.queryByIds(join, false));
Map<String, String> userMap = agencyUserModelList.stream().collect(
Collectors.toMap(AgencyUserModel::getUserId, AgencyUserModel::getRealName, (k1, k2) -> k2));
return userMap;
} catch (Exception e) {
}
return Collections.emptyMap();
}
/**
* 根据用户id查询对应的用户姓名
*
* @param userId
* @return Map
*/
public static String getUserRealNamById(String userId) {
if (ValidationUtil.isEmpty(userId)) {
return null;
}
try {
AgencyUserModel user = FeignUtil.remoteCall(() -> Privilege.agencyUserClient.queryByUserId(userId));
if (!ValidationUtil.isEmpty(user)) {
return user.getRealName();
}
} catch (Exception ignored) {
}
return null;
}
public static List<DictionarieValueModel> queryDict(String enumName) {
return FeignUtil.remoteCall(() -> Systemctl.dictionarieClient.dictValues(enumName));
}
/**
* 获取当前操作者对应角色下的部门信息
*
* @param roleName 角色名
* @return 部门
*/
public static String getOrgWithCurUserAndRole(String roleName) {
Map<String, String> roleOrgMap = getCurUserOrgRoleMap();
return roleOrgMap.get(roleName);
}
private static Map<String, String> getCurUserOrgRoleMap() {
Map<String, String> resMap = new HashMap<>();
try {
AgencyUserModel agencyUserModel = FeignUtil
.remoteCall(() -> Privilege.agencyUserClient.queryByUserId(RequestContext.getExeUserId()));
Map<Long, List<RoleModel>> rolesMap = agencyUserModel.getOrgRoles();
// 组装部门信息为Map
Map<Long, DepartmentModel> departmentMap = new HashMap<>();
for (List<DepartmentModel> departments : agencyUserModel.getCompanyDepartments().values()) {
if (ValidationUtil.isEmpty(departments)) {
continue;
}
Iterator<DepartmentModel> iterator = departments.iterator();
while (iterator.hasNext()) {
DepartmentModel next = iterator.next();
if (!ValidationUtil.isEmpty(next)) {
departmentMap.put(next.getSequenceNbr(), next);
}
}
}
// 组装单位信息为Map
Map<Long, CompanyModel> companyMap = new HashMap(
Bean.listToMap(agencyUserModel.getCompanys(), "sequenceNbr", CompanyModel.class));
Map<Long, List<Long>> orgRoleMap = agencyUserModel.getOrgRoleSeqs();
for (Long orgKey : orgRoleMap.keySet()) {
List<RoleModel> roleModels = rolesMap.get(orgKey);
for (RoleModel roleModel : roleModels) {
String orgCode = null;
if (departmentMap.containsKey(orgKey)) {
orgCode = departmentMap.get(orgKey).getOrgCode();
} else if (companyMap.containsKey(orgKey)) {
orgCode = companyMap.get(orgKey).getOrgCode();
} else {
throw new DataNotFound("用户角色数据丢失");
}
resMap.put(roleModel.getRoleName(), orgCode);
}
}
} catch (Exception e) {
System.err.println(e.getMessage());
}
return resMap;
}
/**
* 是否包含admin
*
* @param roleName
* @return
*/
public static boolean isAdmin(String adminAllRole) {
Map<String, String> roleOrgMap = getCurUserOrgRoleMap();
if (adminAllRole != null&&!adminAllRole.isEmpty()) {
String[] roles = adminAllRole.split(",");
for (String role : roles) {
if (roleOrgMap.containsKey(role)) {
return true;
}
}
}
return false;
}
}
package com.yeejoin.amos.knowledgebase.face.util;
import org.typroject.tyboot.core.foundation.utils.TreeNode;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* <h1><h1>
*
* @author tiantao
* @date 2020/12/7 14:23
*/
public class TreeUtil {
public static<T extends TreeNode> List<T> getAllChildren(Collection<T> trees) {
List<T> childrenNodes = new ArrayList<>();
if (!ValidationUtil.isEmpty(trees)) {
trees.forEach(node->{
childrenNodes.add(node);
if (!ValidationUtil.isEmpty(node.getChildren())) {
childrenNodes.addAll(getAllChildren(node.getChildren()));
}
});
}
return childrenNodes;
}
}
package com.yeejoin.amos.knowledgebase.face.util.excel;
import lombok.Data;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.List;
import java.util.Map;
@Data
public class ExcelImportConfig {
/**
* 终止行号
*/
private Integer stopColIndex;
/**
* 起始行
*/
private Integer startRowIndex;
/**
* 标签与列对应关系
*/
private Map<Long, List<Integer>> tagColumns;
/**
* 基本信息与列对应关系
*/
private Map<String, Integer> basicColumns;
/**
* 列数据格式化方式
*/
private Map<Integer, String> formatMap;
/**
* 列数据对应枚举
*/
private Map<Integer, String> enumMap;
/**
* 文档正文模板
*/
private String htmlModule;
/**
* 文档摘要模板
*/
private String summaryModule;
/**
* 文档标题列
*/
private Integer titleColumn;
/**
* 文档分类列
*/
private String directoryColumn;
/**
* 完整性检查
*
* @return 是否完整
*/
public boolean check() {
if (ValidationUtil.isEmpty(startRowIndex)
|| null == tagColumns
|| null == basicColumns
|| null == formatMap
|| null == enumMap
|| null == titleColumn
|| null == directoryColumn
|| ValidationUtil.isEmpty(htmlModule)) {
return false;
}
for (List<Integer> colIndexList : tagColumns.values()) {
if (ValidationUtil.isEmpty(colIndexList)
|| ValidationUtil.isEmpty(colIndexList.get(0))) {
return false;
}
for (Integer colIndex : colIndexList) {
if (ValidationUtil.isEmpty(colIndex)) {
return false;
}
}
}
for (Integer value : basicColumns.values()) {
if (ValidationUtil.isEmpty(value)) {
return false;
}
}
return true;
}
}
package com.yeejoin.amos.knowledgebase.face.util.pdf;
import com.itextpdf.html2pdf.ConverterProperties;
import com.itextpdf.html2pdf.HtmlConverter;
import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.IBlockElement;
import com.itextpdf.layout.element.IElement;
import com.itextpdf.layout.font.FontProvider;
import com.yeejoin.amos.knowledgebase.face.util.IOConfig;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.TextNode;
import org.jsoup.select.Elements;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import static com.yeejoin.amos.knowledgebase.face.util.DataTransformator.inputStream2Bytes;
/**
* pdf导出工具
*
* @author tiantao
*/
public class PdfBuilder {
private static final ConverterProperties CP;
static {
CP = new ConverterProperties();
// 设置字体
FontProvider fontProvider = new DefaultFontProvider(false, false, false);
boolean success = false;
try(InputStream font = PdfBuilder.class.getClassLoader().getResourceAsStream("fonts/msyh.ttf")) {
fontProvider.addFont(inputStream2Bytes(font));
success = true;
} catch (IOException e) {
e.printStackTrace();
}
if (!success) {
fontProvider.addStandardPdfFonts();
}
CP.setFontProvider(fontProvider);
CP.setCharset("utf-8");
}
public static byte[] html2Pdf(String html, String docTitle) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
org.jsoup.nodes.Document htmlDocument = Jsoup.parseBodyFragment(html, "UTF-8");
for (Element imgDocument : htmlDocument.getElementsByTag("img")) {
String src = imgDocument.attr("src");
if (null != src && src.length() > 0 && src.startsWith(IOConfig.PIC_ROUTER)) {
imgDocument.attr("src", src.replaceFirst(IOConfig.PIC_ROUTER, IOConfig.PIC_URI));
}
}
replaceElement(htmlDocument);
String htmlStr = htmlDocument.html();
PdfDocument pd = new PdfDocument(new PdfWriter(os));
pd.getDocumentInfo().setTitle(docTitle);
Document document = new Document(pd, PageSize.A4);
try {
// 设置页面边距 必须先设置边距,再添加内容,否则页边距无效
document.setMargins(20, 32, 20, 32);
List<IElement> list = HtmlConverter.convertToElements(htmlStr, CP);
for (IElement ie : list) {
document.add((IBlockElement) ie);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
document.close();
}
return os.toByteArray();
}
/**
* 替换显示效果不好的页面元素
*
* @param element body
*/
static void replaceElement(Element element) {
Elements inputs = element.getElementsByTag("input");
inputs.forEach(input -> {
String type = input.attr("type");
String value = input.attr("value");
if (type != null) {
switch (type.trim()) {
case "datetime-local":
input.removeAttr("type");
if (value != null && value.trim().length() > 0) {
input.attr("value", value.trim().replaceAll("/", "-").replaceAll("T", " "));
}
break;
case "text":
break;
default:
}
}
});
Elements textareas = element.getElementsByTag("textarea");
textareas.forEach(textarea -> {
String value = textarea.attr("value");
textarea.tagName("div").clearAttributes().attr("style", "font-size: 14px; line-height: 30px; padding: 0 7px; border-radius: 4px; border: solid 1px #dedede;");
String text = "";
if (value != null) {
text += text + value;
}
textarea.appendChild(new TextNode(text));
});
}
}
package com.yeejoin.amos.knowledgebase.face.util.sql;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.Getter;
import java.util.Map;
import java.util.Set;
/**
* 自定义查询体
* @author tiantao
*/
@Getter
abstract public class BaseSqlCondition {
/**
* 条件类型
*/
private static final String CONDITION_TYPE = "conditionType";
private static final String BLOCK = "block";
private static final String CONDITION = "condition";
/**
* 逻辑关系
*/
private String logic;
BaseSqlCondition(Map<String, Object> resourceMap) {
this.logic = (String) resourceMap.get("logic");
}
public static BaseSqlCondition getInstance(Map<String, Object> resourceMap) {
String type = (String) resourceMap.get(CONDITION_TYPE);
BaseSqlCondition sqlCondition;
if (BLOCK.equals(type)) {
sqlCondition = new SqlBlock(resourceMap);
} else if (CONDITION.equals(type)) {
sqlCondition = new SqlStatement(resourceMap);
} else {
throw new RuntimeException("条件格式错误");
}
if (!sqlCondition.validate()) {
throw new RuntimeException("条件格式错误");
}
return sqlCondition;
}
public <T> void compose(QueryWrapper<T> queryWrapper) {
composeWrapper(queryWrapper, "and");
}
/**
* 组装条件到QueryWrapper
*
* @param queryWrapper 查询语句
* @param logic 与上个条件的逻辑关系
* @param <T> 泛型
*/
abstract <T> void composeWrapper(QueryWrapper<T> queryWrapper, String logic);
/**
* 检查数据格式及完整性
* @return 是否合格
*/
abstract boolean validate();
public abstract Set<String> getTagSeqs();
public abstract int getTotalStatement();
}
package com.yeejoin.amos.knowledgebase.face.util.sql;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.util.*;
/**
* 查询条件块
*/
class SqlBlock extends BaseSqlCondition {
private List<BaseSqlCondition> conditions;
SqlBlock(Map<String, Object> resourceMap) {
super(resourceMap);
this.conditions = new ArrayList<>();
Object children = resourceMap.get("children");
if (children instanceof List) {
try {
((List<Map<String, Object>>) children).forEach(map -> this.conditions.add(BaseSqlCondition.getInstance(map)));
} catch (ClassCastException e) {
throw new RuntimeException("条件格式错误");
}
} else {
throw new RuntimeException("条件格式错误");
}
}
@Override
<T> void composeWrapper(QueryWrapper<T> queryWrapper, String logic) {
switch (logic) {
case "or":
queryWrapper.or(this::composeChild);
break;
case "and":
default:
queryWrapper.and(this::composeChild);
break;
}
}
@Override
boolean validate() {
return conditions != null && !conditions.isEmpty();
}
@Override
public Set<String> getTagSeqs() {
Set<String> set = new HashSet<>();
conditions.forEach(condition -> set.addAll(condition.getTagSeqs()));
return set;
}
@Override
public int getTotalStatement() {
return conditions.stream().mapToInt(BaseSqlCondition::getTotalStatement).sum();
}
private <T> void composeChild(QueryWrapper<T> wrapper) {
final String[] nextLogic = {"and"};
conditions.forEach(condition -> {
condition.composeWrapper(wrapper, nextLogic[0]);
nextLogic[0] = condition.getLogic();
});
}
}
This diff is collapsed.
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