zxshdb.cpp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559
  1. #include "zxshdb.h"
  2. #include "sncdatabase.h"
  3. #include <QtSql>
  4. ZxshDB::ZxshDB()
  5. {
  6. }
  7. int ZxshDB::addShkjZxshTask(QString ssid, QString userCode, QString province, QString city,\
  8. QString inserttime,QString finishtime, int updatedays, QString isp,\
  9. QString slttype, QString packnolist,QString seglist, int neednum, int rpnum)
  10. {
  11. QSqlQuery query;
  12. QSqlDatabase::database().transaction();
  13. query.prepare("insert into user.SHKJ_ZXSH_TASK(ssid,USERCODE,province,\
  14. city,inserttime,finishtime,updatedays,isp,slttype,packnolist,seg,neednum,rpnum,dealstatus,isdel)\
  15. values(?,?,?,?,?,?,?,?,?,?,?,?,?,'0','N')");
  16. QVariantList vars;
  17. vars<<ssid<<userCode<<province<<city<<inserttime<<finishtime;
  18. vars<<updatedays<<isp<<slttype<<packnolist<<seglist<<neednum<<rpnum;
  19. for(int i=0;i<vars.size();i++)
  20. {
  21. query.addBindValue(vars.at(i));
  22. }
  23. query.exec();
  24. query.clear();
  25. QStringList list = packnolist.split(",");
  26. QVariantList v1,v2,v3,v4,v5;
  27. QString time = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
  28. for(int i=0;i<list.size();i++)
  29. {
  30. if(list.at(i)!="end")
  31. {
  32. v1<<province;
  33. v2<<city;
  34. v3<<userCode;
  35. v4<<list.at(i);
  36. v5<<time;
  37. query.prepare("delete from user.SHKJ_ZXSH_TASK_packno where usercode=? and packno=?");
  38. query.addBindValue(userCode);
  39. query.addBindValue(list.at(i));
  40. query.exec();
  41. }
  42. }
  43. query.clear();
  44. query.prepare("insert into user.SHKJ_ZXSH_TASK_packno(province,city,usercode,packno,inserttime) values(?,?,?,?,?)");
  45. query.addBindValue(v1);
  46. query.addBindValue(v2);
  47. query.addBindValue(v3);
  48. query.addBindValue(v4);
  49. query.addBindValue(v5);
  50. query.execBatch();
  51. QSqlDatabase::database().commit();
  52. return 0;
  53. }
  54. int ZxshDB::updateZxshDealStatus(QString id, QString state)
  55. {
  56. QSqlDatabase::database().transaction();
  57. QSqlQuery query;
  58. query.prepare("update user.SHKJ_ZXSH_TASK set dealstatus=? where ssid=? ");
  59. QVariantList vars;
  60. vars<<state<<id;
  61. for(int i=0;i<vars.size();i++)
  62. {
  63. query.addBindValue(vars.at(i));
  64. }
  65. query.exec();
  66. QSqlDatabase::database().commit();
  67. return 0;
  68. }
  69. QMultiMap<QString, QString> ZxshDB::getShkjZxshTasksByUser(QString userCode, QString isdown="0")
  70. {
  71. QString where = "";
  72. if(isdown=="0") //全部
  73. ;
  74. else if(isdown=="1") //已下载
  75. {
  76. where += " and dealstatus = 3 ";
  77. }
  78. else if(isdown=="2") //未下载
  79. {
  80. where += " and dealstatus <= 2 ";
  81. }
  82. else
  83. ;
  84. QMultiMap<QString ,QString> values;
  85. QSqlQuery query;
  86. query.prepare("SELECT TASKID,SSID,PROVINCE,CITY,INSERTTIME,FINISHTIME,UPDATEDAYS,ISP ,\
  87. SLTTYPE,PACKNOLIST,SEG,NEEDNUM ,RPNUM,USERCODE,DEALSTATUS,ISDEL \
  88. from user.SHKJ_ZXSH_TASK where usercode=? and (isdel='N' or isdel is null or isdel='')" + where);
  89. query.addBindValue(userCode);
  90. query.exec();
  91. while(query.next())
  92. {
  93. int i=0;
  94. values.insert("taskid",query.value(i++).toString());
  95. values.insert("ssid",query.value(i++).toString());
  96. values.insert("province",query.value(i++).toString());
  97. values.insert("city",query.value(i++).toString());
  98. values.insert("inserttime",query.value(i++).toString());
  99. values.insert("finishtime",query.value(i++).toString());
  100. values.insert("updatedays",query.value(i++).toString());
  101. values.insert("isp",query.value(i++).toString());
  102. values.insert("slttype",query.value(i++).toString());
  103. values.insert("packnolist",query.value(i++).toString());
  104. values.insert("seglist",query.value(i++).toString());
  105. values.insert("neednum",query.value(i++).toString());
  106. values.insert("rpnum",query.value(i++).toString());
  107. values.insert("usercode",query.value(i++).toString());
  108. values.insert("dealstatus",query.value(i++).toString());
  109. values.insert("isdel",query.value(i++).toString());
  110. }
  111. return values;
  112. }
  113. int ZxshDB::updateShkjZxshTaskInfos(QMultiMap<QString, QString> maps, QString userCode)
  114. {
  115. QSqlQuery query;
  116. QSqlDatabase::database().transaction();
  117. int cols = maps.uniqueKeys().size();
  118. int rows = 0;
  119. if(cols!=0)
  120. {
  121. rows = maps.size()/cols;
  122. }
  123. for(int i=0;i<rows;i++)
  124. {
  125. QString ssid = maps.values("ssid").at(i);
  126. QString dealstatus = maps.values("dealstatus").at(i);
  127. QString province = maps.values("province").at(i);
  128. QString city = maps.values("city").at(i);
  129. QString updatedays = maps.values("updatedays").at(i);
  130. QString isp = maps.values("isp").at(i);
  131. QString neednum = maps.values("neednum").at(i);
  132. QString rpnum = maps.values("rpnum").at(i);
  133. QString inserttime = maps.values("inserttime").at(i);
  134. QString finishtime = maps.values("finishtime").at(i);
  135. query.clear();
  136. query.prepare("select ssid from user.SHKJ_ZXSH_TASK where usercode = ? and ssid = ?");
  137. query.addBindValue(userCode);
  138. query.addBindValue(ssid);
  139. query.exec();
  140. if(!query.next())
  141. {
  142. query.clear();
  143. query.prepare("insert into user.SHKJ_ZXSH_TASK( \
  144. ssid,dealstatus,province,city,updatedays,isp ,\
  145. neednum,rpnum ,inserttime,finishtime,USERCODE,isdel) \
  146. VALUES(?,?,?,?,?,?,?,?,?,?,?,'N')");
  147. QVariantList vars;
  148. vars<<ssid<<dealstatus<<province<<city<<updatedays<<isp<<neednum;
  149. vars<<rpnum<<inserttime<<finishtime<<userCode;
  150. for(int i=0;i<vars.size();i++)
  151. {
  152. query.addBindValue(vars.at(i));
  153. }
  154. query.exec();
  155. }
  156. else
  157. {
  158. query.clear();
  159. query.prepare("update user.SHKJ_ZXSH_TASK \
  160. set dealstatus=?,rpnum = ? ,inserttime=?,finishtime=?\
  161. where USERCODE = ? and ssid = ?") ;
  162. query.addBindValue(dealstatus);
  163. query.addBindValue(rpnum);
  164. query.addBindValue(inserttime);
  165. query.addBindValue(finishtime);
  166. query.addBindValue(userCode);
  167. query.addBindValue(ssid);
  168. query.exec();
  169. }
  170. }
  171. QSqlDatabase::database().commit();
  172. return 0;
  173. }
  174. int ZxshDB::updateShkjZxshSltPacknos(QMultiMap<QString, QString> maps, QString userCode)
  175. {
  176. QSqlQuery query;
  177. QSqlDatabase::database().transaction();
  178. int cols = maps.uniqueKeys().size();
  179. int rows = 0;
  180. if(cols!=0)
  181. {
  182. rows = maps.size()/cols;
  183. }
  184. QVariantList v1,v2,v3,v4,v5;
  185. for(int i=0;i<rows;i++)
  186. {
  187. v1<<maps.values("province").at(i);
  188. v2<<maps.values("city").at(i);
  189. v3<<userCode;
  190. v4<<maps.values("packno").at(i);
  191. v5<<maps.values("inserttime").at(i);
  192. query.prepare("delete from user.SHKJ_ZXSH_TASK_packno where usercode=? and packno=?");
  193. query.addBindValue(userCode);
  194. query.addBindValue(maps.values("packno").at(i));
  195. query.exec();
  196. }
  197. query.clear();
  198. query.prepare("insert into user.SHKJ_ZXSH_TASK_packno(province,city,usercode,packno,inserttime)\
  199. values(?,?,?,?,?)");
  200. query.addBindValue(v1);
  201. query.addBindValue(v2);
  202. query.addBindValue(v3);
  203. query.addBindValue(v4);
  204. query.addBindValue(v5);
  205. query.execBatch();
  206. QSqlDatabase::database().commit();
  207. return 0;
  208. }
  209. int ZxshDB::delShkjZxshTaskByID(QString ssid)
  210. {
  211. QSqlQuery query;
  212. QSqlDatabase::database().transaction();
  213. query.prepare("update user.SHKJ_ZXSH_TASK set isdel='Y' where ssid = ?") ;
  214. query.addBindValue(ssid);
  215. query.exec();
  216. QSqlDatabase::database().commit();
  217. }
  218. void ZxshDB::updateSegRealPnum(QString upday, QString areacode, QString filename)
  219. {
  220. QSqlQuery query;
  221. QFile file2(filename);
  222. file2.open(QIODevice::ReadOnly);
  223. QTextStream in2(&file2);
  224. QSqlDatabase::database().transaction();
  225. QVariantList seg2,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10;
  226. while(!in2.atEnd())
  227. {
  228. QString line=in2.readLine();
  229. QStringList fields = line.split(",");
  230. int i=0;
  231. seg2 << fields.at(i++);
  232. s1 << fields.at(i++);
  233. s2 << fields.at(i++);
  234. s3 << fields.at(i++);
  235. s4 << fields.at(i++);
  236. s5 << fields.at(i++);
  237. s6 << fields.at(i++);
  238. s7 << fields.at(i++);
  239. s8 << fields.at(i++);
  240. s9 << fields.at(i++);
  241. s10 << fields.at(i++);
  242. }
  243. file2.close();
  244. QFile::remove(filename);
  245. query.exec("drop table SEG_RealNum_tmp");
  246. query.exec("CREATE TABLE SEG_RealNum_tmp (seg char(7),\
  247. S1 numberic,\
  248. S2 numberic,\
  249. S3 numberic,\
  250. S4 numberic,\
  251. S5 numberic,\
  252. S6 numberic,\
  253. S7 numberic,\
  254. S8 numberic,\
  255. S9 numberic,\
  256. S10 numberic)");
  257. query.finish();
  258. query.prepare("insert into SEG_RealNum_tmp(seg,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10) values(?,?,?,?,?,?,?,?,?,?,?)");
  259. query.addBindValue(seg2);
  260. query.addBindValue(s1);
  261. query.addBindValue(s2);
  262. query.addBindValue(s3);
  263. query.addBindValue(s4);
  264. query.addBindValue(s5);
  265. query.addBindValue(s6);
  266. query.addBindValue(s7);
  267. query.addBindValue(s8);
  268. query.addBindValue(s9);
  269. query.addBindValue(s10);
  270. query.execBatch();
  271. QSqlDatabase::database().commit();
  272. }
  273. void ZxshDB::updatePackRealPnum(QString upday, QString areacode, QString filename)
  274. {
  275. QSqlQuery query;
  276. QFile file2(filename);
  277. file2.open(QIODevice::ReadOnly);
  278. QTextStream in2(&file2);
  279. QSqlDatabase::database().transaction();
  280. QVariantList s1,s2,s3,s4,s5;
  281. while(!in2.atEnd())
  282. {
  283. QString line=in2.readLine();
  284. QStringList fields = line.split(",");
  285. int i=0;
  286. s1 << fields.at(i++);
  287. s2 << fields.at(i++);
  288. s3 << fields.at(i++);
  289. s4 << fields.at(i++);
  290. QString dlcount = fields.at(i++);
  291. if(dlcount=="9+")//注:下载次数>=9时,接口方法中会返回 9+
  292. dlcount = 10;
  293. s5 << dlcount;
  294. }
  295. file2.close();
  296. QFile::remove(filename);
  297. query.exec("drop table Pack_RealNum_tmp");
  298. query.exec("CREATE TABLE Pack_RealNum_tmp (packid varchar(50),\
  299. packnum numberic,\
  300. isp char(1),\
  301. updatedays numberic,dlcount numberic)");
  302. query.finish();
  303. query.prepare("insert into Pack_RealNum_tmp(packid,packnum,isp,updatedays,dlcount) values(?,?,?,?,?)");
  304. query.addBindValue(s1);
  305. query.addBindValue(s2);
  306. query.addBindValue(s3);
  307. query.addBindValue(s4);
  308. query.addBindValue(s5);
  309. query.execBatch();
  310. QSqlDatabase::database().commit();
  311. }
  312. QStringList ZxshDB::getShkjZxshSegRealPnum(int updatedays, QString corp, QString city)
  313. {
  314. QString cmcc,cutc,ctcc,isp;
  315. cmcc = SNCDataBase::getCMCC();
  316. cutc = SNCDataBase::getCUTC();
  317. ctcc = SNCDataBase::getCTCC();
  318. if(corp=="1")
  319. isp = cmcc;
  320. else if(corp=="2")
  321. isp = cutc;
  322. else if(corp=="3")
  323. isp = ctcc;
  324. else
  325. isp = cmcc+","+cutc+","+ctcc;
  326. QSqlQuery query;
  327. QString sql = "select a.seg,b.s1,b.s2,b.s3,b.s4,b.s5,b.s6,b.s7,b.s8,b.s9,b.s10 \
  328. from num.mseg a LEFT JOIN SEG_RealNum_tmp b \
  329. on a.seg = b.seg where a.city = ? and substr(b.seg,1,3) in ("+isp+")";
  330. if(updatedays==1)
  331. sql += " and b.s1>0";
  332. else if(updatedays==2)
  333. sql += " and b.s2>0";
  334. else if(updatedays==3)
  335. sql += " and b.s3>0";
  336. else if(updatedays==4)
  337. sql += " and b.s4>0";
  338. else if(updatedays==5)
  339. sql += " and b.s5>0";
  340. else if(updatedays==6)
  341. sql += " and b.s6>0";
  342. else if(updatedays==7)
  343. sql += " and b.s7>0";
  344. else if(updatedays==30)
  345. sql += " and b.s8>0";
  346. else if(updatedays==90)
  347. sql += " and b.s9>0";
  348. else if(updatedays==180)
  349. sql += " and b.s10>0";
  350. query.prepare(sql);
  351. query.addBindValue(city);
  352. query.exec();
  353. QStringList list;
  354. QSqlRecord rec = query.record();
  355. int col = rec.count();
  356. while(query.next())
  357. {
  358. QString info="";
  359. for(int i=0;i<col;i++)
  360. {
  361. QString data;
  362. if(!query.value(i).isNull())
  363. {
  364. data = query.value(i).toString();
  365. }
  366. if(i==col-1)
  367. {
  368. info += data;
  369. }
  370. else
  371. {
  372. info += data + ",";
  373. }
  374. }
  375. list<<info;
  376. }
  377. return list;
  378. }
  379. QStringList ZxshDB::getShkjZxshPackRealPnum(int updatedays, QString corp, QString city,QString usercode,QString isdown)
  380. {
  381. QString where;
  382. if(updatedays==7)
  383. where =" where updatedays<=7 ";
  384. else if(updatedays==30)
  385. where =" where updatedays<=30 and updatedays>7 ";
  386. else if(updatedays==90)
  387. where =" where updatedays<=90 and updatedays>30 ";
  388. else if(updatedays==180)
  389. where =" where updatedays>90 ";
  390. else
  391. where =" where updatedays<=7 and updatedays>=1";
  392. if(corp=="1")
  393. where +=" and isp = '1'";
  394. else if(corp=="2")
  395. where +=" and isp = '2'";
  396. else if(corp=="3")
  397. where +=" and isp = '3'";
  398. else if(corp=="6")
  399. where +=" and isp = '6'";
  400. else
  401. where +=" ";
  402. if(!city.isEmpty())
  403. where + " and city='"+city+"' ";
  404. //判断用户是否下载的标准,改为不再区分用户,只要在本机上下载过,就认为是下载过
  405. //modify by xxw on 2016-5-23
  406. if(isdown=="0")
  407. ;
  408. else if(isdown=="1")//已下载
  409. {
  410. if(usercode.isEmpty())
  411. where += " and b.usercode='never exists' ";
  412. else
  413. where += " and b.usercode is not null ";
  414. }
  415. else if(isdown=="2")//未下载
  416. {
  417. if(usercode.isEmpty())
  418. ;
  419. else
  420. where += " and ( b.usercode='' or b.usercode is null) ";
  421. }
  422. else
  423. ;
  424. qDebug()<<where;//2017-7-2 by xxw
  425. // if(isdown=="0")
  426. // ;
  427. // else if(isdown=="1")
  428. // where += " and b.usercode =? ";
  429. // else if(isdown=="2")
  430. // where += " and (b.usercode != ? or b.usercode='' or b.usercode is null) ";
  431. // else
  432. // ;
  433. QSqlQuery query;
  434. QString sql = "select a.packid,a.packnum,a.isp,a.updatedays,a.dlcount,b.packno \
  435. from pack_realnum_tmp a left join USER.SHKJ_ZXSH_TASK_PACKNO b on a.packid=b.packno "\
  436. + where + " order by a.updatedays asc ,random()";
  437. // if(isdown=="1"||isdown=="2")
  438. // {
  439. // query.prepare(sql);
  440. // query.addBindValue(usercode);
  441. // query.exec();
  442. // }
  443. // else
  444. // {
  445. // query.exec(sql);
  446. // }
  447. query.exec(sql);
  448. QStringList list;
  449. QSqlRecord rec = query.record();
  450. int col = rec.count();
  451. while(query.next())
  452. {
  453. QString info="";
  454. for(int i=0;i<col;i++)
  455. {
  456. QString data;
  457. if(!query.value(i).isNull())
  458. {
  459. data = query.value(i).toString();
  460. }
  461. if(i==col-1)
  462. {
  463. info += data;
  464. }
  465. else
  466. {
  467. info += data + ",";
  468. }
  469. }
  470. list<<info;
  471. }
  472. return list;
  473. }
  474. bool ZxshDB::validatePacknoSelected(QString packno, QString usercode)
  475. {
  476. if (usercode.isEmpty())
  477. return false;
  478. QSqlQuery query;
  479. //判断用户是否下载的标准,改为不再区分用户,只要在本机上下载过,就认为是下载过
  480. //modify by xxw on 2016-5-23
  481. query.prepare("SELECT TASKID from USER.SHKJ_ZXSH_TASK_PACKNO where packno = ?");
  482. //query.prepare("SELECT TASKID from USER.SHKJ_ZXSH_TASK_PACKNO where usercode=? and packno = ?");
  483. //query.addBindValue(usercode);
  484. query.addBindValue(packno);
  485. query.exec();
  486. if(query.next())
  487. {
  488. return true;
  489. }
  490. else
  491. {
  492. return false;
  493. }
  494. }
  495. bool ZxshDB::validateExistUserPackno(QString usercode)
  496. {
  497. QSqlQuery query;
  498. query.prepare("SELECT TASKID from USER.SHKJ_ZXSH_TASK_PACKNO where usercode=?");
  499. query.addBindValue(usercode);
  500. query.exec();
  501. if(query.next())
  502. {
  503. return true;
  504. }
  505. else
  506. {
  507. return false;
  508. }
  509. }
  510. bool ZxshDB::deletePackRealPnum()
  511. {
  512. QSqlQuery query;
  513. QSqlDatabase::database().transaction();
  514. query.exec("delete from Pack_RealNum_tmp");
  515. QSqlDatabase::database().commit();
  516. }