把所属单位表 company 从 organizations 中独立出来
Created by: hotlong
base规则
- company_id 字段直接改为 reference_to: company
数据迁移
- organizations 中已设置的公司级组织,自动保存到 company 表,重点是 _id 要存过去。
创建space
- 初始化 organization 表时,自动初始化一条 company 记录,对应到 organizations 根节点,_id也要相同。
company 表
- 加入到 standard-objects
- company的company_id值设置为company本身_id值,而且永远等于其本身_id值
- 新增 organization 字段,只读,表示该单位在组织结构图中的对应节点。目前组织是自动创建的,所以直接等于 _id
- 新增单位时,自动在根节点创建对应的组织节点与之关联,同时创建的组织company_id应该指向当前新增的单位,_id应当相同, 组织的is_company值要设置为true。
- company 增加一个 action,“更新组织”,点击弹出确认框:“此操作将把组织结构中对应节点(及所有下属节点)的组织所属单位更新为本单位,组织中的人员所属单位也都更新为本单位。是否继续?”,
- 如果同意,则更新 organizations 表,该节点及所有下属节点的company_id。
- 并重算相应space_users 的 company_id, company_ids,根据对应 organization, organizations
- 修改单位关联组织时,什么都不做,由用户自己操作上述“更新组织”来手动更新copmany_id值
organizations规则
- organizations 表新增 company_id 字段,只读
- organizations 表 is_company 字段只读。
- organizations 表 is_group 字段作废。如果某部门是群组,不设置 company 属性即可。
- 当用户添加到组织时,自动设置space_user.company_id = organization.company_id
- 新增组织时,自动继承上级组织的 company_id
- 修改组织时,不处理 company_id
- 单位级组织禁止删除,删除单位时,必须先确保单位级组织没有下级组织。删除单位并同步删除单位级组织
- 增加新脚本规则:is_group为true及is_company为true的organizations应该更新is_company为false(is_group值保持不变,方便执行migrate down)
space_users规则
- company_id, company_ids 指向 company 表。
- 编辑所属组织时,同时重新计算company_id, company_ids
选人选组控件
- 寻找单位对应的组织根节点的规则变更为 company.organization