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;

}

猜你喜欢

转载自moving200x.iteye.com/blog/1744771