gen_monitjob.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #coding:utf-8
  2. import re,time
  3. import datetime
  4. import sys,os
  5. import django
  6. reload(sys)
  7. sys.setdefaultencoding('utf8')
  8. sys.path.append('/mnt/bzyifeng/src')
  9. os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
  10. django.setup()
  11. import common.models as cm
  12. def calc_cutoff_time(cycle):
  13. """计算任务截止时间
  14. """
  15. data = []
  16. today = datetime.datetime.now().date()
  17. today = datetime.datetime.strptime(datetime.datetime.strftime(today,"%Y-%m-%d %H:%M:%S"),"%Y-%m-%d %H:%M:%S")
  18. times = re.search(r"(\d+).*",cycle.split("/")[0]).groups()[0]
  19. day = re.search(r"(\d+)(.*)",cycle.split("/")[1]).groups()[0]
  20. day_type = re.search(r"(\d+)(.*)",cycle.split("/")[1]).groups()[1]
  21. if day_type == u"日":
  22. day = int(day)
  23. if day_type == u"周":
  24. day = int(day)*7
  25. if day_type == u"月":
  26. day = int(day)*30
  27. tomorrow = today + datetime.timedelta(days=day)
  28. if times and int(times)>0:
  29. step = 24*day/int(times)
  30. for i in range(0,int(times)):
  31. cutoff_time = today + datetime.timedelta(seconds=60*60*(i+1)*step)
  32. if cutoff_time >= tomorrow:
  33. cutoff_time = cutoff_time + datetime.timedelta(seconds=-1)
  34. data.append(cutoff_time)
  35. return data
  36. def gen_monittasks():
  37. """
  38. """
  39. mtset = cm.MonitTask.objects.all()
  40. for mt in mtset:
  41. name = mt.name
  42. riskpoint_id = mt.riskpoint_id
  43. department_id = mt.department_id
  44. enterprise_id = mt.enterprise_id
  45. risk_level = mt.risk_level
  46. riskpoint_item = mt.riskpoint_item
  47. riskpoint_item0 = mt.riskpoint_item0
  48. task_id = mt.id
  49. cycle = mt.cycle
  50. cutoff_times = calc_cutoff_time(cycle)
  51. for cutoff_time in cutoff_times:
  52. print "开始生产巡检任务:{}({})".format(name,cutoff_time)
  53. obj,flag = cm.MonitJob.objects.get_or_create(
  54. **{"task_id":task_id,"name":name,"cutoff_time":cutoff_time,
  55. "department_id":department_id,"enterprise_id":enterprise_id,
  56. "risk_level":risk_level,"riskpoint_item":riskpoint_item,"riskpoint_item0":riskpoint_item0})
  57. if __name__ == "__main__":
  58. gen_monittasks()