热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分布式开发医疗挂号系统数据字典模块web前后端怎么实现

这篇文章主要介绍了分布式开发医疗挂号系统数据字典模块web前后端怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家

这篇文章主要介绍了分布式开发医疗挂号系统数据字典模块web前后端怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇分布式开发医疗挂号系统数据字典模块web前后端怎么实现文章都会有所收获,下面我们一起来看看吧。

    分布式开发医疗挂号系统数据字典模块web前后端怎么实现

    数据字典可以管理系统常用的分类数据或 固定数据,例如:省市区三级联动数据、民族数据、行业数据、学历数据等。由于我们的 分布式医疗挂号系统 大量使用这种数据,所有我们要做一个数据管理,方便管理系统数据,并且在一般的系统中基本都会做数据管理。

    数据字典主要功能:使系统中的各项数据变的更加的严格,这样有利于降低因为数据问题而导致的bug。

    一、后端接口

    1.数据库表设计

    数据字典的数据库表字段和对应的实体类的属性应该是一一对应的,但要注意下面两个地方:

    添加上@TableLogic表示为逻辑删除,后续删除操作会自动变为修改操作。为了实现页面上单击展开子节点的功能,额外使用@TableField(exist = false)加入ha’s’Children属性。

    分布式开发医疗挂号系统数据字典模块web前后端怎么实现

    2.编写三层调用

    根据下图总结的三层调用关系,我们需要分别编写好Controlller层、Service层、Mapper层的代码。

    分布式开发医疗挂号系统数据字典模块web前后端怎么实现

    Controller层

    通过url:/admin/cmn/dict/findChildData/{id} 访问资源到达控制层后,控制层调用服务层的findChildData(Long id)方法。

    @Api(tags = "数据字典接口")
    @RestController
    @RequestMapping("/admin/cmn/dict")
    @CrossOrigin
    public class DictController {
        @Autowired
        private DictService dictService;
        @ApiOperation(value = "根据id查询子数据列表")
        @GetMapping("findChildData/{id}")
        public Result findChildData(@PathVariable Long id) {
            List list = dictService.findChildData(id);
            return Result.ok(list);
        }
    }
    Service层

    在服务层根据id查询子数据列表,调用数据层的查询方法查到子数据集合后,将集合遍历,遍历过程中为每条记录的hasChildren属性赋值。具体业务逻辑详见下面的代码:

    Service接口继承IService接口:

    public interface DictService extends IService {
        /**
         * 根据id查询子数据列表
         * @param id
         * @return list
         */
        List findChildData(Long id);
    }

    Service实现类继承ServiceImpl类:

    @Service
    public class DictServiceImpl extends ServiceImpl implements DictService {
        /**
         * 根据id查询子数据列表
         * @param id
         * @return list
         */
        @Override
        public List findChildData(Long id) {
            QueryWrapper queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("parent_id", id);
            List dictList = baseMapper.selectList(queryWrapper);
            for (Dict dict : dictList) {
                // 得到每一条记录的id值
                Long dictId = dict.getId();
                // 调用hasChildren方法判断是否包含子节点
                boolean flag = this.hasChildren(dictId);
                // 为每条记录设置hasChildren属性
                dict.setHasChildren(flag);
            }
            return dictList;
        }
        /**
         * 判断id下面是否有子结点
         * @param id
         * @return true:有子结点,false:无子结点
         */
        private boolean hasChildren(Long id) {
            QueryWrapper queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("parent_id", id);
            Integer count = baseMapper.selectCount(queryWrapper);
            return count > 0;
        }
    }
    Mapper层

    Mapper接口继承了BaseMapper接口。由于服务层调用的方法是BaseMapper自带的方法,所以在数据层,我们并没有给出具体的方法。

    public interface DictMapper extends BaseMapper {
    }

    由于在数据字典模块中配置类、配置文件不是我们主要研究的内容,所以这里不再给出,具体可参考github仓库代码。至此,数据字典模块的后端接口已经完成:

    分布式开发医疗挂号系统数据字典模块web前后端怎么实现

    二、前端页面

    1.添加路由

    由于数据管理中的数据字典是一个全新的页面,我们可以将数据字典的路由设置为/cmn/list,路由到/cmn/list后,会跳转到/views/dict/list.js资源。

      // 数据字典路由
      {
        path: &#39;/cmn&#39;,
        component: Layout,
        redirect: &#39;/cmn/list&#39;,
        name: &#39;数据管理&#39;,
        meta: { title: &#39;数据管理&#39;, icon: &#39;example&#39; },
        // 如果只有一级会仅显示子按钮,添加alwaysShow=true 可以使父按钮也显示
        alwaysShow:true,
        children: [
          {
            path: &#39;list&#39;,
            name: &#39;数据字典&#39;,
            component: () => import(&#39;@/views/dict/list&#39;),
            meta: { title: &#39;数据字典&#39;, icon: &#39;table&#39; }
          }
        ]
      },

    2.添加跳转页面

    路由后,跳转到/views/dict/list.js页面,下面给出此页面的逻辑片段代码和其调用的api接口代码:

    分布式开发医疗挂号系统数据字典模块web前后端怎么实现

    3.页面表格渲染

    表格渲染我们使用elementUI提供开发文档:树形数据与懒加载表格组件。

    修改后的代码如下:

    :data=“list”

    查出来的数据。

    :load=“getChildrens”

    加载getChildrens方法。

    :tree-props="{ children: ‘children’, hasChildren: ‘hasChildren’ }"

    树的属性值,通过属性值来判断hasChildren中的值是true还是false。

    
          
          
            
              {{ row.dictCode }}
            
          
          
            
              {{ scope.row.value }}
            
          
          
            
              {{ scope.row.createTime }}
            
          
        
      

    三、标准Debug流程

    目前数据字典模块的前后端已经开发完成了,但是此刻如果允许程序,页面并不会加载到后端传过来的数据。因为不同的访问请求访问到不同的服务器中,我们为数据字典模块设置端口是8202,而前端config/dev.env.js中,配置的是之前医院设置模块中的8201端口。

    我们可以加入Nginx暂时解决,后期也会加入路由来替换掉Nginx,不过仅为了展示效果,这里简单的将前端 config/dev.env.js 中的端口改为和数据字典模块8202统一的端口。关于Nginx和添加统一路由会在后续的文章中进行介绍。

    关于“分布式开发医疗挂号系统数据字典模块web前后端怎么实现”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“分布式开发医疗挂号系统数据字典模块web前后端怎么实现”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程笔记行业资讯频道。


    推荐阅读
    • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
    • Spring Boot 实战(一):基础的CRUD操作详解
      在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
    • Spring框架入门指南:专为新手打造的详细学习笔记
      Spring框架是Java Web开发中广泛应用的轻量级应用框架,以其卓越的功能和出色的性能赢得了广大开发者的青睐。本文为初学者提供了详尽的学习指南,涵盖基础概念、核心组件及实际应用案例,帮助新手快速掌握Spring框架的核心技术与实践技巧。 ... [详细]
    • 深入解析Tomcat:开发者的实用指南
      深入解析Tomcat:开发者的实用指南 ... [详细]
    • 本课程详细介绍了如何使用Python Flask框架从零开始构建鱼书应用,涵盖高级编程技巧和实战项目。通过视频教学,学员将学习到Flask的高效用法,包括数据库事务处理和书籍交易模型的实现。特别感谢AI资源网提供的课程下载支持。 ... [详细]
    • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
    • 通过优化模板消息机制,本研究提出了一种高效的信息化推送方案。该方案利用获取的访问令牌(access token)和指定的模板ID,实现了精准且快速的信息推送,显著提升了用户体验和信息传递效率。具体实现中,通过调用相关API接口,确保了消息的准确性和及时性,为用户提供更加便捷的服务。 ... [详细]
    • 在第六章中,我们将深入探讨MySQL中的多表查询技术,包括联结查询和子查询。联结查询通过将两个或多个表进行连接,基于连接条件生成结果集。常见的联结类型有内联结、外联结和全外联结。交叉联结(CROSS JOIN)虽然使用较少,但其原理是生成所有可能的组合,类似于笛卡尔积的概念。此外,子查询则是在一个查询语句中嵌套另一个查询,用于获取更复杂的数据集。本章将通过实例详细讲解这些查询方法的应用和优化技巧。 ... [详细]
    • 本文深入探讨了 iOS 开发中 `int`、`NSInteger`、`NSUInteger` 和 `NSNumber` 的应用与区别。首先,我们将详细介绍 `NSNumber` 类型,该类用于封装基本数据类型,如整数、浮点数等,使其能够在 Objective-C 的集合类中使用。通过分析这些类型的特性和应用场景,帮助开发者更好地理解和选择合适的数据类型,提高代码的健壮性和可维护性。苹果官方文档提供了更多详细信息,可供进一步参考。 ... [详细]
    • 解决基于XML配置的MyBatis在Spring整合中出现“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”问题的方法
      在将Spring与MyBatis进行整合时,作者遇到了“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”的问题。该问题主要出现在使用XML文件配置DAO层的情况下,而注解方式配置则未出现类似问题。作者详细分析了两个配置文件之间的差异,并最终找到了解决方案。本文将详细介绍问题的原因及解决方法,帮助读者避免类似问题的发生。 ... [详细]
    • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
    • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
    • 本文详细解析了如何使用 jQuery 实现一个在浏览器地址栏运行的射击游戏。通过源代码分析,展示了关键的 JavaScript 技术和实现方法,并提供了在线演示链接供读者参考。此外,还介绍了如何在 Visual Studio Code 中进行开发和调试,为开发者提供了实用的技巧和建议。 ... [详细]
    • 微信支付授权目录配置详解及操作步骤
      在使用微信支付时,若通过WeixinJSBridge.invoke方法调用支付功能,可能会遇到“当前页面URL未注册”的错误提示,导致get_brand_wcpay_request:fail调用微信JSAPI支付失败。为解决这一问题,需要正确配置微信支付授权目录,确保支付页面的URL已成功注册。本文将详细介绍微信支付授权目录的配置步骤和注意事项,帮助开发者顺利完成支付功能的集成与调试。 ... [详细]
    • 在Spring与Ibatis集成的环境中,通过Spring AOP配置事务管理至服务层。当在一个服务方法中引入自定义多线程时,发现事务管理功能失效。若不使用多线程,事务管理则能正常工作。本文深入分析了这一现象背后的潜在风险,并探讨了可能的解决方案,以确保事务一致性和线程安全。 ... [详细]
    author-avatar
    RaymondKit
    这个家伙很懒,什么也没留下!
    Tags | 热门标签
    RankList | 热门文章
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有