1
0
forked from erp-dev/erp

patch: patch testing (api & services)

This commit is contained in:
2025-11-17 10:10:32 +08:00
parent 9c38e2ac09
commit 02a1b77e19
10 changed files with 337 additions and 102 deletions

View File

@@ -134,26 +134,33 @@ class PlateOrder(ModelBase):
@property
def status(self) -> str:
"""返回当前状态名称"""
"""
返回当前状态名称(下一个待执行的状态名称)
规则:
- current_state 为 None返回"已完成"(没有待执行的节点)
- current_state 不为 None + 进度 0%:返回"未开始"
- current_state 不为 None + 进度 > 0%:返回 current_state.name正在进行
"""
if not self.business_object:
return '未开始'
current_state = self.business_object.get_current_state()
# current_state 为 None 有两种情况:未开始或已完成
if current_state is None:
# 检查是否有完成记录来区分
has_completed_records = self.business_object.state_logs.filter(is_cancelled=False).exists()
if has_completed_records:
return '已完成'
else:
return '未开始'
# 没有待执行的节点,已完成
return '已完成'
# 有待执行的节点,配合进度判断是"未开始"还是"进行中"
progress = self.business_object.get_progress_percentage()
if progress == 0:
return '未开始'
return current_state.name
@property
def status_id(self):
"""返回当前状态ID"""
"""返回当前状态ID下一个待执行的状态ID"""
if not self.business_object:
return None
current_state = self.business_object.get_current_state()
@@ -291,26 +298,33 @@ class PrintingJob(ModelBase):
@property
def status(self) -> str:
"""返回当前状态名称"""
"""
返回当前状态名称(下一个待执行的状态名称)
规则:
- current_state 为 None返回"已完成"(没有待执行的节点)
- current_state 不为 None + 进度 0%:返回"未开始"
- current_state 不为 None + 进度 > 0%:返回 current_state.name正在进行
"""
if not self.business_object:
return '未开始'
current_state = self.business_object.get_current_state()
# current_state 为 None 有两种情况:未开始或已完成
if current_state is None:
# 检查是否有完成记录来区分
has_completed_records = self.business_object.state_logs.filter(is_cancelled=False).exists()
if has_completed_records:
return '已完成'
else:
return '未开始'
# 没有待执行的节点,已完成
return '已完成'
# 有待执行的节点,配合进度判断是"未开始"还是"进行中"
progress = self.business_object.get_progress_percentage()
if progress == 0:
return '未开始'
return current_state.name
@property
def status_id(self):
"""返回当前状态ID"""
"""返回当前状态ID下一个待执行的状态ID"""
if not self.business_object:
return None
current_state = self.business_object.get_current_state()

View File

@@ -174,7 +174,7 @@ class PlateOrderModelTestCase(TestCase):
# 刷新并检查状态
plate_order.refresh_from_db()
self.assertEqual(plate_order.status, state1.name) # current_state 是最后完成的状态state1
self.assertEqual(plate_order.status, state2.name) # current_state 是下一个待执行的状态state2
self.assertFalse(plate_order.is_completed)
self.assertTrue(plate_order.has_started)
self.assertGreater(plate_order.progress_percentage, 0)