关于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中,页面之间最常用的传值 ...
随机推荐
- ElasticSearch(一):CentOS7 安装 ElasticSearch6.4.0
一.安装jre支持 在CentOS中安装ElasticSearch需要Java1.8.0,可执行命令# java -version查看当前系统所安装Java版本是否为1.8.0版本. 若非1.8.0 ...
- 基于diango简易BLOG图片预览
注册界面 登陆界面 博客主界面 个人站点主页 文章详情页 个人博客后台 添加文章页 修改密码页
- pom文件miss artifact com.sun:tools:jar:1.5.0:system问题
问题现象: 导入新的maven项目时,有时候pom.xml文件会提示一个错误信息:Missing artifact com.sun:tools:jar:1.5.0:system 问题原因: maven ...
- UVA12265-Selling Land(单调栈)
Problem UVA12265-Selling Land Accept: 137 Submit: 782Time Limit: 3000 mSec Problem Description Inpu ...
- PHP小接
一种是innodb,一种是myisam,两者的主要区别是①myisam不支持事务处理,而innoDB支持事务处理 ②myisam 不支持外键,innoDB支持外键 ③myisam支持全文检索,而inn ...
- 003_python学习之 字符串前'r'的用法
在打开文件的时候open(r'c:\....') 加r和不加''r是有区别的 'r'是防止字符转义的 如果路径中出现'\t'的话 不加r的话\t就会被转义 而加了'r'之后'\t'就能保留原有的样子 ...
- 浅谈文件断点续传和WebUploader的基本结合
0.写在前面的话 上篇博客已经是在8月了,期间到底发生了什么,只有我自己知道,反正就是心情特别糟糕,生活状态工作状态学习状态都十分不好,还有心思进取吗,No!现在状态好起来了,生活又充满了希望 :D ...
- JVM源码分析--ClassLoader类加载器
本人原创,转载请注明出处:https://www.cnblogs.com/javallh/p/10224187.html 1.JDK已有类加载器: BootStrap ClassLoader (启动类 ...
- .net core实践系列之短信服务-架构设计
前言 上篇<.net core实践系列之短信服务-为什么选择.net core(开篇)>简单的介绍了(水了一篇).net core.这次针对短信服务的架构设计和技术栈的简析. 源码地址:h ...
- 数学基础IV 欧拉函数 Miller Rabin Pollard's rho 欧拉定理 行列式
找了一些曾经没提到的算法.这应该是数学基础系最后一篇. 曾经的文章: 数学基础I 莫比乌斯反演I 莫比乌斯反演II 数学基础II 生成函数 数学基础III 博弈论 容斥原理(hidden) 线性基(h ...