`

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;

}

分享到:
评论

相关推荐

    ORACLE SQL 优化

    2. **Sort Group By 操作**:用于根据特定列对结果进行分组,并结合 `GROUP BY` 子句使用。 **示例** ```sql SELECT MAX(salary) FROM emp; ``` 对于这个简单的查询,优化器会先执行 `Table Access Full` 操作来...

    Python数据分析实践:数据处理操作groupby分组new.pdf

    `groupby`函数还提供了其他参数,如`axis`(指定分组方向)、`as_index`(是否将分组列设为索引)、`sort`(是否对结果排序)等,这些参数可以根据具体需求灵活调整。 举例来说,如果你有一个包含用户购买行为的...

    一文看懂Oracle的执行计划.doc

    SORT GROUP BY是用于对数据进行排序和分组,常在GROUP BY语句中出现。 理解并分析执行计划有助于识别性能瓶颈,例如过多的全表扫描可能导致I/O开销过大,而索引扫描则可能因频繁的磁盘访问导致性能下降。优化执行...

    用Linux命令行实现SQL的groupby

    在IT领域,Linux命令行是系统管理员和开发者们的强大工具,尤其在处理数据和执行...在阅读《用linux命令行实现groupby.docx》这份文档时,读者将会了解更多具体的示例和技巧,进一步提升在Linux环境下处理数据的能力。

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

    MySQL中的`ORDER BY`和`GROUP BY`是SQL查询中两个关键的子句,它们用于对查询结果进行排序和分组。然而,在某些情况下,MySQL可能会使用`Using filesort`来完成这些操作,这通常会导致性能下降。本文将深入探讨`...

    详解python中groupby函数通俗易懂

    在Python的Pandas库中,`groupby()`函数是一个非常重要的功能,用于对DataFrame对象进行分组操作。本文将深入探讨`groupby()`函数的使用方法,帮助读者理解其核心概念,并通过实例来展示如何应用它进行数据处理。 1...

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

    DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs) ``` 1. `by`: 这个参数用于指定分组依据,可以是列名、函数、列表或映射。例如,如果我们...

    详解Python中的分组函数groupby和itertools)

    在Python编程语言中,`groupby`和`itertools`是两个非常重要的工具,它们用于数据处理和分组操作。本文将深入解析这两个概念,并通过实例代码来展示它们的使用方法。 首先,`groupby`函数是Python标准库`itertools`...

    浅谈pandas用groupby后对层级索引levels的处理方法

    然后,作者使用groupby函数按照df1字段对数据进行了分组,并且对每个分组使用了一个自定义的排序函数sort_df2,按照df2字段对每个分组内的数据进行了排序。这里的groupby函数和apply函数的结合使用,使得我们可以对...

    Python视频教程之pandas groupby 分组取每组的前几行记录方法.pdf

    `groupby`函数是pandas中实现这一功能的关键,结合`head()`方法,可以方便地完成这一任务。下面我们将详细讲解如何使用这两个功能。 首先,导入pandas库并创建一个示例DataFrame。在本例中,我们有一个包含两个列的...

    Python视频教程之pandas groupby 分组取每组的前几行记录方法.docx

    `groupby`函数是pandas中实现这一功能的关键,它可以将数据按照指定的列进行分组,而`head()`则用于获取每组的前几行。在本篇Python视频教程中,我们将深入探讨如何使用这两个函数。 首先,我们需要导入pandas库并...

    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 分组取每组的前几行记录方法

    在处理大型数据集时,经常需要对数据进行分组分析,`groupby` 函数正是实现这一目标的关键工具。本篇文章将深入探讨如何使用 `pandas groupby` 分组并获取每组的前几行记录。 `pandas groupby` 方法允许我们将数据...

    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, ...

    DataTable分组

    dv.GroupBy(row =&gt; row["Category"], (key, rows) =&gt; new { Category = key, TotalPrice = rows.AsEnumerable().Sum(r =&gt; (decimal)r["Price"]) }); ``` 在这个例子中,`GroupBy`接受一个Lambda表达式,其中第一个...

    mysql Sort aborted: Out of sort memory, consider increasing server sort buffer size的解决方法

    MySQL中的"Sort aborted: Out of sort memory, consider increasing server sort buffer size"错误通常发生在数据库执行涉及排序操作的查询时,如ORDER BY或GROUP BY语句。这个错误表明MySQL在执行查询过程中分配的...

    一步一步跟我学习lucene(12)---lucene搜索之分组处理group查询

    在"一步一步跟我学习lucene(12)---lucene搜索之分组处理group查询"中,我们将重点关注如何利用Lucene实现这一高级搜索功能。 首先,Lucene是一个开源全文搜索引擎库,它为Java开发者提供了构建高效、可扩展的搜索...

Global site tag (gtag.js) - Google Analytics