两相比较,虽然还是个菜鸟,不得不给自己赞一个!由于结构比较乱,业务处理层就省了
/**
* @description 处理上传的采购申请文件(Excel文件)
* @author ....
* @date 2010-12-29
*/
public class OrdersBatchUploadAction extends Action {
private static Logger logger = Logger.getLogger(OrdersBatchUploadAction.class);
/**
* 采购订单上传处理的步骤:1)获取上传的Excel文件,并将文件保存为服务器的临时文件
* 2)解析临时文件中的数据
* 3)数据完整性校验
* 3)将解析的数据保存到数据库
* 4)删除临时文件
* 5)显示结果数据列表
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String forward = "prompt";
HttpSession session = request.getSession();
User loginUser = (User)session.getAttribute("loginUser");
String mode = request.getParameter("mode"); //获取将要执行的操作标志。mode='init'为初始化
if (mode!=null && mode.equals("init")) {
return mapping.findForward("init");
}
OrdersBatchUploadForm ordersUploadForm = (OrdersBatchUploadForm)form;
FormFile file = ordersUploadForm.getFile();
try {
if (file == null) {
throw new ExpFoundException("上传文件发生异常!上传的文件不存在。");
}
//暂时保存上传文件的文件夹路径(为部署的工程目录下的temp文件夹)
String directory = servlet.getServletContext().getRealPath("/temp");
String fileName = loginUser.getUserName() + "_" + file.getFileName(); //设置暂存文件的文件名
String filefullpath = directory + "/" + fileName;
//缓存上传的采购申请数据文件
saveTempFile(file, directory, fileName);
//解析及检验上传的Excel文件
ArrayList<PurchasingAppModel> purAppList =
ParsingImportedDataService.validatePurchasingAppData(filefullpath, loginUser);
//校验采购申请数据的完整性,并生成采购订单
ArrayList<PurchaseOrder> orderList = ParsingImportedDataService.
validateIntegrityOfPurchasingAppData(purAppList, loginUser);
//持久化采购申请数据(即备份批量导入的采购申请数据到数据库)
PurchasingAppPO.batchPersistency(purAppList);
//持久化采购订单数据,并获取采购订单凭证号列表
ArrayList<String> ebelnList =
PurchaseOrderPO.batchPersistency(orderList);
//删除采购申请导入的临时文件
deleteTempFile(filefullpath);
//检查采购申请数据是否都通过了完整性校验,如果存在没通过校验的,给用户提示出来。
boolean isAllPassed = isAllPassedIntegralityValidation(purAppList);
if (!isAllPassed) {
String tip = "采购申请数据中存在未通过完整性校验的记录,请转到完整性校验结果处进行处理!";
request.setAttribute("tip", tip);
}
//将生成的采购订单的凭证号集合传到结果显示Action
String ebelnListTag = loginUser.getDepartment() + "ebelns";
session.setAttribute(ebelnListTag, ebelnList);
forward = "listresult";
} catch (ExpFoundException efe) {
request.setAttribute("prompt", "采购申请导入失败!" + efe.getMessage());
}
return mapping.findForward(forward);
}
分享到:
相关推荐
这个资源,是配合此前自己写过的一篇博客“QT 写一个属于自己的消息弹窗MessageBox”所建立的,里面是一个自己写的消息弹窗源码和资源文件,博客里会从头介绍如何自己写一个消息弹窗,有兴趣去朋友可以关注一下!...
DevExpress.Patch.for13.1.5的源代码,喜欢自己研究破解的,看看!!!现在帖子已经关闭,没地方下载了:)我共享出来,造福大家:)
这个程序是24C02大家一起共用,我这里还有,大看看要是还要联系本人就可以了.
一个简单的分页控件,自己可以随便改,控制器数量自己定义,需要的看看,GitHub地址:https://github.com/yy342901/YYPageController.git 这里的下载大家别点了,直接去GitHub下载!!!这里的下载大家别点了,...
这就是一个很大的误区。职务本身几乎是没有任何意义的,关键是在里面做了什么事情。 本文从数字、简洁、条理三方面教你如何轻松熟练地写好社团经历,在简历上留下你的精彩!希望能对你有所启发和帮助!祝你成功!
搜索入门资料,绝对值得看!!!!!搜索入门资料,绝对值得看!!!!!搜索入门资料,绝对值得看!!!!!搜索入门资料,绝对值得看!!!!!
有兴趣的朋友可以下下来看看!!这是一本比较好的书。
77部男人一生必看电影,作为一个男人!大家有没有看过??.pdf
!! 2007光盘上的
我感觉这个音乐很符合当前场景,背景图片也是经过了层层筛选,本来所i选的是一个静态烟花图片,但是自己看过之后,根js写出来的烟花有很大的冲突,导致烟花并不起眼,所以换了一个兔子抱锦鲤的这么一个背景图片,改...
198个经典C#WinForm实例源码 超赞 超赞~! 必看 必看~! 值得收藏~! 涉及全面 窗体技巧 控件操作 图像操作 报表打印 系统操作 文件处理 网络操作 数据库操作 加密解密 硬件读写 游戏设计 入门必看实例~!!值得收藏...
我已经删掉一些没用的,但是和文章是有点不一样的,但是是可以实现云平台数据上传与接收的,下载之后记得自己在本地新建一个工程,把我的文件代码复制过去,否则会报错!!!! 还有就是需要修改成自己的设备id和...
总的来说,“2013 超高仿迅雷看看播放器”是一个旨在提供类似迅雷看看体验的第三方软件。它通过模仿迅雷看看的界面和功能,满足了一部分用户的需求,但在使用过程中应注意版权和软件安全问题。对于喜欢探索和尝试...
大厂必备面试题!!!前端react 面试必看!!!
非常完善TCPIP协议栈源码,写的不错! 里面还有将这个TCPIP协议栈移植到ARM的例程 学习TCPIP协议建议好好看看
想要的可以下载看看,应该有所帮助的!!!!!
关于数据库的资料,看看吧!对各位有好处!