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

相关文章

JAVA虚拟机中 -D, -X, -XX ,-server参数使用

《JAVA虚拟机中-D,-X,-XX,-server参数使用》本文主要介绍了JAVA虚拟机中-D,-X,-XX,-server参数使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录一、-D参数二、-X参数三、-XX参数总结:在Java开发过程中,对Java虚拟机(JVM)的启动参数进

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

IDEA与JDK、Maven安装配置完整步骤解析

《IDEA与JDK、Maven安装配置完整步骤解析》:本文主要介绍如何安装和配置IDE(IntelliJIDEA),包括IDE的安装步骤、JDK的下载与配置、Maven的安装与配置,以及如何在I... 目录1. IDE安装步骤2.配置操作步骤3. JDK配置下载JDK配置JDK环境变量4. Maven配置下

Springboot的自动配置是什么及注意事项

《Springboot的自动配置是什么及注意事项》SpringBoot的自动配置(Auto-configuration)是指框架根据项目的依赖和应用程序的环境自动配置Spring应用上下文中的Bean... 目录核心概念:自动配置的关键特点:自动配置工作原理:示例:需要注意的点1.默认配置可能不适合所有场景

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

SpringBoot实现导出复杂对象到Excel文件

《SpringBoot实现导出复杂对象到Excel文件》这篇文章主要为大家详细介绍了如何使用Hutool和EasyExcel两种方式来实现在SpringBoot项目中导出复杂对象到Excel文件,需要... 在Spring Boot项目中导出复杂对象到Excel文件,可以利用Hutool或EasyExcel

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

Keepalived+Nginx双机配置小结

《Keepalived+Nginx双机配置小结》本文主要介绍了Keepalived+Nginx双机配置小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1.1 软硬件要求1.2 部署前服务器配置调优1.3 Nginx+Keepalived部署1.3

Apache伪静态(Rewrite).htaccess文件详解与配置技巧

《Apache伪静态(Rewrite).htaccess文件详解与配置技巧》Apache伪静态(Rewrite).htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令,主要的... 一、.htAccess的基本作用.htaccess是一个纯文本文件,它里面存放着Apache服务器