Commit 8a87767b authored by linruibiao's avatar linruibiao

数据库设计

parent 818ceadf
package com.syc.slm.slmbi.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
/**
* slm-bi
* Influxdb 配置
* @author : lin
* @date : 2021-03-25 10:50
**/
@Data
@Configuration
public class InfluxdbConfig {
@Value("${influxdb.host}")
public String host;
@Value("${influxdb.port}")
public String port;
@Value("${influxdb.username}")
public String username;
@Value("${influxdb.password}")
public String password;
}
package com.syc.slm.slmbi.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
......@@ -20,4 +21,15 @@ public class MybatisPlusConfig {
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
// /**
// * 自动填充数据
// */
// @Bean
// @ConditionalOnMissingBean(MateMetaObjectHandler.class)
// public MateMetaObjectHandler mateMetaObjectHandler(){
// MateMetaObjectHandler metaObjectHandler = new MateMetaObjectHandler();
// log.info("MateMetaObjectHandler [{}]", metaObjectHandler);
// return metaObjectHandler;
// }
}
package com.syc.slm.slmbi.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.function.Supplier;
/**
* mybatisplus自定义填充公共字段 ,即没有传的字段自动填充
* @author lin
* @date 2021-04-01 10:52:44
*/
@Component
@Slf4j
public class SysMetaObjectHandler implements MetaObjectHandler {
private static final String APP_ID = "appId";
private static final String CREATOR = "creator";
private static final String CREATOR_NAME = "creatorName";
private static final String CREATE_TIME = "createTime";
private static final String UPDATER = "updater";
private static final String UPDATER_NAME = "updaterName";
private static final String UPDATE_TIME = "updateTime";
private static final String RECORD_STATUS = "recordStatus";
/**
* 插入使用
*/
@Override
public void insertFill(MetaObject metaObject) {
fillValue(metaObject,
APP_ID,
() -> (metaObject.getValue(APP_ID) == null ? IdWorker.get32UUID() : metaObject.getValue(APP_ID)));
fillValue(metaObject,
CREATOR,
() -> (metaObject.getValue(CREATOR) == null ? IdWorker.get32UUID() : metaObject.getValue(CREATOR)));
fillValue(metaObject,
CREATOR_NAME,
() -> (metaObject.getValue(CREATOR_NAME) == null ? "小明" : metaObject.getValue(CREATOR_NAME)));
fillValue(metaObject,
CREATE_TIME,
() -> (metaObject.getValue(CREATE_TIME) == null ? new Date() : metaObject.getValue(CREATE_TIME)));
fillValue(metaObject,
RECORD_STATUS,
() -> (metaObject.getValue(RECORD_STATUS) == null ? 1 : metaObject.getValue(RECORD_STATUS)));
}
@Override
public void updateFill(MetaObject metaObject) {
setFieldValByName(UPDATER, IdWorker.get32UUID(), metaObject);
setFieldValByName(UPDATER_NAME, "小明",metaObject);
setFieldValByName(UPDATE_TIME, new Date(), metaObject);
}
private void fillValue(MetaObject metaObject, String fieldName, Supplier<?> valueSupplier) {
if (!metaObject.hasGetter(fieldName)) {
return;
}
Object sidObj = metaObject.getValue(fieldName);
if (sidObj == null && metaObject.hasSetter(fieldName) && valueSupplier != null) {
setFieldValByName(fieldName, valueSupplier.get(), metaObject);
}
}
}
......@@ -29,8 +29,8 @@ public class DeptController {
@GetMapping
@ApiOperation("部门查询")
@ApiImplicitParams({@ApiImplicitParam(name = "deptName", value = "部门名称"),
@ApiImplicitParam(name = "appId", value = "租户id", required = true)})
@ApiImplicitParams({@ApiImplicitParam(name = "deptName", value = "部门名称",dataTypeClass = String.class),
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)})
public R<List<DeptVo>> selectDeptList(@PathVariable String appId,
@RequestParam(value = "deptName", required = false) String deptName) {
return R.ok(deptService.selectDeptList(deptName));
......
......@@ -29,22 +29,22 @@ public class InstrumentPanelConfigController {
@PostMapping
@ApiOperation("保存仪表板样式以及数据配置")
@ApiImplicitParam(name = "appId", value = "租户id", required = true)
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<String> saveInstrumentPanelConfig(@PathVariable String appId, InstrumentPanelConfigDTO config) {
return R.ok(instrumentPanelConfigService.saveConfig(config));
}
@PostMapping("/publish")
@ApiOperation("保存发布仪表板样式以及数据配置")
@ApiImplicitParam(name = "appId", value = "租户id", required = true)
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<String> publish(@PathVariable String appId, @RequestBody InstrumentPanelConfigDTO config) {
return R.ok(instrumentPanelConfigService.publish(config));
}
@GetMapping("/{panelId}")
@ApiOperation("根据仪表板id获取仪表板配置")
@ApiImplicitParams({@ApiImplicitParam(name = "panelId", value = "仪表板id"),
@ApiImplicitParam(name = "appId", value = "租户id", required = true)})
@ApiImplicitParams({@ApiImplicitParam(name = "panelId", value = "仪表板id",dataTypeClass = String.class),
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)})
public R<InstrumentPanelConfigVo> getConfigByPanelId(@PathVariable String appId,
@PathVariable("panelId") String panelId) {
return R.ok(instrumentPanelConfigService.getConfigByPanelId(panelId));
......
......@@ -38,7 +38,7 @@ public class InstrumentPanelController {
*/
@GetMapping
@ApiOperation("仪表板列表")
@ApiImplicitParam(name = "appId", value = "租户id", required = true)
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<IPage<InstrumentPanelVo>> selectInstrumentPanelList(@PathVariable String appId,
QueryInstrumentPanelDTO where) {
return R.ok(instrumentPanelService.selectInstrumentPanelList(where));
......@@ -46,38 +46,38 @@ public class InstrumentPanelController {
@PostMapping
@ApiOperation("新增仪表板")
@ApiImplicitParam(name = "appId", value = "租户id", required = true)
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<String> saveInstrumentPanel(@PathVariable String appId, @RequestBody SaveInstrumentPanelDTO panel) {
return R.ok(instrumentPanelService.savePanel(panel));
}
@PutMapping("/publish")
@ApiOperation("批量发布")
@ApiImplicitParams({@ApiImplicitParam(name = "ids", value = "仪表板id集合", required = true),
@ApiImplicitParam(name = "appId", value = "租户id", required = true)})
@ApiImplicitParams({@ApiImplicitParam(name = "ids", value = "仪表板id集合", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)})
public R<Boolean> batchPublish(@PathVariable String appId, @RequestBody List<String> ids) {
return R.ok(instrumentPanelService.batchPublish(ids));
}
@PutMapping("/{id}/offline")
@ApiOperation("下线")
@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "仪表板id", required = true),
@ApiImplicitParam(name = "appId", value = "租户id", required = true)})
@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "仪表板id", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)})
public R<String> offline(@PathVariable String appId, @PathVariable("id") String id) {
return R.ok(instrumentPanelService.offline(id));
}
@DeleteMapping("/{id}")
@ApiOperation("删除仪表板")
@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "仪表板id", required = true),
@ApiImplicitParam(name = "appId", value = "租户id", required = true)})
@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "仪表板id", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)})
public R<String> delInstrumentPanel(@PathVariable String appId, @PathVariable("id") String id) {
return R.ok(instrumentPanelService.delPanel(id));
}
@PostMapping("/save-as")
@ApiOperation("另存为")
@ApiImplicitParam(name = "id", value = "仪表板id", required = true)
@ApiImplicitParam(name = "id", value = "仪表板id", required = true,dataTypeClass = String.class)
public R<String> saveAs(@PathVariable String appId, @RequestBody SaveInstrumentPanelDTO panelDTO) {
// FIXME 另存为需要保存配置、权限信息吗?
return R.ok(instrumentPanelService.saveAsPanel(panelDTO));
......@@ -85,16 +85,16 @@ public class InstrumentPanelController {
@PostMapping("/{id}/show-recovery-btn")
@ApiOperation("是否显示恢复按钮")
@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "仪表板id", required = true),
@ApiImplicitParam(name = "appId", value = "租户id", required = true)})
@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "仪表板id", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)})
public R<Boolean> showRecoveryBtn(@PathVariable String appId, @PathVariable("id") String id) {
return R.ok(instrumentPanelService.showRecoveryBtn(id));
}
@PutMapping("/{id}/recovery")
@ApiOperation("恢复按钮操作")
@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "仪表板id", required = true),
@ApiImplicitParam(name = "appId", value = "租户id", required = true)})
@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "仪表板id", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)})
public R<String> recoveryInstrumentPanel(@PathVariable String appId, @PathVariable("id") String id) {
return R.ok(instrumentPanelService.recoveryPanel(id));
}
......
......@@ -25,23 +25,24 @@ public class InstrumentPanelGroupController {
@Autowired
private InstrumentPanelGroupService instrumentPanelGroupService;
@PostMapping
@ApiOperation("保存仪表板分组")
@ApiImplicitParam(name = "appId", value = "租户id", required = true)
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<String> saveGroup(@PathVariable String appId, @RequestBody CreateInstrumentPanelGroupDTO group) {
return R.ok(instrumentPanelGroupService.saveGroup(group));
}
@PutMapping
@ApiOperation("更新仪表板分组")
@ApiImplicitParam(name = "appId", value = "租户id", required = true)
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<String> updateGroup(@PathVariable String appId, @RequestBody InstrumentPanelGroupDTO group) {
return R.ok(instrumentPanelGroupService.updateGroup(group));
}
@DeleteMapping("/{groupId}")
@ApiOperation("删除仪表板分组")
@ApiImplicitParam(name = "appId", value = "租户id", required = true)
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<String> delGroup(@PathVariable String appId, @PathVariable String groupId) {
return R.ok(instrumentPanelGroupService.delGroup(groupId));
}
......
......@@ -30,15 +30,15 @@ public class InstrumentPanelPermissionController {
@PostMapping
@ApiOperation("保存仪表板权限(列表的属性保存)")
@ApiImplicitParam(name = "appId", value = "租户id", required = true)
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<String> savePermission(@PathVariable String appId, @RequestBody InstrumentPanelPermissionDTO permission) {
return R.ok(instrumentPanelPermissionService.savePermission(permission));
}
@PostMapping("/{panelId}/to-copy")
@ApiOperation("从其他仪表板复制配置")
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true),
@ApiImplicitParam(name = "panelId", value = "其他仪表板id", required = true)})
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "panelId", value = "其他仪表板id", required = true,dataTypeClass = String.class)})
public R<List<InstrumentPanelPermissionVo>> saveCopyOtherPermission(@PathVariable String appId,
@PathVariable String panelId) {
return R.ok(instrumentPanelPermissionService.saveCopyOtherPermission(panelId));
......@@ -46,8 +46,8 @@ public class InstrumentPanelPermissionController {
@PostMapping("/{panelId}/copy-to")
@ApiOperation("将仪表板权限复制给其他仪表板")
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true),
@ApiImplicitParam(name = "panelId", value = "其他仪表板id", required = true)})
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "panelId", value = "其他仪表板id", required = true,dataTypeClass = String.class)})
public R<String> saveCopyToOtherPermission(@PathVariable String appId,
@RequestBody InstrumentPanelPermissionDTO permission,
@PathVariable String panelId) {
......@@ -56,8 +56,8 @@ public class InstrumentPanelPermissionController {
@GetMapping("/{panelId}")
@ApiOperation("根据仪表板id获取仪表板权限")
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true),
@ApiImplicitParam(name = "panelId", value = "其他仪表板id", required = true)})
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "panelId", value = "其他仪表板id", required = true,dataTypeClass = String.class)})
public R<List<InstrumentPanelPermissionVo>> selectPermissionByPanelId(@PathVariable String appId,
@PathVariable String panelId) {
return R.ok(instrumentPanelPermissionService.selectPermissionByPanelId(panelId));
......
......@@ -26,8 +26,8 @@ public class InstrumentPanelTreeController {
@GetMapping
@ApiOperation("第一次进入页面,或者点击查询,获取全部分组下的仪表板数据,以及分组数据")
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true),
@ApiImplicitParam(name = "name", value = "分组名称或者仪表板名称")})
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "name", value = "分组名称或者仪表板名称",dataTypeClass = String.class)})
public R<List<PanelTreeNodeVo>> loadTrees(@PathVariable String appId,
@RequestParam(value = "name", required = false) String name) {
return R.ok(instrumentPanelGroupService.loadTrees(name));
......@@ -35,10 +35,9 @@ public class InstrumentPanelTreeController {
@GetMapping("/children")
@ApiOperation("点击节点获取,该分组下的仪表板信息,以及分组数据")
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true),
@ApiImplicitParam(name = "groupId", value = "分组id", required = true),
@ApiImplicitParam(name = "name", value = "分组名称或者仪表板名称")})
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "groupId", value = "分组id", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "name", value = "分组名称或者仪表板名称",dataTypeClass = String.class)})
public R<List<PanelTreeNodeVo>> children(@PathVariable String appId,
@RequestParam("groupId") String groupId,
@RequestParam(value = "name", required = false) String name) {
......
......@@ -29,8 +29,8 @@ public class PositionController {
@GetMapping
@ApiOperation("职位查询列表")
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true),
@ApiImplicitParam(name = "positionName", value = "职位名称")})
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "positionName", value = "职位名称",dataTypeClass = String.class)})
public R<List<PositionVo>> selectPositionList(@PathVariable String appId,
@RequestParam(value = "positionName", required = false) String positionName) {
return R.ok(positionWorkService.selectPositionList(positionName));
......
......@@ -29,8 +29,8 @@ public class UserController {
@GetMapping
@ApiOperation("用户查询")
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true),
@ApiImplicitParam(name = "userName", value = "用户名称")})
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "userName", value = "用户名称",dataTypeClass = String.class)})
public R<List<UserVo>> selectUserList(@PathVariable String appId,
@RequestParam(value = "userName", required = false) String userName) {
return R.ok(userService.selectUserList(userName));
......
......@@ -32,14 +32,14 @@ public class VariableController {
@GetMapping
@ApiOperation("获取变量列表")
@ApiImplicitParam(name = "appId", value = "租户id", required = true)
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<IPage<VariableVo>> getVariableList(@PathVariable String appId, VariableDTO variableDTO) {
return R.ok(variableService.getVariableList(variableDTO));
}
@GetMapping("/real-time")
@ApiOperation("获取变量实时数据")
@ApiImplicitParam(name = "appId", value = "租户id", required = true)
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<Map<String, List<Map<String, RealTimeVariableVo>>>> getVariableRealTimeDataList(@PathVariable String appId,
RealTimeVariableDTO variableDTO) {
return R.ok(variableService.getVariableRealTimeDataList(variableDTO));
......@@ -47,21 +47,21 @@ public class VariableController {
@GetMapping("/source")
@ApiOperation("获取变量来源列表")
@ApiImplicitParam(name = "appId", value = "租户id", required = true)
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<List<VariableSourceVo>> getVariableSourceList(@PathVariable String appId) {
return R.ok(variableService.getVariableSourceList());
}
@GetMapping("/device")
@ApiOperation("获取变量所属设备列表")
@ApiImplicitParam(name = "appId", value = "租户id", required = true)
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<List<VariableDeviceVo>> getVariableDeviceList(@PathVariable String appId) {
return R.ok(variableService.getVariableDeviceList());
}
@GetMapping("/history")
@ApiOperation("获取变量历史数据")
@ApiImplicitParam(name = "appId", value = "租户id", required = true)
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<Map<String, List<Map<String, HistoryVariableVo>>>> getVariableHistoryDataList(@PathVariable String appId,
HistoryVariableDTO variableDTO) {
return R.ok(variableService.getVariableHistoryDataList(variableDTO));
......
package com.syc.slm.slmbi.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.syc.slm.slmbi.entity.InstrumentPanelConfig;
import org.springframework.stereotype.Component;
/**
* 仪表板配置
*
* @author lin
* @date 2021-04-01 10:52:44
*/
@Component
public interface InstrumentPanelConfigMapper extends BaseMapper<InstrumentPanelConfig> {
}
package com.syc.slm.slmbi.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.syc.slm.slmbi.entity.InstrumentPanelDraft;
import org.springframework.stereotype.Component;
/**
* 仪表板草稿
*
* @author lin
* @date 2021-04-01 10:52:44
*/
@Component
public interface InstrumentPanelDraftMapper extends BaseMapper<InstrumentPanelDraft> {
}
package com.syc.slm.slmbi.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.syc.slm.slmbi.entity.InstrumentPanelPermission;
import org.springframework.stereotype.Component;
/**
* 仪表板权限
*
* @author lin
* @date 2021-04-01 10:52:44
*/
@Component
public interface InstrumentPanelPermissionMapper extends BaseMapper<InstrumentPanelPermission> {
}
package com.syc.slm.slmbi.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.syc.slm.slmbi.entity.InstrumentPanelTree;
import org.springframework.stereotype.Component;
/**
* 仪表板树聚合表
*
* @author lin
* @date 2021-04-01 10:52:44
*/
@Component
public interface InstrumentPanelTreeMapper extends BaseMapper<InstrumentPanelTree> {
}
package com.syc.slm.slmbi.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
......@@ -17,23 +21,47 @@ import java.util.Date;
**/
@ApiModel(description = "公共的实体类")
@Data
@EqualsAndHashCode(callSuper=true)
@EqualsAndHashCode(callSuper = true)
public class BaseEntity<T extends Model<?>> extends Model<T> {
/**
* 主键
*/
@TableId
@ApiModelProperty(value = "主键")
private String id;
/**
* 租户id
*/
@ApiModelProperty(value = "租户id")
@TableField(fill = FieldFill.INSERT)
private String appId;
@ApiModelProperty(value = "创建人主键")
@TableField(fill = FieldFill.INSERT)
private String creator;
@ApiModelProperty(value = "创建人名称")
@TableField(fill = FieldFill.INSERT)
private String creatorName;
@ApiModelProperty(value = "创建时间")
private String createTime;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "修改人主键")
@TableField(fill = FieldFill.UPDATE)
private String updater;
@ApiModelProperty(value = "修改人名称")
@TableField(fill = FieldFill.UPDATE)
private String updaterName;
@ApiModelProperty(value = "修改时间")
@TableField(fill = FieldFill.UPDATE)
private Date updateTime;
@ApiModelProperty(value = "状态")
@TableField(fill = FieldFill.INSERT)
private Integer recordStatus;
@ApiModelProperty(value = "描述")
private String description;
@Override
protected Serializable pkVal() {
return id;
}
}
......@@ -22,8 +22,10 @@ public class InstrumentPanel extends BaseEntity<InstrumentPanel>{
private String name;
@ApiModelProperty(value = "仪表板归属分组")
private String groupId;
@ApiModelProperty(value = "访问权限(公开 1,自定义 2,私有 3)")
private String visitPermission;
@ApiModelProperty(value = "访问权限")
private String accessPermission;
@ApiModelProperty(value = "发布状态")
private Integer published;
......
......@@ -23,4 +23,6 @@ public class InstrumentPanelConfig extends BaseEntity<InstrumentPanelConfig>{
private String panelId;
@ApiModelProperty(value = "仪表板配置详情,包含了样式,数据配置")
private String configDetails;
@ApiModelProperty(value = "发布状态")
private Integer published;
}
package com.syc.slm.slmbi.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 仪表板草稿
*
* @author lin
* @date 2021-04-01 10:52:44
*/
@Data
@TableName("instrument_panel_draft")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "仪表板草稿")
public class InstrumentPanelDraft extends BaseEntity<InstrumentPanelDraft> {
private static final long serialVersionUID = 1L;
/**
* 仪表板名字
*/
@ApiModelProperty(value = "仪表板名字")
private String name;
/**
* 仪表板归属分组
*/
@ApiModelProperty(value = "仪表板归属分组")
private String groupId;
/**
* 访问权限
*/
@ApiModelProperty(value = "访问权限")
private String accessPermission;
/**
* 状态(发布,下线)
*/
@ApiModelProperty(value = "状态(发布,下线)")
private String published;
}
package com.syc.slm.slmbi.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 仪表板权限
*
* @author lin
* @date 2021-04-01 10:52:44
*/
@Data
@TableName("instrument_panel_permission")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "仪表板权限")
public class InstrumentPanelPermission extends BaseEntity<InstrumentPanelPermission> {
private static final long serialVersionUID = 1L;
/**
* 仪表板id
*/
@ApiModelProperty(value = "仪表板id")
private String panelId;
/**
* 业务id(岗位,部门,个体用户)
*/
@ApiModelProperty(value = "业务id(岗位,部门,个体用户)")
private String bizId;
/**
* 业务名称(岗位,部门,个体用户名称)
*/
@ApiModelProperty(value = "业务名称(岗位,部门,个体用户名称)")
private String bizName;
/**
* 业务归属类型
*/
@ApiModelProperty(value = "业务归属类型")
private String bizType;
/**
* 1代表第一版数据,2代表保存发布再次保存得数据
*/
@ApiModelProperty(value = "1代表第一版数据,2代表保存发布再次保存得数据")
private Integer published;
}
package com.syc.slm.slmbi.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 仪表板树聚合表
*
* @author lin
* @date 2021-04-01 10:52:44
*/
@Data
@TableName("instrument_panel_tree")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "仪表板树聚合表")
public class InstrumentPanelTree extends BaseEntity<InstrumentPanelTree> {
private static final long serialVersionUID = 1L;
/**
* 节点全路径
*/
@ApiModelProperty(value = "节点全路径")
private String fullName;
/**
* 节点类型
*/
@ApiModelProperty(value = "节点类型")
private String nodeType;
}
package com.syc.slm.slmbi.function;
import java.io.Serializable;
/**
* @author lin
* @date 2021/4/1
*/
@FunctionalInterface
public interface Action0 extends Serializable { // supplier
void call();
static Action0[] of(Action0... funcs){
return funcs;
}
}
package com.syc.slm.slmbi.service;
import com.syc.slm.slmbi.config.InfluxdbConfig;
import okhttp3.OkHttpClient;
import org.apache.http.ssl.SSLContexts;
import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;
import org.influxdb.dto.BatchPoints;
import org.influxdb.dto.Point;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.net.ssl.*;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* 创建时间:2018-01-28
* <p>修改时间:2018-01-28
* <p>类说明:TOTO
*
* @author luke
* @version 1.0
*/
@Component
public class InfluxService {
private static final String PORT ="8635";
@Autowired
private InfluxdbConfig influxdbConfig;
private InfluxDB influxdb;
@PostConstruct
private void init() {
if (PORT.equals(influxdbConfig.port)) {
// 华为云: https + getBuilder
influxdb = InfluxDBFactory.connect(String.format("https://%s:%s", influxdbConfig.host, influxdbConfig.port),
influxdbConfig.username,
influxdbConfig.password,
getBuilder());
} else {
influxdb = InfluxDBFactory.connect(String.format("http://%s:%s", influxdbConfig.host, influxdbConfig.port),
influxdbConfig.username,
influxdbConfig.password);
}
}
/**
* 插入
*
* @param measurement 表
* @param tags 标签
* @param fields 字段
*/
public void insert(String database, String measurement, Map<String, String> tags, Map<String, Object> fields) {
Point.Builder builder = Point.measurement(measurement);
builder.tag(tags);
builder.fields(fields);
influxdb.write(database, "", builder.build());
}
/**
* 批量插入
*
* @param measurement 表
* @param tagsList 标签
* @param fieldsList 字段
*/
public void insert(String database,
String measurement,
List<Map<String, String>> tagsList,
List<Map<String, Object>> fieldsList) {
BatchPoints.Builder bpBuilder = BatchPoints.database(database);
if (fieldsList != null && fieldsList.size() > 0) {
for (int i = 0; i < fieldsList.size(); i++) {
Point.Builder builder = Point.measurement(measurement);
builder.tag(tagsList.get(i));
builder.fields(fieldsList.get(i));
bpBuilder.point(builder.build());
}
}
influxdb.write(bpBuilder.build());
}
/**
* 按时间插入数据
*
* @param measurement 表
* @param tags 标签
* @param fields 字段
*/
public void insertByTime(String database,
String measurement,
Map<String, String> tags,
Map<String, Object> fields,
long time) {
Point.Builder builder = Point.measurement(measurement);
builder.tag(tags);
builder.fields(fields);
builder.time(time, TimeUnit.MILLISECONDS);
influxdb.write(database, "", builder.build());
}
/**
* 查询
*
* @param command 查询语句
* @return
*/
public QueryResult query(String database, String command) {
return influxdb.query(new Query(command, database));
}
/**
* 免除SSL
*
* @return
*/
private static OkHttpClient.Builder getBuilder() {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.sslSocketFactory(defaultSslSocketFactory(), defaultTrustManager());
builder.hostnameVerifier(noopHostnameVerifier());
return builder;
}
private static X509TrustManager defaultTrustManager() {
return new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
};
}
private static SSLSocketFactory defaultSslSocketFactory() {
try {
SSLContext sslcontext = SSLContexts.createDefault();
sslcontext.init(null, new TrustManager[] {defaultTrustManager()}, new SecureRandom());
return sslcontext.getSocketFactory();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private static HostnameVerifier noopHostnameVerifier() {
return (s, sslSession) -> true;
}
}
package com.syc.slm.slmbi.service;
import com.sun.istack.NotNull;
import com.syc.slm.slmbi.dto.InstrumentPanelConfigDTO;
import com.syc.slm.slmbi.vo.InstrumentPanelConfigVo;
import javax.validation.constraints.NotNull;
/**
* slm-bi
* 仪表板配置
......
package com.syc.slm.slmbi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.syc.slm.slmbi.entity.InstrumentPanelDraft;
/**
* 仪表板草稿
*
* @author lin
* @date 2021-04-01 10:52:44
*/
public interface InstrumentPanelDraftService extends IService<InstrumentPanelDraft> {
}
package com.syc.slm.slmbi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.syc.slm.slmbi.entity.InstrumentPanelTree;
/**
* 仪表板树聚合表
*
* @author lin
* @date 2021-04-01 10:52:44
*/
public interface InstrumentPanelTreeService extends IService<InstrumentPanelTree> {
}
package com.syc.slm.slmbi.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.syc.slm.slmbi.dao.InstrumentPanelDraftMapper;
import com.syc.slm.slmbi.entity.InstrumentPanelDraft;
import com.syc.slm.slmbi.service.InstrumentPanelDraftService;
import org.springframework.stereotype.Service;
/**
* 仪表板草稿
*
* @author lin
* @date 2021-04-01 10:52:44
*/
@Service
public class InstrumentPanelDraftServiceImpl extends ServiceImpl<InstrumentPanelDraftMapper, InstrumentPanelDraft>
implements InstrumentPanelDraftService {
}
package com.syc.slm.slmbi.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.syc.slm.slmbi.dao.InstrumentPanelTreeMapper;
import com.syc.slm.slmbi.entity.InstrumentPanelTree;
import com.syc.slm.slmbi.service.InstrumentPanelTreeService;
import org.springframework.stereotype.Service;
/**
* 仪表板树聚合表
*
* @author lin
* @date 2021-04-01 10:52:44
*/
@Service
public class InstrumentPanelTreeServiceImpl extends ServiceImpl<InstrumentPanelTreeMapper, InstrumentPanelTree>
implements InstrumentPanelTreeService {
}
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