`

sort,group by

 
阅读更多

public HskSisakuCalReferSearchDisRsSM findHskSisakuCalInfo(

HskSisakuCalReferSearchSM hskSisakuCalReferSearchSM)

throws AsdApplicationException {

CtrShskHeadDMParameter ctrShskHeadDMParameter = new CtrShskHeadDMParameter();

ctrShskHeadDMParameter.setHanbaiTenCd(hskSisakuCalReferSearchSM.getHanbaiTenCd());

ctrShskHeadDMParameter.setHonShaFlg(hskSisakuCalReferSearchSM.isHonShaFlg());

ctrShskHeadDMParameter.setSearchStYM(hskSisakuCalReferSearchSM.getSearchStYM());

ctrShskHeadDMParameter.setSearchStYMP(hskSisakuCalReferSearchSM.getSearchStYMP());

ctrShskHeadDMParameter.setJigCd(hskSisakuCalReferSearchSM.getJigCd());

ctrShskHeadDMParameter.setBushoCd(hskSisakuCalReferSearchSM.getBushoCd());

ctrShskHeadDMParameter.setChainCd(hskSisakuCalReferSearchSM.getChainCd());

ctrShskHeadDMParameter.setZenkokuSskType(hskSisakuCalReferSearchSM.isZenkokuSskType());

ctrShskHeadDMParameter.setAreaSskType(hskSisakuCalReferSearchSM.isAreaSskType());

ctrShskHeadDMParameter.setChainSskType(hskSisakuCalReferSearchSM.isChainSskType());

if(hskSisakuCalReferSearchSM.isZenkokuSskType()||hskSisakuCalReferSearchSM.isAreaSskType()||hskSisakuCalReferSearchSM.isChainSskType()){

ctrShskHeadDMParameter.setSskFlg(true);

}

HskSisakuCalReferSearchDisRsSM sm = new HskSisakuCalReferSearchDisRsSM();

List<CtrShskHeadDM> ctrShskHeadList = ctrShskHeadCustomDAO.selectHskSisakuCalByInpt(ctrShskHeadDMParameter);

if( ctrShskHeadList != null) {

// チャネルで、グループ化する。

            Map<String, List<CtrShskHeadDM>> chanelGroup = new HashMap<String, List<CtrShskHeadDM>>();

 

            for (CtrShskHeadDM ctrShskHeadDM : ctrShskHeadList) {

                List<CtrShskHeadDM> chanelList = new ArrayList<CtrShskHeadDM>();

                chanelList.add(ctrShskHeadDM);

                if(ctrShskHeadDM.getCommFlg() != null && ctrShskHeadDM.getCommFlg().equals("1")){

                chanelList = chanelGroup.put("全チャネル", chanelList);

                } else {

                chanelList = chanelGroup.put(ctrShskHeadDM.getChanlCd(), chanelList);

                }

 

                if (chanelList != null) {

                chanelList.add(ctrShskHeadDM);

                if(ctrShskHeadDM.getCommFlg() != null && ctrShskHeadDM.getCommFlg().equals("1")){

                chanelGroup.put("全チャネル", chanelList);

                    } else {

                    chanelGroup.put(ctrShskHeadDM.getChanlCd(), chanelList);

                    }

                }

            }

 

            // チャネルで、ソートする。

            Map<String, List<CtrShskHeadDM>> chanelGroupSortedByChanlCdNm = new TreeMap<String, List<CtrShskHeadDM>>(chanelGroup);

            Iterator<String> chanlCdNm = chanelGroupSortedByChanlCdNm.keySet().iterator();

 

            //"全チャネル"を先に

            List<String> list = new ArrayList<String>();

            List<String> list2 = new ArrayList<String>();

            while (chanlCdNm.hasNext()){

            list.add(chanlCdNm.next());

            }

 

            for(String chNm:list){

            if(chNm.equals("全チャネル")){

            list2.add(0, chNm);

            }else{

            list2.add(chNm);

            }

            }

 

            // チャネル処理

            for (String chanlCd:list2) {

           

            // チャネルInformation

            HskSisakuCalReferSearchDisRsSM.CldSearchInfo cldSearchInfo = new HskSisakuCalReferSearchDisRsSM.CldSearchInfo();

 

        // 対象ブランドで、グループ化する。

            List<CtrShskHeadDM> chanelSortList = chanelGroupSortedByChanlCdNm.get(chanlCd);

           

            Map<String, List<CtrShskHeadDM>> zenChannelGroup = new HashMap<String, List<CtrShskHeadDM>>();

           

            if(chanlCd.equals("全チャネル")){            

           

            // 施策名称で、グループ化する。

            for(CtrShskHeadDM zenChannelDm : chanelSortList){

           

            List<CtrShskHeadDM> tempList = new ArrayList<CtrShskHeadDM>();

            tempList.add(zenChannelDm);

            tempList = zenChannelGroup.put(zenChannelDm.getShisakuMeisho(), tempList);

            if(tempList != null){

            boolean isNewBrand = false;

            for(CtrShskHeadDM tempDm: tempList){

            if(!zenChannelDm.getBrandCd().equals(tempDm.getBrandCd())){

            isNewBrand = true;

            }

            }

            if(isNewBrand){

            tempList.add(zenChannelDm);

            }

            zenChannelGroup.put(zenChannelDm.getShisakuMeisho(), tempList);

            }

            }

            Iterator<String> sskNm = zenChannelGroup.keySet().iterator();

            chanelSortList = new ArrayList<CtrShskHeadDM>();

           

            while(sskNm.hasNext()){

           

            for(CtrShskHeadDM tempDm2:zenChannelGroup.get(sskNm.next())){

            chanelSortList.add(tempDm2);

            }

            }

            }

           

            //channel名をset

            if(chanelSortList!= null && chanelSortList.size()>0 ){

            cldSearchInfo.setChannelName(chanelSortList.get(0).getChanlCdNm());

            }

 

                Map<String, List<CtrShskHeadDM>> brandGroup = new HashMap<String, List<CtrShskHeadDM>>();

                for (CtrShskHeadDM ctrShskHeadDM : chanelSortList) {

                    List<CtrShskHeadDM> brandList = new ArrayList<CtrShskHeadDM>();

                    brandList.add(ctrShskHeadDM);

                    brandList = brandGroup.put(ctrShskHeadDM.getBrandCd(), brandList);

                    if (brandList != null) {

                    brandList.add(ctrShskHeadDM);

                    brandGroup.put(ctrShskHeadDM.getBrandCd(), brandList);

                    }

                }

           

                // 対象ブランドで、ソートする。

                Map<String, List<CtrShskHeadDM>> brandGroupSortedByBrandName = new TreeMap<String, List<CtrShskHeadDM>>(brandGroup);

                Iterator<String> brandCd = brandGroupSortedByBrandName.keySet().iterator();

 

                // 対象ブランド処理

                while (brandCd.hasNext()) {

               

                HskSisakuCalReferSearchDisRsSM.BrandInfo brandInfo = new HskSisakuCalReferSearchDisRsSM.BrandInfo();

               

                List<CtrShskHeadDM> brandSortList = brandGroupSortedByBrandName.get(brandCd.next());

               

                //brand名をset

                if(brandSortList!= null && brandSortList.size()>0 ){

                brandInfo.setBrandName(brandSortList.get(0).getBrandCdNm());

                }

               

                long top = hskSisakuCalReferSearchSM.getBarTop() - hskSisakuCalReferSearchSM.getBorderHeight();

         

                    //施策Info処理

                for (CtrShskHeadDM ctrShskHeadDM : brandSortList) {

                HskSisakuCalReferSearchDisRsSM.SskInfo sskInfo = new HskSisakuCalReferSearchDisRsSM.SskInfo();

                sskInfo.setSskName(ctrShskHeadDM.getShisakuMeisho());

                sskInfo.setSskId(ctrShskHeadDM.getShisakuId());

                //期間バーを処理する

                String color ="";

                if( ctrShskHeadDM.getSskSruiKbn() != null && ctrShskHeadDM.getSskSruiKbn().equals("1")){

               

                if(ctrShskHeadDM.getKokaiFlg() != null && ctrShskHeadDM.getKokaiFlg().equals("1")){

                //mc-bar mc-bg-blue青

                color = "mc-bar mc-bg-blue";

                }else if (ctrShskHeadDM.getKokaiFlg() != null && ctrShskHeadDM.getKokaiFlg().equals("0")){

                //mc-bar mc-bg-water水

                color = "mc-bar mc-bg-water";

                }

               

                }else if ( ctrShskHeadDM.getSskSruiKbn() != null && ctrShskHeadDM.getSskSruiKbn().equals("2") ){

               

                if(ctrShskHeadDM.getKokaiFlg() != null && ctrShskHeadDM.getKokaiFlg().equals("1")){

                //mc-bar mc-bg-red赤

                color = "mc-bar mc-bg-red";

                }else if (ctrShskHeadDM.getKokaiFlg() != null && ctrShskHeadDM.getKokaiFlg().equals("0")){

                //mc-bar mc-bg-pinkピンク

                color = "mc-bar mc-bg-pink";

                }

               

                }else if ( ctrShskHeadDM.getSskSruiKbn() != null && ctrShskHeadDM.getSskSruiKbn().equals("3") ){

               

                if(ctrShskHeadDM.getKokaiFlg() != null && ctrShskHeadDM.getKokaiFlg().equals("1")){

                //mc-bar mc-bg-green緑

                color = "mc-bar mc-bg-green";

                }else if (ctrShskHeadDM.getKokaiFlg() != null && ctrShskHeadDM.getKokaiFlg().equals("0")){

                //mc-bar mc-bg-yellowgreen黄緑

                color = "mc-bar mc-bg-yellowgreen";

                }

                }

                //顔色をset

                sskInfo.setSskTBarColor(color);

               

                //bar Style処理

                int left = 0;

                int width = 0;

                int sttYMHead = Integer.parseInt(hskSisakuCalReferSearchSM.getSearchStYM());

                int endYMHead = Integer.parseInt(hskSisakuCalReferSearchSM.getSearchStYMP());

                int sttYMbar = Integer.parseInt(ctrShskHeadDM.getSttYMD().substring(0, 6));

                int endYMbar = Integer.parseInt(ctrShskHeadDM.getEndYMD().substring(0, 6));

                int sttDay = Integer.parseInt(ctrShskHeadDM.getSttYMD().substring(6, 8));

                int endDay = Integer.parseInt(ctrShskHeadDM.getEndYMD().substring(6, 8));

               

                Calendar cal = Calendar.getInstance();

                cal.set(Integer.parseInt(hskSisakuCalReferSearchSM.getSearchStYMP().substring(0,4)), Integer.parseInt(hskSisakuCalReferSearchSM.getSearchStYMP().substring(4,6)), 01);

                cal.add(Calendar.DATE, -1);

                SimpleDateFormat df = new java.text.SimpleDateFormat(

                                "yyyyMMdd");

                int endYMDHead = Integer.parseInt(df.format(cal.getTime()));

           

                if( (Integer.parseInt(ctrShskHeadDM.getSttYMD()) <= Integer.parseInt(ctrShskHeadDM.getEndYMD())) && (Integer.parseInt(ctrShskHeadDM.getSttYMD()) < endYMDHead)){

               

                if( (sttDay >= 1) && (sttDay<= 10)){

               

                if( Integer.parseInt(ctrShskHeadDM.getSttYMD()) <= Integer.parseInt(hskSisakuCalReferSearchSM.getSearchStYM() + "01")){

                left = 0;

                } else {

                left = (((Integer.parseInt(String.valueOf(sttYMbar).substring(0,4)) - Integer.parseInt(String.valueOf(sttYMHead).substring(0,4))) * 12 

                        + Integer.parseInt(String.valueOf(sttYMbar).substring(4,6)) - Integer.parseInt(String.valueOf(sttYMHead).substring(4,6)))) * 3;

                }

                   

                }else if( (sttDay >= 11) && (sttDay <= 20)){

               

                if(Integer.parseInt(ctrShskHeadDM.getSttYMD()) <= Integer.parseInt(hskSisakuCalReferSearchSM.getSearchStYM() + "01")){

                left = 0;

                } else {

                    left = (((Integer.parseInt(String.valueOf(sttYMbar).substring(0,4)) - Integer.parseInt(String.valueOf(sttYMHead).substring(0,4))) * 12 

                    + Integer.parseInt(String.valueOf(sttYMbar).substring(4,6)) - Integer.parseInt(String.valueOf(sttYMHead).substring(4,6)))) * 3

                    + 1;

                }

               

                }else if( sttDay >= 21){

               

                if(Integer.parseInt(ctrShskHeadDM.getSttYMD()) <= Integer.parseInt(hskSisakuCalReferSearchSM.getSearchStYM() + "01")){

                left = 0;

                } else {

                    left = (((Integer.parseInt(String.valueOf(sttYMbar).substring(0,4)) - Integer.parseInt(String.valueOf(sttYMHead).substring(0,4))) * 12 

                    + Integer.parseInt(String.valueOf(sttYMbar).substring(4,6)) - Integer.parseInt(String.valueOf(sttYMHead).substring(4,6)))) * 3

                    + 2;

                }

               

                }

               

                if(Integer.parseInt(ctrShskHeadDM.getEndYMD()) > endYMDHead){

               

                width = (((Integer.parseInt(String.valueOf(endYMHead).substring(0,4)) - Integer.parseInt(String.valueOf(sttYMHead).substring(0,4))) * 12 

                    + Integer.parseInt(String.valueOf(endYMHead).substring(4,6)) - Integer.parseInt(String.valueOf(sttYMHead).substring(4,6)))) * 3

                    - left + 3;

               

                } else{

                if( (endDay >= 1) && (endDay<= 10)){

                   

                    width = (((Integer.parseInt(String.valueOf(endYMbar).substring(0,4)) - Integer.parseInt(String.valueOf(sttYMHead).substring(0,4))) * 12 

                        + Integer.parseInt(String.valueOf(endYMbar).substring(4,6)) - Integer.parseInt(String.valueOf(sttYMHead).substring(4,6)))) * 3

                        - left + 1;

 

                    }else if( (endDay >= 11) && (endDay <= 20)){

                   

                    width = (((Integer.parseInt(String.valueOf(endYMbar).substring(0,4)) - Integer.parseInt(String.valueOf(sttYMHead).substring(0,4))) * 12 

                        + Integer.parseInt(String.valueOf(endYMbar).substring(4,6)) - Integer.parseInt(String.valueOf(sttYMHead).substring(4,6)))) * 3

                        - left + 2;

                   

                    }else if( endDay >= 21){

                   

                    width = (((Integer.parseInt(String.valueOf(endYMbar).substring(0,4)) - Integer.parseInt(String.valueOf(sttYMHead).substring(0,4))) * 12 

                        + Integer.parseInt(String.valueOf(endYMbar).substring(4,6)) - Integer.parseInt(String.valueOf(sttYMHead).substring(4,6)))) * 3

                        - left + 3;

                    }               

                }

               

                }else{

                left = 0;

                width = 0;

                }

         

                if (left == 0 && width ==0){

                continue;

                }else{

                top = top + hskSisakuCalReferSearchSM.getBorderHeight();

                    sskInfo.setSskTbarTop("top:" + top + "px;left:" + (left * hskSisakuCalReferSearchSM.getBorderWidth() + left) + "px;");

                    sskInfo.setSskTbarWidth("width:" + (width * hskSisakuCalReferSearchSM.getBorderWidth() + width) + "px;");

                brandInfo.getSskInfoInList().add(sskInfo);

                }

                }

                brandInfo.setBrandHeight("height:" + String.valueOf(brandInfo.getSskInfoInList().size() * hskSisakuCalReferSearchSM.getBorderHeight()) + "px;");

                if(brandInfo.getSskInfoInList().size() > 0){

                cldSearchInfo.getBrandInfoInList().add(brandInfo);

                }

               

                }

            int cldHeight = 0;

                for(HskSisakuCalReferSearchDisRsSM.BrandInfo brandInfo: cldSearchInfo.getBrandInfoInList()){

                cldHeight = cldHeight + brandInfo.getSskInfoInList().size();

                }

                if(cldHeight ==0){

                cldHeight = 1;

                }

 

                cldSearchInfo.setChannelHeight("height:" + (cldHeight * hskSisakuCalReferSearchSM.getBorderHeight() + (cldSearchInfo.getBrandInfoInList().size()-1) * hskSisakuCalReferSearchSM.getPadding() + cldSearchInfo.getBrandInfoInList().size())   + "px;");

                if(cldSearchInfo.getBrandInfoInList().size()>0){

                sm.getCldSearchInfoList().add(cldSearchInfo);

                }

 

            }

}

return sm;

}

分享到:
评论

相关推荐

    【mysql知识点整理】— order by 、group by 出现Using filesort原因详解

    文章目录测试数据1 sql执行顺序2 order by 和 group by什么时候会出现Using filesort — 理论3 order by 和 group by什么时候会出现Using filesort — 实践3.1 不会出现 Using filesort的情况 — 符合最佳左前缀法则...

    DataFrame.groupby()所见的各种用法详解

    DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs) by :接收映射、函数、标签或标签列表;用于确定聚合的组。 axis : 接收 0/1;用于表示沿...

    Scala学习第一天(十五):函数式编程(foreach遍历/map映射/flatMap扁平化映射/filter过滤/sort排序/groupBy分组/reduce聚合/fold折叠)

    | sorted指定字段排序 | sortBy自定义排序 | sortWith分组(groupBy)聚合(reduce/fold)聚合 | reduce折叠 | fold 遍历(foreach) 格式 foreach(f: (A) ⇒ Unit): Unit 说明 foreach API 说明 参数 f:(A)...

    Pandas之groupby( )用法笔记小结

    DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs) Group series using mapper (dict or key function, apply given function to group, ...

    wing324#helloworld_zh#Hive之各个分组排序关键字的区别1

    二、Distribute by 五、Cluster by 六、如何使用sort by实现全局排序

    pandas groupby 分组取每组的前几行记录方法

    直接上例子。 import pandas as pd df = pd.DataFrame({'class':['a','a','b','b','a','a','b','c','c'],'score':[3,5,6,7,8,9,10,11,14...df.sort_values(['class','score'],ascending=[1,0],inplace=True) grouped =

    优化sql的测试数据

    优化sql的数据。 ...PI.NewLevel,PI.`Status`,PI.HighPrice,CPM.SalesPlaceID, psi.WIID,psi.stockNum,psi.OccupiedStockNum,psi.AirStockNum, ...where 1 = 1 GROUP BY PI.ID ORDER BY PI.ID DESC) as newtb LIMIT 0,25;

    wpf devgridcontrol分组实例源码

    wpf devexpress gridcontrol简单的分组统计功能

    Oracle SQL最佳实践

    如果在GROUP BY中过滤数据,在WHERE从句中指定条件比在HAVING从句中有更好的性能,因为在GROUP之前已经过滤掉数据,因此更少的行被汇总  3.UNION会对两个SELECT语句的结果集执行一个SORT,并消除重复行,成本会...

    hive语法总结

    FROM table_reference [WHERE where_condition] [GROUP BY col_list] [CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list] ] [LIMIT number] 其中,table_reference 是查询的输入,可以是一个普通...

    ls命令替代品exa.zip

    r, --reverse: reverse sort order-R, --recurse: recurse into subdirectories-s, --sort=(field): field to sort by-S, --blocks: show number of file system blocks-t, --time: which timestamp to show for a ...

    os3d_exportobj

    Lets say you have created some sort of simulation inside 3dsmax and want to import that into another tool. Ex cloth simulation. This will create a separate .obj file for every frame and also every ...

    SqlServer千万级分页取数据.sql

    CREATE PROCEDURE SP_Pagination /* *************************************************************** ** 千万数量级分页存储过程 ** ******************************************...8.Group :Group语句,不带Group By

    HDFS读文件并写入Hbase

    从HDFS中读文件,用groupby进行sort,然后写入Hbase中

    SAS中的SQL语句完全教程

    SELECT 语句的基本语法是:SELECT &lt;DISTINCT&gt; object-item &lt;, ...object-item&gt; FROM from-list &lt;WHERE sql-expression_r&gt; &lt;GROUP BY group-by-item &lt;, ... group-by-item&gt;&gt; &lt;HAVING sql-expression_r&gt; &lt;ORDER BY ...

    一个释放临时表空间实例

    Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。...Order by 或 group by Distinct 操作 Union 或 intersect 或 minus Sort-merge joins analyze

    分布式数据仓库Hive大全

    3.2 Order /Sort By 28 4. Hive Join 29 5. HIVE参数设置 31 6. HIVE UDF 33 6.1 基本函数 33 6.1.1 关系操作符 33 6.1.2 代数操作符 34 6.1.3 逻辑操作符 35 6.1.4 复杂类型操作符 35 6.1.5 内建函数 36 6.1.6 数学...

    Hive用户指南

    3.2 Order /Sort By 28 4. Hive Join 29 5. HIVE参数设置 31 6. HIVE UDF 33 6.1 基本函数 33 6.1.1 关系操作符 33 6.1.2 代数操作符 34 6.1.3 逻辑操作符 35 6.1.4 复杂类型操作符 35 6.1.5 内建函数 36 6.1.6 数学...

    #+Mysql执行计划-Extra列解析.pdf

    Using Temporary 通常出现在 group by 语句中,当被 group by 的列不在索引上时。 例如,当我们执行以下查询时,MySQL 就需要使用临时表: SELECT * FROM user GROUP BY name; Using Join Buffer Using Join ...

    Gbase 8s内置函数之窗口函数

    ROW_NUMBER() OVER (PARTITION BY f_deptid ORDER BY f_salary DESC) AS f_order, f_deptname, f_employeename, f_salary FROM (SELECT a.f_employeeid, a.f_deptid, b.f_deptname, a.f_...

Global site tag (gtag.js) - Google Analytics