首页 > 代码库 > 能力库开发思路整理

能力库开发思路整理

能力库界面如下:技术分享

相关数据库表:

技术分享
 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关联,这样就能达到要求。虽然只是很简单的一个变化,但是困扰自己半天的难题突然开窍的感觉还是很奇妙的!

能力库开发思路整理