E9环境通过数据库后台开发解决前端代码问题
程序员文章站
2022-06-02 16:49:02
...
问题:E7环境下在hrmsubcompany新增了两个字段公司层级和所属业务主体,E8时通过JSP代码保存到主表中,在升级到E9环境后,该代码无效了。经开发沟通实现太麻烦,先采用数据库端处理圆满解决此问题。
E8代码:
SubCompanyOperation.jsp
//插入点1
String gscj = Util.fromScreen(fu.getParameter("gscj"),user.getLanguage());
String ssywzt = Util.fromScreen(fu.getParameter("ssywzt"),user.getLanguage());
//插入点2
String sql3="update HrmSubCompany set subcompanycode = '" + subcompanycode + "'";
if(user.getUID() == 1) sql3 += ", limitUsers = "+limitUsers;
sql3 +=", gscj = '"+gscj+"' ";//公司层级
sql3 +=", ssywzt = '"+ssywzt+"' ";//所属业务主体
//插入点3
String sql3="update HrmSubCompany set subcompanycode = '" + subcompanycode + "'";
if(user.getUID() == 1) sql3 += ", limitUsers = "+limitUsers;
sql3 +=", gscj = '"+gscj+"' ";//公司层级
sql3 +=", ssywzt = '"+ssywzt+"' ";//所属业务主体
在升级E9时,作同样的修改,没有生效,原因是现有E9前后端分离,已经不用此代码。
解决方案:
在OA端使用新功能在hrmsubcompanydefined新建这两个自定义字段,字段名后系统自动增加了一个X。将原有两个字段隐藏。这个操作由OA系统管理员作。
1、检查两边数据有效性。新的字段没有值。
select id,gscj,ssywzt from hrmsubcompany
select id,subcomid,gscjx,ssywztx from hrmsubcompanydefined
2、将原有字段同步到新字段中,并验证数据一致。
update hrmsubcompanydefined a set gscjx = (select gscj from hrmsubcompany b where a.subcomid = b.id )
update hrmsubcompanydefined a set ssywztx = (select ssywzt from hrmsubcompany b where a.subcomid = b.id )
select b.id,b.gscj,b.ssywzt,a.gscjx,a.ssywztx from hrmsubcompanydefined a inner join hrmsubcompany b on a.subcomid = b.id
3、启用触发器并编辑无误。
create or replace trigger YH_T_on_hrmsubcom
after INSERT OR UPDATE of gscjx,ssywztx,subcomid
on hrmsubcompanydefined
for each row
begin
update hrmsubcompany set gscj = :new.gscjx,ssywztx = :new.ssywztx where id = :new.subcomid;
end;
4、验证功能
后台验证:修改一下字段值并检查字段发生了同步修改。
select id,gscj,ssywzt from hrmsubcompany where id = 50
update hrmsubcompanydefined a set gscjx = 1 where subcomid = 50
select id,gscj,ssywzt from hrmsubcompany where id = 50
update hrmsubcompanydefined a set gscjx = 3 where subcomid = 50
select id,gscj,ssywzt from hrmsubcompany where id = 50
前台验证:由OA系统管理员在前台修改或新增一个分步后,可以从新字段自动同步到旧字段中。