关于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中,页面之间最常用的传值 ...
随机推荐
- SQLite的原子提交--单文件场景
3. 单文件提交 我们首先概要说明SQLite在单个数据库文件上为了执行事务的原子提交而采取的步骤.在后面的部分将讨论如何设计文件格式以保护其在断电故障中损坏,以及原子提交在多个数据库上的执行. 3. ...
- 经典Python进阶文档 真的很棒
https://docs.pythontab.com/interpy/args_kwargs/README/
- 关于xampp中无法启动mysql,Attempting to start MySQL service...的解决办法!!
最近在学习服务器方面的知识,找到了这款功能强大的建站集成软件包——xampp.但是在开数据库服务器的时候,出现了这种情况.一直在Attemptng to start MySQL service... ...
- Redis主从数据库同步
Redis主从同步原理-SYNC和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采 ...
- PHP删除数组中空值的方法介绍
这篇文章主要介绍了PHP删除数组中空值的方法介绍,需要的朋友可以参考下 说来惭愧,以前在去掉数组的空值是都是强写foreach或者while的,利用这两个语法结构来删除数组中的空元素,简单代码如下: ...
- 转载 (三)surging 微服务框架使用系列之我的第一个服务(审计日志)
(三)surging 微服务框架使用系列之我的第一个服务(审计日志) 前言:前面准备了那么久的准备工作,现在终于可以开始构建我们自己的服务了.这篇博客就让我们一起构建自己的第一个服务---审计日志 ...
- [Micropython]TPYBoardV102 DIY智能温控小风扇
1.实验目的 1. 学习在PC机系统中扩展简单I/O 接口的方法. 2. 进一步学习编制数据输出程序的设计方法. 3. 学习DS18B20的接线方法,并利用DS18B20检测当前温度. 4.学习三极管 ...
- day95
Linux基本部署配置及常见扩展应用 Linux软件包安装方法 1. 安装: 整个安装过程可以分为以下几步: 1) 取得应用软件:通过下载.购买光盘的方法获得: 2)解压缩文件:一般tar包,都会再做 ...
- Spring和SpringMvc详细讲解
转载自:https://www.cnblogs.com/doudouxiaoye/p/5693399.html 1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的Io ...
- 开源Dapper的Lambda扩展-Sikiro.Dapper.Extension V2.0
前言 去年我在业余时间,自己整了一套dapper的lambda表达式的封装,原本是作为了一个个人的娱乐项目,当时也只支持了Sql Server数据库.随之开源后,有不少朋友也对此做了试用,也对我这个项 ...