修复字符集出错的问题
This commit is contained in:
@@ -1298,10 +1298,7 @@ class Sf_Dashboard_Connect(http.Controller):
|
|||||||
conn = psycopg2.connect(**db_config)
|
conn = psycopg2.connect(**db_config)
|
||||||
# 获取请求的机床数据
|
# 获取请求的机床数据
|
||||||
machine_list = ast.literal_eval(kw['machine_list'])
|
machine_list = ast.literal_eval(kw['machine_list'])
|
||||||
time_threshold = datetime.now() - timedelta(days=1)
|
time_threshold = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
|
||||||
|
|
||||||
alarm_last_24_time = 0.0
|
|
||||||
alarm_all_time = 0.0
|
|
||||||
|
|
||||||
def fetch_result_as_dict(cursor):
|
def fetch_result_as_dict(cursor):
|
||||||
"""辅助函数:将查询结果转为字典"""
|
"""辅助函数:将查询结果转为字典"""
|
||||||
@@ -1311,6 +1308,9 @@ class Sf_Dashboard_Connect(http.Controller):
|
|||||||
# 获取当前时间的时间戳
|
# 获取当前时间的时间戳
|
||||||
current_timestamp = datetime.now().timestamp()
|
current_timestamp = datetime.now().timestamp()
|
||||||
for item in machine_list:
|
for item in machine_list:
|
||||||
|
alarm_last_24_time = 0.0
|
||||||
|
alarm_all_time = 0.0
|
||||||
|
|
||||||
euipment_obj = request.env['maintenance.equipment'].sudo().search([('code', '=', item)])
|
euipment_obj = request.env['maintenance.equipment'].sudo().search([('code', '=', item)])
|
||||||
# 机床上线时间段
|
# 机床上线时间段
|
||||||
first_online_duration = current_timestamp - euipment_obj.first_online_time.timestamp()
|
first_online_duration = current_timestamp - euipment_obj.first_online_time.timestamp()
|
||||||
@@ -1327,8 +1327,8 @@ class Sf_Dashboard_Connect(http.Controller):
|
|||||||
cur.execute("""
|
cur.execute("""
|
||||||
SELECT * FROM device_data
|
SELECT * FROM device_data
|
||||||
WHERE device_name = %s
|
WHERE device_name = %s
|
||||||
AND device_state in ('待机', '警告', '运行中') AND time >= %s AND process_time IS NOT NULL
|
AND device_state in ('待机', '警告', '运行中') AND time <= %s AND process_time IS NOT NULL
|
||||||
ORDER BY time ASC
|
ORDER BY time DESC
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
""", (item, time_threshold))
|
""", (item, time_threshold))
|
||||||
last_24_time = fetch_result_as_dict(cur)
|
last_24_time = fetch_result_as_dict(cur)
|
||||||
@@ -1348,12 +1348,13 @@ class Sf_Dashboard_Connect(http.Controller):
|
|||||||
alarm_last_24_nums = []
|
alarm_last_24_nums = []
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
cur.execute("""
|
cur.execute("""
|
||||||
SELECT DISTINCT ON (alarm_start_time) alarm_time, alarm_start_time
|
SELECT DISTINCT ON (alarm_start_time, alarm_time) alarm_time, alarm_start_time
|
||||||
FROM device_data
|
FROM device_data
|
||||||
WHERE device_name = %s
|
WHERE device_name = %s
|
||||||
AND alarm_start_time IS NOT NULL AND time >= %s;
|
AND alarm_start_time IS NOT NULL AND alarm_start_time::timestamp >= %s;
|
||||||
""", (item, time_threshold))
|
""", (item, time_threshold))
|
||||||
results = cur.fetchall()
|
results = cur.fetchall()
|
||||||
|
logging.info("results============:%s" % results)
|
||||||
for result in results:
|
for result in results:
|
||||||
alarm_last_24_nums.append(result[1])
|
alarm_last_24_nums.append(result[1])
|
||||||
if result[0]:
|
if result[0]:
|
||||||
|
|||||||
@@ -9,8 +9,12 @@ _logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
class FTP_P(FTP):
|
class FTP_P(FTP):
|
||||||
"""
|
"""
|
||||||
重写FTP类,重写dirs方法
|
重写FTP类,重写dirs方法,增加编码处理
|
||||||
"""
|
"""
|
||||||
|
def __init__(self, host='', user='', passwd='', acct='', timeout=None, encoding='gbk'):
|
||||||
|
"""初始化时指定编码方式"""
|
||||||
|
super().__init__(host, user, passwd, acct, timeout)
|
||||||
|
self.encoding = encoding
|
||||||
|
|
||||||
def dirs(self, *args):
|
def dirs(self, *args):
|
||||||
"""List a directory in long form.
|
"""List a directory in long form.
|
||||||
@@ -32,7 +36,50 @@ class FTP_P(FTP):
|
|||||||
tempdic['name'] = [file for file in r_files if file != "." and file != ".."]
|
tempdic['name'] = [file for file in r_files if file != "." and file != ".."]
|
||||||
# 去除. ..
|
# 去除. ..
|
||||||
return tempdic
|
return tempdic
|
||||||
# return [file for file in r_files if file != "." and file != ".."]
|
|
||||||
|
def nlst(self, *args):
|
||||||
|
"""Get a list of files in a directory."""
|
||||||
|
files = []
|
||||||
|
def append(line):
|
||||||
|
try:
|
||||||
|
if isinstance(line, bytes):
|
||||||
|
files.append(line.decode(self.encoding))
|
||||||
|
else:
|
||||||
|
files.append(line)
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
files.append(line.decode('utf-8', errors='replace'))
|
||||||
|
cmd = 'NLST'
|
||||||
|
if args:
|
||||||
|
cmd = cmd + ' ' + args[0]
|
||||||
|
self.retrlines(cmd, append)
|
||||||
|
return files
|
||||||
|
|
||||||
|
def cwd(self, dirname):
|
||||||
|
"""Change to a directory."""
|
||||||
|
try:
|
||||||
|
if isinstance(dirname, bytes):
|
||||||
|
dirname = dirname.decode(self.encoding)
|
||||||
|
return super().cwd(dirname)
|
||||||
|
except UnicodeEncodeError:
|
||||||
|
return super().cwd(dirname.encode(self.encoding).decode('utf-8'))
|
||||||
|
|
||||||
|
def storbinary(self, cmd, fp, blocksize=8192, callback=None, rest=None):
|
||||||
|
"""Store a file in binary mode."""
|
||||||
|
try:
|
||||||
|
if isinstance(cmd, bytes):
|
||||||
|
cmd = cmd.decode(self.encoding)
|
||||||
|
return super().storbinary(cmd, fp, blocksize, callback, rest)
|
||||||
|
except UnicodeEncodeError:
|
||||||
|
return super().storbinary(cmd.encode(self.encoding).decode('utf-8'), fp, blocksize, callback, rest)
|
||||||
|
|
||||||
|
def retrbinary(self, cmd, callback, blocksize=8192, rest=None):
|
||||||
|
"""Retrieve a file in binary mode."""
|
||||||
|
try:
|
||||||
|
if isinstance(cmd, bytes):
|
||||||
|
cmd = cmd.decode(self.encoding)
|
||||||
|
return super().retrbinary(cmd, callback, blocksize, rest)
|
||||||
|
except UnicodeEncodeError:
|
||||||
|
return super().retrbinary(cmd.encode(self.encoding).decode('utf-8'), callback, blocksize, rest)
|
||||||
|
|
||||||
|
|
||||||
# FTP接口类
|
# FTP接口类
|
||||||
|
|||||||
Reference in New Issue
Block a user