package com.minpay.common.util; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 辅助工具 */ public class AuxiliaryTools { /** * 解析抢修工单描述 * @param jagd * @param param * @return */ public static Object getQxgdDesc(JSONArray jagd, Map param) { int sum = 0,sumYear = 0,xj = 0,pm = -1,pmYear = -1,cs = 0,maxCs = 0,ddxccss = 0; float wh = 0f,whYear = 0f,tempWh = 0f,minWh = 0f,maxWh = 0f; String min = "",max = "",maxcs = "",tempDW = ""; if(jagd != null ){ JSONObject tempJo; for (int i = 0; i < jagd.size(); i++) { tempJo = jagd.getJSONObject(i); tempDW = tempJo.getString("DFD11_GDDW"); tempWh = StringUtil.ObjToFloat(tempJo.getString("WH")); cs = StringUtil.ObjToInt(tempJo.getString("GDCSZS")); if("公司累计".equals(tempDW)){ sum = StringUtil.ObjToInt(tempJo.getString("GDZS"));//累计 wh = StringUtil.ObjToFloat(tempJo.getString("WH"));// xj = StringUtil.ObjToInt(tempJo.getString("YSXJHD")); }else{ ddxccss = ArithUtils.addToInt(ddxccss,tempJo.getString("DDXCCSS"));//到达现场超时数 if(tempWh <= minWh){ minWh = tempWh; min = tempDW; } if(tempWh >= maxWh){ maxWh = tempWh; max = tempDW; } if(maxCs >= cs){ maxcs = tempDW; } } } } StringBuffer descStr = new StringBuffer(); descStr.append("受理抢修类工单") .append(sum) .append("件,万户报修率") .append(wh) .append(",全省排名第") .append(pm) .append(",") .append("报修率较低的为") .append(min) .append(",较高的为") .append(max) .append("。抢修到达现场及时率"); if(sum == 0){ descStr.append(100); }else{ descStr.append((sum - ddxccss)/sum*100); } descStr.append("%;"); if("".equals(maxcs)){ descStr.append(maxcs) .append("超70分钟工单") .append(maxCs).append("件。"); } descStr.append("疑似虚假回单") .append(xj) .append("件。") .append("无因报修引发的诉求升级工单。全年累计受理抢修类工单") .append(sumYear) .append("件,万户报修率") .append(whYear) .append(",全省排名第") .append(pmYear) .append("。不涉及电采暖用户"); return descStr.toString(); } /** * 解析抢修工单数据 * @param list * @param unit * @param tempjo * @return */ public static Map getQxgdByParam(List> list, String unit, JSONObject tempjo) { if(list != null && !list.isEmpty()){ JSONObject temp; String tempUnit = "",gzlx = ""; JSONObject ddd , ddd2; for (int i = 0; i < list.size(); i++) { temp = JSONObject.fromObject(list.get(i)); tempUnit = temp.getString("DFD11_GDDW"); if(unit.equals(tempUnit)){ gzlx = temp.getString("GZLX"); switch (gzlx){ case "A": tempjo.put("GZLS-A",ArithUtils.add(tempjo.getString("GZLS-A"),String.valueOf(1))); break; case "B": tempjo.put("GZLS-B",ArithUtils.add(tempjo.getString("GZLS-B"),String.valueOf(1))); break; case "C": tempjo.put("GZLS-C",ArithUtils.add(tempjo.getString("GZLS-C"),String.valueOf(1))); break; case "D": tempjo.put("GZLS-D",ArithUtils.add(tempjo.getString("GZLS-D"),String.valueOf(1))); break; default: break; } tempjo.put("GDZS",ArithUtils.addToInt(tempjo.getString("GDZS"),String.valueOf(1)));//工单总数 累加 tempjo.put("DFD11_QXZSC",ArithUtils.add(tempjo.getString("DFD11_QXZSC"),temp.getString("DFD11_QXZSC")));//抢修总时长累加 ddd = JSONObject.fromObject(temp.get("DFD11_TJSHSJ")); ddd2 = JSONObject.fromObject(temp.get("DFD11_GDSJ")); tempjo.put("GDCLSJ",ArithUtils.add(tempjo.getString("GDCLSJ"),StringUtil.ObjectToString(StringUtil.dateCalculate2((Long)ddd.get("time"),(Long)ddd2.get("time"))))); ddd = JSONObject.fromObject(temp.get("DFD11_SCPFQXDSJ")); ddd2 = JSONObject.fromObject(temp.get("DFD11_DWXCSJ")); tempjo.put("DDXCSJ",ArithUtils.add(tempjo.getString("DDXCSJ"),StringUtil.ObjectToString(StringUtil.dateCalculate2((Long)ddd.get("time"),(Long)ddd2.get("time"))))); tempjo.remove("DFD11_TJSHSJ"); tempjo.remove("DFD11_GDSJ"); tempjo.remove("DFD11_SCPFQXDSJ"); tempjo.remove("DFD11_DWXCSJ"); list.remove(i); i--; } } } return null; } /** * 获取配变描述信息 * @param ja3 过载 * @param ja4 重载 * @param param * @return */ public static List getXlPbgzzDesc(JSONArray ja3, JSONArray ja4, Map param) { List list = new ArrayList(); StringBuffer descStr = new StringBuffer(); //过载 String maxGb = StringUtil.ObjectToString(param.get("maxPbName1")); String avg = ""; if(ja3 != null && !ja3.isEmpty()){ descStr.append("监测发现公变过载") .append(ja3.size()) .append("个,"); int size = ja3.size(); Map temp = new HashMap(); for (int i = 0; i < size; i++) { JSONObject jo = ja3.getJSONObject(i); String key = jo.getString("KEYSS"); if(key.equals(maxGb)){ avg = jo.getString("avg"); maxGb = jo.getString("DFD9_GBMC"); } String unit = jo.getString("DFD9_UNIT"); if(temp.containsKey(unit)){ temp.put(unit,Integer.valueOf(String.valueOf(temp.get(unit))) + 1); }else{ temp.put(unit,1); } } if(!temp.isEmpty()){ descStr.append("分别为"); } for (Map.Entry entry : temp.entrySet()) { descStr.append(entry.getKey()) .append(entry.getValue()) .append("个,"); } descStr.append("其中").append(maxGb).append(","); descStr.append("过载时长最长" + StringUtil.ObjToFloat(param.get("maxPb1")) + "小时,平均负载率为" + avg + "%。") .append("原因为:") .append(param.get("reason1")) .append("。") .append("措施为:") .append(param.get("cs1")) .append("。"); descStr.append("不涉及电采暖线路。"); }else{ descStr.append("监测发现公变过载。"); } //重载 StringBuffer descStr2 = new StringBuffer(); String maxGb2 = StringUtil.ObjectToString(param.get("maxPbName2")); String avg2 = ""; if(ja4 != null && !ja4.isEmpty()){ descStr2.append("监测发现公变重载") .append(ja4.size()) .append("个,"); int size = ja4.size(); Map temp = new HashMap(); for (int i = 0; i < size; i++) { JSONObject jo = ja4.getJSONObject(i); String key = jo.getString("KEYSS"); if(key.equals(maxGb2)){ avg2 = jo.getString("avg"); maxGb2 = jo.getString("DFD9_GBMC"); } String unit = jo.getString("DFD9_UNIT"); if(temp.containsKey(unit)){ temp.put(unit,Integer.valueOf(String.valueOf(temp.get(unit))) + 1); }else{ temp.put(unit,1); } } if(!temp.isEmpty()){ descStr2.append("分别为"); for (Map.Entry entry : temp.entrySet()) { descStr2.append(entry.getKey()) .append(entry.getValue()) .append("个,"); } } descStr2.append("其中").append(maxGb2).append(","); descStr2.append("重载时长最长" + StringUtil.ObjToFloat(param.get("maxPb2")) + "小时,平均负载率为" + avg2 + "%。") .append("原因为:") .append(param.get("reason1")) .append("。") .append("措施为:") .append(param.get("cs1")) .append("。"); descStr2.append("不涉及电采暖线路。"); }else{ descStr2.append("监测发现公变过载。"); } list.add(descStr.toString()); list.add(descStr2.toString()); return list; } /** * 查找最大值详情 * @param list * @param param */ public static void getMaxPbByParam(List> list, Map param) { List> tempList1 = new ArrayList>(); List> tempList2 = new ArrayList>(); if(list != null && !list.isEmpty()){ for (int i = 0; i < list.size(); i++) { Map temp = list.get(i); Object fzl = temp.get("DFD9_FZL"); if(StringUtil.ObjToFloat(fzl) > 100){ tempList1.add(temp); }else if(StringUtil.ObjToFloat(fzl) <= 100 && StringUtil.ObjToFloat(fzl) >= 80){ tempList2.add(temp); } } } //获取配变数据最大值 float maxPb1 = 0f; float maxPb2 = 0f; //过载 if(tempList1 != null && !tempList1.isEmpty()){ int size = tempList1.size(); for (int i = 0; i < size; i++) { Map temp = tempList1.get(i); float fzl = StringUtil.ObjToFloat(temp.get("DFD9_GZSC")); if(maxPb1 < fzl){ maxPb1 = fzl; param.put("gbmc1",temp.get("DFD9_GBMC"));//公变名称 param.put("reason1",temp.get("DFD9_JTYY"));//具体原因 param.put("cs1",temp.get("DFD9_JTJJCS"));//具体解决措施 param.put("maxPbName1",temp.get("KEYSS")); } } param.put("maxPb1",maxPb1); } //重载 if(tempList2 != null && !tempList2.isEmpty()){ int size = tempList2.size(); for (int i = 0; i < size; i++) { Map temp = tempList2.get(i); float fzl = StringUtil.ObjToFloat(temp.get("DFD9_ZZSC")); if(maxPb2 < fzl){ maxPb2 = fzl; param.put("gbmc2",temp.get("DFD9_GBMC"));//公变名称 param.put("reason2",temp.get("DFD9_JTYY"));//具体原因 param.put("cs2",temp.get("DFD9_JTJJCS"));//具体解决措施 param.put("maxPbName2",temp.get("KEYSS")); } } param.put("maxPb2",maxPb2); } } /** * 获取线路配变重过载数据 * @param pbgzzList * @param key * @return */ public static Map getXlPbgzzTjByParam(List> pbgzzList, String key, String type) { Map rstMap = new HashMap(); rstMap.put("sc",""); rstMap.put("pjfzl",""); rstMap.put("xlts",""); if(pbgzzList == null || pbgzzList.isEmpty()){ return rstMap; }else{ int size = pbgzzList.size(); float sum = 0f; float avg = 0f; int index = 0; for (int i = 0; i < size; i++) { Map temp = pbgzzList.get(i); Object fzl = temp.get("DFD9_FZL"); if("1".equals(type) && StringUtil.ObjToFloat(fzl) > 100){//过载 String tempkey = temp.get("KEYSS");//单位 if(tempkey.equals(key)){ sum = ArithUtils.add(String.valueOf(sum),String.valueOf(temp.get("DFD9_GZSC"))); avg = ArithUtils.add(String.valueOf(avg),String.valueOf(temp.get("DFD9_FZL"))); index ++; } }else if("2".equals(type) && StringUtil.ObjToFloat(fzl) <= 100 && StringUtil.ObjToFloat(fzl) >= 80) {//重载 String tempkey = temp.get("KEYSS");//单位 if(tempkey.equals(key)){ sum = ArithUtils.add(String.valueOf(sum),String.valueOf(temp.get("DFD9_ZZSC"))); avg = ArithUtils.add(String.valueOf(avg),String.valueOf(temp.get("DFD9_FZL"))); index ++; } } } rstMap.put("sc",StringUtil.ObjectToString(sum)); rstMap.put("pjfzl",StringUtil.ObjectToString(avg)); rstMap.put("xlts",StringUtil.ObjectToString(index)); } return rstMap; } /** * 获取线路描述信息 * @param ja 重载 * @param ja2 过载 * @param param 附加参数 * @return */ public static List getXlgzzDesc(JSONArray ja, JSONArray ja2, Map param) { String maxXlName = StringUtil.ObjectToString(param.get("maxXlName")); List list = new ArrayList(); StringBuffer rst = new StringBuffer(); if(ja == null || ja.size() <= 0){ rst.append("监测未发现线路重载。"); }else{ rst.append("监测发现线路重载") .append(ja.size() ) .append("条。"); Map map = new HashMap(); String xlmc = ""; for (int i = 0; i < ja.size(); i++) { JSONObject jo = ja.getJSONObject(i); String key = StringUtil.ObjectToString(jo.get("DFD10_XGSMC"));//县公司名称 String keys = StringUtil.ObjectToString(jo.get("KEYSS")); if(maxXlName.equals(keys)){ maxXlName = jo.getString("avg"); xlmc = jo.getString("DFD10_XLMC"); } if(map.containsKey(key)){ map.put(key,Integer.valueOf(String.valueOf(map.get(key))) + 1); }else{ map.put(key,1); } } if(!map.isEmpty()){ rst.append("分别为"); } for (Map.Entry entry : map.entrySet()) { rst.append(entry.getKey()) .append(entry.getValue()) .append("条,"); } rst.append("其中").append(xlmc).append(","); rst.append("重载时长最长" + StringUtil.ObjToFloat(param.get("maxZzsc")) + "小时,平均负载率为" + maxXlName + "%。"); rst.append("不涉及电采暖线路。"); } //******************************过载***************************************// StringBuffer rst2 = new StringBuffer(); maxXlName = StringUtil.ObjectToString(param.get("maxXlName2")); if(ja2 == null || ja2.size() <= 0){ rst2.append("监测未发现线路过载。"); }else{ rst2.append("监测发现线路过载"); rst2.append(ja2.size() ) .append("条。"); Map map = new HashMap(); String xlmc = ""; for (int i = 0; i < ja2.size(); i++) { JSONObject jo = ja2.getJSONObject(i); String key = StringUtil.ObjectToString(jo.get("DFD10_XGSMC"));//县公司名称 String keys = StringUtil.ObjectToString(jo.get("KEYSS")); if(maxXlName.equals(keys)){ maxXlName = jo.getString("avg"); xlmc = jo.getString("DFD10_XLMC"); } if(map.containsKey(key)){ map.put(key,Integer.valueOf(String.valueOf(map.get(key))) + 1); }else{ map.put(key,1); } } if(!map.isEmpty()){ rst2.append("分别为"); } for (Map.Entry entry : map.entrySet()) { rst2.append(entry.getKey()) .append(entry.getValue()) .append("条,"); } rst2.append("其中").append(xlmc).append(","); rst2.append("过载时长最长" + StringUtil.ObjToFloat(param.get("maxZzsc")) + "小时,平均负载率为" + maxXlName + "%。"); rst2.append("不涉及电采暖线路。"); } list.add(rst.toString()); list.add(rst2.toString()); return list; } /** * 获取线路统计信息 * @param ddyzlfxbList * @param key * @return */ public static Map getXlgzzTjByParam(List> ddyzlfxbList, String key) { Map map = new HashMap(); if(ddyzlfxbList == null || ddyzlfxbList.isEmpty()){ map.put("sc",""); map.put("pjfzl",""); map.put("xlts",""); return map; }else{ Map temp = new HashMap(); float sum = 0f; int index = 0; float avg = 0f; for (int i = 0; i < ddyzlfxbList.size(); i++) { temp = ddyzlfxbList.get(i); String tempkey = temp.get("KEYSS");//单位 if(key.equals(tempkey)){ sum = ArithUtils.add(String.valueOf(sum),String.valueOf(temp.get("DFD10_GZSC"))); avg = ArithUtils.add(String.valueOf(avg),String.valueOf(temp.get("DFD10_FZL"))); index ++; } } map.put("sc",sum + ""); map.put("pjfzl",avg + ""); map.put("xlts",index + ""); } return map; } }