package com.ultra.core.zone.controller;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ultra.common.ret.RetResponse;
import com.ultra.common.ret.RetResult;
import com.ultra.common.vo.PageMapper;
import com.ultra.core.zone.bean.ZoneOopProgress;
import com.ultra.core.zone.bean.ZoneOopProgressLog;
import com.ultra.core.zone.service.ZoneOOPDemandProgressService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* <p>
* Description:
* </p>
*
* @author dell
* @version 4.1
* <p>
* History:
*
* Date Author Version Description
* ---------------------------------------------------------------------------------
* 2018年7月10日 下午6:09:29 dell 4.1 To create
* </p>
*
* @since
* @see
*/
@Api(tags = "划小专区进展")
@RestController
@RequestMapping("/demand/progress/")
public class ZoneOOPDemandProgressController {
@Autowired
private ZoneOOPDemandProgressService zoneOOPDemandProgressService;
/**
* 导出
* @param provinceName
*/
@RequestMapping("exportZoneOopProcess")
public void exportZoneOopProcess(HttpServletRequest request, HttpServletResponse response) {
String provinceName = request.getParameter("provinceName");
HSSFWorkbook workbook = new HSSFWorkbook();//
HSSFSheet sheet = workbook.createSheet();//创建工作表
HSSFRow row1 = sheet.createRow(0);//创建第一行
//设置列名
row1.createCell(0).setCellValue("子任务");
row1.createCell(1).setCellValue("功能点");
row1.createCell(2).setCellValue("省内业务规则细化情况");
row1.createCell(3).setCellValue("IT支撑方案编制情况");
row1.createCell(4).setCellValue("系统支撑情况");
row1.createCell(5).setCellValue("功能点所属系统");
row1.createCell(6).setCellValue("下阶段计划");
//查询数据
List<ZoneOopProgress> list = zoneOOPDemandProgressService.getZoneOopProcess(provinceName);
String flag = null;
int index = 0;
for (int i = 0; i < list.size(); i++) {
ZoneOopProgress zoneOopProgress = list.get(i);
HSSFRow row = sheet.createRow(i + 1);
row.createCell(0).setCellValue(zoneOopProgress.getSubTask());
row.createCell(1).setCellValue(zoneOopProgress.getFunctionPoint());
row.createCell(2).setCellValue(zoneOopProgress.getThinningOfBusinessRules());
row.createCell(3).setCellValue(zoneOopProgress.getDevelopmentOfItSupport());
row.createCell(4).setCellValue(zoneOopProgress.getSystemSupport());
row.createCell(5).setCellValue(zoneOopProgress.getFunctionPointSystem());
row.createCell(6).setCellValue(zoneOopProgress.getNextPhasePlan());
//如果当前子功能不等于上一个子功能, 则把上一个子功能合并
if (!StringUtils.equals(zoneOopProgress.getSubTask(), flag) && StringUtils.isNotBlank(flag)) {
CellRangeAddress rangeAddress = new CellRangeAddress(index + 1, i, 0, 0);//合并单元格; 起始行号,终止行号, 起始列号,终止列号
sheet.addMergedRegion(rangeAddress);
flag = zoneOopProgress.getSubTask();
index = i;
} else {
flag = zoneOopProgress.getSubTask();
}
//最后合并单元格
if (i == list.size() - 1) {
CellRangeAddress rangeAddress = new CellRangeAddress(index + 1, i + 1, 0, 0);
sheet.addMergedRegion(rangeAddress);
}
}
OutputStream output;
try {
output = response.getOutputStream();
//清空缓存
response.reset();
// 定义浏览器响应表头,并定义下载名
String fileName = URLEncoder.encode("ExportExcel.xls", "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
//定义下载的类型,标明是excel文件
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
//把创建好的excel写入到输出流
workbook.write(output);
//随手关门
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}