Browse Source

update

master
Jianye.Wang 2 years ago
parent
commit
cdd5e96d1b
  1. 4
      plugin.xml
  2. 77
      src/main/java/com/fr/plugin/decision/api/bean/FineRespondNotNull.java
  3. 42
      src/main/java/com/fr/plugin/decision/api/controller/bi/DashboardResource.java
  4. 15
      src/main/java/com/fr/plugin/decision/api/controller/bi/DirectConfResource.java
  5. 18
      src/main/java/com/fr/plugin/decision/api/service/ConfService.java
  6. 18
      src/main/java/com/fr/plugin/decision/api/service/DashboardService.java

4
plugin.xml

@ -4,7 +4,7 @@
<name><![CDATA[BI集成API接口]]></name>
<active>yes</active>
<hidden>no</hidden>
<version>1.4.17.4</version>
<version>1.4.19</version>
<env-version>10.0~11.0</env-version>
<jartime>2019-1-31</jartime>
<vendor>JianYe.Wang</vendor>
@ -36,6 +36,8 @@
[2020-01-26]<br/>1.4.15:仪表板编辑时删除;数据集血缘关系接口返回type;仪表板数据集权限校验兼容tab组件<br/>
[2020-01-26]<br/>1.4.16:资源导入直连和抽取兼容<br/>
[2020-03-11]<br/>1.4.17:兼容11版本;仪表板血缘分析支持tab组件;查询分组业务包接口包含数据集;数据集血缘分析支持SQL返回<br/>
[2020-05-11]<br/>1.4.18:/entry/{entryId}/info 接口异常优化处理;优化errorMsg返回<br/>
[2020-05-25]<br/>1.4.19:获取业务包分组结构/获取当前用户下仪表板目录接口 添加创建/结束时间限制<br/>
]]>
</change-notes>
<function-recorder class="com.fr.plugin.decision.api.APIControllerBridge"/>

77
src/main/java/com/fr/plugin/decision/api/bean/FineRespondNotNull.java

@ -3,6 +3,9 @@ package com.fr.plugin.decision.api.bean;
import com.finebi.foundation.api.reponse.FineRespond;
import com.fr.third.fasterxml.jackson.annotation.JsonInclude;
import java.util.HashMap;
import java.util.Map;
/**
* @Author JianYe.Wang
* @Data 2021/11/24 18:46
@ -12,11 +15,83 @@ import com.fr.third.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
public class FineRespondNotNull extends FineRespond {
private final static Map<String, String> ERROR_CODE_MAP = new HashMap<>();
public FineRespondNotNull() {
}
public FineRespondNotNull(FineRespond fineRespond) {
setErrorCode(fineRespond.getErrorCode());
setErrorMsg(fineRespond.getErrorMsg());
setErrorMsg(ERROR_CODE_MAP.containsKey(fineRespond.getErrorCode()) ? ERROR_CODE_MAP.get(fineRespond.getErrorCode()) : fineRespond.getErrorMsg());
}
// https://kms.fineres.com/pages/viewpage.action?pageId=129713504
static {
ERROR_CODE_MAP.put("61500001", "公式语法错误");
ERROR_CODE_MAP.put("61500002", "非聚合公式存在明细过滤");
ERROR_CODE_MAP.put("61500003", "聚合公式和非聚合公式进行运算");
ERROR_CODE_MAP.put("61500004", "聚合函数中使用聚合参数");
ERROR_CODE_MAP.put("61500005", "聚合函数存在多个指标");
ERROR_CODE_MAP.put("61500006", "快速计算函数只有第一个可以是公式");
ERROR_CODE_MAP.put("61500007", "快速计算函数内参数没有聚合函数");
ERROR_CODE_MAP.put("61310001", "连接失败");
ERROR_CODE_MAP.put("61310002", "字段缺失");
ERROR_CODE_MAP.put("61310003", "字段正在被使用");
ERROR_CODE_MAP.put("61310004", "字段重复");
ERROR_CODE_MAP.put("61310005", "字段没有权限");
ERROR_CODE_MAP.put("61310006", "分组缺失");
ERROR_CODE_MAP.put("61310007", "分组正在被使用");
ERROR_CODE_MAP.put("61310008", "分组重复");
ERROR_CODE_MAP.put("61310009", "分组没有权限");
ERROR_CODE_MAP.put("61310010", "业务包缺失");
ERROR_CODE_MAP.put("61310011", "业务包正在被使用");
ERROR_CODE_MAP.put("61310012", "业务包重复");
ERROR_CODE_MAP.put("61310013", "没有业务包权限");
ERROR_CODE_MAP.put("61310014", "表缺失");
ERROR_CODE_MAP.put("61310015", "表正在使用");
ERROR_CODE_MAP.put("61310016", "表重复");
ERROR_CODE_MAP.put("61310017", "表没有权限");
ERROR_CODE_MAP.put("61310018", "关联缺失");
ERROR_CODE_MAP.put("61310019", "关联正在使用");
ERROR_CODE_MAP.put("61310020", "关联重复");
ERROR_CODE_MAP.put("61310021", "关联没有权限");
ERROR_CODE_MAP.put("61310022", "不支持表类型");
ERROR_CODE_MAP.put("61310023", "配置层面服务不支持");
ERROR_CODE_MAP.put("61310024", "参数异常");
ERROR_CODE_MAP.put("61310025", "名字重复");
ERROR_CODE_MAP.put("61310026", "不合法路径");
ERROR_CODE_MAP.put("61310027", "路径缺失");
ERROR_CODE_MAP.put("61310028", "路径操作没有权限");
ERROR_CODE_MAP.put("61310029", "对表进行的操作无效");
ERROR_CODE_MAP.put("61310030", "路径不可达");
ERROR_CODE_MAP.put("61310031", "分析操作不安全");
ERROR_CODE_MAP.put("61310032", "模版重复");
ERROR_CODE_MAP.put("61310033", "模版不存在");
ERROR_CODE_MAP.put("61310034", "模版文件夹不存在");
ERROR_CODE_MAP.put("61310050", "模版命名为空");
ERROR_CODE_MAP.put("61310052", "分享被关闭");
ERROR_CODE_MAP.put("61310036", "组件类型不支持");
ERROR_CODE_MAP.put("61310037", "引擎服务异常");
ERROR_CODE_MAP.put("61310044", "循环依赖报错");
ERROR_CODE_MAP.put("61310045", "模版正在编辑");
ERROR_CODE_MAP.put("61310046", "模版已挂出");
ERROR_CODE_MAP.put("61310048", "未定义的异常信息");
ERROR_CODE_MAP.put("61310053", "模版session找不到");
ERROR_CODE_MAP.put("62400004", "组件没有数据");
ERROR_CODE_MAP.put("62400003", "没有权限获取组件的数据");
ERROR_CODE_MAP.put("61310049", "模版session id已经关闭异常");
/*ERROR_CODE_MAP.put("61310032", "保存异常");
ERROR_CODE_MAP.put("61310033", "更新异常");
ERROR_CODE_MAP.put("61310034", "删除异常");
ERROR_CODE_MAP.put("61310035", "查询异常");*/
ERROR_CODE_MAP.put("61300302", "字段名或表名长度超出key值长度限制,无法保存到配置");
ERROR_CODE_MAP.put("61310039", "排序获取名字错误");
ERROR_CODE_MAP.put("61310040", "查询错误");
ERROR_CODE_MAP.put("61310041", "字段类型错误");
ERROR_CODE_MAP.put("61310042", "sheet页错误");
ERROR_CODE_MAP.put("61310043", "sheet表头错误");
ERROR_CODE_MAP.put("61310047", "sql错误");
ERROR_CODE_MAP.put("62400006", "超出最大限制");
}
}

42
src/main/java/com/fr/plugin/decision/api/controller/bi/DashboardResource.java

@ -226,10 +226,12 @@ public class DashboardResource extends BaseAction {
@ResponseBody
public Response getDashBoardList(HttpServletRequest req,
@RequestParam(required = false, value = "onlyFolder") boolean onlyFolder,
@RequestParam(required = false, value = "pId") String pId) throws Exception {
@RequestParam(required = false, value = "pId") String pId,
@RequestParam(required = false, value = "st") String st,
@RequestParam(required = false, value = "et") String et) throws Exception {
User user = FineUserUtils.getUserByRequest(req);
return Response.ok(DashboardService.getInstance().extendReportIndex(
DashboardService.getInstance().getReportIndex(user.getId(), onlyFolder, pId),
DashboardService.getInstance().getReportIndex(user.getId(), onlyFolder, pId, st, et),
new HashMap<String, String>(1){{ put(user.getId(), user.getUserName()); }}));
}
@ -268,7 +270,6 @@ public class DashboardResource extends BaseAction {
return Response.ok(result);
}
@RequestMapping(value = "/info", method = RequestMethod.GET)
@ResponseBody
public Response getTemplateInfoById(HttpServletRequest request,
@ -390,27 +391,32 @@ public class DashboardResource extends BaseAction {
)
public Response getEntryDashboardInfo(@FinePathVariable("entryId") String entryId) throws Exception {
List<BiReportBean> dashboardList = APIService.getInstance().getDashboardByEntryID(entryId);
List<DashboardEntryInfo> infoList = new ArrayList<>();
/*List<DashboardEntryInfo> infoList = new ArrayList<>();
for (BiReportBean biReportBean : dashboardList) {
infoList.add(getInfoByBiReportBean(biReportBean));
}
return Response.ok(infoList);
return Response.ok(infoList);*/
return Response.ok(dashboardList.stream().map(this::getInfoByBiReportBean).collect(Collectors.toList()));
}
private DashboardEntryInfo getInfoByBiReportBean(BiReportBean entryBean) throws Exception {
Optional<ReportIndex> optional = getReportIndexService().getReportIndexById(entryBean.getTemplateId());
if (!optional.isPresent()) {
throw new RuntimeException("Dashboard " + entryBean.getTemplateId() + " not exist!");
private Object getInfoByBiReportBean(BiReportBean entryBean) {
try {
Optional<ReportIndex> optional = getReportIndexService().getReportIndexById(entryBean.getTemplateId());
if (!optional.isPresent()) {
return Response.error("", "Dashboard " + entryBean.getTemplateId() + " not exist!");
}
ReportIndex reportIndex = optional.get();
User user = UserService.getInstance().getUserByUserId(String.valueOf(reportIndex.getCreateBy()));
String username = user == null ? String.valueOf(reportIndex.getCreateBy()) : user.getUserName();
return new DashboardEntryInfo(
entryBean.getId(),
entryBean.getTemplateId(),
reportIndex.getInitTime(),
username
);
} catch (Exception e) {
return Response.error("", e.getMessage());
}
ReportIndex reportIndex = optional.get();
User user = UserService.getInstance().getUserByUserId(String.valueOf(reportIndex.getCreateBy()));
String username = user == null ? String.valueOf(reportIndex.getCreateBy()) : user.getUserName();
return new DashboardEntryInfo(
entryBean.getId(),
entryBean.getTemplateId(),
reportIndex.getInitTime(),
username
);
}
/**

15
src/main/java/com/fr/plugin/decision/api/controller/bi/DirectConfResource.java

@ -201,7 +201,10 @@ public class DirectConfResource extends DirectConfAction {
value = {"/groups"},
method = {RequestMethod.GET}
)
public Response getGroupInfoById(HttpServletRequest req, @RequestParam(value = "pId", required = false) String pId) throws Exception {
public Response getGroupInfoById(HttpServletRequest req,
@RequestParam(value = "pId", required = false) String pId,
@RequestParam(required = false, value = "st") String st,
@RequestParam(required = false, value = "et") String et) throws Exception {
UserAuthority authorityUser = getFineUserInfoService().getUserAuthority(req);
List<SimpleGroupBean> list;
if (StringUtils.isBlank(pId)) {
@ -209,7 +212,7 @@ public class DirectConfResource extends DirectConfAction {
} else {
list = DirectPackageGroupServiceForHW.getAllGroupInfo(pId, authorityUser);
}
ConfService.getInstance().addTableByPackage(list, authorityUser);
ConfService.getInstance().addTableByPackage(list, authorityUser, st, et);
return Response.ok(list);
}
@ -389,7 +392,6 @@ public class DirectConfResource extends DirectConfAction {
public Response addSqlTables(@RequestBody List<BusinessTableBean> tableBeans,
HttpServletRequest request,
@RequestParam(value = "skipCheck", required = false) boolean skipCheck) throws Exception {
long start = System.currentTimeMillis();
UserAuthority authorityUser = getFineUserInfoService().getUserAuthority(request);
List resultBeanList = new ArrayList<>();
for (BusinessTableBean tableBean : tableBeans) {
@ -402,14 +404,11 @@ public class DirectConfResource extends DirectConfAction {
resultBeanList.add(Response.error("addSqlTables", e.getMessage()));
continue;
}
long createEnd = System.currentTimeMillis();
if (!skipCheck) {
try {
SimpleTableInfoBean simpleTableInfoBean = ConfService.getInstance().sqlCheck(sqlTableBean, authorityUser);
resultBeanList.add(new AddTableResult(resultBean,
simpleTableInfoBean
.getFields()
.stream()
simpleTableInfoBean.getFields().stream()
.map(field -> {
field.setId(ServiceFieldIdUtils.createFineFieldId(resultBean.getName(), field.getId()));
return field;
@ -423,8 +422,6 @@ public class DirectConfResource extends DirectConfAction {
getTableService().removeBusinessTable(sqlTableBean.getName(), authorityUser);
}
}
long end = System.currentTimeMillis();
FineLoggerFactory.getLogger().error("Create SQL TableData Action, create spend:{} ms, check spend:{} ms", createEnd - start, end - createEnd);
}
return Response.ok(resultBeanList);
}

18
src/main/java/com/fr/plugin/decision/api/service/ConfService.java

@ -2,6 +2,7 @@ package com.fr.plugin.decision.api.service;
import com.finebi.burger.api.bean.configuration.group.SimpleGroupBean;
import com.finebi.burger.api.bean.configuration.pack.SimplePackageBean;
import com.finebi.burger.api.bean.configuration.table.AbstractBusinessTableBean;
import com.finebi.burger.api.bean.configuration.table.AnalysisTableBean;
import com.finebi.burger.api.bean.configuration.table.SqlTableBean;
import com.finebi.burger.api.bean.configuration.table.response.TableSaveResultBean;
@ -23,6 +24,7 @@ import com.finebi.direct.burger.impl.service.helper.table.SaveBusinessTableVisit
import com.finebi.direct.common.api.cell.context.CellCreator;
import com.finebi.utils.CollectionUtils;
import com.finebi.utils.CompareUtils;
import com.finebi.utils.StringUtils;
import com.fr.decision.webservice.v10.user.UserService;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.decision.api.bean.table.TableBaseBean;
@ -31,6 +33,7 @@ import com.fr.plugin.decision.api.direct.service.XAnalysisTableServiceHelper;
import com.fr.plugin.decision.api.utils.DirectServiceUtils;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author JianYe.Wang
@ -121,12 +124,21 @@ public class ConfService {
return resultBean;
}
public void addTableByPackage(List<SimpleGroupBean> list, UserAuthority userAuthority) throws Exception {
public void addTableByPackage(List<SimpleGroupBean> list, UserAuthority userAuthority, String st, String et) throws Exception {
for (SimpleGroupBean simpleGroupBean:list) {
addTableByPackage(simpleGroupBean.getGroups(), userAuthority);
addTableByPackage(simpleGroupBean.getGroups(), userAuthority, st, et);
for (SimplePackageBean simplePackageBean:simpleGroupBean.getPacks()) {
CheckedTablePackage checkedTablePackage = DirectPackageGroupServiceForHW.getPackageTables(simplePackageBean.getId(), userAuthority, false);
simplePackageBean.setTables(checkedTablePackage.getTables());
simplePackageBean.setTables(checkedTablePackage.getTables().stream().filter(businessTableBean -> {
long ct = ((AbstractBusinessTableBean) businessTableBean).getInitTime();
if (StringUtils.isNotBlank(st)) {
if (ct <= Long.valueOf(st)) return false;
}
if (StringUtils.isNotBlank(et)) {
if (ct >= Long.valueOf(et)) return false;
}
return true;
}).collect(Collectors.toList()));
}
}
}

18
src/main/java/com/fr/plugin/decision/api/service/DashboardService.java

@ -138,16 +138,13 @@ public class DashboardService {
* @param pId 指定目录
* @return
*/
public List<ReportIndex> getReportIndex(String userId, boolean onlyFolder, String pId) throws Exception {
public List<ReportIndex> getReportIndex(String userId, boolean onlyFolder, String pId, String st, String et) throws Exception {
List<ReportIndex> result = new ArrayList<>();
long st = System.currentTimeMillis();
addChildReportIndex(userId, onlyFolder, pId, result);
long ed = System.currentTimeMillis();
LogUtils.info(" getReportIndex user:{} pId:{} spend:{}", userId, pId, ed - st);
addChildReportIndex(userId, onlyFolder, pId, result, st, et);
return result;
}
private void addChildReportIndex(String userId, boolean onlyFolder, String pId, List<ReportIndex> result) throws Exception {
private void addChildReportIndex(String userId, boolean onlyFolder, String pId, List<ReportIndex> result, String st, String et) throws Exception {
QueryCondition query = QueryFactory.create().addRestriction(RestrictionFactory.eq("createBy", userId));
if (onlyFolder) {
query.addRestriction(RestrictionFactory.eq("folder", true));
@ -155,13 +152,20 @@ public class DashboardService {
if (!StringUtils.isBlank(pId)) {
query.addRestriction(RestrictionFactory.eq("pId", pId));
}
if (StringUtils.isNotBlank(st)) {
query.addRestriction(RestrictionFactory.gt("lastUpdateTime", Long.valueOf(st)));
}
if (StringUtils.isNotBlank(et)) {
query.addRestriction(RestrictionFactory.lt("lastUpdateTime", Long.valueOf(et)));
}
List<ReportIndex> search = reportIndexCell.find(query);
if (!StringUtils.isBlank(pId)) {
for (ReportIndex index : search) {
result.add(index);
if (index.isFolder()) {
addChildReportIndex(userId, onlyFolder, index.getId(), result);
addChildReportIndex(userId, onlyFolder, index.getId(), result, st, et);
}
}
} else {

Loading…
Cancel
Save