def error_handler(e): """全局捕获异常""" db_session.rollback() re_path = request.path re_func = request.url_rule.endpoint.split('.')[1] re_method = request.method # root_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) # file_path = os.path.join(root_path, 'logs\\logs.txt') ip = socket.gethostbyname(socket.gethostname()) now_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') result = f"{now_time} -- {ip} -- {re_path} -- {re_func} -- {re_method} -- {e}" print(result) db_session.add( RunError(Time=now_time, IP=ip, Path=re_path, Func=re_func, Method=re_method, Error=e)) db_session.commit() db_session.close() my_log(e) return json.dumps({ 'code': '2000', 'msg': result }, cls=MyEncoder, ensure_ascii=False)
def get_index_equipment(): try: query_type_data = db_session.query( Equipment.EquipmentType).filter_by().all() query_floor_data = db_session.query( Equipment.Floor).filter_by().order_by(Equipment.Floor.asc()).all() equipment_type = list(set(i[0] for i in query_type_data)) equipment_floor = list(set(i[0] for i in query_floor_data)) data = [] for item_floor in equipment_floor: result = {"楼层": item_floor} for item_type in equipment_type: query_result = db_session.query(Equipment).filter_by( Floor=item_floor, EquipmentType=item_type).all() result[item_type] = len(query_result) data.append(result) db_session.close() return json.dumps({ 'code': '200', 'mes': '查询成功', 'data': data }, ensure_ascii=False) except InvalidRequestError as e: print('/IndexEquipment', '1') db_session.rollback() print('/IndexEquipment', '2') re_path = request.path re_func = request.url_rule.endpoint.split('.')[1] re_method = request.method # root_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) # file_path = os.path.join(root_path, 'logs\\logs.txt') ip = socket.gethostbyname(socket.gethostname()) now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') db_session.add( RunError(Time=now_time, IP=ip, Path=re_path, Func=re_func, Method=re_method, Error=str(e))) db_session.commit() my_log(str(e)) return json.dumps({'code': '200', 'mes': '事务回滚'}, ensure_ascii=False) except Exception as e: print(str(e)) return json.dumps({ 'code': '200', 'mes': '查询失败', 'error': str(e) }, ensure_ascii=False)
def keep_plans(): """保养计划""" try: json_data = request.get_json() # equipments = ['XXF-2', 'XXF-1', 'PYF-1'] equipments = json_data.get('EquipmentCode') if len(equipments) == 1: equipment_code = equipments[0] else: equipment_code = ' '.join(equipments) work_time = add_date(json_data.get('WeekTime'), json_data.get('StartTime')) work_type = json_data.get('Type') week_time = '单次' if work_type == '单次' else json_data.get('WeekTime') data = KeepPlan(EquipmentCode=equipment_code, No=get_no(json_data.get('ApplyTime')), Worker=current_user.Name, ApplyTime=json_data.get('ApplyTime'), Type=json_data.get('Type'), StartTime=json_data.get('StartTime'), Describe=json_data.get('Describe'), WorkTime=work_time, WeekTime=week_time) db_session.add(data) db_session.commit() db_session.close() return json.dumps({ 'code': '10001', 'message': '操作成功' }, cls=AlchemyEncoder, ensure_ascii=False) except Exception as e: logger.error(e) insertSyslog("error", "保养计划表添加错误:" + str(e), current_user.Name) return json.dumps({ 'code': '20002', 'message': str(e) }, cls=AlchemyEncoder, ensure_ascii=False)
def my_log(e): """ 程序日志记录 :param e:捕获异常参数` """ root_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) file_path = os.path.join(root_path, 'run_log\\logs.txt') call_func = sys._getframe().f_back.f_code.co_name # user = login_user if login_user is None else 'no login' with open(file_path, 'a', encoding='utf-8') as f: print(f'{datetime.datetime.now()} -- {call_func} --- {e}' + "\n\n") f.write(f'{datetime.datetime.now()} -- {call_func} --- {e}' + "\n\n") f.close() db_session.add( RunError( Time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), Func=call_func, Error=e)) db_session.commit() db_session.close() return '日志写入成功'
def read_Excel(file_dir): # 打开文件 workbook = xlrd.open_workbook(file_dir) if workbook: # 获取所有sheet # print(workbook.sheet_names())# [u'sheet1', u'sheet2'] # sheet1_name = workbook.sheet_names()[0] # 根据sheet索引或者名称获取sheet内容 # sheet1 = workbook.sheet_by_index(0) sheet1 = workbook.sheet_by_name('2020年月度能耗记录') # sheet的名称,行数,列数 print(sheet1.name, sheet1.nrows, sheet1.ncols) list1 = [ '2020-01-31 23:00:00', '2020-02-29 23:00:00', '2020-03-31 23:00:00', '2020-04-30 23:00:00', '2020-05-31 23:00:00', '2020-06-30 23:00:00', '2020-07-31 23:00:00', '2020-08-31 23:00:00', '2020-09-30 23:00:00', '2020-10-31 23:00:00' ] if sheet1: if sheet1.nrows <= 0: return for row in range(1, sheet1.nrows): row_value = sheet1.row_values(row) if row_value[0] is None or row_value[0] == '': continue i = 1 for item in list1: db_session.add( IncrementElectricTable(Address=row_value[0], IncremenValue='%.2f' % row_value[i], CollectionDate=item, IncremenType='电表')) db_session.commit() i += 1
def keep_tasks(): """保养任务表""" try: query_data = db_session.query(KeepPlan).filter_by(Status='待保养').all() if request.method == 'GET': # 每页多少条 limit = int(request.values.get('limit', '5')) # 当前页 offset = int(request.values.get('offset', '1')) for item in query_data: q = db_session.query(KeepTask).filter_by(No=item.No).first() if not q and get_time_stamp(item.WorkTime): data = KeepTask(EquipmentCode=item.EquipmentCode, No=item.No, Worker=item.Worker, Status=item.Status, ApplyTime=item.ApplyTime, StartTime=item.StartTime, WorkTime=item.WorkTime, WeekTime=item.WeekTime, Type=item.Type) db_session.add(data) db_session.commit() # if item.Type == '单次': # pass # db_session.delete(item) # db_session.commit() data = db_session.query(KeepTask).order_by( KeepTask.ApplyTime.desc()).limit(limit).offset( (offset - 1) * limit) total = db_session.query(KeepTask).count() return json.dumps( { 'code': '10001', 'message': '操作成功', 'data': { 'rows': data.all(), 'total': total } }, cls=AlchemyEncoder, ensure_ascii=False) if request.method == 'POST': json_data = request.values no = json_data.get('No') end_time = json_data.get('EndTime') content = json_data.get('Content') item = db_session.query(KeepTask).filter_by(No=no).first() data = KeepRecord(EquipmentCode=item.EquipmentCode, No=no, Worker=item.Worker, Status='已完成', Type=item.Type, KeepWorker=current_user.Name, ApplyTime=item.ApplyTime, StartTime=item.StartTime, Describe=item.Describe, Content=content, WeekTime=item.WeekTime, EndTime=end_time) db_session.delete(item) db_session.commit() keep_plan = db_session.query(KeepPlan).filter_by(No=no).first() if keep_plan and keep_plan.Type == '周期': keep_plan.WorkTime = add_date(keep_plan.WeekTime, keep_plan.WorkTime) db_session.add_all([data, keep_plan]) db_session.commit() db_session.close() return json.dumps({ 'code': '10001', 'message': '操作成功' }, cls=AlchemyEncoder, ensure_ascii=False) else: db_session.delete(keep_plan) db_session.add(data) db_session.commit() db_session.close() return json.dumps({ 'code': '10001', 'message': '操作成功' }, cls=AlchemyEncoder, ensure_ascii=False) except Exception as e: logger.error(e) insertSyslog("error", "保养任务表修改错误:" + str(e), current_user.Name) return json.dumps({ 'code': '20002', 'message': str(e) }, cls=AlchemyEncoder, ensure_ascii=False)
def energys(): try: energy_type = request.values.get('energy_type') start_time = '"' + request.values.get('start_time') + '"' end_time = '"' + request.values.get('end_time') + '"' # start_time = '"' + '2020-01-31 23:00:00' + '"' # end_time = '"' + '22020-10-31 23:00:00' + '"' data = [] if energy_type == '电': sql = f'select AreaName,Address, sum(IncremenValue) as value from IncrementElectricTable where CollectionDate between {start_time} and {end_time} group by Address' results = db_session.execute(sql).fetchall() db_session.close() # print(results) for result in results: value = '%.2f' % result[2] if result[2] is not None else '0.0' data.append({ "AreaName": result[0], "Address": result[1], "Value": value, "StartTime": request.values.get('start_time'), "EndTime": request.values.get('end_time'), "Unit": "KW/h" }) else: sql = f'select AreaName,Address, sum(IncremenValue) as value from IncrementWaterTable where CollectionDate between {start_time} and {end_time} group by AreaName' results = db_session.execute(sql).fetchall() db_session.close() # print(results) for result in results: value = '%.2f' % float( result[2]) if result[2] is not None else '0.0' data.append({ "AreaName": result[0], "Address": result[1], "Value": value, "StartTime": request.values.get('start_time'), "EndTime": request.values.get('end_time'), "Unit": "m³" }) # data = [(result[0], result[1], '%.2f' % result[2], request.values.get('start_time'), request.values.get('end_time'), 'm³') for result in results] db_session.close() return json.dumps({ 'code': '200', 'mes': '查询成功', 'data': data }, ensure_ascii=False) except InvalidRequestError as e: print('/energy', '1') db_session.rollback() print('/energy', '2') re_path = request.path re_func = request.url_rule.endpoint.split('.')[1] re_method = request.method # root_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) # file_path = os.path.join(root_path, 'logs\\logs.txt') ip = socket.gethostbyname(socket.gethostname()) now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') db_session.add( RunError(Time=now_time, IP=ip, Path=re_path, Func=re_func, Method=re_method, Error=str(e))) my_log(str(e)) return json.dumps({'code': '200', 'mes': '事务回滚'}, ensure_ascii=False) except Exception as e: # db_session.rollback() print(str(e)) return json.dumps({ 'code': '200', 'mes': '查询失败', 'error': str(e) }, ensure_ascii=False)