添加功能
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
from datetime import datetime
|
||||
import re
|
||||
|
||||
|
||||
class YuthonJobLv(models.Model):
|
||||
@@ -32,16 +33,27 @@ class YuthonJobLv(models.Model):
|
||||
assignment_subsidy = fields.Float(string="作业环境补贴", group_operator=None)
|
||||
temporary_performance = fields.Float(string="临时绩效补贴", group_operator=None)
|
||||
|
||||
|
||||
@api.model
|
||||
def read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True):
|
||||
res = super(YuthonJobLv, self).read_group(domain, fields, groupby, offset=offset, limit=limit, orderby=orderby,
|
||||
lazy=lazy)
|
||||
if 'lv' in groupby:
|
||||
try:
|
||||
res.sort(
|
||||
key=lambda x: int(self.search([('lv', '=', x['lv'])], limit=1).sequence or 0) if x.get('lv') else 0)
|
||||
except (ValueError, AttributeError):
|
||||
# 处理 sequence 字段不是数字或不存在的情况
|
||||
res.sort(key=lambda x: x.get('lv') or '') # 按 lv 值排序,如果 lv 不存在则使用空字符串
|
||||
def sort_by_sequence_number(item):
|
||||
lv = item.get('lv')
|
||||
if lv:
|
||||
rec = self.search([('lv', '=', lv)], limit=1)
|
||||
if rec and rec.sequence:
|
||||
match = re.findall(r'\d+', rec.sequence)
|
||||
if match:
|
||||
number_str = "".join(match)
|
||||
try:
|
||||
number = int(number_str)
|
||||
return (not number_str.startswith('0'), number)
|
||||
except ValueError:
|
||||
return (False, 0)
|
||||
return (False, 0) # 首位非0的放前面
|
||||
|
||||
res.sort(key=sort_by_sequence_number)
|
||||
return res
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user