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

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" %>

<jsp:useBean id="wfc" class="weaver.workflow.workflow.WorkflowComInfo" scope="page"/>
<%
    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);
%>

<script type="text/javascript">

    //1:参数表单id 2:流程字段名 3:0代表主表,1代表明细1 4:固定参数0
    var ma_mxzy= "<%=FormIdCacheUtil.getFieldId(iFormid,"mxzy","1",0)%>";//主表 获取明细摘要
    var dt_abstract= "<%=FormIdCacheUtil.getFieldId(iFormid,"abstract","1",0)%>";//明细1 摘要
    var maString="";
    jQuery(document).ready(function(){

        jQuery("button[name='addbutton0']").click(function(){ //绑定明细1添加点击事件
            var indexnum1=jQuery("#indexnum0").val();//行数
            var i=indexnum1-1;
            mxzyget(i);
        });

        jQuery("button[name='delbutton0']").click(function(){ //绑定明细1添加点击事件
            var indexnum1=jQuery("#indexnum0").val();//行数
            //var i=indexnum1-1;
           maString="";
            for(var j=0;j<indexnum1;j++){
                console.log("j>>>"+j+",indexnum1>>>"+indexnum1);
                var abstract=jQuery("#" + dt_abstract+"_"+j).val();
                if(abstract!==undefined){
                    maString+=abstract+" | ";
                    console.log("maString>>>"+maString);
                    var mxzy=jQuery("#"+ma_mxzy).val(maString);
                    console.log("mxzy>>>"+maString);
                }

            }

        });

    });
    function mxzyget(i) {
        jQuery("#" + dt_abstract+"_"+i).bind("change",function () {
            var abstract=jQuery("#" + dt_abstract+"_"+i).val();
            maString+=abstract+" | ";
            console.log("maString>>>"+maString);
            var mxzy=jQuery("#"+ma_mxzy).val(maString);
            console.log("mxzy>>>"+maString);
        });
    }

</script>

 逻辑就是循环判断明细行字段,用“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
)

相关文章:

  • 记一次api接口出现重复请求的处理过程
  • 使用人工智能大模型腾讯元宝,如何免费快速做高质量的新闻稿?
  • 【 vue + js 】引入图片、base64 编译显示图片
  • 项目日志配置模板示例
  • python的多线程和多进程程序编程
  • 语音识别——根据声波能量、VAD 和 频谱分析实时输出文字
  • 企业数据孤岛如何破
  • Harmony实战之简易计算器
  • AI中的RAG技术:检索增强生成的全面解析
  • Python自动化爬虫:Scrapy+APScheduler定时任务
  • Cesium实现鹰眼图和主地图联动
  • 管道魔法木马利用Windows零日漏洞部署勒索软件
  • 【15】Strongswan watcher详解2
  • 力扣 905 按奇偶排序数组:双指针法的优雅实现
  • 服务器(一种管理计算资源的计算机)
  • 下列软件包有未满足的依赖关系: python3-catkin-pkg : 冲突: catkin 但是 0.8.10-
  • Sping Cloud配置和注册中心
  • 【vLLM 学习】API 客户端
  • 设计模式 - 单例
  • 深入解析 C# 中的模板方法设计模式
  • 网站制作工作室/网站优化内容
  • wordpress 仿聚划算/seo常用分析的专业工具
  • 做企业平台的网站有哪些内容/seo关键词排名优化软件
  • 网站上点击图片局部放大如何做/网络营销的公司有哪些
  • 网站内容收费/域名关键词排名查询
  • 怎么创建手机网站/百度收录入口提交