提交 9e26995e authored 作者: 刘擎阳's avatar 刘擎阳

1.优化

上级 44645134
......@@ -125,7 +125,8 @@ class FetchmailServer(models.Model):
# 如果ture的话内容是没用的
if not part.is_multipart():
# 解码出内容
email_body = part.get_payload(decode=True).decode('utf-8', 'ignore')
# email_body = part.get_payload(decode=True).decode('utf-8', 'ignore')
email_body = part.get_payload(decode=True).decode('gbk', 'ignore')
break
if email_body:
if 'CDS REPORT' in subject.upper():
......
......@@ -52,7 +52,7 @@ class OrderStateChangeRule(models.Model):
return False
def find_text(self, email_body):
pattern = r'([A-Za-z]+\d+)\s+(\d{3}-\d+)\s+(\d{4})?\.?(\d{1,2})\.(\d{1,2})\s+(\d{1,2}:\d{2})\s+\(([\+\-]?\d+)\)'
pattern = r'([A-Za-z]+\d+)\s+(\d{3}-\d+)\s+(\d{4})?[\.\。]?(\d{1,2})[\.\。](\d{1,2})\s+(\d{1,2}[::]\d{2})?\s*[\(\(]([\+\-]?\d+)[\)\)]'
data_re = re.compile(pattern)
data_arr = data_re.findall(email_body)
return data_arr
......@@ -62,6 +62,7 @@ class OrderStateChangeRule(models.Model):
year = kwargs['year']
# datas = demjson.decode(kwargs['datas'])
current_year = datetime.now().year
email_body = html.unescape(email_body)
text_arr = self.find_text(email_body)
# text_arr = email_body.split('\r\n') if '\r\n' in email_body else email_body.split('\n')
logging.info('data_arr: %s' % text_arr)
......@@ -75,7 +76,7 @@ class OrderStateChangeRule(models.Model):
year = text[2] # 11 或 2024
month = text[3] # 11
day = text[4] # 20
time = text[5] # 12:41
time = text[5].replace(':', ':') # 12:41
timezone_offset = int(text[6]) # +1 或 -8
# voyage_name = match.group(1) # SE901
# order_no = match.group(2) # 436-10133970
......@@ -104,14 +105,18 @@ class OrderStateChangeRule(models.Model):
bl_obj = self.env['cc.bl'].sudo().search([('id', '=', result[0][0])]) if result else False
if bl_obj and bl_obj.state != 'done':
self.push_clear_customs_start(bl_obj, before_utc_time)
is_ok = bl_obj.callback_track()
if is_ok:
self.push_clear_customs_end(bl_obj, utc_time)
bl_obj.callback_track()
except Exception as err:
logging.error('fetch_mail_dlv--error:%s' % str(err))
def push_clear_customs_start(self, order, utc_time):
# 创建向导
node_obj = self.env['cc.node'].sudo().search([('node_type', '=', 'package'), ('tk_code', 'in', [False, ''])], limit=1)
push_node_obj = self.env['cc.node'].sudo().search([('node_type', '=', 'package'), ('tk_code', '=', 'cb_imcustoms_start')], limit=1)
node_obj = self.env['cc.node'].sudo().search([('node_type', '=', 'package'), ('seq', '<', push_node_obj.seq)], order='seq desc',
limit=1)
vals = {
'bl_id': order.id,
'bl_count': 1,
......@@ -127,8 +132,10 @@ class OrderStateChangeRule(models.Model):
def push_clear_customs_end(self, order, utc_time):
# 创建向导
node_obj = self.env['cc.node'].sudo().search([('node_type', '=', 'package'), ('tk_code', '=', 'cb_imcustoms_start')], limit=1)
push_node_obj = self.env['cc.node'].sudo().search([('node_type', '=', 'package'), ('tk_code', '=', 'cb_imcustoms_finished')], limit=1)
node_obj = self.env['cc.node'].sudo().search([('node_type', '=', 'package'), ('seq', '<', push_node_obj.seq)],
order='seq desc',
limit=1)
vals = {
'bl_id': order.id,
'bl_count': 1,
......
......@@ -247,6 +247,7 @@ class CcBl(models.Model):
# 定义一个方法, 获取提单下的所有未同步的小包,并回传小包状态
def callback_track(self):
is_ok = True
for item in self:
ship_packages = self.env['cc.ship.package'].search([('bl_id', '=', item.id), ('is_sync', '=', False)])
# for package in ship_packages:
......@@ -279,6 +280,7 @@ class CcBl(models.Model):
self.env['ao.tt.api.log'].sudo().create_api_log(
package_order.tracking_no or '', '小包状态轨迹回传:' + error_msg, data, code, request_id,
source='推出')
is_ok = False
else:
# 回传成功
package_order.is_sync = True
......@@ -288,6 +290,7 @@ class CcBl(models.Model):
request_id = response_data['requestID']
self.env['ao.tt.api.log'].sudo().create_api_log(
package_order.tracking_no or '', '', data, 0, request_id, source='推出')
return is_ok
def deal_ship_package_state(self):
for item in self:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论