Commit 95fd45c3 authored by linruibiao's avatar linruibiao

接口编写

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