fix:仪表板跳转配置时,删除仪表板ID还在配置选项的问题

This commit is contained in:
wangjiahao 2021-11-01 11:10:18 +08:00
parent e7e6503577
commit 02f4d5bba0
5 changed files with 68 additions and 1 deletions

View File

@ -20,4 +20,7 @@ public interface ExtPanelGroupMapper {
PanelGroupDTO panelGroup(String id);
void copyPanelView(@Param("pid") String panelId);
}

View File

@ -167,4 +167,15 @@
delete from panel_group where FIND_IN_SET(panel_group.id,GET_PANEL_GROUP_WITH_CHILDREN(#{pid})) or FIND_IN_SET(panel_group.source,GET_PANEL_GROUP_WITH_CHILDREN(#{pid}))
</delete>
<insert id="copyPanelView">
INSERT INTO panel_view ( id, panel_id, chart_view_id ) SELECT
uuid(),
#{panelId},
chart_view_id
FROM
panel_view
WHERE
panel_id = #{panelId}
</insert>
</mapper>

View File

@ -17,6 +17,11 @@ public interface ExtPanelLinkJumpMapper {
void deleteJump(@Param("panelId") String panelId,@Param("viewId") String viewId);
void deleteJumpTargetViewInfoWithPanel(@Param("panelId") String panelId);
void deleteJumpInfoWithPanel(@Param("panelId") String panelId);
void deleteJumpWithPanel(@Param("panelId") String panelId);
List<PanelLinkJumpDTO> getTargetPanelJumpInfo(@Param("request")PanelLinkJumpBaseRequest request);
}

View File

@ -114,6 +114,38 @@
AND lj.source_view_id = #{viewId}
</delete>
<delete id="deleteJumpTargetViewInfoWithPanel" >
DELETE ljtv
FROM
panel_link_jump_target_view_info ljtv,
panel_link_jump_info lji,
panel_link_jump lj
WHERE
ljtv.link_jump_info_id = lji.id
AND lji.link_jump_id = lj.id
AND (lj.source_panel_id = #{panelId} or lji.target_panel_id = #{panelId})
</delete>
<delete id="deleteJumpInfoWithPanel" >
DELETE lji
FROM
panel_link_jump_info lji,
panel_link_jump lj
WHERE
lji.link_jump_id = lj.id
AND (lj.source_panel_id = #{panelId} or lji.target_panel_id = #{panelId})
</delete>
<delete id="deleteJumpWithPanel" >
DELETE lj
FROM
panel_link_jump lj
WHERE
lj.source_panel_id = #{panelId}
</delete>
<select id="getTargetPanelJumpInfo" resultMap="AllJumpMap">
SELECT DISTINCT
concat( lj.source_view_id, '#', lji.source_field_id ) AS 'sourceInfo',

View File

@ -4,6 +4,7 @@ import io.dataease.base.domain.*;
import io.dataease.base.mapper.ChartViewMapper;
import io.dataease.base.mapper.PanelGroupMapper;
import io.dataease.base.mapper.ext.ExtPanelGroupMapper;
import io.dataease.base.mapper.ext.ExtPanelLinkJumpMapper;
import io.dataease.commons.constants.PanelConstants;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.commons.utils.TreeUtils;
@ -55,6 +56,8 @@ public class PanelGroupService {
private SysAuthService sysAuthService;
@Resource
private PanelViewService panelViewService;
@Resource
private ExtPanelLinkJumpMapper extPanelLinkJumpMapper;
public List<PanelGroupDTO> tree(PanelGroupRequest panelGroupRequest) {
@ -116,7 +119,14 @@ public class PanelGroupService {
newPanel.setId(panelId);
newPanel.setCreateBy(AuthUtils.getUser().getUsername());
panelGroupMapper.insertSelective(newPanel);
} else if ("move".equals(request.getOptType())) {
try{
panelViewService.syncPanelViews(newPanel);
}catch (Exception e){
e.printStackTrace();
LOGGER.error("更新panelView出错panelId{}" ,request.getId());
} }
else if ("move".equals(request.getOptType())) {
PanelGroupWithBLOBs panelInfo = panelGroupMapper.selectByPrimaryKey(request.getId());
if(panelInfo.getPid().equalsIgnoreCase(request.getPid())){
DataEaseException.throwException(Translator.get("i18n_select_diff_folder"));
@ -139,6 +149,7 @@ public class PanelGroupService {
panelGroupMapper.updateByPrimaryKeySelective(request);
}
//带有权限的返回
PanelGroupRequest authRequest = new PanelGroupRequest();
authRequest.setId(panelId);
@ -175,6 +186,11 @@ public class PanelGroupService {
storeService.removeByPanelId(id);
shareService.delete(id, null);
panelLinkService.deleteByResourceId(id);
//清理跳转信息
extPanelLinkJumpMapper.deleteJumpTargetViewInfoWithPanel(id);
extPanelLinkJumpMapper.deleteJumpInfoWithPanel(id);
extPanelLinkJumpMapper.deleteJumpWithPanel(id);
}