• 发帖数4
  • 粉丝0

此人很懒,什么也没有留下

    [填报与传统报表] 定制排序相关问题

    yhdata_k0Hr5a2Z青铜一 显示全部楼层 发表于 2022-2-21 11:01:22 |阅读模式 打印 上一主题 下一主题
    1
    已解决
    永宏自动排序https://www.yonghongtech.com/hel ... 6%E6%8E%92%E5%BA%8F按官方文档中给的代码生成class文件,放在D:\Program Files\YonghongZ-Suite921\tomcat\webapps\bi\WEB-INF\classes路径下,然后调用,实现不了。
    1、能否给出完整的经过测试后的代码
    2、class存放路径
    3、如何调用
    谢谢

    最佳答案

    humming 钻石二 关注Ta

    2022-02-21 11:01:23

    建议看一下Comparator的类的说明,参见 https://blog.csdn.net/liuwg1226/article/details/85268814 这个接口最主要的就是public int compare(String o1, String o2) 这个方法,你总是返回0就表示要排序的数据都是一样的,所以没有用。 需要把参数value通过int index1 = arr.indexOf(o1);来转换为你期望的数字来比较才能做到你想要的效果 ...
    查看完整内容
    回复

    使用道具 举报

    精彩评论8

    humming钻石二 显示全部楼层 发表于 2022-2-21 11:01:23
    yhdata_k0Hr5a2Z 发表于 2022-2-21 16:16
    public class RegionSequence implements Comparator {
        private final static Logger logger = Logge ...

    建议看一下Comparator的类的说明,参见
    https://blog.csdn.net/liuwg1226/article/details/85268814
    这个接口最主要的就是public int compare(String o1, String o2) 这个方法,你总是返回0就表示要排序的数据都是一样的,所以没有用。 需要把参数value通过int index1 = arr.indexOf(o1);来转换为你期望的数字来比较才能做到你想要的效果
    回复

    使用道具 举报

    环环白银三 显示全部楼层 发表于 2022-2-21 11:09:09
    把现在的代码,文件路径和配置都截图看下呢
    回复

    使用道具 举报

    yhdata_k0Hr5a2Z青铜一 显示全部楼层 发表于 2022-2-21 11:26:32
    永洪tech-秀秀 发表于 2022-2-21 11:09
    把现在的代码,文件路径和配置都截图看下呢

    package com.yonghongtech;

    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.List;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    public class RegionSequence implements Comparator<String> {
        private static final Logger logger = LoggerFactory.getLogger(RegionSequence.class);
        private List<String> arr;

        public RegionSequence() {
            logger.info("开始初始化RegionSequence类");
            this.arr = new ArrayList();
            this.arr.add("博罗区域");
            this.arr.add("海外区域");
            this.arr.add("杭州区域");
            this.arr.add("济南区域");
            this.arr.add("南京区域");
            this.arr.add("三亚区域");
            this.arr.add("苏州区域");
            this.arr.add("天津区域");
            this.arr.add("西安区域");
            logger.info("插入数据完成");
            logger.info("初始化RegionSequence类完成");
        }

        public int compare(String o1, String o2) {
            logger.info("按固定顺序排序");
            return 0;
        }
    }
    放在这个路径:D:\Program Files\YonghongZ-Suite921\tomcat\webapps\bi\WEB-INF\classes\com\yonghongtech
    最后调用是乱序
    回复

    使用道具 举报

    环环白银三 显示全部楼层 发表于 2022-2-21 11:41:10
    这个是你们自己写的么,客户自行实现的我们不提供修改,案例里展示的是公用的案例,如果自行实现有问题可以考虑走定开。
    回复

    使用道具 举报

    humming钻石二 显示全部楼层 发表于 2022-2-21 13:56:35
    https://www.yonghongtech.com/hel ... 6%E6%8E%92%E5%BA%8F
    这个文档里写的比较清楚了呢。Comparator是java的接口,主要是要实现compare的方法
    你的例子里的总是反馈0,就是所有的元素都是相等的,那么排序就会随机。
      public int compare(String o1, String o2) {
            logger.info("按固定顺序排序");
            return 0;
        }
    建议修改为文档中的实现
    public int compare(String o1, String o2) {
           int index1 = arr.indexOf(o1);
           int index2 = arr.indexOf(o2);
            return idx1 - idx2;
        }

    PS:
    另外引用的时候需要完整的类名,对于您的case就是com.yonghongtech.RegionSequence
    回复

    使用道具 举报

    yhdata_k0Hr5a2Z青铜一 显示全部楼层 发表于 2022-2-21 16:13:13
    humming 发表于 2022-2-21 13:56
    https://www.yonghongtech.com/help/Z-Suite/9.4/ch/dataprocess_customsort.html?zoom_highlightsub=%E5%A ...

    this.arr.add("博罗区域");
            this.arr.add("海外区域");
            this.arr.add("杭州区域");
            this.arr.add("济南区域");
            this.arr.add("南京区域");
            this.arr.add("三亚区域");
            this.arr.add("苏州区域");
            this.arr.add("天津区域");
            this.arr.add("西安区域");
    但是我要的就是这个死的顺序:博罗区域、南京区域、三亚区域、苏州区域~~~~
    回复

    使用道具 举报

    yhdata_k0Hr5a2Z青铜一 显示全部楼层 发表于 2022-2-21 16:16:57
    yhdata_k0Hr5a2Z 发表于 2022-2-21 16:13
    this.arr.add("博罗区域");
            this.arr.add("海外区域");
            this.arr.add("杭州区域");

    public class RegionSequence implements Comparator<String> {
        private final static Logger logger = LoggerFactory.getLogger(RegionSequence.class);

        private List<String> arr;

        public RegionSequence() {
            logger.info("开始初始化RegionSequence类");
            arr = new ArrayList<String>();
            arr.add("博罗区域");
            arr.add("海外区域");
            arr.add("杭州区域");
            arr.add("济南区域");
            arr.add("南京区域");
            arr.add("三亚区域");
            arr.add("苏州区域");
            arr.add("天津区域");
            arr.add("西安区域");
            logger.info("插入数据完成");
            logger.info("初始化RegionSequence类完成");
        }

        @Override
        public int compare(String o1, String o2) {
            logger.info("按固定顺序排序");
            return 0;
        }

        public static void main(String[] args) {
            RegionSequence regionSequence = new RegionSequence();
            regionSequence.getArr().sort(regionSequence);
            for(String s: regionSequence.getArr()){
                System.out.println(s);
            }
        }

        public List<String> getArr() {
            return arr;
        }

        public void setArr(List<String> arr) {
            this.arr = arr;
        }
    }
    我用这个程序在idea中跑他就是固定的顺序,并没有乱序
    回复

    使用道具 举报

    环环白银三 显示全部楼层 发表于 2022-2-21 16:48:07
    要固定顺序的,为什么不用手动排序呢,这样做更复杂吧。配置那些也不清楚是怎样的
    回复

    使用道具 举报

    高级模式
    您需要登录后才可以回帖 登录 | 免费注册

    • 官方微信

      欢迎关注永洪服务号!收费为0,价值无限

      扫码关注
    • 新浪微博

      让每位用户轻松挖掘数据价值!

      访问新浪微博
    • 智能客服
    50W

    会员等你来哦

    Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |联系社区管理员|《永洪社区协议》
    返回顶部