1js
/** * 导入window */ Ext.define(‘ppData.priceApplyIndex.priceApplyIndexWinUpload‘, { extend: ‘Ext.window.Window‘, title:‘资源上传‘, width:400, height:200, id :null, minWidth:300, minHeight:100, closeAction : ‘hide‘, layout:‘fit‘, plain:true, bodyStyle:‘padding:5px;‘, buttonAlign:‘center‘, formUpload:null,//上传form getFormUpload:function(){ if(Ext.isEmpty(this.formUpload)){ this.formUpload = Ext.create(‘ppData.priceApplyIndex.priceApplyIndexFormUpload‘); } return this.formUpload; }, overlapErrorMessageWindow : null, getOverlapErrorMessageWindow : function(){ this.overlapErrorMessageWindow = Ext.create(‘ppData.priceApplyIndex.OverlapErrorMessageWindow‘); return this.overlapErrorMessageWindow; }, initComponent: function() { var me = this; var formUpload = me.getFormUpload(); me.items=[formUpload]; me.buttons = [{ text: ‘上 传‘, handler: function() { var parm=‘‘; if(!Ext.isEmpty(me.id)){ parm=‘?id=‘+me.id; } if(formUpload.form.isValid()){ formUpload.getForm().submit({ url:‘../pp/importPpPrice.do‘+parm, waitMsg:‘正在导入数据,请稍候。。。‘, waitTitle:‘提示‘, success: function(form, action){ Ext.ux.Toast.msg("提示", "导入成功"); me.close(); }, failure: function(form, action){ var json = Ext.decode(action.response.responseText); Ext.ux.Toast.msg("提示", json.msg, ‘error‘); }, exception : function(from, action) { me.close(); try{ var json = Ext.decode(action.response.responseText); if(json.success){ me.close(); Ext.ux.Toast.msg("提示", json.msg, ‘success‘); if(json.success){ var selectResultPanel = Ext.getCmp("ppData.priceApplyIndex.activityDiscountPageElementGridPanel"); selectResultPanel.getPagingToolbar().moveFirst(); } }else{ // 弹窗展示错误消息 var overlapErrorMessageWindow = me.getOverlapErrorMessageWindow(); var overlapErrorMessageForm = overlapErrorMessageWindow.getOverlapErrorMessageForm(); // 设置错误消息 overlapErrorMessageForm.getForm().findField("errorMessage").setValue(json.msg); overlapErrorMessageWindow.show(); } }catch(err){ Ext.ux.Toast.msg(‘提示‘, err, ‘error‘); } } }); } } },{ text: ‘取 消‘, handler:function(){ me.hide(); } }]; me.callParent(); } }); /** * 导入文件from */ Ext.define(‘ppData.priceApplyIndex.priceApplyIndexFormUpload‘, { extend:‘Ext.form.FormPanel‘, items: [{ xtype: ‘filefield‘, emptyText: ‘请选择文件‘, fieldLabel: ‘报价导入‘, buttonText: ‘浏览‘, allowBlank:false, name : ‘file‘, validator: function(value){ var arr = value.split(‘.‘); if(arr[arr.length-1] != ‘xlsx‘){ return ‘文件不合法,必须是.xlsx后缀结尾‘; }else{ return true; } }, buttonConfig: { iconCls: ‘upload-icon‘ } }] }); /** * 导入window(送货费) */ Ext.define(‘ppData.priceApplyIndex.priceApplyIndexWinUploadDeliveryFee‘, { extend: ‘Ext.window.Window‘, title:‘资源上传‘, width:400, height:200, id :null, minWidth:300, minHeight:100, closeAction : ‘hide‘, layout:‘fit‘, plain:true, bodyStyle:‘padding:5px;‘, buttonAlign:‘center‘, formUpload:null,//上传form getFormUpload:function(){ if(Ext.isEmpty(this.formUpload)){ this.formUpload = Ext.create(‘ppData.priceApplyIndex.priceApplyIndexFormUploadDeliveryFee‘); } return this.formUpload; }, overlapErrorMessageWindow : null, getOverlapErrorMessageWindow : function(){ this.overlapErrorMessageWindow = Ext.create(‘ppData.priceApplyIndex.OverlapErrorMessageWindow‘); return this.overlapErrorMessageWindow; }, initComponent: function() { var me = this; var formUpload = me.getFormUpload(); me.items=[formUpload]; me.buttons = [{ text: ‘上 传‘, handler: function() { var parm=‘‘; if(!Ext.isEmpty(me.id)){ parm=‘?id=‘+me.id; } if(formUpload.form.isValid()){ formUpload.getForm().submit({ url:‘../pp/importPpDeliveryFee.do‘+parm, waitMsg:‘正在导入数据,请稍候。。。‘, waitTitle:‘提示‘, success: function(form, action){ Ext.ux.Toast.msg("提示", "导入成功"); me.close(); }, failure: function(form, action){ var json = Ext.decode(action.response.responseText); Ext.ux.Toast.msg("提示", json.msg, ‘error‘); }, exception : function(from, action) { me.close(); try{ var json = Ext.decode(action.response.responseText); if(json.success){ me.close(); Ext.ux.Toast.msg("提示", json.msg, ‘success‘); if(json.success){ var selectResultPanel = Ext.getCmp("ppData.priceApplyIndex.activityDiscountPageElementGridPanel"); selectResultPanel.getPagingToolbar().moveFirst(); } }else{ // 弹窗展示错误消息 var overlapErrorMessageWindow = me.getOverlapErrorMessageWindow(); var overlapErrorMessageForm = overlapErrorMessageWindow.getOverlapErrorMessageForm(); // 设置错误消息 overlapErrorMessageForm.getForm().findField("errorMessage").setValue(json.msg); overlapErrorMessageWindow.show(); } }catch(err){ Ext.ux.Toast.msg(‘提示‘, err, ‘error‘); } } }); } } },{ text: ‘取 消‘, handler:function(){ me.hide(); } }]; me.callParent(); } }); /** * 导入文件from(送货费) */ Ext.define(‘ppData.priceApplyIndex.priceApplyIndexFormUploadDeliveryFee‘, { extend:‘Ext.form.FormPanel‘, items: [{ xtype: ‘filefield‘, emptyText: ‘请选择文件‘, fieldLabel: ‘送货费导入‘, buttonText: ‘浏览‘, allowBlank:false, name : ‘file‘, validator: function(value){ var arr = value.split(‘.‘); if(arr[arr.length-1] != ‘xlsx‘){ return ‘文件不合法,必须是.xlsx后缀结尾‘; }else{ return true; } }, buttonConfig: { iconCls: ‘upload-icon‘ } }] }); /** * 错误消息Window */ Ext.define(‘ppData.priceApplyIndex.OverlapErrorMessageWindow‘, { extend: ‘Ext.window.Window‘, title:‘错误消息‘, width:400, height:320, minWidth:300, minHeight:100, layout:‘fit‘, plain:true, bodyStyle:‘padding:5px;‘, closeAction: ‘destroy‘, overlapErrorMessageForm:null, getOverlapErrorMessageForm:function(){ if(Ext.isEmpty(this.overlapErrorMessageForm)){ this.overlapErrorMessageForm = Ext.create(‘ppData.priceApplyIndex.OverlapErrorMessageForm‘); } return this.overlapErrorMessageForm; }, initComponent: function() { var me = this; me.items=[me.getOverlapErrorMessageForm()]; me.buttons = [{ cls : ‘yellow_button‘, text: ‘关闭‘, handler: function() { me.close(); } }]; me.callParent(); } }); /** * 错误消息Form */ Ext.define(‘ppData.priceApplyIndex.OverlapErrorMessageForm‘, { extend:‘Ext.form.FormPanel‘, items: [{ xtype : ‘textareafield‘, name : ‘errorMessage‘, autoScroll:true, anchor : ‘100%‘, height:300 }] });
2 mvc
// 导入 @Autowired(required = false) @Qualifier("ppPriceReader") private ExcelReader ppPriceReader;
@SuppressWarnings("unchecked") @RequestMapping(value = "/importPpPrice.do") @ResponseBody public ResultEntity importPpPrice(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request, ModelMap model,String id) { //得到当用户 UserEntity currentUser = DpapUserContext.getCurrentUser(); ResultEntity resultEntity = new ResultEntity(); if (file == null) { log.error("文件为空!", LogConstant.LOG_TYPE_EXCEPTION); resultEntity.setMsg("文件为空!"); resultEntity.setSuccess(false); } String name = file.getOriginalFilename();// 获取上传文件名,包括路径 long size = file.getSize(); if ((name == null || name.equals("")) && size == 0) { log.error("文件为空!", LogConstant.LOG_TYPE_EXCEPTION); resultEntity.setMsg("文件为空!"); resultEntity.setSuccess(false); } try { InputStream in = file.getInputStream(); Map<String, Object> beans = new HashMap<String, Object>(); ReadStatus readStatus = ppPriceReader.readAll(in, beans); if (readStatus.getStatus() == 0) { List<ImportPriceVo> list = (List<ImportPriceVo>) beans.get("ppPrice_Import_Moddle"); if (CollectionUtils.isEmpty(list)) { resultEntity.setMsg("解析数据为空!"); resultEntity.setSuccess(false); } // 分批导入限制 if (list.size() > 1000) { resultEntity.setMsg("一次最多只能导入1000条数据"); resultEntity.setSuccess(false); return resultEntity; } String msg = null; // 执行导入方法 msg = ppAuditPriceMainService.importPrice(list, currentUser, id); if (StringUtils.isNotBlank(msg)) { resultEntity.setMsg(msg); resultEntity.setSuccess(false); } else { resultEntity.setMsg("操作成功"); resultEntity.setSuccess(true); } } else { log.error("文件解析异常!", LogConstant.LOG_TYPE_EXCEPTION); resultEntity.setMsg("文件解析异常!"); resultEntity.setSuccess(false); } } catch (IOException e) { log.error(e.getMessage(), LogConstant.LOG_TYPE_EXCEPTION, e); e.printStackTrace(); resultEntity.setMsg("文件解析异常!详情:" + e.getMessage()); resultEntity.setSuccess(false); } return resultEntity; }
reader
导入策略
时间: 2024-10-11 05:26:02