| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- package com.shuhaiwifi.task;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- public class DistributeSMD {
-
- private final static Log logger = LogFactory.getLog(DistributeSMD.class);
-
- public static void main(String[] args)
- {
- List<Map<String,Object>> devlists = new ArrayList<Map<String,Object>>();
- long sevenDaysAgo = System.currentTimeMillis() - (12 * 60 * 60 * 1000);
- for (int i = 0; i < 32; i++) {
- String devsql = "SELECT * from device"+i+" where devgrpid=1 and lastcntm > "+sevenDaysAgo;
- List<Map<String,Object>> devlist=RCPService.getMifiService().getMapList(devsql);
- if (devlist!=null&&devlist.size()>0) {
- devlists.addAll(devlist);
- }
- }
- // 特定设备分配
- /*String devid0="18042509130631";
- String devsql = "SELECT * from device"+(Long.parseLong(devid0)%32)+" where devid='"+devid0+"'";
- List<Map<String,Object>> devlist=RCPService.getMifiService().getMapList(devsql);
- if (devlist!=null&&devlist.size()>0) {
- devlists.addAll(devlist);
- }*/
- // String devids=devlists.stream().map(m -> "'"+String.valueOf(m.get("devid"))+"'").collect(Collectors.joining(", "));
- // logger.info(devids);
- logger.info(devlists.size());
- Map<String, String> devidmap = new HashMap<String, String>();
- for (Map<String, Object> map : devlists) {
- String devid=String.valueOf(map.get("devid"));
- String devstat=String.valueOf(map.get("devstat"));
- devidmap.put(devid, devstat);
- }
-
- String smdSql="select sn,iccid from smd";
- List<Map<String,Object>> smdlist=RCPService.getBaseService().getMapList(smdSql);
- Map<String, String> smdmap = new HashMap<String, String>();
- Map<String, String> iccidmap0 = new HashMap<String, String>();
- smdlist.stream().forEach(item->{
- String sn=String.valueOf(item.get("sn"));
- String iccid=String.valueOf(item.get("iccid"));
- iccidmap0.put(iccid, sn);
- if (devidmap.get(sn)!=null) {
- String v=smdmap.get(sn);
- if (v==null) {
- smdmap.put(sn, iccid);
- } else {
- smdmap.put(sn, v+","+iccid);
- }
- }
- });
-
- 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%'");
- Map<String, String> iccidmap = new HashMap<String, String>();
- Map<String, String> iccidCuMap = new HashMap<String, String>();
- simlist.stream().forEach(item->{
- String iccid=String.valueOf(item.get("iccid"));
- String scgrpid=String.valueOf(item.get("scgrpid"));
- iccidCuMap.put(iccid, iccid);
- if ("14".equals(scgrpid)) {
- iccidmap.put(iccid, iccid);
- }
- });
-
- Map<String, String> targeticcidmap = new HashMap<String, String>();
- List<String> sqList = new ArrayList<String>();
- List<String> sqList2 = new ArrayList<String>();
-
- for (Map<String, Object> map : devlists) {
- String sn=String.valueOf(map.get("devid"));
- String v=smdmap.get(sn);
- boolean isDistr=true;
- if (v!=null) {
- String[] vs=v.split(",");
- for (String item : vs) {
- String devstat=devidmap.get(sn);
- if (iccidCuMap.get(item)!=null) {
- isDistr=false;
- break;
- }
- }
- }
- String iccid;
- if (isDistr) {
- boolean have=false;
- Iterator<String> it=iccidmap.keySet().iterator();
- while (it.hasNext()) {
- String ki = it.next();
- if (iccidmap0.get(ki)==null&&targeticcidmap.get(ki)==null) {
- iccid=ki;
- targeticcidmap.put(iccid, iccid);
- String sqli="insert into smd(sn,iccid,orgid,rmode,flag) values('"+sn+"','"+iccid+"',3,1,2);";
- String sqli2="update device"+(Long.parseLong(sn)%32)+" set devstat=4 where devid='"+sn+"';";
- sqList.add(sqli);
- sqList2.add(sqli2);
- have=true;
- // logger.info(sqli);
- // logger.info(sqli2);
- break;
- }
- }
- if (!have){
- logger.info("设备【"+sn+"】没有可用的iccid");
- /*try {
- logger.info("开始删除无实名的iccid");
- HN.deleteNoRealNameSmd();
- logger.info("删除成功");
- } catch (IOException e) {
- e.printStackTrace();
- logger.info("删除失败:"+e.getMessage());
- }*/
- }
- }
- }
- if (sqList.size()>0) {
- logger.info(sqList);
- logger.info(sqList2);
- RCPService.getBaseService().execBatch(sqList);
- RCPService.getMifiService().execBatch(sqList2);
- }
-
-
- 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";
- List<Map<String, Object>> smdList2=RCPService.getBaseService().getMapList(sql);
- if (smdList2!=null) {
- for (Map<String, Object> map : smdList2) {
- logger.info(map);
- String iccid = String.valueOf(map.get("iccid"));
- String sn = String.valueOf(map.get("sn"));
- String delsql = "delete from smd where sn='"+sn+"' and iccid='"+iccid+"'";
- logger.info(delsql);
- RCPService.getBaseService().execSql(delsql);
- }
- }
- }
- }
|