关于controller的书写
private Logger log = LoggerFactory.getLogger(ReportFormController.class);
// 读取配置文件
ResourceBundle resource = ResourceBundle.getBundle("address-helper");
// 读取导出通话记录配置文件
ResourceBundle export_resource = ResourceBundle.getBundle("exportFile");
@RequestMapping(value = "/detailedTraffic.html")
a.直接返回到jsp
@RequestMapping(value = "/orderReturnVisitForYearReport.html")
public String orderReturnVisitForYearReport(){
return "customerServiceReport/orderReturnVisitForYearReport";
}
b.返回分页数据
@RequestMapping(value = "/getOrderReturnVisitForYearReportPage.html")
public void getOrderReturnVisitForYearReportPage(HttpServletRequest request, HttpServletResponse response, String param){
JSONObject json = JSONObject.fromObject(param);
UserInfoVO loginuser = (UserInfoVO) SecurityUtils.getSubject().getPrincipal();
if(loginuser!=null){
json.put("departid", loginuser.getDepartid());
}
String url = resource.getString("interface_path") + "/rest/CallReport/GetOrderReturnVisitForYearReport";
String re = JerseyClientHelper.post(url, json.toString());
ResponseUtils.renderJson(re, response);
}
c.关于数据导出
@RequestMapping(value = "/exportOrderReturn.html")
public void exportOrderReturn(HttpServletRequest request, HttpServletResponse response, String param){
JSONObject json_s = new JSONObject();
JSONObject json = JSONObject.fromObject(param);
JSONArray arr = new JSONArray();
UserInfoVO loginuser = (UserInfoVO) SecurityUtils.getSubject().getPrincipal();
if(loginuser!=null){
json.put("departid", loginuser.getDepartid());
json_s.put("companyid", loginuser.getCompanyid());
}
String sybs = json.optString("sybval");
if (StringUtil.isNotEmpty(sybs)) {
json_s.put("curPage", 1);
json_s.put("pageRows", 999999);
String url1 = resource.getString("interface_path") + "/rest/businessUnitRestful/GetList";
String re1 = JerseyClientHelper.post(url1, json_s.toString());
JSONObject dataJson1 = JSONObject.fromObject(re1);
if(!"".equals(re1)){
List<BusinessUnit> list1 = null;
if("1".equals(dataJson1.opt("TSR_CODE"))){
BusinessUnit[] resultArray1 = (BusinessUnit[])JSONArray.toArray(dataJson1.getJSONArray("list"),BusinessUnit.class);
if(resultArray1 != null && resultArray1.length>0){
for(BusinessUnit bu : resultArray1){
if(bu.getId() == Integer.valueOf(sybs)){
// System.out.println(bu.getBusinessunitname());
json.put("sybs","[\""+bu.getBusinessunitname()+"\"]");
break;
}
}
}
}
}
}else{
json.put("sybs","");
}
String url = resource.getString("interface_path") + "/rest/CallReport/GetOrderReturnVisitForYearReport";
String re = JerseyClientHelper.post(url, json.toString());
if(!"".equals(re)){
JSONObject dataJson = JSONObject.fromObject(re);
String tsr_code = dataJson .optString("TSR_CODE");
List<OrderReturnVisitReportExportVo> records = null;
if("1".equals(tsr_code)){
OrderReturnVisitReportExportVo[] resultArray = (OrderReturnVisitReportExportVo[])JSONArray.toArray(dataJson.getJSONArray("list"),OrderReturnVisitReportExportVo.class);
records = Arrays.asList(resultArray);
String resultPath = createOrderReturnExcel(request,records);
try {
FileUtil.downloadForCommon(resultPath, request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
d.导出对应的excel
public String createOrderReturnExcel(HttpServletRequest request,List<OrderReturnVisitReportExportVo> records){
String resultPath = null;
List<OrderReturnVisitReportExportVo> list = new ArrayList<OrderReturnVisitReportExportVo>();
OrderReturnVisitReportExportVo cHead = new OrderReturnVisitReportExportVo();
cHead.setSyb("事业部");
cHead.setDays("日期");;
cHead.setTotalnum("全月数量(起)");;
cHead.setReturnvisittimes("回访数量(起)");
cHead.setReturnvisitrate("回访比例(%)");
cHead.setSatisfiedtimes("满意数(起)");
cHead.setSatisfiedrate("满意率(%)");
cHead.setCommonlytimes("一般数(起)");
cHead.setCommonlyrate("一般率(%)");
cHead.setDissatisfiedtimes("不满意数(起)");
cHead.setDissatisfiedrate("不满意率(%)");
list.add(cHead);
if (null != records && records.size() > 0) {
for(OrderReturnVisitReportExportVo vo : records){
//回访比例
if("0".equals(vo.getReturnvisittimes())){
vo.setReturnvisitrate(formatteNum2(Integer.valueOf(0)));
vo.setSatisfiedrate(formatteNum2(Integer.valueOf(0)));
vo.setCommonlyrate(formatteNum2(Integer.valueOf(0)));
vo.setDissatisfiedrate(formatteNum2(Integer.valueOf(0)));
}else{
vo.setReturnvisitrate(formatteNum(Integer.valueOf(vo.getReturnvisittimes()),Integer.valueOf(vo.getTotalnum())));
//满意比
if("0".equals(vo.getSatisfiedtimes())){
vo.setSatisfiedrate(formatteNum2(Integer.valueOf(0)));
}else{
vo.setSatisfiedrate(formatteNum(Integer.valueOf(vo.getSatisfiedtimes()),Integer.valueOf(vo.getReturnvisittimes())));
}
//一般
if("0".equals(vo.getCommonlytimes())){
vo.setCommonlyrate(formatteNum2(Integer.valueOf(0)));
}else{
vo.setCommonlyrate(formatteNum(Integer.valueOf(vo.getCommonlytimes()),Integer.valueOf(vo.getReturnvisittimes())));
}
//不满意
if("0".equals(vo.getDissatisfiedtimes())){
vo.setDissatisfiedrate(formatteNum2(Integer.valueOf(0)));
}else{
vo.setDissatisfiedrate(formatteNum(Integer.valueOf(vo.getDissatisfiedtimes()),Integer.valueOf(vo.getReturnvisittimes())));
}
}
}
list.addAll(records);
}else{
list.add(new OrderReturnVisitReportExportVo());
}
String fileName = getExcelName(request, "回访满意度统计报表");
List<String> nameList = new ArrayList<>(); //需要导出的内容list
nameList.add("syb");
nameList.add("days");
nameList.add("totalnum");
nameList.add("returnvisittimes");
nameList.add("returnvisitrate");
nameList.add("satisfiedtimes");
nameList.add("satisfiedrate");
nameList.add("commonlytimes");
nameList.add("commonlyrate");
nameList.add("dissatisfiedtimes");
nameList.add("dissatisfiedrate");
if ((list != null) && (list.size() > 1)) {
ExcelUntil.writeExcelModel(fileName, list, nameList);// 将报表导出
resultPath = fileName.replace('\\', '/');
}
return resultPath;
}
e. 数据转换 (百分比)
//格式化数据
public String formatteNum(int a, int b){
double num = (double)a/b;
String s = String.valueOf(Math.round(num*100))+"%";
return s;
}
//格式化数据1
public static String formatteNum1(int a, int b){
double num = (double)a/b;
String s = String.valueOf(Math.round(num));
return s;
}
//格式化数据2
public static String formatteNum2(double a){
String s = String.valueOf(Math.round(a*100))+"%";
return s;
}
关于controller的书写的更多相关文章
- ASP.NET MVC 5 Web编程5 -- 页面传值的方式
本篇文章将讲述MVC的页面传值方式,具体包括:后端向前端传值(Controller向View传值):前端向后端传值(View向Controller传值):Action与Action之间的传值. 回顾 ...
- Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何使用Maven来搭建Spring+Mybatis+SpringMVC+M ...
- Struts2 的ModelDriven理解
以UserAction为例,当UserAction实现了ModelDriven接口之后,与该接口相关的默认配置的拦截器会在拦截请求之后判断该请求是将要被UserAction处理而且UserAction ...
- OWIN 自宿主模式WebApi项目,WebApi层作为单独类库供OWIN调用
OWIN是Open Web Server Interface for .NET的首字母缩写,他的定义如下: OWIN在.NET Web Servers与Web Application之间定义了一套标准 ...
- JavaEE 之 RESTful
1.RESTful a.定义:一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等 ...
- spring Springmvc mybatis maven整合
一.准备工作 1. 首先创建一个表: CREATE TABLE `t_user` ( `USER_ID` int(11) NOT NULL AUTO_INCREMENT, `USER_NAME` ch ...
- 【转】Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何使用Maven来搭建Spring+Mybatis+SpringMVC+M ...
- 优雅的处理你的Java异常
本文介绍 本文仅按照业务系统开发角度描述异常的一些处理看法.不涉及java的异常基础知识,可以自行查阅 <Java核心技术 卷I> 和 <java编程思想> 可以得到更多的基础 ...
- mvc页面间的传值
本文大致讲解mvc前后端的传值方式,包括control向view.view向control.以及action向action. 回顾 我们回顾下在ASP.NET WebForms中,页面之间最常用的传值 ...
随机推荐
- 16.ajax_case03
# 抓取非小号的图表接口 # https://www.feixiaohao.com/currencies/raiden-network-token/ import requests import js ...
- SharePoint 2010 在同意匿名訪问的站点中隐藏登陆链接
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012025054/article/details/37565787 SharePoint 2010 ...
- Your kernel does not support swap limit capabilities.memory limit without swap
原因是:由于内核不支持限制内存的设置 解决办法是:vim /etc/default/grub 修改为: 或者:GRUB_CMDLINE_LINUX="cgroup_enable=memory ...
- UVA11400-Lighting System Design(动态规划基础)
Problem UVA11400-Lighting System Design Accept: 654 Submit: 4654Time Limit: 3000 mSec Problem Descr ...
- C++ 入门[1]
C++编译与执行 主存又称为寄存器,在CPU旁边, 随机访问储存器RAM 即内存
- 如何在C#Asp.Net MVC使用Redis缓存
为什么要在Asp.Net MVC项目中使用Redis缓存呢?系统是按照高负载高并发来设计的,这就涉及服务器集群带来的问题,Session存储验证码或登录信息,在系统登录的时候,可能展示登录界面和存储验 ...
- 【转】js中通过docment.cookie获取到的内容不完整! 在浏览器的application里的cookie里可以看到完整的cookie,个别字段无法通过document.cookie获取。 是否有其他办法可以获取到??
js中通过docment.cookie获取到的内容不完整!在浏览器的application里的cookie里可以看到完整的cookie,个别字段无法通过document.cookie获取.是否有其他办 ...
- Emacs 中使用 shell
直接在 Emacs 中使用 shell 能增加一点效率.Emacs 本身支持的 shell 相关的命令很多,此处化繁为简,只用一条足够了. M-x shell:将打开一个名为 * shell * 的 ...
- Collection 和 Collections 、 Array 与 Arrays 的区别
比较 Collection 和 Collections 的区别, Array 与 Arrays 的区别 Collection 和 Collections的区别 Collection 在 Java.ut ...
- 比起Windows,怎样解读Linux的文件系统与目录结构?
比起Windows,怎样解读Linux的文件系统与目录结构? Linux 和Windows的文件系统有些不同,在学习使用 Linux 之前,若能够了解这些不同,会有助于后续学习. 本文先对Window ...