No Description

UfiServiceImpl.java 104KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650
  1. package com.sharemao.manager.service.impl;
  2. import java.io.InputStream;
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.util.ArrayList;
  6. import java.util.Calendar;
  7. import java.util.Date;
  8. import java.util.GregorianCalendar;
  9. import java.util.HashMap;
  10. import java.util.LinkedHashMap;
  11. import java.util.List;
  12. import java.util.Map;
  13. import java.util.TreeMap;
  14. import com.sharemao.manager.sms.Submail;
  15. import org.apache.commons.logging.Log;
  16. import org.apache.commons.logging.LogFactory;
  17. import com.alibaba.fastjson.JSONObject;
  18. import com.nianzai.base.dao.jdbc.Pager;
  19. import com.nianzai.base.dao.util.DAOHelper;
  20. import com.nianzai.util.DateTimeUtil;
  21. import com.nianzai.util.PropertiesUtil;
  22. import com.nianzai.util.Tools;
  23. import com.sharemao.manager.entity.Account;
  24. import com.sharemao.manager.entity.ISP;
  25. import com.sharemao.manager.entity.Oplog;
  26. import com.sharemao.manager.service.UfiService;
  27. import com.sharemao.manager.service.base.DevBaseService;
  28. import com.sharemao.manager.service.base.RCPService;
  29. import com.sharemao.manager.util.ProjectConstants;
  30. import com.sharemao.manager.util.ProjectTools;
  31. import com.sharemao.rpc.mifi.entity.Result;
  32. import jxl.Sheet;
  33. import jxl.Workbook;
  34. public class UfiServiceImpl extends DevBaseService implements UfiService{
  35. public static String surl=PropertiesUtil.getValue("server", "surl");
  36. private final Log logger = LogFactory.getLog(UfiServiceImpl.class);
  37. @Override
  38. public Map<String, Object> getDataList(int orgid, Map<String, String> para)
  39. {
  40. String orgTm = para.get("orgid");
  41. //代理商查询
  42. if(!ProjectTools.isEmpty(orgTm) && !orgTm.equals("-1"))
  43. ;
  44. else
  45. orgTm=getOrgids(orgid);
  46. String grpid = para.get("grpid");
  47. if(grpid==null) grpid="";
  48. if(grpid.equals("-1")) grpid="";
  49. String remk = para.get("remk");
  50. if(remk==null) remk="";
  51. String devstat = para.get("devstat");
  52. if(devstat==null) devstat="";
  53. if(devstat.equals("-1")) devstat="";
  54. String netmode = para.get("netmode");
  55. if(netmode==null) netmode="";
  56. if(netmode.equals("-1")) netmode="";
  57. String celladr = para.get("celladr");
  58. if(celladr==null) celladr="";
  59. String devnum = para.get("devnum");//devid
  60. if(devnum==null) devnum="";
  61. String pageSize = para.get("rows");//页大小
  62. String curPage = para.get("page");//当前页
  63. if(Tools.isEmpty(pageSize))
  64. pageSize="50";
  65. if(Tools.isEmpty(curPage))
  66. curPage="1";
  67. List<Map<String,Object>> devLst = new ArrayList<Map<String,Object>>();
  68. StringBuilder orgbuf = new StringBuilder();
  69. StringBuilder grpbuf = new StringBuilder();
  70. StringBuilder userbuf = new StringBuilder();
  71. Map<String,Object> orgmap = new HashMap<String,Object>();
  72. Map<String,Map<String,Object>> grpmap = new HashMap<String,Map<String,Object>>();
  73. Map<String,Object> usermap = new HashMap<String,Object>();
  74. Map<String,Object> uopenidmap = new HashMap<String,Object>();
  75. long nowTime = System.currentTimeMillis();
  76. //String url="http://"+surl+"/ufi/getufi.do?pageSize="+pageSize+"&curPage="+curPage+"&orgid="+orgTm+"&devstat="+devstat+"&celladdress="+celladr+"&remk="+remk+"&grpid="+grpid+"&devid="+devnum+"&iccid="+iccid;
  77. Map<String,String> paramap=new HashMap<String,String>();
  78. paramap.put("pageSize", pageSize);
  79. paramap.put("curPage", curPage);
  80. paramap.put("orgid", orgTm);
  81. paramap.put("devstat", devstat);
  82. paramap.put("netmode", netmode);
  83. paramap.put("celladdress", celladr);
  84. paramap.put("remk", remk);
  85. paramap.put("grpid", grpid);
  86. paramap.put("devid", devnum);
  87. paramap.put("sort", para.get("sort"));
  88. paramap.put("order", para.get("order"));
  89. // for (Map.Entry<String, String> entry : paramap.entrySet()) {
  90. // String mapKey = entry.getKey();
  91. // String mapValue = entry.getValue();
  92. // logger.info(mapKey + ":" + mapValue);
  93. // }
  94. Result res=RCPService.getMifiService().getSNs(paramap);
  95. if(res!=null && res.getTotal()>0)
  96. {
  97. for (int i = 0; i < res.getList().size(); i++)
  98. {
  99. String devid=res.getList().get(i);
  100. Map<String,Object> map=new TreeMap<String,Object>();
  101. //拼装sql
  102. String sql = "SELECT dev.id,dev.orgid,dev.devid,dev.limtval,dev.devgrpid,dev.appuid,dev.devstat,dev.celladdress,"
  103. + " dev.lastcntm,dev.hardvers,dev.remk,dev.mode,dev.used,dev.usedct,dev.usedcu,dev.usedcm,dev.simshud,dev.flag,dev.gsim,dev.esim,dev.hardvers FROM "+ProjectTools.getTableNameBySN(devid)+" dev "
  104. + " WHERE dev.devid='"+devid+"'";
  105. map=RCPService.getMifiService().getMap(sql);
  106. //List<Map<String, Object>> list=DAOHelper.find("mifi", sql);
  107. // if(list!=null && list.size()>0)
  108. // map=list.get(0);
  109. sql ="SELECT sta.ssid,sta.battery,sta.wificount,sta.wifipsw,sta.speed,sta.sigint,sta.imei,sta.ssid5g,sta.wifipsw5g FROM devstatus sta WHERE sta.devid = '" + devid+"'" ;
  110. //List<Map<String, Object>> dlst = baseDao.getMapList(sql);
  111. List<Map<String, Object>> dlst =RCPService.getBaseService().getMapList(sql);
  112. if(dlst!=null && dlst.size()>0)
  113. {
  114. Map<String, Object> stamap = dlst.get(0);
  115. map.put("ssid", stamap.get("ssid"));
  116. map.put("wifipsw", stamap.get("wifipsw"));
  117. map.put("wificount", stamap.get("wificount"));
  118. map.put("speed", stamap.get("speed"));
  119. map.put("sigint", stamap.get("sigint"));
  120. map.put("imei", stamap.get("imei"));
  121. map.put("battery", stamap.get("battery"));
  122. map.put("ssid5g", stamap.get("ssid5g"));
  123. map.put("wifipsw5g", stamap.get("wifipsw5g"));
  124. }
  125. String inisql = "SELECT grpname FROM devinit WHERE devid="+devid;
  126. List<Map<String, Object>> dilst =RCPService.getBaseService().getMapList(inisql);
  127. map.put("grpnamefix", "");
  128. if(dilst!=null && dilst.size()>0)
  129. {
  130. Map<String, Object> inimap = dilst.get(0);
  131. map.put("grpnamefix", inimap.get("grpname"));
  132. }
  133. int upTime = 1*60*1000*5;
  134. long lastcntm = Long.parseLong(String.valueOf(map.get("lastcntm")));
  135. map.put("lastupd", DateTimeUtil.getDate(lastcntm, "yyyy年MM月dd日 HH:mm:ss"));
  136. String limtval = String.valueOf(map.get("limtval"));
  137. long acTime = nowTime - upTime;
  138. if(lastcntm > acTime){
  139. map.put("status",1);
  140. if(!limtval.equals("0")){
  141. map.put("status",limtval+"K");
  142. }
  143. }else{
  144. map.put("status", 0);
  145. }
  146. devLst.add(map);
  147. orgbuf.append(","+map.get("orgid"));
  148. grpbuf.append(","+map.get("devgrpid"));
  149. userbuf.append(","+map.get("appuid"));
  150. }
  151. }
  152. if(devLst.size()>0)
  153. {
  154. String sql = "select id,orgname from organize where id in ("+orgbuf.substring(1)+")";
  155. //List<Map<String,Object>> orglst = baseDao.getMapList(sql);
  156. List<Map<String,Object>> orglst =RCPService.getBaseService().getMapList(sql);
  157. if(null!=orglst&&orglst.size()>0){
  158. for(Map<String,Object> omap:orglst){
  159. orgmap.put(String.valueOf(omap.get("id")), omap.get("orgname"));
  160. }
  161. }
  162. //sql = "select id,grpname,devtype,gongc from devicegroup where id in ("+grpbuf.substring(1)+")";
  163. sql = "SELECT grp.id,grp.grpname,grp.devtype,grp.gongc,devtype.typename FROM devicegroup grp,devtype WHERE devtype.id=grp.devtype and grp.id in ("+grpbuf.substring(1)+")";
  164. //List<Map<String,Object>> grplst = baseDao.getMapList(sql);
  165. List<Map<String,Object>> grplst =RCPService.getBaseService().getMapList(sql);
  166. if(null!=grplst&&grplst.size()>0){
  167. for(Map<String,Object> gmap:grplst){
  168. //grpmap.put(String.valueOf(gmap.get("id")), gmap.get("grpname"));
  169. if(gmap.get("gongc")==null)
  170. gmap.put("gongc", "");
  171. if(gmap.get("devtype")==null)
  172. gmap.put("devtype", 0);
  173. grpmap.put(String.valueOf(gmap.get("id")), gmap);
  174. }
  175. }
  176. sql = "select id,phonenum,openid from appuser where id in ("+userbuf.substring(1)+")";
  177. //List<Map<String,Object>> usrlst = baseDao.getMapList(sql);
  178. List<Map<String,Object>> usrlst =RCPService.getBaseService().getMapList(sql);
  179. if(null!=usrlst&&usrlst.size()>0){
  180. for(Map<String,Object> umap:usrlst){
  181. usermap.put(String.valueOf(umap.get("id")), umap.get("phonenum"));
  182. uopenidmap.put(String.valueOf(umap.get("id")), umap.get("openid"));
  183. }
  184. }
  185. for(Map<String,Object> dmap:devLst)
  186. {
  187. String orgstr = String.valueOf(dmap.get("orgid"));
  188. String grpstr = String.valueOf(dmap.get("devgrpid"));
  189. String phonenumstr = String.valueOf(dmap.get("appuid"));
  190. dmap.put("orgname", orgmap.get(orgstr));
  191. dmap.put("grpname", grpmap.get(grpstr).get("grpname").toString());
  192. dmap.put("devtype", grpmap.get(grpstr).get("devtype").toString());
  193. dmap.put("typename", grpmap.get(grpstr).get("typename").toString());
  194. dmap.put("gongc", grpmap.get(grpstr).get("gongc").toString());
  195. dmap.put("phonenum", usermap.get(phonenumstr));
  196. dmap.put("openid", uopenidmap.get(phonenumstr));
  197. String devid=dmap.get("devid").toString();
  198. if(devid.startsWith("1511") || devid.startsWith("1501"))
  199. {
  200. dmap.put("devtype", 0);
  201. }
  202. if(devid.startsWith("1304") || devid.startsWith("1301"))
  203. {
  204. dmap.put("devtype", 1);
  205. }
  206. if(devid.startsWith("5001") || devid.startsWith("5002"))
  207. {
  208. dmap.put("devtype", 2);
  209. }
  210. }
  211. }
  212. Map<String,Object> devMap =new HashMap<String,Object>();
  213. devMap.put("rows", devLst);
  214. devMap.put("total", res.getTotal());
  215. //返回页面信息
  216. return devMap;
  217. }
  218. @Override
  219. public Map<String, Object> getItemDetail(Map<String,String> para) {
  220. Pager pc=new Pager();
  221. pc.setCurrentPage(1);
  222. pc.setPageSize(1);
  223. String devid = para.get("devid");
  224. // String sql ="SELECT dev.gsim,dev.esim,dev.devdid,dev.iccid,dev.limtval,dev.authmd,dev.simshud,sta.ssid,sta.battery,sta.imei,"
  225. // + " sta.wificount,sta.wifipsw,sta.gsigint,sta.sigint,sta.ispid,sta.apnname,sta.speed FROM device dev "
  226. // + " LEFT JOIN devstatus sta ON sta.devid = dev.devid WHERE dev.devid = '" + devid+"'" ;
  227. List<Map<String, Object>> dlst = new ArrayList<Map<String, Object>>();
  228. String sql="select * from "+ProjectTools.getTableNameBySN(devid)+" where devid='"+devid+"'";
  229. Map<String, Object> map=RCPService.getMifiService().getMap(sql);
  230. // Map<String, Object> dmap = dlst.get(0);
  231. sql="select * from devstatus where devid='"+devid+"'";
  232. //Map<String, Object> m=baseDao.getMapList(sql).get(0);
  233. Map<String, Object> m=RCPService.getBaseService().getMapList(sql).get(0);
  234. map.put("imei", m.get("imei"));
  235. map.put("battery", m.get("battery"));
  236. map.put("apnname", m.get("apnname"));
  237. map.put("speed", m.get("speed"));
  238. map.put("ispid", m.get("ispid"));
  239. map.put("suspend", m.get("suspend"));
  240. String ispstr = String.valueOf(map.get("ispid"));
  241. if(ProjectTools.isEmpty(ispstr)){
  242. map.put("siminfo", null);
  243. }else{
  244. try {
  245. map.put("siminfo", ProjectTools.getOprtStr(Integer.parseInt(ispstr)));
  246. } catch (NumberFormatException e) {
  247. map.put("siminfo", ispstr);
  248. }
  249. }
  250. dlst.add(map);
  251. //返回页面信息
  252. Map<String,Object> pginfo = new HashMap<String,Object>();
  253. pginfo.put("total", 1);
  254. pginfo.put("rows", dlst);
  255. return pginfo;
  256. }
  257. @Override
  258. public int devchag(Map<String, String> para,Account account) throws ParseException {
  259. int orgid=account.getOrgid();
  260. int accid=account.getId();
  261. String uname=account.getUsername();
  262. List<String> sqlList = new ArrayList<String>();
  263. String devid = para.get("devid"); //设备ID
  264. String pkgid = para.get("pkgid");
  265. String timeStart = para.get("timeStart");
  266. int costType = Integer.parseInt(para.get("costType")); //支付方式
  267. String sql = "SELECT pkv.pkid,pkv.price,pkv.costprice,pkg.pkgValue,pkg.pkgLimit,pkv.pkname,"
  268. + " pkg.areaid,pkg.invalidtime,pkg.mode FROM packageview pkv "
  269. + " LEFT JOIN package pkg ON pkg.id = pkv.pkid"
  270. + " WHERE pkv.pkid = "+pkgid+" AND pkv.orgid = "+orgid;
  271. //List<Map<String, Object>> consLst = baseDao.getMapList(sql);
  272. List<Map<String, Object>> consLst =RCPService.getBaseService().getMapList(sql);
  273. if(consLst == null || consLst.size()<1)
  274. return 1;
  275. Map<String,Object> consMap = consLst.get(0);
  276. String pkgName = String.valueOf(consMap.get("pkname")); //套餐名
  277. int pkgLimit = Integer.parseInt(String.valueOf(consMap.get("pkgLimit")));
  278. int costPrice = Integer.parseInt(String.valueOf(consMap.get("costprice")));
  279. String areaId = String.valueOf(consMap.get("areaid"));
  280. int expiryDay = 0; //有效期
  281. int mode = Integer.parseInt(String.valueOf(consMap.get("mode"))); //套餐模式
  282. int invalidtime = Integer.parseInt(String.valueOf(consMap.get("invalidtime"))); //有效时长
  283. int pkgValue = Integer.parseInt(String.valueOf(consMap.get("pkgValue"))); //流量大小
  284. int price = Integer.parseInt(String.valueOf(consMap.get("price"))); //套餐价格
  285. String orderid = "SYS"+Long.toString(System.currentTimeMillis()/1000)+ProjectTools.buildRandomStr(3);
  286. String nowTime = DateTimeUtil.longtime();
  287. /*********************************代理预付款 - BEGIN************************************/
  288. // long costNum = 0; //代理需付款
  289. // int balance = 0; //代理余额
  290. //
  291. // if(orgid != 1 && orgid != 2){
  292. //
  293. // String orgSql = "SELECT balance,flowbal FROM organize WHERE id = "+orgid;
  294. // //List<Map<String,Object>> orgLst = baseDao.getMapList(orgSql);
  295. // List<Map<String,Object>> orgLst =RCPService.getBaseService().getMapList(orgSql);
  296. // if(orgLst != null && orgLst.size()>0){
  297. //
  298. // balance = Integer.parseInt(String.valueOf(orgLst.get(0).get("balance")));
  299. // long flowbal = Long.parseLong(String.valueOf(orgLst.get(0).get("flowbal")));
  300. // if(costType == 0){
  301. // if(balance < costPrice)
  302. // return 6;
  303. //
  304. // costNum = balance - costPrice;
  305. //
  306. // String costSql = "UPDATE organize SET balance = "+costNum+" WHERE id = '"+orgid+"'";
  307. // String deSql = "INSERT INTO deductrcd (orgid,orderid,amount,befval,aftval,crttm,devid,paytype,devorgid) VALUES("
  308. // + "'"+orgid+"','"+orderid+"',"+costPrice+","+balance+","+costNum+",'"+nowTime+"','"+devid+"',6,"+orgid+")";
  309. // sqlList.add(costSql);
  310. // sqlList.add(deSql);
  311. // }else if(costType == 1 && pkgLimit == 0){
  312. // if(flowbal < pkgValue)
  313. // return 6;
  314. //
  315. // costNum = flowbal - pkgValue;
  316. //
  317. // String costSql = "UPDATE organize SET flowbal = "+costNum+" WHERE id = '"+orgid+"'";
  318. // String deSql = "INSERT INTO deductrcd (orgid,orderid,pkvalue,befpkv,aftpkv,crttm,devid,paytype,devorgid) VALUES("
  319. // + "'"+orgid+"','"+orderid+"',"+pkgValue+","+flowbal+","+costNum+",'"+nowTime+"','"+devid+"',7,"+orgid+")";
  320. // sqlList.add(costSql);
  321. // sqlList.add(deSql);
  322. // }else
  323. // return 10;
  324. // }else{
  325. // return 9;
  326. // }
  327. // }
  328. /*********************************代理预付款 - END************************************/
  329. //保存订单
  330. int devorg=orgid;
  331. int devgrpid=0;
  332. int appuid=0;
  333. String devsql="select orgid,devgrpid,appuid from "+ProjectTools.getTableNameBySN(devid)+" where devid = '"+devid+"'";
  334. Map<String,Object> devmap=RCPService.getMifiService().getMap(devsql);
  335. if(devmap!=null)
  336. {
  337. devorg=Integer.parseInt(devmap.get("orgid").toString());
  338. devgrpid=Integer.parseInt(devmap.get("devgrpid").toString());
  339. appuid=Integer.parseInt(devmap.get("appuid").toString());
  340. }
  341. String rcdSql = "INSERT INTO allorder(onum,appuid,orgid,packid,oprice,otype,ptype,ostat,crttm,mdftm,devid,acid,opt) VALUES("
  342. + " '"+orderid+"',"+ appuid+","+devorg+","+pkgid+",'"+price+"',0,6,2,'"+nowTime+"','"+nowTime+"','"+devid+"',"+accid+",'"+uname+"')";
  343. //sqlList.add(rcdSql);
  344. //baseDao.excuBatch(sqlList);
  345. logger.info(rcdSql);
  346. RCPService.getBaseService().execSql(rcdSql);
  347. // Map<String, Object> rm=RCPService.getAppService().rechargeByOrderID(orderid,orgid,timeStart);
  348. // int c=(Integer)rm.get("code");
  349. // if(c>0)
  350. // return c;
  351. /*********************************写入套餐 - BEGIN***********************************/
  352. int remainValue=pkgValue;
  353. if(pkgLimit>0 && pkgValue>40000)
  354. remainValue=40000;
  355. String suSql = "INSERT INTO usersuit(orgid,devid,remain,areaid,packid,limitval,effect,invalid,crttm,orderid,pkvalue) VALUES";
  356. Date time = new Date();
  357. if(!ProjectTools.isEmpty(timeStart)){
  358. SimpleDateFormat formatter = new SimpleDateFormat( "MM/dd/yyyy");
  359. time = formatter.parse(timeStart);
  360. }
  361. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  362. String timesStart = sdf.format(time.getTime()) + "000000";
  363. String timeEnd = "";
  364. if(mode == 0){
  365. String dateStart = sdf.format(time.getTime()) + "000000";
  366. if(invalidtime == 0) //一天
  367. time = DateTimeUtil.addDay(time, 1);
  368. if(invalidtime == 1) //一月
  369. time = ProjectTools.addMonth(time, 1);
  370. if(invalidtime == 2) //一季
  371. time = ProjectTools.addMonth(time, 3);
  372. if(invalidtime == 3) //半年
  373. time = ProjectTools.addMonth(time, 6);
  374. if(invalidtime == 4) //一年
  375. time = ProjectTools.addMonth(time, 12);
  376. if(invalidtime == 5) //两年
  377. time = ProjectTools.addMonth(time, 24);
  378. if(invalidtime == 6) //一周
  379. time = DateTimeUtil.addDay(time, 7);
  380. if(invalidtime == 7) //三年
  381. time = ProjectTools.addMonth(time, 36);
  382. if(invalidtime == 8) //三天
  383. time = DateTimeUtil.addDay(time, 3);
  384. if(invalidtime == 9) //2天
  385. time = DateTimeUtil.addDay(time, 2);
  386. String dateEnd = sdf.format(time.getTime()) + "000000";
  387. timeEnd = sdf.format(time.getTime()) + "000000";
  388. suSql += "("+orgid+",'"+devid+"',"+remainValue+","+areaId+","+pkgid+","+pkgLimit+",'"+dateStart+"','"+dateEnd+"','"+nowTime+"','"+orderid+"',"+pkgValue+")";
  389. }else if(mode == 1){
  390. if(invalidtime == 0) //一天
  391. expiryDay = 1;
  392. if(invalidtime == 1) //一月
  393. expiryDay = 30;
  394. if(invalidtime == 2) //一季
  395. expiryDay = 90;
  396. if(invalidtime == 3) //半年
  397. expiryDay = 180;
  398. if(invalidtime == 4) //一年
  399. expiryDay = 365;
  400. if(invalidtime == 5) //两年
  401. expiryDay = 730;
  402. if(invalidtime == 6) //一周
  403. expiryDay = 7;
  404. if(invalidtime == 7) //三年
  405. expiryDay = 1095;
  406. if(invalidtime == 8) //三天
  407. expiryDay = 3;
  408. // pkgValue = pkgValue/expiryDay;
  409. for(int i=0;i<expiryDay;i++){
  410. String dateStart = sdf.format(time.getTime()) + "000000";
  411. time = addDay(time, 1);
  412. String dateEnd = sdf.format(time.getTime()) + "000000";
  413. timeEnd = sdf.format(time.getTime()) + "000000";
  414. suSql += "("+orgid+",'"+devid+"',"+remainValue+","+areaId+","+pkgid+","+pkgLimit+",'"+dateStart+"','"+dateEnd+"','"+nowTime+"','"+orderid+"',"+pkgValue+"),";
  415. }
  416. suSql = suSql.substring(0,suSql.length()-1);
  417. }else if(mode == 2){
  418. if(invalidtime == 1) //一月
  419. expiryDay = 1;
  420. if(invalidtime == 2) //一季
  421. expiryDay = 3;
  422. if(invalidtime == 3) //半年
  423. expiryDay = 6;
  424. if(invalidtime == 4) //一年
  425. expiryDay = 12;
  426. if(invalidtime == 5) //两年
  427. expiryDay = 24;
  428. if(invalidtime == 7) //三年
  429. expiryDay = 36;
  430. if(invalidtime == 11) //7个月
  431. expiryDay = 7;
  432. if(invalidtime == 12) //14个月
  433. expiryDay = 14;
  434. if(invalidtime == 18) //15个月
  435. expiryDay = 15;
  436. if(invalidtime == 13) //2年半
  437. expiryDay = 30;
  438. if(invalidtime == 14) //3年8个月
  439. expiryDay = 44;
  440. if(invalidtime == 15) //4年
  441. expiryDay = 48;
  442. if(invalidtime == 16) //5年
  443. expiryDay = 60;
  444. if(invalidtime == 17) //6年
  445. expiryDay = 72;
  446. for(int i=0;i<expiryDay;i++){
  447. String dateStart = sdf.format(time.getTime()) + "000000";
  448. time = ProjectTools.addMonth(time, 1);
  449. String dateEnd = sdf.format(time.getTime()) + "000000";
  450. timeEnd = sdf.format(time.getTime()) + "000000";
  451. suSql += "("+orgid+",'"+devid+"',"+remainValue+","+areaId+","+pkgid+","+pkgLimit+",'"+dateStart+"','"+dateEnd+"','"+nowTime+"','"+orderid+"',"+pkgValue+"),";
  452. }
  453. suSql = suSql.substring(0,suSql.length()-1);
  454. }
  455. sqlList.add(suSql);
  456. /**************************************写入套餐 - END**************************************/
  457. sql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,packid,orderid,crttm,devid) VALUES("
  458. + accid+","+orgid+",1,'设备充值>>>设备ID:"+devid+",充值套餐-"+pkgName+"','0',"+pkgid+",'"+orderid+"',"+DateTimeUtil.longtime()+",'"+devid+"' )";
  459. String pkgSql = "INSERT INTO packrcd(devid,pkid,pkname,orderid,crttm,datastart,dataend,orgid) VALUES"
  460. + "('"+devid+"','"+pkgid+"','"+pkgName+"','"+orderid+"',"+DateTimeUtil.longtime()+","+timesStart+","+timeEnd+","+orgid+")";
  461. sqlList.add(pkgSql);
  462. sqlList.add(sql);
  463. logger.info(sqlList);
  464. baseDao.excuBatch(sqlList);
  465. //更改设备状态为正常
  466. if(devgrpid == 286)
  467. {//新讯需要解除限速
  468. String staSql = "UPDATE "+ProjectTools.getTableNameBySN(devid)+" SET devstat = 1, iflimt=3, limtval=0 WHERE devid = '"+devid+"'";
  469. //DAOHelper.execute("mifidevice", staSql);
  470. RCPService.getMifiService().execSql(staSql);
  471. } else {
  472. String staSql = "UPDATE "+ProjectTools.getTableNameBySN(devid)+" SET devstat = 1 WHERE devid = '"+devid+"'";
  473. //DAOHelper.execute("ufidevice", staSql);
  474. RCPService.getMifiService().execSql(staSql);
  475. }
  476. Map<String,String> simtypemap=getSimType(devid);
  477. if(simtypemap.get("simtype")!=null)
  478. {
  479. String simtype=simtypemap.get("simtype").toString();
  480. String iccid=simtypemap.get("iccid").toString();
  481. String kasid=simtypemap.get("kasid").toString();
  482. String accessNumber=simtypemap.get("access_number").toString();
  483. if(simtype.equals("1"))
  484. {
  485. logger.info("simtype devid="+devid);
  486. String simtasksql="insert into simtask(iccid,optask,crttm,kasid,devid,accessNumber) values ('"+iccid+"',2,"+DateTimeUtil.longtime()+","+kasid+",'"+devid+"','"+accessNumber+"')";
  487. logger.info(simtasksql);
  488. //DAOHelper.execute("mifi", simtasksql);
  489. RCPService.getBaseService().execSql(simtasksql);
  490. }
  491. }
  492. //发短信通知
  493. if (!ProjectTools.isEmpty(devid)) {
  494. sql = "select phonenum from appuser where defaultdev='" + devid + "'";
  495. List<Map<String, Object>> phonenumList = baseDao.getMapList(sql);
  496. if (phonenumList != null && phonenumList.size() > 0) {
  497. Map<String, Object> phonenumMap = phonenumList.get(0);
  498. String phonenum = String.valueOf(phonenumMap.get("phonenum"));
  499. if (!ProjectTools.isEmpty(phonenum) && !pkgName.contains("赠送")) {
  500. Map<String, String> varsMap = new HashMap<String, String>();
  501. varsMap.put("pkgName", pkgName);
  502. String vars = JSONObject.toJSONString(varsMap);
  503. Submail.xsend(phonenum, "g1WpD4", vars);
  504. }
  505. }
  506. }
  507. return 0;
  508. }
  509. public static int getPKTypeByDevid(String devid,String devgrpid)
  510. {
  511. int packType=0;
  512. if(devid.startsWith("1511") || devid.startsWith("1501") || devid.startsWith("1301"))
  513. packType=0;
  514. else if(devid.startsWith("1304") )
  515. packType=1;
  516. else if(devid.startsWith("5001") || devid.startsWith("5002"))
  517. packType=2;
  518. else
  519. {
  520. String typesql="SELECT * FROM `devicegroup` WHERE id="+devgrpid;
  521. Map<String,Object> result=RCPService.getBaseService().getMap(typesql);
  522. if(result!=null && result.size()>0 && result.get("devtype")!=null)
  523. {
  524. packType=Integer.parseInt(result.get("devtype").toString());
  525. }
  526. }
  527. return packType;
  528. }
  529. @Override
  530. public int devchagspkgs(Map<String, String> para, int orgid, int accid) throws ParseException {
  531. List<String> sqlList = new ArrayList<String>();
  532. String devid = para.get("devid"); //设备ID
  533. String spkgid = para.get("spkgid");
  534. String timeStart = para.get("effect");
  535. int costType = Integer.parseInt(para.get("costType")); //支付方式
  536. String sql = "SELECT id,price,name,invalidtime FROM speedpack WHERE id = "+spkgid;
  537. //List<Map<String, Object>> consLst = baseDao.getMapList(sql);
  538. List<Map<String, Object>> consLst =RCPService.getBaseService().getMapList(sql);
  539. if(consLst == null || consLst.size()<1)
  540. return 1;
  541. Map<String,Object> consMap = consLst.get(0);
  542. String name = String.valueOf(consMap.get("name")); //加速包名
  543. int price = Integer.parseInt(String.valueOf(consMap.get("price"))); //价格
  544. int expiryDay = 0; //有效期
  545. int invalidtime = Integer.parseInt(String.valueOf(consMap.get("invalidtime"))); //有效时长
  546. String orderid = "SYS"+Long.toString(System.currentTimeMillis()/1000)+ProjectTools.buildRandomStr(3);
  547. String nowTime = DateTimeUtil.longtime();
  548. //保存订单
  549. int devorg=orgid;
  550. int appuid=0;
  551. String devsql="select orgid,appuid from "+ProjectTools.getTableNameBySN(devid)+" where devid = '"+devid+"'";
  552. Map<String,Object> devmap=RCPService.getMifiService().getMap(devsql);
  553. if(devmap!=null)
  554. {
  555. devorg=Integer.parseInt(devmap.get("orgid").toString());
  556. appuid=Integer.parseInt(devmap.get("appuid").toString());
  557. }
  558. String rcdSql = "INSERT INTO allorder(onum,appuid,orgid,packid,oprice,otype,ptype,ostat,crttm,mdftm,devid,acid) VALUES("
  559. + " '"+orderid+"',0,"+devorg+","+spkgid+",'"+price+"',3,6,2,'"+nowTime+"','"+nowTime+"','"+devid+"',"+accid+")";
  560. logger.info(rcdSql);
  561. RCPService.getBaseService().execSql(rcdSql);
  562. /*********************************写入加速包 - BEGIN***********************************/
  563. String spSql = "INSERT INTO userspeedpack (orderid,appuid,devid,speedpackid,effect,invalid,state) VALUES ('";
  564. Date time = new Date();
  565. String buytm = (new SimpleDateFormat("yyyyMMddHHmmss")).format(time);
  566. if(!ProjectTools.isEmpty(timeStart)){
  567. SimpleDateFormat formatter = new SimpleDateFormat( "MM/dd/yyyy");
  568. time = formatter.parse(timeStart);
  569. }
  570. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  571. String timesStart = sdf.format(time.getTime()) + "000000";
  572. String timeEnd = "";
  573. if(invalidtime == 1) //一月
  574. expiryDay = 1;
  575. if(invalidtime == 2) //一季
  576. expiryDay = 3;
  577. if(invalidtime == 3) //半年
  578. expiryDay = 6;
  579. if(invalidtime == 4) //一年
  580. expiryDay = 12;
  581. if(invalidtime == 5) //两年
  582. expiryDay = 24;
  583. if(invalidtime == 7) //三年
  584. expiryDay = 36;
  585. if(invalidtime == 11) //7个月
  586. expiryDay = 7;
  587. if(invalidtime == 12) //14个月
  588. expiryDay = 14;
  589. if(invalidtime == 18) //15个月
  590. expiryDay = 15;
  591. if(invalidtime == 13) //2年半
  592. expiryDay = 30;
  593. if(invalidtime == 14) //3年8个月
  594. expiryDay = 44;
  595. if(invalidtime == 15) //4年
  596. expiryDay = 48;
  597. if(invalidtime == 16) //5年
  598. expiryDay = 60;
  599. if(invalidtime == 17) //6年
  600. expiryDay = 72;
  601. String dateStart = sdf.format(time.getTime()) + "000000";
  602. time = ProjectTools.addMonth(time, expiryDay);
  603. String dateEnd = sdf.format(time.getTime()) + "000000";
  604. timeEnd = sdf.format(time.getTime()) + "000000";
  605. String sqlspp = "INSERT INTO userspeedpack (orderid,appuid,devid,speedpackid,effect,invalid,state,buytm,orgid) VALUES ('"
  606. + orderid+"',"+appuid+",'"+devid+"',"+spkgid+","+dateStart+","+dateEnd+",1,"+buytm+","+devorg+")";
  607. logger.info(sqlspp);
  608. sqlList.add(sqlspp);
  609. /**************************************写入套餐 - END**************************************/
  610. sql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,packid,orderid,crttm,devid) VALUES("
  611. + accid+","+orgid+",1,'设备充值>>>设备ID:"+devid+",充值加速包-"+name+"','0',"+spkgid+",'"+orderid+"',"+DateTimeUtil.longtime()+",'"+devid+"' )";
  612. sqlList.add(sql);
  613. baseDao.excuBatch(sqlList);
  614. return 0;
  615. }
  616. public Map<String, Object> getSPkgPriceAndEffect(Map<String, String> para, int orgid, int accid) throws ParseException
  617. {
  618. Map<String, Object> result = new HashMap<String, Object>();
  619. SimpleDateFormat formatter = new SimpleDateFormat( "MM/dd/yyyy");
  620. Date d = new Date();
  621. result.put("price", 0);
  622. result.put("effect", formatter.format(d));
  623. String devid = para.get("devid"); //设备ID
  624. String spkgid = para.get("spkgid");
  625. String sql = "SELECT id,price,name,invalidtime FROM speedpack WHERE id = "+spkgid;
  626. //List<Map<String, Object>> consLst = baseDao.getMapList(sql);
  627. List<Map<String, Object>> consLst =RCPService.getBaseService().getMapList(sql);
  628. if(consLst == null || consLst.size()<1)
  629. return result;
  630. Map<String,Object> consMap = consLst.get(0);
  631. int price = Integer.parseInt(String.valueOf(consMap.get("price"))); //价格
  632. result.put("price", price);
  633. String devsql="select orgid,appuid from "+ProjectTools.getTableNameBySN(devid)+" where devid = '"+devid+"'";
  634. Map<String,Object> devmap=RCPService.getMifiService().getMap(devsql);
  635. int appuid=0;
  636. if(devmap!=null)
  637. {
  638. appuid=Integer.parseInt(devmap.get("appuid").toString());
  639. }
  640. String sqlsel = "select max(invalid) invalid from userspeedpack where state=1 and appuid="+appuid+" and devid='"+devid+"'";
  641. List<Map<String, Object>> list = baseDao.getMapList(sqlsel);
  642. if(null!=list && list.size() > 0){
  643. // 之前购买过加速包
  644. Map<String, Object> map = list.get(0);
  645. String invalid = String.valueOf(map.get("invalid"));
  646. if (invalid != null && !invalid.isEmpty() && !"null".equals(invalid)) {
  647. try {
  648. SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMddHHmmss");
  649. Date invalidDate = sdf2.parse(invalid);
  650. if (d.before(invalidDate)) {
  651. // 之前购买的加速包没有到期,自动续期
  652. d = DateTimeUtil.addDay(invalidDate, 1);
  653. result.put("effect", formatter.format(d));
  654. }
  655. } catch (Exception e) {
  656. logger.error("日期格式解析错误: " + e.getMessage());
  657. }
  658. }
  659. }
  660. return result;
  661. }
  662. @Override
  663. public int editDev(Account account, Map<String, String> para)throws ParseException
  664. {
  665. String devid = para.get("devid");
  666. if(ProjectTools.isEmpty(devid))
  667. return 1;
  668. String devstat = para.get("devstat");
  669. String remk = para.get("remk");
  670. String simshud = para.get("simshud");
  671. String mode = para.get("mode");
  672. // String wifiBand = para.get("wifiBand");
  673. // String sql = "UPDATE "+ProjectTools.getTableNameBySN(devid)+" SET devstat='"+devstat+"',remk='"+remk+"',mode="+mode+",wifiBand="+wifiBand;
  674. Map<String, Object> originMap = RCPService.getMifiService().getMap("select devstat,remk,mode,simshud from " + ProjectTools.getTableNameBySN(devid) + " where devid='" + devid + "'");
  675. String devstatOrigin = originMap.get("devstat") == null ? null:String.valueOf(originMap.get("devstat"));
  676. String remkOrigin = originMap.get("remk") == null ? null:String.valueOf(originMap.get("remk"));
  677. String simshudOrigin = originMap.get("simshud") == null ? null:String.valueOf(originMap.get("simshud"));
  678. String modeOrigin = originMap.get("mode") == null ? null:String.valueOf(originMap.get("mode"));
  679. Map<String,String> originMap2 = new HashMap<String, String>();
  680. originMap2.put("devstat", devstatOrigin);
  681. originMap2.put("remk", remkOrigin);
  682. originMap2.put("simshud", simshudOrigin);
  683. originMap2.put("mode", modeOrigin);
  684. Map<String, String> logOriginMap = getLogMap(originMap2, devid, devstatOrigin, remkOrigin, simshudOrigin, modeOrigin);
  685. String sql = "UPDATE "+ProjectTools.getTableNameBySN(devid)+" SET devstat='"+devstat+"',remk='"+remk+"',mode="+mode;
  686. if(!ProjectTools.isEmpty(simshud))
  687. sql += ",simshud='"+simshud+"'";
  688. sql += " WHERE devid = '"+devid+"'";
  689. //DAOHelper.execute("ufidevice", sql);
  690. RCPService.getMifiService().execSql(sql);
  691. logger.info("修改设备状态:{devid:"+devid+",devstat:"+devstat+",simshud="+simshud+",remk:"+remk+",mode:"+mode+"}");
  692. logger.info(sql);
  693. Map<String, String> logMap = getLogMap(para, devid, devstat, remk, simshud, mode);
  694. Oplog log = new Oplog(account.getId(), account.getOrgid(), 3, "修改设备属性,参数>>"+logMap+";原数据>>"+logOriginMap, Long.parseLong(DateTimeUtil.longtime()),devid,0,0,"");
  695. baseDao.addObj(log);
  696. return 0;
  697. }
  698. private Map<String, String> getLogMap(Map<String, String> para, String devid, String devstat, String remk,
  699. String simshud, String mode) {
  700. Map<String, String> logMap = new LinkedHashMap<String, String>();
  701. try {
  702. if (devid!=null) {
  703. logMap.put("设备号", devid);
  704. }
  705. if (!ProjectTools.isEmpty(devstat)) {
  706. String[] devstatarr = { "禁用", "启用", "流量不足", "未绑定", "未实名", "", "", "", "", "eSim失效" };
  707. try {
  708. logMap.put("设备状态", devstatarr[Integer.parseInt(devstat)]);
  709. } catch (Exception e) {
  710. e.printStackTrace();
  711. logMap.put("设备状态", devstat);
  712. }
  713. }
  714. if (!ProjectTools.isEmpty(mode)) {
  715. String[] modearr = { "", "云卡", "内置卡1", "外插卡", "内置卡2", "自动", "eSim移动", "eSim联通", "eSim电信", "终端设置" };
  716. try {
  717. String m;
  718. if (mode.equals("23")){
  719. m = "指定电信";
  720. } else {
  721. m = modearr[Integer.parseInt(mode)];
  722. }
  723. logMap.put("运行模式", m);
  724. } catch (Exception e) {
  725. e.printStackTrace();
  726. logMap.put("运行模式", mode);
  727. }
  728. }
  729. if (!ProjectTools.isEmpty(para.get("wifiBand"))) {
  730. String[] wifiBandarr = { "", "2.4G", "5.8G"};
  731. try {
  732. logMap.put("WiFi模式", wifiBandarr[Integer.parseInt(para.get("wifiBand"))]);
  733. } catch (Exception e) {
  734. e.printStackTrace();
  735. logMap.put("WiFi模式", para.get("wifiBand"));
  736. }
  737. }
  738. if (!ProjectTools.isEmpty(para.get("iccid"))) {
  739. logMap.put("iccid", para.get("iccid"));
  740. }
  741. if (!ProjectTools.isEmpty(remk)) {
  742. logMap.put("备注", remk);
  743. }
  744. if (!ProjectTools.isEmpty(simshud)) {
  745. Map<String, String> simshudMap=new HashMap<String, String>();
  746. simshudMap.put("0", "自动");
  747. simshudMap.put("46003", "电信");
  748. simshudMap.put("46001", "联通");
  749. simshudMap.put("46000", "移动");
  750. String simshuVal=simshudMap.get(simshud);
  751. if (simshuVal!=null) {
  752. logMap.put("选卡信号", simshuVal);
  753. } else {
  754. logMap.put("选卡信号", simshud);
  755. }
  756. }
  757. if (para.get("ip")!=null) {
  758. logMap.put("ip", para.get("ip"));
  759. }
  760. } catch (Exception e) {
  761. e.printStackTrace();
  762. logMap=para;
  763. }
  764. return logMap;
  765. }
  766. @Override
  767. public Map<String, Object> doImportData(InputStream excelis, Account account, Map<String, String> para) throws Exception
  768. {
  769. String orgid = para.get("orgid");
  770. String grpid = para.get("grpid");
  771. // String dftsuit = para.get("dftsuit");//是否充值默认套餐
  772. String mode = para.get("mode");
  773. String copu=para.get("copu");
  774. String grpname = para.get("grpname");
  775. Map<String,Object> resultMap = new HashMap<String, Object>();
  776. // String suitval = String.valueOf(baseDao.getOneField(" SELECT IFNULL(pkgValue,0) AS pkgValue FROM package WHERE id ="+ProjectConstants.testPkgId).get(0));
  777. // if(!ProjectTools.isEmpty(para.get("testval"))){
  778. // suitval = para.get("testval");
  779. // }
  780. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  781. Date date = ProjectTools.addMonth(new Date(), 12);
  782. String dateStart = sdf.format(new Date()) + "000000";
  783. String dateEnd = sdf.format(date) + "000000";
  784. long nowtm = Long.parseLong(DateTimeUtil.longtime());//当前时间
  785. Workbook workbook = Workbook.getWorkbook(excelis);
  786. Sheet sheet = workbook.getSheet(0);
  787. int rows = sheet.getRows();
  788. int p=0;
  789. for (int i = 1; i < rows; i++)
  790. {
  791. //控制循环读取一行数据
  792. String devid = sheet.getCell(0, i).getContents() == null ? "" : sheet.getCell(0, i).getContents().trim();
  793. String iccid = sheet.getCell(1, i).getContents() == null ? "" : sheet.getCell(1, i).getContents().trim();
  794. if(!Tools.isEmpty(devid))
  795. {
  796. p++;
  797. System.out.println(devid+","+iccid);
  798. long did=Long.parseLong(devid);
  799. int k=(int)(did % 32);
  800. String sql="select * from device"+k+" where devid='"+devid+"'";
  801. System.out.println(sql);
  802. //List<Map<String, Object>> list=DAOHelper.find(ProjectConstants.connMiFi, sql);
  803. List<Map<String, Object>> list=RCPService.getMifiService().getMapList(sql);
  804. if(list == null || list.size() == 0)
  805. {
  806. String insql="INSERT INTO device"+k+" (devid,iccid,orgid,devgrpid,devstat,crttm,mode) VALUES ('"+devid+"','"+iccid+"',"+orgid+","+grpid+",1,"+DateTimeUtil.longtime()+","+mode+")";
  807. System.out.println(insql);
  808. //DAOHelper.execute(ProjectConstants.connMiFi, insql);
  809. RCPService.getMifiService().execSql(insql);
  810. String indevgrpsql = "INSERT INTO devinit(devid,grpid,grpname) VALUES('"+devid+"',0,'"+grpname+"')";
  811. RCPService.getBaseService().execSql(indevgrpsql);
  812. // 是否充值默认套餐
  813. // if(ProjectTools.isEmpty(dftsuit))
  814. // {
  815. // String usuitsql = "INSERT INTO usersuit(devid,orgid,remain,areaid,packid,effect,invalid,crttm,pkvalue) VALUES ('"+devid+"',"+orgid+",'"+suitval+"',"+ProjectConstants.chinaArea+","+ProjectConstants.testPkgId+","+dateStart+","+dateEnd+","+nowtm+","+suitval+")";
  816. // System.out.println(usuitsql);
  817. // DAOHelper.execute(ProjectConstants.connDev, usuitsql);
  818. // }
  819. if(copu.equals("1"))//2天不限
  820. {
  821. String keysql="SELECT * FROM `packkey` WHERE packid=235 AND statu=0 and devid is null LIMIT 1";
  822. System.out.println(keysql);
  823. Map<String, Object> keymap=RCPService.getBaseService().getMap(keysql);
  824. String keyid=keymap.get("id").toString();
  825. String upkeysql="update packkey set devid='"+devid+"' where id="+keyid;
  826. System.out.println(upkeysql);
  827. RCPService.getBaseService().execSql(upkeysql);
  828. }
  829. if(copu.equals("2"))//3天100G
  830. {
  831. String keysql="SELECT * FROM `packkey` WHERE packid=163 AND statu=0 and devid is null LIMIT 1";
  832. System.out.println(keysql);
  833. Map<String, Object> keymap=RCPService.getBaseService().getMap(keysql);
  834. String keyid=keymap.get("id").toString();
  835. String upkeysql="update packkey set devid='"+devid+"' where id="+keyid;
  836. System.out.println(upkeysql);
  837. RCPService.getBaseService().execSql(upkeysql);
  838. }
  839. if(copu.equals("3"))//7天3G
  840. {
  841. String keysql="SELECT * FROM `packkey` WHERE packid=6 AND statu=0 and devid is null LIMIT 1";
  842. System.out.println(keysql);
  843. Map<String, Object> keymap=RCPService.getBaseService().getMap(keysql);
  844. String keyid=keymap.get("id").toString();
  845. String upkeysql="update packkey set devid='"+devid+"' where id="+keyid;
  846. System.out.println(upkeysql);
  847. RCPService.getBaseService().execSql(upkeysql);
  848. }
  849. }
  850. }
  851. }
  852. Oplog oplog = new Oplog(account.getId(), account.getOrgid(), 3, "导入"+p+"条设备数据", nowtm, "", 0, ProjectConstants.testPkgId, "入库");
  853. baseDao.saveObj(oplog);
  854. resultMap.put("code", 0);
  855. //拼装返回值
  856. resultMap.put("countnum", rows);
  857. resultMap.put("sucsnum", p);
  858. return resultMap;
  859. }
  860. @Override
  861. public List<Map<String, Object>> getDevGrp(int orgid) {
  862. String sql = "SELECT id,grpname AS text,mifi FROM devicegroup WHERE 1=1 ";
  863. sql=sql+" and orgid in("+getOrgids(orgid)+")";
  864. return baseDao.getMapList(sql);
  865. }
  866. @Override
  867. public int movePkgs(Account account,String devid,String movDevid)
  868. {
  869. String devSql = "SELECT devid FROM "+ProjectTools.getTableNameBySN(movDevid)+" WHERE devid = '"+movDevid+"'";
  870. //List<Map<String,Object>> devLst = DAOHelper.find("ufidevice",devSql);
  871. List<Map<String,Object>> devLst=RCPService.getMifiService().getMapList(devSql);
  872. if(devLst == null || devLst.size() == 0)
  873. return 1;
  874. List<String> sqlList = new ArrayList<String>();
  875. String movSql = "UPDATE usersuit SET devid = '"+movDevid+"' WHERE devid = '"+devid+"'";
  876. String logSql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("
  877. + account.getId()+","+account.getOrgid()+",3,'设备套餐转移>>>设备ID:"+devid+",转移到的设备ID:"+movDevid+"',0,"+DateTimeUtil.longtime()+",'"+devid+"')";
  878. sqlList.add(movSql);
  879. sqlList.add(logSql);
  880. baseDao.excuBatch(sqlList);
  881. return 0;
  882. }
  883. @Override
  884. public int moveSPkgs(Account account,String devid,String movDevid)
  885. {
  886. String devSql = "SELECT devid FROM "+ProjectTools.getTableNameBySN(movDevid)+" WHERE devid = '"+movDevid+"'";
  887. //List<Map<String,Object>> devLst = DAOHelper.find("ufidevice",devSql);
  888. List<Map<String,Object>> devLst=RCPService.getMifiService().getMapList(devSql);
  889. if(devLst == null || devLst.size() == 0)
  890. return 1;
  891. List<String> sqlList = new ArrayList<String>();
  892. String movSql = "UPDATE userspeedpack SET devid = '"+movDevid+"' WHERE devid = '"+devid+"'";
  893. String logSql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("
  894. + account.getId()+","+account.getOrgid()+",3,'设备加速包套餐转移>>>设备ID:"+devid+",转移到的设备ID:"+movDevid+"',0,"+DateTimeUtil.longtime()+",'"+devid+"')";
  895. sqlList.add(movSql);
  896. sqlList.add(logSql);
  897. baseDao.excuBatch(sqlList);
  898. return 0;
  899. }
  900. @Override
  901. public int unbind(Account account, String devid)
  902. {
  903. String s="select appuid from "+ProjectTools.getTableNameBySN(devid)+" WHERE devid = '"+devid+"'";
  904. Map<String, Object> m=RCPService.getMifiService().getMap(s);
  905. if(m!=null && m.size()>0)
  906. {
  907. String appuid=m.get("appuid").toString();
  908. String sql = "UPDATE appuser SET defaultdev = '' WHERE id = "+appuid;
  909. RCPService.getBaseService().execSql(sql);
  910. }
  911. String sql = "UPDATE "+ProjectTools.getTableNameBySN(devid)+" SET appuid = 0 WHERE devid = '"+devid+"'";
  912. //DAOHelper.execute("ufidevice", sql);
  913. RCPService.getMifiService().execSql(sql);
  914. sql = "UPDATE appuser SET defaultdev = 0 WHERE devid = '"+devid+"'";
  915. sql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("+ account.getId()+","+account.getOrgid()+",3,'设备解除绑定>>>设备ID:"+devid+"',0,"+DateTimeUtil.longtime()+",'"+devid+"')";
  916. logger.info("设备解除绑定>>>设备ID:"+devid);
  917. baseDao.excuSql(sql);
  918. return 0;
  919. }
  920. @Override
  921. public int userBind(int orgid, int accid, Map<String, String> para)
  922. {
  923. List<String> sqlList = new ArrayList<String>();
  924. String devidstr = para.get("devidstr");
  925. String userphone = para.get("userphone");
  926. String sql = "SELECT devid,appuid FROM "+ProjectTools.getTableNameBySN(devidstr)+" WHERE devid = '"+devidstr+"' AND appuid != 0";
  927. //List<Map<String,Object>> devLst = DAOHelper.find("ufidevice", sql);
  928. List<Map<String,Object>> devLst = RCPService.getMifiService().getMapList(sql);
  929. if(devLst != null && devLst.size()>0) //设备已绑定用户
  930. return 1;
  931. sql = "SELECT id,uname FROM appuser WHERE phonenum = '"+userphone+"'";
  932. List<Map<String,Object>> userLst = baseDao.getMapList(sql);
  933. if(userLst == null || userLst.size() == 0) //用户不存在
  934. return 2;
  935. String appuid = String.valueOf(userLst.get(0).get("id"));
  936. sql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("+ accid+","+orgid+",3,'绑定设备,设备ID:"+devidstr+",用户号码:"+userphone+"',"+appuid+","+DateTimeUtil.longtime()+",'"+devidstr+"')";
  937. sqlList.add(sql);
  938. baseDao.excuBatch(sqlList);
  939. sql = "UPDATE "+ProjectTools.getTableNameBySN(devidstr)+" SET appuid = "+appuid+" WHERE devid = '"+devidstr+"'";
  940. //DAOHelper.execute("ufidevice", sql);
  941. RCPService.getMifiService().execSql(sql);
  942. return 0;
  943. }
  944. @Override
  945. public int delete(int orgid, int accid, Map<String, String> para)
  946. {
  947. String devids = para.get("devids");
  948. String[] devid = devids.split(",");
  949. for(int i=0;i<devid.length;i++)
  950. {
  951. String sql = "DELETE FROM "+ProjectTools.getTableNameBySN(devid[i])+" WHERE devid ='"+devid[i]+"'";
  952. //DAOHelper.execute("ufidevice", sql);
  953. RCPService.getMifiService().execSql(sql);
  954. }
  955. return 0;
  956. }
  957. @Override
  958. public int resetpwd(int orgid, int accid, Map<String, String> para) {
  959. List<String> sqlList = new ArrayList<String>();
  960. String devids = para.get("devids");
  961. String[] devid = devids.split(",");
  962. for(int i=0;i<devid.length;i++)
  963. {
  964. String sql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("+ accid+","+orgid+",3,'密码重置,设备ID:"+devids+"',0,"+DateTimeUtil.longtime()+",'"+devid[i]+"')";
  965. sqlList.add(sql);
  966. String sqla = "INSERT INTO devcrond(devid,operate,assist,state,crttm) VALUES('"+devid[i]+"','3','12345678',0,"+DateTimeUtil.longtime()+")";
  967. sqlList.add(sqla);
  968. }
  969. baseDao.excuBatch(sqlList);
  970. return 0;
  971. }
  972. @SuppressWarnings("unchecked")
  973. @Override
  974. public Map<String, Object> batchPkg(InputStream excelis, Account account, Map<String, String> para) throws Exception {
  975. String pkgid = para.get("pkgid");
  976. String timeStart = para.get("timeStart");
  977. int sucsnum = 0;//成功写入到数据库的条数
  978. List<String> titleList = new ArrayList<String>();//文件中列名称集合
  979. StringBuffer devbuf = new StringBuffer();
  980. /*返回的结果map*/
  981. Map<String,Object> resultMap = new HashMap<String, Object>();
  982. //导入数据的列
  983. Map<String,String> devcolumn = new HashMap<String,String>();
  984. devcolumn.put("设备ID", "devid");
  985. Workbook workbook = Workbook.getWorkbook(excelis);
  986. Sheet sheet = workbook.getSheet(0);
  987. int rows = sheet.getRows();
  988. int cols = sheet.getColumns();
  989. int countnum = rows - 1;//总数据条数
  990. for (int i = 0; i < rows; i++) {//控制循环读取一行数据
  991. if (0 == i) {//如果是第一行 第一行为标题行 非数据行
  992. int suitColumNum = 0; //可以导入的excel列数
  993. for (int z = 0; z < cols; z++) {//控制读取行的列数据
  994. String titleName=sheet.getCell(z, i).getContents() == null ? "" : sheet.getCell(z, i).getContents();//获得标题
  995. if (null != titleName) {
  996. titleList.add(titleName);//将标题放入标题List
  997. if(devcolumn.containsKey(titleName)){
  998. suitColumNum ++;
  999. }
  1000. }
  1001. }
  1002. if(suitColumNum != 1){
  1003. resultMap.put("code", 1);
  1004. resultMap.put("msg", "导入文件与模版的列不匹配!");
  1005. return resultMap;
  1006. }
  1007. }else{
  1008. for (int j = 0; j < cols; j++) {//控制读取行的列数据
  1009. String columnname = "";
  1010. if (null != titleList.get(j)) {//如果本次导入的列的标题不为空
  1011. columnname = devcolumn.get(titleList.get(j));
  1012. }
  1013. if(null != columnname){
  1014. //获得当前列值
  1015. String cellValue = sheet.getCell(j, i).getContents() == null ? "" : sheet.getCell(j, i).getContents().trim();
  1016. if ("".equals(cellValue)){
  1017. logger.info("DEVICE IMPORT:"+"rows>>>"+i+", column>>>"+j+", is null!");
  1018. break;
  1019. }else if(cellValue.indexOf("'")>0){
  1020. logger.info("DEVICE IMPORT:"+"rows>>>"+i+", column>>>"+j+", exit ' ,can not import!");
  1021. break;
  1022. }else{
  1023. devbuf.append(",'"+cellValue+"'");
  1024. sucsnum ++;
  1025. }
  1026. }
  1027. }
  1028. }
  1029. }
  1030. Map<String, Object> record = new HashMap<String, Object>();
  1031. pkgRech(record, account.getOrgid(), pkgid, timeStart, devbuf.substring(1), sucsnum, account.getId());
  1032. //接口查询套餐信息
  1033. logger.info("WRITE SUITS: res>>>>>>"+record);
  1034. int code = Integer.parseInt(String.valueOf(record.get("code")));
  1035. if(0 == code){
  1036. String sql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("
  1037. + account.getId()+","+account.getOrgid()+",1,'批量设备充值成功,"+sucsnum+"条设备数据',0,"+DateTimeUtil.longtime()+",'')";
  1038. baseDao.excuSql(sql);
  1039. resultMap.put("code", 0);
  1040. resultMap.put("countnum", countnum);
  1041. resultMap.put("sucsnum", sucsnum);
  1042. }else if(5 == code){
  1043. Map<String,Object> dataMap = (Map<String, Object>) record.get("data");
  1044. String sql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("
  1045. + account.getId()+","+account.getOrgid()+",1,'批量充值失败,编号有误的设备:"+dataMap.get("ecldev")+"',0,"+DateTimeUtil.longtime()+",'')";
  1046. baseDao.excuSql(sql);
  1047. resultMap.put("code", code);
  1048. resultMap.put("countnum", countnum);
  1049. resultMap.put("sucsnum", 0);
  1050. }else{
  1051. String sql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("
  1052. + account.getId()+","+account.getOrgid()+",1,'"+String.valueOf(record.get("msg"))+"',0,"+DateTimeUtil.longtime()+",'')";
  1053. baseDao.excuSql(sql);
  1054. resultMap.put("code", code);
  1055. resultMap.put("countnum", countnum);
  1056. resultMap.put("sucsnum", 0);
  1057. }
  1058. return resultMap;
  1059. }
  1060. /**
  1061. * 设备充值
  1062. * @param record
  1063. * @param orgid
  1064. * @param pkgid 套餐id
  1065. * @param devids 充值设备
  1066. * @param sucsnum 设备条数
  1067. * @return
  1068. */
  1069. private Map<String,Object> pkgRech(Map<String,Object> record,int orgid,String pkgid,String timeStart,String devids,int sucsnum,int accid){
  1070. record.put("msg", "fail");
  1071. record.put("code", 0);
  1072. Map<String,Object> resmap = new HashMap<String,Object>();
  1073. List<Map<String,Object>> devLst=new ArrayList<Map<String,Object>>();
  1074. for(int i=0;i<32;i++)
  1075. {
  1076. String sql = "SELECT devid,orgid FROM device"+i+" WHERE devid IN("+devids+") ";
  1077. if(orgid != 1)
  1078. sql += " AND orgid IN ("+getOrgids(orgid)+")";
  1079. List<Map<String,Object>> temp=RCPService.getMifiService().getMapList(sql);
  1080. if(temp!=null && temp.size()>0)
  1081. devLst.addAll(temp);
  1082. }
  1083. //List<Map<String,Object>> devLst = baseDao.getMapList(sql);
  1084. //判断设备存在总数是否与要导入的数量相等,如果不相等,返回失败
  1085. // if(devLst == null || devLst.size() < sucsnum){
  1086. // String ecldev = devids;
  1087. // for(Map<String,Object> devMap : devLst){
  1088. // String dbdevid = String.valueOf(devMap.get("devid"));
  1089. // if(devids.indexOf(dbdevid) > 0){
  1090. // int bgnum = ecldev.indexOf(dbdevid);
  1091. // //去掉不存在的设备编号
  1092. // ecldev = ecldev.substring(0,bgnum-1) + ecldev.substring(bgnum+dbdevid.length()+2,ecldev.length());
  1093. // }
  1094. // }
  1095. // record.put("code", 5); //导入文件存在错误设备,返回错误
  1096. // record.put("msg", "存在错误设备");
  1097. // resmap.put("ecldev", ecldev.replace("'", ""));
  1098. // //成功执行
  1099. // }else
  1100. {
  1101. List<String> sqlList = new ArrayList<String>();
  1102. //获取套餐成本价格
  1103. String pkSql = "SELECT pkv.pkid,pkv.price,pkv.costprice,pkg.pkgValue,pkg.pkgLimit,pkv.pkname,pkg.areaid,"
  1104. + " pkg.invalidtime,pkg.mode FROM packageview pkv LEFT JOIN package pkg ON pkg.id = pkv.pkid"
  1105. + " WHERE pkv.pkid = "+pkgid+" AND pkv.orgid = "+orgid;
  1106. List<Map<String,Object>> pkList = baseDao.getMapList(pkSql);
  1107. if(pkList == null || pkList.size() != 1){
  1108. record.put("msg", "套餐获取失败!");
  1109. record.put("code", 6);
  1110. return record;
  1111. }
  1112. //获取套餐信息
  1113. String nowTime = DateTimeUtil.longtime();
  1114. int costprice = Integer.parseInt(String.valueOf(pkList.get(0).get("costprice")));
  1115. long costTotal = costprice*sucsnum; //套餐总价格
  1116. if(orgid > 2){
  1117. //查询代理商余额
  1118. String orgSql = "SELECT balance,flowbal FROM organize WHERE id = "+orgid;
  1119. List<Map<String,Object>> orgList = baseDao.getMapList(orgSql);
  1120. if(orgList == null || orgList.size() != 1){
  1121. record.put("msg", "代理信息获取失败!");
  1122. record.put("code", 7);
  1123. return record;
  1124. }
  1125. int balance = Integer.parseInt(String.valueOf(orgList.get(0).get("balance")));
  1126. //获取套餐代理成本价
  1127. if(balance < costTotal){
  1128. logger.info("代理商余额不足:{代理ID:"+orgid+",套餐总价:"+costTotal+"}");
  1129. record.put("code", 8);
  1130. record.put("msg", "套餐写入失败,代理余额不足!");
  1131. return record;
  1132. }
  1133. long costNum = balance - costTotal;
  1134. String costSql = "UPDATE organize SET balance = "+costNum+" WHERE id = '"+orgid+"'";
  1135. String deSql = "INSERT INTO deductrcd (orgid,orderid,amount,befval,aftval,crttm,devid,paytype,devorgid) VALUES("
  1136. + "'"+orgid+"','',"+costTotal+","+balance+","+costNum+",'"+nowTime+"','',6,0)";
  1137. sqlList.add(costSql);
  1138. sqlList.add(deSql);
  1139. }
  1140. Map<String,Object> pkgMap = pkList.get(0);
  1141. String pkgName = String.valueOf(pkgMap.get("pkname")); //套餐名
  1142. int pkgLimit = Integer.parseInt(String.valueOf(pkgMap.get("pkgLimit")));
  1143. String areaId = String.valueOf(pkgMap.get("areaid"));
  1144. int expiryDay = 0; //有效期
  1145. int mode = Integer.parseInt(String.valueOf(pkgMap.get("mode"))); //套餐模式
  1146. int invalidtime = Integer.parseInt(String.valueOf(pkgMap.get("invalidtime"))); //有效时长
  1147. int pkgValue = Integer.parseInt(String.valueOf(pkgMap.get("pkgValue"))); //流量大小
  1148. for(int d=0;d<devLst.size();d++){
  1149. String orderId = "SYS"+Long.toString(System.currentTimeMillis()/1000)+ProjectTools.buildRandomStr(3);
  1150. String devid = String.valueOf(devLst.get(d).get("devid"));
  1151. String devOrgId = String.valueOf(devLst.get(d).get("orgid"));
  1152. Date time = new Date();
  1153. if(!ProjectTools.isEmpty(timeStart)){
  1154. SimpleDateFormat formatter = new SimpleDateFormat( "MM/dd/yyyy");
  1155. try {
  1156. time = formatter.parse(timeStart);
  1157. } catch (ParseException e) {
  1158. e.printStackTrace();
  1159. logger.info(Tools.getExceptionMessage(e));
  1160. }
  1161. }
  1162. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  1163. String timesStart = sdf.format(time.getTime()) + "000000";
  1164. String timeEnd = "";
  1165. //添加套餐
  1166. String suSql = "INSERT INTO usersuit(orgid,devid,remain,areaid,packid,limitval,effect,invalid,crttm,orderid) VALUES";
  1167. if(mode == 0){
  1168. String dateStart = sdf.format(time.getTime()) + "000000";
  1169. if(invalidtime == 0) //一天
  1170. time = DateTimeUtil.addDay(time, 1);
  1171. if(invalidtime == 1) //一月
  1172. time = ProjectTools.addMonth(time, 1);
  1173. if(invalidtime == 2) //一季
  1174. time = ProjectTools.addMonth(time, 3);
  1175. if(invalidtime == 3) //半年
  1176. time = ProjectTools.addMonth(time, 6);
  1177. if(invalidtime == 4) //一年
  1178. time = ProjectTools.addMonth(time, 12);
  1179. if(invalidtime == 5) //两年
  1180. time = ProjectTools.addMonth(time, 24);
  1181. if(invalidtime == 6) //一周
  1182. time = DateTimeUtil.addDay(time, 7);
  1183. if(invalidtime == 7) //三年
  1184. time = ProjectTools.addMonth(time, 36);
  1185. if(invalidtime == 8) //三天
  1186. time = DateTimeUtil.addDay(time, 3);
  1187. String dateEnd = sdf.format(time.getTime()) + "000000";
  1188. timeEnd = sdf.format(time.getTime()) + "000000";
  1189. suSql += "("+devOrgId+",'"+devid+"',"+pkgValue+","+areaId+","+pkgid+","+pkgLimit+",'"+dateStart+"','"+dateEnd+"','"+nowTime+"','"+orderId+"')";
  1190. }else if(mode == 1){
  1191. if(invalidtime == 0) //一天
  1192. expiryDay = 1;
  1193. if(invalidtime == 1) //一月
  1194. expiryDay = 30;
  1195. if(invalidtime == 2) //一季
  1196. expiryDay = 90;
  1197. if(invalidtime == 3) //半年
  1198. expiryDay = 180;
  1199. if(invalidtime == 4) //一年
  1200. expiryDay = 365;
  1201. if(invalidtime == 5) //两年
  1202. expiryDay = 730;
  1203. if(invalidtime == 6) //一周
  1204. expiryDay = 7;
  1205. if(invalidtime == 7) //三年
  1206. expiryDay = 1095;
  1207. if(invalidtime == 8) //三天
  1208. expiryDay = 3;
  1209. for(int i=0;i<expiryDay;i++){
  1210. String dateStart = sdf.format(time.getTime()) + "000000";
  1211. time = ProjectTools.addMonth(time, 1);
  1212. String dateEnd = sdf.format(time.getTime()) + "000000";
  1213. timeEnd = sdf.format(time.getTime()) + "000000";
  1214. suSql += "("+devOrgId+",'"+devid+"',"+pkgValue+","+areaId+","+pkgid+","+pkgLimit+",'"+dateStart+"','"+dateEnd+"','"+nowTime+"','"+orderId+"'),";
  1215. }
  1216. suSql = suSql.substring(0,suSql.length()-1);
  1217. }else if(mode == 2){
  1218. if(invalidtime == 1) //一月
  1219. expiryDay = 1;
  1220. if(invalidtime == 2) //一季
  1221. expiryDay = 3;
  1222. if(invalidtime == 3) //半年
  1223. expiryDay = 6;
  1224. if(invalidtime == 4) //一年
  1225. expiryDay = 12;
  1226. if(invalidtime == 5) //两年
  1227. expiryDay = 24;
  1228. if(invalidtime == 7) //三年
  1229. expiryDay = 36;
  1230. for(int i=0;i<expiryDay;i++){
  1231. String dateStart = sdf.format(time.getTime()) + "000000";
  1232. time = ProjectTools.addMonth(time, 1);
  1233. String dateEnd = sdf.format(time.getTime()) + "000000";
  1234. timeEnd = sdf.format(time.getTime()) + "000000";
  1235. suSql += "("+devOrgId+",'"+devid+"',"+pkgValue+","+areaId+","+pkgid+","+pkgLimit+",'"+dateStart+"','"+dateEnd+"','"+nowTime+"','"+orderId+"'),";
  1236. }
  1237. suSql = suSql.substring(0,suSql.length()-1);
  1238. }
  1239. sqlList.add(suSql);
  1240. String pkgSql = "INSERT INTO packrcd(devid,pkid,pkname,orderid,crttm,datastart,dataend,orgid) VALUES"
  1241. + "('"+devid+"','"+pkgid+"','"+pkgName+"','"+orderId+"',"+nowTime+","+timesStart+","+timeEnd+","+orgid+")";
  1242. //更改设备状态为正常
  1243. String staSql = "UPDATE "+ProjectTools.getTableNameBySN(devid)+" SET devstat = 1 WHERE devid = '"+devid+"'";
  1244. Map<String,String> simtypemap=getSimType(devid);
  1245. if(simtypemap.get("simtype")!=null)
  1246. {
  1247. String simtype=simtypemap.get("simtype").toString();
  1248. String iccid=simtypemap.get("iccid").toString();
  1249. String kasid=simtypemap.get("kasid").toString();
  1250. String accessNumber=simtypemap.get("access_number").toString();
  1251. if(simtype.equals("1"))
  1252. {
  1253. logger.info("simtype devid="+devid);
  1254. String simtasksql="insert into simtask(iccid,optask,crttm,kasid,devid,accessNumber) values ('"+iccid+"',2,"+DateTimeUtil.longtime()+","+kasid+",'"+devid+"','"+accessNumber+"')";
  1255. logger.info(simtasksql);
  1256. //DAOHelper.execute("mifi", simtasksql);
  1257. RCPService.getBaseService().execSql(simtasksql);
  1258. }
  1259. }
  1260. // String ordSql = "";
  1261. sqlList.add(pkgSql);
  1262. sqlList.add(staSql);
  1263. sqlList.add(orderId);
  1264. }
  1265. baseDao.excuBatch(sqlList);
  1266. logger.info(sqlList.toString());
  1267. record.put("msg", "success");
  1268. }
  1269. record.put("data", resmap);
  1270. return record;
  1271. }
  1272. public static Map<String,String> getSimType(String devid)
  1273. {
  1274. Map<String,String> mp=new HashMap<String,String>();
  1275. mp.put("devid", devid);
  1276. String sql="select mode from "+ProjectTools.getTableNameBySN(devid)+" where devid = '"+devid+"'";
  1277. List<Map<String, Object>> dl=RCPService.getMifiService().getMapList(sql);
  1278. if(dl!=null && dl.size()>0)
  1279. {
  1280. String mode=dl.get(0).get("mode").toString();
  1281. mp.put("mode", mode);
  1282. String icsql="SELECT iccid FROM smd WHERE sn='"+devid+"' AND rmode="+mode;
  1283. List<Map<String, Object>> sl=RCPService.getBaseService().getMapList(icsql);
  1284. if(sl!=null && sl.size()>0)
  1285. {
  1286. String iccid=sl.get(0).get("iccid").toString();
  1287. mp.put("iccid", iccid);
  1288. String ksql="SELECT kasid,access_number FROM iccidtemp WHERE iccid='"+iccid+"'";
  1289. List<Map<String, Object>> kl=DAOHelper.find("ufiiccid", ksql);
  1290. if(kl!=null && kl.size()>0)
  1291. {
  1292. String kasid=String.valueOf(kl.get(0).get("kasid"));
  1293. String access_number=String.valueOf(kl.get(0).get("access_number"));
  1294. mp.put("kasid", kasid);
  1295. mp.put("access_number", access_number);
  1296. String ks="SELECT simtype FROM kas WHERE id="+kasid;
  1297. List<Map<String, Object>> kkl=RCPService.getBaseService().getMapList(ks);
  1298. if(kkl!=null && kkl.size()>0)
  1299. {
  1300. String simtype=kkl.get(0).get("simtype").toString();
  1301. mp.put("simtype", simtype);
  1302. }
  1303. }
  1304. }
  1305. }
  1306. return mp;
  1307. }
  1308. @Override
  1309. public int orgTrasf(Account account, Map<String, String> para)
  1310. {
  1311. String orgdids = para.get("orgdids");
  1312. String dgorg = para.get("dgorg");
  1313. if(ProjectTools.isEmpty(orgdids) || ProjectTools.isEmpty(dgorg)){
  1314. return 1;
  1315. }
  1316. String[] cc=orgdids.substring(1).split(",");
  1317. for(String c:cc)
  1318. {
  1319. String devSql = "UPDATE "+ProjectTools.getTableNameBySN(c)+" SET orgid="+dgorg+" WHERE devid ='"+c+"'";
  1320. //DAOHelper.execute("ufidevice", devSql);
  1321. RCPService.getMifiService().execSql(devSql);
  1322. }
  1323. String logSql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("
  1324. + account.getId()+","+account.getOrgid()+",3,'批量划转设备代理>>>划转代理:"+dgorg+"',0,"+DateTimeUtil.longtime()+",'')";
  1325. logger.info("批量划转设备代理>>>{设备ID:"+orgdids.replace("'", "")+",划转代理:"+dgorg+"}");
  1326. baseDao.excuSql(logSql);
  1327. return 0;
  1328. }
  1329. @Override
  1330. public Map<String, Object> batchOrg(InputStream excelis, Account account, Map<String, String> para) throws Exception
  1331. {
  1332. Map<String,Object> resultMap = new HashMap<String, Object>();
  1333. long nowtm = Long.parseLong(DateTimeUtil.longtime());//当前时间
  1334. String orgid = para.get("orgid");
  1335. Workbook workbook = Workbook.getWorkbook(excelis);
  1336. Sheet sheet = workbook.getSheet(0);
  1337. int rows = sheet.getRows();
  1338. int p=0;
  1339. for (int i = 1; i < rows; i++)
  1340. {
  1341. //控制循环读取一行数据
  1342. String devid = sheet.getCell(0, i).getContents() == null ? "" : sheet.getCell(0, i).getContents().trim();
  1343. if(!Tools.isEmpty(devid))
  1344. {
  1345. p++;
  1346. String devSql = "UPDATE "+ProjectTools.getTableNameBySN(devid)+" SET orgid="+orgid+" WHERE devid='"+devid+"'";
  1347. //DAOHelper.execute("ufidevice", devSql);
  1348. RCPService.getMifiService().execSql(devSql);
  1349. }
  1350. }
  1351. String logSql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES(" + account.getId()+","+account.getOrgid()+",3,'批量划转设备代理成功"+p+"条>>>划转代理:"+orgid+"',0,"+nowtm+",'')";
  1352. logger.info("批量划转设备代理成功"+p+"条>>>,划转代理:"+orgid+"}");
  1353. baseDao.excuSql(logSql);
  1354. resultMap.put("code", 0);
  1355. resultMap.put("countnum", rows);
  1356. resultMap.put("sucsnum", p);
  1357. return resultMap;
  1358. }
  1359. @Override
  1360. public int grpTrasf(Account account, Map<String, String> para) {
  1361. String grpdids = para.get("grpdids");
  1362. String dggrp = para.get("dggrp");
  1363. if(ProjectTools.isEmpty(grpdids) || ProjectTools.isEmpty(dggrp)){
  1364. return 1;
  1365. }else{
  1366. List<String> sqlList = new ArrayList<String>();
  1367. String devids = grpdids.replace("'", "");
  1368. devids = devids.substring(1);
  1369. String[] devid = devids.split(",");
  1370. for(int i=0;i<devid.length;i++)
  1371. {
  1372. String devsql = "UPDATE "+ProjectTools.getTableNameBySN(devid[i])+" SET devgrpid = "+dggrp+" WHERE devid ='"+devid[i]+"'";
  1373. //DAOHelper.execute("ufidevice", devsql);
  1374. RCPService.getMifiService().execSql(devsql);
  1375. }
  1376. String logSql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("
  1377. + account.getId()+","+account.getOrgid()+",3,'批量划转设备组>>>设备编号:"+devids+",设备组:"+dggrp+"',0,"+DateTimeUtil.longtime()+",'')";
  1378. sqlList.add(logSql);
  1379. baseDao.excuBatch(sqlList);
  1380. logger.info("批量划转设备组>>>{设备编号:"+devids+",划转设备组:"+dggrp+"}");
  1381. return 0;
  1382. }
  1383. }
  1384. /**
  1385. * 根据时间加减日
  1386. * @param date 时间
  1387. * @param month 月份
  1388. * @return
  1389. */
  1390. public static Date addDay (Date date,int day){
  1391. Calendar calendar = new GregorianCalendar();
  1392. calendar.setTime(date);
  1393. calendar.add(Calendar.DAY_OF_MONTH, day);
  1394. return calendar.getTime();
  1395. }
  1396. @Override
  1397. public List<Object[]> exportData(int orgid, Map<String, String> para)
  1398. {
  1399. String grpid = para.get("grpid");
  1400. List<Object[]> result = new ArrayList<Object[]>();
  1401. // if(!ProjectTools.isEmpty(grpid) && !"-1".equals(grpid)){
  1402. Object[] colTitle = new Object[11];
  1403. colTitle[0] = "SN";
  1404. colTitle[1] = "iccid";
  1405. colTitle[2] = "最后上网时间";
  1406. colTitle[3] = "设备模式";
  1407. colTitle[4] = "绑定手机号";
  1408. colTitle[5] = "代理商";
  1409. colTitle[6] = "设备组";
  1410. colTitle[7] = "设备类型";
  1411. colTitle[8] = "工厂";
  1412. colTitle[9] = "设备状态";
  1413. colTitle[10] = "在线状态";
  1414. result.add(colTitle);
  1415. String grpsql = "SELECT grp.id,grp.grpname,grp.devtype,grp.gongc,devtype.typename FROM devicegroup grp,devtype WHERE devtype.id=grp.devtype";
  1416. if(!ProjectTools.isEmpty(grpid) && !"-1".equals(grpid)) {
  1417. grpsql+= " and grp.id ="+grpid;
  1418. }
  1419. List<Map<String,Object>> grplist =RCPService.getBaseService().getMapList(grpsql);
  1420. Map<String,Object> grpmap = new HashMap<String,Object>();
  1421. Map<String,Object> typemap = new HashMap<String,Object>();
  1422. Map<String,Object> gongcmap = new HashMap<String,Object>();
  1423. grplist.forEach(map->{
  1424. String id = map.get("id").toString();
  1425. String grpname = map.get("grpname").toString();
  1426. String gongc = map.get("gongc").toString();
  1427. String typename = map.get("typename").toString();
  1428. grpmap.put(id, grpname);
  1429. typemap.put(id, typename);
  1430. gongcmap.put(id, gongc);
  1431. });
  1432. String phonesql = "select id,phonenum from appuser";
  1433. List<Map<String,Object>> phonelist =RCPService.getBaseService().getMapList(phonesql);
  1434. Map<String,Object> phonemap = new HashMap<String,Object>();
  1435. phonelist.forEach(map->{
  1436. String phonenum = map.get("phonenum").toString();
  1437. String uid=map.get("id").toString();
  1438. phonemap.put(uid, phonenum);
  1439. });
  1440. String orgsql = "select id,orgname from organize";
  1441. List<Map<String,Object>> orglist =RCPService.getBaseService().getMapList(orgsql);
  1442. Map<String,Object> orgmap = new HashMap<String,Object>();
  1443. orglist.forEach(map->{
  1444. String orgname = map.get("orgname").toString();
  1445. String uid=map.get("id").toString();
  1446. orgmap.put(uid, orgname);
  1447. });
  1448. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1449. for(int k=0;k<32;k++)
  1450. {
  1451. // String sql = "SELECT devid,appuid,iccid,reptm,devstat,mode FROM device"+k+" WHERE reptm>0 and orgid IN ("+getOrgids(orgid)+")";
  1452. String sql = "SELECT devid,appuid,iccid,reptm,devstat,mode,devgrpid,lastcntm,limtval FROM device"+k+" WHERE 1=1";
  1453. if(!ProjectTools.isEmpty(grpid) && !"-1".equals(grpid)) {
  1454. sql += " and devgrpid="+grpid;
  1455. }
  1456. List<Map<String,Object>> devLst = RCPService.getMifiService().getMapList(sql);
  1457. if(devLst != null && devLst.size()>0)
  1458. {
  1459. for(int i=0;i<devLst.size();i++){
  1460. Map<String,Object> map = devLst.get(i);
  1461. String oid=String.valueOf(map.get("orgid"));
  1462. String appuid=String.valueOf(map.get("appuid"));
  1463. String devgrpid=String.valueOf(map.get("devgrpid"));
  1464. Object[] col = new Object[11];
  1465. String sn=String.valueOf(map.get("devid"));
  1466. String devstat=String.valueOf(map.get("devstat"));
  1467. col[0] = sn;
  1468. //col[1] = String.valueOf(map.get("appuid"));
  1469. String iccid="";
  1470. if(map.get("iccid")!=null)
  1471. iccid=String.valueOf(map.get("iccid"));
  1472. col[1] = iccid;
  1473. //logger.info(sn+","+iccid);
  1474. long lastcntm = Long.parseLong(String.valueOf(map.get("lastcntm")));
  1475. if (lastcntm==0){
  1476. col[2]="";
  1477. } else {
  1478. col[2] = sdf.format(new Date(lastcntm));
  1479. }
  1480. /*String reptm="";
  1481. try {
  1482. if(map.get("reptm")!=null) {
  1483. reptm=String.valueOf(map.get("reptm"));
  1484. if (reptm.length()==13){
  1485. reptm = sdf.format(sdfOneM2.parse(reptm));
  1486. } else if (reptm.length()==14){
  1487. reptm = sdf.format(sdf2.parse(reptm));
  1488. }
  1489. }
  1490. }catch (Exception e){
  1491. e.printStackTrace();
  1492. reptm=String.valueOf(map.get("reptm"));
  1493. }
  1494. col[2] = reptm;*/
  1495. String mstr = "";
  1496. if(map.get("mode")!=null)
  1497. {
  1498. int mode = Integer.parseInt(String.valueOf(map.get("mode")));
  1499. if(mode == 1)
  1500. mstr = "云卡";
  1501. else if(mode == 2)
  1502. mstr = "内置卡1";
  1503. else if(mode == 3)
  1504. mstr = "外插卡";
  1505. else if(mode == 4)
  1506. mstr = "内置卡2";
  1507. else if(mode == 5)
  1508. mstr = "内置卡3";
  1509. else if(mode == 6)
  1510. mstr = "eSim移动";
  1511. else if(mode == 7)
  1512. mstr = "eSim联通";
  1513. else if(mode == 8)
  1514. mstr = "eSim电信";
  1515. else if(mode == 9)
  1516. mstr = "终端设置";
  1517. }
  1518. col[3]=mstr;
  1519. col[4]="";
  1520. col[5]="";
  1521. if(!ProjectTools.isEmpty(appuid))
  1522. {
  1523. col[4] = phonemap.get(appuid);
  1524. }
  1525. if(!ProjectTools.isEmpty(oid))
  1526. {
  1527. col[5] = orgmap.get(oid);
  1528. }
  1529. col[6] = grpmap.get(devgrpid);
  1530. col[7] = typemap.get(devgrpid);
  1531. col[8] = gongcmap.get(devgrpid);
  1532. if("0".equals(devstat))
  1533. col[9]="禁用";
  1534. else if("1".equals(devstat))
  1535. col[9]="正常";
  1536. else if("2".equals(devstat))
  1537. col[9]="流量不足";
  1538. else if("3".equals(devstat))
  1539. col[9]="未绑定";
  1540. else if("4".equals(devstat))
  1541. col[9]="未实名";
  1542. else if("9".equals(devstat))
  1543. col[9]="eSim失效";
  1544. int upTime = 1*60*1000*5;
  1545. long nowTime = System.currentTimeMillis();
  1546. String limtval = String.valueOf(map.get("limtval"));
  1547. long acTime = nowTime - upTime;
  1548. if(lastcntm > acTime){
  1549. col[10]="在线";
  1550. // if(!limtval.equals("0")){
  1551. // col[10]=limtval+"K";
  1552. // }
  1553. }else{
  1554. col[10]="离线";
  1555. }
  1556. result.add(col);
  1557. }
  1558. }
  1559. }
  1560. // } else {
  1561. // Object[] colTitle = new Object[3];
  1562. // colTitle[0] = "SN";
  1563. // colTitle[1] = "iccid";
  1564. //// colTitle[2] = "设备状态";
  1565. // colTitle[2] = "最后上网时间";
  1566. // result.add(colTitle);
  1567. //
  1568. // for(int k=0;k<32;k++)
  1569. // {
  1570. // String sql = "SELECT devid,appuid,iccid,reptm,devstat FROM device"+k+" WHERE reptm>0 and orgid IN ("+getOrgids(orgid)+")";
  1571. // List<Map<String,Object>> devLst = RCPService.getMifiService().getMapList(sql);
  1572. // if(devLst != null && devLst.size()>0)
  1573. // {
  1574. // for(int i=0;i<devLst.size();i++){
  1575. // Map<String,Object> map = devLst.get(i);
  1576. // Object[] col = new Object[3];
  1577. // String sn=String.valueOf(map.get("devid"));
  1578. // col[0] = sn;
  1579. // //col[1] = String.valueOf(map.get("appuid"));
  1580. // String iccid="";
  1581. // if(map.get("iccid")!=null)
  1582. // iccid=String.valueOf(map.get("iccid"));
  1583. // col[1] = iccid;
  1584. // //logger.info(sn+","+iccid);
  1585. // String reptm="";
  1586. // if(map.get("reptm")!=null)
  1587. // reptm=String.valueOf(map.get("reptm"));
  1588. //// String reptm=String.valueOf(map.get("reptm"));
  1589. ////// if(reptm.length()>10)
  1590. ////// reptm=reptm.substring(0,4)+"-"+reptm.substring(4,6)+"-"+reptm.substring(6,8)+"-"+reptm.substring(8,10)+":"+reptm.substring(10,12)+":"+reptm.substring(12,14);
  1591. //// String devstat=String.valueOf(map.get("devstat"));
  1592. //// if(devstat.equals("0"))
  1593. //// devstat="禁用";
  1594. //// if(devstat.equals("1"))
  1595. //// devstat="正常";
  1596. //// if(devstat.equals("2"))
  1597. //// devstat="流量不足";
  1598. // //col[2] = devstat;
  1599. // col[2] = reptm;
  1600. //
  1601. //// String uid = String.valueOf(map.get("appuid"));
  1602. //// String usql="SELECT phonenum FROM appuser WHERE id="+uid;
  1603. //// Map<String, Object> umap=RCPService.getBaseService().getMap(usql);
  1604. //// String phone=umap.get("phonenum").toString();
  1605. //// col[1] = phone;
  1606. //
  1607. //// String osql="SELECT COUNT(*) AS c FROM allorder WHERE ostat>0 AND otype = 0 AND (packid not in(1,316,317)) AND devid='"+sn+"'";
  1608. //// logger.info(osql);
  1609. //// Map<String, Object> omap=RCPService.getBaseService().getMap(osql);
  1610. //// String c=omap.get("c").toString();
  1611. //// String p="0";
  1612. //// if(omap.get("p")!=null)
  1613. //// p=omap.get("p").toString();
  1614. // //col[5] = c;
  1615. // //col[6] = p;
  1616. // result.add(col);
  1617. // }
  1618. // }
  1619. // }
  1620. // }
  1621. return result;
  1622. }
  1623. @Override
  1624. public int rptLog(Account account, Map<String, String> paras) {
  1625. List<String> sqlList = new ArrayList<String>();
  1626. String devid = paras.get("devid");
  1627. String dbsql = "select count(1) from devcrond where devid = '"+devid+"'";
  1628. String devsql = "";
  1629. long num = baseDao.getLongField(dbsql).get(0);
  1630. if(num>0){
  1631. devsql = "update devcrond set operate = 4, assist = '"+ProjectConstants.logAddress
  1632. + "',state = 0, crttm="+DateTimeUtil.longtime()+" where devid = '"+devid+"'";
  1633. }else{
  1634. devsql = "insert into devcrond(devid,operate,assist,crttm) values ('"+devid+"',4,'"+ProjectConstants.logAddress
  1635. + "',"+DateTimeUtil.longtime()+")";
  1636. }
  1637. String logSql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("
  1638. + account.getId()+","+account.getOrgid()+",3,'上传设备日志>>>设备编号:"+devid+"',0,"+DateTimeUtil.longtime()+",'')";
  1639. sqlList.add(devsql);
  1640. sqlList.add(logSql);
  1641. baseDao.excuBatch(sqlList);
  1642. return 0;
  1643. }
  1644. @Override
  1645. public int reget(Account account, Map<String, String> paras)
  1646. {
  1647. List<String> sqlList = new ArrayList<String>();
  1648. String devid = paras.get("devid");
  1649. String simshud = paras.get("simshud");
  1650. String olsql = "SELECT lastcntm,fqpara FROM "+ProjectTools.getTableNameBySN(devid)+" where devid = '"+devid+"'";
  1651. List<Map<String,Object>> reslst = RCPService.getMifiService().getMapList(olsql);
  1652. String fqpara = String.valueOf(reslst.get(0).get("fqpara"));
  1653. JSONObject fqJson = JSONObject.parseObject(fqpara);
  1654. int upTime = Integer.parseInt(String.valueOf(fqJson.getIntValue("update")))*60*1000*2;
  1655. long lastcntm = Long.parseLong(String.valueOf(reslst.get(0).get("lastcntm")));
  1656. long acTime = System.currentTimeMillis() - upTime;
  1657. if(lastcntm < acTime){
  1658. return 1;
  1659. }
  1660. if(ProjectTools.isEmpty(simshud)){
  1661. simshud = "0";
  1662. }
  1663. String sql = "UPDATE "+ProjectTools.getTableNameBySN(devid)+" SET simshud='"+simshud+"' where devid = '"+devid+"'";
  1664. RCPService.getMifiService().execSql(sql);
  1665. String dbsql = "select count(1) from devcrond where devid = '"+devid+"'";
  1666. String devsql = "";
  1667. long num = baseDao.getLongField(dbsql).get(0);
  1668. if(num>0){
  1669. devsql = "update devcrond set operate = 5, assist = '0', state = 0, crttm="+DateTimeUtil.longtime()
  1670. +" where devid = '"+devid+"'";
  1671. }else{
  1672. devsql = "insert into devcrond(devid,operate,assist,crttm) values ('"+devid+"',5,'0',"+DateTimeUtil.longtime()+")";
  1673. }
  1674. String logSql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("
  1675. + account.getId()+","+account.getOrgid()+",3,'设备重新取卡>>>设备编号:"+devid+",选卡策略:"+simshud+"',0,"
  1676. + DateTimeUtil.longtime()+",'')";
  1677. sqlList.add(devsql);
  1678. sqlList.add(logSql);
  1679. baseDao.excuBatch(sqlList);
  1680. return 0;
  1681. }
  1682. @Override
  1683. public int updtDrv(Account account, Map<String, String> paras) {
  1684. List<String> sqlList = new ArrayList<String>();
  1685. List<String> devlst = new ArrayList<String>();
  1686. String devids = paras.get("devids");
  1687. String[] devary = devids.split(",");
  1688. String ids = "";
  1689. for(int i=0;i<devary.length;i++){
  1690. ids += "'"+devary[i]+"',";
  1691. devlst.add(devary[i]);
  1692. }
  1693. ids = ids.substring(0, ids.length()-1);
  1694. String sql = "SELECT devid FROM devcrond WHERE devid IN ("+ids+")";
  1695. List<Map<String,Object>> reslst = baseDao.getMapList(sql);
  1696. if(reslst != null && reslst.size()>0){
  1697. for(Map<String,Object> resmap:reslst){
  1698. String devid = String.valueOf(resmap.get("devid"));
  1699. sqlList.add("update devcrond set operate = 6, assist = '0', state = 0, crttm="+DateTimeUtil.longtime()
  1700. +" where devid = '"+devid+"'");
  1701. devlst.remove(devid);
  1702. }
  1703. }
  1704. for(String dev:devlst){
  1705. sqlList.add("insert into devcrond(devid,operate,assist,crttm) values ('"+dev+"',6,'0',"+DateTimeUtil.longtime()+")");
  1706. }
  1707. String logSql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("
  1708. + account.getId()+","+account.getOrgid()+",3,'远程控制设备升级>>>设备编号:"+devids+"',0,"
  1709. + DateTimeUtil.longtime()+",'')";
  1710. sqlList.add(logSql);
  1711. baseDao.excuBatch(sqlList);
  1712. return 0;
  1713. }
  1714. @Override
  1715. public Object limit(Account account, Map<String, String> para) {
  1716. String devids = para.get("devids");
  1717. String limtval = para.get("limtval");
  1718. // String[] devid = devids.split(",");
  1719. // String ids = "";
  1720. // for(int i=0;i<devid.length;i++){
  1721. // ids += "'"+devid[i]+"',";
  1722. // }
  1723. // ids = ids.substring(0, ids.length()-1);
  1724. // String sql = "SELECT devid,appuid FROM device WHERE devid IN ("+ids+")";
  1725. // List<Map<String,Object>> devLst = baseDao.getMapList(sql);
  1726. // if(devLst != null && devLst.size()>0) {
  1727. // String updsql = "UPDATE `device` SET limtval="+limtval+",iflimt=5 WHERE devid IN ("+ids+")";
  1728. // baseDao.excuSql(updsql);
  1729. // return 0;
  1730. // }
  1731. // return 1;
  1732. String updsql = "update usersuit set limitval="+limtval+" WHERE effect<"+DateTimeUtil.longtime()+" AND invalid>"+DateTimeUtil.longtime()+" AND packid IN(2,9,10,11,12,13) and devid IN ("+devids+")";
  1733. logger.info(updsql);
  1734. baseDao.excuSql(updsql);
  1735. return 0;
  1736. }
  1737. @Override
  1738. public List<ISP> getIsp(Map<String, String> paras) {
  1739. List<ISP> list=new ArrayList<ISP>();
  1740. ISP p=new ISP();
  1741. p.setId("0");
  1742. p.setName("自动");
  1743. list.add(p);
  1744. String grpid = paras.get("grpid");
  1745. String sql = "select id,grpname,isp from devicegroup where id ="+grpid;
  1746. List<Map<String,Object>> grplst = baseDao.getMapList(sql);
  1747. if(null!=grplst&&grplst.size()>0){
  1748. for(Map<String,Object> gmap:grplst){
  1749. String isp=gmap.get("isp").toString();
  1750. String[] cc=isp.split(",");
  1751. for(String c:cc)
  1752. {
  1753. String[] bb=c.split(":");
  1754. ISP sp=new ISP();
  1755. if(bb.length>1)
  1756. {
  1757. sp.setId(bb[0]);
  1758. sp.setName(bb[1]);
  1759. }
  1760. list.add(sp);
  1761. }
  1762. }
  1763. }
  1764. return list;
  1765. }
  1766. @Override
  1767. public Map<String,Object> getDeviceFlow(Map<String, String> paras) {
  1768. Map<String,Object> record = new HashMap<String, Object>();
  1769. String devid = paras.get("devid");
  1770. String monthSql = "SELECT SUM(usedchina+usedarea) as flow,calctm FROM `devflowmonth` where devid='"+devid+"' GROUP BY calctm ORDER BY calctm ASC";
  1771. System.out.println(monthSql);
  1772. //List<Map<String,Object>> monthList = baseDao.getMapList(monthSql);
  1773. List<Map<String,Object>> monthList = RCPService.getStatisticsService().getMapList(monthSql);;
  1774. List<String> monthTimeLst = new ArrayList<String>(); //时间集合
  1775. List<Float> monthUsedLst = new ArrayList<Float>(); //数量集合
  1776. if(monthList != null){
  1777. for(int i=0 ;i<monthList.size(); i++){
  1778. Map<String,Object> flowMap = monthList.get(i);
  1779. float flow = Float.parseFloat(String.valueOf(flowMap.get("flow")))/1024; //总流量
  1780. monthUsedLst.add(flow);
  1781. monthTimeLst.add(flowMap.get("calctm").toString());
  1782. //System.out.println(flowMap.get("calctm").toString());
  1783. }
  1784. }
  1785. record.put("monthTimeLst", monthTimeLst); // 活跃设备时间
  1786. record.put("monthUsedLst", monthUsedLst); // 活跃设备数量
  1787. return record;
  1788. }
  1789. @Override
  1790. public int auto(int orgid, int accid, Map<String, String> para)
  1791. {
  1792. List<String> sqlList = new ArrayList<String>();
  1793. String devids = para.get("devids");
  1794. String[] devid = devids.split(",");
  1795. String ids = "";
  1796. for(int i=0;i<devid.length;i++)
  1797. {
  1798. ids += "'"+devid[i]+"',";
  1799. String sql = "update "+ProjectTools.getTableNameBySN(devid[i])+" set flag=1 WHERE devid ='"+devid[i]+"'";
  1800. //DAOHelper.execute("ufidevice", sql);
  1801. RCPService.getMifiService().execSql(sql);
  1802. }
  1803. ids = ids.substring(0, ids.length()-1);
  1804. String sql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("+ accid+","+orgid+",8,'自动化标记,设备ID:"+devids+"',0,"+DateTimeUtil.longtime()+",'')";
  1805. sqlList.add(sql);
  1806. baseDao.excuBatch(sqlList);
  1807. return 0;
  1808. }
  1809. @Override
  1810. public Map<String, Object> devreset(InputStream excelis, Account account,String copu,String rmode) throws Exception
  1811. {
  1812. int sucsnum = 0;//成功写入到数据库的条数
  1813. List<String> titleList = new ArrayList<String>();//文件中列名称集合
  1814. StringBuffer devbuf = new StringBuffer();
  1815. /*返回的结果map*/
  1816. Map<String,Object> resultMap = new HashMap<String, Object>();
  1817. //导入数据的列
  1818. Map<String,String> devcolumn = new HashMap<String,String>();
  1819. devcolumn.put("设备ID", "devid");
  1820. Workbook workbook = Workbook.getWorkbook(excelis);
  1821. Sheet sheet = workbook.getSheet(0);
  1822. int rows = sheet.getRows();
  1823. int cols = sheet.getColumns();
  1824. int countnum = rows - 1;//总数据条数
  1825. for (int i = 0; i < rows; i++) {//控制循环读取一行数据
  1826. if (0 == i) {//如果是第一行 第一行为标题行 非数据行
  1827. int suitColumNum = 0; //可以导入的excel列数
  1828. for (int z = 0; z < cols; z++) {//控制读取行的列数据
  1829. String titleName=sheet.getCell(z, i).getContents() == null ? "" : sheet.getCell(z, i).getContents();//获得标题
  1830. if (null != titleName) {
  1831. titleList.add(titleName);//将标题放入标题List
  1832. if(devcolumn.containsKey(titleName)){
  1833. suitColumNum ++;
  1834. }
  1835. }
  1836. }
  1837. if(suitColumNum != 1){
  1838. resultMap.put("code", 1);
  1839. resultMap.put("msg", "导入文件与模版的列不匹配!");
  1840. return resultMap;
  1841. }
  1842. }else{
  1843. for (int j = 0; j < cols; j++) {//控制读取行的列数据
  1844. String columnname = "";
  1845. if (null != titleList.get(j)) {//如果本次导入的列的标题不为空
  1846. columnname = devcolumn.get(titleList.get(j));
  1847. }
  1848. if(null != columnname){
  1849. //获得当前列值
  1850. String cellValue = sheet.getCell(j, i).getContents() == null ? "" : sheet.getCell(j, i).getContents().trim();
  1851. if ("".equals(cellValue)){
  1852. logger.info("DEVICE IMPORT:"+"rows>>>"+i+", column>>>"+j+", is null!");
  1853. break;
  1854. }else if(cellValue.indexOf("'")>0){
  1855. logger.info("DEVICE IMPORT:"+"rows>>>"+i+", column>>>"+j+", exit ' ,can not import!");
  1856. break;
  1857. }else{
  1858. devbuf.append(",'"+cellValue+"'");
  1859. sucsnum ++;
  1860. }
  1861. }
  1862. }
  1863. }
  1864. }
  1865. int orgid=account.getOrgid();
  1866. List<Map<String,Object>> devLst=new ArrayList<Map<String,Object>>();
  1867. for(int i=0;i<32;i++)
  1868. {
  1869. String sql = "SELECT devid,orgid FROM device"+i+" WHERE devid IN("+devbuf.substring(1)+") ";
  1870. if(orgid != 1)
  1871. sql += " AND orgid IN ("+getOrgids(orgid)+")";
  1872. List<Map<String,Object>> temp=RCPService.getMifiService().getMapList(sql);
  1873. if(temp!=null && temp.size()>0)
  1874. devLst.addAll(temp);
  1875. }
  1876. String devids="";
  1877. if(devLst == null || devLst.size() <= sucsnum){
  1878. for(Map<String,Object> devMap : devLst){
  1879. String dbdevid = String.valueOf(devMap.get("devid"));
  1880. devids=devids+",'"+dbdevid+"'";
  1881. String dbsql = "select count(1) from recycle where sn = '"+dbdevid+"'";
  1882. String devsql = "";
  1883. long num = baseDao.getLongField(dbsql).get(0);
  1884. if(num>0){
  1885. devsql = "update recycle set recount=recount+1,orgid="+orgid+" where sn = '"+dbdevid+"'";
  1886. }else{
  1887. devsql = "insert into recycle(sn,recount,orgid) values ('"+dbdevid+"',0,"+orgid+")";
  1888. }
  1889. String logsql = "insert into recyclelog(sn,crttm,accid,accname,orgid,rmode) values ('"+dbdevid+"',"+DateTimeUtil.longtime()+","+account.getId()+",'"+account.getUsername()+"',"+orgid+","+rmode+")";
  1890. baseDao.excuSql(devsql);
  1891. baseDao.excuSql(logsql);
  1892. }
  1893. }
  1894. else
  1895. devids=devbuf.toString();
  1896. for(int i=0;i<32;i++)
  1897. {
  1898. int devstat = 1;
  1899. if ("6".equals(rmode) || "7".equals(rmode) || "8".equals(rmode) || "5".equals(rmode) || "23".equals(rmode)) {
  1900. devstat = 9;
  1901. }
  1902. String sqli="UPDATE device"+i+" SET mode="+rmode+",appuid=0,flag=1,devstat="+devstat+",cellid='',celladdress='' WHERE devid IN("+devids.substring(1)+")";
  1903. logger.info(sqli);
  1904. RCPService.getMifiService().execSql(sqli);
  1905. }
  1906. // String delorder="DELETE FROM allorder WHERE devid IN("+devbuf.substring(1)+")";
  1907. // logger.info(delorder);
  1908. // RCPService.getBaseService().execSql(delorder);
  1909. String delsu="DELETE FROM usersuit WHERE devid IN("+devbuf.substring(1)+")";
  1910. logger.info(delsu);
  1911. RCPService.getBaseService().execSql(delsu);
  1912. String delkey="DELETE FROM packkey WHERE devid IN("+devbuf.substring(1)+")";
  1913. logger.info(delkey);
  1914. RCPService.getBaseService().execSql(delkey);
  1915. String delstatus="DELETE FROM devstatus WHERE devid IN("+devbuf.substring(1)+")";
  1916. logger.info(delstatus);
  1917. RCPService.getBaseService().execSql(delstatus);
  1918. String[] cc=devids.substring(1).split(",");
  1919. for(String c:cc)
  1920. {
  1921. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  1922. Date date = ProjectTools.addMonth(new Date(), 12);
  1923. String dateStart = sdf.format(new Date()) + "000000";
  1924. String dateEnd = sdf.format(date) + "000000";
  1925. long nowtm = Long.parseLong(DateTimeUtil.longtime());//当前时间
  1926. String suitval = String.valueOf(baseDao.getOneField(" SELECT IFNULL(pkgValue,0) AS pkgValue FROM package WHERE id ="+ProjectConstants.testPkgId).get(0));
  1927. String usuitsql = "INSERT INTO usersuit(devid,orgid,remain,areaid,packid,effect,invalid,crttm,pkvalue) VALUES ("+c+","+orgid+",'"+suitval+"',"+ProjectConstants.chinaArea+","+ProjectConstants.testPkgId+","+dateStart+","+dateEnd+","+nowtm+",'"+suitval+"')";
  1928. System.out.println(usuitsql);
  1929. DAOHelper.execute(ProjectConstants.connDev, usuitsql);
  1930. if(copu.equals("1"))//2天不限
  1931. {
  1932. String keysql="SELECT * FROM `packkey` WHERE packid=235 AND statu=0 and devid is null LIMIT 1";
  1933. System.out.println(keysql);
  1934. Map<String, Object> keymap=RCPService.getBaseService().getMap(keysql);
  1935. String keyid=keymap.get("id").toString();
  1936. String upkeysql="update packkey set devid="+c+" where id="+keyid;
  1937. System.out.println(upkeysql);
  1938. RCPService.getBaseService().execSql(upkeysql);
  1939. }
  1940. if(copu.equals("2"))//3天100G
  1941. {
  1942. String keysql="SELECT * FROM `packkey` WHERE packid=163 AND statu=0 and devid is null LIMIT 1";
  1943. System.out.println(keysql);
  1944. Map<String, Object> keymap=RCPService.getBaseService().getMap(keysql);
  1945. String keyid=keymap.get("id").toString();
  1946. String upkeysql="update packkey set devid="+c+" where id="+keyid;
  1947. System.out.println(upkeysql);
  1948. RCPService.getBaseService().execSql(upkeysql);
  1949. }
  1950. if(copu.equals("7"))//7天3G
  1951. {
  1952. String keysql="SELECT * FROM `packkey` WHERE packid=6 AND statu=0 and devid is null LIMIT 1";
  1953. System.out.println(keysql);
  1954. Map<String, Object> keymap=RCPService.getBaseService().getMap(keysql);
  1955. String keyid=keymap.get("id").toString();
  1956. String upkeysql="update packkey set devid="+c+" where id="+keyid;
  1957. System.out.println(upkeysql);
  1958. RCPService.getBaseService().execSql(upkeysql);
  1959. }
  1960. }
  1961. // String smdsql = "SELECT iccid,sn FROM smd WHERE flag=1 and sn IN("+devbuf.substring(1)+") ";
  1962. // logger.info(smdsql);
  1963. // List<Map<String,Object>> smdlist=RCPService.getBaseService().getMapList(smdsql);
  1964. // if(smdlist!=null && smdlist.size()>0)
  1965. // {
  1966. // for(Map<String,Object> mp:smdlist)
  1967. // {
  1968. // String iccid=mp.get("iccid").toString();
  1969. // if(iccid.length()==20)
  1970. // iccid=iccid.substring(0,19);
  1971. // String devid=mp.get("sn").toString();
  1972. // String ksql="SELECT kasid,access_number FROM iccidtemp WHERE realstate='已实名' and iccid='"+iccid+"'";
  1973. // logger.info(ksql);
  1974. // List<Map<String, Object>> kl=RCPService.getIccidService().getMapList(ksql);
  1975. // if(kl!=null && kl.size()>0)
  1976. // {
  1977. // String kasid=kl.get(0).get("kasid").toString();
  1978. // String access_number=kl.get(0).get("access_number").toString();
  1979. //
  1980. // String simtasksql="insert into simtask(iccid,optask,crttm,kasid,devid,accessNumber) values ('"+iccid+"',3,"+DateTimeUtil.longtime()+","+kasid+",'"+devid+"','"+access_number+"')";
  1981. // logger.info(simtasksql);
  1982. // RCPService.getIccidService().execSql(simtasksql);
  1983. // }
  1984. // }
  1985. // }
  1986. // 设置卡为未实名和回仓时间
  1987. String smdsql = "SELECT iccid,sn FROM smd WHERE sn IN("+devbuf.substring(1)+") ";
  1988. logger.info(smdsql);
  1989. List<Map<String,Object>> smdlist=RCPService.getBaseService().getMapList(smdsql);
  1990. if(smdlist!=null && smdlist.size()>0)
  1991. {
  1992. StringBuilder iccidsb = new StringBuilder();
  1993. for(Map<String,Object> mp:smdlist)
  1994. {
  1995. String iccid=String.valueOf(mp.get("iccid"));
  1996. String iccidnornesql="update iccidtemp set realstate='未实名',resettm='"+DateTimeUtil.longtime()+"' where iccid = '"+iccid+"'";
  1997. RCPService.getIccidService().execSql(iccidnornesql);
  1998. iccidsb.append(",'").append(iccid).append("'");
  1999. }
  2000. }
  2001. if ("6".equals(rmode) || "7".equals(rmode) || "8".equals(rmode) || "1".equals(rmode) || "5".equals(rmode) || "23".equals(rmode)) {
  2002. String smd="DELETE FROM smd WHERE sn IN("+devbuf.substring(1)+")";
  2003. logger.info(smd);
  2004. RCPService.getBaseService().execSql(smd);
  2005. }
  2006. String sql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("+ account.getId()+","+account.getOrgid()+",1,'设备回仓,"+sucsnum+"条设备数据',0,"+DateTimeUtil.longtime()+",'')";
  2007. baseDao.excuSql(sql);
  2008. resultMap.put("code", 0);
  2009. resultMap.put("countnum", countnum);
  2010. resultMap.put("sucsnum", sucsnum);
  2011. return resultMap;
  2012. }
  2013. @Override
  2014. public int devreset(String devid, Account account,String copu,String rmode) throws Exception
  2015. {
  2016. // int sucsnum = 0;//成功写入到数据库的条数
  2017. // List<String> titleList = new ArrayList<String>();//文件中列名称集合
  2018. // StringBuffer devbuf = new StringBuffer();
  2019. // devbuf.append(devid);
  2020. // /*返回的结果map*/
  2021. // Map<String,Object> resultMap = new HashMap<String, Object>();
  2022. //
  2023. // int orgid=account.getOrgid();
  2024. //
  2025. // List<Map<String,Object>> devLst=new ArrayList<Map<String,Object>>();
  2026. // for(int i=0;i<32;i++)
  2027. // {
  2028. // String sql = "SELECT devid,orgid FROM device"+i+" WHERE devid IN("+devbuf.substring(1)+") ";
  2029. // if(orgid != 1)
  2030. // sql += " AND orgid IN ("+getOrgids(orgid)+")";
  2031. // List<Map<String,Object>> temp=RCPService.getMifiService().getMapList(sql);
  2032. // if(temp!=null && temp.size()>0)
  2033. // devLst.addAll(temp);
  2034. // }
  2035. //
  2036. // String devids="";
  2037. // if(devLst == null || devLst.size() <= sucsnum){
  2038. // for(Map<String,Object> devMap : devLst){
  2039. // String dbdevid = String.valueOf(devMap.get("devid"));
  2040. // devids=devids+",'"+dbdevid+"'";
  2041. //
  2042. // String dbsql = "select count(1) from recycle where sn = '"+dbdevid+"'";
  2043. // String devsql = "";
  2044. // long num = baseDao.getLongField(dbsql).get(0);
  2045. // if(num>0){
  2046. // devsql = "update recycle set recount=recount+1,orgid="+orgid+" where sn = '"+dbdevid+"'";
  2047. // }else{
  2048. // devsql = "insert into recycle(sn,recount,orgid) values ('"+dbdevid+"',0,"+orgid+")";
  2049. // }
  2050. // String logsql = "insert into recyclelog(sn,crttm,accid,accname,orgid,rmode) values ('"+dbdevid+"',"+DateTimeUtil.longtime()+","+account.getId()+",'"+account.getUsername()+"',"+orgid+","+rmode+")";
  2051. // logger.info(devsql);
  2052. // logger.info(logsql);
  2053. // baseDao.excuSql(devsql);
  2054. // baseDao.excuSql(logsql);
  2055. // }
  2056. // }
  2057. // else
  2058. // devids=devbuf.toString();
  2059. //
  2060. // for(int i=0;i<32;i++)
  2061. // {
  2062. // int devstat = 1;
  2063. // if ("6".equals(rmode) || "7".equals(rmode) || "8".equals(rmode) || "5".equals(rmode)) {
  2064. // devstat = 9;
  2065. // }
  2066. // String sqli="UPDATE device"+i+" SET mode="+rmode+",appuid=0,flag=1,devstat="+devstat+" WHERE devid IN("+devids.substring(1)+")";
  2067. // logger.info(sqli);
  2068. // RCPService.getMifiService().execSql(sqli);
  2069. // }
  2070. //
  2071. //// String delorder="DELETE FROM allorder WHERE devid IN("+devbuf.substring(1)+")";
  2072. //// logger.info(delorder);
  2073. //// RCPService.getBaseService().execSql(delorder);
  2074. //
  2075. // String delsu="DELETE FROM usersuit WHERE devid IN("+devbuf.substring(1)+")";
  2076. // logger.info(delsu);
  2077. // RCPService.getBaseService().execSql(delsu);
  2078. //
  2079. // String delkey="DELETE FROM packkey WHERE devid IN("+devbuf.substring(1)+")";
  2080. // logger.info(delkey);
  2081. // RCPService.getBaseService().execSql(delkey);
  2082. //
  2083. // String delstatus="DELETE FROM devstatus WHERE devid IN("+devbuf.substring(1)+")";
  2084. // logger.info(delstatus);
  2085. // RCPService.getBaseService().execSql(delstatus);
  2086. //
  2087. // String[] cc=devids.substring(1).split(",");
  2088. // for(String c:cc)
  2089. // {
  2090. // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  2091. // Date date = ProjectTools.addMonth(new Date(), 12);
  2092. // String dateStart = sdf.format(new Date()) + "000000";
  2093. // String dateEnd = sdf.format(date) + "000000";
  2094. // long nowtm = Long.parseLong(DateTimeUtil.longtime());//当前时间
  2095. // String suitval = String.valueOf(baseDao.getOneField(" SELECT IFNULL(pkgValue,0) AS pkgValue FROM package WHERE id ="+ProjectConstants.testPkgId).get(0));
  2096. // String usuitsql = "INSERT INTO usersuit(devid,orgid,remain,areaid,packid,effect,invalid,crttm,pkvalue) VALUES ("+c+","+orgid+",'"+suitval+"',"+ProjectConstants.chinaArea+","+ProjectConstants.testPkgId+","+dateStart+","+dateEnd+","+nowtm+",'"+suitval+"')";
  2097. // System.out.println(usuitsql);
  2098. // DAOHelper.execute(ProjectConstants.connDev, usuitsql);
  2099. //
  2100. // if(copu.equals("1"))//2天不限
  2101. // {
  2102. // String keysql="SELECT * FROM `packkey` WHERE packid=235 AND statu=0 and devid is null LIMIT 1";
  2103. // System.out.println(keysql);
  2104. // Map<String, Object> keymap=RCPService.getBaseService().getMap(keysql);
  2105. // String keyid=keymap.get("id").toString();
  2106. // String upkeysql="update packkey set devid="+c+" where id="+keyid;
  2107. // System.out.println(upkeysql);
  2108. // RCPService.getBaseService().execSql(upkeysql);
  2109. // }
  2110. // if(copu.equals("2"))//3天100G
  2111. // {
  2112. // String keysql="SELECT * FROM `packkey` WHERE packid=163 AND statu=0 and devid is null LIMIT 1";
  2113. // System.out.println(keysql);
  2114. // Map<String, Object> keymap=RCPService.getBaseService().getMap(keysql);
  2115. // String keyid=keymap.get("id").toString();
  2116. // String upkeysql="update packkey set devid="+c+" where id="+keyid;
  2117. // System.out.println(upkeysql);
  2118. // RCPService.getBaseService().execSql(upkeysql);
  2119. // }
  2120. // if(copu.equals("7"))//7天3G
  2121. // {
  2122. // String keysql="SELECT * FROM `packkey` WHERE packid=6 AND statu=0 and devid is null LIMIT 1";
  2123. // System.out.println(keysql);
  2124. // Map<String, Object> keymap=RCPService.getBaseService().getMap(keysql);
  2125. // String keyid=keymap.get("id").toString();
  2126. // String upkeysql="update packkey set devid="+c+" where id="+keyid;
  2127. // System.out.println(upkeysql);
  2128. // RCPService.getBaseService().execSql(upkeysql);
  2129. // }
  2130. // }
  2131. //
  2132. //// String smdsql = "SELECT iccid,sn FROM smd WHERE flag=1 and sn IN("+devbuf.substring(1)+") ";
  2133. //// logger.info(smdsql);
  2134. //// List<Map<String,Object>> smdlist=RCPService.getBaseService().getMapList(smdsql);
  2135. //// if(smdlist!=null && smdlist.size()>0)
  2136. //// {
  2137. //// for(Map<String,Object> mp:smdlist)
  2138. //// {
  2139. //// String iccid=mp.get("iccid").toString();
  2140. //// if(iccid.length()==20)
  2141. //// iccid=iccid.substring(0,19);
  2142. //// String devid=mp.get("sn").toString();
  2143. //// String ksql="SELECT kasid,access_number FROM iccidtemp WHERE realstate='已实名' and iccid='"+iccid+"'";
  2144. //// logger.info(ksql);
  2145. //// List<Map<String, Object>> kl=RCPService.getIccidService().getMapList(ksql);
  2146. //// if(kl!=null && kl.size()>0)
  2147. //// {
  2148. //// String kasid=kl.get(0).get("kasid").toString();
  2149. //// String access_number=kl.get(0).get("access_number").toString();
  2150. ////
  2151. //// String simtasksql="insert into simtask(iccid,optask,crttm,kasid,devid,accessNumber) values ('"+iccid+"',3,"+DateTimeUtil.longtime()+","+kasid+",'"+devid+"','"+access_number+"')";
  2152. //// logger.info(simtasksql);
  2153. //// RCPService.getIccidService().execSql(simtasksql);
  2154. //// }
  2155. //// }
  2156. //// }
  2157. //
  2158. // // 设置卡为未实名和回仓时间
  2159. // String smdsql = "SELECT iccid,sn FROM smd WHERE sn IN("+devbuf.substring(1)+") ";
  2160. // logger.info(smdsql);
  2161. // List<Map<String,Object>> smdlist=RCPService.getBaseService().getMapList(smdsql);
  2162. // if(smdlist!=null && smdlist.size()>0)
  2163. // {
  2164. // for(Map<String,Object> mp:smdlist)
  2165. // {
  2166. // String iccid=mp.get("iccid").toString();
  2167. // String iccidnornesql="update iccidtemp set realstate='未实名',resettm='"+DateTimeUtil.longtime()+"' where iccid = '"+iccid+"'";
  2168. // RCPService.getIccidService().execSql(iccidnornesql);
  2169. // }
  2170. // }
  2171. //
  2172. // if ("6".equals(rmode) || "7".equals(rmode) || "8".equals(rmode) || "1".equals(rmode) || "5".equals(rmode)) {
  2173. // String smd="DELETE FROM smd WHERE sn IN("+devbuf.substring(1)+")";
  2174. // logger.info(smd);
  2175. // RCPService.getBaseService().execSql(smd);
  2176. // }
  2177. //
  2178. // String sql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("+ account.getId()+","+account.getOrgid()+",1,'设备回仓,"+sucsnum+"条设备数据',0,"+DateTimeUtil.longtime()+",'')";
  2179. // baseDao.excuSql(sql);
  2180. return 0;
  2181. }
  2182. @Override
  2183. public Map<String, Object> getDevAll(Map<String, String> para)
  2184. {
  2185. Map<String,Object> pginfo=new HashMap<String,Object>();
  2186. String devid=para.get("devid").toString();
  2187. String sql="select * from smd where sn='"+devid+"'";
  2188. List<Map<String, Object>> result=RCPService.getBaseService().getMapList(sql);
  2189. if(result!=null && result.size()>0)
  2190. {
  2191. for(Map<String, Object> r:result)
  2192. {
  2193. String iccid=r.get("iccid").toString();
  2194. int flag=Integer.parseInt(r.get("flag").toString());
  2195. // String sq="select tdnet/1024 as tdnet,sysused/1024 as sysused from "+ProjectTools.getTableNameByIccid(iccid)+" where iccid='"+iccid+"'";
  2196. // List<Map<String,Object>> mst=DAOHelper.find("ufiiccid", sq);
  2197. // if(mst!=null && mst.size()>0)
  2198. // {
  2199. // Map<String,Object> m=mst.get(0);
  2200. // String tdnet=m.get("tdnet").toString();
  2201. // String sysused=m.get("sysused").toString();
  2202. // r.put("tdnet", tdnet);
  2203. // r.put("sysused", sysused);
  2204. // }
  2205. // else
  2206. // {
  2207. // r.put("tdnet", 0);
  2208. // r.put("sysused", 0);
  2209. // }
  2210. String itp="";
  2211. if(flag==3)
  2212. itp="select kasid,cardstate,realstate from iccidtemp where iccid='"+iccid+"'";
  2213. else
  2214. itp="select kasid,cardstate,realstate from iccidtemp where LEFT(iccid,19)='"+iccid.substring(0,19)+"'";
  2215. List<Map<String,Object>> itplist=DAOHelper.find("ufiiccid", itp);
  2216. if(itplist!=null && itplist.size()>0)
  2217. {
  2218. Map<String,Object> m=itplist.get(0);
  2219. String kasid=m.get("kasid").toString();
  2220. String cardstate="";
  2221. if(m.get("cardstate")==null)
  2222. ;
  2223. else
  2224. cardstate=m.get("cardstate").toString();
  2225. String realstate="";
  2226. if(m.get("realstate")==null)
  2227. ;
  2228. else
  2229. realstate=m.get("realstate").toString();
  2230. // String flowA="0";
  2231. // if(m.get("flowA")==null)
  2232. // flowA="0";
  2233. // else
  2234. // flowA=m.get("flowA").toString();
  2235. r.put("cardstate", cardstate);
  2236. r.put("realstate", realstate);
  2237. // r.put("flowA", flowA);
  2238. r.put("kasid", kasid);
  2239. String ks="select * from kas where id="+r.get("kasid").toString();
  2240. Map<String, Object> mks=RCPService.getBaseService().getMap(ks);
  2241. r.put("ksname", mks.get("kasname").toString());
  2242. }
  2243. else
  2244. {
  2245. r.put("cardstate", "");
  2246. r.put("realstate", "");
  2247. // r.put("flowA", "");
  2248. r.put("ksname", "");
  2249. }
  2250. }
  2251. }
  2252. else
  2253. {
  2254. result= new ArrayList<Map<String, Object>>();
  2255. }
  2256. pginfo.put("rows", result);
  2257. return pginfo;
  2258. }
  2259. @Override
  2260. public Map<String, Object> getDevUsuit(int orgid,Map<String, String> para) {
  2261. Map<String,Object> pginfo=new HashMap<String,Object>();
  2262. String devid=para.get("devid").toString();
  2263. String sql="SELECT u.devid,u.remain,u.effect,u.invalid,p.pkname FROM usersuit u,packageview p WHERE u.packid=p.pkid AND p.orgid="+orgid+" and u.devid='"+devid+"' and u.invalid>"+DateTimeUtil.longtime();
  2264. List<Map<String, Object>> result=RCPService.getBaseService().getMapList(sql);
  2265. if(result==null)
  2266. {
  2267. result= new ArrayList<Map<String, Object>>();
  2268. }
  2269. pginfo.put("rows", result);
  2270. return pginfo;
  2271. }
  2272. @Override
  2273. public Map<String, Object> getDevOrder(int orgid,Map<String, String> para)
  2274. {
  2275. Map<String,Object> pginfo=new HashMap<String,Object>();
  2276. String devid=para.get("devid").toString();
  2277. String sql = "SELECT aor.onum,aor.crttm,aor.oprice,aor.ptype,p.pkname FROM allorder aor,packageview p WHERE aor.ostat>0 and aor.otype = 0 and aor.devid='"+devid+"' and aor.packid=p.pkid and p.orgid="+orgid+" order by aor.crttm desc";
  2278. logger.info(sql);
  2279. List<Map<String, Object>> result=RCPService.getBaseService().getMapList(sql);
  2280. if(result==null)
  2281. {
  2282. result= new ArrayList<Map<String, Object>>();
  2283. }
  2284. pginfo.put("rows", result);
  2285. return pginfo;
  2286. }
  2287. @Override
  2288. public List<Map<String, Object>> getPackage(int orgid, Map<String, String> para)
  2289. {
  2290. int packType=0;
  2291. String devid=para.get("devid").toString();
  2292. String devgrpid=para.get("devgrpid").toString();
  2293. if(devid.startsWith("1511") || devid.startsWith("1501") || devid.startsWith("1301"))
  2294. packType=0;
  2295. else if(devid.startsWith("1304") )
  2296. packType=1;
  2297. else if(devid.startsWith("5001") || devid.startsWith("5002"))
  2298. packType=2;
  2299. else
  2300. {
  2301. String typesql="SELECT * FROM `devicegroup` WHERE id="+devgrpid;
  2302. Map<String,Object> result=RCPService.getBaseService().getMap(typesql);
  2303. if(result!=null && result.size()>0 && result.get("devtype")!=null)
  2304. {
  2305. packType=Integer.parseInt(result.get("devtype").toString());
  2306. }
  2307. }
  2308. String sql = "SELECT packageview.pkid AS id,packageview.pkname AS `text`,packageview.price,package.pktype FROM packageview,package WHERE packageview.pkid=package.id and packageview.orgid="+orgid+" and package.pktype="+packType+" order by packageview.reorder";
  2309. List<Map<String,Object>> pkgList = baseDao.getMapList(sql);
  2310. if(pkgList != null && pkgList.size()>0){
  2311. for(int i=0;i<pkgList.size();i++){
  2312. Map<String,Object> pkgMap = pkgList.get(i);
  2313. String text = String.valueOf(pkgMap.get("text"));
  2314. int pktype = Integer.parseInt(String.valueOf(pkgMap.get("pktype")));
  2315. String pkp="";
  2316. if(pktype==0)
  2317. pkp="4G MiFi";
  2318. if(pktype==1)
  2319. pkp="4G CPE";
  2320. if(pktype==2)
  2321. pkp="5G CPE";
  2322. if(pktype==3)
  2323. pkp="5G MiFi";
  2324. float price = Float.parseFloat(String.valueOf(pkgMap.get("price")))/1000;
  2325. String pStr = String.valueOf(price);
  2326. pStr = pStr.replaceAll("0+?$", ""); //去掉后面无用的零
  2327. pStr = pStr.replaceAll("[.]$", ""); //如小数点后面全是零则去掉小数点
  2328. pkgMap.put("text", text+"("+pStr+"元){"+pkp+"}");
  2329. }
  2330. }
  2331. return pkgList;
  2332. }
  2333. @Override
  2334. public List<Map<String, Object>> getSPackage(int orgid, Map<String, String> para)
  2335. {
  2336. String sql = "SELECT id AS id,name AS `text`,price FROM speedpack WHERE orgid="+orgid;
  2337. List<Map<String,Object>> pkgList = baseDao.getMapList(sql);
  2338. if(pkgList != null && pkgList.size()>0){
  2339. for(int i=0;i<pkgList.size();i++){
  2340. Map<String,Object> pkgMap = pkgList.get(i);
  2341. String text = String.valueOf(pkgMap.get("text"));
  2342. float price = Float.parseFloat(String.valueOf(pkgMap.get("price")))/1000;
  2343. String pStr = String.valueOf(price);
  2344. pStr = pStr.replaceAll("0+?$", ""); //去掉后面无用的零
  2345. pStr = pStr.replaceAll("[.]$", ""); //如小数点后面全是零则去掉小数点
  2346. pkgMap.put("text", text+"("+pStr+"元)");
  2347. }
  2348. }
  2349. return pkgList;
  2350. }
  2351. @Override
  2352. public Map<String, Object> devbatchupd(InputStream excelis, Account account,String dggrp,String rmode) throws Exception
  2353. {
  2354. int sucsnum = 0;//成功写入到数据库的条数
  2355. List<String> titleList = new ArrayList<String>();//文件中列名称集合
  2356. StringBuffer devbuf = new StringBuffer();
  2357. /*返回的结果map*/
  2358. Map<String,Object> resultMap = new HashMap<String, Object>();
  2359. //导入数据的列
  2360. Map<String,String> devcolumn = new HashMap<String,String>();
  2361. devcolumn.put("设备ID", "devid");
  2362. Workbook workbook = Workbook.getWorkbook(excelis);
  2363. Sheet sheet = workbook.getSheet(0);
  2364. int rows = sheet.getRows();
  2365. int cols = sheet.getColumns();
  2366. int countnum = rows - 1;//总数据条数
  2367. for (int i = 0; i < rows; i++) {//控制循环读取一行数据
  2368. if (0 == i) {//如果是第一行 第一行为标题行 非数据行
  2369. int suitColumNum = 0; //可以导入的excel列数
  2370. for (int z = 0; z < cols; z++) {//控制读取行的列数据
  2371. String titleName=sheet.getCell(z, i).getContents() == null ? "" : sheet.getCell(z, i).getContents();//获得标题
  2372. if (null != titleName) {
  2373. titleList.add(titleName);//将标题放入标题List
  2374. if(devcolumn.containsKey(titleName)){
  2375. suitColumNum ++;
  2376. }
  2377. }
  2378. }
  2379. if(suitColumNum != 1){
  2380. resultMap.put("code", 1);
  2381. resultMap.put("msg", "导入文件与模版的列不匹配!");
  2382. return resultMap;
  2383. }
  2384. }else{
  2385. for (int j = 0; j < cols; j++) {//控制读取行的列数据
  2386. String columnname = "";
  2387. if (null != titleList.get(j)) {//如果本次导入的列的标题不为空
  2388. columnname = devcolumn.get(titleList.get(j));
  2389. }
  2390. if(null != columnname){
  2391. //获得当前列值
  2392. String cellValue = sheet.getCell(j, i).getContents() == null ? "" : sheet.getCell(j, i).getContents().trim();
  2393. if ("".equals(cellValue)){
  2394. logger.info("DEVICE IMPORT:"+"rows>>>"+i+", column>>>"+j+", is null!");
  2395. break;
  2396. }else if(cellValue.indexOf("'")>0){
  2397. logger.info("DEVICE IMPORT:"+"rows>>>"+i+", column>>>"+j+", exit ' ,can not import!");
  2398. break;
  2399. }else{
  2400. devbuf.append(",'"+cellValue+"'");
  2401. sucsnum ++;
  2402. }
  2403. }
  2404. }
  2405. }
  2406. }
  2407. int orgid=account.getOrgid();
  2408. for(int i=0;i<32;i++)
  2409. {
  2410. String sqli="UPDATE device"+i+" SET mode="+rmode+",devgrpid="+dggrp+" WHERE devid IN("+devbuf.substring(1)+")";
  2411. logger.info(sqli);
  2412. RCPService.getMifiService().execSql(sqli);
  2413. }
  2414. String sql = "INSERT INTO oplog (accid,orgid,optype,content,appuid,crttm,devid) VALUES("
  2415. + account.getId()+","+account.getOrgid()+",3,'设备批量修改,"+ sucsnum+"条设备数据>>>运行模式:"+rmode+",设备组:"+dggrp+"',0,"+DateTimeUtil.longtime()+",'')";
  2416. baseDao.excuSql(sql);
  2417. resultMap.put("code", 0);
  2418. resultMap.put("countnum", countnum);
  2419. resultMap.put("sucsnum", sucsnum);
  2420. return resultMap;
  2421. }
  2422. }