能力库开发思路整理

能力库界面如下:

相关数据库表:

 1 CREATE TABLE `base_ability` (
 2   `abillty_id` varchar(36) NOT NULL DEFAULT '' COMMENT '主键',
 3   `ability_code` varchar(20) DEFAULT NULL,
 4   `ability_name` varchar(20) DEFAULT NULL COMMENT '能力编号',
 5   `ability_name_desc` varchar(255) DEFAULT NULL COMMENT '能力名称',
 6   `orderby` int(11) DEFAULT NULL,
 7   `status` int(11) DEFAULT '1',
 8   PRIMARY KEY (`abillty_id`),
 9   KEY `ability_code` (`ability_code`) USING BTREE
10 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='能力项表';
11 
12 CREATE TABLE `base_ability_layer` (
13   `ability_layer_id` varchar(36) NOT NULL DEFAULT '' COMMENT '主键id',
14   `ability_code` varchar(36) DEFAULT '' COMMENT '能力项主键id',
15   `ability_dim` varchar(255) DEFAULT '' COMMENT '维度',
16   `ability_layer_code` varchar(255) DEFAULT '' COMMENT '层级代码',
17   `ability_layer_desc` varchar(5000) DEFAULT '' COMMENT '层级描述',
18   `evaluation_library_id` varchar(36) DEFAULT '2',
19   PRIMARY KEY (`ability_layer_id`),
20   KEY `ability_code` (`ability_code`,`ability_layer_code`) USING BTREE
21 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='能力项层级';
22 
23 CREATE TABLE `sys_dictionary` (
24   `dictionary_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '数字字典id',
25   `name` varchar(20) DEFAULT NULL COMMENT '数据字典名称',
26   `code` varchar(20) NOT NULL COMMENT '数据字典code',
27   `type` varchar(50) NOT NULL COMMENT '数据字典类型',
28   `dictionary_order` int(11) DEFAULT '1' COMMENT '排序',
29   `status` int(11) DEFAULT '-1' COMMENT '状态 0不显示前台,1显示前台',
30   `remark` varchar(100) DEFAULT NULL COMMENT '备注',
31   `edit` tinyint(4) DEFAULT '0' COMMENT '是否允许修改 1允许,0否',
32   `effective` tinyint(1) DEFAULT '1' COMMENT '1启用0删除',
33   PRIMARY KEY (`code`,`type`),
34   UNIQUE KEY `dictionary_id` (`dictionary_id`)
35 ) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8 COMMENT='系统数据字典表';
View Code

 base_ability 能力项表

base_ability_layer 能力项等级表

基本变量表sys_dictionary:

思路:1.一个能力项对应若干个等级的时候,等级信息应该用List保存,List中每个元素为一个实体类,保存等级相关信息,尽量避免用Map,防止增加字段无法处理。

2.当一个SQL语句不能顺利构造出需要的数据结构,那就使用两条,使用两条逻辑更清晰。在Service层进行数据的处理,本例就一个SQL语句查询查询能力项公用信息,一个SQL语句查询能力项的等级信息,再在Service层进行整理在一起。

3.此次SQL语句查询思路特殊,需要将在base_ability_layer表里没出现的等级也要显示在列表中,等级描述为‘/’。按照惯例写SQL的思路,base_ability肯定要先和base_ability_layer关联,在与sys_dictionary关联,但是这样的话得到的结果就只有ability已有的等级而没有的等级不会返回空,无论怎么外联接也无济于事。这次要反其道而行之,base_ability要先和sys_dictionary关联,在与base_ability_layer关联,这样就能达到要求。虽然只是很简单的一个变化,但是困扰自己半天的难题突然开窍的感觉还是很奇妙的!

posted @ 2017-03-16 22:15  BrightFeng  阅读(337)  评论(0)    收藏  举报