本文檔 是用於 對接智能一體機的 接口文檔 下面分幾個大的方面來敘述細節實現
主要有以下幾個大的功能
一. 多功能糧情檢測
中間件的日誌文件配置在log4j.properties具體酌情自己配置,我會把jar包和這個配置文件給你們,這個配置文件需要放到resource下
### 設置### log4j.rootLogger = debug,stdout,D,E, ### 輸出信息到控制擡 ### [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [%-5p] %m%n ### 輸出DEBUG 級別以上的日誌到=D://test/log.log ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender #log4j.appender.D.File = D://test//allinone-jar//debug.log log4j.appender.D.File = ${catalina.home}/webapps/ROOT/resources/log/jar-debug.log log4j.appender.debug.MaxFileSize=100M log4j.appender.debug.MaxBackupIndex=5 log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%F:%L] %m%n ### 輸出ERROR 級別以上的日誌到=D://test/log.log ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender #log4j.appender.E.File =D://test//allinone-jar//error.log log4j.appender.E.File =${catalina.home}/webapps/ROOT/resources/log/jar-error.log log4j.appender.error.MaxFileSize=100M log4j.appender.error.MaxBackupIndex=5 log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%F:%L] %m%n
- 這個功能主要是 測線纜上的每個溫度點的溫度 以及倉溫 倉溼 氣溫 氣溼
- 倉房有 圓桶倉 和 平房倉 因此入參的時候 我是建了個抽象類 傳參時必須實例化他的子類
- 由於前期測試 是用假數據 所以我提供外部的接口 有兩個構造方法 詳細的可看下述代碼
- 糧情測試 分爲搜索 和 測溫 兩個步驟 搜索主要是用來檢測硬件電纜上帶的溫度點的情況因此是在電纜的硬件環境發生改變我們才需要觸發搜索
1.搜索接口這個接口耗時很長 大概5-10分鐘
調用 OutterFunction 這個類中的 searchTempPoints()具體實現代碼如下
OutterFunction outterFunction = new OutterFunction(rectangleOrbisInputParameter, true); outterFunction.searchTempPoints();
上述調用中的參數敘述 參數後面都有註釋
OutterFunction 有兩個構造方法 一個參數的 測試的永遠是真實數據 兩個參數的 isFake=true 是假數據 isFake=false 是真實數據
public OutterFunction(OrbisInputParameter orbisInputParameter, boolean isFake) public OutterFunction(OrbisInputParameter orbisInputParameter) //OrbisInputParameter 是抽象類,我們必須去實現他有兩個實現類目前只提供平房倉的 //RectangleOrbisInputParameter public abstract class OrbisInputParameter { private int mainDevID; //糧情主機Id private String mainDevIp; // 糧情無線主機的ip地址 private int mainDevPort; // 糧情無線主機的端口地址 private int granaryID;//倉房ID private String granaryName;// 倉房名字 private int layer;// 倉房層數 private int firstPoleNum; //起始杆號 public class RectangleOrbisInputParameter extends OrbisInputParameter { private int rowNum; //行數 也就是排數 private int columnNum; //列數 每排有的杆數
2.測溫接口 這個接口耗時 大概3分鐘左右 具體根據測溫點個數不同而定
調用 outterFunction這個類中的detectTempValue(String time) 返回值是String類型 具體代碼如下
OutterFunction outterFunction = new OutterFunction(rectangleOrbisInputParameter, true); outterFunction.detectTempValue("20180317080448");
上述調用中的參數敘述 參數後面都有註釋,outterFunction 和 rectangleOrbisInputParameter 上述搜索都有解釋 這裏在這裏就不敘述了 如下主要是解釋String value = detectTempValue(String time)
- time 格式 年月日時分秒的字符串格式 如果要修改可以給我說 我這裏傳的是字符串 你們給我神魔格式 我反給你們就是神魔格式 不做處理
value 這個字符串 是返回的json串 是由對象轉換成的json串 下面貼一下這個返回對象
public class OrbisOutputParameter { private String gatherTime; private int subId;// 分機id private int startPoleNum = 1;// 測溫線纜開始杆數 private int rowCountNum;// 測溫線纜行數 private int columnCountNum;// 測溫線纜每排杆數 列數 private int layerCountNum;// 層數 private double outsideTemperature; // 倉外溫度 private double insideTemperature; // 倉內溫度 private double outsideHumidity; // 倉外溼度 private double insideHumidity; // 倉內溼度 private double avgTemperature; // 整倉糧食平均溫度 private double maxTemperature; // 整倉糧食最高溫度 private double minTemperature; // 整倉糧食最低溫度 private List<OrbisGrainDataSurface> listSurface;// 測溫面List public class OrbisGrainDataSurface { private String surfaceNumber; // 測溫面編號 private int surfaceZCoordinate; // 測溫面Z軸座標 private double avgTemperature; // 測溫面平均溫度 private double maxTemperature; // 測溫面最大溫度 private double minTemperature; // 測溫面最小溫度 private List<OrbisGrainDataPoint> listPoint; // 測溫點List public class OrbisGrainDataPoint { private String pointNumber; // 測溫點編號 private String poleNumber; // 測溫點所在杆號 private double temperatureValue; // 測溫點溫度 private int xCoordinate; // X軸座標 單位:米 private int yCoordinate; // Y軸座標 單位:米 // 以上兩個對應長方體 private double rCoordinate; // 半徑 單位:米 private double angleCoordinate; // 角度 單位:度 // 以上兩個對應圓柱體 圓錐體 private int zCoordinate; // Z軸座標 單位:米