integer('id')->description('主数据 ID。')->required() ->integer('seq')->description('序号。') ->string('partNo')->description('零件编号。') ->string('partName')->description('零件名称。') ->string('partDrawingNo')->description('零件图号。') ->string('material')->description('材质。') ->string('spec')->description('零件规格。') ->string('qtyPerUnit')->description('单件用量。') ->string('unit')->description('单位。') ->string('process')->description('工序。') ->string('remark')->description('备注。') ->raw('dynamicColumns', [ 'type' => 'object', 'description' => '动态列的值,键为列 key,值为字符串。', 'additionalProperties' => ['type' => 'string'], ]); } public function handle(array $arguments): ToolResult { $id = (int) ($arguments['id'] ?? 0); $values = [ 'seq' => (int) ($arguments['seq'] ?? 0), 'partNo' => (string) ($arguments['partNo'] ?? ''), 'partName' => (string) ($arguments['partName'] ?? ''), 'partDrawingNo' => (string) ($arguments['partDrawingNo'] ?? ''), 'material' => (string) ($arguments['material'] ?? ''), 'spec' => (string) ($arguments['spec'] ?? ''), 'qtyPerUnit' => (string) ($arguments['qtyPerUnit'] ?? ''), 'unit' => (string) ($arguments['unit'] ?? ''), 'process' => (string) ($arguments['process'] ?? ''), 'remark' => (string) ($arguments['remark'] ?? ''), ]; // 动态列 $dynamic = $arguments['dynamicColumns'] ?? []; if (is_array($dynamic)) { foreach ($dynamic as $k => $v) { $values[(string) $k] = (string) $v; } } $itemId = $this->bomService->saveItem($id, $values); if ($itemId > 0) { return ToolResult::text("明细行添加成功:itemId {$itemId}。"); } return ToolResult::error('添加明细行失败(可能无权限或主数据不存在)。'); } }