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

相关文章

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

maven私服配置全过程

《maven私服配置全过程》:本文主要介绍maven私服配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录使用Nexus作为 公司maven私服maven 私服setttings配置maven项目 pom配置测试效果总结使用Nexus作为 公司maven私

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别