您的位置:首页 > 其它

目标分解总结

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点都会统计当天的汇报,所以本周本月的统计只要找到本周一/本月初到当天的起止时间,求和查询即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: