SSM项目-医药采购-09 药品目录导入

一、 系统参数配置
系统运行参数,一个系统运行所需要设置参数值。
由管理员登陆系统后台进行设置

SSM项目-医药采购-09 药品目录导入_第1张图片

系统参数保存数据库BASICINFO

使用时,只需要根据BASICINFO表的id查询参数值。

在程序代码中,通过SystemConfigService,查询系统参数

//改为从系统参数配置表获取参数值 
        String filePath = systemConfigService.findBasicinfoById("00301").getValue();

二、 药品目录导入
1. 需求 用户线下按照导入文件模版编写excel文件(03 版本),将药品目录 导入系统中。
第一步:进入导入页面
内容包括:导入说明
提供导入模版:
包括导入说明、导入工作表模版(列顺序固定)

第二步:下载导入模版
用户按照模版的导入说明,直接在模版中填写要导入的数据。

第三步:选择导入文件,执行导入操作

SSM项目-医药采购-09 药品目录导入_第2张图片

2 。mapper
向药品目录 插入记录。

Ypxx表中,bm值通过触发器实现(使用序列,在插入之前通过触发器得一个序列值,实现自增主键)

create or replace trigger generator_ypxxbm
  before insert on ypxx
  for each row
declare
  -- local variables here
begin
   select ypxxbm.nextval into :new.bm from dual;
end generator_ypxxbm;
  1. service
    接口功能:药品目录导入
    接口参数:要实现HxlsOptRowsInterface
    实现:
    校验导入的数据
    校验通过调用dao插入操作。
public class YpxxImportServiceImpl implements HxlsOptRowsInterface {

    @Autowired
    private YpxxMapper ypxxMapper;

    @Override
    public String optRows(int sheetIndex, int curRow, List rowlist)
            throws Exception {
        try {
            //得到导入的数据
            //rowlist数据 是一行数据,按照模版解析
            String mc = rowlist.get(0);//通用名
            String jx = rowlist.get(1);//剂型
            String gg = rowlist.get(2);//规格 
            String zhxs = rowlist.get(3);//转换系数

            //进行校验
            //校验中标价格合法性
            //校验交易状态的合法性  
            if(jyzt == null || (!jyzt.equals("1") && !jyzt.equals("2"))){
                return "交易状态输入值不正确,请输入1:正常,2:暂停";
            }

            Ypxx ypxx = new Ypxx();
            ypxx.setId(UUIDBuild.getUUID());
            ypxx.setMc(mc);
            ypxx.setJx(jx);
            ypxx.setZbjg(Float.parseFloat(zbjg));
            ypxx.setJyzt(jyzt);

            //校验调用mapper
            ypxxMapper.insert(ypxx);
        } catch (Exception e) {
            e.printStackTrace();
            return "导入失败";
        }
        return "success";
    }

}

4 。 action
包括两个方法:
导入页面显示方法
导入提交方法:
将文件上传到服务器(实现文件上传)
调用HSSF事件驱动封装类,导入药品目录

//药品导入提交
    @RequestMapping("/importypxxsubmit")
    public  @ResponseBody SubmitResultInfo importypxxsubmit
        (MultipartFile ypxximportfile)throws Exception{
        //将上传的文件写到磁盘
        String originalFilename = ypxximportfile.getOriginalFilename();
        File file = new File("D:/upload/linshi/" + UUIDBuild.getUUID() + 
                originalFilename.substring(originalFilename.lastIndexOf(".")));

        if(!file.exists()){
            file.mkdirs();
        }

        String absolutePath = file.getAbsolutePath();

        ypxximportfile.transferTo(file);


        //调用工具类进行药品目录 导入
        HxlsRead xls2csv = null;
        try {
            //第一个参数就是导入的文件
            //第二个参数就是导入文件中哪个sheet
            //第三个参数导入接口的实现类对象
            xls2csv = new HxlsRead(absolutePath, 1, ypxxImportService);
            xls2csv.process();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //提示导入成功条数  和失败的条数
        long success_num = xls2csv.getOptRows_success();
        long failure_num = xls2csv.getOptRows_failure();
        return ResultUtil.createSubmitResult(
                ResultUtil.createSuccess(Config.MESSAGE, 314, new Object[]{
                        success_num,failure_num
                }));
    }

5 页面

导入页面:
导入模版下载、
导入说明文字
导入文件上传选择组件

<TR>
                                <TD height=30 align=right>选择导入文件TD>
                                <TD class=category>
                                <input type="file" name="ypxximportfile" />                 
                                TD>
                            TR>

最终调试
导入结果中有导入成功数量、导入失败数量,导入失败原因 。

导入失败原因如何展示给用户:
包括失败原因和具体失败记录。

为了方便用户对失败的记录重新修改后提交,在导入结果中,提示“导出失败记录的链接”,用户点击此链接导出失败记录(excel文件,符合excel导入模版),在失败记录文件最后一列为“失败原因”,显示具体失败原因。
对于失败记录处理:
第一步:用户下载失败记录文件(excel文件,符合excel导入模版),内容都是失败记录
第二步:用户参数此文件中失败原因列的内容,修改记录
第三步:将修改后失败记录文件,重新导入。

实现:
在导入action中,获取导入失败记录及导入失败原因。
在导入action中,将失败记录及失败原因导出一个excel,将链接提供给用户下载。

//对导入失败记录处理
//获取导入失败记录
//xls2csv.getFailrows()
//获取导入记录的title
//xls2csv.getRowtitle();
//获取导入失败原因
//xls2csv.getFailmsgs()

你可能感兴趣的:(-,-,-,-,-,-【SSM项目yycg】)