diff --git a/pqs-event/event-common/src/main/java/com/njcn/event/common/service/impl/CommMonitorEventReportServiceImpl.java b/pqs-event/event-common/src/main/java/com/njcn/event/common/service/impl/CommMonitorEventReportServiceImpl.java index 11a51c4d8..f524d8175 100644 --- a/pqs-event/event-common/src/main/java/com/njcn/event/common/service/impl/CommMonitorEventReportServiceImpl.java +++ b/pqs-event/event-common/src/main/java/com/njcn/event/common/service/impl/CommMonitorEventReportServiceImpl.java @@ -79,7 +79,7 @@ public class CommMonitorEventReportServiceImpl implements CommMonitorEventReport private final RmpEventDetailMapper rmpEventDetailMapper; - private final WaveService waveService; + //private final WaveService waveService; private final DrawPicUtil drawPicUtil; diff --git a/pqs-event/event-common/src/main/java/com/njcn/event/common/utils/WordUtil.java b/pqs-event/event-common/src/main/java/com/njcn/event/common/utils/WordUtil.java index e0191a272..e5ba08c93 100644 --- a/pqs-event/event-common/src/main/java/com/njcn/event/common/utils/WordUtil.java +++ b/pqs-event/event-common/src/main/java/com/njcn/event/common/utils/WordUtil.java @@ -1,684 +1,684 @@ -package com.njcn.event.common.utils; - - -import com.njcn.event.common.pojo.dto.EventEigDetail; -import com.njcn.event.pojo.po.RmpEventDetailPO; -import net.sf.json.JSONArray; -import org.apache.poi.openxml4j.exceptions.InvalidFormatException; -import org.apache.poi.util.Units; -import org.apache.poi.xwpf.usermodel.*; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; -import sun.misc.BASE64Decoder; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.math.BigInteger; -import java.text.SimpleDateFormat; -import java.util.*; - -public class WordUtil { - private Map> listShunPic = new HashMap<>(); - private Map> listRmsPic = new HashMap<>(); - private XWPFDocument document; - private Map> eventDetailEigenvalue = new HashMap<>(); - private Map eventInfoList = new HashMap<>(); - - public void setEventInfoList(Integer index, RmpEventDetailPO eventInfoList) { - RmpEventDetailPO tmp = eventInfoList == null ? new RmpEventDetailPO() : eventInfoList; - this.eventInfoList.put(index, tmp); - } - - public void setEventDetailEigenvalue(Integer index, List eventDetailEigenvalue) { - List tmp = eventDetailEigenvalue == null ? new ArrayList<>() : eventDetailEigenvalue; - this.eventDetailEigenvalue.put(index, tmp); - } - - public XWPFDocument getDocument() { - return document; - } - - public WordUtil() { - this.document = new XWPFDocument(); - } - - public void translateShun(Integer index, List strPic) { - BASE64Decoder decoder = new BASE64Decoder(); - List tmp = new ArrayList<>(); - - for (int i = 0; i < strPic.size(); i++) { - try { - byte[] buffer = decoder.decodeBuffer(strPic.get(i)); - tmp.add(buffer); - } catch (Exception e) { - } - } - listShunPic.put(index, tmp); - } - - public void translateRms(Integer index, List strPic) { - BASE64Decoder decoder = new BASE64Decoder(); - List tmp = new ArrayList<>(); - - for (int i = 0; i < strPic.size(); i++) { - try { - byte[] buffer = decoder.decodeBuffer(strPic.get(i)); - tmp.add(buffer); - } catch (Exception e) { - } - } - listRmsPic.put(index, tmp); - } - - public void createReport(Integer length) throws IOException, InvalidFormatException { - setHeadingStyle(this.document); - - // 添加标题 - XWPFParagraph titleParagraph = getCenterParagraph(this.document); - addLine(titleParagraph, 11); - // 设置段落居中 - XWPFRun titleParagraphBigRun = titleParagraph.createRun(); - addParagraph(titleParagraphBigRun, "宋体", 28, "000000", "暂降事件报告", true); - addLine(titleParagraph, 17); - XWPFRun titleParagraphDateRun = titleParagraph.createRun(); - addParagraph(titleParagraphDateRun, "宋体", 16, "000000", "南京灿能电力自动化股份有限公司", false); - addLine(titleParagraph, 1); - titleParagraphDateRun = titleParagraph.createRun(); - addParagraph(titleParagraphDateRun, "宋体", 14, "000000", "生成时间:" + getRightNow(), false); - addLine(titleParagraph, 8); - titleParagraph = getLeftParagraph(this.document); - titleParagraphDateRun = titleParagraph.createRun(); - addParagraph(titleParagraphDateRun, "宋体", 10, "000000", "【申明】本公司保留对报告的修改权,恕不另行通知,敬请关注最新版本。", false); - for (int m = 0; m < length; m++) { - List eventDetailEigenvaluetmp = this.eventDetailEigenvalue.get(m); - - SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - String time = sdfs.format(eventInfoList.get(m).getStartTime()); - createTitle(document, String.valueOf(m+1) + ". " +time, "标题 1", 0, 20); - createTitle(document, String.valueOf(m+1) + "." +"1. 基本信息", "标题 2", 0, 15); - XWPFParagraph introductionContentParagraph = getLeftParagraph(document); - introductionContentParagraph.setIndentationFirstLine(200); - XWPFRun introductionContentRun = introductionContentParagraph.createRun(); - addParagraph(introductionContentRun, "宋体", 11, "000000", - eventInfoList.get(m).getGdName() + "," + eventInfoList.get(m).getBdzName() + ",网络参数:" + eventInfoList.get(m).getIp() - + "," + eventInfoList.get(m).getLineName() + "于" + time + "发生暂降事件,特征幅值:" - + String.valueOf(eventInfoList.get(m).getEventValue()) + "%,持续时间:" + eventInfoList.get(m).getPersistTime() - + "s。", - false); - createTitle(document, String.valueOf(m+1) + "." +"2. 波形图", "标题 2", 0, 15); - createTitle(document, String.valueOf(m+1) + "." +"2.1 瞬时波形图", "标题 3", 200, 11); - for(int shun = 0;shun< listShunPic.get(m).size();shun++){ - createPic(document, "瞬时波形"+String.valueOf(shun), listShunPic.get(m).get(shun)); - } - createTitle(document, String.valueOf(m+1) + "." +"2.2 RMS波形图", "标题 3", 200, 11); - for(int rms = 0;rms< listRmsPic.get(m).size();rms++){ - createPic(document, "RMS波形"+String.valueOf(rms), listRmsPic.get(m).get(rms)); - } - createTitle(document, String.valueOf(m+1) + "." +"3. 多特征值", "标题 2", 0, 15); - - XWPFParagraph value = getLeftParagraph(document); - XWPFRun valuex = value.createRun(); - addParagraph(valuex, "宋体", 11, "000000", "事件总分段数:" + eventDetailEigenvaluetmp.size(), false); - addLine(value, 1); - - if (eventDetailEigenvaluetmp.size() == 0) { - continue; - } - valuex = value.createRun(); - addParagraph(valuex, "宋体", 11, "000000", "暂降原因:" + eventDetailEigenvaluetmp.get(0).getSagReason(), false); - addLine(value, 1); - - for (int i = 0; i < eventDetailEigenvaluetmp.size(); i++) { - valuex = value.createRun(); - addParagraph(valuex, "宋体", 11, "000000", "分段" + (i + 1) + "多特征值", true); - addLine(value, 1); - valuex = value.createRun(); - addParagraph(valuex, "宋体", 11, "000000", - "波形起始点相位(°):" + (eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "A" : "AB") + "相" - + eventDetailEigenvaluetmp.get(i).getPow_a() + " " - + (eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "B" : "BC") + "相" - + eventDetailEigenvaluetmp.get(i).getPow_b() + " " - + ((eventDetailEigenvaluetmp.get(0).getPttype() == 2) ? "" - : ((eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "C" : "CA") + "相" - + eventDetailEigenvaluetmp.get(i).getPow_c())), - false); - addLine(value, 1); - valuex = value.createRun(); - addParagraph(valuex, "宋体", 11, "000000", - "跳变段电压变化率(V/ms):" + (eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "A" : "AB") + "相" - + eventDetailEigenvaluetmp.get(i).getVoltagechange_Va() + " " - + (eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "B" : "BC") + "相" - + eventDetailEigenvaluetmp.get(i).getVoltagechange_Vb() + " " - + ((eventDetailEigenvaluetmp.get(0).getPttype() == 2) ? "" - : ((eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "C" : "CA") + "相" - + eventDetailEigenvaluetmp.get(i).getVoltagechange_Vc())), - false); - addLine(value, 1); - valuex = value.createRun(); - addParagraph(valuex, "宋体", 11, "000000", - "相位跳变(°):" + (eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "A" : "AB") + "相" - + eventDetailEigenvaluetmp.get(i).getAngle_diff_ap() + " " - + (eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "B" : "BC") + "相" - + eventDetailEigenvaluetmp.get(i).getAngle_diff_bp() + " " - + ((eventDetailEigenvaluetmp.get(0).getPttype() == 2) ? "" - : ((eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "C" : "CA") + "相" - + eventDetailEigenvaluetmp.get(i).getAngle_diff_cp())), - false); - /* - * addLine(value, 1); valuex = value.createRun(); - * addParagraph(valuex, "宋体", 11, "000000", "特征幅值(V):A相" + - * this.eventDetailEigenvalue.get(i).getUa_min() + " B相" + - * this.eventDetailEigenvalue.get(i).getUb_min() + " C相" + - * this.eventDetailEigenvalue.get(i).getUc_min(), false); - */ - /* - * addLine(value, 1); valuex = value.createRun(); - * addParagraph(valuex, "宋体", 11, "000000", "持续时间(ms):" + - * this.eventDetailEigenvalue.get(i).getHold_time_dq(), false); - */ - addLine(value, 1); - valuex = value.createRun(); - addParagraph(valuex, "宋体", 11, "000000", - "不平衡度(%):" + eventDetailEigenvaluetmp.get(i).getBph_max_value(), false); - addLine(value, 1); - valuex = value.createRun(); - addParagraph(valuex, "宋体", 11, "000000", "暂降类型:" + eventDetailEigenvaluetmp.get(i).getSagType(), - false); - addLine(value, 1); - } - } - } - - public void createPic(XWPFDocument document, String name, byte[] base64Info) - throws IOException, InvalidFormatException { - XWPFParagraph picParagraph = getCenterParagraph(document); - XWPFRun createRun = picParagraph.createRun(); - InputStream in = new ByteArrayInputStream(base64Info); - createRun.addPicture(in, 5, name, Units.toEMU(410), Units.toEMU(170)); - } - - public void createTitle(XWPFDocument document, String message, String style, int line, int fontSize) { - XWPFParagraph summaeTableParagraph = getLeftParagraph(document); - summaeTableParagraph.setStyle(style); - summaeTableParagraph.setIndentationFirstLine(line); - XWPFRun summaeTableRun = summaeTableParagraph.createRun(); - addParagraph(summaeTableRun, "宋体", fontSize, "000000", message, false); - } - - public void setParagraphStyle(XWPFParagraph paragraph) { - paragraph.setSpacingBefore(100); - paragraph.setSpacingAfter(100); - } - - /** - * 返回指定格式的段落 居中型 - * - * @param document - * 文档对象 - */ - public XWPFParagraph getCenterParagraph(XWPFDocument document) { - XWPFParagraph paragraph = document.createParagraph(); - setParagraphStyle(paragraph); - paragraph.setAlignment(ParagraphAlignment.CENTER); - paragraph.setVerticalAlignment(TextAlignment.CENTER); - return paragraph; - } - - /** - * 返回指定格式的段落 居左型 - * - * @param document - * 文档对象 - */ - public XWPFParagraph getLeftParagraph(XWPFDocument document) { - XWPFParagraph paragraph = document.createParagraph(); - setParagraphStyle(paragraph); - paragraph.setAlignment(ParagraphAlignment.LEFT); - return paragraph; - } - - /** - * 添加换行符 - * - * @param paragraph - * 指定段落 - * @param amount - * 行数 - */ - public void addLine(XWPFParagraph paragraph, Integer amount) { - XWPFRun run = paragraph.createRun(); - run.setFontSize(11); - for (int i = 0; i < amount; i++) { - run.addCarriageReturn(); - } - } - - /** - * 添加段落文本 - * - * @param run - * 文本执行对象 - * @param fontFamily - * 字体类型 - * @param fontSize - * 字体大小 - * @param backgroundColor - * 字体颜色 - * @param bold - * 是否加粗 - */ - public void addParagraph(XWPFRun run, String fontFamily, Integer fontSize, String backgroundColor, String message, - boolean bold) { - run.setText(message); - run.setColor(backgroundColor); - run.setFontSize(fontSize); - run.setFontFamily(fontFamily); - run.setBold(bold); - } - - /** - * 增加自定义标题样式。这里用的是stackoverflow的源码 - * - * @param docxDocument - * 目标文档 - * @param strStyleId - * 样式名称 - * @param headingLevel - * 样式级别 - */ - public void addCustomHeadingStyle(XWPFDocument docxDocument, String strStyleId, int headingLevel) { - - CTStyle ctStyle = CTStyle.Factory.newInstance(); - ctStyle.setStyleId(strStyleId); - - CTString styleName = CTString.Factory.newInstance(); - styleName.setVal(strStyleId); - ctStyle.setName(styleName); - - CTDecimalNumber indentNumber = CTDecimalNumber.Factory.newInstance(); - indentNumber.setVal(BigInteger.valueOf(headingLevel)); - - // lower number > style is more prominent in the formats bar - ctStyle.setUiPriority(indentNumber); - - CTOnOff onoffnull = CTOnOff.Factory.newInstance(); - ctStyle.setUnhideWhenUsed(onoffnull); - - // style shows up in the formats bar - ctStyle.setQFormat(onoffnull); - - // style defines a heading of the given level - CTPPr ppr = CTPPr.Factory.newInstance(); - ppr.setOutlineLvl(indentNumber); - ctStyle.setPPr(ppr); - - XWPFStyle style = new XWPFStyle(ctStyle); - - // is a null op if already defined - XWPFStyles styles = docxDocument.createStyles(); - - style.setType(STStyleType.PARAGRAPH); - styles.addStyle(style); - - } - - /** - * 设置文档中标题格式 - */ - public void setHeadingStyle(XWPFDocument document) { - addCustomHeadingStyle(document, "标题 1", 1); - addCustomHeadingStyle(document, "标题 2", 2); - addCustomHeadingStyle(document, "标题 3", 3); - addCustomHeadingStyle(document, "标题 4", 4); - addCustomHeadingStyle(document, "标题 5", 5); - addCustomHeadingStyle(document, "标题 6", 6); - addCustomHeadingStyle(document, "标题 7", 7); - } - - /** - * 给表格添加一行数据 - * - * @param paragraph - * 段落对象 - * @param row - * 行对象 - * @param data - * 不定长度的数据 - */ - public void setExcelContent(XWPFParagraph paragraph, XWPFTableRow row, String... data) { - for (int i = 0; i < data.length; i++) { - XWPFRun run = paragraph.createRun(); - run.setFontFamily("宋体"); - run.setText(data[i]); - row.getCell(i).setParagraph(paragraph); - paragraph.removeRun(0); - } - } - - /** - * 添加表头标题一行数据 - * - * @param paragraph - * 段落对象 - * @param row - * 行对象 - * @param data - * 不定长度的数据 - */ - public void setExcelHeadContent(XWPFParagraph paragraph, XWPFTableRow row, String... data) { - XWPFRun run = paragraph.createRun(); - run.setFontFamily("宋体"); - run.setBold(true); - run.setText(data[0]); - row.getCell(0).setParagraph(paragraph); - paragraph.removeRun(0); - for (int i = 1; i < data.length; i++) { - XWPFRun run1 = paragraph.createRun(); - run1.setFontFamily("宋体"); - run1.setBold(true); - run1.setText(data[i]); - row.addNewTableCell().setParagraph(paragraph); - paragraph.removeRun(0); - } - } - - /** - * 获取当前的日期 - * - * @return - */ - public String getRightNow() { - Calendar rightNow = Calendar.getInstance(); - Integer year = rightNow.get(Calendar.YEAR); - Integer month = rightNow.get(Calendar.MONTH) + 1; - Integer day = rightNow.get(rightNow.DAY_OF_MONTH); - return year + "年" + month + "月" + day + "日"; - } - - public String createWave(WaveData waveData) throws Exception { - HashMap datas = new HashMap<>(); - List> sunData = waveData.getSunData(); - int iphasic =waveData.getiPhasic(); - float pt = waveData.getPt() / 1000; - float ifmax = 0f, ifmin = 0f; - List> adata = new ArrayList<>(); - List> bdata = new ArrayList<>(); - List> cdata = new ArrayList<>(); - - if (sunData.size() > 0) { - ifmax = sunData.get(0).get(1) * pt; - ifmin = sunData.get(0).get(1) * pt; - } - List colors =new ArrayList<>(); - - for (int i = 0; i < sunData.size(); i++) { - float x = sunData.get(i).get(0); - if(iphasic==1){ - float shunFirstA = sunData.get(i).get(1) * pt; - List a = new ArrayList() { - { - add(x); - add(shunFirstA); - } - }; - adata.add(a); - ifmax = ifmax > shunFirstA ? ifmax : shunFirstA; - ifmin = ifmin < shunFirstA ? ifmin : shunFirstA; - colors.add("#DAA520"); - colors.add("#fff"); - colors.add("#fff"); - - datas.put("a", waveData.getA()); - datas.put("b", ""); - datas.put("c", ""); - }else if(iphasic==2){ - float shunFirstA = sunData.get(i).get(1) * pt; - float shunFirstB = sunData.get(i).get(2) * pt; - List a = new ArrayList() { - { - add(x); - add(shunFirstA); - } - }; - adata.add(a); - - List b = new ArrayList() { - { - add(x); - add(shunFirstB); - } - }; - bdata.add(b); - - ifmax = getMaxTwo(ifmax, shunFirstA, shunFirstB); - ifmin = getMinTwo(ifmin, shunFirstA, shunFirstB); - - colors.add("#DAA520"); - colors.add("#2E8B57"); - colors.add("#fff"); - - datas.put("a", waveData.getA()); - datas.put("b", waveData.getB()); - datas.put("c", ""); - - }else if(iphasic==3){ - float shunFirstA = sunData.get(i).get(1) * pt; - float shunFirstB = sunData.get(i).get(2) * pt; - float shunFirstC = sunData.get(i).get(3) * pt; - List a = new ArrayList() { - { - add(x); - add(shunFirstA); - } - }; - adata.add(a); - - List b = new ArrayList() { - { - add(x); - add(shunFirstB); - } - }; - bdata.add(b); - - List c = new ArrayList() { - { - add(x); - add(shunFirstC); - } - }; - cdata.add(c); - ifmax = getMax(ifmax, shunFirstA, shunFirstB, shunFirstC); - ifmin = getMin(ifmin, shunFirstA, shunFirstB, shunFirstC); - - colors.add("#DAA520"); - colors.add("#2E8B57"); - colors.add("#A52a2a"); - - datas.put("a", waveData.getA()); - datas.put("b", waveData.getB()); - datas.put("c", waveData.getC()); - } - - - } - - String time = waveData.getTime(); - time = time.replace(" ", "%20"); - float severity = waveData.getYzd(); - String strSeverity = String.valueOf(severity); - String type = waveData.getWaveType(); - - if (severity < 0) { - strSeverity = "/"; - type = "/"; - } - - String title = "监测点名称:" + waveData.getLineName() + "%20发生时刻:" + time + "%20特征幅值:" + waveData.getEventValue() - + "%25%20持续时间:" + waveData.getPersistTime() + "s"; - - - datas.put("title", title); - datas.put("adata", JSONArray.fromObject(adata).toString()); - datas.put("bdata", JSONArray.fromObject(bdata).toString()); - datas.put("cdata", JSONArray.fromObject(cdata).toString()); - datas.put("unit", "kV"); - datas.put("max", String.valueOf(ifmax)); - datas.put("min", String.valueOf(ifmin)); - datas.put("colors", JSONArray.fromObject(colors).toString()); - datas.put("cshow", Boolean.toString(!waveData.getOpenTri())); - - - String option = FreemarkerUtil.generateString("wave.ftl", "com/pqs9200/template", datas); - return EchartsUtil.generateEchartsBase64(option, "3003"); - } - - public String createRms(WaveData waveData) throws IOException, TemplateException { - List> rmsData = waveData.getRmsData(); - HashMap datas = new HashMap<>(); - int iphasic =waveData.getiPhasic(); - float pt = waveData.getPt() / 1000; - List> adata = new ArrayList<>(); - List> bdata = new ArrayList<>(); - List> cdata = new ArrayList<>(); - - List colors =new ArrayList<>(); - for (int i = 0; i < rmsData.size(); i++) { - float x = rmsData.get(i).get(0); - if(iphasic==1){ - float rmsFirstA = rmsData.get(i).get(1) * pt; - List a = new ArrayList() { - { - add(x); - add(rmsFirstA); - } - }; - adata.add(a); - - colors.add("#DAA520"); - colors.add("#fff"); - colors.add("#fff"); - - datas.put("a", waveData.getA()); - datas.put("b", ""); - datas.put("c", ""); - }else if(iphasic==2){ - float rmsFirstA = rmsData.get(i).get(1) * pt; - float rmsFirstB = rmsData.get(i).get(2) * pt; - List a = new ArrayList() { - { - add(x); - add(rmsFirstA); - } - }; - adata.add(a); - - List b = new ArrayList() { - { - add(x); - add(rmsFirstB); - } - }; - bdata.add(b); - - colors.add("#DAA520"); - colors.add("#2E8B57"); - colors.add("#fff"); - - datas.put("a", waveData.getA()); - datas.put("b", waveData.getB()); - datas.put("c", ""); - }else if(iphasic==3){ - float rmsFirstA = rmsData.get(i).get(1) * pt; - float rmsFirstB = rmsData.get(i).get(2) * pt; - float rmsFirstC = rmsData.get(i).get(3) * pt; - - List a = new ArrayList() { - { - add(x); - add(rmsFirstA); - } - }; - adata.add(a); - - List b = new ArrayList() { - { - add(x); - add(rmsFirstB); - } - }; - bdata.add(b); - - List c = new ArrayList() { - { - add(x); - add(rmsFirstC); - } - }; - cdata.add(c); - - colors.add("#DAA520"); - colors.add("#2E8B57"); - colors.add("#A52a2a"); - - datas.put("a", waveData.getA()); - datas.put("b", waveData.getB()); - datas.put("c", waveData.getC()); - } - - - } - - String time = waveData.getTime(); - time = time.replace(" ", "%20"); // 时分秒 - float severity = waveData.getYzd(); - String strSeverity = String.valueOf(severity); - String type = waveData.getWaveType(); - - if (severity < 0) { - strSeverity = "/"; - type = "/"; - } - - String title = "监测点名称:" + waveData.getLineName() + "%20发生时刻:" + time + "%20特征幅值:" + waveData.getEventValue() - + "%25%20持续时间:" + waveData.getPersistTime() + "s"; - - - datas.put("title", title); - datas.put("adata", JSONArray.fromObject(adata).toString()); - datas.put("bdata", JSONArray.fromObject(bdata).toString()); - datas.put("cdata", JSONArray.fromObject(cdata).toString()); - datas.put("unit", "kV"); - datas.put("colors", JSONArray.fromObject(colors).toString()); - datas.put("cshow", Boolean.toString(!waveData.getOpenTri())); - - String option = FreemarkerUtil.generateString("rms.ftl", "com/pqs9200/template", datas); - return EchartsUtil.generateEchartsBase64(option, "3003"); - } - - private float getMin(float temp, float tempA, float tempB, float tempC) { - temp = temp < tempA ? temp : tempA; - temp = temp < tempB ? temp : tempB; - temp = temp < tempC ? temp : tempC; - return temp; - } - - private float getMinTwo(float temp, float tempA, float tempB) { - temp = temp < tempA ? temp : tempA; - temp = temp < tempB ? temp : tempB; - return temp; - } - - private float getMax(float temp, float tempA, float tempB, float tempC) { - temp = temp > tempA ? temp : tempA; - temp = temp > tempB ? temp : tempB; - temp = temp > tempC ? temp : tempC; - return temp; - } - - private float getMaxTwo(float temp, float tempA, float tempB) { - temp = temp > tempA ? temp : tempA; - temp = temp > tempB ? temp : tempB; - return temp; - } -} +//package com.njcn.event.common.utils; +// +// +//import com.njcn.event.common.pojo.dto.EventEigDetail; +//import com.njcn.event.pojo.po.RmpEventDetailPO; +//import net.sf.json.JSONArray; +//import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +//import org.apache.poi.util.Units; +//import org.apache.poi.xwpf.usermodel.*; +//import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; +//import sun.misc.BASE64Decoder; +// +//import java.io.ByteArrayInputStream; +//import java.io.IOException; +//import java.io.InputStream; +//import java.math.BigInteger; +//import java.text.SimpleDateFormat; +//import java.util.*; +// +//public class WordUtil { +// private Map> listShunPic = new HashMap<>(); +// private Map> listRmsPic = new HashMap<>(); +// private XWPFDocument document; +// private Map> eventDetailEigenvalue = new HashMap<>(); +// private Map eventInfoList = new HashMap<>(); +// +// public void setEventInfoList(Integer index, RmpEventDetailPO eventInfoList) { +// RmpEventDetailPO tmp = eventInfoList == null ? new RmpEventDetailPO() : eventInfoList; +// this.eventInfoList.put(index, tmp); +// } +// +// public void setEventDetailEigenvalue(Integer index, List eventDetailEigenvalue) { +// List tmp = eventDetailEigenvalue == null ? new ArrayList<>() : eventDetailEigenvalue; +// this.eventDetailEigenvalue.put(index, tmp); +// } +// +// public XWPFDocument getDocument() { +// return document; +// } +// +// public WordUtil() { +// this.document = new XWPFDocument(); +// } +// +// public void translateShun(Integer index, List strPic) { +// BASE64Decoder decoder = new BASE64Decoder(); +// List tmp = new ArrayList<>(); +// +// for (int i = 0; i < strPic.size(); i++) { +// try { +// byte[] buffer = decoder.decodeBuffer(strPic.get(i)); +// tmp.add(buffer); +// } catch (Exception e) { +// } +// } +// listShunPic.put(index, tmp); +// } +// +// public void translateRms(Integer index, List strPic) { +// BASE64Decoder decoder = new BASE64Decoder(); +// List tmp = new ArrayList<>(); +// +// for (int i = 0; i < strPic.size(); i++) { +// try { +// byte[] buffer = decoder.decodeBuffer(strPic.get(i)); +// tmp.add(buffer); +// } catch (Exception e) { +// } +// } +// listRmsPic.put(index, tmp); +// } +// +// public void createReport(Integer length) throws IOException, InvalidFormatException { +// setHeadingStyle(this.document); +// +// // 添加标题 +// XWPFParagraph titleParagraph = getCenterParagraph(this.document); +// addLine(titleParagraph, 11); +// // 设置段落居中 +// XWPFRun titleParagraphBigRun = titleParagraph.createRun(); +// addParagraph(titleParagraphBigRun, "宋体", 28, "000000", "暂降事件报告", true); +// addLine(titleParagraph, 17); +// XWPFRun titleParagraphDateRun = titleParagraph.createRun(); +// addParagraph(titleParagraphDateRun, "宋体", 16, "000000", "南京灿能电力自动化股份有限公司", false); +// addLine(titleParagraph, 1); +// titleParagraphDateRun = titleParagraph.createRun(); +// addParagraph(titleParagraphDateRun, "宋体", 14, "000000", "生成时间:" + getRightNow(), false); +// addLine(titleParagraph, 8); +// titleParagraph = getLeftParagraph(this.document); +// titleParagraphDateRun = titleParagraph.createRun(); +// addParagraph(titleParagraphDateRun, "宋体", 10, "000000", "【申明】本公司保留对报告的修改权,恕不另行通知,敬请关注最新版本。", false); +// for (int m = 0; m < length; m++) { +// List eventDetailEigenvaluetmp = this.eventDetailEigenvalue.get(m); +// +// SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); +// String time = sdfs.format(eventInfoList.get(m).getStartTime()); +// createTitle(document, String.valueOf(m+1) + ". " +time, "标题 1", 0, 20); +// createTitle(document, String.valueOf(m+1) + "." +"1. 基本信息", "标题 2", 0, 15); +// XWPFParagraph introductionContentParagraph = getLeftParagraph(document); +// introductionContentParagraph.setIndentationFirstLine(200); +// XWPFRun introductionContentRun = introductionContentParagraph.createRun(); +// addParagraph(introductionContentRun, "宋体", 11, "000000", +// eventInfoList.get(m).getGdName() + "," + eventInfoList.get(m).getBdzName() + ",网络参数:" + eventInfoList.get(m).getIp() +// + "," + eventInfoList.get(m).getLineName() + "于" + time + "发生暂降事件,特征幅值:" +// + String.valueOf(eventInfoList.get(m).getEventValue()) + "%,持续时间:" + eventInfoList.get(m).getPersistTime() +// + "s。", +// false); +// createTitle(document, String.valueOf(m+1) + "." +"2. 波形图", "标题 2", 0, 15); +// createTitle(document, String.valueOf(m+1) + "." +"2.1 瞬时波形图", "标题 3", 200, 11); +// for(int shun = 0;shun< listShunPic.get(m).size();shun++){ +// createPic(document, "瞬时波形"+String.valueOf(shun), listShunPic.get(m).get(shun)); +// } +// createTitle(document, String.valueOf(m+1) + "." +"2.2 RMS波形图", "标题 3", 200, 11); +// for(int rms = 0;rms< listRmsPic.get(m).size();rms++){ +// createPic(document, "RMS波形"+String.valueOf(rms), listRmsPic.get(m).get(rms)); +// } +// createTitle(document, String.valueOf(m+1) + "." +"3. 多特征值", "标题 2", 0, 15); +// +// XWPFParagraph value = getLeftParagraph(document); +// XWPFRun valuex = value.createRun(); +// addParagraph(valuex, "宋体", 11, "000000", "事件总分段数:" + eventDetailEigenvaluetmp.size(), false); +// addLine(value, 1); +// +// if (eventDetailEigenvaluetmp.size() == 0) { +// continue; +// } +// valuex = value.createRun(); +// addParagraph(valuex, "宋体", 11, "000000", "暂降原因:" + eventDetailEigenvaluetmp.get(0).getSagReason(), false); +// addLine(value, 1); +// +// for (int i = 0; i < eventDetailEigenvaluetmp.size(); i++) { +// valuex = value.createRun(); +// addParagraph(valuex, "宋体", 11, "000000", "分段" + (i + 1) + "多特征值", true); +// addLine(value, 1); +// valuex = value.createRun(); +// addParagraph(valuex, "宋体", 11, "000000", +// "波形起始点相位(°):" + (eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "A" : "AB") + "相" +// + eventDetailEigenvaluetmp.get(i).getPow_a() + " " +// + (eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "B" : "BC") + "相" +// + eventDetailEigenvaluetmp.get(i).getPow_b() + " " +// + ((eventDetailEigenvaluetmp.get(0).getPttype() == 2) ? "" +// : ((eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "C" : "CA") + "相" +// + eventDetailEigenvaluetmp.get(i).getPow_c())), +// false); +// addLine(value, 1); +// valuex = value.createRun(); +// addParagraph(valuex, "宋体", 11, "000000", +// "跳变段电压变化率(V/ms):" + (eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "A" : "AB") + "相" +// + eventDetailEigenvaluetmp.get(i).getVoltagechange_Va() + " " +// + (eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "B" : "BC") + "相" +// + eventDetailEigenvaluetmp.get(i).getVoltagechange_Vb() + " " +// + ((eventDetailEigenvaluetmp.get(0).getPttype() == 2) ? "" +// : ((eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "C" : "CA") + "相" +// + eventDetailEigenvaluetmp.get(i).getVoltagechange_Vc())), +// false); +// addLine(value, 1); +// valuex = value.createRun(); +// addParagraph(valuex, "宋体", 11, "000000", +// "相位跳变(°):" + (eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "A" : "AB") + "相" +// + eventDetailEigenvaluetmp.get(i).getAngle_diff_ap() + " " +// + (eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "B" : "BC") + "相" +// + eventDetailEigenvaluetmp.get(i).getAngle_diff_bp() + " " +// + ((eventDetailEigenvaluetmp.get(0).getPttype() == 2) ? "" +// : ((eventDetailEigenvaluetmp.get(0).getPttype() == 0 ? "C" : "CA") + "相" +// + eventDetailEigenvaluetmp.get(i).getAngle_diff_cp())), +// false); +// /* +// * addLine(value, 1); valuex = value.createRun(); +// * addParagraph(valuex, "宋体", 11, "000000", "特征幅值(V):A相" + +// * this.eventDetailEigenvalue.get(i).getUa_min() + " B相" + +// * this.eventDetailEigenvalue.get(i).getUb_min() + " C相" + +// * this.eventDetailEigenvalue.get(i).getUc_min(), false); +// */ +// /* +// * addLine(value, 1); valuex = value.createRun(); +// * addParagraph(valuex, "宋体", 11, "000000", "持续时间(ms):" + +// * this.eventDetailEigenvalue.get(i).getHold_time_dq(), false); +// */ +// addLine(value, 1); +// valuex = value.createRun(); +// addParagraph(valuex, "宋体", 11, "000000", +// "不平衡度(%):" + eventDetailEigenvaluetmp.get(i).getBph_max_value(), false); +// addLine(value, 1); +// valuex = value.createRun(); +// addParagraph(valuex, "宋体", 11, "000000", "暂降类型:" + eventDetailEigenvaluetmp.get(i).getSagType(), +// false); +// addLine(value, 1); +// } +// } +// } +// +// public void createPic(XWPFDocument document, String name, byte[] base64Info) +// throws IOException, InvalidFormatException { +// XWPFParagraph picParagraph = getCenterParagraph(document); +// XWPFRun createRun = picParagraph.createRun(); +// InputStream in = new ByteArrayInputStream(base64Info); +// createRun.addPicture(in, 5, name, Units.toEMU(410), Units.toEMU(170)); +// } +// +// public void createTitle(XWPFDocument document, String message, String style, int line, int fontSize) { +// XWPFParagraph summaeTableParagraph = getLeftParagraph(document); +// summaeTableParagraph.setStyle(style); +// summaeTableParagraph.setIndentationFirstLine(line); +// XWPFRun summaeTableRun = summaeTableParagraph.createRun(); +// addParagraph(summaeTableRun, "宋体", fontSize, "000000", message, false); +// } +// +// public void setParagraphStyle(XWPFParagraph paragraph) { +// paragraph.setSpacingBefore(100); +// paragraph.setSpacingAfter(100); +// } +// +// /** +// * 返回指定格式的段落 居中型 +// * +// * @param document +// * 文档对象 +// */ +// public XWPFParagraph getCenterParagraph(XWPFDocument document) { +// XWPFParagraph paragraph = document.createParagraph(); +// setParagraphStyle(paragraph); +// paragraph.setAlignment(ParagraphAlignment.CENTER); +// paragraph.setVerticalAlignment(TextAlignment.CENTER); +// return paragraph; +// } +// +// /** +// * 返回指定格式的段落 居左型 +// * +// * @param document +// * 文档对象 +// */ +// public XWPFParagraph getLeftParagraph(XWPFDocument document) { +// XWPFParagraph paragraph = document.createParagraph(); +// setParagraphStyle(paragraph); +// paragraph.setAlignment(ParagraphAlignment.LEFT); +// return paragraph; +// } +// +// /** +// * 添加换行符 +// * +// * @param paragraph +// * 指定段落 +// * @param amount +// * 行数 +// */ +// public void addLine(XWPFParagraph paragraph, Integer amount) { +// XWPFRun run = paragraph.createRun(); +// run.setFontSize(11); +// for (int i = 0; i < amount; i++) { +// run.addCarriageReturn(); +// } +// } +// +// /** +// * 添加段落文本 +// * +// * @param run +// * 文本执行对象 +// * @param fontFamily +// * 字体类型 +// * @param fontSize +// * 字体大小 +// * @param backgroundColor +// * 字体颜色 +// * @param bold +// * 是否加粗 +// */ +// public void addParagraph(XWPFRun run, String fontFamily, Integer fontSize, String backgroundColor, String message, +// boolean bold) { +// run.setText(message); +// run.setColor(backgroundColor); +// run.setFontSize(fontSize); +// run.setFontFamily(fontFamily); +// run.setBold(bold); +// } +// +// /** +// * 增加自定义标题样式。这里用的是stackoverflow的源码 +// * +// * @param docxDocument +// * 目标文档 +// * @param strStyleId +// * 样式名称 +// * @param headingLevel +// * 样式级别 +// */ +// public void addCustomHeadingStyle(XWPFDocument docxDocument, String strStyleId, int headingLevel) { +// +// CTStyle ctStyle = CTStyle.Factory.newInstance(); +// ctStyle.setStyleId(strStyleId); +// +// CTString styleName = CTString.Factory.newInstance(); +// styleName.setVal(strStyleId); +// ctStyle.setName(styleName); +// +// CTDecimalNumber indentNumber = CTDecimalNumber.Factory.newInstance(); +// indentNumber.setVal(BigInteger.valueOf(headingLevel)); +// +// // lower number > style is more prominent in the formats bar +// ctStyle.setUiPriority(indentNumber); +// +// CTOnOff onoffnull = CTOnOff.Factory.newInstance(); +// ctStyle.setUnhideWhenUsed(onoffnull); +// +// // style shows up in the formats bar +// ctStyle.setQFormat(onoffnull); +// +// // style defines a heading of the given level +// CTPPr ppr = CTPPr.Factory.newInstance(); +// ppr.setOutlineLvl(indentNumber); +// ctStyle.setPPr(ppr); +// +// XWPFStyle style = new XWPFStyle(ctStyle); +// +// // is a null op if already defined +// XWPFStyles styles = docxDocument.createStyles(); +// +// style.setType(STStyleType.PARAGRAPH); +// styles.addStyle(style); +// +// } +// +// /** +// * 设置文档中标题格式 +// */ +// public void setHeadingStyle(XWPFDocument document) { +// addCustomHeadingStyle(document, "标题 1", 1); +// addCustomHeadingStyle(document, "标题 2", 2); +// addCustomHeadingStyle(document, "标题 3", 3); +// addCustomHeadingStyle(document, "标题 4", 4); +// addCustomHeadingStyle(document, "标题 5", 5); +// addCustomHeadingStyle(document, "标题 6", 6); +// addCustomHeadingStyle(document, "标题 7", 7); +// } +// +// /** +// * 给表格添加一行数据 +// * +// * @param paragraph +// * 段落对象 +// * @param row +// * 行对象 +// * @param data +// * 不定长度的数据 +// */ +// public void setExcelContent(XWPFParagraph paragraph, XWPFTableRow row, String... data) { +// for (int i = 0; i < data.length; i++) { +// XWPFRun run = paragraph.createRun(); +// run.setFontFamily("宋体"); +// run.setText(data[i]); +// row.getCell(i).setParagraph(paragraph); +// paragraph.removeRun(0); +// } +// } +// +// /** +// * 添加表头标题一行数据 +// * +// * @param paragraph +// * 段落对象 +// * @param row +// * 行对象 +// * @param data +// * 不定长度的数据 +// */ +// public void setExcelHeadContent(XWPFParagraph paragraph, XWPFTableRow row, String... data) { +// XWPFRun run = paragraph.createRun(); +// run.setFontFamily("宋体"); +// run.setBold(true); +// run.setText(data[0]); +// row.getCell(0).setParagraph(paragraph); +// paragraph.removeRun(0); +// for (int i = 1; i < data.length; i++) { +// XWPFRun run1 = paragraph.createRun(); +// run1.setFontFamily("宋体"); +// run1.setBold(true); +// run1.setText(data[i]); +// row.addNewTableCell().setParagraph(paragraph); +// paragraph.removeRun(0); +// } +// } +// +// /** +// * 获取当前的日期 +// * +// * @return +// */ +// public String getRightNow() { +// Calendar rightNow = Calendar.getInstance(); +// Integer year = rightNow.get(Calendar.YEAR); +// Integer month = rightNow.get(Calendar.MONTH) + 1; +// Integer day = rightNow.get(rightNow.DAY_OF_MONTH); +// return year + "年" + month + "月" + day + "日"; +// } +// +// public String createWave(WaveData waveData) throws Exception { +// HashMap datas = new HashMap<>(); +// List> sunData = waveData.getSunData(); +// int iphasic =waveData.getiPhasic(); +// float pt = waveData.getPt() / 1000; +// float ifmax = 0f, ifmin = 0f; +// List> adata = new ArrayList<>(); +// List> bdata = new ArrayList<>(); +// List> cdata = new ArrayList<>(); +// +// if (sunData.size() > 0) { +// ifmax = sunData.get(0).get(1) * pt; +// ifmin = sunData.get(0).get(1) * pt; +// } +// List colors =new ArrayList<>(); +// +// for (int i = 0; i < sunData.size(); i++) { +// float x = sunData.get(i).get(0); +// if(iphasic==1){ +// float shunFirstA = sunData.get(i).get(1) * pt; +// List a = new ArrayList() { +// { +// add(x); +// add(shunFirstA); +// } +// }; +// adata.add(a); +// ifmax = ifmax > shunFirstA ? ifmax : shunFirstA; +// ifmin = ifmin < shunFirstA ? ifmin : shunFirstA; +// colors.add("#DAA520"); +// colors.add("#fff"); +// colors.add("#fff"); +// +// datas.put("a", waveData.getA()); +// datas.put("b", ""); +// datas.put("c", ""); +// }else if(iphasic==2){ +// float shunFirstA = sunData.get(i).get(1) * pt; +// float shunFirstB = sunData.get(i).get(2) * pt; +// List a = new ArrayList() { +// { +// add(x); +// add(shunFirstA); +// } +// }; +// adata.add(a); +// +// List b = new ArrayList() { +// { +// add(x); +// add(shunFirstB); +// } +// }; +// bdata.add(b); +// +// ifmax = getMaxTwo(ifmax, shunFirstA, shunFirstB); +// ifmin = getMinTwo(ifmin, shunFirstA, shunFirstB); +// +// colors.add("#DAA520"); +// colors.add("#2E8B57"); +// colors.add("#fff"); +// +// datas.put("a", waveData.getA()); +// datas.put("b", waveData.getB()); +// datas.put("c", ""); +// +// }else if(iphasic==3){ +// float shunFirstA = sunData.get(i).get(1) * pt; +// float shunFirstB = sunData.get(i).get(2) * pt; +// float shunFirstC = sunData.get(i).get(3) * pt; +// List a = new ArrayList() { +// { +// add(x); +// add(shunFirstA); +// } +// }; +// adata.add(a); +// +// List b = new ArrayList() { +// { +// add(x); +// add(shunFirstB); +// } +// }; +// bdata.add(b); +// +// List c = new ArrayList() { +// { +// add(x); +// add(shunFirstC); +// } +// }; +// cdata.add(c); +// ifmax = getMax(ifmax, shunFirstA, shunFirstB, shunFirstC); +// ifmin = getMin(ifmin, shunFirstA, shunFirstB, shunFirstC); +// +// colors.add("#DAA520"); +// colors.add("#2E8B57"); +// colors.add("#A52a2a"); +// +// datas.put("a", waveData.getA()); +// datas.put("b", waveData.getB()); +// datas.put("c", waveData.getC()); +// } +// +// +// } +// +// String time = waveData.getTime(); +// time = time.replace(" ", "%20"); +// float severity = waveData.getYzd(); +// String strSeverity = String.valueOf(severity); +// String type = waveData.getWaveType(); +// +// if (severity < 0) { +// strSeverity = "/"; +// type = "/"; +// } +// +// String title = "监测点名称:" + waveData.getLineName() + "%20发生时刻:" + time + "%20特征幅值:" + waveData.getEventValue() +// + "%25%20持续时间:" + waveData.getPersistTime() + "s"; +// +// +// datas.put("title", title); +// datas.put("adata", JSONArray.fromObject(adata).toString()); +// datas.put("bdata", JSONArray.fromObject(bdata).toString()); +// datas.put("cdata", JSONArray.fromObject(cdata).toString()); +// datas.put("unit", "kV"); +// datas.put("max", String.valueOf(ifmax)); +// datas.put("min", String.valueOf(ifmin)); +// datas.put("colors", JSONArray.fromObject(colors).toString()); +// datas.put("cshow", Boolean.toString(!waveData.getOpenTri())); +// +// +// String option = FreemarkerUtil.generateString("wave.ftl", "com/pqs9200/template", datas); +// return EchartsUtil.generateEchartsBase64(option, "3003"); +// } +// +// public String createRms(WaveData waveData) throws IOException, TemplateException { +// List> rmsData = waveData.getRmsData(); +// HashMap datas = new HashMap<>(); +// int iphasic =waveData.getiPhasic(); +// float pt = waveData.getPt() / 1000; +// List> adata = new ArrayList<>(); +// List> bdata = new ArrayList<>(); +// List> cdata = new ArrayList<>(); +// +// List colors =new ArrayList<>(); +// for (int i = 0; i < rmsData.size(); i++) { +// float x = rmsData.get(i).get(0); +// if(iphasic==1){ +// float rmsFirstA = rmsData.get(i).get(1) * pt; +// List a = new ArrayList() { +// { +// add(x); +// add(rmsFirstA); +// } +// }; +// adata.add(a); +// +// colors.add("#DAA520"); +// colors.add("#fff"); +// colors.add("#fff"); +// +// datas.put("a", waveData.getA()); +// datas.put("b", ""); +// datas.put("c", ""); +// }else if(iphasic==2){ +// float rmsFirstA = rmsData.get(i).get(1) * pt; +// float rmsFirstB = rmsData.get(i).get(2) * pt; +// List a = new ArrayList() { +// { +// add(x); +// add(rmsFirstA); +// } +// }; +// adata.add(a); +// +// List b = new ArrayList() { +// { +// add(x); +// add(rmsFirstB); +// } +// }; +// bdata.add(b); +// +// colors.add("#DAA520"); +// colors.add("#2E8B57"); +// colors.add("#fff"); +// +// datas.put("a", waveData.getA()); +// datas.put("b", waveData.getB()); +// datas.put("c", ""); +// }else if(iphasic==3){ +// float rmsFirstA = rmsData.get(i).get(1) * pt; +// float rmsFirstB = rmsData.get(i).get(2) * pt; +// float rmsFirstC = rmsData.get(i).get(3) * pt; +// +// List a = new ArrayList() { +// { +// add(x); +// add(rmsFirstA); +// } +// }; +// adata.add(a); +// +// List b = new ArrayList() { +// { +// add(x); +// add(rmsFirstB); +// } +// }; +// bdata.add(b); +// +// List c = new ArrayList() { +// { +// add(x); +// add(rmsFirstC); +// } +// }; +// cdata.add(c); +// +// colors.add("#DAA520"); +// colors.add("#2E8B57"); +// colors.add("#A52a2a"); +// +// datas.put("a", waveData.getA()); +// datas.put("b", waveData.getB()); +// datas.put("c", waveData.getC()); +// } +// +// +// } +// +// String time = waveData.getTime(); +// time = time.replace(" ", "%20"); // 时分秒 +// float severity = waveData.getYzd(); +// String strSeverity = String.valueOf(severity); +// String type = waveData.getWaveType(); +// +// if (severity < 0) { +// strSeverity = "/"; +// type = "/"; +// } +// +// String title = "监测点名称:" + waveData.getLineName() + "%20发生时刻:" + time + "%20特征幅值:" + waveData.getEventValue() +// + "%25%20持续时间:" + waveData.getPersistTime() + "s"; +// +// +// datas.put("title", title); +// datas.put("adata", JSONArray.fromObject(adata).toString()); +// datas.put("bdata", JSONArray.fromObject(bdata).toString()); +// datas.put("cdata", JSONArray.fromObject(cdata).toString()); +// datas.put("unit", "kV"); +// datas.put("colors", JSONArray.fromObject(colors).toString()); +// datas.put("cshow", Boolean.toString(!waveData.getOpenTri())); +// +// String option = FreemarkerUtil.generateString("rms.ftl", "com/pqs9200/template", datas); +// return EchartsUtil.generateEchartsBase64(option, "3003"); +// } +// +// private float getMin(float temp, float tempA, float tempB, float tempC) { +// temp = temp < tempA ? temp : tempA; +// temp = temp < tempB ? temp : tempB; +// temp = temp < tempC ? temp : tempC; +// return temp; +// } +// +// private float getMinTwo(float temp, float tempA, float tempB) { +// temp = temp < tempA ? temp : tempA; +// temp = temp < tempB ? temp : tempB; +// return temp; +// } +// +// private float getMax(float temp, float tempA, float tempB, float tempC) { +// temp = temp > tempA ? temp : tempA; +// temp = temp > tempB ? temp : tempB; +// temp = temp > tempC ? temp : tempC; +// return temp; +// } +// +// private float getMaxTwo(float temp, float tempA, float tempB) { +// temp = temp > tempA ? temp : tempA; +// temp = temp > tempB ? temp : tempB; +// return temp; +// } +//}