当前位置: 首页 > backend >正文

【Oracle APEX开发小技巧12】

有如下需求:

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

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

SELECTSF.FEEDBACK_ID,SF.FEEDBACK_CONTENT,SF.FILE_ID,FO.FILE_NAME || '(ID:' || SF.FILE_ID || ')' ||CASEWHEN 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-29SF.STATUS,SF.FEEDBACK_TYPE,-- 根据反馈时间和状态判断是否标红CASEWHEN 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>'ELSETO_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,-- 根据处理日期显示操作提示CASEWHEN SF.PROCESS_DATE IS NULL THEN '处理'ELSE '查看处理意见'END AS OPERATION
FROMSTS_FEEDBACK SFLEFT JOIN STS_FILE FO ON SF.FILE_ID = FO.FILE_IDLEFT JOIN BASIC_USER  DU ON DU.USER_ID = SF.DING_USER_ID
WHERESF.DEL_FLAG = 0AND SF.TENANT_ID = :USER_TENANT-- 文件可以删除,但是反馈保留AND FO.TENANT_ID = :USER_TENANTAND (SF.STATUS = TO_NUMBER(NVL(:P201_STATUS, 99)) OR TO_NUMBER(NVL(:P201_STATUS, 99)) = 99);

关键逻辑

CASEWHEN 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>'ELSETO_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是否为空显示"处理"或"查看处理意见"

效果展示:

http://www.xdnf.cn/news/12382.html

相关文章:

  • 使用VuePress2.X构建个人知识博客,并且用个人域名部署到GitHub Pages中
  • 基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
  • CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
  • stylus - 新生代CSS预处理框架
  • vue-video-player视频保活成功确无法推送问题
  • 爆炸仿真的学习日志
  • 在MyBatis中设计SQL返回布尔值(Boolean)有几种常见方法
  • Web攻防-SQL注入二次攻击堆叠执行SQLMAPTamper编写指纹修改分析调试
  • 《基于Apache Flink的流处理》笔记
  • Python Einops库:深度学习中的张量操作革命
  • 体制内 AI写作:推荐材料星 AI文章修改润色
  • MySQL:忘记root密码
  • GPU 图形计算综述 (三):可编程管线 (Programmable Pipeline)
  • 【动手学MCP从0到1】2.3 MCP中的Resource和Resource Template服务构建步骤详解
  • 建筑设备一体化监控系统:提升能效与运维效率
  • MySQL 的 redo log 和 binlog 区别?
  • 为 ESP32 解锁跨平台存储识别能力:支持 FAT、NTFS、EXT4、APFS 的轻量级 BlockFS 组件
  • Java中的阻塞队列
  • [arthas]arthas安装使用
  • NVM!(可以快速替换你的node版本)
  • Mysql主从复制原理分析
  • 高性能分布式消息队列系统(三)
  • CVE-2020-17518源码分析与漏洞复现(Flink 路径遍历)
  • AtCoder 第408​场初级竞赛 A~E题解
  • 强化学习入门:Gym实现CartPole随机智能体
  • VBA信息获取与处理专题五第一节:利用CDO发送简单邮件
  • AirSim/Cosys-AirSim 游戏开发(二)使用自定义场景
  • Python训练营---Day45
  • DeepSeek 农业大模型:应用潜力与数据隐私保护的双重考量
  • Python训练营---Day44