SSM项目-医药采购-08 药品目录导出

第一步:输入查询条件,查询出药品目录 信息
第二步:点击导出按钮
将符合查询条件的所有记录(不是一页的数据)全部导出。
第三步:下载导出文件
这里写图片描述

页面显示:
这里写图片描述
实现:
首先是生成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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值