diff --git a/requirements.txt b/requirements.txt index 0d352b4f..60d44ddc 100644 Binary files a/requirements.txt and b/requirements.txt differ diff --git a/safesite/tasks.py b/safesite/tasks.py index 438b275b..ff457972 100644 --- a/safesite/tasks.py +++ b/safesite/tasks.py @@ -24,6 +24,13 @@ def gettime(x=datetime.datetime.now()): first_day_of_next_month = first_day + datetime.timedelta(days = days_num) return first_day,first_day_of_next_month +@shared_task +def get_wtoken(): + r=requests.get('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx4d75244c1b980b5b&secret=edf7d23a457fb4df5ad47eeb9d4b7a39').text + token=json.loads(r)['access_token'] + with open('D:/safesite/safesite/token.txt','w') as f: + f.write(token) + @shared_task def send_wechatmsgs(postdict,tolist): with open(dirname + 'token.txt','r',encoding= 'utf-8') as f: @@ -47,8 +54,7 @@ def send_wechatmsg(postdict): pass @shared_task -def yjjs(companyid): - first_day,first_day_of_next_month = gettime() +def yjjs(companyid, first_day=gettime()[0], first_day_of_next_month=gettime()[1]): #隐患算分 a = Trouble.objects.filter(fxsj__range=(first_day, first_day_of_next_month),usecomp__partid=companyid,deletemark=1) #隐患按时上报率 @@ -90,8 +96,7 @@ def yjjs(companyid): obj.save() @shared_task -def yjjs_px(companyid): - first_day,first_day_of_next_month = gettime() +def yjjs_px(companyid, first_day=gettime()[0], first_day_of_next_month=gettime()[1]): #培训算分 a = Train.objects.filter(starttime__range=(first_day, first_day_of_next_month),usecomp__partid=companyid,state=1,deletemark=1) #有效培训 #计算培训效果 @@ -121,8 +126,7 @@ def yjjs_px(companyid): obj.save() @shared_task -def yjjs_gc(companyid): - first_day,first_day_of_next_month = gettime() +def yjjs_gc(companyid, first_day=gettime()[0], first_day_of_next_month=gettime()[1]): #观察算分 a = Observe.objects.filter(looktime__range=(first_day, first_day_of_next_month),usecomp__partid=companyid,deletemark=1) num = a.count() @@ -138,9 +142,8 @@ def yjjs_gc(companyid): obj.save() @shared_task -def yjjs_ws(companyid): +def yjjs_ws(companyid, first_day=gettime()[0], first_day_of_next_month=gettime()[1]): #未遂算分 - first_day,first_day_of_next_month = gettime() a = Miss.objects.filter(misstime__range=(first_day, first_day_of_next_month),usecomp__partid=companyid,deletemark=1) # score = (a.count())*0.6 year = first_day.year @@ -151,8 +154,7 @@ def yjjs_ws(companyid): obj.save() @shared_task -def yjjs_yl(companyid): - first_day,first_day_of_next_month = gettime() +def yjjs_yl(companyid, first_day=gettime()[0], first_day_of_next_month=gettime()[1]): a = Drill.objects.filter(starttime__range=(first_day, first_day_of_next_month),usecomp__partid=companyid,state=1,deletemark=1) #有效演练 #计算演练效果 participantnum = Drill.objects.filter(drillid__in=a).count() @@ -180,6 +182,23 @@ def yjjs_yl(companyid): obj.yjz = round(obj.troublevalue + obj.trainvalue + obj.drillvalue,2) obj.save() +@shared_task +def correct_yjz(year:int, month:int, companyid: int = 0): + # 重新更新某个月的预警值 + days_num = calendar.monthrange(year, month)[1] + first_day = datetime.date(year, month, 1) + first_day_of_next_month = first_day + datetime.timedelta(days = days_num) + if companyid == 0: + companys = Partment.objects.filter(iscompany=1) + else: + companys = Partment.objects.filter(partid=companyid) + for i in companys: + yjjs(i.id, first_day, first_day_of_next_month) + yjjs_px(i.id, first_day, first_day_of_next_month) + yjjs_gc(i.id, first_day, first_day_of_next_month) + yjjs_ws(i.id, first_day, first_day_of_next_month) + yjjs_yl(i.id, first_day, first_day_of_next_month) + @shared_task def ycjs(): #print('正在执行预测计算。。。') @@ -188,7 +207,7 @@ def ycjs(): nowmonth = datetime.datetime.now().month objs = Yjyc.objects.exclude(yjz=0,year=nowyear,month=nowmonth) for x in companys: - obj = objs.filter(usecomp=x).order_by('-yjycid') + obj = objs.filter(usecomp=x).order_by('-yjycid')[-6:] # 只取半年内的 objv = obj.values('yjycid','yjz') #print(objv) if len(obj)>1: @@ -215,6 +234,7 @@ def ycjs(): objnew.b = ("%.2f" % b) objnew.save() #print('执行完毕!') + @shared_task def risktask(): nowtime = datetime.datetime.now()