如果想要获取相关的源码,笔记,和相关工具,并且进行二次开发,关注我并私信!!!
一 药品目录接口之药品信息表
关于药品目录(或者称为药品信息)的内容都是属于business模块中的内容!!!之后的内容也是都是business模块中的内容了!!!因此,需要在eclipse中创建如下的目录:
配置文件所在的目录:红框内的内容是创建的
Java代码所在的目录:红框内的内容是创建的
1 药品目录概述
图解:药品目录的导入导出接口就是程序员开发的药品目录的导入和导出功能的总称!
因此,需要在本市级药品采购平台上,开发一个药品目录导入、导出功能。
其中,在药品目录表ypxx(或称为药品信息表)中:记录了本系统用到的所有药品信息,即本系统的药品目录总表!(下节会讲到)!
包括供应商要采购的药品(后面会讲到),监督单位所监管的药品(后面会讲到)以及医院所采购的药品(后面会讲到),都会从该药品目录表YPXX中进行采购和控制!!!
1)导出功能好处:
方便用户备份重要数据信息。
将数据导出到本地,方便对数据进行二次加工。
建议:所有的统计功能,都要添加导出功能。
2)用户导入过程:
用户线下整理excel文件(记录要导入的药品目录信息),该excel文件是有规则的,文件中定义了文件内容格式,比如:第一列
是药品流水号、第二列是药品名称..................等等。
然后,用户进入本市级药品采购平台,使用该平台中的药品目录导入功能,将线下已经整理好的excel文件导入该系统平台上。
本系统会按照上边excel文件的规则进行文件内容的解析,然后把内容插入到系统的数据库中。
导入功能好处:
方便执行批量操作.
对于复杂的信息,可以采用导入功能,由用户在线下整理好内容后,导入系统。效率是很快。
2 导入和导出功能的使用者
1)导出:包括卫生局,卫生院和医院,以及供应商都可以进行导出!
2)导入:只有卫生局可以进行导入!
3 客户使用导入和导出功能的意义
1)导出功能的意义:
1、客户为了便于携带数据文件,通常使用导出功能将 查询数据结果导出成excel存储在个人电脑,
2、客户需要对数据进行二次加工,系统又没有相应的统计功能,客户导出数据进行二次加工。
2)导入功能的意义:
- 导入相当于一种批量添加,使用导入可以方便快捷的将数据批量添加至系统。
- 对复杂的数据信息如果手动录入可能需要好多步骤,如果让用户在规定好的文件上填写完成信息,导入系统,
操作方便。
也可以说,药品目录表YPXX是由卫生局来统一的进行维护!
4 药品目录表YPXX的分析(重点)
在系统数据库yycg中,创建了一张药品信息表YPXX(或称为:药品目录表、药品平台总目录):记录了市级医药平台所使用的所有药品(可以称为药品平台的总目录),无论是医院或者是供货商都会从该表中来获取药品信息!
主要字段如下:
1.BM:药品流水号BM,是省平台和市平台统一使用的号。此流水号是在省级招标平台中录入时产生的,并且是uniqe约束.该字
段使用了触发器来实现自增长(可以参考day05文档中关于药品导入目录中的内容)!
2.MC:药品通用名(行业内对药品的通用称呼)。
3.JX:剂型.例如:口服液、胶囊...............。
4.GG:规格。
5.转换系数:一个单位里面又多少个规格的数量,例如:20片/盒。
6.生产企业:药品的生产厂家。
7.商品名:生产厂家为了销售商品所起的名字。
8.药品中标价: 是由省平台同步下来的中标价格.
9.JYZT:药品的交易状态(属于业务代码:1:正常、2:暂停)。如果交易状态为暂停,表示此药品不在本系统流通,监督单位不再监管此药品,供货商不再供货,医院无法采购.
通过查看数据字典的类型表dicttype表可知:
再查询:
注意:ypxx表中的jyzt字段中的值是与dictinfo表中的dcticode字段中的值相关联的(这点在数据字典的内容中已
经讲过了),但这种关联属于业务级别的关联关系,而不是数据库级别的关联关系!!!
10.LB:药品类别,属于普通配置项,该字段是与数据字典明细表dictinfo中的id主键相关联,但这种关联属于业务级 别的关联关系,而不是数据库级别的关联关系!!!
其中这几个字段共同组成了unique唯一约束:药品通用名、剂型、规格、转换系数、生产企业、商品名,如YPXX表所示:
表示这几个字段构成了该表的唯一的一条记录!
因为该表的字段与很多张表都有关联,所以系统中不对药品目录中的记录进行物理删除。如果这个药品不在系统中使用,那么就设置交易状态为2(暂停交易),即只进行逻辑删除。
二 药品目录导出的技术分析之Apache POI
1 导出流程
该导出流程只是作为参考,具体以代码实现为准,可以更清晰的查看导出流程!!
第1步;根据导出页面中的查询条件(导出条件)查询药品目录表ypxx。
第2步:将查询到的药品目录列表通过调用api来导出excel文件,然后存储(上传)到服务器端。因此,也可以说,导
出文件过程就是向服务器的磁盘中write写excel文件的过程.
第3步:再由客户从服务器端下载到本地!!这一步会由浏览器自动就实现了.
这两个类分别代码了使用HSSF方式写入数据的测试类,和XSSF方式吸入数据的测试类!
2 Apache POI介绍
Apache POI - the Java API for Microsoft Documents,Apache POI 是用Java编写的免费开源的跨平台的 Java API,它可以创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API。用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。Apache POI 提供Java操作Excel解决方案(适用于Excel97-2008)。
我们的学习目标:使用HSSF 和 XSSF操作excel文档。
3 使用HSSF导出excel(不推荐)
3.1创建流程
按照帮助文档index.html中的内容可知:
HSSF只操作.xls文件(1997--2003版本的excel),它对每一个sheet单元表格中的行数都有限制:每一个sheet单元格最大只支持65536行。
所以,不推荐!
流程步骤要对照着测试代码来看!!
第1步:创建workbook工作簿(一个excel文档就是一个工作簿).
Workbook wb = new HSSFWorkbook();
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
第2步:创建一个sheet工作表。工作表如图所示:
在excel文件的底部创建工作表sheet。
Sheet sheet3 = wb.createSheet(safeName);
第3步:在sheet中创建row行.
Row row = sheet.createRow((short)0);
第4步:在row行中创建cell单元格.
Cell cell = row.createCell(0);//0就表示单元格的地址
如图:D8表示该单元格的地址
第5步:向cell单元格中写数据.
cell.setCellValue(1);
第6步:输出excel文件(写文件).
wb.write(fileOut);
fileOut.close();
3.2 测试代码
/** * poi测试导出excel文件,数据量大出现内存溢出 * * @author Thinkpad * */ public class WriteExcelHSSF { public static void main(String[] args) throws IOException { // 创建文件输出流 FileOutputStream out = new FileOutputStream("d:/workbook.xls"); // 创建一个工作簿 Workbook wb = new HSSFWorkbook(); for (int j = 0; j < 1; j++) { Sheet s = wb.createSheet();// 创建1个sheet wb.setSheetName(j, "sheet" + j);// 指定sheet的名称 |