1、jsp页面
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%@include file="/pages/include/base-head.jsp"%>
<script type="text/javascript" src="${commomSkin}/lib/jquery/jquery-form.js"></script>
</head>
<body>
<form id="dataform" method="post" enctype="multipart/form-data">
<table style="align:center">
<tbody>
<tr>
<td>
批量充值Excel模板:
<img src="${skin}/image/flow/exceltemplate.png"/>
</td>
</tr>
<tr><td> </td></tr>
<tr>
<td>
<input type="file" name="batrechexcel"/>
<input type="submit" value="确认批量充值" id="submit"/>
</td>
</tr>
<tr><td> </td></tr>
<tr id="shangjieguo" style="display:none">
<td>充值结果:<span id="totalresult" style="color:red"></span>
</td>
</tr>
<tr id="xiajieguo" style="display:none">
<td>错误描述:<br/>
<span id="errordes" style="color:red"></span>
<span id="incompleteDataString" style="color:red"></span>
</td>
</tr>
</tbody>
</table>
</form>
<script>
$(function(){
var options = {
url:"${contextPath}/flow/public/batchRecharge",
beforeSubmit: showRequest, //提交前处理
success: showResponse, //处理完成
resetForm: true,
dataType: 'json'
};
$('#dataform').submit(function() {
$(this).ajaxSubmit(options);
return false; //阻止表单默认提交
});
});
function showRequest(formData, jqForm, options) {
$("#submit").attr('disabled',true);
var batrechexcel = $("input[name='batrechexcel']").val();
if(batrechexcel == ""){
$("#shangjieguo").show();
$("#totalresult").text("请选择要导入的Excel文件");
$("#xiajieguo").css("display","none");
$("#submit").attr('disabled',false);
return false;
}else{
$("#shangjieguo").show();
$("#totalresult").text("充值进行中,请耐心等待...");
$("#xiajieguo").css("display","none");
return true;
}
}
function showResponse(responseText, statusText) {
var str = responseText;
if(str.result == "allsuccess"){
$("#shangjieguo").show();
$("#totalresult").text("全部受理成功:"+"总共充值数:"+str.totalNumber+" ,充值成功数:"+str.successNumber+" ,充值失败数:"+str.failNumber+" ,格式不对数:"+str.incompleteDataNumber);
window.parent.refreshLimit();
}else if(str.result == "allfail"){
$("#shangjieguo").show();
$("#xiajieguo").show();
$("#totalresult").text("全部受理失败:"+"总共充值数:"+str.totalNumber+" ,充值成功数:"+str.successNumber+" ,充值失败数:"+str.failNumber+" ,格式不对数:"+str.incompleteDataNumber);
$("#errordes").html(str.failreason);
$("#incompleteDataString").html(str.incompleteDataString);
}else if(str.result == "null"){
$("#shangjieguo").show();
$("#totalresult").text("数据为空或数据大于1万");
}else if(str.result == "partfail"){
$("#shangjieguo").show();
$("#xiajieguo").show();
$("#totalresult").text("部分受理失败:"+"总共充值数:"+str.totalNumber+" ,充值成功数:"+str.successNumber+" ,充值失败数:"+str.failNumber+" ,格式不对数:"+str.incompleteDataNumber);
$("#errordes").html(str.failreason);
$("#incompleteDataString").html(str.incompleteDataString);
window.parent.refreshLimit();
}else if(str.result == "committwo"){
$("#shangjieguo").show();
$("#totalresult").text("请不要重复提交");
}else if(str.result == "nomoney"){
$("#shangjieguo").show();
$("#totalresult").text(str.failreason);
}else if(str.result == "geshibudui"){
$("#shangjieguo").show();
$("#totalresult").text("文件格式不对");
}
$("#submit").attr('disabled',false);
}
</script>
</body>
</html>
2、后台代码
@Controller
@RequestMapping(value="/flow")
public class BatchRechargeMainAction extends ModelAction<BatchRechargeMain> {
@Autowired BatchRechargeMainService batReChMainService;
@Autowired UserService userService;
/**
* 跳到批量充值页面
* @return
* @author
* @throws UnsupportedEncodingException
*/
@RequestMapping(value="/public/batchRecharge",method=RequestMethod.GET)
public String tobatchRecharge(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
return "flow/batchrecharge/batchrecharge";
}
/**
* 批量充值
* @param request
* @param response
* @return
* @author
* @throws Exception
*/
@RequestMapping(value="/public/batchRecharge",method=RequestMethod.POST)
@ResponseBody
public String batchRecharge(HttpServletRequest request, HttpServletResponse response) throws Exception{
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile multipartFile = multipartRequest.getFile("batrechexcel");
String sourceName = multipartFile.getOriginalFilename(); // 原始文件名
String geshi = sourceName.substring(sourceName.indexOf(".")+1);
if(!geshi.equals("xlsx")&&!geshi.equals("xls")){
Map<String, Object> totalResult = new HashMap<String, Object>();
totalResult.put("result", "geshibudui");
return JsonUtil.toJson(totalResult);
}
String base = request.getSession().getServletContext().getRealPath("/") + "batchrecharge" + File.separator + "uploadedExcel";
File file = new File(base);
if(!file.exists()){
file.mkdirs();
}
String path=base + File.separator + sourceName;
multipartFile.transferTo(new File(path));
Set<PhoneSize> phoneSizes = readBatchRechargeExcel(path);
String account = getLoginUser().getAccount();
String resultJson = this.batReChMainService.doBatchRecharge(phoneSizes,account);
return resultJson;
}