OA中有 集团商务车运行情况备案流程 涉及到金额字段以前是整数,需要调整为2位小数,前台不能实现需要数据库层修改.
提示词:
方案: 1、将JT_ZH_0026 集团商务车运行情况备案流程 改为测试。 2、将formtable_main_1656_dt1备份。
3、将ormtable_main_1656_dt1表中相关字段的值清空。共10个字段。 油费当期 yfdq 单行文本框类型整数
油费当年累计 yfdnlj 单行文本框类型整数 过路费当期 glfdq 单行文本框类型整数 过路费当年累计 glfdnlj
单行文本框类型整数 停车费当期 tcfdq 单行文本框类型整数 停车费当年累计 tcfdnlj 单行文本框类型整数
洗车费当期 xcfdq 单行文本框类型整数 洗车费当年累计 xcfdnlj 单行文本框类型整数 维修费当期 wxfdq
单行文本框类型整数 维修费当年累计 wxfdnlj 单行文本框类型整数 4、在后台修改字段类型,为2位小数。 5、将备份表中的值
回写到原表。 6、验证数据正常后,将备份表删除,并将流程改为有效。
请确我把以上数据库涉及的脚本写好。
追加提示词:
修改明细子表字段为 NUMBER (38,2)
追加提示词:
去 OA 后台 把 10 个字段改为「2 位小数数值类型」,但实际上是发现是灰化的。怎么把字段类型改成浮点类
追加提示词:
SELECT * FROM formtable_main_1656_dt1 SELECT * FROM
formtable_main_1656_dt1_bak 查看到的数字,如1218,都显示为1218是否正确,但前台显示为1218.00,如果我录入的数据时1218.01呢
怎么正确显示。
在验证通过后,追加提示词:
请帮我形成一个完整的技术文档备案
以下是AI自动生成的技术文档
OA集团商务车运行情况备案流程字段类型改造技术备案文档
一、文档概述
1.1 改造对象
流程编码:JT_ZH_0026 集团商务车运行情况备案流程
数据库子表:formtable_main_1656_dt1(明细数据表)
改造字段:10项费用统计字段(原整数类型,改造为两位小数数值类型)
1.2 改造背景
原流程中油费、过路费、停车费、洗车费、维修费的【当期/当年累计】10个字段为单行文本整数类型,仅支持录入整数,无法满足实际业务中存在小数金额(如1218.01)的录入、展示需求,业务场景存在局限性,需统一改造为2位小数浮点数值类型。
同时因OA表单配置固化,前台字段类型选项灰化,无法直接通过前端修改字段属性,需通过数据库底层修改+OA系统配置表同步更新的方式完成改造。
1.3 改造目标
• 将10个整数字段改为数据库 NUMBER(38,2) 高精度两位小数类型,支持小数金额存储
• 同步OA系统字段配置,解除前端灰化限制,适配小数录入
• 实现展示自适应:整数自动展示为整数(1218)、小数精准展示两位小数(1218.01)
• 全程保障数据安全,无数据丢失、错乱,改造后流程正常可用
二、改造字段清单
本次共改造10个业务字段,明细如下:
字段中文名称 数据库字段名 原字段类型 改造后字段类型 油费当期 yfdq 整数 NUMBER NUMBER(38,2)
油费当年累计 yfdnlj 整数 NUMBER NUMBER(38,2) 过路费当期 glfdq 整数
NUMBER NUMBER(38,2) 过路费当年累计 glfdnlj 整数 NUMBER NUMBER(38,2)
停车费当期 tcfdq 整数 NUMBER NUMBER(38,2) 停车费当年累计 tcfdnlj 整数
NUMBER NUMBER(38,2) 洗车费当期 xcfdq 整数 NUMBER NUMBER(38,2)
洗车费当年累计 xcfdnlj 整数 NUMBER NUMBER(38,2) 维修费当期 wxfdq 整数
NUMBER NUMBER(38,2) 维修费当年累计 wxfdnlj 整数 NUMBER NUMBER(38,2)
三、改造前置准备
3.1 系统状态准备
将流程 JT_ZH_0026 设置为【测试状态】,禁止新增、审批流程,避免改造期间数据写入导致异常。
3.2 数据备份(核心操作)
创建明细表完整备份表,留存原始数据,支持异常回滚,执行SQL:
bash
Plain Text
-- 创建明细数据备份表
CREATE TABLE formtable_main_1656_dt1_bak
AS
SELECT * FROM formtable_main_1656_dt1;
-- 验证备份数据完整性
SELECT COUNT(*) FROM formtable_main_1656_dt1;
SELECT COUNT(*) FROM formtable_main_1656_dt1_bak;
3.3 字段数据清空
Oracle修改数值精度要求字段无残留数据,需先清空10个目标字段值为NULL,执行SQL:
bash
Plain Text
-- 清空10个费用字段数据
UPDATE formtable_main_1656_dt1
SET
yfdq = NULL,
yfdnlj = NULL,
glfdq = NULL,
glfdnlj = NULL,
tcfdq = NULL,
tcfdnlj = NULL,
xcfdq = NULL,
xcfdnlj = NULL,
wxfdq = NULL,
wxfdnlj = NULL;
COMMIT;
-- 验证清空结果
SELECT yfdq,yfdnlj,glfdq,glfdnlj,tcfdq,tcfdnlj,xcfdq,xcfdnlj,wxfdq,wxfdnlj
FROM formtable_main_1656_dt1
WHERE ROWNUM <= 10;
四、核心改造操作(数据库+系统配置)
4.1 查看原字段类型(核对基准)
执行SQL查询原字段数据类型、精度、小数位,确认改造前状态:
bash
Plain Text
SELECT
COLUMN_NAME 字段名,
DATA_TYPE 数据类型,
DATA_PRECISION 数值精度,
DATA_SCALE 小数位数,
NULLABLE 是否允许为空
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME = UPPER('formtable_main_1656_dt1')
AND COLUMN_NAME IN ('yfdq','yfdnlj','glfdq','glfdnlj','tcfdq','tcfdnlj','xcfdq','xcfdnlj','wxfdq','wxfdnlj')
ORDER BY COLUMN_NAME;
改造前特征:DATA_SCALE=0,纯整数字段,不支持小数录入。
4.2 数据库字段类型修改
将10个字段统一修改为 NUMBER(38,2)(38位总长度、2位小数,高精度适配所有业务金额场景),执行SQL:
Plain Text
-- 批量修改字段为两位小数数值类型
ALTER TABLE formtable_main_1656_dt1
MODIFY (
yfdq NUMBER(38,2),
yfdnlj NUMBER(38,2),
glfdq NUMBER(38,2),
glfdnlj NUMBER(38,2),
tcfdq NUMBER(38,2),
tcfdnlj NUMBER(38,2),
xcfdq NUMBER(38,2),
xcfdnlj NUMBER(38,2),
wxfdq NUMBER(38,2),
wxfdnlj NUMBER(38,2)
);
4.3 验证字段改造结果
再次执行字段查询SQL,确认所有字段:DATA_PRECISION=38,DATA_SCALE=2,改造生效。
4.4 同步OA系统配置表(解决前台灰化问题)
前台字段类型灰化无法修改,根源是OA系统配置表未同步更新,需修改核心配置表 workflow_billfield。
1、查询表单ID及目标字段ID:
bash
Plain Text
-- 查询表单ID
SELECT id, tablename FROM workflow_bill WHERE tablename='formtable_main_1656_dt1';
-- 查询10个改造字段的系统ID
SELECT id, fieldname, fielddbtype, type, qfws
FROM workflow_billfield
WHERE billid = '查到的表单ID'
AND fieldname IN ('yfdq','yfdnlj','glfdq','glfdnlj','tcfdq','tcfdnlj','xcfdq','xcfdnlj','wxfdq','wxfdnlj');
2、批量更新字段为浮点类型、2位小数:
bash
Plain Text
-- 替换IN内ID为实际查询的字段ID
UPDATE workflow_billfield
SET
type=3, -- 3=泛微浮点数值类型
fielddbtype='NUMBER(38,2)',
qfws=2 -- 固定2位小数
WHERE id IN ('字段ID1','字段ID2','字段ID3','字段ID4','字段ID5','字段ID6','字段ID7','字段ID8','字段ID9','字段ID10');
COMMIT;
4.5 清空OA系统缓存
配置修改后必须清缓存,否则前台不生效:
• 访问地址:OA域名/commcache/cacheMonitor.jsp
• 操作:管理员登录,点击【重新加载所有配置缓存】
• 极端场景:重启OA服务确保配置完全生效
五、数据回写恢复
字段类型改造完成后,将备份表的原始数据精准回写到业务表,执行SQL:
Plain Text
bash
-- 主键匹配回写原始数据
MERGE INTO formtable_main_1656_dt1 t1
USING formtable_main_1656_dt1_bak t2
ON (t1.id = t2.id)
WHEN MATCHED THEN
UPDATE SET
t1.yfdq = t2.yfdq,
t1.yfdnlj = t2.yfdnlj,
t1.glfdq = t2.glfdq,
t1.glfdnlj = t2.glfdnlj,
t1.tcfdq = t2.tcfdq,
t1.tcfdnlj = t2.tcfdnlj,
t1.xcfdq = t2.xcfdq,
t1.xcfdnlj = t2.xcfdnlj,
t1.wxfdq = t2.wxfdq,
t1.wxfdnlj = t2.wxfdnlj;
COMMIT;
-- 验证数据回写完成
SELECT * FROM formtable_main_1656_dt1;
SELECT * FROM formtable_main_1656_dt1_bak;
六、前台展示优化配置
6.1 展示规则说明
• 数据库存储:整数自动存为1218、小数存为1218.01(数据精准无冗余)
• 默认前台:2位小数字段强制展示1218.00、1218.01
• 优化后效果:整数展示1218,小数展示对应两位小数
6.2 前台字段优化设置
进入表单设计,选中10个改造字段,配置属性:
• 小数位数:2位
• 勾选:去除无用小数位/自动隐藏末尾零(泛微通用配置)
• 保存表单,再次清空OA缓存
七、最终验证标准
7.1 数据库验证
• 10个字段类型为 NUMBER(38,2)
• 历史数据完整回写,无缺失、无错乱
• 支持整数、两位小数数据正常存储
7.2 前台功能验证
• 字段可正常录入整数、两位小数金额
• 整数数据自适应展示为整数(1218)
• 小数数据精准展示两位小数(1218.01)
• 表单保存、数据提交、流程预览功能正常
7.3 流程状态恢复
所有验证通过、确认业务功能及数据展示完全正常后,将 JT_ZH_0026 集团商务车运行情况备案流程 由测试状态改为【有效状态】,恢复正常业务使用。同时清理冗余备份表,避免数据库产生垃圾数据表。
八、异常处理与风险规避
8.1 常见报错及解决
• ORA-01440:修改字段精度报错 → 确保字段数据已全部清空为NULL
• 前台字段仍灰化、不生效 → 检查workflow_billfield配置更新+清空系统缓存
• 前台始终显示.00 → 开启字段「去除无用小数位」配置
8.2 回滚方案(应急)
若改造出现异常,可直接通过备份表恢复原始数据:
bash
Plain Text
-- 清空现有数据并回滚原始整数数据
TRUNCATE TABLE formtable_main_1656_dt1;
INSERT INTO formtable_main_1656_dt1 SELECT * FROM formtable_main_1656_dt1_bak;
COMMIT;
验证无误收尾操作(可选):删除冗余备份表
改造全部完成、业务长期运行无异常后,可执行语句删除备份表,避免数据库积存垃圾表:
bash
Plain Text
-- 删除本次改造备份表
DROP TABLE formtable_main_1656_dt1_bak;
九、改造总结
本次改造完成了JT_ZH_0026流程10项费用字段从整数类型到NUMBER(38,2)两位小数类型的升级,解决了小数金额无法录入的业务问题。通过「先备份-清空-改库字段-同步系统配置-回写数据-优化展示-验证收尾」的标准化流程,全程保障数据安全。改造完成并验收无误后,及时清理冗余备份表,避免数据库产生无效垃圾数据,改造后系统功能、数据展示、业务使用均正常,完全满足日常商务车费用备案的业务需求。
十、备案信息
改造人:__________
改造时间:__________
验证人:__________
验收时间:__________
|(注:文档部分内容可能由 AI 生成)