- 浏览: 42881 次
- 性别:
- 来自: 大连
文章分类
最新评论
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;
}
发表评论
-
calendar
2012-11-19 20:01 542import java.util.Calendar;publi ... -
javaGroup
2012-12-10 10:06 730public List<IpnorsDetailK ... -
DMP文件导入
2012-09-25 15:48 477http://wenku.baidu.com/view/b6a ... -
spring 线程池
2012-09-25 14:31 630http://wenku.baidu.com/view/e45 ... -
ibats with spring
2012-09-25 12:38 599http://wenku.baidu.com/view/132 ... -
Spring自动代理机制
2012-09-25 11:28 1957Spring自动代理机制 (残梦 ...
相关推荐
2. **Sort Group By 操作**:用于根据特定列对结果进行分组,并结合 `GROUP BY` 子句使用。 **示例** ```sql SELECT MAX(salary) FROM emp; ``` 对于这个简单的查询,优化器会先执行 `Table Access Full` 操作来...
`groupby`函数还提供了其他参数,如`axis`(指定分组方向)、`as_index`(是否将分组列设为索引)、`sort`(是否对结果排序)等,这些参数可以根据具体需求灵活调整。 举例来说,如果你有一个包含用户购买行为的...
SORT GROUP BY是用于对数据进行排序和分组,常在GROUP BY语句中出现。 理解并分析执行计划有助于识别性能瓶颈,例如过多的全表扫描可能导致I/O开销过大,而索引扫描则可能因频繁的磁盘访问导致性能下降。优化执行...
在IT领域,Linux命令行是系统管理员和开发者们的强大工具,尤其在处理数据和执行...在阅读《用linux命令行实现groupby.docx》这份文档时,读者将会了解更多具体的示例和技巧,进一步提升在Linux环境下处理数据的能力。
MySQL中的`ORDER BY`和`GROUP BY`是SQL查询中两个关键的子句,它们用于对查询结果进行排序和分组。然而,在某些情况下,MySQL可能会使用`Using filesort`来完成这些操作,这通常会导致性能下降。本文将深入探讨`...
在Python的Pandas库中,`groupby()`函数是一个非常重要的功能,用于对DataFrame对象进行分组操作。本文将深入探讨`groupby()`函数的使用方法,帮助读者理解其核心概念,并通过实例来展示如何应用它进行数据处理。 1...
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs) ``` 1. `by`: 这个参数用于指定分组依据,可以是列名、函数、列表或映射。例如,如果我们...
在Python编程语言中,`groupby`和`itertools`是两个非常重要的工具,它们用于数据处理和分组操作。本文将深入解析这两个概念,并通过实例代码来展示它们的使用方法。 首先,`groupby`函数是Python标准库`itertools`...
然后,作者使用groupby函数按照df1字段对数据进行了分组,并且对每个分组使用了一个自定义的排序函数sort_df2,按照df2字段对每个分组内的数据进行了排序。这里的groupby函数和apply函数的结合使用,使得我们可以对...
`groupby`函数是pandas中实现这一功能的关键,结合`head()`方法,可以方便地完成这一任务。下面我们将详细讲解如何使用这两个功能。 首先,导入pandas库并创建一个示例DataFrame。在本例中,我们有一个包含两个列的...
`groupby`函数是pandas中实现这一功能的关键,它可以将数据按照指定的列进行分组,而`head()`则用于获取每组的前几行。在本篇Python视频教程中,我们将深入探讨如何使用这两个函数。 首先,我们需要导入pandas库并...
| sorted指定字段排序 | sortBy自定义排序 | sortWith分组(groupBy)聚合(reduce/fold)聚合 | reduce折叠 | fold 遍历(foreach) 格式 foreach(f: (A) ⇒ Unit): Unit 说明 foreach API 说明 参数 f:(A)...
在处理大型数据集时,经常需要对数据进行分组分析,`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, ...
dv.GroupBy(row => row["Category"], (key, rows) => new { Category = key, TotalPrice = rows.AsEnumerable().Sum(r => (decimal)r["Price"]) }); ``` 在这个例子中,`GroupBy`接受一个Lambda表达式,其中第一个...
MySQL中的"Sort aborted: Out of sort memory, consider increasing server sort buffer size"错误通常发生在数据库执行涉及排序操作的查询时,如ORDER BY或GROUP BY语句。这个错误表明MySQL在执行查询过程中分配的...
在"一步一步跟我学习lucene(12)---lucene搜索之分组处理group查询"中,我们将重点关注如何利用Lucene实现这一高级搜索功能。 首先,Lucene是一个开源全文搜索引擎库,它为Java开发者提供了构建高效、可扩展的搜索...