197 lines
8.1 KiB
Python
197 lines
8.1 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
|
|||
|
|
import json
|
|||
|
|
|
|||
|
|
def create_my_projects_data():
|
|||
|
|
# 读取土木水利项目案例数据
|
|||
|
|
with open('网页未导入数据/土木水利产业/土木水利项目案例.json', 'r', encoding='utf-8') as f:
|
|||
|
|
civil_data = json.load(f)
|
|||
|
|
|
|||
|
|
# 按单元分组项目
|
|||
|
|
unit_projects = {}
|
|||
|
|
|
|||
|
|
for item in civil_data:
|
|||
|
|
project_name = item.get('案例名称', '')
|
|||
|
|
# 使用垂直能力课单元
|
|||
|
|
units = item.get('对应单元名称(垂直能力课)', '')
|
|||
|
|
|
|||
|
|
if units and project_name:
|
|||
|
|
unit_list = [u.strip() for u in units.split(',')]
|
|||
|
|
# 只取第一个单元,避免重复
|
|||
|
|
if unit_list:
|
|||
|
|
unit = unit_list[0]
|
|||
|
|
if unit not in unit_projects:
|
|||
|
|
unit_projects[unit] = []
|
|||
|
|
if project_name not in unit_projects[unit]: # 避免重复
|
|||
|
|
unit_projects[unit].append(project_name)
|
|||
|
|
|
|||
|
|
# 选择10个有代表性的单元
|
|||
|
|
selected_units = [
|
|||
|
|
"BIM设计",
|
|||
|
|
"建筑工程施工技术",
|
|||
|
|
"项目成本管理",
|
|||
|
|
"建筑设计原理",
|
|||
|
|
"室内三维空间设计",
|
|||
|
|
"工程招投标与合同管理",
|
|||
|
|
"项目质量管理",
|
|||
|
|
"建筑动画设计",
|
|||
|
|
"广联达软件实操教学",
|
|||
|
|
"智能建造"
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
# 构建myProjectsData格式
|
|||
|
|
my_projects_data = []
|
|||
|
|
for unit in selected_units:
|
|||
|
|
if unit in unit_projects and unit_projects[unit]:
|
|||
|
|
# 每个单元最多取2个项目
|
|||
|
|
projects = unit_projects[unit][:2]
|
|||
|
|
my_projects_data.append({
|
|||
|
|
"unitName": unit,
|
|||
|
|
"projects": projects
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
# 确保有10个单元
|
|||
|
|
while len(my_projects_data) < 10:
|
|||
|
|
for unit, projects in unit_projects.items():
|
|||
|
|
if unit not in selected_units and projects:
|
|||
|
|
my_projects_data.append({
|
|||
|
|
"unitName": unit,
|
|||
|
|
"projects": projects[:2]
|
|||
|
|
})
|
|||
|
|
if len(my_projects_data) >= 10:
|
|||
|
|
break
|
|||
|
|
|
|||
|
|
# 读取筏板厚度项目的详细内容
|
|||
|
|
with open('网页未导入数据/土木水利产业/学生完成的项目/筏板厚度及配筋变更引起的工程造价调整项目.md', 'r', encoding='utf-8') as f:
|
|||
|
|
raft_content = f.read()
|
|||
|
|
|
|||
|
|
# 创建可点击项目的数据
|
|||
|
|
clickable_project = {
|
|||
|
|
"id": "clickable-1",
|
|||
|
|
"name": "筏板厚度及配筋变更引起的工程造价调整项目",
|
|||
|
|
"unitName": "工程造价智慧管理",
|
|||
|
|
"isClickable": True,
|
|||
|
|
"content": {
|
|||
|
|
"title": "筏板厚度及配筋变更引起的工程造价调整项目",
|
|||
|
|
"description": "某住宅项目在基础施工阶段,由于甲方提出新的使用功能要求,结构专业图纸发生了设计变更。原设计筏板厚度为 600 mm,变更后调整为 650 mm,同时钢筋配筋量同步增加。因设计调整,需对施工图预算进行重新编制,并提交新的工程造价书。",
|
|||
|
|
"images": [],
|
|||
|
|
"sections": [
|
|||
|
|
{
|
|||
|
|
"title": "一、项目背景",
|
|||
|
|
"content": "某住宅项目在基础施工阶段,由于甲方提出新的使用功能要求,结构专业图纸发生了设计变更。原设计筏板厚度为 **600 mm**,变更后调整为 **650 mm**,同时钢筋配筋量同步增加。因设计调整,需对施工图预算进行重新编制,并提交新的工程造价书。"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"title": "二、项目任务",
|
|||
|
|
"content": '''根据以下条件,完成一份造价调整书:
|
|||
|
|
|
|||
|
|
1. **变更原因说明**:简要描述甲方提出变更的原因及对结构安全、使用功能的影响。
|
|||
|
|
2. **工程量变化分析**:计算筏板厚度增加所带来的混凝土方量变化;分析配筋量增加的情况(可假设钢筋增加比例,如增加10%)。
|
|||
|
|
3. **单价及总价调整**:结合定额单价,计算混凝土与钢筋工程费的增加额,并汇总出总造价的变化情况。
|
|||
|
|
4. **费用对比表**:编制一张"变更前后造价对比表",清晰展示各分项造价的差异。
|
|||
|
|
5. **文字说明**:在造价书中加入简要的文字说明,解释因设计变更导致造价上调的合理性,以及对项目成本控制的启示。'''
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"title": "三、参考数据",
|
|||
|
|
"content": '''- 筏板面积:2,000 m²
|
|||
|
|
- 混凝土单价:450 元/m³
|
|||
|
|
- 钢筋单价:4,200 元/t
|
|||
|
|
- 原设计配筋率:120 kg/m³'''
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"title": "四、工程量计算",
|
|||
|
|
"content": '''### (1)混凝土体积
|
|||
|
|
|
|||
|
|
- **变更前体积**:2,000 m² × 0.60 m = 1,200 m³
|
|||
|
|
- **变更后体积**:2,000 m² × 0.65 m = 1,300 m³
|
|||
|
|
- **体积增量**:100 m³
|
|||
|
|
|
|||
|
|
### (2)钢筋工程量
|
|||
|
|
|
|||
|
|
- **原钢筋量**:1,200 × 0.12 = 144.0 t
|
|||
|
|
- **新钢筋量**:1,300 × 0.132 = 171.6 t(配筋率上调至 0.132 t/m³)
|
|||
|
|
- **钢筋增量**:27.6 t'''
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"title": "五、造价对比分析",
|
|||
|
|
"content": '''| 分项 | 变更前造价 | 变更后造价 | 增减额 | 增减比例 |
|
|||
|
|
| --- | --- | --- | --- | --- |
|
|||
|
|
| 混凝土 | 540,000元 | 585,000元 | +45,000元 | +8.33% |
|
|||
|
|
| 钢筋 | 604,800元 | 720,720元 | +115,920元 | +19.17% |
|
|||
|
|
| **合计** | **1,144,800元** | **1,305,720元** | **+160,920元** | **+14.06%** |'''
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"title": "六、项目成果",
|
|||
|
|
"content": '''通过本项目的实施,成功完成了:
|
|||
|
|
|
|||
|
|
1. **准确计算工程量变化**:精确计算了筏板厚度增加带来的混凝土和钢筋用量变化。
|
|||
|
|
|
|||
|
|
2. **编制造价调整书**:完成了规范的工程造价调整书,为项目变更提供了可靠依据。
|
|||
|
|
|
|||
|
|
3. **成本控制分析**:分析了设计变更对项目成本的影响,提出了成本控制建议。
|
|||
|
|
|
|||
|
|
4. **专业技能提升**:掌握了工程变更造价调整的完整流程和方法。
|
|||
|
|
|
|||
|
|
5. **实践经验积累**:通过实际项目操作,积累了宝贵的工程造价管理经验。'''
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 输出结果
|
|||
|
|
print(f"生成了{len(my_projects_data)}个单元的项目数据")
|
|||
|
|
for data in my_projects_data[:5]:
|
|||
|
|
print(f" - {data['unitName']}: {len(data['projects'])}个项目")
|
|||
|
|
|
|||
|
|
return my_projects_data, clickable_project
|
|||
|
|
|
|||
|
|
def generate_jsx_code():
|
|||
|
|
my_projects_data, clickable_project = create_my_projects_data()
|
|||
|
|
|
|||
|
|
# 生成myProjectsData的JSX代码
|
|||
|
|
jsx_my_projects = "const myProjectsData = [\n"
|
|||
|
|
for item in my_projects_data:
|
|||
|
|
jsx_my_projects += " {\n"
|
|||
|
|
jsx_my_projects += f' "unitName": "{item["unitName"]}",\n'
|
|||
|
|
jsx_my_projects += ' "projects": [\n'
|
|||
|
|
for proj in item["projects"]:
|
|||
|
|
jsx_my_projects += f' "{proj}",\n'
|
|||
|
|
jsx_my_projects += ' ]\n'
|
|||
|
|
jsx_my_projects += " },\n"
|
|||
|
|
jsx_my_projects += "];"
|
|||
|
|
|
|||
|
|
# 生成clickableProjects的JSX代码
|
|||
|
|
jsx_clickable = """const clickableProjects = [
|
|||
|
|
{
|
|||
|
|
id: "clickable-1",
|
|||
|
|
name: "筏板厚度及配筋变更引起的工程造价调整项目",
|
|||
|
|
unitName: "工程造价智慧管理",
|
|||
|
|
isClickable: true,
|
|||
|
|
content: {
|
|||
|
|
title: "筏板厚度及配筋变更引起的工程造价调整项目",
|
|||
|
|
description: "某住宅项目在基础施工阶段,由于甲方提出新的使用功能要求,结构专业图纸发生了设计变更。原设计筏板厚度为 600 mm,变更后调整为 650 mm,同时钢筋配筋量同步增加。",
|
|||
|
|
images: [],
|
|||
|
|
sections: ["""
|
|||
|
|
|
|||
|
|
for section in clickable_project["content"]["sections"]:
|
|||
|
|
jsx_clickable += f"""
|
|||
|
|
{{
|
|||
|
|
title: "{section['title']}",
|
|||
|
|
content: `{section['content']}`
|
|||
|
|
}},"""
|
|||
|
|
|
|||
|
|
jsx_clickable += """
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
];"""
|
|||
|
|
|
|||
|
|
with open('my_projects_jsx.txt', 'w', encoding='utf-8') as f:
|
|||
|
|
f.write(jsx_my_projects)
|
|||
|
|
f.write('\n\n')
|
|||
|
|
f.write(jsx_clickable)
|
|||
|
|
|
|||
|
|
print("\n✅ JSX代码已生成到 my_projects_jsx.txt")
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
generate_jsx_code()
|