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

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

 

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-08-01 04:12:24

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

《嵌入式 Linux C 语言应用程序设计(修订版)》——第 1 章 嵌入式系统基础知识 1.1 嵌入式系统概述

第 1 章 嵌入式系统基础知识 本章目标 嵌入式系统产业作为朝阳产业正在蓬勃发展,优秀的操作系统Linux也凭借其高效.开放等优势在嵌入式领域占据了一席之地. 本章首先带领读者走近嵌入式系统,从整体上把握什么是嵌入式系统以及如何开发嵌入式系统的应用程序.通过本章的学习,读者将会掌握如下内容: 1.1 嵌入式系统概述 正如尼葛洛庞帝在2001年预言的一样,如今,嵌入式系统已成为最为热门的领域之一.从市场观点来看,PC已经从高速增长时期进入平稳发展时期,其年增长率由20世纪90年代中期的35%逐年下

python 基础(一)字典

python中的字典类似于java中的map,是一个key-value的对象类型,无序的,不可重复的.格式类似于JSON,可以嵌套,也可以包含数组列表 dict = { "key1":"value1", "key2":"value2", "key3":"value3", .... } 常用用法 dict["key"]#取值 dict["key"]=

《嵌入式 Linux C 语言应用程序设计(修订版)》一第1章 嵌入式系统基础知识1.1 嵌入式系统概述

第 1 章 嵌入式系统基础知识 嵌入式 Linux C 语言应用程序设计(修订版)本章目标 嵌入式系统产业作为朝阳产业正在蓬勃发展,优秀的操作系统Linux也凭借其高效.开放等优势在嵌入式领域占据了一席之地. 本章首先带领读者走近嵌入式系统,从整体上把握什么是嵌入式系统以及如何开发嵌入式系统的应用程序.通过本章的学习,读者将会掌握如下内容: anniu嵌入式系统的基本概念 anniu嵌入式系统的特点以及与PC的区别 anniu嵌入式系统的现状与发展前景 anniu嵌入式系统的硬件架构 anniu

《Android Studio应用开发实战详解》——第1章,第1.2节Android系统基础

1.2 Android系统基础 Android一词最早出现于法国作家Auguste Villiers de l'Isle-Adam在1886年发表的科幻小说<未来夏娃>中,他将外表像人的机器起名为Android.本书的主角就是Android系统,在本节将简要介绍Android系统的诞生和发展历程. 1.2.1 Android系统的发展现状 从2008年HTC和Google联手推出第一台Android手机G1开始,在2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一

电子商城-电子商务系统物流模块是怎么做的?

问题描述 电子商务系统物流模块是怎么做的? 小弟最近在做一个电子商务系统开发的项目,对物流模块的设计开发无从下手,不知道淘宝网的物流模块是怎么开发? 求知道的大神,不吝赐教! 解决方案 嗯,我给你介绍几个模块方向,你自己可以看一看.模块方向有:1.地址信息拆分,自动获取合适第三方:2.运费自动生成系统:3.数据统计分析(具体需要哪方面的数据分析,求指点):4.货物追踪模块: 5.其他比较仓库管理呀,财务管理等. 希望对你有帮助

《精通移动App测试实战:技术、工具和案例》一第1章 Android系统基础内容介绍1.1 Android系统介绍

第1章 Android系统基础内容介绍 精通移动App测试实战:技术.工具和案例工欲善其事必先利其器,因为本书主要是针对移动平台讲解测试方面的内容,所以对移动平台目前主流的Android系统有一个了解十分必要,下面我们就一起来了解一下这个操作系统相关的知识内容. 1.1 Android系统介绍 Android一词的原意指"机器人",同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成. Androi

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

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

高分了,回答满意者再加分。问:SAP系统的模块与其解决方案有什么关系

问题描述 请大家看一下这个网页,它很详细的介绍了SAP系统的模块与其解决方案.http://baike.baidu.com/view/8784.htmSAP系统的模块有FI,CO,AM,SD等,其解决方案有商务智能,客户关系管理,企业信息管理,企业绩效管理等.如果SAP给一个企业只做了客户关系管理解决方案的话,那么SAP系统似乎就不需要FI,CO,AM,SD这些模块了.那到底SAP系统的模块与其解决方案有什么关系呢?是不是某个具体的方案只是用到了SAP系统的部分模块?期待高手解答. 解决方案 解

node.js基础模块http、网页分析工具cherrio实现爬虫_node.js

一.前言       说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http.网页分析工具cherrio. 使用http直接获取url路径对应网页资源,然后使用cherrio分析. 这里我主要学习过的案例自己敲了一遍,加深理解.在coding的过程中,我第一次把jq获取后的对象直接用forEach遍历,直接报错,是因为jq没有对应的这个方法,只有js数组可以调用. 二.知识点     ①:superagent抓去网页工具.我暂时未用到.     ②:cherrio