方法不难很简单的一句话,关键是思路问题,由于之前没做过所有有些迷茫,现在记下来防迷茫
首先是前端调用方法,传参过去,
$.ajax({
url:'<%=path%>/export/index',
type:'GET',
data: { serviceId: serviceId,name:name,serviceRegisterCode:serviceRegisterCode },
success:function(data){
//console.log(data);
window.open('<%=path%>'+data );
}
});
controller 获取传过来的参数,
//导出docx
@RequestMapping(value = "/index", method = RequestMethod.GET)
@ResponseBody
public String index(HttpServletResponse response,HttpServletRequest request) {
String serviceId=request.getParameter("serviceId"); //服务ID
String serviceRegisterCode=request.getParameter("serviceRegisterCode");//服务编号
String path =serviceSaApplyManagement.selectImageByID(serviceId);// 通过服务ID获取二维码信息
String codePath = request.getServletContext().getRealPath("")+path;//二维码地址
String name = request.getParameter("name");//死者姓名
String modelPath = request.getServletContext().getRealPath("") + "/serviceListTemplate/serviceListTemplate.docx";//导出模板地址
List<Map> values = new ArrayList<>(); //含有Map<String,String>的list,每个Map中存储key值为"name","price"的两个数据
ArrayList<BhConsumeDetail> detailList = new ArrayList<>();
detailList=serviceBhConsumeDetail.getServiceConsume(serviceId);//根据服务ID获取已选服务清单
BigDecimal sumPrice=new BigDecimal(0);
for(int i=0;i<detailList.size();i++){
String price="";
if(detailList.get(i).getDiscountPrice()==null || detailList.get(i).getOriginalPrice()!=null){
sumPrice=sumPrice.add(detailList.get(i).getOriginalPrice());
price=detailList.get(i).getOriginalPrice().toString();
}else if(detailList.get(i).getOriginalPrice()==null){
price="0";
}else{
price=detailList.get(i).getDiscountPrice().toString();
sumPrice=sumPrice.add(detailList.get(i).getDiscountPrice());
}
Map example = new HashMap();//要放在循环里面 否则只会添加最后一行数据
example.put("name", detailList.get(i).getServiceName());
example.put("price",price);
values.add(example);
}
return ExportWordUtil.exportByModel(codePath,name,modelPath,values,response,sumPrice,request,serviceRegisterCode);
}