【开发问题解决方法记录】04.dian 权限表单优化

 权限表单优化方向:

父级权限从晶点权限表获取做成列表下拉选中

权限名称和编码一行两列

页面id从

select *
from APEX_APPLICATION_PAGES where APPLICATION_ID=304;

中获取

【遇到的问题1】

DG可以获取到页面信息,但是表和应用程序无法获取到

【问题原因】走了弯路,直接去查对应数据表就好了,不用专门建表再查询
【问题解决】直接在值列表使用SQL查询:

select PAGE_NAME , PAGE_ID
from APEX_APPLICATION_PAGES where APPLICATION_ID=:APP_ID;

【遇到问题2】

在权限编码框中写入自动编码的代码,但是点击自动生成无效

先后执行顺序:若是用户未手动输入,点击新增按钮,先自动生成CODE再执行新增操作。

报错:

Access to undefined Per Request (Memory Only) variable P33_PERMISSION_ID

访问未定义的每个请求 (仅内存) 变量P33_PERMISSION_ID

【问题原因】

说明不能笼统卸载一起,因为P33_PERMISSION_ID在自动生成CODE的代码中是作为判断的的输入项,而在新增执行代码中是自增的,在按下“新增”按钮前都无法获取,所以会报错

【解决方法】

将自动生成CODE的代码和新增代码分开并校验

【代码】

自动生成权限CODE并校验

declare
    v_err_msg        nvarchar2(2000);--错误提示
    v_permission_code nvarchar2(32);  --权限编码
    row_count        number(20) := 1;
    v_count          number(20) := 0;
begin
  /**
     * CREATE BY: xiaoxiao
     * CREATE DATE: 2023-12-05 18:54
     * MODIFY BY:
     * MODIFY DATE:
     * DESCRIBE:自动生成权限CODE并校验
     */
    if :P33_PERMISSION_CODE is null then
        select 'JD-' || to_char(sysdate, 'yymmddhh24misssss') into v_permission_code from dual;
    else
        v_permission_code := :P33_PERMISSION_CODE;
    end if;
    if :P33_PERMISSION_ID is null then   --新增
        select count(1) --查询是否有重名情况
        into v_count
        from BASIC_SYSTEM_PERMISSION
        where PERMISSION_NAME = :P33_PERMISSION_NAME
          and TENANT_ID = :USER_TENANT
          and DEL_FLAG = 0;
        if v_count = 0 then --没有重名情况
            select count(1)--查询CODE是否有重复
            into v_count
            from BASIC_SYSTEM_PERMISSION
            where TENANT_ID = :USER_TENANT
              and PERMISSION_CODE = :P33_PERMISSION_CODE
              and DEL_FLAG = 0;
            if v_count > 0 then  --CODE重复
                row_count := -1;
                apex_util.set_session_state('P33_MESSAGE', '权限CODE重复');
            end if;
        else  --重名
            row_count := -1;
            apex_util.set_session_state('P33_MESSAGE', '权限名称重复');
        end if;
    else  --修改
        select count(1)
        into v_count
        from BASIC_SYSTEM_PERMISSION
        where TENANT_ID = :USER_TENANT
          and DEL_FLAG = 0
          and PERMISSION_ID != :P33_PERMISSION_ID;
        if v_count = 0 then
            select count(1)
            into v_count
            from BASIC_SYSTEM_PERMISSION
            where TENANT_ID = :USER_TENANT
              and permission_code = :P33_PERMISSION_CODE
              and DEL_FLAG = 0
              and PERMISSION_ID != :P33_PERMISSION_ID;
            if v_count > 0 then
                row_count := -1;
                apex_util.set_session_state('P33_MESSAGE', '权限CODE重复');
            end if;
        else
            row_count := -1;
            apex_util.set_session_state('P33_MESSAGE', '权限名称重复');
        end if;
    end if;

    apex_util.set_session_state('P33_ROW_COUNT', row_count);
exception
    when others then
        apex_util.set_session_state('P33_ROW_COUNT', 0);
        apex_util.set_session_state('P33_MESSAGE', '数据异常,请联系管理员');
        v_err_msg := sqlerrm || chr(13) || dbms_utility.format_error_backtrace;
        JA_WRITE_LOG('P' || :APP_PAGE_ID || ':' || :APP_PAGE_ALIAS, 'error', v_err_msg, :USER_ID, :USERTENANT,
                     :APP_NAME || ':' || :APP_ID);
end;

执行新增

-- 新增权限
declare
    v_err_msg        nvarchar2(2000);
    v_permission_code nvarchar2(32);
    v_permission_id        number(20) ;
    row_count        number(20) := 0;
     /**
     * create by: xiaoxian
     * create date:2023/12/6 10:09
     * modify by:
     * modify date:
     * describe:权限新增
     */
begin
    if :P33_PERMISSION_CODE is null then  --用户未手动输入,自动生成CODE
        select 'JD-' || to_char(sysdate, 'yymmddhh24misssss') into v_permission_code from dual;
    else  --用户手动输入CODE
        v_permission_code := :P33_PERMISSION_CODE;  --自动生成的CODE赋值
    end if;
    -- insert or update
    if :P33_permission_id is null then  --新增
        insert into BASIC_SYSTEM_PERMISSION(
       PARENT_PERMISSION_ID,
       PERMISSION_CODE,
       PERMISSION_NAME,
       PERMISSION_TYPE,
       PERMISSION_URL,
       PERMISSION_LEVEL,
       PAGE_ID,
       SORT,
       REMARK,
       IS_ENABLE,
       DEL_FLAG,
       TENANT_ID,
       CREATED_BY,
       CREATION_DATE )
        values (:P33_PARENT_PERMISSION_ID, v_permission_code,:P33_PERMISSION_NAME, 'MENU',
                :P33_PERMISSION_URL,:P33_PERMISSION_LEVEL,:P33_PAGE_ID,:P33_SORT,:P33_REMARK,
                1,0,:USER_TENANT,:USER_ID,sysdate)
        returning permission_id into v_permission_id;
        row_count := SQL%ROWCOUNT;
        -- apex_util.set_session_state('P33_permission_id', v_permission_id);
    else   --修改
        update BASIC_SYSTEM_PERMISSION
        set UPDATED_BY=:USER_ID,
            UPDATE_DATE=sysdate,
            PARENT_PERMISSION_ID =:P33_PARENT_PERMISSION_ID,
            permission_code = v_permission_code,
            PERMISSION_NAME = :P33_PERMISSION_NAME,
            PERMISSION_URL = :P33_PERMISSION_URL,
            PERMISSION_LEVEL = :P33_PERMISSION_LEVEL,
            PAGE_ID = :P33_PAGE_ID,
            SORT = :P33_SORT,
            REMARK = :P33_REMARK
        where PERMISSION_ID = :P33_PERMISSION_ID;
        row_count := SQL%ROWCOUNT;
        v_permission_id :=:p33_PERMISSION_ID;
    end if;

    apex_util.set_session_state('P33_ROW_COUNT', row_count);
    apex_util.set_session_state('P33_PERMISSION_ID', v_permission_id);
    apex_util.set_session_state('P33_PERMISSION_CODE', v_permission_code);

exception
    when others then
        apex_util.set_session_state('P33_ROW_COUNT', 0);
        v_err_msg := sqlerrm || chr(13) || dbms_utility.format_error_backtrace;
       JA_WRITE_LOG('P' || :APP_PAGE_ID || '-系统设置-权限管理-新增', 'ERROR', V_ERR_MSG, :USER_ID, :USER_TENANT,
                     :APP_NAME || ':' || :APP_ID);
end;

效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/222338.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习-逻辑回归

一、引言 逻辑回归(Logistic Regression)是一种广泛应用于分类问题的监督学习算法。尽管名字中含有“回归”二字,但这并不意味着它用于解决回归问题。相反,逻辑回归专注于解决二元或多元分类问题,如邮件是垃圾邮件还是…

TSMaster添加注释

当我们在回放报文的时候,会遇到一些需要添加注释,有以下几种办法进行注释 报文运行时手动注释 在图形窗口回放报文,正在抓取报文或者进行报文回放。工具栏选择添加实时注释,这种办法需要手速快,而且时间对的不是很准…

App内存优化

一、内存优化介绍 1.背景介绍 内存是大问题但缺乏关注压实骆驼的最后一个稻草(堆栈溢出) 2.内存问题 内存抖动:锯齿状、GC导致卡顿内存泄露:可用内存减少、频繁GC内存溢出:OOM,程序异常 二、优化工具选…

jvs智能bi新增:数据集添加sql自定义节点、添加websocket任务进度动态展示等等

智能bi更新功能 新增: 1.数据集添加sql自定义输入节点,支持mysql Oracle数据源; 用户可以从这些数据源中获取数据,并通过SQL语句对数据进行自定义处理和分析。可以帮助用户更加灵活地处理和分析数据,满足各种个性化的需求。 2.…

识别低效io引起的free buffer waits

产生事发时间段的awr报告 Top 5 wait events 这里重点关注: 1.free buffer waits 2.enq_HW-contention 3.enq:tx-row lock contention enq:HW-contention属于水位线的争用,已经透过alter table allocate extent,提前分配空间,这里不做讨论 …

spring boot+sharding jdbc实现读写分离

shigen日更文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 在shigen之前的文章中,写到了Springboot mybatis plus实现读写分离,没有sharding-jdbc的…

怎么修改按SHIFT键关闭Caps Lock功能?

win11 Step 1> 设置-> 时间和语言Step 2> 输入Step 3> 高级键盘设置Step 4> 语言栏选项 -> 高级设置-> 按CAPS LOCK键 Step 1> 设置-> 时间和语言 Step 2> 输入 Step 3> 高级键盘设置 Step 4> 语言栏选项 -> 高级设置-> 按CAPS LOCK…

同调群的维度 和 同调群的秩

同调群的维度是指同调群中非零元素的最小阶数。与线性代数中对向量空间的维度的理解类似。对同调群,k维同调群的维度是k。 同调群的秩是指同调群中的自由部分的维度。同调群通常包含自由部分和挠部分。同调群的秩是指同调群中自由部分的维度。对同调群,…

python+django教师下乡支教岗位分配管理系统pycharm毕业设计项目推荐

本课题使用Python语言进行开发。代码层面的操作主要在PyCharm中进行,将系统所使用到的表以及数据存储到MySQL数据库中,方便对数据进行操作本课题基于WEB的开发平台 1.运行环境:python3.7/python3.8。 2.IDE环境:pycharmmysql5.7; …

多线程(初阶八:计时器Timer)

目录 一、标准库中的计时器 1、计时器的概念 2、计时器的简单介绍 二、模拟实现一个计时器 1、思路 (1)计数器中要存放任务的数据结构 (2)存放优先级队列中的类型:自定义任务类MyTimerTask (3&…

用python找到音乐数据的位置,并实现音乐下载

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 需求分析: 有什么需求要实现? 这些需求可以用什么技术实现? 找到音乐数据的位置, 分析 不同音乐的链接有何规律?https://lx-sycdn.kuwo.cn/b784688662c82db8…

RocketMq环境搭建

目录 MQ作用 RocketMQ背景 MQ对比 RocketMQ环境搭建 搭建dashboard可视化界面 MQ作用 异步解耦削峰 RocketMQ背景 ​ RocketMQ是阿里巴巴开源的一个消息中间件,在阿里内部历经了双十一等很多高并发场景的考验,能够处理亿万级别的消息。2016年开源…

Win10无法删除文件需要管理员权限的解决方法

在Win10电脑中,用户想要删除不需要的文件,却收到了需要管理员权限才能删除,导致用户自己无法将文件删除掉。下面小编给大家带来Win10系统删除文件需要权限的解决方法,解决后用户在Win10电脑上就能删除任意文件了。 Win10无法删除文…

TCP协议实现一对一聊天

服务端代码: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner;/*** 发送消息线程*/ class Send e…

香港优才计划申请获批后,才发现原来香港年薪100w并不难!

香港优才计划申请获批后,才发现原来香港年薪100w并不难! 在香港工作的话,给我个人的感觉就是工作和生活是分开的,无论是同事还是上司。比如员工在休假的时候从来不会突然来个电话让你忙个工作或者加个班,也不会八卦你的…

Python 日志(略讲)

日志操作 日志输出: # 输出日志信息 logging.debug("调试级别日志") logging.info("信息级别日志") logging.warning("警告级别日志") logging.error("错误级别日志") logging.critical("严重级别日志")级别设置…

MySQL授权密码

mysql> crate databases school charcter set utf8; Query OK, 1 row affected, 1 warning (0.00 sec) 2.在school数据库中创建Student和Score表 mysql> use school Database changed mysql> create table student-> -> (id int(10) primary key auto_incremen…

springcloud智慧工地管理平台源码(工程全生命周期管理)

智慧工地采用全新的工程全生命周期管理理念,以物联网技术为核心,利用传感网络、远程视频监控、物联网、云计算等新型技术,依托移动和固定宽带网络,围绕施工过程管理,建造互联协同、智能生产、科学管理的信息化生态圈&a…

使用Java API操作HDFS

文章目录 一、了解HDFS Java API(一)HDFS Java API概述1、配置(Configuration)2、文件系统(FileSystem)3、路径(Path)4、输入输出流(FSDataInputStream 和 FSDataOutputS…

智能优化算法应用:基于黑寡妇算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于黑寡妇算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于黑寡妇算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黑寡妇算法4.实验参数设定5.算法结果6.参考文献7.…