【Oracle APEX开发小技巧12】

有如下需求:

有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。

我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示

完整代码:

sql 复制代码
SELECT
    SF.FEEDBACK_ID,
    SF.FEEDBACK_CONTENT,
    SF.FILE_ID,
    FO.FILE_NAME || '(ID:' || SF.FILE_ID || ')' ||
    CASE
        WHEN FO.DEL_FLAG = 1 THEN '(文件已删除)'
        ELSE ''
    END AS FOLDER_DISPLAY,
    SF.USER_ID,--反馈人(原存储MPF_USER_ID,后被告知只能获取钉钉ID,已弃用)
    SF.DING_USER_ID,--反馈人(获取钉钉ID)--BY:wxx 2025-04-29
    SF.STATUS,
    SF.FEEDBACK_TYPE,
    -- 根据反馈时间和状态判断是否标红
    CASE
        WHEN SF.FEEDBACK_DATE < SYSDATE - 7 AND SF.STATUS = 0 THEN
            '<span style="color:red;">' || TO_CHAR(SF.FEEDBACK_DATE, 'YYYY-MM-DD HH24:MI:SS') || '</span>'
        ELSE
            TO_CHAR(SF.FEEDBACK_DATE, 'YYYY-MM-DD HH24:MI:SS')
    END AS FEEDBACK_DATE,
    NVL(TO_CHAR(SF.PROCESS_DATE, 'YYYY-MM-DD HH24:MI:SS'), '-') AS PROCESS_DATE,
    NVL(TO_CHAR(SF.PROCESS_USER_ID), '-') AS PROCESS_USER_ID,
    -- 根据处理日期显示操作提示
    CASE
        WHEN SF.PROCESS_DATE IS NULL THEN '处理'
        ELSE '查看处理意见'
    END AS OPERATION
FROM
    STS_FEEDBACK SF
    LEFT JOIN STS_FILE FO ON SF.FILE_ID = FO.FILE_ID
    LEFT JOIN BASIC_USER  DU ON DU.USER_ID = SF.DING_USER_ID
WHERE
    SF.DEL_FLAG = 0
    AND SF.TENANT_ID = :USER_TENANT
    -- 文件可以删除,但是反馈保留
    AND FO.TENANT_ID = :USER_TENANT
    AND (SF.STATUS = TO_NUMBER(NVL(:P201_STATUS, 99)) OR TO_NUMBER(NVL(:P201_STATUS, 99)) = 99);

关键逻辑

sql 复制代码
CASE
    WHEN SF.FEEDBACK_DATE < SYSDATE - 7 AND SF.STATUS = 0 THEN
        '<span style="color:red;">' || TO_CHAR(SF.FEEDBACK_DATE, 'YYYY-MM-DD HH24:MI:SS') || '</span>'
    ELSE
        TO_CHAR(SF.FEEDBACK_DATE, 'YYYY-MM-DD HH24:MI:SS')
END AS FEEDBACK_DATE

光有sql还不行,要在对应的列FEEDBACK_DATE设置对应格式,FEEDBACK_DATE→列→类型【HTML表达式】→设置 HTML表达式【<span >&FEEDBACK_DATE.</span>】

关键逻辑:

  1. 当反馈时间超过7天(SYSDATE - 7)且状态为0(未处理)时,反馈时间会显示为红色
  2. 其他情况下正常显示

相关字段关联

  1. 处理时间:PROCESS_DATE字段显示处理时间,未处理时显示'-'

  2. 处理人:PROCESS_USER_ID字段显示处理人ID,未处理时显示'-'

  3. 操作提示:根据PROCESS_DATE是否为空显示"处理"或"查看处理意见"

效果展示:

相关推荐
大江东去浪淘尽千古风流人物1 天前
【Basalt】nfr_mapper 中的“小 SfM/BA 后端”
c++·人工智能·计算机视觉·oracle·augmented reality
紫青宝剑1 天前
向量数据库 Milvus
数据库·milvus
雪碧聊技术1 天前
数据库系统基础知识
数据库
Elastic 中国社区官方博客1 天前
如何使用 LogsDB 降低 Elasticsearch 日志存储成本
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索·可用性测试
Dreamboat-L1 天前
HBase远程访问配置(详细教程)
大数据·数据库·hbase
刘~浪地球1 天前
数据库与缓存--Redis 集群架构与优化
数据库·redis·缓存
羊小蜜.1 天前
Mysql 11: 存储过程全解——从创建到使用
android·数据库·mysql·存储过程
A__tao1 天前
一键实现 SQL 转 Elasticsearch Mapping(支持字段注释 + meta 描述)
数据库·sql·elasticsearch
努力努力再努力wz1 天前
【C++高阶系列】外存查找的极致艺术:数据库偏爱的B+树底层架构剖析与C++完整实现!(附B+树实现的源码)
linux·运维·服务器·数据结构·数据库·c++·b树
知识分享小能手1 天前
MongoDB入门学习教程,从入门到精通,MongoDB 持久性完全指南(20)
数据库·学习·mongodb