Нет описания

DistributeSMD.java 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package com.shuhaiwifi.task;
  2. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.Iterator;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.stream.Collectors;
  9. import org.apache.commons.logging.Log;
  10. import org.apache.commons.logging.LogFactory;
  11. public class DistributeSMD {
  12. private final static Log logger = LogFactory.getLog(DistributeSMD.class);
  13. public static void main(String[] args)
  14. {
  15. List<Map<String,Object>> devlists = new ArrayList<Map<String,Object>>();
  16. long sevenDaysAgo = System.currentTimeMillis() - (12 * 60 * 60 * 1000);
  17. for (int i = 0; i < 32; i++) {
  18. String devsql = "SELECT * from device"+i+" where devgrpid=1 and lastcntm > "+sevenDaysAgo;
  19. List<Map<String,Object>> devlist=RCPService.getMifiService().getMapList(devsql);
  20. if (devlist!=null&&devlist.size()>0) {
  21. devlists.addAll(devlist);
  22. }
  23. }
  24. // 特定设备分配
  25. /*String devid0="18042509130631";
  26. String devsql = "SELECT * from device"+(Long.parseLong(devid0)%32)+" where devid='"+devid0+"'";
  27. List<Map<String,Object>> devlist=RCPService.getMifiService().getMapList(devsql);
  28. if (devlist!=null&&devlist.size()>0) {
  29. devlists.addAll(devlist);
  30. }*/
  31. // String devids=devlists.stream().map(m -> "'"+String.valueOf(m.get("devid"))+"'").collect(Collectors.joining(", "));
  32. // logger.info(devids);
  33. logger.info(devlists.size());
  34. Map<String, String> devidmap = new HashMap<String, String>();
  35. for (Map<String, Object> map : devlists) {
  36. String devid=String.valueOf(map.get("devid"));
  37. String devstat=String.valueOf(map.get("devstat"));
  38. devidmap.put(devid, devstat);
  39. }
  40. String smdSql="select sn,iccid from smd";
  41. List<Map<String,Object>> smdlist=RCPService.getBaseService().getMapList(smdSql);
  42. Map<String, String> smdmap = new HashMap<String, String>();
  43. Map<String, String> iccidmap0 = new HashMap<String, String>();
  44. smdlist.stream().forEach(item->{
  45. String sn=String.valueOf(item.get("sn"));
  46. String iccid=String.valueOf(item.get("iccid"));
  47. iccidmap0.put(iccid, sn);
  48. if (devidmap.get(sn)!=null) {
  49. String v=smdmap.get(sn);
  50. if (v==null) {
  51. smdmap.put(sn, iccid);
  52. } else {
  53. smdmap.put(sn, v+","+iccid);
  54. }
  55. }
  56. });
  57. List<Map<String,Object>> simlist=RCPService.getSimpService().getMapList("select iccid,scgrpid from sim where imsi like '46001%' or imsi like '46006%' or imsi like '46009%'");
  58. Map<String, String> iccidmap = new HashMap<String, String>();
  59. Map<String, String> iccidCuMap = new HashMap<String, String>();
  60. simlist.stream().forEach(item->{
  61. String iccid=String.valueOf(item.get("iccid"));
  62. String scgrpid=String.valueOf(item.get("scgrpid"));
  63. iccidCuMap.put(iccid, iccid);
  64. if ("14".equals(scgrpid)) {
  65. iccidmap.put(iccid, iccid);
  66. }
  67. });
  68. Map<String, String> targeticcidmap = new HashMap<String, String>();
  69. List<String> sqList = new ArrayList<String>();
  70. List<String> sqList2 = new ArrayList<String>();
  71. for (Map<String, Object> map : devlists) {
  72. String sn=String.valueOf(map.get("devid"));
  73. String v=smdmap.get(sn);
  74. boolean isDistr=true;
  75. if (v!=null) {
  76. String[] vs=v.split(",");
  77. for (String item : vs) {
  78. String devstat=devidmap.get(sn);
  79. if (iccidCuMap.get(item)!=null) {
  80. isDistr=false;
  81. break;
  82. }
  83. }
  84. }
  85. String iccid;
  86. if (isDistr) {
  87. boolean have=false;
  88. Iterator<String> it=iccidmap.keySet().iterator();
  89. while (it.hasNext()) {
  90. String ki = it.next();
  91. if (iccidmap0.get(ki)==null&&targeticcidmap.get(ki)==null) {
  92. iccid=ki;
  93. targeticcidmap.put(iccid, iccid);
  94. String sqli="insert into smd(sn,iccid,orgid,rmode,flag) values('"+sn+"','"+iccid+"',3,1,2);";
  95. String sqli2="update device"+(Long.parseLong(sn)%32)+" set devstat=4 where devid='"+sn+"';";
  96. sqList.add(sqli);
  97. sqList2.add(sqli2);
  98. have=true;
  99. // logger.info(sqli);
  100. // logger.info(sqli2);
  101. break;
  102. }
  103. }
  104. if (!have){
  105. logger.info("设备【"+sn+"】没有可用的iccid");
  106. /*try {
  107. logger.info("开始删除无实名的iccid");
  108. HN.deleteNoRealNameSmd();
  109. logger.info("删除成功");
  110. } catch (IOException e) {
  111. e.printStackTrace();
  112. logger.info("删除失败:"+e.getMessage());
  113. }*/
  114. }
  115. }
  116. }
  117. if (sqList.size()>0) {
  118. logger.info(sqList);
  119. logger.info(sqList2);
  120. RCPService.getBaseService().execBatch(sqList);
  121. RCPService.getMifiService().execBatch(sqList2);
  122. }
  123. String sql = "SELECT min(iccid) iccid,sn,rmode FROM `smd` where `rmode` in (5,6,7,8,1) group by sn,rmode having count(*)>1";
  124. List<Map<String, Object>> smdList2=RCPService.getBaseService().getMapList(sql);
  125. if (smdList2!=null) {
  126. for (Map<String, Object> map : smdList2) {
  127. logger.info(map);
  128. String iccid = String.valueOf(map.get("iccid"));
  129. String sn = String.valueOf(map.get("sn"));
  130. String delsql = "delete from smd where sn='"+sn+"' and iccid='"+iccid+"'";
  131. logger.info(delsql);
  132. RCPService.getBaseService().execSql(delsql);
  133. }
  134. }
  135. }
  136. }