Commit 95fd45c3 authored by linruibiao's avatar linruibiao

接口编写

parent eac187bf
......@@ -31,14 +31,14 @@ public class InstrumentPanelConfigController {
@ApiOperation("保存仪表板样式以及数据配置")
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<String> saveInstrumentPanelConfig(@PathVariable String appId, InstrumentPanelConfigDTO config) {
return R.ok(instrumentPanelConfigService.saveConfig(config));
return R.ok(instrumentPanelConfigService.saveConfig(appId,config));
}
@PostMapping("/publish")
@ApiOperation("保存发布仪表板样式以及数据配置")
@ApiImplicitParam(name = "appId", value = "租户id", required = true,dataTypeClass = String.class)
public R<String> publish(@PathVariable String appId, @RequestBody InstrumentPanelConfigDTO config) {
return R.ok(instrumentPanelConfigService.publish(config));
return R.ok(instrumentPanelConfigService.publish(appId,config));
}
@GetMapping("/{panelId}")
......
......@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* slm-bi
* 仪表板样式,数据配置显示类
......@@ -19,12 +21,14 @@ public class InstrumentPanelConfigDTO {
@ApiModelProperty(value = "仪表板id", required = true)
private String panelId;
@ApiModelProperty(value = "仪表板名称", required = true)
private String panelName;
@ApiModelProperty(value = "仪表板配置详情,包含了样式,数据配置", required = true)
private String configDetails;
@ApiModelProperty(value = "仪表板配置组件集合", required = true)
private List<InstrumentPanelAssemblyDTO> assemblys;
@ApiModelProperty(value = "访问权限", required = true)
private InstrumentPanelPermissionDTO permission;
......
......@@ -22,6 +22,12 @@ public class InstrumentPanelPermissionDTO {
@ApiModelProperty(value = "主键id")
private String id;
@ApiModelProperty(value = "仪表板名称", required = true)
private String panelName;
@ApiModelProperty(value = "仪表板分组id", required = true)
private String groupId;
@ApiModelProperty(value = "访问权限类型", required = true)
private String accessType;
......
......@@ -19,7 +19,6 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "仪表板树聚合表")
public class InstrumentPanelTree extends BaseEntity<InstrumentPanelTree> {
private static final long serialVersionUID = 1L;
/**
* 节点全路径id
*/
......@@ -38,5 +37,8 @@ public class InstrumentPanelTree extends BaseEntity<InstrumentPanelTree> {
@ApiModelProperty(value = "组件key")
private String assemblyKey;
/* @ApiModelProperty(value = "业务id")
private String bizId;*/
}
......@@ -6,6 +6,7 @@ import com.syc.slm.slmbi.entity.InstrumentPanelConfig;
import com.syc.slm.slmbi.vo.InstrumentPanelConfigVo;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* slm-bi
......@@ -35,17 +36,33 @@ public interface InstrumentPanelConfigService extends IService<InstrumentPanelCo
* @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
*/
void delConfig(@NotNull String panelId);
void delConfig(@NotNull String panelId,Integer publishedStatus);
/**
* 根据仪表板详情保存仪表盘配置
* @param panelId
* @param configDetails
* @param publishStatus
*/
void savePanelConfig(String panelId,String configDetails,Integer publishStatus);
/**
* 发布仪表板把对应配置状态修改为发布
* @param ids
*/
void publishConfigByPanelIds(List<String> ids);
}
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;
/**
* 仪表板草稿
*
......@@ -11,4 +14,9 @@ import com.syc.slm.slmbi.entity.InstrumentPanelDraft;
*/
public interface InstrumentPanelDraftService extends IService<InstrumentPanelDraft> {
/**
* 发布仪表板生成仪表板草稿
* @param panels
*/
void saveDrafts(List<InstrumentPanel> panels);
}
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;
......@@ -53,12 +54,27 @@ public interface InstrumentPanelPermissionService extends IService<InstrumentPan
* 根据仪表板id删除仪表板权限
* @param panelId
*/
void delPermissionByPanelId(@NonNull String panelId);
void delPermissionByPanelId(@NonNull String panelId,Integer publishStatus);
/**
* 根据仪表板id获取已经发布的配置
* @param panelId
* @return
*/
List<CustomPermissionVo> getPublishPermissionByPanelId(@NonNull String panelId);
List<CustomPermissionVo> getPublishPermissionByPanelId(@NonNull String panelId,@NonNull Integer publishStatus);
/**
* 根据仪表板详情保存仪表板配置
* @param customPermissions
* @param panelId
* @param accessType
* @param publishStatus
*/
void savePanelPermission(List<CustomPermissionDTO> customPermissions,String panelId,String accessType,Integer publishStatus);
/**
* 批量发布把对应配置状态更改为发布状态
* @param ids
*/
void publishPermissionByPanelIds(List<String> ids);
}
......@@ -7,6 +7,7 @@ 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 lombok.NonNull;
import java.util.List;
import java.util.Set;
......@@ -89,4 +90,12 @@ public interface InstrumentPanelService extends IService<InstrumentPanel> {
* @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);
}
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.InstrumentPanel;
import com.syc.slm.slmbi.entity.InstrumentPanelTree;
import lombok.NonNull;
import java.util.List;
import java.util.Set;
/**
......@@ -17,16 +21,41 @@ public interface InstrumentPanelTreeService extends IService<InstrumentPanelTree
/**
* 初始化仪表板树
*
* @param nodeId
* @param nodeType
* @param bizId
* @param bizName
*/
void initTree(String nodeId,String nodeType,String bizId,String 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) ;
}
......@@ -2,24 +2,32 @@ 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.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.syc.slm.common.core.constant.SlmConstants;
import com.syc.slm.slmbi.dao.InstrumentPanelConfigMapper;
import com.syc.slm.slmbi.dto.InstrumentPanelConfigDTO;
import com.syc.slm.slmbi.entity.BaseEntity;
import com.syc.slm.slmbi.entity.InstrumentPanelConfig;
import com.syc.slm.slmbi.entity.InstrumentPanelDraft;
import com.syc.slm.slmbi.dto.InstrumentPanelPermissionDTO;
import com.syc.slm.slmbi.entity.*;
import com.syc.slm.slmbi.enums.PublishedStatus;
import com.syc.slm.slmbi.service.InstrumentPanelConfigService;
import com.syc.slm.slmbi.service.InstrumentPanelPermissionService;
import com.syc.slm.slmbi.exception.SysException;
import com.syc.slm.slmbi.service.*;
import com.syc.slm.slmbi.vo.InstrumentPanelConfigVo;
import com.syc.slm.slmbi.vo.InstrumentPanelVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.validation.constraints.NotNull;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.stream.Collectors;
/**
* slm-bi
......@@ -28,51 +36,239 @@ import java.util.List;
* @author : lin
* @date : 2021-03-25 19:11
**/
@Slf4j
@Service
public class InstrumentPanelConfigServiceImpl extends ServiceImpl<InstrumentPanelConfigMapper, InstrumentPanelConfig> implements InstrumentPanelConfigService {
public class InstrumentPanelConfigServiceImpl extends ServiceImpl<InstrumentPanelConfigMapper, InstrumentPanelConfig>
implements InstrumentPanelConfigService {
@Autowired
private InstrumentPanelPermissionService permissionService;
@Autowired
private InstrumentPanelService panelService;
@Autowired
private InstrumentPanelTreeService treeService;
@Autowired
private InstrumentPanelDraftService draftService;
@Override
@Transactional(readOnly = true)
public InstrumentPanelConfigVo getPublishConfigByPanelId(@NotNull String instrumentPanelId) {
LambdaQueryWrapper<InstrumentPanelConfig> where = new LambdaQueryWrapper<>();
where.eq(BaseEntity::getRecordStatus, SlmConstants.DATA_VALID);
where.eq(InstrumentPanelConfig::getPanelId, instrumentPanelId);
where.eq(InstrumentPanelConfig::getPublished, PublishedStatus.PUBLISHED);
InstrumentPanelConfig config = baseMapper.selectOne(where);
InstrumentPanelConfigVo vo = new InstrumentPanelConfigVo();
BeanUtils.copyProperties(config,vo);
vo.setPermissions(permissionService.getPublishPermissionByPanelId(instrumentPanelId));
return vo;
return getInstrumentPanelConfigVo(instrumentPanelId, PublishedStatus.PUBLISHED);
}
//#todo 未确定
@Override
@Transactional(readOnly = true)
public InstrumentPanelConfigVo getConfigByPanelId(String instrumentPanelId) {
return null;
InstrumentPanelDraft draft = draftService.getById(instrumentPanelId);
return getInstrumentPanelConfigVo(instrumentPanelId,
ObjectUtils.isNotEmpty(draft) ? PublishedStatus.PUBLISHED :
PublishedStatus.WAIT_PUBLISHED);
}
@Override
@Transactional(rollbackFor = Exception.class)
public String publish(String appId, InstrumentPanelConfigDTO config) {
InstrumentPanelPermissionDTO permission = config.getPermission();
checkAll(appId, config, permission);
InstrumentPanel panel = panelService.getById(config.getPanelId());
fillPanelProp(permission, panel);
log.info("删除仪表板配置详情");
delConfig(config.getPanelId(), null);
log.info("保存配置详情");
savePanelConfig(panel.getId(), config.getConfigDetails(), PublishedStatus.PUBLISHED.value);
log.info("删除仪表板权限信息");
permissionService.delPermissionByPanelId(config.getPanelId(), null);
log.info("保存权限信息");
permissionService.savePanelPermission(permission.getCustomPermissions(),
panel.getId(),
permission.getAccessType(),
PublishedStatus.PUBLISHED.value);
log.info("更新仪表板树");
updateTree(config, panel);
InstrumentPanelDraft draft = draftService.getById(panel.getId());
if (ObjectUtils.isNotEmpty(draft)) {
BeanUtils.copyProperties(panel, draft);
draftService.updateById(draft);
} else {
InstrumentPanelDraft df = new InstrumentPanelDraft();
BeanUtils.copyProperties(panel, draft);
draftService.save(df);
}
panelService.updateById(panel);
return panel.getId();
}
@Override
@Transactional(rollbackFor = Exception.class)
public String saveConfig(String appId, InstrumentPanelConfigDTO config) {
InstrumentPanelPermissionDTO permission = config.getPermission();
checkAll(appId, config, permission);
InstrumentPanel panel = panelService.getById(config.getPanelId());
fillPanelProp(permission, panel);
//判断是否有发布版本
InstrumentPanelDraft draft = draftService.getById(panel.getId());
if (ObjectUtils.isNotEmpty(draft)) {
log.info("保存配置详情");
savePanelConfig(panel.getId(), config.getConfigDetails(), PublishedStatus.WAIT_PUBLISHED.value);
log.info("保存权限信息");
permissionService.savePanelPermission(permission.getCustomPermissions(),
panel.getId(),
permission.getAccessType(),
PublishedStatus.WAIT_PUBLISHED.value);
log.info("更新仪表盘树");
treeService.updatePanelTreeFullName(panel.getId(), panel.getName(), panel.getGroupId());
log.info("更新发布版本的groupId");
draft.setGroupId(permission.getGroupId());
draftService.updateById(draft);
} else {
//修改
log.info("删除仪表板配置详情");
delConfig(config.getPanelId(), null);
log.info("保存配置详情");
savePanelConfig(panel.getId(), config.getConfigDetails(), PublishedStatus.WAIT_PUBLISHED.value);
log.info("删除仪表板权限信息");
permissionService.delPermissionByPanelId(config.getPanelId(), null);
log.info("保存权限信息");
permissionService.savePanelPermission(permission.getCustomPermissions(),
panel.getId(),
permission.getAccessType(),
PublishedStatus.WAIT_PUBLISHED.value);
log.info("更新仪表板树");
updateTree(config, panel);
}
panelService.updateById(panel);
return config.getPanelId();
}
private void checkAll(String appId, InstrumentPanelConfigDTO config, InstrumentPanelPermissionDTO permission) {
if (ObjectUtils.isEmpty(permission)) {
throw new SysException("权限必填");
}
if (StringUtils.isEmpty(permission.getPanelName())) {
throw new SysException("仪表板名字必填");
}
log.info("校验仪表板名称是否重复");
panelService.checkName(appId, config.getPanelId(), permission.getPanelName());
}
@Override
public String publish(InstrumentPanelConfigDTO config) {
return null;
public void delConfig(@NotNull String panelId, Integer publishedStatus) {
LambdaQueryWrapper<InstrumentPanelConfig> where = new LambdaQueryWrapper<>();
where.eq(InstrumentPanelConfig::getRecordStatus, SlmConstants.DATA_VALID);
where.eq(InstrumentPanelConfig::getPanelId, panelId);
if (publishedStatus != null) {
where.eq(InstrumentPanelConfig::getPublished, publishedStatus);
}
List<InstrumentPanelConfig> configs = baseMapper.selectList(where);
if (CollectionUtils.isNotEmpty(configs)) {
configs.forEach(x -> {
x.setRecordStatus(SlmConstants.DATA_DELETED);
baseMapper.updateById(x);
});
}
}
@Override
public String saveConfig(InstrumentPanelConfigDTO config) {
return null;
public void savePanelConfig(String panelId, String configDetails, Integer publishStatus) {
InstrumentPanelConfig panelConfig = new InstrumentPanelConfig();
panelConfig.setId(IdWorker.get32UUID());
panelConfig.setPanelId(panelId);
panelConfig.setPublished(publishStatus);
try {
panelConfig.setConfigDetails(URLEncoder.encode(configDetails, StandardCharsets.UTF_8.name()));
} catch (Exception e) {
e.printStackTrace();
throw new SysException("仪表板配置详情加密异常");
}
baseMapper.insert(panelConfig);
}
@Override
public void delConfig(@NotNull String panelId) {
public void publishConfigByPanelIds(List<String> ids) {
LambdaQueryWrapper<InstrumentPanelConfig> where = new LambdaQueryWrapper<>();
where.eq(InstrumentPanelConfig::getRecordStatus, SlmConstants.DATA_VALID);
where.eq(InstrumentPanelConfig::getPanelId,panelId);
where.in(InstrumentPanelConfig::getPanelId, ids);
List<InstrumentPanelConfig> configs = baseMapper.selectList(where);
if(CollectionUtils.isNotEmpty(configs)){
configs.forEach(x->{
if (CollectionUtils.isNotEmpty(configs)) {
List<InstrumentPanelConfig> waitPublishConfigs =
configs.stream().filter(x -> PublishedStatus.WAIT_PUBLISHED.value.equals(x.getPublished())).collect(
Collectors.toList());
if (CollectionUtils.isNotEmpty(waitPublishConfigs)) {
waitPublishConfigs.forEach(x -> {
x.setPublished(PublishedStatus.PUBLISHED.value);
baseMapper.updateById(x);
});
}
List<InstrumentPanelConfig> publishConfigs =
configs.stream().filter(x -> PublishedStatus.PUBLISHED.value.equals(x.getPublished())).collect(
Collectors.toList());
if (CollectionUtils.isNotEmpty(publishConfigs)) {
publishConfigs.forEach(x -> {
x.setRecordStatus(SlmConstants.DATA_DELETED);
baseMapper.updateById(x);
});
}
}
}
private InstrumentPanelConfigVo getInstrumentPanelConfigVo(String instrumentPanelId, PublishedStatus published) {
LambdaQueryWrapper<InstrumentPanelConfig> where = new LambdaQueryWrapper<>();
where.eq(BaseEntity::getRecordStatus, SlmConstants.DATA_VALID);
where.eq(InstrumentPanelConfig::getPanelId, instrumentPanelId);
where.eq(InstrumentPanelConfig::getPublished, published.value);
InstrumentPanelConfig config = baseMapper.selectOne(where);
InstrumentPanelConfigVo vo = new InstrumentPanelConfigVo();
BeanUtils.copyProperties(config, vo);
if (ObjectUtils.isNotEmpty(vo)) {
try {
vo.setConfigDetails(URLDecoder.decode(vo.getConfigDetails(), StandardCharsets.UTF_8.name()));
} catch (Exception e) {
e.printStackTrace();
throw new SysException("仪表板配置详情解密异常");
}
vo.setPermissions(permissionService.getPublishPermissionByPanelId(instrumentPanelId, published.value));
InstrumentPanelVo panelVo = new InstrumentPanelVo();
if (PublishedStatus.PUBLISHED.value.equals(published.value)) {
InstrumentPanelDraft panel = draftService.getById(instrumentPanelId);
BeanUtils.copyProperties(panel, panelVo);
} else {
InstrumentPanel panel = panelService.getById(instrumentPanelId);
BeanUtils.copyProperties(panel, panelVo);
}
vo.setPanel(panelVo);
}
return vo;
}
private void fillPanelProp(InstrumentPanelPermissionDTO permission, InstrumentPanel panel) {
panel.setGroupId(permission.getGroupId());
panel.setName(permission.getPanelName());
panel.setAccessPermission(permission.getAccessType());
panel.setDescription(permission.getDescription());
}
private void updateTree(InstrumentPanelConfigDTO config, InstrumentPanel panel) {
log.info("更新仪表盘树");
InstrumentPanelTree tree = treeService.getById(config.getPanelId());
String beforeFullId = tree.getFullId();
treeService.updatePanelTreeFullName(panel.getId(), panel.getName(), panel.getGroupId());
log.info("查找仪表盘配置组件树并删除");
treeService.delTreeByPanelFullId(beforeFullId);
log.info("重新构建组件树");
treeService.savePanelAssemblyTree(tree, config.getAssemblys(), panel.getId());
}
}
package com.syc.slm.slmbi.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.Set;
import java.util.stream.Collectors;
/**
* 仪表板草稿
*
......@@ -16,4 +26,23 @@ import org.springframework.stereotype.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());
List<InstrumentPanelDraft> panelDrafts = baseMapper.selectBatchIds(panels.stream()
.map(InstrumentPanel::getId)
.collect(Collectors.toList()));
Set<String> idSets= CollectionUtils.isNotEmpty(panelDrafts)?panelDrafts.stream().map(BaseEntity::getId).collect(Collectors.toSet()): Sets.newHashSet();
drafts.forEach(x->{
if(idSets.contains(x.getId())){
baseMapper.updateById(x);
}else{
baseMapper.insert(x);
}
});
}
}
}
......@@ -2,12 +2,15 @@ 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.gson.reflect.TypeToken;
import com.syc.slm.common.core.constant.SlmConstants;
import com.syc.slm.slmbi.dao.InstrumentPanelPermissionMapper;
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.enums.AccessType;
import com.syc.slm.slmbi.enums.PublishedStatus;
import com.syc.slm.slmbi.service.InstrumentPanelPermissionService;
import com.syc.slm.slmbi.vo.CustomPermissionVo;
......@@ -17,6 +20,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
/**
* slm-bi
......@@ -54,10 +58,13 @@ public class InstrumentPanelPermissionImpl
}
@Override
public void delPermissionByPanelId(@NonNull String panelId) {
public void delPermissionByPanelId(@NonNull String panelId,Integer publishStatus) {
LambdaQueryWrapper<InstrumentPanelPermission> where = new LambdaQueryWrapper<>();
where.eq(InstrumentPanelPermission::getPanelId, panelId);
where.eq(InstrumentPanelPermission::getRecordStatus, SlmConstants.DATA_VALID);
if(publishStatus!=null){
where.eq(InstrumentPanelPermission::getPublished, publishStatus);
}
List<InstrumentPanelPermission> permissions = baseMapper.selectList(where);
if (CollectionUtils.isNotEmpty(permissions)) {
permissions.forEach(x -> {
......@@ -69,15 +76,61 @@ public class InstrumentPanelPermissionImpl
@Override
@Transactional(readOnly = true)
public List<CustomPermissionVo> getPublishPermissionByPanelId(@NonNull String panelId) {
public List<CustomPermissionVo> getPublishPermissionByPanelId(@NonNull String panelId,@NonNull Integer publishStatus) {
LambdaQueryWrapper<InstrumentPanelPermission> where = new LambdaQueryWrapper<>();
where.eq(InstrumentPanelPermission::getPanelId, panelId);
where.eq(InstrumentPanelPermission::getRecordStatus, SlmConstants.DATA_VALID);
where.eq(InstrumentPanelPermission::getPublished, PublishedStatus.PUBLISHED);
where.eq(InstrumentPanelPermission::getPublished, publishStatus);
List<InstrumentPanelPermission> permissions = baseMapper.selectList(where);
return CollectionUtils.isNotEmpty(permissions) ?
SlmConstants.gson.fromJson(SlmConstants.gson.toJson(permissions),
new TypeToken<List<CustomPermissionVo>>() {
}.getType()) : null;
}
@Override
public void savePanelPermission(List<CustomPermissionDTO> customPermissions,String panelId,String accessType,Integer publishStatus) {
if(CollectionUtils.isNotEmpty(customPermissions)){
if (AccessType.CUSTOM.value.equals(accessType)) {
if (CollectionUtils.isNotEmpty(customPermissions)) {
customPermissions.forEach(x -> {
InstrumentPanelPermission p = new InstrumentPanelPermission();
p.setId(IdWorker.get32UUID());
p.setBizId(x.getBizId());
p.setBizName(x.getBizName());
p.setBizType(x.getType());
p.setPanelId(panelId);
p.setPublished(publishStatus);
baseMapper.insert(p);
});
}
}
}
}
@Override
public void publishPermissionByPanelIds(List<String> ids) {
LambdaQueryWrapper<InstrumentPanelPermission> where = new LambdaQueryWrapper<>();
where.in(InstrumentPanelPermission::getPanelId, ids);
where.eq(InstrumentPanelPermission::getRecordStatus, SlmConstants.DATA_VALID);
List<InstrumentPanelPermission> permissions = baseMapper.selectList(where);
if(CollectionUtils.isNotEmpty(permissions)){
List<InstrumentPanelPermission> waitPublishPermission =
permissions.stream().filter(x -> PublishedStatus.WAIT_PUBLISHED.value.equals(x.getPublished())).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(waitPublishPermission)){
waitPublishPermission.forEach(x->{
x.setPublished(PublishedStatus.PUBLISHED.value);
baseMapper.updateById(x);
});
}
List<InstrumentPanelPermission> publishPermission =
permissions.stream().filter(x -> PublishedStatus.PUBLISHED.value.equals(x.getPublished())).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(publishPermission)){
publishPermission.forEach(x->{
x.setRecordStatus(SlmConstants.DATA_DELETED);
baseMapper.updateById(x);
});
}
}
}
}
......@@ -13,8 +13,7 @@ import com.syc.slm.slmbi.dao.InstrumentPanelMapper;
import com.syc.slm.slmbi.dto.QueryInstrumentPanelDTO;
import com.syc.slm.slmbi.dto.SaveInstrumentPanelDTO;
import com.syc.slm.slmbi.entity.InstrumentPanel;
import com.syc.slm.slmbi.entity.InstrumentPanelConfig;
import com.syc.slm.slmbi.entity.InstrumentPanelPermission;
import com.syc.slm.slmbi.entity.InstrumentPanelDraft;
import com.syc.slm.slmbi.entity.InstrumentPanelTree;
import com.syc.slm.slmbi.enums.AccessType;
import com.syc.slm.slmbi.enums.NodeType;
......@@ -23,6 +22,7 @@ import com.syc.slm.slmbi.exception.SysException;
import com.syc.slm.slmbi.service.*;
import com.syc.slm.slmbi.vo.InstrumentPanelConfigVo;
import com.syc.slm.slmbi.vo.InstrumentPanelVo;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -103,7 +103,14 @@ public class InstrumentPanelServiceImpl extends ServiceImpl<InstrumentPanelMappe
x.setPublished(PublishedStatus.PUBLISHED.value);
baseMapper.updateById(x);
});
log.info("修改配置状态为发布状态");
configService.publishConfigByPanelIds(ids);
log.info("修改权限状态为发布状态");
permissionService.publishPermissionByPanelIds(ids);
log.info("复制一份草稿");
draftService.saveDrafts(panels);
}
}
@Override
......@@ -121,6 +128,11 @@ public class InstrumentPanelServiceImpl extends ServiceImpl<InstrumentPanelMappe
log.info("删除该仪表板下的配置");
delAllSetting(id);
log.info("删除仪表板草稿表");
InstrumentPanelDraft draft = new InstrumentPanelDraft();
draft.setRecordStatus(SlmConstants.DATA_DELETED);
draft.setId(id);
draftService.updateById(draft);
return id;
}
......@@ -134,10 +146,11 @@ public class InstrumentPanelServiceImpl extends ServiceImpl<InstrumentPanelMappe
@Override
@Transactional(readOnly = true)
public Boolean showRecoveryBtn(String id) {
return draftService.getById(id)!=null;
return draftService.getById(id) != null;
}
@Override
@Transactional(readOnly = true)
public InstrumentPanelConfigVo recoveryPanel(String id) {
return configService.getPublishConfigByPanelId(id);
}
......@@ -156,7 +169,13 @@ public class InstrumentPanelServiceImpl extends ServiceImpl<InstrumentPanelMappe
throw new SysException("该数据已被删除,请刷新页面");
}
panel.setPublished(PublishedStatus.OFFLINE.value);
// panel.setRecordStatus(SlmConstants.DATA_DELETED);
baseMapper.updateById(panel);
// log.info("删除配置");
// log.info("删除权限");
// log.info("删除草稿");
// log.info("删除仪表板树");
// delAllSetting(id);
return id;
}
......@@ -167,6 +186,20 @@ public class InstrumentPanelServiceImpl extends ServiceImpl<InstrumentPanelMappe
}
}
@Override
public void checkName(@NonNull String appId, String panelId, @NonNull String panelName) {
LambdaQueryWrapper<InstrumentPanel> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(InstrumentPanel::getName, panelName);
wrapper.eq(InstrumentPanel::getAppId, appId);
wrapper.eq(InstrumentPanel::getRecordStatus, SlmConstants.DATA_VALID);
if (StringUtils.isNotEmpty(panelId)) {
wrapper.eq(InstrumentPanel::getId, panelId);
}
if (baseMapper.selectCount(wrapper) > 0) {
throw new SysException("仪表板名字:" + panelName + "已存在!");
}
}
private String savePanelData(String appId, SaveInstrumentPanelDTO panel) {
if (StringUtils.isEmpty(panel.getName())) {
throw new SysException("仪表板名字必填");
......@@ -175,12 +208,7 @@ public class InstrumentPanelServiceImpl extends ServiceImpl<InstrumentPanelMappe
throw new SysException("仪表板分组必填");
}
log.info("检查仪表板名称是否重复");
LambdaQueryWrapper<InstrumentPanel> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(InstrumentPanel::getName, panel.getName());
wrapper.eq(InstrumentPanel::getAppId, appId);
if (baseMapper.selectCount(wrapper) > 0) {
throw new SysException("仪表板名字:" + panel.getName() + "已存在!");
}
this.checkName(appId, null, panel.getName());
log.info("保存仪表板访问权限");
String panelId = IdWorker.get32UUID();
......@@ -188,19 +216,11 @@ public class InstrumentPanelServiceImpl extends ServiceImpl<InstrumentPanelMappe
if (ObjectUtils.isNotEmpty(panel.getPermission()) && StringUtils.isNotEmpty(panel.getPermission()
.getAccessType())) {
accessType = panel.getPermission().getAccessType();
if (AccessType.CUSTOM.value.equals(panel.getPermission().getAccessType())) {
if (CollectionUtils.isNotEmpty(panel.getPermission().getCustomPermissions())) {
panel.getPermission().getCustomPermissions().forEach(x -> {
InstrumentPanelPermission permission = new InstrumentPanelPermission();
permission.setId(IdWorker.get32UUID());
permission.setBizId(x.getBizId());
permission.setBizName(x.getBizName());
permission.setBizType(x.getType());
permission.setPanelId(panelId);
permission.setPublished(1);
});
}
}
permissionService.savePanelPermission(panel.getPermission().getCustomPermissions(),
panelId,
panel.getPermission().getAccessType(),
PublishedStatus.WAIT_PUBLISHED.value);
}
InstrumentPanel instrumentPanel = new InstrumentPanel(panelId,
......@@ -211,12 +231,7 @@ public class InstrumentPanelServiceImpl extends ServiceImpl<InstrumentPanelMappe
log.info("保存仪表板配置");
if (StringUtils.isNotEmpty(panel.getConfigDetails())) {
InstrumentPanelConfig config = new InstrumentPanelConfig();
config.setId(IdWorker.get32UUID());
config.setConfigDetails(panel.getConfigDetails());
config.setPanelId(panelId);
config.setPublished(1);
configService.save(config);
configService.savePanelConfig(panelId, panel.getConfigDetails(), PublishedStatus.WAIT_PUBLISHED.value);
}
log.info("初始化仪表板树");
......@@ -225,18 +240,10 @@ public class InstrumentPanelServiceImpl extends ServiceImpl<InstrumentPanelMappe
instrumentPanel.getId(),
instrumentPanel.getName());
log.info("保存仪表板组件树");
if (CollectionUtils.isNotEmpty(panel.getAssemblys())) {
InstrumentPanelTree tree = treeService.getById(instrumentPanel.getId());
for (int i = 0; i < panel.getAssemblys().size(); i++) {
InstrumentPanelTree t = new InstrumentPanelTree();
t.setId(tree.getId() + "_" + i);
t.setNodeType(NodeType.ASSEMBLY.value);
t.setFullId(tree.getFullId() + "." + t.getId());
t.setFullName(tree.getFullName() + "." + panel.getAssemblys().get(i).getName());
t.setAssemblyKey(panel.getAssemblys().get(i).getKey());
treeService.save(t);
}
log.info("保存仪表板组件树");
treeService.savePanelAssemblyTree(tree, panel.getAssemblys(), instrumentPanel.getId());
} else {
log.info("前端没有构建组件树");
}
......@@ -247,10 +254,10 @@ public class InstrumentPanelServiceImpl extends ServiceImpl<InstrumentPanelMappe
private void delAllSetting(String id) {
log.info("删除仪表板对应权限");
permissionService.delPermissionByPanelId(id);
permissionService.delPermissionByPanelId(id, null);
log.info("删除仪表板对应配置");
configService.delConfig(id);
configService.delConfig(id, null);
log.info("删除仪表板树");
treeService.delTreeByPanelId(id);
......
......@@ -5,9 +5,13 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.syc.slm.common.core.constant.SlmConstants;
import com.syc.slm.slmbi.dao.InstrumentPanelTreeMapper;
import com.syc.slm.slmbi.dto.InstrumentPanelAssemblyDTO;
import com.syc.slm.slmbi.entity.BaseEntity;
import com.syc.slm.slmbi.entity.InstrumentPanel;
import com.syc.slm.slmbi.entity.InstrumentPanelTree;
import com.syc.slm.slmbi.enums.NodeType;
import com.syc.slm.slmbi.service.InstrumentPanelTreeService;
import lombok.NonNull;
import org.springframework.stereotype.Service;
import java.util.List;
......@@ -58,4 +62,42 @@ public class InstrumentPanelTreeServiceImpl extends ServiceImpl<InstrumentPanelT
});
}
}
@Override
public void savePanelAssemblyTree(InstrumentPanelTree tree,List<InstrumentPanelAssemblyDTO> assembly,String panelId) {
if(CollectionUtils.isNotEmpty(assembly)){
for (int i = 0; i < assembly.size(); i++) {
InstrumentPanelTree t = new InstrumentPanelTree();
t.setId(tree.getId() + "_" + i);
t.setNodeType(NodeType.ASSEMBLY.value);
t.setFullId(tree.getFullId() + "." + t.getId());
t.setFullName(tree.getFullName() + "." + assembly.get(i).getName());
t.setAssemblyKey(assembly.get(i).getKey());
baseMapper.insert(t);
}
}
}
@Override
public void delTreeByPanelFullId(String fullId) {
LambdaQueryWrapper<InstrumentPanelTree> where = new LambdaQueryWrapper<>();
where.eq(BaseEntity::getRecordStatus, SlmConstants.DATA_VALID);
where.likeRight(InstrumentPanelTree::getFullId, fullId + ".");
List<InstrumentPanelTree> trees = baseMapper.selectList(where);
if(CollectionUtils.isNotEmpty(trees)){
trees.forEach(x->{
x.setRecordStatus(SlmConstants.DATA_DELETED);
baseMapper.updateById(x);
});
}
}
@Override
public void updatePanelTreeFullName(String panelId,String panelName,String groupId) {
InstrumentPanelTree groupTree = baseMapper.selectById(groupId);
InstrumentPanelTree tree = baseMapper.selectById(panelId);
tree.setFullName(groupTree.getFullName() + "." + panelName);
tree.setFullId(groupTree.getFullId() + "." + panelId);
baseMapper.updateById(tree);
}
}
......@@ -22,5 +22,7 @@ import java.util.Map;
public class InstrumentPanelConfigVo extends InstrumentPanelConfig {
@ApiModelProperty(value = "自定义权限类型", required = true)
List<CustomPermissionVo> permissions;
private List<CustomPermissionVo> permissions;
@ApiModelProperty(value = "仪表板信息", required = true)
private InstrumentPanelVo panel;
}
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