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;
}