项目中的一个模块

模拟数据:

1 46917 0 家校互动(10元),开通免费<br>亲情电话(2元),开通免费<br>平安短信(2元),开通免费 1 溧水县教育局技装办
2 44149 0 家校互动(10元),免费期已满延长免费期 1 惠讯通讯
3 100 301749 亲情电话(2元),开通免费 2 南京联创 二呆
4 100 301749 家校互动(10元),开通免费 1 南京联创 二呆
5 100 0 亲情电话(2元),开通免费 1 南京联创
6 100 301749 平安短信(2元),开通免费 2 南京联创 二呆
7 17841 0 家校互动(10元),开通免费 7 南教公司
8 44149 0 家校互动(10元),开通免费 2 惠讯通讯
9 44149 414433 家校互动(10元),开通收费 9 惠讯通讯 九叶科技
10 17841 0 亲情电话(2元),免费期已满延长免费期 1 南教公司
11 44149 0 用户换号 2 惠讯通讯
12 100 0 平安短信(2元),开通收费 3 南京联创
13 17841 0 家校互动(10元),开通收费 31 南教公司
14 17841 0 家校互动(10元),开通收费<br>亲情电话(2元),开通免费 16 南教公司

要求:抽出 相同业务的用户短信涉及条数?
FOR:
3 100 301749 亲情电话(2元),开通免费 2 南京联创 二呆
4 100 301749 家校互动(10元),开通免费 1 南京联创 二呆
6 100 301749 平安短信(2元),开通免费 2 南京联创 二呆

是一类数据,抽出相同的 业务,统计数据

5 100 0 亲情电话(2元),开通免费 1 南京联创
12 100 0 平安短信(2元),开通收费 3 南京联创
是一类数据,统计数据,以此类推

实现:首先获取个各个分组数据,并合并业务名称
实现结果如:
《一》
100 - 亲情电话(2元),开通免费|1<br>平安短信(2元),开通收费|3
46917 - 家校互动(10元),开通免费<br>亲情电话(2元),开通免费<br>平安短信(2元),开通免费|1
44149 - 家校互动(10元),免费期已满延长免费期|1<br>家校互动(10元),开通免费|2<br>用户换号|2
100 - 亲情电话(2元),开通免费|2<br>家校互动(10元),开通免费|1<br>平安短信(2元),开通免费|2
17841 - 家校互动(10元),开通免费|7<br>亲情电话(2元),免费期已满延长免费期|1<br>家校互动(10元),开通收费|31<br>家校互动(10元),开通收费<br>亲情电话(2元),开通免费|16
44149 - 家校互动(10元),开通收费|9

《二》
分割业务名称的详细条数
如:
家校互动(10元),开通免费|7
亲情电话(2元),免费期已满延长免费期|1
家校互动(10元),开通收费|31
家校互动(10元),开通收费
亲情电话(2元),开通免费|16

或者

家校互动
亲情电话
平安短信
万事如意|1
出现问题了,并不是每个业务名称的分割都会出现相应条数,有可能一组数据的业务名称为一条总记录
如:
46917 0 家校互动(10元),开通免费<br>亲情电话(2元),开通免费<br>平安短信(2元),开通免费 1 溧水县教育局技装办
说明各个业务 分别都是一条
《三》
获取相应的条数,不管总名称或相应条数
实现如:
>>>>> 家校互动|1
>>>>> 亲情电话|1
>>>>> 平安短信|1
>>>>> 万事如意|1

《四》
各个相应的条数分割后,可能会出现相同的业务名称
如:
家校互动(10元),开通免费
亲情电话(2元),开通免费
平安短信(2元),开通免费|1
家校互动(10元),开通免费
亲情电话(2元),开通免费
平安短信(2元),开通免费|2

各个都出现了2次,并且各个数目不一样
分配各个业务名称相应条数
如:
>>>>> 家校互动(10元),开通免费|1
>>>>> 亲情电话(2元),开通免费|1
>>>>> 平安短信(2元),开通免费|1
>>>>> 家校互动(10元),开通免费|2
>>>>> 亲情电话(2元),开通免费|2
>>>>> 平安短信(2元),开通免费|2

《五》
累计求和:
如:
>>>>> 家校互动(10元),开通免费|1
>>>>> 亲情电话(2元),开通免费|1
>>>>> 平安短信(2元),开通免费|1
>>>>> 家校互动(10元),开通免费|2
>>>>> 亲情电话(2元),开通免费|2
>>>>> 平安短信(2元),开通免费|2

亲情电话(2元),开通免费=3
平安短信(2元),开通免费=3
家校互动(10元),开通免费=3

《六》
返回数据,OK,总共开发时间,一下午+晚上 8点-12点半

实现代码:

List<TCChangeMaster> list = bookManageDao.findUnaudits(djids);
// modify by chengrenyin
Map<Integer,TcBean> map = new HashMap<Integer, TcBean>();
for(TCChangeMaster m:list)
{
if(map.containsKey(m.getAgentl1Id()+m.getAgentl2Id()))
{
TcBean tb = new TcBean();
tb.setAgentl1Id(m.getAgentl1Id());
tb.setAgentl2Id(m.getAgentl2Id());
tb.setAgentl1Name(m.getAgentl1Name());
tb.setAgent21Name(m.getAgentl2Name());

tb.setRemark(map.get(m.getAgentl1Id()+m.getAgentl2Id()).getRemark()+"<br>"+m.getRequestDesc()+"|"+m.getSump());
map.put(m.getAgentl1Id()+m.getAgentl2Id(),tb);
}else
{
TcBean tb = new TcBean();
tb.setAgentl1Id(m.getAgentl1Id());
tb.setAgentl2Id(m.getAgentl2Id());
tb.setAgentl1Name(m.getAgentl1Name());
tb.setAgent21Name(m.getAgentl2Name());
//
tb.setRemark(m.getRequestDesc()+"|"+m.getSump());
map.put(m.getAgentl1Id()+m.getAgentl2Id(),tb);
}
}
// 整理 涉及用户数 by chengrenyin 2010-9-20 重构 requestDesc(解析)
List<TcBean2> list2 = new ArrayList<TcBean2>();

Iterator it = map.entrySet().iterator();
while(it.hasNext())
{
Map.Entry entry = (Map.Entry)it.next();
TcBean t = map.get(entry.getKey());
System.out.println(t.getAgentl1Id()+" - "+t.getRemark());

TcBean2 tb2 = new TcBean2();
tb2.setAgentl1Id(t.getAgentl1Id());
tb2.setAgentl2Id(t.getAgentl2Id());
tb2.setAgentl1Name(t.getAgentl1Name());
tb2.setAgent21Name(t.getAgent21Name());

// args str => result (chengrenyin)
// 调用方法
String requestDesc = "";

}

return list;

--------------------------------------
/**
* Test.java
* com.linkage.justone5.agent
*
* Function: TODO
*
* ver date author
* ──────────────────────────────────
* Sep 2, 2010 程仁银
*
* Copyright (c) 2010, All Rights Reserved.
*/

package com.linkage.justone5.agent;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
* ClassName:Test
* Project:
* Company: LINKAGE
*
* @author 程仁银
* @version
* @since Ver 1.1
* @Date Sep 2, 2010 10:35:47 AM
*
* @see
*/
public class Test
{
OracleDBI2 dbi = new OracleDBI2();
public void method(String str)
{
// *******************************************************************************
String[] array = str.split("<br>");
StringBuffer sb = new StringBuffer();
if(array.length>1)
{
for(int k=0;k<array.length;k++)
{
System.out.println(array[k]);
String[] desc = array[k].split("\\|");
if(desc.length<=1)
{ //requestDesc 里面包含多个值,并且他们的值或其中一个值是下一个值的涉及用户数据
int curr = k+1;
String[] test = array[curr].split("\\|");
if(test.length>1)
{
int tint = Integer.parseInt(test[1]);
sb.append(array[k]);
sb.append("|");
sb.append(String.valueOf(tint));
sb.append("&");
}else
{
sb.append(array[k]);
sb.append("|");
// 如果一行有N多个<br>这样他的下一个值也是没有值 for;家校互动<br>亲情电话<br>平安短信<br>测试短信|1
// 直到取到值为止(到最后一个)
boolean flag = true;
int tempInt = 0;
while(flag)
{
int temp = curr+1;
if(array[temp].split("\\|").length<=1)temp++;
if(array[temp].split("\\|").length>1)
{
String[] tempArray = array[temp].split("\\|");
tempInt = Integer.parseInt(tempArray[1]);
flag = false;
}
}
sb.append(tempInt);
sb.append("&");
// ********************************
curr++;
}
}
if(desc.length>1){sb.append(array[k]);sb.append("&");}
}
}else
{
String[] strx = str.split("\\|");
sb.append(strx[0]);
sb.append(",");
sb.append(strx[1]+"条");
}
System.out.println(sb.toString());
// 目前已分割出不同<br>的所有属性值,获取相同的值相加,展示
Map<String,Integer> resultMap = new HashMap<String, Integer>();
String[] resultTest = sb.toString().split("\\&");
for(int x=0;x<resultTest.length;x++)
{
System.out.println(">>>>> "+resultTest[x]);
String[] temp2 = resultTest[x].split("\\|");
if(resultMap.containsKey(temp2[0]))
{
resultMap.put(temp2[0],Integer.parseInt(temp2[1])+resultMap.get(temp2[0]));
}else
{
resultMap.put(temp2[0],Integer.parseInt(temp2[1]));
}
}
Iterator it = resultMap.entrySet().iterator();
while(it.hasNext())
{
// Map.Entry entry = (Map.Entry)it.next();
System.out.println(it.next());
}
// *******************************************************************************
}
public Test(){}
public static void main(String[] args)
{
String str1 = "家校互动(10元),开通免费|7<br>亲情电话(2元),免费期已满延长免费期|1<br>家校互动(10元),开通收费|31<br>家校互动(10元),开通收费<br>亲情电话(2元),开通免费|16";
String str2 = "家校互动<br>亲情电话<br>平安短信<br>万事如意|1";
String str3 ="家校互动(10元),开通收费|9";
String str4 = "家校互动(10元),开通免费<br>亲情电话(2元),开通免费<br>平安短信(2元),开通免费|1<br>家校互动(10元),开通免费<br>亲情电话(2元),开通免费<br>平安短信(2元),开通免费|2";
new Test().method(str4);
}
}
//家校互动(10元),开通收费亲情电话(2元),开通免费|16

---------------------修改
/**
* DecodeString.java
* com.linkage.justone4.bookmanage.domain
*
* Function: TODO
*
* ver date author
* ──────────────────────────────────
* Sep 21, 2010 程仁银
*
* Copyright (c) 2010, All Rights Reserved.
*/

package com.linkage.justone4.bookmanage.domain;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
* ClassName:DecodeString
* Project:
* Company: LINKAGE
*
* @author 程仁银
* @version
* @since Ver 1.1
* @Date Sep 21, 2010 9:18:50 AM
*
* @see
*/
public class DecodeString {
static StringBuffer stringBuffer ;
public static String decodeString(String str)
{
// *******************************************************************************
String[] array = str.split("<br>");
StringBuffer sb = new StringBuffer();
if(array.length>1)
{
for(int k=0;k<array.length;k++)
{
System.out.println(array[k]);
String[] desc = array[k].split("\\|");
if(desc.length<=1)
{ //requestDesc 里面包含多个值,并且他们的值或其中一个值是下一个值的涉及用户数据
int curr = k+1;
String[] test = array[curr].split("\\|");
if(test.length>1)
{
int tint = Integer.parseInt(test[1]);
sb.append(array[k]);
sb.append("|");
sb.append(String.valueOf(tint));
sb.append("&");
}else
{
sb.append(array[k]);
sb.append("|");
// 如果一行有N多个<br>这样他的下一个值也是没有值 for;家校互动<br>亲情电话<br>平安短信<br>测试短信|1
// 直到取到值为止(到最后一个)
boolean flag = true;
int tempInt = 0;
while(flag)
{
int temp = curr+1;
if(array[temp].split("\\|").length<=1)temp++;
if(array[temp].split("\\|").length>1)
{
String[] tempArray = array[temp].split("\\|");
tempInt = Integer.parseInt(tempArray[1]);
flag = false;
}
}
sb.append(tempInt);
sb.append("&");
// ********************************
curr++;
}
}
if(desc.length>1){sb.append(array[k]);sb.append("&");}
}
}else
{
sb.append(str);
sb.append("&");
}
System.out.println(sb.toString());
// 目前已分割出不同<br>的所有属性值,获取相同的值相加,展示
Map<String,Integer> resultMap = new HashMap<String, Integer>();
String[] resultTest = sb.toString().split("\\&");
for(int x=0;x<resultTest.length;x++)
{
System.out.println(">>>>> "+resultTest[x]);
String[] temp2 = resultTest[x].split("\\|");
if(resultMap.containsKey(temp2[0]))
{
resultMap.put(temp2[0],Integer.parseInt(temp2[1])+resultMap.get(temp2[0]));
}else
{
resultMap.put(temp2[0],Integer.parseInt(temp2[1]));
}
}
stringBuffer = new StringBuffer();
Iterator it = resultMap.entrySet().iterator();
while(it.hasNext())
{
// Map.Entry entry = (Map.Entry)it.next();
stringBuffer.append(it.next().toString());
}
// *******************************************************************************
System.out.println("result = "+ stringBuffer);
return stringBuffer.toString();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值