|
@@ -3,7 +3,6 @@ package com.ruoyi.biz.controller;
|
|
|
import com.ruoyi.biz.domain.*;
|
|
|
import com.ruoyi.biz.service.*;
|
|
|
import com.ruoyi.biz.service.impl.AsyncServiceImpl;
|
|
|
-import com.ruoyi.biz.tools.Tools;
|
|
|
import com.ruoyi.common.constant.Constants;
|
|
|
import com.ruoyi.common.core.controller.BaseController;
|
|
|
import com.ruoyi.common.core.domain.R;
|
|
@@ -28,7 +27,6 @@ import java.io.BufferedOutputStream;
|
|
|
import java.io.FileInputStream;
|
|
|
import java.io.IOException;
|
|
|
import java.io.OutputStream;
|
|
|
-import java.math.BigDecimal;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.text.ParseException;
|
|
|
import java.time.LocalDate;
|
|
@@ -65,8 +63,10 @@ public class ApiController extends BaseController {
|
|
|
private ITwinPanHeadInfoService panHeadInfoService;
|
|
|
@Resource
|
|
|
private ISysConfigService configService;
|
|
|
- @Value("${excel.template}")
|
|
|
- private String excelTemplate;
|
|
|
+ @Value("${excel.total}")
|
|
|
+ private String totalExcelTemplate;
|
|
|
+ @Value("${excel.formula}")
|
|
|
+ private String formulaExcelTemplate;
|
|
|
|
|
|
@ApiOperation("在线设备")
|
|
|
@GetMapping("/device/online")
|
|
@@ -165,8 +165,40 @@ public class ApiController extends BaseController {
|
|
|
@ApiOperation("配方详情导出")
|
|
|
@GetMapping("/formula/export/{height}")
|
|
|
@CrossOrigin(origins = "*")
|
|
|
- public R<Map> formulaExport(@PathVariable Float height) {
|
|
|
- return R.ok();
|
|
|
+ public void formulaExport(@PathVariable Float height, HttpServletResponse response) {
|
|
|
+ Object d = CacheUtils.get(Constants.IOT_TOKEN, Constants.INDEX_FORMULA_DETAIL);
|
|
|
+ if (d != null) {
|
|
|
+ List<FormulaDetail> list = (List<FormulaDetail>) d;
|
|
|
+ list = list.stream().filter(detail -> detail.getFormula_data_15().equals(height)).collect(Collectors.toList());
|
|
|
+ try (FileInputStream inputStream = new FileInputStream(formulaExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
|
|
|
+ Sheet sheet = wb.getSheetAt(0);
|
|
|
+ AtomicInteger rowNum = new AtomicInteger(2);
|
|
|
+
|
|
|
+ list.forEach(detail -> {
|
|
|
+ Row row = sheet.createRow(rowNum.get());
|
|
|
+ Cell[] cells = new Cell[26];
|
|
|
+ for (int i = 0; i < cells.length; i++) {
|
|
|
+ cells[i] = row.createCell(i);
|
|
|
+ }
|
|
|
+ detail.setCells(cells);
|
|
|
+ rowNum.getAndIncrement();
|
|
|
+ });
|
|
|
+
|
|
|
+ // 清空response
|
|
|
+ response.reset();
|
|
|
+ // 设置response的Header
|
|
|
+ response.setCharacterEncoding("UTF-8");
|
|
|
+ //Content-Disposition的作用:告知浏览器以何种方式显示响应返回的文件,用浏览器打开还是以附件的形式下载到本地保存
|
|
|
+ //attachment表示以附件方式下载 inline表示在线打开 "Content-Disposition: inline; filename=文件名.mp3"
|
|
|
+ // filename表示文件的默认名称,因为网络传输只支持URL编码的相关支付,因此需要将文件名URL编码后进行传输,前端收到后需要反编码才能获取到真正的名称
|
|
|
+ response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("毛高" + height + "设备明细导出" + System.currentTimeMillis() + ".xlsx", "UTF-8"));
|
|
|
+ response.setContentType("application/octet-stream");
|
|
|
+ wb.write(outputStream);
|
|
|
+ outputStream.flush();
|
|
|
+ } catch (IOException ex) {
|
|
|
+ ex.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
@@ -197,7 +229,7 @@ public class ApiController extends BaseController {
|
|
|
List<TwinRecordAlarms> alarms = recordAlarmsService.selectTwinRecordAlarmsList(recordAlarms);
|
|
|
// path是指想要下载的文件的路径
|
|
|
// 读取现有的xlsx文件
|
|
|
- try (FileInputStream inputStream = new FileInputStream(excelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
|
|
|
+ try (FileInputStream inputStream = new FileInputStream(totalExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
|
|
|
Sheet sheet = wb.getSheetAt(0);
|
|
|
AtomicInteger rowNum = new AtomicInteger(2);
|
|
|
//填充数据
|
|
@@ -207,58 +239,7 @@ public class ApiController extends BaseController {
|
|
|
for (int i = 0; i < cells.length; i++) {
|
|
|
cells[i] = row.createCell(i);
|
|
|
}
|
|
|
- //设备名称
|
|
|
- cells[0].setCellValue(calc2hr.getRemark());
|
|
|
- //时间
|
|
|
- cells[1].setCellValue(DateUtils.parseDateToStr(calc2hr.getDataDate()));
|
|
|
- //总长
|
|
|
- cells[2].setCellValue(calc2hr.getLengthA().add(calc2hr.getLengthB()).floatValue());
|
|
|
- //总重
|
|
|
- cells[3].setCellValue(calc2hr.getWeightA().add(calc2hr.getWeightB()).floatValue());
|
|
|
- //总稼动率
|
|
|
- BigDecimal totalOpenTime = calc2hr.getOpenTimeA().add(calc2hr.getOpenTimeB());
|
|
|
- BigDecimal totalCloseTime = calc2hr.getCloseTimeA().add(calc2hr.getCloseTimeB());
|
|
|
- cells[4].setCellValue(Tools.calcPercent(totalOpenTime, totalCloseTime).floatValue());
|
|
|
- // 总电量
|
|
|
- cells[5].setCellValue(calc2hr.getKwh().floatValue());
|
|
|
- //告警次数
|
|
|
- cells[6].setCellValue(calc2hr.getAlarm());
|
|
|
- //A班米长
|
|
|
- cells[7].setCellValue(calc2hr.getLengthA().floatValue());
|
|
|
- //A班重量
|
|
|
- cells[8].setCellValue(calc2hr.getWeightA().floatValue());
|
|
|
- //A班开机时间
|
|
|
- cells[9].setCellValue(calc2hr.getOpenTimeA().floatValue());
|
|
|
- //A班停机时间
|
|
|
- cells[10].setCellValue(calc2hr.getCloseTimeA().floatValue());
|
|
|
- //A班稼动率
|
|
|
- cells[11].setCellValue(Tools.calcPercent(calc2hr.getOpenTimeA(), calc2hr.getCloseTimeA()).floatValue());
|
|
|
- //A班电量
|
|
|
- cells[12].setCellValue(calc2hr.getKwhA().floatValue());
|
|
|
- //A班停经片停机次数
|
|
|
- cells[13].setCellValue(calc2hr.getStop1A());
|
|
|
- //A班CCD停机次数
|
|
|
- cells[14].setCellValue(calc2hr.getStop2A());
|
|
|
- //A班人工停机次数
|
|
|
- cells[15].setCellValue(calc2hr.getStop3A());
|
|
|
- //B班米长
|
|
|
- cells[16].setCellValue(calc2hr.getLengthB().floatValue());
|
|
|
- //B班重量
|
|
|
- cells[17].setCellValue(calc2hr.getWeightB().floatValue());
|
|
|
- //B班开机时间
|
|
|
- cells[18].setCellValue(calc2hr.getOpenTimeB().floatValue());
|
|
|
- //B班停机时间
|
|
|
- cells[19].setCellValue(calc2hr.getCloseTimeB().floatValue());
|
|
|
- //B班稼动率
|
|
|
- cells[20].setCellValue(Tools.calcPercent(calc2hr.getOpenTimeB(), calc2hr.getCloseTimeB()).floatValue());
|
|
|
- //B班电量
|
|
|
- cells[21].setCellValue(calc2hr.getKwhB().floatValue());
|
|
|
- //B班停经片停机次数
|
|
|
- cells[22].setCellValue(calc2hr.getStop1B());
|
|
|
- //B班CCD停机次数
|
|
|
- cells[23].setCellValue(calc2hr.getStop2B());
|
|
|
- //B班人工停机次数
|
|
|
- cells[24].setCellValue(calc2hr.getStop3B());
|
|
|
+ calc2hr.setCells(cells);
|
|
|
rowNum.getAndIncrement();
|
|
|
});
|
|
|
|
|
@@ -306,7 +287,7 @@ public class ApiController extends BaseController {
|
|
|
//Content-Disposition的作用:告知浏览器以何种方式显示响应返回的文件,用浏览器打开还是以附件的形式下载到本地保存
|
|
|
//attachment表示以附件方式下载 inline表示在线打开 "Content-Disposition: inline; filename=文件名.mp3"
|
|
|
// filename表示文件的默认名称,因为网络传输只支持URL编码的相关支付,因此需要将文件名URL编码后进行传输,前端收到后需要反编码才能获取到真正的名称
|
|
|
- response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("数据导出" + System.currentTimeMillis() + ".xlsx", "UTF-8"));
|
|
|
+ response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("告警数据导出" + System.currentTimeMillis() + ".xlsx", "UTF-8"));
|
|
|
response.setContentType("application/octet-stream");
|
|
|
wb.write(outputStream);
|
|
|
outputStream.flush();
|