云之家表单数据解析 skills (yzj-form-parser)
云之家表单数据解析器 (yzj-form-parser)Claude Code 技能用于解析和构建云之家(YunZhijia)表单数据https://github.com/jlifeng/leyfung_skills/tree/main/skills/yzj-form-parser如果能帮到大家帮我点个start呗 简介yzj-form-parser是一个专为处理云之家表单 JSON 数据而设计的 Claude Code 技能。它支持双向转换推送数据解析从widgetMap提取业务字段读取数据审批发起构建将业务字段转换为widgetMap写入数据 快速开始安装将本技能放置在 Claude Code 的 skills 目录下~/.claude/skills/yzj-form-parser/ ├── SKILL.md ├── README.md └── references/ ├── widget-types.md ├── detail-widget.md └── file-widget.md使用方式在 Claude Code 中直接描述你的需求技能会自动触发# 解析推送数据 帮我解析这个云之家审批推送数据... # 构建审批数据 帮我构建发起审批接口的表单数据... 触发场景场景说明解析推送数据处理云之家审批回调的 JSON 数据构建审批数据组装发起审批接口的请求参数理解表单结构分析widgetMap和detailMap的数据结构控件数据处理处理文本、单选、多选、日期、人员、部门、明细表等各类控件 支持的控件类型基础控件控件类型type说明文本textWidget/textAreaWidget单行/多行文本日期dateWidget/dateRangeWidget日期/日期区间数字numberWidget数字输入金额moneyWidget金额输入运算arithmeticWidget公式运算选择控件控件类型type说明单选radioWidget单选按钮多选checkboxWidget复选框组织架构控件控件类型type说明人员personSelectWidget人员选择器部门departmentSelectWidget部门选择器附件控件控件类型type说明附件attachmentWidget文件上传图片imageWidget图片上传特殊控件控件类型type说明关联审批relatedWidget关联其他审批单据流水号serialNumWidget系统自动生成编号明细表detailedWidget子表/明细数据 数据结构概览表单整体结构{formInfo:{widgetMap:{/* 主表单控件 */},detailMap:{/* 明细表控件 */}},basicInfo:{eventId:事件ID,formInstId:表单实例ID,flowInstId:流程实例ID,formDefId:表单模版ID,actionType:reach/agree/submit/...,title:表单标题}}控件通用字段{codeId:控件唯一标识,title:控件标题,type:控件类型,value:控件值,extendFieldMap:{/* 扩展配置 */}} 使用示例解析推送数据// 解析主表单MapString,WidgetInfowidgetMapformInfo.getWidgetMap();// 获取文本Stringtitle(String)widgetMap.get(_S_TITLE).getValue();// 获取日期Longtimestamp(Long)widgetMap.get(Da_0).getValue();DatedatenewDate(timestamp);// 获取单选项WidgetInforadiowidgetMap.get(Ra_0);StringselectedKey(String)radio.getValue();StringlabelgetOptionLabel(radio.getOptions(),selectedKey);// 获取人员信息WidgetInfopersonwidgetMap.get(Ps_0);Stringnameperson.getPersonInfo().get(0).getName();构建审批数据// 构建主表单MapString,ObjectwidgetMapnewHashMap();widgetMap.put(_S_TITLE,createTextWidget(标题内容));widgetMap.put(Da_0,createDateWidget(System.currentTimeMillis()));widgetMap.put(Ra_0,createRadioWidget(AaBaCcDd,options));widgetMap.put(Ps_0,createPersonWidget(oid,name));// 构建明细表ListMapString,ObjectrowsnewArrayList();for(Itemitem:items){MapString,ObjectrownewHashMap();row.put(Te_1,item.getName());row.put(Ra_0,item.getRadioKey());rows.add(row);}⚠️ 注意事项数字类型numberWidget、moneyWidget的 value 是字符串类型时间戳日期控件的 value 是毫秒级时间戳Long选项 key单选/多选的 value 是选项的key不是显示文本明细表行 ID每行有_id_字段构建新数据时可不设置数组类型多选、人员、部门、附件的 value 都是数组 参考文档控件类型详解明细表控件附件控件 贡献欢迎提交问题和改进建议 许可证MIT License