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

金蝶SHR,在列表对某个金额字段汇总展示的需求

接到这个需求的初衷是因为二开了一个内推费用计算,其中有一列本次发放奖金,希望能做个汇总,以便转薪酬后去汇总核对

刚开始也翻看了薪酬查询的表格底部汇总,捣鼓了半天搞不出来,恕我无能。。。

后面换种方式,就自己干脆在列表头旁边增加一个汇总字段,不在底部了

问题又来了,我怎么能得到当前列表的数据,且去汇总??

仔细阅读了底部查询逻辑,使用query查询用的查询是QueryExecutorFactory这个里面的接口

直接上代码:

        String query = "com.kingdee.eas.custom.cmpemp.app.InternalCalcQuery";
        IQueryExecutor exec = QueryExecutorFactory.getRemoteInstance(new MetaDataPK(query));
        try {
            exec.setObjectView(defaultEntityViewInfo);
            String[] strArray = {"thisBonus"};
            IRowSet sumSet = exec.sum(strArray);
            if(sumSet.next()){
                String setString = sumSet.getString("thisBonus");
                if(StringUtils.isNotEmpty(setString)){
                    BigDecimal thisBonus = new BigDecimal(setString);
                    logger.error("===thisBonus:"+thisBonus);
                    String plainString = thisBonus.stripTrailingZeros().toPlainString();
                    logger.error("===plainString:"+plainString);
                    gridDataEntity.setUserdata(plainString);
                }else{
                    gridDataEntity.setUserdata("0");
                }
            }
        } catch (BOSException e) {
            throw new RuntimeException(e);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

刚好里面有个sum汇总,直接满足了需求,既可以拿到前端传递的参数,还可以直接汇总,不用重新写sql,这种方法就是根据前端筛选条件动态查询汇总和列表数据,不用单独点合计

还有一些特殊设置,比如忽略0等等

        //设置过滤的sql条件
        exec.setObjectView(entityViewInfo);
        //设置忽略排序
        exec.option().isIgnoreOrder = true;
        exec.option().isAutoIgnoreZero = true;
        exec.option().isAutoTranslateBoolean = true;
        exec.option().isAutoTranslateEnum = true;
        exec.option().isIgnorePermissionCheck = false;

其实还可以分组,获取打印的sql等,可以仔细查看com.kingdee.bos.dao.query.IDataProvider

这个类


http://www.kler.cn/news/309980.html

相关文章:

  • 英特尔剥离芯片代工业务 与亚马逊达成重要合作
  • 五大注入攻击网络安全类型介绍
  • AutoSar AP 面向服务通信的提供者和消费者“连接”的方法
  • VUE实现刻度尺进度条
  • Java-数据结构-优先级队列(堆)-(一) (;´д`)ゞ
  • 后端id设置long类型时,传到前端,超过19位最后两位为00
  • k8s用StatefulSet部署redis
  • 图神经网络模型扩展(5)--2
  • 《Effective C++》第三版——让自己习惯C++
  • SpringDataJPA基础增删改查
  • 【OpenGL 学习笔记】01 - CLion 配置 CMake 运行初始 demo
  • 【PyTorch入门·求导相关】一文解释 PyTorch的求导 (backward、autograd.grad)
  • C#中抽象类和接⼝有什么区别?
  • 深入解析:联邦政策如何影响科技行业发展
  • windows10通过coursier安装scala
  • 什么是注解?
  • 硬件工程师笔试面试——电机
  • 25. MyBatis中的RowBounds是什么?如何实现内存分页?
  • Presto如何使用
  • CF EDU 169
  • 初写MySQL四张表:(1/4)
  • 【Kubernetes】常见面试题汇总(二十三)
  • Longman Dictionary of Contemporary English (朗文当代高级英语辞典)
  • MySQL高阶1783-大满贯数量
  • 使用python 将world的题库导入某学习软件的模板
  • 【RabbitMQ】工作模式
  • 20240911软考架构-------软考156-160答案解析
  • 【物联网】深入解析时序数据库TDengine及其Java应用实践
  • 力扣最热一百题——合并两个有序链表
  • do { ... } while (0) 的意义