智能一体机对接文档

本文档 是用于 对接智能一体机的 接口文档 下面分几个大的方面来叙述细节实现

主要有以下几个大的功能

一. 多功能粮情检测

  • 中间件的日志文件配置在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轴坐标  单位:米
      

猜你喜欢

转载自blog.csdn.net/shentanweilan9/article/details/79716988