注:约定项目结构
一个工具生成项目对应一个或多个清单项
一个工清单项目对应一个或多个定额项
根据自身界面信息 对应清单工具(项目管理中打开)中的清单项
清单项目数据结构
{
'项目编码' => '九位数编码',
'项目名称' => '项目名称', # 这项如果没有给 则会取清单书籍写的清单名称
'项目界限' => '新建', # 新建/原有
# 单位在清单项目中已经做了规定 多个单位时 {'m²'=>20,'m'=>200}
'清单量' => {'m²'=>20},
'清单量表达式' => {'m²'=>"#{20}m²"},
'项目特征' => [{ 特征项 => 描述 },自定义描述],
'属性' => [属性内容1,属性内容2],
'工种计价'=>'定额工日\项目工日', # 定额工日和项目工日二选一
'定额工日'=>[{'工种'=>'xxxx','计价单位'=>'xxxx','工日量'=>0.05}],
'项目工日'=>[{'工种'=>'xxxx','计价单位'=>'xxxx'}],
'机械台班'=>[{'机械'=>'xxxx机械','台班量'=>0.05}],
'物料'=>[
{
'干混水泥砂浆DM2.0'=>{
'设定甲供'=>false, # 材料是否甲供
'设定主材'=>true, # 材料是否为主材
'id'=>'', # 物料id
'名称'=>'', # 物料名称
'型号'=>'', # 物料型号
},
'定额损耗'=>0, # 当前材料对应的损耗系数
# 当前物料的消耗情况
'物料统计'=>{'单位'=>'kg','值'=>10,'单位量'=>10} # 值 = 单位量*清单量 值和单位量 填一个就好 有单位量就填单位量
}
],
'人工系数'=>0.05,
'主材系数'=>0.05,
'辅材系数'=>0.05,
'机械系数'=>0.05,
'定额项' => []
}
根据自身界面信息以及清单项信息 对应项目定义中的定额项
定额项目数据结构
{
'定额编号' => 短线分割的编号,
'输入值' => {
'工程量'=> 数值,
....其它带输入值...
# 查询输入值 DFC::Common::Budget.get_cal_key_by_num(project_domain,number)
},
'材料对应' => {
定额材料名称 => [{物料id=>,型号=>}....]
...
}
}
完整的接口返回数据
[
{
'项目编码' => '011301001', # 代指 天棚抹灰
# 单位在清单项目中已经做了规定 多个单位时{"m²"=>20,"m"=>200}
'清单量' => {'m²'=>20}, # su 的单位是英寸,这里要做好转换
'项目特征' => [
{
# 当特征项的值建议请求专业协助 实在不知道那就 nil
# 特征项可以出现清单中不存在的 清单中存在的也是可选项
'基层类型' => '界面砂浆',
'抹灰厚度、材料种类' => '界面砂浆 厚15mm'
},
'自定义的一些清单描述'
],
'定额项' => [
{
'定额编号' => '01-12-1-7',
# 输入值里面不清楚的值 可不填该字段
# 查询输入值 DFC::Common::Budget.get_cal_key_by_num(project_domain,number)
'输入值' => {
'工程量' => 0, # su 的单位是英寸,这里要做好转换
'人工' => 1.0,
'材料' => 1.0,
'机械' => 1.0
},
'材料对应' => {
'干混界面砂浆' => [{物料id=>, 型号=>}]
}
}
]
}
]
项目特征 Hash 的格式是:
{'项目特征' => '特征描述', ...}

代码替换路径
接口变更
DFC::Common::ProjectManage::ModuleInterface
# 修改为
ProjectManageModuleInterface
# 之前调用下面接口的同事记得修改
DFC::Common::ProjectManage::ModuleInterface.handle_sub_item_content
# 修改为
ProjectManageModuleInterface.handle_sub_item_content
预算对接
# 对接预算接口说明
# ModelInterface新增接口 budget_form_data(instance)
class ModuleInterface
def budget_form_data(instance)
arr = [] # 之前约定数组 清单项目数组
ProjectManageModuleInterface.handle_budget_form_data(arr, instance)
end
end
# 添加项目到项目管理
DFC::Common::ProjectManage.add_project_from_tool(project_domain, group)
接口自测
# 自己测试接口代码
group = Sketchup.active_model.selection[0] # 工具生成组
obj = DFC.module_interface.find group, :budget_form_data # 基本信息
raise "组未注册接口 <budget_form_data>" unless obj
dfc_puts obj.budget_form_data group