目标分解总结

目标分解数据结构

把一个大的目标逐级分解成小目标,如图

目标分解总结_第1张图片

现在要做的就是这种,目标逐级分解,形成一个任务树. 分成任务表和任务成员表

表结构

任务表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

id

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的命名规则:

目标分解总结_第2张图片

1:taskno的命名规则

根目标的编号始终是10,然后如图依次向下分解,类型为varchar的原因是:数据库数据类型长度限制,这种规则下,int只能支持分解到5级任务,bigint也只能分解到10,所以给了varchar(100),

 

Root_id由来

因为会有多个任务树,所以每个任务加了一个”标签”,把所属任务树的根目标的id作为root_id存起来,方便查询

 

根据tasknoroot_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

创建根目标(任务),taskno10,

分解任务需要根据父任务的taskno和已有子任务数来算出,代码如下

目标分解总结_第3张图片

获取任务树上的所有任务

目标分解总结_第4张图片

getTaskssql类似这样:Select * from sp_task where taskno like ’1001%’ and root_id = 123

getMyTasks是根据任务id,将不同的任务角色封装到同一任务对象中(创建人,负责人,参与人)

树形结构

需要有child,


目标分解总结_第5张图片

从表中查询出任务树中所有的任务集合后,组装成树形结构


目标分解总结_第6张图片

从这里找查到的:http://jiangm.89.blog.163.com/blog/static/127756694201472944052170/

感谢大神


获取一颗任务树的最末端任务

遍历任务,分别收集idparentId,id集合中去掉parentId的集合,剩下的id就是最末端任务的id

目标分解总结_第7张图片

汇报统计

销售产值的统计,规定,只统计任务树最末端任务负责人的销售产值,然后逐级向上叠加.采用定时器的方式,每天20,统计昨天20点到今天20点最末端任务负责人的销售产值,记录到汇报表,并收集汇报集合.再遍历汇报集合,找到其所在任务树,逐级叠加汇报完成值

 

查询负责人的销售产值此处不展示

收集好汇报集合后,逐级叠加汇报完成值的方法如下;

目标分解总结_第8张图片



本周本月的汇报统计

因为每天20点都会统计当天的汇报,所以本周本月的统计只要找到本周一/本月初到当天的起止时间,求和查询即可






你可能感兴趣的:(JAVA)