123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- package com.jiayue.ipfcst.client.protocol2file;
- import com.syjy.DataExchangeException;
- import com.syjy.FileUtils;
- import com.syjy.tunnelinfo.BaseTunnelInfo;
- import com.syjy.tunnelinfo.DataPoint;
- import com.syjy.tunnelinfo.gathertunnelinfo.*;
- import jxl.Cell;
- import jxl.Sheet;
- import jxl.Workbook;
- import jxl.WorkbookSettings;
- import jxl.read.biff.BiffException;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import wei.yigulu.modbus.domain.datatype.ModbusDataTypeEnum;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * 读取配置文件
- *
- * @author: xiuwei
- * @version:
- */
- @Slf4j
- public class MyReadConfigFile {
- public static List<BaseTunnelInfo> readConfigFile() throws IOException, BiffException {
- List<BaseTunnelInfo> tunnelInfos = new ArrayList<>();
- File configFile = getConfigFile();
- if (configFile == null) {
- return tunnelInfos;
- }
- InputStream is = new FileInputStream(configFile);
- WorkbookSettings ws = new WorkbookSettings();
- ws.setCellValidationDisabled(true);
- Workbook wb = Workbook.getWorkbook(is, ws);
- Sheet[] sheets = wb.getSheets();
- String cellValue;
- BaseTunnelInfo tunnelInfo;
- List<DataPoint> dataPoints;
- MyDataPoint dataPoint;
- ModbusDataTypeEnum dataType;
- int sheetI = 1;
- for (Sheet sheet : sheets) {
- if ("attribute".equals(sheet.getName())) {
- continue;
- }
- try {
- cellValue = getCellContext(sheet.getCell(1, 0));
- switch (cellValue) {
- case "104M":
- tunnelInfo = new Gather104TcpTunnelInfo();
- break;
- case "ModbusTCPM":
- tunnelInfo = new GatherModbusTcpTunnelInfo();
- break;
- case "ModbusTCPM_锦州阳光":
- tunnelInfo = new GatherModbusRtuByTcpServerTunnelInfo();
- break;
- case "ModbusRTUM":
- tunnelInfo = new GatherModbusRtuTunnelInfo();
- break;
- case "CDTM":
- tunnelInfo = new GatherCdtRtuTunnelInfo();
- break;
- case "GenFile":
- tunnelInfo = new GenerateFileTunnelInfo();
- break;
- case "Calculator":
- tunnelInfo = new CalculatorTunnelInfo();
- break;
- case "气象站":
- continue;
- default:
- throw new DataExchangeException(4002, "通道类型异常");
- }
- tunnelInfo.setId(sheetI + "");
- tunnelInfo.setTunnelName(sheet.getName() + sheetI);
- tunnelInfo.setByRow(sheet.getRow(2));
- tunnelInfo.setRefreshInterval(Integer.parseInt(getCellContext(sheet.getCell(3, 0))));
- dataPoints = new ArrayList<>();
- for (int i = 4; i < sheet.getRows(); i++) {
- dataPoint = new MyDataPoint();
- try {
- dataPoint.setId(Integer.parseInt(getCellContext(sheet.getCell(0, i))));
- } catch (DataExchangeException e) {
- continue;
- }
- if ("Calculator".equals(getCellContext(sheet.getCell(1, 0)))) {
- dataPoint.setFormula(getCellContext(sheet.getCell(1, i)));
- } else {
- dataPoint.setProtocolPoint(Integer.parseInt(getCellContext(sheet.getCell(1, i))));
- }
- cellValue = getCellContext(sheet.getCell(2, i));
- if ("遥信".equals(cellValue)) {
- dataType = ModbusDataTypeEnum.A16;
- } else if ("遥测".equals(cellValue)) {
- dataType = ModbusDataTypeEnum.ABCD;
- } else {
- dataType = ModbusDataTypeEnum.valueOf(cellValue);
- }
- dataPoint.setDataType(dataType);
- dataPoint.setMag(Double.parseDouble(getCellContext(sheet.getCell(3, i))));
- if (sheet.getRow(i).length > 5) {
- if ("测风塔".equals(sheet.getCell(4, i).getContents())) {
- dataPoint.setEquipmentType(EquipmentType.WIND_TOWER);
- dataPoint.setEquipmentAttr(sheet.getCell(5, i).getContents());
- } else if ("气象站".equals(sheet.getCell(4, i).getContents())) {
- dataPoint.setEquipmentType(EquipmentType.WEATHER_STATION);
- dataPoint.setEquipmentAttr(sheet.getCell(5, i).getContents());
- }
- }
- if (sheet.getRow(i).length > 6 && sheet.getCell(6, i) != null && !"".equals(sheet.getCell(6, i).getContents())) {
- dataPoint.setSlaveId(Integer.parseInt(getCellContext(sheet.getCell(6, i))));
- }
- dataPoints.add(dataPoint);
- }
- tunnelInfo.setDataPoints(dataPoints);
- tunnelInfos.add(tunnelInfo);
- } catch (Exception e) {
- e.printStackTrace();
- }
- sheetI++;
- }
- return tunnelInfos;
- }
- public static String getCellContext(Cell cell) throws DataExchangeException {
- if (cell == null) {
- throw new DataExchangeException(4001, "配置文件缺少配置内容," + cell.getRow() + "行" + cell.getColumn() + "列");
- }
- String val = cell.getContents();
- if (StringUtils.isNoneEmpty(val)) {
- return val;
- } else {
- throw new DataExchangeException(4001, "配置文件缺少配置内容," + cell.getRow() + "行" + cell.getColumn() + "列");
- }
- }
- public static File getConfigFile() {
- // configFile1 是jar包同级目录
- File configFile1 = new File(FileUtils.getResourcesPath(MyReadConfigFile.class));
- //configFile2 是jar包的父级目录的同级目录
- File configFile2 = null;
- if (configFile1 != null) {
- configFile2 = configFile1.getParentFile();
- }
- File[] files = new File[0];
- if (configFile2 != null) {
- files = configFile2.listFiles();
- }
- if (files != null) {
- for (File f : files) {
- if (f.getName().contains("pointconfig.xls")) {
- log.info("在jar包上层目录发现点表配置文件");
- return f;
- }
- }
- }
- if (configFile1 != null) {
- files = configFile1.listFiles();
- }
- if (files != null) {
- for (File f : files) {
- if (f.getName().contains("pointconfig.xls")) {
- log.info("在jar包同级目录发现点表配置文件");
- return f;
- }
- }
- }
- return null;
- }
- }
|