sync_sim_card_from_excel_to_device.py 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. # -*- coding: utf-8 -*-
  2. #!/usr/bin/env python
  3. import sys,os
  4. import datetime
  5. PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
  6. sys.path.insert(0, PROJECT_ROOT)
  7. os.environ.update({"DJANGO_SETTINGS_MODULE": "configs.production"})
  8. import django
  9. django.setup()
  10. from script.base import init_env, get_logger
  11. from apps.web.device.models import SIMCard,Device
  12. import xlrd
  13. from xlrd import xldate_as_tuple
  14. # 从SIM卡平台上导出来的excel,导入到数据库中,便于流量结算。
  15. # 1、月末:根据用户的充值情况,把SIM卡数据全部导出来,发给卡商,进行充值。
  16. # 2、月头:卡商充值后,我们利用import_sim_card脚本,把excel导出来,然后导入到数据库,并执行另外一个脚本update_device_sim_info_from_simdb更新设备的超时时间
  17. supplier = sys.argv[1]
  18. excelFile = sys.argv[2]
  19. if supplier not in ['qiben','hezhou','jieyang','tianyu']:
  20. print u'卡供应商必须是qiben、hezhou jieyang tianyu'
  21. exit(0)
  22. book = xlrd.open_workbook(excelFile)
  23. try:
  24. if supplier == 'hezhou':
  25. sheet = book.sheet_by_name("Sheet1")
  26. elif supplier == 'qiben':
  27. sheet = book.sheet_by_name("Sheet1")
  28. elif supplier == 'jieyang':
  29. sheet = book.sheet_by_name("Sheet1")
  30. elif supplier == 'tianyu':
  31. sheet = book.sheet_by_name("Sheet1")
  32. except Exception,e:
  33. print 'open excel file error =%s' % e
  34. exit(0)
  35. nrows = sheet.nrows
  36. rows = []
  37. okCount = 0
  38. iccids = []
  39. simDict = {}
  40. for i in range(1, nrows):
  41. row = sheet.row_values(i)
  42. for ii in range(3):
  43. try:
  44. if supplier == 'qiben':
  45. if (not row[6]) or (not row[7]):
  46. SIMCard.get_collection().update_one({'iccid':row[1]},{'$set':{'iccid':row[1],'imsi':row[2],'supplier':supplier}},upsert=True)
  47. break
  48. activeTime = datetime.datetime.strptime(row[6] + ' 00:00:00',"%Y-%m-%d %H:%M:%S")
  49. expireTime = datetime.datetime.strptime(row[7] + ' 00:00:00',"%Y-%m-%d %H:%M:%S")
  50. SIMCard.get_collection().update_one({'iccid':row[1]},{'$set':{'iccid':row[1],'imsi':row[2],'supplier':supplier,'expireTime':expireTime}},upsert=True)
  51. elif supplier == 'hezhou':
  52. if (not row[9]) or (not row[10]):
  53. SIMCard.get_collection().update_one({'iccid':row[1]},{'$set':{'iccid':row[1],'imsi':row[2],'supplier':supplier}},upsert=True)
  54. break
  55. activeTime = datetime.datetime(*xldate_as_tuple(row[9], 0))
  56. expireTime = datetime.datetime(*xldate_as_tuple(row[10], 0))
  57. SIMCard.get_collection().update_one({'iccid':row[1]},{'$set':{'iccid':row[1],'imsi':row[2],'supplier':supplier,'activeTime':activeTime,'expireTime':expireTime}},upsert=True)
  58. elif supplier == 'jieyang':
  59. SIMCard.get_collection().update_one({'iccid':row[1]},{'$set':{'iccid':row[1],'imsi':row[2],'supplier':supplier,'activeTime':activeTime,'expireTime':expireTime}},upsert=True)
  60. elif supplier == 'tianyu':
  61. if (not row[11]) or (not row[12]):
  62. SIMCard.get_collection().update_one({'iccid':row[1]},{'$set':{'iccid':row[1],'imsi':row[2],'supplier':supplier}},upsert=True)
  63. break
  64. activeTime = datetime.datetime.strptime(row[11],"%Y-%m-%d %H:%M:%S")
  65. expireTime = datetime.datetime.strptime(row[12],"%Y-%m-%d %H:%M:%S")
  66. SIMCard.get_collection().update_one({'iccid':row[1]},{'$set':{'iccid':row[1],'imsi':row[2],'supplier':supplier,'expireTime':expireTime}},upsert=True)
  67. okCount += 1
  68. if okCount % 300 == 0:
  69. print okCount
  70. break
  71. except Exception,e:
  72. print 'some error when update iccid=%s,e=%s' % (row[1],e)
  73. print u'总共的数据为:%s条,成功导入:%s条' % (nrows-1,okCount)