public String add() throws Exception{
Thread.sleep(2000);
HttpServletRequest request = ServletActionContext.getRequest();
// 起始字母
char arr = 'A';
// 页面传值集合
Map<String,String> mparam = new HashMap<String,String>();
// 单条计算集合
Map<String,Double> result = new HashMap<String,Double>();
// 单项分集合
Map<String,Double> rank = new HashMap<String,Double>();
// 单项排名分集合
Map<String,String> resultrank = new HashMap<String,String>();
// 总分
double resultsum = 0;
// 遍历获取页面传值
while( null != request.getParameter(String.valueOf(arr)+1)){
// 单项分
double sum = 0;
// 单项遍历
for(int i = 1; i < 10; i++){
// 如果单项无更多条则跳出
if(null == request.getParameter(String.valueOf(arr)+i)){
// 跳出前将单项分保存
rank.put(String.valueOf(arr), sum);
// 总分为单项分之和
resultsum += sum;
break;
}
// 保存页面传值
mparam.put(String.valueOf(arr)+i, request.getParameter(String.valueOf(arr)+i));
// 拆分传值字符
String[] str = cutver(request.getParameter(String.valueOf(arr)+i));
// 累计单项分
sum += Double.parseDouble(str[1])*Double.parseDouble(str[2]);
// 计算并保存单条分
result.put(String.valueOf(arr)+i, Double.parseDouble(str[1])*Double.parseDouble(str[2]));
}
// 遍历下一个字母
arr++;
}
if(flag){
// 遍历单项分集合
Iterator<String> it = rank.keySet().iterator();
// 重置最高分
double outdata = 999999999;
// 重置最高分字符
String outkey = null;
// 重置排名
int sum = 1;
// 遍历单项集合
while(it.hasNext()){
// 当前值
String key = it.next();
// 如果最高分为初始值则赋值
if(outdata == 999999999){
outdata = rank.get(key);
outkey = key;
}else{
// 判断值大小,更新最高分
if(outdata<rank.get(key)){
outdata = rank.get(key);
outkey = key;
}
}
// 如果遍历结束
if(!it.hasNext()){
// 将最高分载入集合
resultrank.put(outkey, rank.get(outkey)+"/"+sum++);
// 将最高分从源集合移除
rank.remove(outkey);
// 重置最高分
outdata = 999999999;
outkey = null;
// 如果移除后集合不为空,则重置集合继续遍历
if(rank.size()>0)
it = rank.keySet().iterator();
}
}
System.err.println(mparam);
System.err.println(result);
System.err.println(rank);
System.err.println(resultrank);
message.append("操作成功");
dwzMsg.setStatusCode(200);
dwzMsg.setCallbackType("forward");
dwzMsg.setForwardUrl(ServletActionContext.getRequest().getContextPath()
+ "/control/enterprise/manage_addSuccessUI.do?result="+result);
}else{
dwzMsg.setStatusCode(300);
}
dwzMsg.setMessage(message.toString());
WebUtil.addWarn(dwzMsg);
logger.info(dwzMsg.toString());
return "controlResult";
}
//转换分数
private String transform(double db){
if(db>=90)
return "AAA";
else if(db>=80)
return "AA";
else if(db>=70)
return "A";
else if(db>=60)
return "BBB";
else if(db>=50)
return "BB";
else if(db>=40)
return "B";
else if(db>=30)
return "CCC";
else if(db>=20)
return "CC";
else
return "C";
}
// 单项分排序
public Map<String,String> sorting(Map<String,Double> rank){
Map<String,String> resultrank = new HashMap<String,String>();
// 遍历单项分集合
Iterator<String> it = rank.keySet().iterator();
// 重置最高分
double outdata = 999999999;
// 重置最高分字符
String outkey = null;
// 重置排名
int sum = 1;
// 遍历单项集合
while(it.hasNext()){
// 当前值
String key = it.next();
// 如果最高分为初始值则赋值
if(outdata == 999999999){
outdata = rank.get(key);
outkey = key;
}else{
// 判断值大小,更新最高分
if(outdata<rank.get(key)){
outdata = rank.get(key);
outkey = key;
}
}
// 如果遍历结束
if(!it.hasNext()){
// 将最高分载入集合
resultrank.put(outkey, rank.get(outkey)+"/"+sum++);
// 将最高分从源集合移除
rank.remove(outkey);
// 重置最高分
outdata = 999999999;
outkey = null;
// 如果移除后集合不为空,则重置集合继续遍历
if(rank.size()>0)
it = rank.keySet().iterator();
}
}
return resultrank;
}
// 单条分排序
public LinkedList<String> sorting2(Map<String,Double> rank){
// 单项排名
LinkedList<String> al = new LinkedList<String>();
// 遍历单项分集合
Iterator<String> it = rank.keySet().iterator();
// 重置最高分
double outdata = 999999999;
// 重置最高分字符
String outkey = null;
// 重置排名
int sum = 0;
// 遍历单项集合
while(it.hasNext()){
// 当前值
String key = it.next();
// 如果最高分为初始值则赋值
if(outdata == 999999999){
outdata = rank.get(key);
outkey = key;
}else{
// 判断值大小,更新最高分
if(outdata<rank.get(key)){
outdata = rank.get(key);
outkey = key;
}
}
// 如果遍历结束
if(!it.hasNext()){
// 将最高分载入集合
al.add(sum++,outkey);
// 将最高分从源集合移除
rank.remove(outkey);
// 重置最高分
outdata = 999999999;
outkey = null;
// 如果移除后集合不为空,则重置集合继续遍历
if(rank.size()>0)
it = rank.keySet().iterator();
}
}
return al;
}
// 获取排行0为前三位,其他为后三位,字符中以,隔开
public String getrank(LinkedList<String> al,int i){
// 前三位
if(al.size()<1)return "Null";
if(i == 0){
String first = al.pollFirst();
if(al.size()<1)return first;
String second = al.pollFirst();
if(al.size()<1)return first+second;
return first+","+second+","+al.pollFirst();
}
// 后三位
else{
String first = al.pollLast();
if(al.size()<1)return first;
String second = al.pollLast();
if(al.size()<1)return first+second;
return first+","+second+","+al.pollLast();
}
}