系统基础模块之通用字典项目管理

我们在很多系统中,往往需要维护很多字典项目,一般的字典项目包含有一个大类名称、字典项目名称、字典值、排序、编辑者、编辑时间等字段,这些内容往往大同小异,如在车辆管理中,我们可能需要维护:车辆类型、车辆品牌、车辆用途、路途类别、用车评价、车辆状态等等信息,这些是很简单的数据,用来给业务功能使用的,是一个下拉列表形的数据,如果我们为每个这样的简单类型都创建一个表的话,那么有以下坏处:

1)  如果业务模块很多,就会产生很多这样的表,看起来不雅,维护也不方便,增加工作量。

2)  会产生很多页面代码(你需要维护界面内容展示和录入),也是看起来不雅,不方便维护,增加工作量。

3)   代码中调用处理也不好,记不住哪个是具体的字典信息了,太多。

以上总结一句话,就是做重复工作,就算有一键生成代码的工具,也是不好的。

如果采用一个公用的字典管理模块能够解决以上问题,那么整个世界就清净了,一句话,简单。

好,那我们看看如何实现以上功能的。首先看看表的设计。

字典大类DictType表(就是按业务分类的意思,如上面的车辆管理是一类,可能还有飞机管理之类的,呵呵)

字典数据项目DictData表,就是指定业务下有多少个字典项目,每个项目下面的名称和对应的值是什么,排序是什么等信息。

对这两个表生成相应的处理页面如下所示。(第一个图是大类管理、当点击字典类型名称进行指定类型的字典项目管理,也就是下面第二个图。

完成了这个字典大类和字典明细项目的基本信息管理后,今后只要有新的需要,之需要增加项目的大类和具体的业务字典项目即可。之前我的文章有介绍,整个平台的菜单是动态配置的,因此,我们在业务子菜单中增加相应的菜单管理具体的项目即可。

上面我们看到,具体字典大类下的明细字典项目,我们只需要给出相应的连接即可,连接有一个TypeID就是具体的类型ID,根据这个ID,我们就知道目前的管理类别是什么了。

这样页面的字典信息管理完成了,那么我们在具体的项目中如何使用它呢,看了下面的代码就会觉得很简单了。

其实字典项目的使用无非有两个,一个是根据大类获取对应的下拉列表项目,一个根据制定的项目获取对应的字典值。如下面两个函数就是典型的应用。

/// <summary>
/// 获得选择处理人
/// </summary>
/// <returns>ListItem[]</returns>
public static ListItem[] GetListItem_MaySelProc()
        {
return SystemCommon.GetDictByDictType("选择处理人");
        }
/// <summary>
/// 转换选择处理人的名称
/// </summary>
/// <returns></returns>
public static string GetMaySelProcString(string intSelectProc)
        {
return BLLFactory<DictData>.Instance.GetDictName("选择处理人", intSelectProc);
        }

具体调用的业务类部分代码如下所示:

/// <summary>
/// 根据字典类型名称获取所有该类型的字典列表集合(Key为名称,Value为值)
/// </summary>
/// <param name="dictType">字典类型名称</param>
/// <returns></returns>
public Dictionary<string, string> GetDictByDictType(string dictTypeName)
        {
            IDictData dal = baseDal as IDictData;
return dal.GetDictByDictType(dictTypeName);
        }
/// <summary>
/// 根据字典类型名称和字典Value值(即字典编码),解析成字典对应的名称
/// </summary>
/// <param name="dictTypeName">字典类型名称</param>
/// <param name="dictValue">字典Value值,即字典编码</param>
/// <returns>字典对应的名称</returns>
public string GetDictName(string dictTypeName, string dictValue)
        {
            IDictData dal = baseDal as IDictData;
return dal.GetDictName(dictTypeName, dictValue);
        }

剩下的部分就是框架代码的部分了,根据一定的条件拿到对应的列表数据操作。这里不再赘述。 如果需要了解业务层和数据访问层的具体代码,可以和我联系,或者自己实现也不是难事。

本文只是提供了一个解决的思路,相信各位大牛如要实现上面的功能也是小Case的了。

时间: 2024-10-27 04:54:41

系统基础模块之通用字典项目管理的相关文章

一、系统基础信息模块(cpu,内存,ip,dns)模块

一.系统基础信息模块(cpu,内存,ip,dns)模块 1.系统性能信息模块psutil a.(cpu信息) # yum -y install python-devel # wget https://pypi.python.org/packages/source/p/psutil/psutil-2.0.0.tar.gz --no-check-certificate # tar -zxvf psutil-2.0.0.tar.gz # cd psutil-2.0.0.tar.gz # python

linux系统基础优化

1.Linux系统基础优化 一.关闭SELinux功能 Selinux是什么? 安全工具,控制太严格,生产环境不用它,使用其他安全手段. 简介: SELinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制. Security-Enhanced Linux (SELinux)由以下两部分组成: 1) Kernel SELinux模块(/kernel/security/selinux) 2) 用户态工具 SELinux是一个安全体系结构,它通过LSM(Linux Security

企业级服务器设计与实现经验之插件系统基础篇

最初之所以要采用插件的形式进行开发,主要是为了解决功能服务的“热插拔”问题,在决定采用“框架+插件”的方式进行设计后,我们就更进一步,打算将一个个可以分割开来的拥有完整功能的组件都做成插件的形式,并且使同类型的插件的接口兼容,这样在以后需要改变时就可以灵活的进行替换.比如,将通信部分做成通信插件.日志记录部分做成日志插件等等. 首先,我们要弄清楚,什么是插件?我给出了一个定义,可能有失偏颇. 插件又称为扩展,是一种特殊的组件,用于增强和扩展基本框架的行为能力.插件和框架的通信协议是一组接口,插件

处女作—关于系统基础设计问题

背景 最近因为公司要新做HR系统,也因为比较赶时间,所以工资这一块打算到二期再做,一期,主要的工作是把HR的人员调动和人员信息以及一些基本的流程给完善好.之前公司是在外面买了一个HR系统,这个系统设计的比较大的缺点是:一个人,不能有多个岗位,也不能有多个角色,更没法指定哪个是某个部门的负责人,只能以他的岗位是“负责人”来区分他是这个部门的负责人,之前在做权限系统的时候,因为人员的问题,花了好长的时间进去.今天我们主要讲的还是人员基础信息的问题. 需求 首先,现已在运行的系统,所有数据均是以账户(

Ansible 安装 及 基础模块介绍

ansible 介绍 Ansible基于Python开发,集合了众多优秀运维工具的优点,实现了批量运行命令部署程序.配置系统等功能.默认通过SSH协议进行远程命令执行或下发配置,无需部署任何客户端代理软件,从而使得自动化环境部署变得更加简单.可同时支持多台主机并行管理,使得管理主机更加便捷. ansible 安装 在管理端与 被管理端都要安装 yum install -y epel-release ##安装epel源 yum install ansible -y ansible --versio

C# 轻量级系统基础架构 (MVP MEF + EF6)

0 综述 1 MVP各模块规范 1.1 实体模块规范 1.1.1 命名规范 实体类封装到单独的DLL中,DLL命名遵循<ProjectName>.DataEntity.数据库实体类名遵循:数据库表名去掉复数后缀,如"s"."es"等(数据库表的名称必须是名词复数). 1.1.2 架构规范 实体模块中必须包含一个泛型实体接口,供所有数据实体类实现该接口,该接口所继承接口亦为各实体类所统一实现(例如该接口实现自IEquatable<T>),该接口

综合案例-整合办公系统后台模块

综合案例-整合办公系统后台模块 1.配置虚拟主机(如www.think.com) 2.配置hosts文件并重启Apache服务器 3.复制ThinkPHP核心文件到项目的目录中(如think目录) 4.创建Zend工程 5.创建index.php入口文件(编写四步走) 6.划分项目前后台模块 设置配置文件(./Application/Common/Conf/config.php) 7.创建Public控制器并定义login方法 编写控制器三步走 8.设置URL调度模式 9.复制模板资源到Publ

Linux系统基础(二)

            Linux系统基础(二) 一.linux系统结构 1.linux系统结构是倒树型 2. /bin##二进制可执行文件也就是系统命令 /sbin##系统管理命令存放位置 /boot##启动分区,负责系统启动 /dev##设备管理文件 /etc##大多数系统管理文件 /home##普通用户的家目录 /lib##32位系统库文件存放位置 /lib64##64位系统库文件存放位置 /media##系统临时设备挂载点 /mnt##系统临时设备挂载点 /run##系统临时设备挂载点

让你提前认识软件开发(52):系统某模块工作原理详述

第3部分 软件研发工作总结 系统某模块工作原理详述 [文章摘要] 某模块在系统中占有非常重要的地位,该模块能够对符合条件的动态信箱进行清理.本模块直接清理的信箱包括:过期动态信箱.冷冻信箱和空动态信箱:删除非动态信箱由本模块发送消息到其它模块完成. 本文对该模块的工作原理的详细介绍,为相关模块的开发和测试提供了有益的参考,同时也有利于现场人员对本模块进行维护. [关键词] 系统  模块  数据库  流程 1. 本模块删除的信箱类型 本模块删除的信箱类型如图1所示: 图1 本模块删除的信箱类型 2