关于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中,页面之间最常用的传值 ...
随机推荐
- C#定时备份正在播放的幻灯片、word文档、excel电子表格,mht格式文档
控制台应用, 代码如下: using System; using System.Collections.Generic; using System.IO; using System.Linq; usi ...
- UVA1374-Power Calculus(迭代加深搜索)
Problem UVA1374-Power Calculus Accept:323 Submit:2083 Time Limit: 3000 mSec Problem Description I ...
- php面试中的经典问题
原文:https://blog.csdn.net/ghostlv/article/details/51284745 问题一问题描述考虑下面代码: $str1 = 'yabadabadoo';$str2 ...
- 微服务框架surging学习之路——序列化 (转载https://www.cnblogs.com/alangur/p/10407727.html)
微服务框架surging学习之路——序列化 1.对微服务的理解 之前看到在群里的朋友门都在讨论微服务,看到他们的讨论,我也有了一些自己的理解,所谓微服务就是系统里的每个服务都 可以自由组合.自由组 ...
- package-info.java的使用
一.引入 上文中,提到了注解类JyzTargetPackage可以定义为@Target(ElementType.PACKAGE),可是在被注解类里我无论怎么加,编译器都报错,于是引入了package- ...
- Mybatis学习总结(七)——调用存储过程
一.返回select结果集 1.创建存储过程 DELIMITER // DROP PROCEDURE IF EXISTS proc_queryUser; CREATE PROCEDURE proc_q ...
- Feature Extractor[ResNet v2]
0. 背景 何凯明大神等人在提出了ResNet网络结构之后,对其做了进一步的分析工作,详细的分析了ResNet 构建块能起作用的本质所在.并通过一系列的实验来验证恒等映射的重要性,并由此提出了新的构建 ...
- Oracle 关于expdp和impdp的应用实践
现在有一个场景需求,需要把在一台服务器上某个用户的对象全部迁移到另一台服务器.有以下几个情况: 1.原用户下的表分属于不同的表空间(由于维护人员在过程中修改过用户的默认表空间) 2.原用户的数据库量过 ...
- lwip TCP client & FreeRTOS 打开TCP 的 保活机制 LWIP_TCP_KEEPALIVE==1
参考大神教程:http://blog.sina.com.cn/s/blog_62a85b950101aw8x.html 老衲五木 :http://blog.sina.com.cn/s/blog_6 ...
- JS /javascript 解除网页屏蔽右键(无法复制)的代码
javascript:(function() { function R(a){ona = "on"+a; if(window.addEventListener) window.ad ...