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

相关文章

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然