第一步:输入查询条件,查询出药品目录 信息
第二步:点击导出按钮
将符合查询条件的所有记录(不是一页的数据)全部导出。
第三步:下载导出文件
页面显示:
实现:
首先是生成pojo mapper
然后自定义mapper
// 扩展类 用做查询结果 使用继承
public class YpxxCustom extends Ypxx{
//交易状态名称
private String jyztmc; }
// 用做查询条件 使用组合
public class YpxxQueryVo {
private YpxxCustom ypxxCustom; }
Dao:
public interface YpxxMapperCustom {
// 药品目录查询
public List<YpxxCustom> findYpxxList(YpxxQueryVo ypxxQueryVo) throws Exception;
}
<sql id="query_ypxx_where">
<if test="ypxxCustom != null">
<if test="ypxxCustom.bm != null and ypxxCustom.bm != ''">
and ypxx.bm = #{ypxxCustom.bm}
</if>
<if test="ypxxCustom.mc != null and ypxxCustom.mc != ''">
and ypxx.mc = #{ypxxCustom.mc}
</if>
<if test="ypxxCustom.jyzt != null and ypxxCustom.jyzt != ''">
and ypxx.jyzt = #{ypxxCustom.jyzt}
</if>
</if>
</sql>
<select id="findYpxxList" parameterType="yycg.business.pojo.vo.YpxxQueryVo"
resultType="yycg.business.pojo.vo.YpxxCustom">
select BM,
SPMC,
JX,
GG,
ZHXS,
SCQYMC,
SPMC,
ZBJG,
JYZT,
(select info
from dictinfo
where ypxx.jyzt = dictcode
and typecode = '003') jyztmc
from ypxx
<where>
<include refid="query_ypxx_where"></include>
</where>
</select>
service
接口功能:药品目录 查询
接口参数:查询条件
public class YpxxServiceImpl implements YpxxService {
@Autowired
private YpxxMapperCustom ypxxMapperCustom;
@Override
public List<YpxxCustom> findYpxxList(YpxxQueryVo ypxxQueryVo)
throws Exception {
return ypxxMapperCustom.findYpxxList(ypxxQueryVo);
}
}
记得配置bean
<bean id="ypxxService" class="yycg.business.service.impl.YpxxServiceImpl"></bean>
调用时报错,mapper没有生效
**Invalid bound statement (not found): yycg.business.dao.mapper.YpxxMapperCustom**
注意因为在不同包下面,注意mapper 扫描问题
<!-- 配置扫描包路径 ,如果扫描多个包路径,中间使用通配符 -->
<property name="basePackage" value="yycg.**.dao.mapper" />
注意java 和 mapper 路径是否匹配 方法名 参数是否正确
action
@Controller
@RequestMapping("ypml")
public class YpxxAction {
@Autowired
private YpxxService ypxxService;
@Autowired
private SystemConfigService systemConfigService;
// 导出页面展示
@RequestMapping("exportYpml")
public String exportYpml(Model model) throws Exception {
//药品类别
List<Dictinfo> yplblist = systemConfigService.findDictinfoByType("001");
// 交易状态
List<Dictinfo> jyztlist = systemConfigService.findDictinfoByType("003");
model.addAttribute("yplblist", yplblist);
model.addAttribute("jyztlist", jyztlist);
return "/business/ypml/exportYpxx";
}
// 导出页面提交
@RequestMapping("exportYpmlSubmit")
public @ResponseBody SubmitResultInfo exportYpmlSubmit(YpxxQueryVo ypxxQueryVo)
throws Exception {
//导出文件存放的路径,并且是虚拟目录指向的路径
String filePath = "d:/upload/linshi/";
//导出文件的前缀
String filePrefix="ypxx";
//-1表示关闭自动刷新,手动控制写磁盘的时机,其它数据表示多少数据在内存保存,超过的则写入磁盘
int flushRows=100;
//指导导出数据的title
List<String> fieldNames=new ArrayList<String>();
fieldNames.add("流水号");
fieldNames.add("通用名");
fieldNames.add("剂型");
fieldNames.add("规格");
fieldNames.add("转换系数");
fieldNames.add("生产企业");
fieldNames.add("商品名称");
fieldNames.add("中标价格");
fieldNames.add("交易状态");
//告诉导出类数据list中对象的属性,让ExcelExportSXXSSF通过反射获取对象的值
List<String> fieldCodes=new ArrayList<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");
//开始导出,执行一些workbook及sheet等对象的初始创建
ExcelExportSXXSSF excelExportSXXSSF = ExcelExportSXXSSF.start(filePath, "/upload/", filePrefix, fieldNames, fieldCodes, flushRows);
// 导出的数据通过service取出
List<YpxxCustom> list = ypxxService.findYpxxList(ypxxQueryVo);
excelExportSXXSSF.writeDatasByObject(list);
//输出文件,返回下载文件的http地址
String webpath = excelExportSXXSSF.exportFile();
return ResultUtil.createSubmitResult(
ResultUtil.createSuccess(Config.MESSAGE, 313, new Object[]{
list.size(),
webpath
}));
}
}
jsp:
<TD class="left">药品类别:</TD>
<td >
<select id="ypxxCustom.lb" name="ypxxCustom.lb" style="width:150px">
<option value="">全部</option>
<c:forEach items="${yplblist}" var="value">
<option value="${value.id}">${value.info}</option>
</c:forEach>
</select>
</td>
按钮 :
<a id="btn" href="#" onclick="ypxxexport()">
<form id="ypxxlistFrom" name="ypxxlistFrom" action="${baseurl}ypml/exportYpmlSubmit.action" method="post">
<script type="text/javascript">
//药品信息导出
function ypxxexport(){
//调用ajax Form提交
jquerySubByFId('ypxxlistFrom',ypxxExprot_callback,null,"json");
}
function ypxxExprot_callback(data){
//在这里提示信息中有文件下载链接
message_alert(data);
}
</script>
虚拟路径:
tomcat conf 下server.xml中配置
<Context docBase="D:\upload\linshi" path="/upload" reloadable="false"/>
请求的路径就是虚拟目录http://ip:port/upload/