yycg之药品目录导出(二)+系统参数配置

2024-01-15 13:30

本文主要是介绍yycg之药品目录导出(二)+系统参数配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.1     实现药品目录导出

1.1.1     需求:

药品目录导出功能,使用人:监督单位、医院、供货商

 

药品目录添加/导入/删除:监督单位

 

操作步骤:

 

1.1.2     分析导出方法

 

分析一个技术,需要进行技术预研,确定使用XSSF导出excel文件。

 

确定采用自动刷新:

SXSSFWorkbook wb = new SXSSFWorkbook(XXXX);(自动刷新)

XXXX:保持内存中有XXXX条记录,超过部分写入磁盘

 

 

对XSSF导出excel进行封装,写一个封装类,方便开发使用

 

ExcelExportSXXSSF.java

 

工具类的使用方法:使用util工程的ExcelExportSXXSSF类执行导出:

测试代码如下:

 

//导出文件存放的路径,并且是虚拟目录指向的路径

      StringfilePath = "d:/upload/linshi/";

      //导出文件的前缀

      StringfilePrefix="ypxx";

      //-1表示关闭自动刷新,手动控制写磁盘的时机,其它数据表示多少数据在内存保存,超过的则写入磁盘

      int flushRows=100;

     

      //定义导出数据的title

      List<String>fieldNames=newArrayList<String>();

      fieldNames.add("流水号");

      fieldNames.add("通用名");

      fieldNames.add("价格");

     

      //告诉导出类数据list中对象的属性,让ExcelExportSXXSSF通过反射获取对象的值

      List<String>fieldCodes=newArrayList<String>();

      fieldCodes.add("bm");//药品流水号

      fieldCodes.add("mc");//通用名

      fieldCodes.add("price");//价格

     

     

     

      //注意:fieldCodesfieldNames个数必须相同且属性和title顺序一一对应,这样title和内容才一一对应

     

     

      //开始导出,执行一些workbooksheet等对象的初始创建

      ExcelExportSXXSSFexcelExportSXXSSF = ExcelExportSXXSSF.start(filePath, "/upload/",filePrefix, fieldNames, fieldCodes, flushRows);

     

      //准备导出的数据,将数据存入list,且list中对象的字段名称必须是刚才传入ExcelExportSXXSSF的名称

      List<Ypxx>list = newArrayList<Ypxx>();

     

      Ypxxypxx1 = newYpxx("001","青霉素", 5);

      Ypxxypxx2 = newYpxx("002","感冒胶囊", 2.5f);

      list.add(ypxx1);

      list.add(ypxx2);

     

      //执行导出

      excelExportSXXSSF.writeDatasByObject(list);

      //输出文件,返回下载文件的http地址

      Stringwebpath = excelExportSXXSSF.exportFile();

     

      System.out.println(webpath);

 

操作步骤:

1、  将导出的文件的标题封装在List<String>

2、  将导出的数据对象的字段封装在List<String>,注意:字段和标题必须对象

3、  准备好导出文件存储的物理路径(服务器的物理路径)

4、  准备导出文件浏览的虚拟路径,此路径在tomcat配置虚拟目录

5、  调用ExcelExportSXXSSF的start方法开始导出

6、  调用 excelExportSXXSSF.writeDatasByObject方法将list数据传入,这时开始导出数据

7、  调用excelExportSXXSSF.exportFile();向磁盘写入文件

8、  通过excelExportSXXSSF.getFileAllPath()得导出文件的浏览地址

 

 

1.1.3     药品目录导出实现

 

l  Dao:

根据查询条件查询药品目录信息,确定查询内容:

 

ID 流水号   通用名  剂型  规格  转换系数   生产企业   商品名称   中标价  交易状态

 

 

使用逆向工程生成ypxx的mapper及po

指定列生成的java类型。将中标价格的类型转换为float

<table schema="" tableName="ypxx">

         <!-- 指定字段生成类型 -->

         <columnOverride column="zbjg" javaType="java.lang.Float"/>

      </table>

 

自定义mapper 

创建YpxxMapperCustom.xml文件

Sql:

selectid,

       bm,

       mc,

       jx,

       gg,

       zhxs,

       scqymc,

       spmc,

       zbjg,

       jyzt,

       (select info

          from dictinfo

         where dictinfo.dictcode = ypxx.jyzt

           and dictinfo.typecode = '003') jyztmc

  from ypxx

where ypxx.bm=''(抽取sql 代码)

 

主查询表:ypxx

关联查询表:通过数据字典明细表查询交易状态对应的名称

 

public interfaceYpxxMapperCustom {

   //药品目录查询

   public List<YpxxCustom>findYpxxList(YpxxQueryVo ypxxQueryVo)

         throws Exception;

}

 

l  Service  

接口和mapper 一样

接口功能:药品目录查询

接口参数:查询条件

   //查询药品目录

   @Override

   public List<YpxxCustom>findYpxxList(YpxxQueryVo ypxxQueryVo)

         throws Exception {

 

      return ypxxMapperCustom.findYpxxList(ypxxQueryVo);

   }

 

 

l  action

 

两个方法

导出页面展示;

//导出药品页面展示

   @RequestMapping("/exportYpxx")

   public String exportYpxx(Modelmodel)throwsException{

     

      //药品状态

      List<Dictinfo>jyztlist =systemConfigService.findDictinfoByType("003");

      //药品类别

      List<Dictinfo>yplblist =systemConfigService.findDictinfoByType("001");

     

      model.addAttribute("jyztlist",jyztlist);

      model.addAttribute("yplblist",yplblist);

     

      return "/business/ypml/exportYpxx";

   }

导出功能提交:

调用封装类方法导出excel。

//导出数据提交

   @RequestMapping("/exportYpxxSubmit")

   public @ResponseBody SubmitResultInfoexportYpxxSubmit(YpxxQueryVo ypxxQueryVo)throws Exception{

      // 调用封装类执行导出

 

            // 导出文件存放的路径,并且是虚拟目录指向的路径

            //String filePath = "D:/java/tomcat/upload/temp/";

            //改为从系统参数配置表获取参数值

            StringfilePath = systemConfigService.findBasicinfoById("00301").getValue();

            // 导出文件的前缀

            StringfilePrefix = "ypxx";

            // -1表示关闭自动刷新,手动控制写磁盘的时机,其它数据表示多少数据在内存保存,超过的则写入磁盘

            int flushRows = 100;

 

            // 定义导出数据的title

            List<String>fieldNames = newArrayList<String>();

            fieldNames.add("流水号");

            fieldNames.add("通用名");

            fieldNames.add("剂型");

            fieldNames.add("规格");

            fieldNames.add("转换系数");

            fieldNames.add("生产企业");

            fieldNames.add("商品名称");

            fieldNames.add("中标价格");

            fieldNames.add("交易状态");

 

            // 告诉导出类数据list中对象的属性,让ExcelExportSXXSSF通过反射获取对象的值

            List<String>fieldCodes = newArrayList<String>();

            fieldCodes.add("bm");// 药品流水号

            fieldCodes.add("mc");// 通用名

            fieldCodes.add("jx");

            fieldCodes.add("gg");

            fieldCodes.add("zhxs");

            fieldCodes.add("scqymc");

            fieldCodes.add("spmc");

            fieldCodes.add("zbjg");

            fieldCodes.add("jyztmc");

 

            // 上边的代码可以优化为,将titletitle对应的 pojo的属性,使用map存储

            // ....

 

            // 注意:fieldCodesfieldNames个数必须相同且属性和title顺序一一对应,这样title和内容才一一对应

 

            // 开始导出,执行一些workbooksheet等对象的初始创建

            ExcelExportSXXSSFexcelExportSXXSSF = ExcelExportSXXSSF.start(filePath,

                   "/pic/",filePrefix, fieldNames, fieldCodes, flushRows);

 

            // 导出的数据通过service取出

            List<YpxxCustom>list = ypxxService.findYpxxList(ypxxQueryVo);

 

            // 执行导出

            excelExportSXXSSF.writeDatasByObject(list);

            // 输出文件,返回下载文件的http地址,已经包括虚拟目录

            Stringwebpath = excelExportSXXSSF.exportFile();

 

            System.out.println(webpath);

 

            return ResultUtil.createSubmitResult(ResultUtil.createSuccess(

                   Config.MESSAGE, 313, new Object[] {

                         list.size(),

                         webpath//下载地址

                   }));

   }

  

 

 

 

l  虚拟目录创建

 

虚拟目录:web请求路径

目标:将excel导出文件写到服务器的某个目录,用户通过客户端远程下载服务器上该目录的内容。

 

客户端从远程服务器上下载导出excel文件。

 

虚拟目录创建: 参考我的博客 :http://blog.csdn.net/u012373815/article/details/47206439

 

l  调试

在applicationContext-business-service.xml 注入service

<!-- 药品目录 -->

<bean id="ypxxService"  class="yycg.business.service.impl.YpxxServiceImpl"  >

 

Business下的mapper无法扫描到,修改applicationContext-base-dao.xml扫描器配置:

 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

  <!-- 配置扫描包路径,如果扫描多个包路径,中间使用半角逗号分隔也可以使用通配符  **-->

  <property name="basePackage" value="yycg.**.dao.mapper"/>

   <!-- 配置SqlSessionFactory -->

   <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

</bean>

 

2      系统参数配置

 

系统参数是什么?

 系统运行参数,一个系统运行所需要设置参数值。

 

由管理员登陆系统后台进行设置,

 

系统参数保存数据库BASICINFO

 

使用时,只需要根据BASICINFO表的id查询参数值。

 

在程序代码中,通过SystemConfigService,查询系统参数

   /**

    * 根据id获取系统配置信息

    */

   @Override

   public BasicinfofindBasicinfoById(String id) throws Exception {

      return basicinfoMapper.selectByPrimaryKey(id);

   }

 

 

使用方法:

// 导出文件存放的路径,并且是虚拟目录指向的路径

            //String filePath = "D:/java/tomcat/upload/temp/";

            //改为从系统参数配置表获取参数值

            String filePath = systemConfigService.findBasicinfoById("00301").getValue();

 

 

 

这篇关于yycg之药品目录导出(二)+系统参数配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/609052

相关文章

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

SpringBoot集成EasyPoi实现Excel模板导出成PDF文件

《SpringBoot集成EasyPoi实现Excel模板导出成PDF文件》在日常工作中,我们经常需要将数据导出成Excel表格或PDF文件,本文将介绍如何在SpringBoot项目中集成EasyPo... 目录前言摘要简介源代码解析应用场景案例优缺点分析类代码方法介绍测试用例小结前言在日常工作中,我们经

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,