Accept Merge Request #2013: (feature/页面显示优化 -> develop)

Merge Request: 排序优化

Created By: @管欢
Reviewed By: @胡尧
Approved By: @胡尧 
Accepted By: @管欢
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/2013
This commit is contained in:
管欢
2025-04-18 14:08:29 +08:00
committed by Coding
2 changed files with 20 additions and 31 deletions

View File

@@ -1763,29 +1763,17 @@ class ResMrpWorkOrder(models.Model):
aggregate_field = 'create_date:max' aggregate_field = 'create_date:max'
if aggregate_field not in fields: if aggregate_field not in fields:
fields.append(aggregate_field) fields.append(aggregate_field)
res = super(ResMrpWorkOrder, self).read_group( orderby = "create_date desc"
domain, fields, groupby, offset=offset, limit=limit, orderby=orderby, lazy=lazy
)
sorted_res = sorted(
res,
key=lambda x: self.parse_datetime(x.get('create_date', '')),
reverse=True
)
return sorted_res
def parse_datetime(self, value): return super(ResMrpWorkOrder, self).read_group(
"""将字符串转换为 datetime 对象,处理空值和无效格式""" domain,
if not value: fields,
return datetime.min # 返回最小日期时间,确保排序稳定 groupby,
try: offset=offset,
# 假设 value 是字符串(如 "2023-10-01 12:00:00" limit=limit,
return datetime.strptime(value, "%Y-%m-%d %H:%M:%S") orderby=orderby,
except (TypeError, ValueError): lazy=lazy
# 如果已经是 datetime 对象,直接返回 )
if isinstance(value, datetime):
return value
# 其他无效格式返回最小日期时间
return datetime.min
class CNCprocessing(models.Model): class CNCprocessing(models.Model):

View File

@@ -760,17 +760,18 @@ class StockPicking(models.Model):
aggregate_field = 'create_date:max' aggregate_field = 'create_date:max'
if aggregate_field not in fields: if aggregate_field not in fields:
fields.append(aggregate_field) fields.append(aggregate_field)
res = super(StockPicking, self).read_group(
domain, fields, groupby, offset=offset, limit=limit, orderby=orderby, lazy=lazy
)
sorted_res = sorted(
res,
key=lambda x: self.env['mrp.workorder'].sudo().parse_datetime(x.get('create_date', '')),
reverse=True
)
return sorted_res
orderby = "create_date desc"
return super(StockPicking, self).read_group(
domain,
fields,
groupby,
offset=offset,
limit=limit,
orderby=orderby,
lazy=lazy
)
class ReStockMove(models.Model): class ReStockMove(models.Model):