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

1.优化

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