AuxiliaryTools.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469
  1. package com.minpay.common.util;
  2. import net.sf.json.JSONArray;
  3. import net.sf.json.JSONObject;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. /**
  9. * 辅助工具
  10. */
  11. public class AuxiliaryTools {
  12. /**
  13. * 解析抢修工单描述
  14. * @param jagd
  15. * @param param
  16. * @return
  17. */
  18. public static Object getQxgdDesc(JSONArray jagd, Map<String, Object> param) {
  19. int sum = 0,sumYear = 0,xj = 0,pm = -1,pmYear = -1,cs = 0,maxCs = 0,ddxccss = 0;
  20. float wh = 0f,whYear = 0f,tempWh = 0f,minWh = 0f,maxWh = 0f;
  21. String min = "",max = "",maxcs = "",tempDW = "";
  22. if(jagd != null ){
  23. JSONObject tempJo;
  24. for (int i = 0; i < jagd.size(); i++) {
  25. tempJo = jagd.getJSONObject(i);
  26. tempDW = tempJo.getString("DFD11_GDDW");
  27. tempWh = StringUtil.ObjToFloat(tempJo.getString("WH"));
  28. cs = StringUtil.ObjToInt(tempJo.getString("GDCSZS"));
  29. if("公司累计".equals(tempDW)){
  30. sum = StringUtil.ObjToInt(tempJo.getString("GDZS"));//累计
  31. wh = StringUtil.ObjToFloat(tempJo.getString("WH"));//
  32. xj = StringUtil.ObjToInt(tempJo.getString("YSXJHD"));
  33. }else{
  34. ddxccss = ArithUtils.addToInt(ddxccss,tempJo.getString("DDXCCSS"));//到达现场超时数
  35. if(tempWh <= minWh){
  36. minWh = tempWh;
  37. min = tempDW;
  38. }
  39. if(tempWh >= maxWh){
  40. maxWh = tempWh;
  41. max = tempDW;
  42. }
  43. if(maxCs >= cs){
  44. maxcs = tempDW;
  45. }
  46. }
  47. }
  48. }
  49. StringBuffer descStr = new StringBuffer();
  50. descStr.append("受理抢修类工单")
  51. .append(sum)
  52. .append("件,万户报修率")
  53. .append(wh)
  54. .append(",全省排名第")
  55. .append(pm)
  56. .append(",")
  57. .append("报修率较低的为")
  58. .append(min)
  59. .append(",较高的为")
  60. .append(max)
  61. .append("。抢修到达现场及时率");
  62. if(sum == 0){
  63. descStr.append(100);
  64. }else{
  65. descStr.append((sum - ddxccss)/sum*100);
  66. }
  67. descStr.append("%;");
  68. if("".equals(maxcs)){
  69. descStr.append(maxcs)
  70. .append("超70分钟工单")
  71. .append(maxCs).append("件。");
  72. }
  73. descStr.append("疑似虚假回单")
  74. .append(xj)
  75. .append("件。")
  76. .append("无因报修引发的诉求升级工单。全年累计受理抢修类工单")
  77. .append(sumYear)
  78. .append("件,万户报修率")
  79. .append(whYear)
  80. .append(",全省排名第")
  81. .append(pmYear)
  82. .append("。不涉及电采暖用户");
  83. return descStr.toString();
  84. }
  85. /**
  86. * 解析抢修工单数据
  87. * @param list
  88. * @param unit
  89. * @param tempjo
  90. * @return
  91. */
  92. public static Map<String, String> getQxgdByParam(List<Map<String, String>> list, String unit, JSONObject tempjo) {
  93. if(list != null && !list.isEmpty()){
  94. JSONObject temp;
  95. String tempUnit = "",gzlx = "";
  96. JSONObject ddd , ddd2;
  97. for (int i = 0; i < list.size(); i++) {
  98. temp = JSONObject.fromObject(list.get(i));
  99. tempUnit = temp.getString("DFD11_GDDW");
  100. if(unit.equals(tempUnit)){
  101. gzlx = temp.getString("GZLX");
  102. switch (gzlx){
  103. case "A":
  104. tempjo.put("GZLS-A",ArithUtils.add(tempjo.getString("GZLS-A"),String.valueOf(1)));
  105. break;
  106. case "B":
  107. tempjo.put("GZLS-B",ArithUtils.add(tempjo.getString("GZLS-B"),String.valueOf(1)));
  108. break;
  109. case "C":
  110. tempjo.put("GZLS-C",ArithUtils.add(tempjo.getString("GZLS-C"),String.valueOf(1)));
  111. break;
  112. case "D":
  113. tempjo.put("GZLS-D",ArithUtils.add(tempjo.getString("GZLS-D"),String.valueOf(1)));
  114. break;
  115. default:
  116. break;
  117. }
  118. tempjo.put("GDZS",ArithUtils.addToInt(tempjo.getString("GDZS"),String.valueOf(1)));//工单总数 累加
  119. tempjo.put("DFD11_QXZSC",ArithUtils.add(tempjo.getString("DFD11_QXZSC"),temp.getString("DFD11_QXZSC")));//抢修总时长累加
  120. ddd = JSONObject.fromObject(temp.get("DFD11_TJSHSJ"));
  121. ddd2 = JSONObject.fromObject(temp.get("DFD11_GDSJ"));
  122. tempjo.put("GDCLSJ",ArithUtils.add(tempjo.getString("GDCLSJ"),StringUtil.ObjectToString(StringUtil.dateCalculate2((Long)ddd.get("time"),(Long)ddd2.get("time")))));
  123. ddd = JSONObject.fromObject(temp.get("DFD11_SCPFQXDSJ"));
  124. ddd2 = JSONObject.fromObject(temp.get("DFD11_DWXCSJ"));
  125. tempjo.put("DDXCSJ",ArithUtils.add(tempjo.getString("DDXCSJ"),StringUtil.ObjectToString(StringUtil.dateCalculate2((Long)ddd.get("time"),(Long)ddd2.get("time")))));
  126. tempjo.remove("DFD11_TJSHSJ");
  127. tempjo.remove("DFD11_GDSJ");
  128. tempjo.remove("DFD11_SCPFQXDSJ");
  129. tempjo.remove("DFD11_DWXCSJ");
  130. list.remove(i);
  131. i--;
  132. }
  133. }
  134. }
  135. return null;
  136. }
  137. /**
  138. * 获取配变描述信息
  139. * @param ja3 过载
  140. * @param ja4 重载
  141. * @param param
  142. * @return
  143. */
  144. public static List<String> getXlPbgzzDesc(JSONArray ja3, JSONArray ja4, Map<String, Object> param) {
  145. List<String> list = new ArrayList<String>();
  146. StringBuffer descStr = new StringBuffer();
  147. //过载
  148. String maxGb = StringUtil.ObjectToString(param.get("maxPbName1"));
  149. String avg = "";
  150. if(ja3 != null && !ja3.isEmpty()){
  151. descStr.append("监测发现公变过载")
  152. .append(ja3.size())
  153. .append("个,");
  154. int size = ja3.size();
  155. Map<String,Object> temp = new HashMap<String,Object>();
  156. for (int i = 0; i < size; i++) {
  157. JSONObject jo = ja3.getJSONObject(i);
  158. String key = jo.getString("KEYSS");
  159. if(key.equals(maxGb)){
  160. avg = jo.getString("avg");
  161. maxGb = jo.getString("DFD9_GBMC");
  162. }
  163. String unit = jo.getString("DFD9_UNIT");
  164. if(temp.containsKey(unit)){
  165. temp.put(unit,Integer.valueOf(String.valueOf(temp.get(unit))) + 1);
  166. }else{
  167. temp.put(unit,1);
  168. }
  169. }
  170. if(!temp.isEmpty()){
  171. descStr.append("分别为");
  172. }
  173. for (Map.Entry<String, Object> entry : temp.entrySet()) {
  174. descStr.append(entry.getKey())
  175. .append(entry.getValue())
  176. .append("个,");
  177. }
  178. descStr.append("其中").append(maxGb).append(",");
  179. descStr.append("过载时长最长" + StringUtil.ObjToFloat(param.get("maxPb1")) + "小时,平均负载率为" + avg + "%。")
  180. .append("原因为:")
  181. .append(param.get("reason1"))
  182. .append("。")
  183. .append("措施为:")
  184. .append(param.get("cs1"))
  185. .append("。");
  186. descStr.append("不涉及电采暖线路。");
  187. }else{
  188. descStr.append("监测发现公变过载。");
  189. }
  190. //重载
  191. StringBuffer descStr2 = new StringBuffer();
  192. String maxGb2 = StringUtil.ObjectToString(param.get("maxPbName2"));
  193. String avg2 = "";
  194. if(ja4 != null && !ja4.isEmpty()){
  195. descStr2.append("监测发现公变重载")
  196. .append(ja4.size())
  197. .append("个,");
  198. int size = ja4.size();
  199. Map<String,Object> temp = new HashMap<String,Object>();
  200. for (int i = 0; i < size; i++) {
  201. JSONObject jo = ja4.getJSONObject(i);
  202. String key = jo.getString("KEYSS");
  203. if(key.equals(maxGb2)){
  204. avg2 = jo.getString("avg");
  205. maxGb2 = jo.getString("DFD9_GBMC");
  206. }
  207. String unit = jo.getString("DFD9_UNIT");
  208. if(temp.containsKey(unit)){
  209. temp.put(unit,Integer.valueOf(String.valueOf(temp.get(unit))) + 1);
  210. }else{
  211. temp.put(unit,1);
  212. }
  213. }
  214. if(!temp.isEmpty()){
  215. descStr2.append("分别为");
  216. for (Map.Entry<String, Object> entry : temp.entrySet()) {
  217. descStr2.append(entry.getKey())
  218. .append(entry.getValue())
  219. .append("个,");
  220. }
  221. }
  222. descStr2.append("其中").append(maxGb2).append(",");
  223. descStr2.append("重载时长最长" + StringUtil.ObjToFloat(param.get("maxPb2")) + "小时,平均负载率为" + avg2 + "%。")
  224. .append("原因为:")
  225. .append(param.get("reason1"))
  226. .append("。")
  227. .append("措施为:")
  228. .append(param.get("cs1"))
  229. .append("。");
  230. descStr2.append("不涉及电采暖线路。");
  231. }else{
  232. descStr2.append("监测发现公变过载。");
  233. }
  234. list.add(descStr.toString());
  235. list.add(descStr2.toString());
  236. return list;
  237. }
  238. /**
  239. * 查找最大值详情
  240. * @param list
  241. * @param param
  242. */
  243. public static void getMaxPbByParam(List<Map<String, String>> list, Map<String, Object> param) {
  244. List<Map<String, String>> tempList1 = new ArrayList<Map<String, String>>();
  245. List<Map<String, String>> tempList2 = new ArrayList<Map<String, String>>();
  246. if(list != null && !list.isEmpty()){
  247. for (int i = 0; i < list.size(); i++) {
  248. Map<String, String> temp = list.get(i);
  249. Object fzl = temp.get("DFD9_FZL");
  250. if(StringUtil.ObjToFloat(fzl) > 100){
  251. tempList1.add(temp);
  252. }else if(StringUtil.ObjToFloat(fzl) <= 100 && StringUtil.ObjToFloat(fzl) >= 80){
  253. tempList2.add(temp);
  254. }
  255. }
  256. }
  257. //获取配变数据最大值
  258. float maxPb1 = 0f;
  259. float maxPb2 = 0f;
  260. //过载
  261. if(tempList1 != null && !tempList1.isEmpty()){
  262. int size = tempList1.size();
  263. for (int i = 0; i < size; i++) {
  264. Map<String, String> temp = tempList1.get(i);
  265. float fzl = StringUtil.ObjToFloat(temp.get("DFD9_GZSC"));
  266. if(maxPb1 < fzl){
  267. maxPb1 = fzl;
  268. param.put("gbmc1",temp.get("DFD9_GBMC"));//公变名称
  269. param.put("reason1",temp.get("DFD9_JTYY"));//具体原因
  270. param.put("cs1",temp.get("DFD9_JTJJCS"));//具体解决措施
  271. param.put("maxPbName1",temp.get("KEYSS"));
  272. }
  273. }
  274. param.put("maxPb1",maxPb1);
  275. }
  276. //重载
  277. if(tempList2 != null && !tempList2.isEmpty()){
  278. int size = tempList2.size();
  279. for (int i = 0; i < size; i++) {
  280. Map<String, String> temp = tempList2.get(i);
  281. float fzl = StringUtil.ObjToFloat(temp.get("DFD9_ZZSC"));
  282. if(maxPb2 < fzl){
  283. maxPb2 = fzl;
  284. param.put("gbmc2",temp.get("DFD9_GBMC"));//公变名称
  285. param.put("reason2",temp.get("DFD9_JTYY"));//具体原因
  286. param.put("cs2",temp.get("DFD9_JTJJCS"));//具体解决措施
  287. param.put("maxPbName2",temp.get("KEYSS"));
  288. }
  289. }
  290. param.put("maxPb2",maxPb2);
  291. }
  292. }
  293. /**
  294. * 获取线路配变重过载数据
  295. * @param pbgzzList
  296. * @param key
  297. * @return
  298. */
  299. public static Map<String, String> getXlPbgzzTjByParam(List<Map<String, String>> pbgzzList, String key, String type) {
  300. Map<String,String> rstMap = new HashMap<String,String>();
  301. rstMap.put("sc","");
  302. rstMap.put("pjfzl","");
  303. rstMap.put("xlts","");
  304. if(pbgzzList == null || pbgzzList.isEmpty()){
  305. return rstMap;
  306. }else{
  307. int size = pbgzzList.size();
  308. float sum = 0f;
  309. float avg = 0f;
  310. int index = 0;
  311. for (int i = 0; i < size; i++) {
  312. Map<String,String> temp = pbgzzList.get(i);
  313. Object fzl = temp.get("DFD9_FZL");
  314. if("1".equals(type) && StringUtil.ObjToFloat(fzl) > 100){//过载
  315. String tempkey = temp.get("KEYSS");//单位
  316. if(tempkey.equals(key)){
  317. sum = ArithUtils.add(String.valueOf(sum),String.valueOf(temp.get("DFD9_GZSC")));
  318. avg = ArithUtils.add(String.valueOf(avg),String.valueOf(temp.get("DFD9_FZL")));
  319. index ++;
  320. }
  321. }else if("2".equals(type) && StringUtil.ObjToFloat(fzl) <= 100 && StringUtil.ObjToFloat(fzl) >= 80) {//重载
  322. String tempkey = temp.get("KEYSS");//单位
  323. if(tempkey.equals(key)){
  324. sum = ArithUtils.add(String.valueOf(sum),String.valueOf(temp.get("DFD9_ZZSC")));
  325. avg = ArithUtils.add(String.valueOf(avg),String.valueOf(temp.get("DFD9_FZL")));
  326. index ++;
  327. }
  328. }
  329. }
  330. rstMap.put("sc",StringUtil.ObjectToString(sum));
  331. rstMap.put("pjfzl",StringUtil.ObjectToString(avg));
  332. rstMap.put("xlts",StringUtil.ObjectToString(index));
  333. }
  334. return rstMap;
  335. }
  336. /**
  337. * 获取线路描述信息
  338. * @param ja 重载
  339. * @param ja2 过载
  340. * @param param 附加参数
  341. * @return
  342. */
  343. public static List<String> getXlgzzDesc(JSONArray ja, JSONArray ja2, Map<String, Object> param) {
  344. String maxXlName = StringUtil.ObjectToString(param.get("maxXlName"));
  345. List<String> list = new ArrayList<String>();
  346. StringBuffer rst = new StringBuffer();
  347. if(ja == null || ja.size() <= 0){
  348. rst.append("监测未发现线路重载。");
  349. }else{
  350. rst.append("监测发现线路重载")
  351. .append(ja.size() )
  352. .append("条。");
  353. Map<String,Object> map = new HashMap<String,Object>();
  354. String xlmc = "";
  355. for (int i = 0; i < ja.size(); i++) {
  356. JSONObject jo = ja.getJSONObject(i);
  357. String key = StringUtil.ObjectToString(jo.get("DFD10_XGSMC"));//县公司名称
  358. String keys = StringUtil.ObjectToString(jo.get("KEYSS"));
  359. if(maxXlName.equals(keys)){
  360. maxXlName = jo.getString("avg");
  361. xlmc = jo.getString("DFD10_XLMC");
  362. }
  363. if(map.containsKey(key)){
  364. map.put(key,Integer.valueOf(String.valueOf(map.get(key))) + 1);
  365. }else{
  366. map.put(key,1);
  367. }
  368. }
  369. if(!map.isEmpty()){
  370. rst.append("分别为");
  371. }
  372. for (Map.Entry<String, Object> entry : map.entrySet()) {
  373. rst.append(entry.getKey())
  374. .append(entry.getValue())
  375. .append("条,");
  376. }
  377. rst.append("其中").append(xlmc).append(",");
  378. rst.append("重载时长最长" + StringUtil.ObjToFloat(param.get("maxZzsc")) + "小时,平均负载率为" + maxXlName + "%。");
  379. rst.append("不涉及电采暖线路。");
  380. }
  381. //******************************过载***************************************//
  382. StringBuffer rst2 = new StringBuffer();
  383. maxXlName = StringUtil.ObjectToString(param.get("maxXlName2"));
  384. if(ja2 == null || ja2.size() <= 0){
  385. rst2.append("监测未发现线路过载。");
  386. }else{
  387. rst2.append("监测发现线路过载");
  388. rst2.append(ja2.size() )
  389. .append("条。");
  390. Map<String,Object> map = new HashMap<String,Object>();
  391. String xlmc = "";
  392. for (int i = 0; i < ja2.size(); i++) {
  393. JSONObject jo = ja2.getJSONObject(i);
  394. String key = StringUtil.ObjectToString(jo.get("DFD10_XGSMC"));//县公司名称
  395. String keys = StringUtil.ObjectToString(jo.get("KEYSS"));
  396. if(maxXlName.equals(keys)){
  397. maxXlName = jo.getString("avg");
  398. xlmc = jo.getString("DFD10_XLMC");
  399. }
  400. if(map.containsKey(key)){
  401. map.put(key,Integer.valueOf(String.valueOf(map.get(key))) + 1);
  402. }else{
  403. map.put(key,1);
  404. }
  405. }
  406. if(!map.isEmpty()){
  407. rst2.append("分别为");
  408. }
  409. for (Map.Entry<String, Object> entry : map.entrySet()) {
  410. rst2.append(entry.getKey())
  411. .append(entry.getValue())
  412. .append("条,");
  413. }
  414. rst2.append("其中").append(xlmc).append(",");
  415. rst2.append("过载时长最长" + StringUtil.ObjToFloat(param.get("maxZzsc")) + "小时,平均负载率为" + maxXlName + "%。");
  416. rst2.append("不涉及电采暖线路。");
  417. }
  418. list.add(rst.toString());
  419. list.add(rst2.toString());
  420. return list;
  421. }
  422. /**
  423. * 获取线路统计信息
  424. * @param ddyzlfxbList
  425. * @param key
  426. * @return
  427. */
  428. public static Map<String, String> getXlgzzTjByParam(List<Map<String, String>> ddyzlfxbList, String key) {
  429. Map<String,String> map = new HashMap<String,String>();
  430. if(ddyzlfxbList == null || ddyzlfxbList.isEmpty()){
  431. map.put("sc","");
  432. map.put("pjfzl","");
  433. map.put("xlts","");
  434. return map;
  435. }else{
  436. Map<String,String> temp = new HashMap<String,String>();
  437. float sum = 0f;
  438. int index = 0;
  439. float avg = 0f;
  440. for (int i = 0; i < ddyzlfxbList.size(); i++) {
  441. temp = ddyzlfxbList.get(i);
  442. String tempkey = temp.get("KEYSS");//单位
  443. if(key.equals(tempkey)){
  444. sum = ArithUtils.add(String.valueOf(sum),String.valueOf(temp.get("DFD10_GZSC")));
  445. avg = ArithUtils.add(String.valueOf(avg),String.valueOf(temp.get("DFD10_FZL")));
  446. index ++;
  447. }
  448. }
  449. map.put("sc",sum + "");
  450. map.put("pjfzl",avg + "");
  451. map.put("xlts",index + "");
  452. }
  453. return map;
  454. }
  455. }