E8流程多行明细行字符串用I分隔,赋值到主表

需求:明细行摘要字段赋值到主表隐藏字段,隐藏摘要字段在标题中显示

代码如下,代码中的获取字段名获取方式,自行转换成jQuery("#fieldid").val()替换。

//1:参数表单id 2:流程字段名 3:0代表主表,1代表明细1 4:固定参数0
var ma_mxzy= "<%=FormIdCacheUtil.getFieldId(iFormid,"mxzy","1",0)%>";//主表 获取明细摘要
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="weaver.general.TimeUtil" %>
<%@ page import="java.util.*" %>
<%@ page import="weaver.hrm.*" %>
<%@ page import="weaver.hrm.*" %>
<%@ page import="weaver.hrm.*" %>
<%@ page import="com.customcode.util.FormIdCacheUtil" %>


<%
    int iRequestid = Util.getIntValue(request.getParameter("requestid")); //获取当前流程请求ID
    int iWorkflowid = Util.getIntValue(request.getParameter("workflowid")); //获取当前流程ID
    int iNodeid = Util.getIntValue(request.getParameter("nodeid"));  //获取当前流程节点ID
    int iFormid = Util.getIntValue(wfc.getFormId(String.valueOf(iWorkflowid)), 0); //获取当前表单ID 兼容手机端
    //int iFormid = Util.getIntValue(request.getParameter("formid")); //获取当前表单ID
    //int iIsBill = Util.getIntValue(request.getParameter("isbill")); //获取当前表单类型(1单据|0表单)
    User user = HrmUserVarify.getUser (request,response) ; //获取当前登录对象
    int iUserId = user.getUID();	//获取当前登录用户ID
    //int iUserSubCompanyId = user.getUserSubCompany1(); //获取当前登录用户公司ID
    //int iUserDepId = user.getUserDepartment();	//获取当前登录用户部门ID
    //String sLogintype = user.getLogintype();	//当前用户类型(1内部用户|2外部用户)
    //String sUsername = user.getUsername();	//获取当前登录用户姓名
    //String sUserJobtitle = user.getJobtitle();	//获取当前登录用户职务IDdd
    //out.print("Requestid="+Requestid);
%>

 逻辑就是循环判断明细行字段,用“maString+=abstract+" | " ”拼接赋值给主表字段,在明细删除按钮事件中(delbutton0)重新循环获取明细行,再重新赋值,避免用户填错删除任意行。注意:明细行删除事件,如果删除中间行例如1 2 3 4,删除了2或者3的中间行,用if字段xx.length!=0判断,会导致循环中断,导致第四行值无法获取。顾转化思路,打印出明细值会发现,明细字段值=undefined(一个未定义或者未赋值的变量),所以用使用严格相等 ===(!==)来判断。

对用历史字段处理,利用数据库语句来批量更新。我们系统数据为oracle,用到以下语句

formtable_main_958为主表,formtable_main_958_dt1为明细表

UPDATE formtable_main_958 o
SET o.mxzy = (
    SELECT LISTAGG(od.abstract, ' | ') WITHIN GROUP (ORDER BY od.abstract)
    FROM formtable_main_958_dt1   od
    WHERE od.mainid = o.id
)

你可能感兴趣的:(servlet,udp,网络协议)