闭环修复: transfer/spawn/receive补TaskRecord + reject加task_type + branchLabel只对SPAWN编号
This commit is contained in:
@ -389,6 +389,7 @@ async def spawn_subtask(
|
|||||||
await db.flush()
|
await db.flush()
|
||||||
|
|
||||||
# 协助分支不改变产品宏观状态(只有主分支影响 overall_status)
|
# 协助分支不改变产品宏观状态(只有主分支影响 overall_status)
|
||||||
|
db.add(TaskRecord(task_id=task.id, remark=data.remark or f"[派发协助] 分配给 {data.assignee_id}", images="[]"))
|
||||||
|
|
||||||
await _create_task_log(db, child.id, action_type="create", operator_id=operator_id,
|
await _create_task_log(db, child.id, action_type="create", operator_id=operator_id,
|
||||||
remark=f"协助分支(由「{task.task_name}」派发,分配给 {data.assignee_id})")
|
remark=f"协助分支(由「{task.task_name}」派发,分配给 {data.assignee_id})")
|
||||||
@ -462,6 +463,7 @@ async def receive_task(
|
|||||||
operator_id=operator_id,
|
operator_id=operator_id,
|
||||||
remark=remark or f"操作员确认接收任务「{task.task_name}」",
|
remark=remark or f"操作员确认接收任务「{task.task_name}」",
|
||||||
)
|
)
|
||||||
|
db.add(TaskRecord(task_id=task.id, remark=remark or f"[接收] 操作员已确认接收", images="[]"))
|
||||||
|
|
||||||
# 接收时同步产品位置到接收人 + 宏观状态同步
|
# 接收时同步产品位置到接收人 + 宏观状态同步
|
||||||
product_result = await db.execute(select(Product).where(Product.id == task.product_id))
|
product_result = await db.execute(select(Product).where(Product.id == task.product_id))
|
||||||
@ -560,6 +562,7 @@ async def reject_task(
|
|||||||
task_name=task.task_name,
|
task_name=task.task_name,
|
||||||
assignee_id=rework_assignee_id,
|
assignee_id=rework_assignee_id,
|
||||||
status=TASK_STATUS_PENDING,
|
status=TASK_STATUS_PENDING,
|
||||||
|
task_type="TRANSFER",
|
||||||
notify_parent_on_complete=task.notify_parent_on_complete,
|
notify_parent_on_complete=task.notify_parent_on_complete,
|
||||||
is_rework=True,
|
is_rework=True,
|
||||||
)
|
)
|
||||||
@ -638,6 +641,7 @@ async def transfer_task(
|
|||||||
operator_id=operator_id,
|
operator_id=operator_id,
|
||||||
remark=request.note or f"完成任务「{task.task_name}」,转交至下一道工序",
|
remark=request.note or f"完成任务「{task.task_name}」,转交至下一道工序",
|
||||||
)
|
)
|
||||||
|
db.add(TaskRecord(task_id=task.id, remark=request.note or f"[完工转交] 移交下一工序", images="[]"))
|
||||||
|
|
||||||
# --- 动作 2:解析下家 & 裂变 ---
|
# --- 动作 2:解析下家 & 裂变 ---
|
||||||
# 兼容新旧格式
|
# 兼容新旧格式
|
||||||
|
|||||||
@ -118,13 +118,20 @@ export default {
|
|||||||
if (!this.product || !this.product.task_tree) return map;
|
if (!this.product || !this.product.task_tree) return map;
|
||||||
const traverse = (tasks, prefix) => {
|
const traverse = (tasks, prefix) => {
|
||||||
if (!tasks) return;
|
if (!tasks) return;
|
||||||
tasks.forEach((t, i) => {
|
let spawnIndex = 0;
|
||||||
const num = prefix ? `${prefix}.${i + 1}` : `${i + 1}`;
|
tasks.forEach((t) => {
|
||||||
map[t.id] = `分支 ${num}`;
|
if (t.task_type !== 'SPAWN') {
|
||||||
traverse(t.child_tasks, num);
|
map[t.id] = '主分支';
|
||||||
|
traverse(t.child_tasks, prefix);
|
||||||
|
} else {
|
||||||
|
spawnIndex++;
|
||||||
|
const num = prefix ? `${prefix}.${spawnIndex}` : `${spawnIndex}`;
|
||||||
|
map[t.id] = `分支 ${num}`;
|
||||||
|
traverse(t.child_tasks, num);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
this.product.task_tree.forEach((t, i) => {
|
this.product.task_tree.forEach((t) => {
|
||||||
map[t.id] = '主分支';
|
map[t.id] = '主分支';
|
||||||
traverse(t.child_tasks, '');
|
traverse(t.child_tasks, '');
|
||||||
});
|
});
|
||||||
|
|||||||
@ -156,13 +156,20 @@ export default {
|
|||||||
if (!this.product || !this.product.task_tree) return map;
|
if (!this.product || !this.product.task_tree) return map;
|
||||||
const traverse = (tasks, prefix) => {
|
const traverse = (tasks, prefix) => {
|
||||||
if (!tasks) return;
|
if (!tasks) return;
|
||||||
tasks.forEach((t, i) => {
|
let spawnIndex = 0;
|
||||||
const num = prefix ? `${prefix}.${i + 1}` : `${i + 1}`;
|
tasks.forEach((t) => {
|
||||||
map[t.id] = `分支 ${num}`;
|
if (t.task_type !== 'SPAWN') {
|
||||||
traverse(t.child_tasks, num);
|
map[t.id] = '主分支';
|
||||||
|
traverse(t.child_tasks, prefix);
|
||||||
|
} else {
|
||||||
|
spawnIndex++;
|
||||||
|
const num = prefix ? `${prefix}.${spawnIndex}` : `${spawnIndex}`;
|
||||||
|
map[t.id] = `分支 ${num}`;
|
||||||
|
traverse(t.child_tasks, num);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
this.product.task_tree.forEach((t, i) => {
|
this.product.task_tree.forEach((t) => {
|
||||||
map[t.id] = '主分支';
|
map[t.id] = '主分支';
|
||||||
traverse(t.child_tasks, '');
|
traverse(t.child_tasks, '');
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user