Commit e691bc53 authored by linruibiao's avatar linruibiao

Merge branch 'develop' into 'master'

Develop See merge request !1
parents a0c723fd 0e76b1ac
......@@ -47,10 +47,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-data-jpa</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -96,12 +96,12 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- influxdb架包 -->
<dependency>
<groupId>org.influxdb</groupId>
<artifactId>influxdb-java</artifactId>
<version>${influxdb-java.version}</version>
</dependency>
<!--&lt;!&ndash; influxdb架包 &ndash;&gt;-->
<!--<dependency>-->
<!--<groupId>org.influxdb</groupId>-->
<!--<artifactId>influxdb-java</artifactId>-->
<!--<version>${influxdb-java.version}</version>-->
<!--</dependency>-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
......@@ -195,6 +195,13 @@
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>
......
......@@ -25,17 +25,14 @@ package com.syc.slm.common.core.constant;
*/
public interface CommonConstants {
/**
* 成功标记
*/
Integer SUCCESS = 0;
/**
* 失败标记
*/
Integer FAIL = 1;
/**
* 成功标记
*/
Integer SUCCESS = 0;
/**
* 失败标记
*/
Integer FAIL = 1;
}
package com.syc.slm.common.core.constant;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
/**
* slm-bi
* 业务常量
*
* @author : lin
* @date : 2021-04-06 11:14
**/
public final class SlmConstants {
public static Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd HH:mm:ss").create();
public static Gson gsonLowerCaseWithUnderscores = new GsonBuilder()
.setDateFormat("yyyy-MM-dd HH:mm:ss").setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
/**
* 启用
*/
public static final Integer DATA_VALID = 1;
/**
* 禁用
*/
public static final Integer DATA_INVALID = 0;
/**
* 删除
*/
public static final Integer DATA_DELETED = -1;
}
package com.syc.slm.common.core.util;
import com.syc.slm.slmbi.exception.SysException;
import com.syc.slm.slmbi.function.Action0;
import java.util.function.Supplier;
/**
* slm-bi
* 统一方法调用返回
*
* @author : lin
* @date : 2021-04-06 09:39
**/
public final class NetResponseUtils {
public static <T> R<T> call(Supplier<T> x) {
try {
return R.ok(x.get());
} catch (Exception ex) {
ex.printStackTrace();
if (ex instanceof SysException) {
SysException e = (SysException) ex;
return R.failed(e.getMsg());
}
return R.failed("出错啦请联系管理员",ex.toString());
}
}
public static R<Object> call(Action0 x) {
try {
x.call();
return R.ok();
} catch (Exception ex) {
ex.printStackTrace();
if (ex instanceof SysException) {
SysException e = (SysException) ex;
return R.failed(e.getMsg());
}
return R.bad("出错啦请联系管理员",ex.toString());
}
}
}
......@@ -20,11 +20,14 @@
package com.syc.slm.common.core.util;
import com.syc.slm.common.core.constant.CommonConstants;
import com.syc.slm.common.core.constant.SlmConstants;
import com.syc.slm.slmbi.exception.SysException;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import javax.sound.midi.SysexMessage;
import java.io.Serializable;
/**
......@@ -53,6 +56,11 @@ public class R<T> implements Serializable {
@ApiModelProperty(value = "返回信息")
private String msg;
@Getter
@Setter
@ApiModelProperty(value = "调式异常")
private String debugMsg;
@Getter
@Setter
@ApiModelProperty(value = "数据")
......@@ -77,7 +85,9 @@ public class R<T> implements Serializable {
public static <T> R<T> failed(String msg) {
return restResult(null, CommonConstants.FAIL, msg);
}
public static <T> R<T> failed(String msg,String debugMsg) {
return restResult(null, CommonConstants.FAIL, msg,debugMsg);
}
public static <T> R<T> failed(T data) {
return restResult(data, CommonConstants.FAIL, null);
}
......@@ -86,6 +96,10 @@ public class R<T> implements Serializable {
return restResult(data, CommonConstants.FAIL, msg);
}
public static <T> R<T> bad(String msg,String debugMsg) {
return failed(msg,debugMsg);
}
private static <T> R<T> restResult(T data, int code, String msg) {
R<T> apiResult = new R<>();
apiResult.setCode(code);
......@@ -93,5 +107,20 @@ public class R<T> implements Serializable {
apiResult.setMsg(msg);
return apiResult;
}
private static <T> R<T> restResult(T data, int code, String msg,String debugMsg) {
R<T> apiResult = new R<>();
apiResult.setCode(code);
apiResult.setData(data);
apiResult.setMsg(msg);
apiResult.setDebugMsg(debugMsg);
return apiResult;
}
public T detach(){
if(this.code==1){
throw new SysException(this.msg);
}
return data;
}
}
package com.syc.slm.common.core.util;
import com.google.common.collect.Maps;
import com.syc.slm.slmbi.exception.SysException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
/**
* slm-bi
* ServletUtils 工具类
* @author : lin
* @date : 2021-04-13 10:15
**/
public final class ServletUtils {
/**
* 获取HttpServletRequest
* @return request
*/
public static HttpServletRequest getHttpServletRequest() {
RequestAttributes attr = RequestContextHolder.getRequestAttributes();
if(attr==null) {
throw new SysException("无法提取 request");
}
return ((ServletRequestAttributes) attr).getRequest();
}
public static Map<String, String> getHeaderMap(HttpServletRequest request){
Map<String,String> result = Maps.newHashMap();
Enumeration<String> names = request.getHeaderNames();
String name;
while(names.hasMoreElements()){
name = names.nextElement();
String val = request.getHeader(name);
if(StringUtils.isNotEmpty(val)) {
result.put(name, val);
}
}
return result;
}
}
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.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.syc.slm.common.core.constant.SlmConstants;
import com.syc.slm.common.core.util.ServletUtils;
import com.syc.slm.slmbi.entity.CurrentUser;
import com.syc.slm.slmbi.exception.SysException;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.nio.channels.SelectableChannel;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.Map;
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 ID = "id";
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";
private CurrentUser userInfo(){
HttpServletRequest request = ServletUtils.getHttpServletRequest();
Map<String, String> headerMap = ServletUtils.getHeaderMap(request);
if(CollectionUtils.isEmpty(headerMap)){
throw new SysException("头部不能为空");
}
String token =headerMap.get("token");
if(StringUtils.isBlank(token)){
throw new SysException("token不能为空");
}
Object currentUser = request.getSession().getAttribute(token);
CurrentUser user =null;
if(ObjectUtils.isNotEmpty(currentUser)){
user= SlmConstants.gson.fromJson(currentUser.toString(),CurrentUser.class);
}
if(ObjectUtils.isEmpty(user)){
throw new SysException("获取不到当前用户");
}
return user;
}
/**
* 插入使用
*/
@Override
public void insertFill(MetaObject metaObject) {
CurrentUser user = userInfo();
fillValue(metaObject,
ID,
() -> (metaObject.getValue(ID) == null ? IdWorker.get32UUID() : metaObject.getValue(ID)));
fillValue(metaObject,
APP_ID,
() -> (metaObject.getValue(APP_ID) == null ? user.getAppId() : metaObject.getValue(APP_ID)));
fillValue(metaObject,
CREATOR,
() -> (metaObject.getValue(CREATOR) == null ? user.getUid() : metaObject.getValue(CREATOR)));
fillValue(metaObject,
CREATOR_NAME,
() -> (metaObject.getValue(CREATOR_NAME) == null ? user.getName() : 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) {
CurrentUser user = userInfo();
setFieldValByName(UPDATER, user.getUid(), metaObject);
setFieldValByName(UPDATER_NAME, user.getName(),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);
}
}
}
package com.syc.slm.slmbi.controller;
import com.google.common.collect.Maps;
import com.google.gson.reflect.TypeToken;
import com.syc.slm.common.core.constant.SlmConstants;
import com.syc.slm.common.core.util.NetResponseUtils;
import com.syc.slm.common.core.util.R;
import com.syc.slm.common.core.util.RestTemplateUtils;
import com.syc.slm.slmbi.entity.CurrentUser;
import com.syc.slm.slmbi.exception.SysException;
import com.syc.slm.slmbi.function.Action0;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.ServletWebRequest;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.View;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.Map;
import java.util.function.Supplier;
/**
* slm-bi
* 抽取公用得controller父类
*
* @author : lin
* @date : 2021-04-06 09:09
**/
@Slf4j
public class BaseRestController {
/**
* 用户token
*/
protected String token;
/**
* 用户信息
*/
protected CurrentUser currentUser;
@Value("${dc_client.host}")
protected String dcClientHost;
@Value("${dc_client.interfaces.positionListUrl}")
protected String positionListUrl;
@Value("${dc_client.interfaces.deptListUrl}")
protected String deptListUrl;
@Value("${dc_client.interfaces.userTree}")
protected String userTree;
@Value("${dc_client.interfaces.variableList}")
protected String variableList;
@Value("${dc_client.interfaces.deviceList}")
protected String deviceList;
@Value("${dc_client.interfaces.deptsRoles}")
protected String deptsRoles;
@ModelAttribute
public void onInit(HttpServletRequest request) {
String uri = request.getRequestURI();
log.info("请求url--->>>>" + uri);
Map<String, String[]> parameterMap = request.getParameterMap();
log.info("请求参数--->>>>"+SlmConstants.gson.toJson(parameterMap));
Enumeration<String> headerNames = request.getHeaderNames();
Map<String,String> headers = Maps.newHashMap();
while (headerNames.hasMoreElements()){
String headerName = headerNames.nextElement();
Enumeration<String> headerValues = request.getHeaders(headerName);
while(headerValues.hasMoreElements()){
headers.put(headerName, headerValues.nextElement());
}
}
log.info("请求头参数--->>>>"+SlmConstants.gson.toJson(headers));
token=request.getHeader("token");
if(!uri.contains("tokens")) {
if (StringUtils.isEmpty(token)) {
throw new SysException("token不能为空");
}
log.info("获取用户信息");
NativeWebRequest webRequest = new ServletWebRequest(request);
Map<String, String> map = (Map<String, String>) webRequest.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE, RequestAttributes.SCOPE_REQUEST);
// Map<String, Object> map = (Map<String, Object>) webRequest.getAttribute(View.PATH_VARIABLES, RequestAttributes.SCOPE_REQUEST);
Map<String,String> heads = Maps.newHashMap();
heads.put("token",token);
Map<String,String> uriVariables =Maps.newHashMap();
uriVariables.put("appId",map.get("appId")+"");
String getUrl =dcClientHost+"/{appId}/users/user-info";
R<Map<String,Object>> result = RestTemplateUtils.get(getUrl, heads, new TypeToken<R<Map<String,Object>>>() {}.getType(), uriVariables);
Map<String,Object> userInfo= result.detach();
currentUser = new CurrentUser();
currentUser.setUid(userInfo.get("uid")+"");
currentUser.setPlatformId(userInfo.get("platform_id")+"");
currentUser.setName(userInfo.get("real_name")+"");
currentUser.setAppId(userInfo.get("app_id")+"");
currentUser.setToken(token);
request.getSession().setAttribute(token, SlmConstants.gson.toJson(currentUser));
}
}
R<Object> call(Action0 action) {
return NetResponseUtils.call(action);
}
<T> R<T> call(Supplier<T> supplier) {
return NetResponseUtils.call(supplier);
}
}
......@@ -5,6 +5,7 @@ import com.syc.slm.slmbi.service.DeptService;
import com.syc.slm.slmbi.vo.DeptVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -18,18 +19,20 @@ import java.util.List;
* @author : lin
* @date : 2021-03-25 18:39
**/
@RequestMapping("/departments")
@RequestMapping("/{appId}/departments")
@RestController
@Api(value = "部门信息接口", description = "部门信息接口")
public class DeptController {
@Api(value = "部门信息接口", tags = "部门信息接口")
public class DeptController extends BaseRestController{
@Autowired
private DeptService deptService;
@GetMapping
@ApiOperation("部门查询")
@ApiImplicitParam(name = "deptName", value = "部门名称")
public R<List<DeptVo>> selectDeptList(@RequestParam(value = "deptName", required = false) String deptName) {
return R.ok(deptService.selectDeptList(deptName));
@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 call(()->(deptService.selectPositionList(dcClientHost+deptListUrl,token, appId, deptName)));
}
}
......@@ -6,6 +6,7 @@ import com.syc.slm.slmbi.service.InstrumentPanelConfigService;
import com.syc.slm.slmbi.vo.InstrumentPanelConfigVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -18,9 +19,9 @@ import org.springframework.web.bind.annotation.*;
* @date : 2021-03-25 19:09
**/
@RequestMapping("/panel-configs")
@RequestMapping("/{appId}/panel-configs")
@RestController
@Api(value = "仪表板样式以及数据配置")
@Api(value = "仪表板样式以及数据配置", tags = "仪表板样式以及数据配置")
public class InstrumentPanelConfigController {
@Autowired
......@@ -28,20 +29,23 @@ public class InstrumentPanelConfigController {
@PostMapping
@ApiOperation("保存仪表板样式以及数据配置")
public R<String> saveInstrumentPanelConfig(@RequestBody InstrumentPanelConfigDTO config) {
return R.ok(instrumentPanelConfigService.saveConfig(config));
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<String> saveInstrumentPanelConfig(@PathVariable String appId, @RequestBody InstrumentPanelConfigDTO config) {
return R.ok(instrumentPanelConfigService.saveConfig(appId,config));
}
@PostMapping("/publish")
@ApiOperation("保存发布仪表板样式以及数据配置")
public R<String> publish(@RequestBody InstrumentPanelConfigDTO config) {
return R.ok(instrumentPanelConfigService.publish(config));
@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(appId,config));
}
@GetMapping("/{panelId}")
@ApiOperation("根据仪表板id获取仪表板配置,并且获取到组件")
@ApiImplicitParam(name = "panelId", value = "仪表板id")
public R<InstrumentPanelConfigVo> getConfigByPanelId(
@ApiOperation("根据仪表板id获取仪表板配置")
@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));
}
......
......@@ -3,15 +3,18 @@ package com.syc.slm.slmbi.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.syc.slm.common.core.util.R;
import com.syc.slm.slmbi.dto.SaveInstrumentPanelDTO;
import com.syc.slm.slmbi.dto.SearchInstrumentPanelDTO;
import com.syc.slm.slmbi.dto.QueryInstrumentPanelDTO;
import com.syc.slm.slmbi.service.InstrumentPanelService;
import com.syc.slm.slmbi.vo.InstrumentPanelConfigVo;
import com.syc.slm.slmbi.vo.InstrumentPanelVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
......@@ -22,9 +25,9 @@ import java.util.List;
* @date : 2021-03-25 15:10
**/
@RestController
@RequestMapping("/panels")
@Api(value = "仪表板", description = "仪表板配置接口")
public class InstrumentPanelController {
@RequestMapping("/{appId}/panels")
@Api(value = "仪表板配置接口", tags = "仪表板配置接口")
public class InstrumentPanelController extends BaseRestController {
@Autowired
private InstrumentPanelService instrumentPanelService;
......@@ -37,55 +40,67 @@ public class InstrumentPanelController {
*/
@GetMapping
@ApiOperation("仪表板列表")
public R<IPage<InstrumentPanelVo>> selectInstrumentPanelList(@RequestBody SearchInstrumentPanelDTO where) {
return R.ok(instrumentPanelService.selectInstrumentPanelList(where));
@ApiImplicitParam(name = "appId", value = "租户id", required = true, dataTypeClass = String.class)
public R<IPage<InstrumentPanelVo>> selectInstrumentPanelList(@PathVariable String appId,
QueryInstrumentPanelDTO where) {
return call(() -> instrumentPanelService.selectInstrumentPanelList(appId, where));
}
@PostMapping
@ApiOperation("新增仪表板")
public R<String> saveInstrumentPanel(@RequestBody SaveInstrumentPanelDTO panel) {
return R.ok(instrumentPanelService.savePanel(panel));
@ApiImplicitParam(name = "appId", value = "租户id", required = true, dataTypeClass = String.class)
public R<String> saveInstrumentPanel(@PathVariable String appId, @RequestBody SaveInstrumentPanelDTO panel) {
return call(() -> instrumentPanelService.savePanel(appId, panel));
}
@PutMapping("/batch-publish")
@PutMapping("/publish")
@ApiOperation("批量发布")
@ApiImplicitParam(name = "ids", value = "仪表板id集合", required = true)
public R<Boolean> batchPublish(@RequestBody List<String> ids) {
return R.ok(instrumentPanelService.batchPublish(ids));
@ApiImplicitParams({@ApiImplicitParam(name = "ids",
value = "仪表板id集合",
required = true,
dataTypeClass = Arrays.class),
@ApiImplicitParam(name = "appId", value = "租户id", required = true, dataTypeClass = String.class)})
public R<List<String>> batchPublish(@PathVariable String appId, @RequestParam List<String> ids) {
return call(() -> instrumentPanelService.batchPublish(ids));
}
@PutMapping("/{id}/offline")
@ApiOperation("下线")
@ApiImplicitParam(name = "id", value = "仪表板id", required = true)
public R<String> offline(@PathVariable("id") String id) {
return R.ok(instrumentPanelService.offline(id));
@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 call(() -> instrumentPanelService.offline(id));
}
@DeleteMapping("/{id}")
@ApiOperation("删除仪表板")
@ApiImplicitParam(name = "id", value = "仪表板id", required = true)
public R<String> delInstrumentPanel(@PathVariable("id") String id) {
return R.ok(instrumentPanelService.delPanel(id));
@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 call(() -> instrumentPanelService.delPanel(id));
}
@PostMapping("/save-as")
@ApiOperation("另存为")
public R<String> saveAs(@RequestBody SaveInstrumentPanelDTO panelDTO) {
return R.ok(instrumentPanelService.saveAsPanel(panelDTO));
@ApiImplicitParam(name = "id", value = "仪表板id", required = true, dataTypeClass = String.class)
public R<String> saveAs(@PathVariable String appId, @RequestBody SaveInstrumentPanelDTO panelDTO) {
return call(() -> instrumentPanelService.saveAsPanel(appId, panelDTO));
}
@PostMapping("/{id}/show-recovery-btn")
@ApiOperation("是否显示恢复按钮")
@ApiImplicitParam(name = "id", value = "仪表板id", required = true)
public R<Boolean> showRecoveryBtn(@PathVariable("id") String id) {
return R.ok(instrumentPanelService.showRecoveryBtn(id));
@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 call(() -> instrumentPanelService.showRecoveryBtn(id));
}
@PutMapping("/{id}/recovery")
@ApiOperation("恢复按钮操作")
@ApiImplicitParam(name = "id", value = "仪表板id", required = true)
public R<String> recoveryInstrumentPanel(@PathVariable("id") String id) {
return R.ok(instrumentPanelService.recoveryPanel(id));
@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "仪表板id", required = true, dataTypeClass = String.class),
@ApiImplicitParam(name = "appId", value = "租户id", required = true, dataTypeClass = String.class)})
public R<InstrumentPanelConfigVo> recoveryInstrumentPanel(@PathVariable String appId, @PathVariable("id") String id) {
return call(() -> instrumentPanelService.recoveryPanel(id));
}
}
package com.syc.slm.slmbi.controller;
import com.syc.slm.common.core.util.R;
import com.syc.slm.slmbi.dto.CreateInstrumentPanelGroupDTO;
import com.syc.slm.slmbi.dto.InstrumentPanelGroupDTO;
import com.syc.slm.slmbi.service.InstrumentPanelGroupService;
import com.syc.slm.slmbi.vo.InstrumentPanelGroupVo;
import com.syc.slm.slmbi.vo.PanelGroupVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
......@@ -22,47 +22,43 @@ import java.util.List;
* @date : 2021-03-25 15:07
**/
@RestController
@RequestMapping("/groups")
@Api(value = "仪表板分组")
public class InstrumentPanelGroupController {
@RequestMapping("/{appId}/groups")
@Api(value = "仪表板分组", tags = "仪表板分组")
public class InstrumentPanelGroupController extends BaseRestController{
@Autowired
private InstrumentPanelGroupService instrumentPanelGroupService;
@GetMapping
@ApiOperation("第一次进入页面,或者点击查询,获取全部分组下的仪表板数据,以及分组数据")
@ApiImplicitParam(name = "name", value = "分组名称或者仪表板名称")
public R<List<PanelGroupVo>> loadTrees(
@RequestParam(value = "name", required = false) String name) {
return R.ok(instrumentPanelGroupService.loadTrees(name));
}
@GetMapping("/children")
@ApiOperation("点击节点获取,该分组下的仪表板信息,以及分组数据")
@ApiImplicitParams({@ApiImplicitParam(name = "groupId", value = "分组id", required = true),
@ApiImplicitParam(name = "name", value = "分组名称或者仪表板名称")})
public R<List<PanelGroupVo>> children(@RequestParam("groupId") String groupId,
@RequestParam(value = "name", required = false) String name) {
return R.ok(instrumentPanelGroupService.children(groupId, name));
@GetMapping
@ApiOperation("仪表板列表查询,仪表板分组增删改页面的分组树")
@ApiImplicitParams({
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "name", value = "分组名称",dataTypeClass = String.class)
})
public R<List<InstrumentPanelGroupVo>> selectGroupList(@PathVariable String appId, @RequestParam(required = false,value = "name") String name) {
return call(()->instrumentPanelGroupService.selectGroupList(appId,name));
}
@PostMapping
@ApiOperation("保存仪表板分组")
public R<String> saveGroup(@RequestBody InstrumentPanelGroupDTO group) {
return R.ok(instrumentPanelGroupService.saveGroup(group));
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<String> saveGroup(@PathVariable String appId, @RequestBody CreateInstrumentPanelGroupDTO group) {
return call(()->instrumentPanelGroupService.saveGroup(group,appId));
}
@PutMapping
@ApiOperation("更新仪表板分组")
public R<String> updateGroup(@RequestBody InstrumentPanelGroupDTO group) {
return R.ok(instrumentPanelGroupService.updateGroup(group));
@ApiOperation("更新仪表板分组(一级分组是初始化得,不允许修改,其他分组修改必须传parentId)")
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<String> updateGroup(@PathVariable String appId, @RequestBody InstrumentPanelGroupDTO group) {
return call(()->instrumentPanelGroupService.updateGroup(group,appId));
}
@DeleteMapping("/{groupId}")
@ApiOperation("删除仪表板分组")
public R<String> delGroup(@PathVariable String groupId) {
return R.ok(instrumentPanelGroupService.delGroup(groupId));
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<String> delGroup(@PathVariable String appId, @PathVariable String groupId) {
return call(()->instrumentPanelGroupService.delGroup(groupId));
}
}
......@@ -6,10 +6,12 @@ import com.syc.slm.slmbi.service.InstrumentPanelPermissionService;
import com.syc.slm.slmbi.vo.InstrumentPanelPermissionVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
......@@ -19,39 +21,55 @@ import java.util.List;
* @author : lin
* @date : 2021-03-25 18:54
**/
@Api(value = "仪表板权限控制")
@Api(value = "仪表板权限控制", tags = "仪表板权限控制")
@RestController
@RequestMapping("/panel-permissions")
public class InstrumentPanelPermissionController {
@RequestMapping("/{appId}/panel-permissions")
public class InstrumentPanelPermissionController extends BaseRestController {
@Autowired
private InstrumentPanelPermissionService instrumentPanelPermissionService;
@PostMapping
@ApiOperation("保存仪表板权限(列表的属性保存)")
public R<String> savePermission(@RequestBody List<InstrumentPanelPermissionDTO> permissions) {
return R.ok(instrumentPanelPermissionService.savePermission(permissions));
@ApiImplicitParam(name = "appId", value = "租户id", required = true, dataTypeClass = String.class)
public R<String> savePermission(@PathVariable String appId, @RequestBody InstrumentPanelPermissionDTO permission) {
return call(() -> instrumentPanelPermissionService.savePermission(permission));
}
@PostMapping("/{panelId}/to-copy")
@GetMapping("/{panelId}/to-copy")
@ApiOperation("从其他仪表板复制配置")
@ApiImplicitParam(name = "panelId", value = "其他仪表板id", required = true)
public R<List<InstrumentPanelPermissionVo>> saveCopyOtherPermission(@PathVariable String panelId) {
return R.ok(instrumentPanelPermissionService.saveCopyOtherPermission(panelId));
@ApiImplicitParams({@ApiImplicitParam(name = "appId",
value = "租户id",
required = true,
dataTypeClass = String.class),
@ApiImplicitParam(name = "panelId", value = "其他仪表板id", required = true, dataTypeClass = String.class)})
public R<InstrumentPanelPermissionVo> saveCopyOtherPermission(@PathVariable String appId,
@PathVariable String panelId) {
return call(() -> (instrumentPanelPermissionService.saveCopyOtherPermission(panelId)));
}
@PostMapping("/{panelId}/copy-to")
@PostMapping("/copy-to")
@ApiOperation("将仪表板权限复制给其他仪表板")
@ApiImplicitParam(name = "panelId", value = "其他仪表板id", required = true)
public R<String> saveCopyToOtherPermission(@RequestBody List<InstrumentPanelPermissionDTO> permissions,
@PathVariable String panelId) {
return R.ok(instrumentPanelPermissionService.saveCopyToOtherPermission(permissions, panelId));
@ApiImplicitParams({@ApiImplicitParam(name = "appId",
value = "租户id",
required = true,
dataTypeClass = String.class),
@ApiImplicitParam(name = "panelIds", value = "其他仪表板id", required = true, dataTypeClass = Arrays.class)})
public R<Object> saveCopyToOtherPermission(@PathVariable String appId,
@RequestBody InstrumentPanelPermissionDTO permission,
@RequestParam List<String> panelIds) {
return call(() -> instrumentPanelPermissionService.saveCopyToOtherPermission(permission, panelIds));
}
@GetMapping("/{panelId}")
@ApiOperation("根据仪表板id获取仪表板权限")
@ApiImplicitParam(name = "panelId", value = "仪表板id", required = true)
public R<List<InstrumentPanelPermissionVo>> selectPermissionByPanelId(@PathVariable String panelId) {
return R.ok(instrumentPanelPermissionService.selectPermissionByPanelId(panelId));
@ApiImplicitParams({@ApiImplicitParam(name = "appId",
value = "租户id",
required = true,
dataTypeClass = String.class),
@ApiImplicitParam(name = "panelId", value = "其他仪表板id", required = true, dataTypeClass = String.class)})
public R<InstrumentPanelPermissionVo> selectPermissionByPanelId(@PathVariable String appId,
@PathVariable String panelId) {
return call(() -> (instrumentPanelPermissionService.selectPermissionByPanelId(panelId)));
}
}
package com.syc.slm.slmbi.controller;
import com.syc.slm.common.core.util.R;
import com.syc.slm.slmbi.service.InstrumentPanelConfigService;
import com.syc.slm.slmbi.service.InstrumentPanelTreeService;
import com.syc.slm.slmbi.vo.InstrumentPanelConfigVo;
import com.syc.slm.slmbi.vo.PanelTreeNodeVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* @author liangbin
* @date 2021/3/31
*/
@RestController
@RequestMapping("/{appId}/panel-tree")
@Api(value = "仪表板树接口", tags = "仪表板树接口")
public class InstrumentPanelTreeController extends BaseRestController {
@Autowired
private InstrumentPanelTreeService treeService;
@Autowired
private InstrumentPanelConfigService configService;
@GetMapping
@ApiOperation("显示已发布仪表板树==》(刚进入页面)")
@ApiImplicitParam(name = "appId", value = "租户id", required = true, dataTypeClass = String.class)
public R<List<PanelTreeNodeVo>> loadTrees(@PathVariable String appId) {
return call(() -> (treeService.loadTrees(appId,dcClientHost+deptsRoles,currentUser)));
}
@GetMapping("/search")
@ApiOperation("显示已发布仪表板树==》(点击查询)")
@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 call(() -> (treeService.loadTrees(appId, name,dcClientHost+deptsRoles,currentUser)));
}
@GetMapping("/children")
@ApiOperation("点击节点,显示已发布仪表板树")
@ApiImplicitParams({@ApiImplicitParam(name = "appId",
value = "租户id",
required = true,
dataTypeClass = String.class),
@ApiImplicitParam(name = "nodeId", value = "分组id", required = true, dataTypeClass = String.class),
@ApiImplicitParam(name = "name", value = "分组名称或者仪表板名称", dataTypeClass = String.class)})
public R<List<PanelTreeNodeVo>> children(@PathVariable String appId,
@RequestParam("nodeId") String nodeId,
@RequestParam(value = "name", required = false) String name) {
return call(() -> (treeService.children(nodeId, name,dcClientHost+deptsRoles,currentUser)));
}
@GetMapping("/children-panel")
@ApiOperation("点击节点,显示已发布仪表板配置")
@ApiImplicitParams({@ApiImplicitParam(name = "appId",
value = "租户id",
required = true,
dataTypeClass = String.class),
@ApiImplicitParam(name = "panelId", value = "仪表板id", required = true, dataTypeClass = String.class)})
public R<InstrumentPanelConfigVo> childrenPanel(@PathVariable String appId, @RequestParam("nodeId") String nodeId) {
return call(() -> (configService.getPublishConfigByPanelId(nodeId)));
}
@GetMapping("/copy")
@ApiOperation("复制仪表板配置树")
@ApiImplicitParams({@ApiImplicitParam(name = "appId",
value = "租户id",
required = true,
dataTypeClass = String.class),
@ApiImplicitParam(name = "appId", value = "租户id", required = true, dataTypeClass = String.class),
@ApiImplicitParam(name = "name", value = "分组名称或者仪表板名称", dataTypeClass = String.class)})
public R<List<PanelTreeNodeVo>> copyTreeList(@PathVariable String appId,@RequestParam(value = "name", required = false) String name) {
return call(() -> (treeService.copyTreeList(appId,name)));
}
@GetMapping("/cite")
@ApiOperation("复用仪表板树")
@ApiImplicitParams({@ApiImplicitParam(name = "appId",
value = "租户id",
required = true,
dataTypeClass = String.class),
@ApiImplicitParam(name = "appId", value = "租户id", required = true, dataTypeClass = String.class),
@ApiImplicitParam(name = "name", value = "分组名称,仪表板名称,组件名称", dataTypeClass = String.class)})
public R<List<PanelTreeNodeVo>> cite(@PathVariable String appId,@RequestParam(value = "name", required = false) String name) {
return call(() -> (treeService.citeTreeList(appId,name)));
}
@GetMapping("/cite-assembly")
@ApiOperation("复用仪表板树点击组件获取配置(会返回一个map 优先从key为 wait_published 中匹配,如果找不到再从key 为published 中匹配 )")
@ApiImplicitParams({@ApiImplicitParam(name = "appId",
value = "租户id",
required = true,
dataTypeClass = String.class),
@ApiImplicitParam(name = "appId", value = "租户id", required = true, dataTypeClass = String.class),
@ApiImplicitParam(name = "panelId", value = "仪表板id", required = true, dataTypeClass = String.class)})
public R<Map<String,String>> assembly(@PathVariable String appId,@RequestParam(value = "panelId", required = false) String panelId) {
return call(() -> (treeService.assembly(appId,panelId)));
}
}
......@@ -5,7 +5,9 @@ import com.syc.slm.slmbi.service.PositionService;
import com.syc.slm.slmbi.vo.PositionVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.catalina.Host;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -18,19 +20,20 @@ import java.util.List;
* @author : lin
* @date : 2021-03-25 17:26
**/
@Api(value = "职位查询列表")
@Api(value = "职位查询列表", tags = "职位查询列表")
@RestController
@RequestMapping("/positions")
public class PositionController {
@RequestMapping("/{appId}/positions")
public class PositionController extends BaseRestController{
@Autowired
private PositionService positionWorkService;
@GetMapping
@ApiOperation("职位查询列表")
@ApiImplicitParam(name = "positionName", value = "职位名称")
public R<List<PositionVo>> selectPositionList(
@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));
return call(()->(positionWorkService.selectPositionList(dcClientHost+positionListUrl,token, appId, positionName)));
}
}
package com.syc.slm.slmbi.controller;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.google.common.collect.Maps;
import com.syc.slm.common.core.util.R;
import com.syc.slm.common.core.util.RestTemplateUtils;
import com.syc.slm.slmbi.exception.SysException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.sound.midi.SysexMessage;
import java.util.Map;
/**
* slm-bi
* 获取token
* @author : lin
* @date : 2021-04-14 16:17
**/
@RestController
@RequestMapping("/tokens")
@Api(value ="获取token",tags = "获取token")
public class TokenController extends BaseRestController{
@PostMapping
@ApiOperation("获取token")
@ApiImplicitParams({
@ApiImplicitParam(name = "account", value = "15865516442", required = true, dataTypeClass = String.class),
@ApiImplicitParam(name = "password", value = "123456", required = true, dataTypeClass = String.class),
@ApiImplicitParam(name = "origin", value = "0", required = true, dataTypeClass = String.class)
})
public R<Map<String,Object>> token(String account,String password,Integer origin){
return call(()->{
Map<String ,Object> maps = Maps.newHashMap();
String uri =dcClientHost+"/dc/user/token?account="+account+"&password="+password+"&origin="+origin;
ResponseEntity<Map> post = RestTemplateUtils.post(uri, Map.class);
if(ObjectUtils.isNotEmpty(post)){
Integer code = (int)post.getBody().get("code");
if(code!=0){
throw new SysException(post.getBody().get("msg")+"");
}
Map<String,Object> data = (Map<String,Object>)post.getBody().get("data");
maps.put("token",data.get("token"));
maps.put("appId",data.get("app_id"));
}
return maps;
});
}
}
......@@ -2,9 +2,11 @@ package com.syc.slm.slmbi.controller;
import com.syc.slm.common.core.util.R;
import com.syc.slm.slmbi.service.UserService;
import com.syc.slm.slmbi.vo.UserTreeVo;
import com.syc.slm.slmbi.vo.UserVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -18,19 +20,19 @@ import java.util.List;
* @author : lin
* @date : 2021-03-25 18:45
**/
@Api(value = "用户信息", description = "用户信息接口")
@Api(value = "用户信息", tags = "用户信息接口")
@RestController
@RequestMapping("/users")
public class UserController {
@RequestMapping("/{appId}/users")
public class UserController extends BaseRestController{
@Autowired
private UserService userService;
@GetMapping
@ApiOperation("用户查询")
@ApiImplicitParam(name = "userName", value = "用户名称")
public R<List<UserVo>> selectUserList(@RequestParam(value = "userName", required = false) String userName) {
return R.ok(userService.selectUserList(userName));
@ApiOperation("用户查询,左边树调用部门树不要传入部门名称,然后右边用户的搜索在页面匹配就好了,一开始会返回所有部门的用户回去")
@ApiImplicitParams({@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)})
public R<List<UserTreeVo>> selectUserList(@PathVariable String appId) {
return call(()->(userService.selectUserList(appId,dcClientHost+userTree,token,null)));
}
}
package com.syc.slm.slmbi.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.collect.Maps;
import com.syc.slm.common.core.util.R;
import com.syc.slm.slmbi.dto.HistoryVariableDTO;
import com.syc.slm.slmbi.dto.RealTimeVariableDTO;
import com.syc.slm.slmbi.dto.VariableDTO;
import com.syc.slm.common.core.util.RestTemplateUtils;
import com.syc.slm.slmbi.dto.*;
import com.syc.slm.slmbi.service.VariableService;
import com.syc.slm.slmbi.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
......@@ -26,40 +25,87 @@ import java.util.Map;
* @date : 2021-03-25 18:45
**/
@RestController
@RequestMapping("/variables")
@Api(description = "变量控件")
public class VariableController {
@RequestMapping("/{appId}/variables")
@Api(description = "变量控件", tags = "变量控件")
public class VariableController extends BaseRestController{
@Autowired
private VariableService variableService;
@GetMapping("/test")
public Map rest(){
Map<String,String> maps = Maps.newHashMap();
// @RequestParam(value = "token") String token,
// @RequestParam(value = "equipment_info_id", required = false) String equipmentInfoId,
// @RequestParam(value = "customer_id", required = false) String customerId,
// @RequestParam(value = "q_name", required = false) String qName,
// @RequestParam(value = "search_code", required = false, defaultValue = "false") boolean searchCode,
// @RequestParam(value = "search_model", required = false, defaultValue = "false") boolean searchModel,
// @RequestParam(value = "warranty_status", defaultValue = "0") int warrantStatus,
// @RequestParam(value = "page_num", required = false, defaultValue = "1") int pageNum,
// @RequestParam(value = "page_size", required = false, defaultValue = "15") int pageSize)
maps.put("token","345aa488a820448dbb069ea4295d2b15");
maps.put("appId","AAAAAA_9Cs4");
maps.put("equipment_info_id",null);
maps.put("customer_id",null);
maps.put("q_name",null);
maps.put("search_code",null);
maps.put("search_model",null);
maps.put("warranty_status",null);
maps.put("page_num",null);
maps.put("page_size",null);
Map<String,String> heads = Maps.newHashMap();
heads.put("token","345aa488a820448dbb069ea4295d2b15");
R<List<PanelTreeNodeVo>> newR = new R<>();
ResponseEntity<Map> rest = RestTemplateUtils.get(
"http://localhost:2400/dc/{appId}/equipment/info/name/pull?token={token}&equipment_info_id={equipment_info_id}&customer_id={customer_id}&q_name={q_name}&search_code={search_code}&search_model={search_model}&warranty_status={warranty_status}&page_num={page_num}&page_size={page_size}",
heads,
Map.class,
maps);
if (rest != null){
return rest.getBody();
}
return null;
}
@GetMapping
@ApiOperation("获取变量列表")
public R<IPage<VariableVo>> getVariableList(@RequestBody VariableDTO variableDTO) {
return R.ok(variableService.getVariableList(variableDTO));
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<IPage<VariableVo>> getVariableList(@PathVariable String appId, VariableDTO variableDTO) {
return call(()->variableService.getVariableList(variableDTO,appId,token,dcClientHost+variableList));
}
@GetMapping("/real-time")
@ApiOperation("获取变量实时数据")
public R<Map<String, List<Map<String, RealTimeVariableVo>>>> getVariableRealTimeDataList(
@RequestBody RealTimeVariableDTO variableDTO) {
return R.ok(variableService.getVariableRealTimeDataList(variableDTO));
@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 call(()->(variableService.getVariableRealTimeDataList(variableDTO)));
}
@GetMapping("/source")
@ApiOperation("获取变量来源列表")
public R<List<VariableSourceVo>> getVariableSourceList() {
return R.ok(variableService.getVariableSourceList());
@ApiOperation("获取变量来源列表,默认值6")
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<List<VariableSourceVo>> getVariableSourceList(@PathVariable String appId) {
return call(()->variableService.getVariableSourceList());
}
@GetMapping("/device")
@ApiOperation("获取变量所属设备列表")
public R<List<VariableDeviceVo>> getVariableDeviceList() {
return R.ok(variableService.getVariableDeviceList());
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<IPage<VariableDeviceVo>> getVariableDeviceList(@PathVariable String appId, QueryPageDTO query) {
return call(()->(variableService.getVariableDeviceList(token,appId,dcClientHost+deviceList,query)));
}
@GetMapping("/history")
@ApiOperation("获取变量历史数据")
public R<Map<String, List<Map<String, HistoryVariableVo>>>> getVariableHistoryDataList(@RequestBody HistoryVariableDTO variableDTO) {
return R.ok(variableService.getVariableHistoryDataList(variableDTO));
@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 call(()->(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.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Set;
/**
* 仪表板草稿
*
* @author lin
* @date 2021-04-01 10:52:44
*/
@Component
public interface InstrumentPanelDraftMapper extends BaseMapper<InstrumentPanelDraft> {
List<InstrumentPanelDraft> selectDraftList(@Param("appId") String appId,@Param("panelIds") Set<String> panelIds, @Param("officeIds") String officeIds, @Param(
"userId") String userId, @Param("roleId") String roleId);
}
package com.syc.slm.slmbi.dao;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.syc.slm.slmbi.entity.InstrumentPanelGroup;
import com.syc.slm.slmbi.vo.InstrumentPanelGroupVo;
import com.syc.slm.slmbi.vo.PanelTreeNodeVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Set;
/**
* slm-bi
* 仪表板分组
......@@ -12,4 +20,19 @@ import org.springframework.stereotype.Component;
**/
@Component
public interface InstrumentPanelGroupMapper extends BaseMapper<InstrumentPanelGroup> {
/**
* 根据id 批量修改分组状态
* @param groupIds
* @param recordStatus
*/
void batchUpdateGroupByIds(@Param("groupIds") Set<String> groupIds,@Param("recordStatus") Integer recordStatus);
/**
* 根据分组名字匹配分组
* @param where
* @return
*/
List<InstrumentPanelGroupVo> selectGroupList(@Param("ew") LambdaQueryWrapper<InstrumentPanelGroup> where);
List<PanelTreeNodeVo> selectGroupByIds(@Param("finalPanelIds") Set<String> finalPanelIds, @Param("name") String name);
}
package com.syc.slm.slmbi.dao;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.syc.slm.slmbi.entity.InstrumentPanel;
import com.syc.slm.slmbi.vo.InstrumentPanelVo;
import com.syc.slm.slmbi.vo.PanelTreeNodeVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Set;
/**
* slm-bi
* 仪表板
......@@ -12,4 +22,10 @@ import org.springframework.stereotype.Component;
**/
@Component
public interface InstrumentPanelMapper extends BaseMapper<InstrumentPanel> {
void batchUpdatePanelByIds(@Param("panelIds") Set<String> panelIds, @Param("recordStatus") Integer recordStatus);
IPage<InstrumentPanelVo> selectInstrumentPanelList(@Param("page") IPage<InstrumentPanelVo> page,
@Param("ew") Wrapper<InstrumentPanel> wrapper);
List<PanelTreeNodeVo> selectPanelByIds(@Param("finalPanelIds") Set<String> finalPanelIds, @Param("name") String name);
}
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 com.syc.slm.slmbi.vo.PanelTreeNodeVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Set;
/**
* 仪表板树聚合表
*
* @author lin
* @date 2021-04-01 10:52:44
*/
@Component
public interface InstrumentPanelTreeMapper extends BaseMapper<InstrumentPanelTree> {
void batchUpdateTreeByIds(@Param("treeIds") Set<String> treeIds, @Param("recordStatus") Integer recordStatus);
}
package com.syc.slm.slmbi.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author liangbin
* @date 2021/3/31
*/
@ApiModel("新增仪表板分组DTO")
@Data
@EqualsAndHashCode(callSuper = true)
public class CreateInstrumentPanelGroupDTO extends InstrumentPanelGroupDTO {
@ApiModelProperty(value = "仪表板分组主键", hidden = true)
private String id;
}
package com.syc.slm.slmbi.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liangbin
* @date 2021/3/31
*/
@ApiModel(value = "自定义权限DTO")
@Data
public class CustomPermissionDTO {
@ApiModelProperty(value = "自定义权限类型", required = true)
private String type;
@ApiModelProperty(value = "代表岗位、部门或个体用户id", required = true)
private String bizId;
@ApiModelProperty(value = "代表岗位,部门,个体用户名称")
private String bizName;
}
package com.syc.slm.slmbi.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* slm-bi
* 仪表板组件DTO
* @author : lin
* @date : 2021-04-07 11:35
**/
@ApiModel(value = "仪表板组件DTO")
@Data
@EqualsAndHashCode(callSuper = false)
public class InstrumentPanelAssemblyDTO {
@ApiModelProperty(value = "仪表板组件key", required = true)
private String key;
@ApiModelProperty(value = "仪表板组件名称", required = true)
private String name;
}
......@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* slm-bi
* 仪表板样式,数据配置显示类
......@@ -17,12 +19,17 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false)
public class InstrumentPanelConfigDTO {
@ApiModelProperty(value = "仪表板id", required = true)
private String instrumentPanelId;
private String panelId;
@ApiModelProperty(value = "仪表板配置详情,包含了样式,数据配置", required = true)
private String configDetails;
@ApiModelProperty(value = "仪表板配置组件集合", required = true)
private List<InstrumentPanelAssemblyDTO> assemblys;
@ApiModelProperty(value = "访问权限", required = true)
private InstrumentPanelPermissionDTO visitPermission;
@ApiModelProperty(value = "组件结构", required = true)
private String assembly;
private InstrumentPanelPermissionDTO permission;
}
......@@ -16,9 +16,9 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class InstrumentPanelGroupDTO {
@ApiModelProperty(value = "仪表板分组主键(保存非必填)", required = true)
@ApiModelProperty(value = "仪表板分组主键", required = true)
private String id;
@ApiModelProperty(value = "仪表板分组父级主键", required = true)
@ApiModelProperty(value = "仪表板分组父级主键,非顶级分组时必填")
private String parentId;
@ApiModelProperty(value = "仪表板分组名称", required = true)
private String name;
......
package com.syc.slm.slmbi.dto;
import com.syc.slm.slmbi.enums.AccessType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* slm-bi
* 仪表板权限
......@@ -13,26 +16,25 @@ import lombok.EqualsAndHashCode;
* @date : 2021-03-25 19:05
**/
@Data
@ApiModel(value = "仪表板权限DTO",description = "仪表板权限DTO")
@EqualsAndHashCode(callSuper=false)
@ApiModel(value = "仪表板权限DTO", description = "仪表板权限DTO")
@EqualsAndHashCode(callSuper = false)
public class InstrumentPanelPermissionDTO {
@ApiModelProperty(value = "主键id")
private String id;
@ApiModelProperty(value = "仪表板id",required = true)
private String instrumentPanelId;
@ApiModelProperty(value = "仪表板名称",required = true)
private String instrumentPanelName;
@ApiModelProperty(value = "仪表板分组id",required = true)
private String instrumentPanelGroupId;
@ApiModelProperty(value = "仪表板分组名称",required = true)
private String instrumentPanelGroupName;
@ApiModelProperty(value = "存储类型,1代表岗位,2代表部门,3 代表个体用户",required = true)
private Integer permissionType;
@ApiModelProperty(value = "代表岗位1,部门2,个体用户id 3")
private String bizId;
@ApiModelProperty(value = "代表岗位,部门,个体用户名称")
private String bizName;
@ApiModelProperty(value = "仪表板主键id")
private String panelId;
@ApiModelProperty(value = "仪表板名称", required = true)
private String panelName;
@ApiModelProperty(value = "仪表板分组id", required = true)
private String groupId;
@ApiModelProperty(value = "访问权限类型", required = true)
private String accessType;
@ApiModelProperty(value = "描述")
private String description;
@ApiModelProperty(value = "自定义权限配置,当访问类型为CUSTOM时必填")
private List<CustomPermissionDTO> customPermissions;
}
......@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
......@@ -16,18 +17,19 @@ import java.util.Date;
**/
@ApiModel(value = "查询仪表板列表DTO")
@Data
@EqualsAndHashCode(callSuper = false)
public class SearchInstrumentPanelDTO {
@ApiModelProperty(value = "仪表板名称")
@EqualsAndHashCode(callSuper = true)
public class QueryInstrumentPanelDTO extends QueryPageDTO {
@ApiModelProperty(value = "仪表板名称,创建人名称,修改人名称")
private String name;
@ApiModelProperty(value = "仪表板归属分组")
private String groupId;
@ApiModelProperty(value = "创建人名称")
private String creatorName;
@ApiModelProperty(value = "修改人名称")
private String updaterName;
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@ApiModelProperty(value = "状态")
private Integer recordStatus;
@ApiModelProperty(value = "修改时间开始")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date updateTimeBegin;
@ApiModelProperty(value = "修改时间结束")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date updateTimeEnd;
@ApiModelProperty(value = "发布状态")
private String published;
}
package com.syc.slm.slmbi.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liangbin
* @date 2021/3/31
*/
@ApiModel("分布查询参数")
@Data
public class QueryPageDTO {
@ApiModelProperty("页码")
private Integer current = 1;
@ApiModelProperty("每页大小")
private Integer size = 10;
}
package com.syc.slm.slmbi.dto;
import com.syc.slm.slmbi.enums.StatisticsType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -22,9 +23,9 @@ public class RealTimeVariableDTO {
@ApiModelProperty(value = "时间间隔,代表(天,时,分,秒)", required = true)
private Integer interval;
@ApiModelProperty(value = "统计类型,代表(合计值,平均值,最大值,最小值)", required = true)
private Integer statisticsType;
private StatisticsType statisticsType;
@ApiModelProperty(value = "变量集合ids", required = true)
private List<String> variableIds;
@ApiModelProperty(value = "以变量为维度是1 , 以时间为维度是2", required = true)
private Integer dimension;
private Integer dimension; //FIXME 考虑用枚举
}
......@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* slm-bi
* 保存仪表板DTO
......@@ -18,6 +20,16 @@ import lombok.EqualsAndHashCode;
public class SaveInstrumentPanelDTO {
@ApiModelProperty(value = "仪表板名称", required = true)
private String name;
@ApiModelProperty(value = "仪表板归属分组", required = true)
private String groupId;
@ApiModelProperty(value = "仪表板配置详情,包含了样式,数据配置", required = true)
private String configDetails;
@ApiModelProperty(value = "仪表板配置组件集合", required = true)
private List<InstrumentPanelAssemblyDTO> assemblys;
@ApiModelProperty(value = "访问权限", required = true)
private InstrumentPanelPermissionDTO permission;
}
......@@ -15,7 +15,7 @@ import lombok.EqualsAndHashCode;
@Data
@ApiModel(value = "变量DTO")
@EqualsAndHashCode(callSuper=false)
public class VariableDTO {
public class VariableDTO extends QueryPageDTO{
@ApiModelProperty(value = "变量来源")
private String sourceId;
@ApiModelProperty(value = "所属设备")
......@@ -24,4 +24,5 @@ public class VariableDTO {
private String variableName;
@ApiModelProperty(value = "描述")
private String description;
}
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 com.fasterxml.jackson.annotation.JsonFormat;
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 +22,49 @@ 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 = "主键")
protected String id;
/**
* 租户id
*/
@ApiModelProperty(value = "租户id")
@TableField(fill = FieldFill.INSERT)
protected String appId;
@ApiModelProperty(value = "创建人主键")
private String creator;
@TableField(fill = FieldFill.INSERT)
protected String creator;
@ApiModelProperty(value = "创建人名称")
private String creatorName;
@TableField(fill = FieldFill.INSERT)
protected String creatorName;
@ApiModelProperty(value = "创建时间")
private String createTime;
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
protected Date createTime;
@ApiModelProperty(value = "修改人主键")
private String updater;
@TableField(fill = FieldFill.UPDATE)
protected String updater;
@ApiModelProperty(value = "修改人名称")
private String updaterName;
@TableField(fill = FieldFill.UPDATE)
protected String updaterName;
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@TableField(fill = FieldFill.UPDATE)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
protected Date updateTime;
@ApiModelProperty(value = "状态")
private Integer recordStatus;
@TableField(fill = FieldFill.INSERT)
protected Integer recordStatus;
@ApiModelProperty(value = "描述")
private String description;
protected String description;
@Override
protected Serializable pkVal() {
return id;
}
}
package com.syc.slm.slmbi.entity;
import lombok.Data;
/**
* slm-bi
* 当前用户
* @author : lin
* @date : 2021-04-16 18:30
**/
@Data
public class CurrentUser {
private String uid;
private String appId;
private String platformId;
private String name;
private String token;
}
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;
......@@ -15,16 +16,25 @@ import lombok.EqualsAndHashCode;
@ApiModel(description = "仪表板entity")
@Data
@EqualsAndHashCode(callSuper=true)
@TableName("instrument_panel")
public class InstrumentPanel extends BaseEntity<InstrumentPanel>{
@ApiModelProperty(value = "仪表板主键")
private String id ;
@ApiModelProperty(value = "仪表板名称")
private String name;
@ApiModelProperty(value = "仪表板归属分组")
private String groupId;
@ApiModelProperty(value = "访问权限(公开 1,自定义 2,私有 3)")
private String visitPermission;
@ApiModelProperty(value = "访问权限")
private String accessPermission;
@ApiModelProperty(value = "发布状态")
private String published;
public InstrumentPanel() {
}
public InstrumentPanel(String id, String name, String groupId, String accessPermission, String published) {
super.id=id;
this.name = name;
this.groupId = groupId;
this.accessPermission = accessPermission;
this.published = published;
}
}
......@@ -20,7 +20,9 @@ public class InstrumentPanelConfig extends BaseEntity<InstrumentPanelConfig>{
@ApiModelProperty(value = "主键id")
private String id ;
@ApiModelProperty(value = "仪表板id")
private String instrumentPanelId;
private String panelId;
@ApiModelProperty(value = "仪表板配置详情,包含了样式,数据配置")
private String configDetails;
@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_draft")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "仪表板草稿")
public class InstrumentPanelDraft extends BaseEntity<InstrumentPanelDraft> {
/**
* 仪表板名字
*/
@ApiModelProperty(value = "仪表板名字")
private String name;
/**
* 仪表板归属分组
*/
@ApiModelProperty(value = "仪表板归属分组")
private String groupId;
/**
* 访问权限
*/
@ApiModelProperty(value = "访问权限")
private String accessPermission;
/**
* 状态(发布,下线)
*/
@ApiModelProperty(value = "状态(发布,下线)")
private String published;
@ApiModelProperty(value = "仪表板id")
private String panelId;
}
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;
......@@ -15,6 +16,7 @@ import lombok.EqualsAndHashCode;
@ApiModel(description = "仪表板分组entity")
@Data
@EqualsAndHashCode(callSuper=true)
@TableName("instrument_panel_group")
public class InstrumentPanelGroup extends BaseEntity<InstrumentPanelGroup>{
@ApiModelProperty(value = "仪表板分组主键")
private String id;
......
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> {
/**
* 仪表板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 String published;
}
package com.syc.slm.slmbi.entity;
import com.baomidou.mybatisplus.annotation.TableField;
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> {
/**
* 节点全路径id
*/
@ApiModelProperty(value = "节点全路径id")
private String fullId;
@ApiModelProperty(value = "节点名字")
private String name;
/**
* 节点全路径
*/
@ApiModelProperty(value = "节点全路径")
private String fullName;
/**
* 节点类型
*/
@ApiModelProperty(value = "节点类型")
private String nodeType;
@ApiModelProperty(value = "组件key")
private String assemblyKey;
@ApiModelProperty(value = "父级id")
@TableField(exist = false)
private String parentId;
}
package com.syc.slm.slmbi.enums;
/**
* 访问权限类型
*
* @author liangbin
* @date 2021/3/31
*/
public enum AccessType {
// 公开
PUBLIC("public"),
// 私有
PRIVATE("private"),
// 自定义
CUSTOM("custom");
public String value;
AccessType(String v) {
value = v;
}}
package com.syc.slm.slmbi.enums;
/**
* 自定义权限的类型
*
* @author liangbin
* @date 2021/3/31
*/
public enum CustomPermissionType {
//岗位
POSITION("position"),
//部门
DEPARTMENT("department"),
//用户
USER("user");
public String value;
CustomPermissionType(String v){
value=v;
}
}
package com.syc.slm.slmbi.enums;
/**
* @author lin
* @date 2021/4/6
*/
public enum NodeType {
/**
* 仪表板
*/
PANEL("panel"),
/**
* 仪表板分组
*/
GROUP("group"),
/**
* 仪表板组件
*/
ASSEMBLY("assembly");
public String value;
NodeType(String v){
value = v;
}
}
package com.syc.slm.slmbi.enums;
/**
* @author lin
* @date 2021/4/7
*/
public enum PublishedStatus {
/**
* 发布
*/
PUBLISHED("published"),
/**
* 待发布
*/
WAIT_PUBLISHED("wait_published"),
/**
* 下线
*/
OFFLINE("offline"),
DRAFT("draft");
public String value;
PublishedStatus(String v) {
value = v;
}}
package com.syc.slm.slmbi.enums;
/**
* 统计类型
*
* @author liangbin
* @date 2021/3/31
*/
public enum StatisticsType {
// 合计值
SUM,
// 平均值
AVG,
// 最大值
MAX,
// 最小值
MIN;
public static void main(String[] args) {
System.out.println(StatisticsType.MAX.name());
}
}
package com.syc.slm.slmbi.exception;
import com.syc.slm.common.core.constant.CommonConstants;
import com.syc.slm.common.core.constant.SlmConstants;
import org.apache.commons.lang3.StringUtils;
import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
/**
* slm-bi
* 业务异常类
*
* @author : lin
* @date : 2021-04-06 09:14
**/
public class SysException extends RuntimeException {
private int code;
private String msg;
private Object data;
private String debugMsg;
public int getCode() {
return code;
}
public String getMsg() {
return msg;
}
public Object getData() {
return data;
}
public String getDebugMsg() {
return debugMsg;
}
public SysException(String msg) {
this(msg, null, null);
}
public SysException(String msg, String debugInfo) {
this.msg = msg;
this.debugMsg = debugInfo;
this.code = CommonConstants.FAIL;
}
public SysException(String msg, Exception originalException) {
this(msg, originalException, null);
}
private SysException(String msg, Exception originalException, Object pData) {
super(msg);
code = CommonConstants.FAIL;
this.msg = msg;
data = pData;
if (originalException != null) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintWriter writer = new PrintWriter(outputStream);
originalException.printStackTrace(writer);
debugMsg = new String(outputStream.toByteArray());
}
}
public SysException(int dwCode, String szMsg) {
this(dwCode, szMsg, null);
}
private SysException(int dwCode, String szMsg, Exception originalException) {
super(szMsg);
code = dwCode;
msg = szMsg;
if (originalException != null) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintWriter writer = new PrintWriter(outputStream);
originalException.printStackTrace(writer);
debugMsg = new String(outputStream.toByteArray());
}
}
@Override
public String toString() {
if (StringUtils.isNotEmpty(msg)) {
return msg;
}
if (StringUtils.isNotEmpty(debugMsg)) {
return debugMsg;
}
if (data != null) {
return SlmConstants.gson.toJson(data);
}
return code + "";
}
}
package com.syc.slm.slmbi.function;
import java.io.Serializable;
/**
* @author lin
* @date 2021/4/1
*/
@FunctionalInterface
public interface Action0 extends Serializable {
/**
* 调用
*/
void call();
}
package com.syc.slm.slmbi.function;
import java.io.Serializable;
/**
* @author lin
* @date 2021/4/1
*/
public interface Action1<T> extends Serializable {
void call(T t);
@SafeVarargs
static <T1>Action1<T1>[] of(Action1<T1>... funcs){
return funcs;
}
}
package com.syc.slm.slmbi.function;
import java.io.Serializable;
/**
* @author lin
* @date 2021/4/1
*/
public interface Action2<T1,T2> extends Serializable {
void call(T1 t1, T2 t2);
@SafeVarargs
static <T1,T2>Action2<T1,T2>[] of(Action2<T1, T2>... funcs){
return funcs;
}
}
package com.syc.slm.slmbi.function;
import java.io.Serializable;
/**
* @author lin
* @date 2021/4/1
*/
public interface Function2<T1,T2,R> extends Serializable {
R get(T1 t1, T2 t2);
@SafeVarargs
static <T1,T2>Function2<T1,T2,?>[] of(Function2<T1,T2,?>... funcs){
return funcs;
}
}
package com.syc.slm.slmbi.handler;
import com.syc.slm.common.core.util.R;
import com.syc.slm.slmbi.exception.SysException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
/**
* slm-bi
* 全局业务异常处理
* @author : lin
* @date : 2021-04-16 17:34
**/
@ControllerAdvice
@Slf4j
public class SysExceptionHandler {
/**
* 业务异常
*
* @param e exception
* @return exception
*/
@ExceptionHandler(SysException.class)
@ResponseBody
public R<Object> handleSysException(SysException e, HttpServletRequest request) {
log.info(e.getMsg());
return R.bad(e.getMsg(),e.getDebugMsg());
}
}
......@@ -5,16 +5,20 @@ import com.syc.slm.slmbi.vo.DeptVo;
import java.util.List;
/**
* slm-bi
* 部门
* 变量
*
* @author : lin
* @date : 2021-03-25 15:10
* @date : 2021-03-25 16:17
**/
public interface DeptService {
/**
* 获取部门列表
* @param uri
* @param token
* @param appId
* @param deptName
* @return
*/
List<DeptVo> selectDeptList(String deptName);
List<DeptVo> selectPositionList(String uri, String token, String appId, String deptName);
}
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.baomidou.mybatisplus.extension.service.IService;
import com.syc.slm.slmbi.dto.InstrumentPanelConfigDTO;
import com.syc.slm.slmbi.entity.InstrumentPanelConfig;
import com.syc.slm.slmbi.vo.InstrumentPanelConfigVo;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Map;
/**
* slm-bi
* 仪表板配置
......@@ -11,7 +16,15 @@ import com.syc.slm.slmbi.vo.InstrumentPanelConfigVo;
* @author : lin
* @date : 2021-03-25 15:10
**/
public interface InstrumentPanelConfigService {
public interface InstrumentPanelConfigService extends IService<InstrumentPanelConfig>{
/**
* 根据仪表板id获取对应已发布配置
* @param instrumentPanelId
* @return
*/
InstrumentPanelConfigVo getPublishConfigByPanelId(@NotNull String instrumentPanelId);
/**
* 根据仪表板id获取对应配置
......@@ -19,16 +32,62 @@ public interface InstrumentPanelConfigService {
* @return
*/
InstrumentPanelConfigVo getConfigByPanelId(@NotNull String instrumentPanelId);
/**
* 保存发布仪表板配置
* @param appId
* @param config
* @return
*/
String publish(InstrumentPanelConfigDTO config);
String publish(String appId,InstrumentPanelConfigDTO config);
/**
* 保存仪表板配置
* @param appId
* @param config
* @return
*/
String saveConfig(InstrumentPanelConfigDTO config);
String saveConfig(String appId,InstrumentPanelConfigDTO config);
/**
* 根据仪表板id删除仪表板配置
* @param panelId
* @param publishedStatus
*/
void delConfig(@NotNull String panelId,String publishedStatus);
/**
* 根据仪表板详情保存仪表盘配置
* @param panelId
* @param configDetails
* @param publishStatus
*/
void savePanelConfig(String panelId,String configDetails,String publishStatus);
/**
* 发布仪表板把对应配置状态修改为发布
* @param ids
*/
void publishConfigByPanelIds(List<String> ids);
/**
* 根据仪表板id以及状态获取仪表板配置
* @param panelId
* @param publishStatus
* @return
*/
List<InstrumentPanelConfig> getConfigByPanelIdAndPublishStatus(String panelId,String publishStatus);
/**
* 下线仪表盘配置
* @param panelId
* @param publishStatus
*/
void offlineConfig(String panelId, String publishStatus);
/**
* 根据仪表id获取仪表板配置
* @param panelId
*/
Map<String,String> getAssemblyConfig(@NotNull String panelId);
}
package com.syc.slm.slmbi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.syc.slm.slmbi.entity.InstrumentPanel;
import com.syc.slm.slmbi.entity.InstrumentPanelDraft;
import java.util.List;
import java.util.Set;
/**
* 仪表板草稿
*
* @author lin
* @date 2021-04-01 10:52:44
*/
public interface InstrumentPanelDraftService extends IService<InstrumentPanelDraft> {
/**
* 发布仪表板生成仪表板草稿
* @param panels
*/
void saveDrafts(List<InstrumentPanel> panels);
/**
* 根据仪表板id获取 仪表板草稿
* @param panelIds
* @return
*/
List<InstrumentPanelDraft> getByIds(Set<String> panelIds);
/**
* 获取仪表板信息
* @param appId
* @param panelIds
* @param officeIds
* @param userId
* @param roleId
* @return
*/
List<InstrumentPanelDraft> selectDraftList(String appId,Set<String> panelIds, String officeIds, String userId, String roleId);
/**
* 根据仪表板id获取 仪表板草稿
* @param panelId
* @return
*/
InstrumentPanelDraft getByPanelId(String panelId);
}
......@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.syc.slm.slmbi.dto.InstrumentPanelGroupDTO;
import com.syc.slm.slmbi.entity.InstrumentPanelGroup;
import com.syc.slm.slmbi.vo.InstrumentPanelGroupVo;
import com.syc.slm.slmbi.vo.PanelGroupVo;
import com.syc.slm.slmbi.vo.PanelTreeNodeVo;
import lombok.NonNull;
import java.util.List;
import java.util.Set;
/**
* slm-bi
......@@ -20,12 +21,15 @@ public interface InstrumentPanelGroupService extends IService<InstrumentPanelGro
/**
* 查询仪表板分组
* @param appId
* @param name
* @return
*/
List<InstrumentPanelGroupVo> selectGroupList();
List<InstrumentPanelGroupVo> selectGroupList(String appId, String name);
/**
* 删除仪表板分组
*
* @param groupId
* @return
*/
......@@ -34,29 +38,24 @@ public interface InstrumentPanelGroupService extends IService<InstrumentPanelGro
/**
* 修改仪表板分组
* @param group
* @param appId
* @return
*/
String updateGroup(InstrumentPanelGroupDTO group);
String updateGroup(@NonNull InstrumentPanelGroupDTO group,String appId);
/**
* 保存仪表板分组
* @param group
* @param appId
* @return
*/
String saveGroup(InstrumentPanelGroupDTO group);
String saveGroup(@NonNull InstrumentPanelGroupDTO group,String appId);
/**
* 加载仪表板树
* @param name
* @return
*/
List<PanelGroupVo> loadTrees(String name);
/**
* 查询下一节点分组
* @param groupId
* 根据分组id集合 已经名称批量查询仪表板分组
* @param finalPanelIds
* @param name
* @return
*/
List<PanelGroupVo> children(String groupId, String name);
List<PanelTreeNodeVo> selectGroupByIds(Set<String> finalPanelIds,String name);
}
package com.syc.slm.slmbi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.syc.slm.slmbi.dto.CustomPermissionDTO;
import com.syc.slm.slmbi.dto.InstrumentPanelPermissionDTO;
import com.syc.slm.slmbi.entity.InstrumentPanelPermission;
import com.syc.slm.slmbi.vo.CustomPermissionVo;
import com.syc.slm.slmbi.vo.InstrumentPanelPermissionVo;
import lombok.NonNull;
import java.util.List;
/**
* slm-bi
* 仪表板权限
* 仪表板权限控制
*
* @author : lin
* @date : 2021-03-25 15:10
* @date : 2021-03-25 18:54
**/
public interface InstrumentPanelPermissionService {
public interface InstrumentPanelPermissionService extends IService<InstrumentPanelPermission> {
/**
* 保存仪表板权限
*
* @param permissions
* @return
*/
String savePermission(List<InstrumentPanelPermissionDTO> permissions);
String savePermission(InstrumentPanelPermissionDTO permissions);
/**
* 从其他仪表板复制配置
......@@ -27,16 +31,16 @@ public interface InstrumentPanelPermissionService {
* @param instrumentPanelId
* @return
*/
List<InstrumentPanelPermissionVo> saveCopyOtherPermission(@NonNull String instrumentPanelId);
InstrumentPanelPermissionVo saveCopyOtherPermission(@NonNull String instrumentPanelId);
/**
* 将仪表板权限复制给其他仪表板
*
* @param permissions
* @param otherInstrumentPanelId
* @param otherInstrumentPanelIds
* @return
*/
String saveCopyToOtherPermission(List<InstrumentPanelPermissionDTO> permissions, String otherInstrumentPanelId);
void saveCopyToOtherPermission(InstrumentPanelPermissionDTO permissions, List<String> otherInstrumentPanelIds);
/**
* 根据仪表板id获取仪表板权限
......@@ -44,5 +48,49 @@ public interface InstrumentPanelPermissionService {
* @param instrumentPanelId
* @return
*/
List<InstrumentPanelPermissionVo> selectPermissionByPanelId(@NonNull String instrumentPanelId);
InstrumentPanelPermissionVo selectPermissionByPanelId(@NonNull String instrumentPanelId);
/**
* 根据仪表板id删除仪表板权限
* @param panelId
* @param publishStatus
*/
void delPermissionByPanelId(@NonNull String panelId,String publishStatus);
/**
* 根据仪表板id获取已经发布的配置
* @param panelId
* @param publishStatus
* @return
*/
List<CustomPermissionVo> getPublishPermissionByPanelId(@NonNull String panelId,@NonNull String publishStatus);
/**
* 根据仪表板详情保存仪表板配置
* @param customPermissions
* @param panelId
* @param accessType
* @param publishStatus
*/
void savePanelPermission(List<CustomPermissionDTO> customPermissions,String panelId,String accessType,String publishStatus);
/**
* 批量发布把对应配置状态更改为发布状态
* @param ids
*/
void publishPermissionByPanelIds(List<String> ids);
/**
* 根据仪表板id 以及 状态获取仪表板对应权限
* @param panelId
* @param publishStatus
* @return
*/
List<InstrumentPanelPermission> getPermissionByPanelIdAndPublishStatus(String panelId, String publishStatus);
/**
* 下线仪表板对应权限
* @param panelId
*/
void offlinePermission(String panelId);
}
......@@ -3,11 +3,15 @@ package com.syc.slm.slmbi.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.syc.slm.slmbi.dto.SaveInstrumentPanelDTO;
import com.syc.slm.slmbi.dto.SearchInstrumentPanelDTO;
import com.syc.slm.slmbi.dto.QueryInstrumentPanelDTO;
import com.syc.slm.slmbi.entity.InstrumentPanel;
import com.syc.slm.slmbi.vo.InstrumentPanelConfigVo;
import com.syc.slm.slmbi.vo.InstrumentPanelVo;
import com.syc.slm.slmbi.vo.PanelTreeNodeVo;
import lombok.NonNull;
import java.util.List;
import java.util.Set;
/**
* slm-bi
......@@ -23,7 +27,7 @@ public interface InstrumentPanelService extends IService<InstrumentPanel> {
* @param where
* @return
*/
IPage<InstrumentPanelVo> selectInstrumentPanelList(SearchInstrumentPanelDTO where);
IPage<InstrumentPanelVo> selectInstrumentPanelList(String appId,QueryInstrumentPanelDTO where);
/**
* 保存仪表板
......@@ -31,7 +35,7 @@ public interface InstrumentPanelService extends IService<InstrumentPanel> {
* @param panel
* @return
*/
String savePanel(SaveInstrumentPanelDTO panel);
String savePanel(String appId,SaveInstrumentPanelDTO panel);
/**
* 批量推送
......@@ -39,7 +43,7 @@ public interface InstrumentPanelService extends IService<InstrumentPanel> {
* @param ids
* @return
*/
Boolean batchPublish(List<String> ids);
List<String> batchPublish(List<String> ids);
/**
* 删除仪表板
......@@ -55,7 +59,7 @@ public interface InstrumentPanelService extends IService<InstrumentPanel> {
* @param instrumentPanelDTO
* @return
*/
String saveAsPanel(SaveInstrumentPanelDTO instrumentPanelDTO);
String saveAsPanel(String appId,SaveInstrumentPanelDTO instrumentPanelDTO);
/**
* 是否显示恢复按钮
......@@ -71,7 +75,7 @@ public interface InstrumentPanelService extends IService<InstrumentPanel> {
* @param id
* @return
*/
String recoveryPanel(String id);
InstrumentPanelConfigVo recoveryPanel(String id);
/**
* 下线
......@@ -80,4 +84,23 @@ public interface InstrumentPanelService extends IService<InstrumentPanel> {
* @return
*/
String offline(String id);
/**
* 批量更新仪表板状态
* @param panelIds
* @param recordStatus
*/
void batchUpdatePanelByIds(Set<String> panelIds, Integer recordStatus);
/**
* 检验仪表板是否重复
* @param appId
* @param panelId
* @param panelName
*/
void checkName(@NonNull String appId,String panelId,@NonNull String panelName);
List<InstrumentPanel> getByIds(Set<String> panelIds);
List<PanelTreeNodeVo> selectPanelByIds(Set<String> finalPanelIds,String name);
}
package com.syc.slm.slmbi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.syc.slm.slmbi.dto.InstrumentPanelAssemblyDTO;
import com.syc.slm.slmbi.entity.CurrentUser;
import com.syc.slm.slmbi.entity.InstrumentPanelTree;
import com.syc.slm.slmbi.vo.InstrumentPanelConfigVo;
import com.syc.slm.slmbi.vo.PanelTreeNodeVo;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 仪表板树聚合表
*
* @author lin
* @date 2021-04-01 10:52:44
*/
public interface InstrumentPanelTreeService extends IService<InstrumentPanelTree> {
void batchUpdateTreeByIds(Set<String> treeIds, Integer recordStatus);
/**
* 初始化仪表板树
*
* @param nodeId
* @param nodeType
* @param bizId
* @param bizName
*/
void initTree(String nodeId, String nodeType, String bizId, String bizName);
/**
* 根据仪表板id删除仪表板树
*
* @param panelId
*/
void delTreeByPanelId(String panelId);
/**
* 根据仪表板详情保存仪表板组件树
*
* @param tree
* @param assembly
* @param panelId
*/
void savePanelAssemblyTree(InstrumentPanelTree tree, List<InstrumentPanelAssemblyDTO> assembly, String panelId);
/**
* 根据fullId 删除仪表板树
* @param fullId
*/
void delTreeByPanelFullId(String fullId);
/**
* 更新仪表板树
* @param panelId
* @param panelName
* @param groupId
*/
void updatePanelTreeFullName(String panelId,String panelName,String groupId) ;
/**
* 加载树
* @param appId
* @param name
* @return
*/
List<PanelTreeNodeVo> loadTrees(String appId, String name, String uri,CurrentUser user);
/**
* 加载树
* @param appId
* @return
*/
List<PanelTreeNodeVo> loadTrees(String appId,String uri,CurrentUser user);
/**
* 加载树节点下一节点
* @param groupId
* @param name
* @return
*/
List<PanelTreeNodeVo> children(String groupId, String name,String uri,CurrentUser user);
/**
* 根据仪表板分组id更新 fullId fullName
* @param groupId
* @param panelId
* @param panelName
*/
void updateFullNameByGroupId(String groupId, String panelId, String panelName);
/**
* 复制仪表板配置显示的仪表板树
* @param appId
* @param name
* @return
*/
List<PanelTreeNodeVo> copyTreeList(String appId,String name);
/**
* 复用仪表板树
* @param appId
* @param name
* @return
*/
List<PanelTreeNodeVo> citeTreeList(String appId, String name);
/**
* 点击仪表板组件获取对应配置
* @param appId
* @param panelId
* @return
*/
Map<String, String> assembly(String appId, String panelId);
}
......@@ -13,8 +13,10 @@ import java.util.List;
public interface PositionService {
/**
* 获取岗位
* @param token
* @param appId
* @param name
* @return
*/
List<PositionVo> selectPositionList(String name);
List<PositionVo> selectPositionList(String uri ,String token,String appId,String name);
}
package com.syc.slm.slmbi.service;
import com.syc.slm.slmbi.vo.UserVo;
import com.syc.slm.slmbi.vo.UserTreeVo;
import java.util.List;
/**
......@@ -11,10 +11,14 @@ import java.util.List;
* @date : 2021-03-25 16:17
**/
public interface UserService {
/**
* 获取用户
* @param appId
* @param uri
* @param token
* @param userName
* @return
*/
List<UserVo> selectUserList(String userName);
List<UserTreeVo> selectUserList(String appId,String uri,String token,String userName);
}
......@@ -2,6 +2,7 @@ package com.syc.slm.slmbi.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.syc.slm.slmbi.dto.HistoryVariableDTO;
import com.syc.slm.slmbi.dto.QueryPageDTO;
import com.syc.slm.slmbi.dto.RealTimeVariableDTO;
import com.syc.slm.slmbi.dto.VariableDTO;
import com.syc.slm.slmbi.vo.*;
......@@ -22,7 +23,7 @@ public interface VariableService {
* @param variableDTO
* @return
*/
IPage<VariableVo> getVariableList(VariableDTO variableDTO);
IPage<VariableVo> getVariableList(VariableDTO variableDTO,String appId,String token,String uri);
/**
* 获取变量来源
......@@ -32,9 +33,13 @@ public interface VariableService {
/**
* 获取变量所属设备
* @param token
* @param appId
* @param uri
* @param queryPageDTO
* @return
*/
List<VariableDeviceVo> getVariableDeviceList();
IPage<VariableDeviceVo> getVariableDeviceList(String token,String appId,String uri, QueryPageDTO queryPageDTO);
/**
* 获取实时数据
......
package com.syc.slm.slmbi.service.impl;
import com.syc.slm.slmbi.vo.DeptVo;
import com.google.common.collect.Maps;
import com.google.gson.reflect.TypeToken;
import com.syc.slm.common.core.util.R;
import com.syc.slm.common.core.util.RestTemplateUtils;
import com.syc.slm.slmbi.service.DeptService;
import com.syc.slm.slmbi.vo.DeptVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* slm-bi
......@@ -14,9 +20,21 @@ import java.util.List;
* @date : 2021-03-25 18:41
**/
@Service
@Slf4j
public class DeptServiceImpl implements DeptService {
@Override
public List<DeptVo> selectDeptList(String deptName) {
return null;
public List<DeptVo> selectPositionList(String uri, String token, String appId, String deptName) {
log.info("部门查询uri:---------------->"+uri);
log.info("部门查询token:---------------->"+token);
Map<String,String> heads = Maps.newHashMap();
heads.put("token",token);
Map<String,String> uriVariables =Maps.newHashMap();
uriVariables.put("deptName",deptName);
uriVariables.put("appId",appId);
R<List<DeptVo>> result = RestTemplateUtils.get(uri, heads, new TypeToken<R<List<DeptVo>>>() {}.getType(), uriVariables);
return result.detach();
}
}
package com.syc.slm.slmbi.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.gson.reflect.TypeToken;
import com.syc.slm.common.core.constant.SlmConstants;
import com.syc.slm.slmbi.dao.InstrumentPanelDraftMapper;
import com.syc.slm.slmbi.entity.BaseEntity;
import com.syc.slm.slmbi.entity.InstrumentPanel;
import com.syc.slm.slmbi.entity.InstrumentPanelDraft;
import com.syc.slm.slmbi.service.InstrumentPanelDraftService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 仪表板草稿
*
* @author lin
* @date 2021-04-01 10:52:44
*/
@Service
public class InstrumentPanelDraftServiceImpl extends ServiceImpl<InstrumentPanelDraftMapper, InstrumentPanelDraft>
implements InstrumentPanelDraftService {
@Override
public void saveDrafts(List<InstrumentPanel> panels) {
if (CollectionUtils.isNotEmpty(panels)) {
List<InstrumentPanelDraft> drafts = SlmConstants.gson.fromJson(SlmConstants.gson.toJson(panels), new TypeToken<List<InstrumentPanelDraft>>() {
}.getType());
if (CollectionUtils.isNotEmpty(drafts)) {
List<InstrumentPanelDraft> panelDrafts = getByIds(panels.stream().map(InstrumentPanel::getId).collect(Collectors.toSet()));
Map<String, String> maps = CollectionUtils.isNotEmpty(panelDrafts) ? panelDrafts.stream().collect(
Collectors.toMap(InstrumentPanelDraft::getPanelId, BaseEntity::getId)) : Maps.newHashMap();
drafts.forEach(x -> {
x.setPanelId(x.getId());
if (maps.containsKey(x.getId())) {
x.setId(maps.get(x.getId()));
baseMapper.updateById(x);
} else {
x.setId(IdWorker.get32UUID());
baseMapper.insert(x);
}
});
}
}
}
@Override
public List<InstrumentPanelDraft> getByIds(Set<String> panelIds) {
LambdaQueryWrapper<InstrumentPanelDraft> where = new LambdaQueryWrapper<>();
where.eq(BaseEntity::getRecordStatus, SlmConstants.DATA_VALID);
where.in(InstrumentPanelDraft::getPanelId, panelIds);
return baseMapper.selectList(where);
}
@Override
public List<InstrumentPanelDraft> selectDraftList(String appId, Set<String> panelIds, String officeIds, String userId, String roleId) {
return baseMapper.selectDraftList(appId, panelIds, officeIds, userId, roleId);
}
@Override
public InstrumentPanelDraft getByPanelId(String panelId) {
List<InstrumentPanelDraft> drafts = getByIds(Sets.newHashSet(panelId));
return CollectionUtils.isNotEmpty(drafts)?drafts.get(0):null;
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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