目标分解总结
2017-01-20 11:57
225 查看
目标分解数据结构
把一个大的目标逐级分解成小目标,如图现在要做的就是这种,目标逐级分解,形成一个任务树.
分成任务表和任务成员表
表结构
任务表task | ||
Id | Int | 主键(自增) |
Sp_id | Int | 服务商id |
Shop_id | Int | 服务商id |
Taskno | Varchar | 任务编号 |
Parent_id | Int | 父任务id |
Title | Varchar | 标题 |
Time_flag | Int | 1:年,2:季度,3:月,4:周 |
Quota | Varchar | 指标类型 |
Quota_name | Varchar | 指标名(冗余字段) |
Start_time | Bigint | 开始时间 |
End_time | Bigint | 结束时间 |
Target | Decimal | 目标值 |
Complete | Decimal | 已完成值 |
Root_id | Int | 根i 4000 d |
Create_time | Bigint | 创建时间 |
Remark | Varchar | 备注 |
任务成员表 | ||
Sp_id | Int | 服务商id |
Shop_id | Int | 门店id |
Emp_id | Int | 人员id |
Task_id | Int | 对应任务表主键 |
Role | Int | 0:创建人,1:负责人,2:参与人 |
Emp_name | Varchar | 人员姓名(冗余字段) |
任务表和任务成员表是多对多关系.
因为涉及到产值等指标的汇报,以及本周本月的统计,又加了一张汇报表
汇报表 | ||
Id | Int | 自增主键 |
Sp_id | Int | 服务商id |
Shop_id | Int | 门店id |
Emp_id | Int | 人员id |
Task_id | Int | 任务id |
Taskno | Varchar | 任务编号 |
Root_id | Int | 任务根id |
Create_time | Bigint | 创建时间 |
Address | Varchar | 汇报地址 |
Reason | Varchar | 汇报原因 |
Report_complete | Decimal | 完成值汇报 |
Remark | Varchar | 备注 |
Img_addr | Varchar | 图片地址 |
Parent_id | Int | 父任务id |
Quota | Varchar | 指标类型 |
任务编号taskno的命名规则:
图 1:taskno的命名规则
根目标的编号始终是10,然后如图依次向下分解,类型为varchar的原因是:数据库数据类型长度限制,这种规则下,int只能支持分解到5级任务,bigint也只能分解到10级,所以给了varchar(100),
Root_id由来
因为会有多个任务树,所以每个任务加了一个”标签”,把所属任务树的根目标的id作为root_id存起来,方便查询根据taskno和root_id就可以查询某任务下边的子任务或者所有任务
例: taskno=1001, root_id=123
查询子任务:
Select * from sp_task where taskno like ‘1001__’ and root_id = 123
查询以该任务为起点的任务树:
Select * from sp_task where taskno like ’1001%’ and root_id = 123
也可以直接查询任务
Select * from sp_task where taskno = ’1001’ and root_id = 123
代码分析
关于taskno
创建根目标(任务),taskno为10,分解任务需要根据父任务的taskno和已有子任务数来算出,代码如下
获取任务树上的所有任务
getTasks的sql类似这样:Select * from sp_task where taskno like
’1001%’ and root_id = 123
getMyTasks是根据任务id,将不同的任务角色封装到同一任务对象中(创建人,负责人,参与人)
树形结构
需要有child,从表中查询出任务树中所有的任务集合后,组装成树形结构
从这里找查到的:http://jiangm.89.blog.163.com/blog/static/127756694201472944052170/
感谢大神
获取一颗任务树的最末端任务
遍历任务,分别收集id和parentId,从id集合中去掉parentId的集合,剩下的id就是最末端任务的id汇报统计
销售产值的统计,规定,只统计任务树最末端任务负责人的销售产值,然后逐级向上叠加.采用定时器的方式,每天20点,统计昨天20点到今天20点最末端任务负责人的销售产值,记录到汇报表,并收集汇报集合.再遍历汇报集合,找到其所在任务树,逐级叠加汇报完成值查询负责人的销售产值此处不展示
收集好汇报集合后,逐级叠加汇报完成值的方法如下;
本周本月的汇报统计
因为每天20点都会统计当天的汇报,所以本周本月的统计只要找到本周一/本月初到当天的起止时间,求和查询即可相关文章推荐
- 终于有人管了,呵呵!现在正在研究目标跟踪小总结一下
- 2007年度总结与2008年度计划--人需要要给自己设点目标,加点压力,才能有所提高.
- 虚拟机Linux Redhat 9与目标开发板进行系统编程方面的问题总结(二)
- 新学期------对于上学期的总结和新的目标
- 总结一下目标检测与跟踪
- HDOJ-1106 分解字符串、转化及排序问题总结[sscanf()函数+strtok()函数+atoi()函数]
- 由做Android程序学会分解总结到的
- VC++.NET 如何更改目标 .Net Framework 的总结
- 制定目标,定期反省总结
- 2007寒假总结,2008目标找人
- 面向对象的设计原则与目标[总结篇]
- 2011目标 及 总结
- 虚拟机Linux Redhat 9与目标开发板进行系统编程方面的问题总结(一)
- 备注:面向对象的设计原则与目标[总结篇]
- 使用面向服务分解技术来满足架构目标
- 目标分解
- 2010目标 及 总结
- 善于从错误中总结,而且还要持之以恒地达到目标
- 虚拟机Linux Redhat 9与目标开发板进行系统编程方面的问题总结
- 2013年个人回顾总结与目标